@supersoniks/concorde 5.1.0 → 5.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) 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/launch.json +15 -0
  6. package/.claude/vite.http.config.mjs +7 -0
  7. package/.taste-skill/after/desktop-fold.jpg +0 -0
  8. package/.taste-skill/after/desktop-page-01.jpg +0 -0
  9. package/.taste-skill/after/desktop-page-02.jpg +0 -0
  10. package/.taste-skill/after/desktop-page-03.jpg +0 -0
  11. package/.taste-skill/after/mobile-fold.jpg +0 -0
  12. package/.taste-skill/after/mobile-page-01.jpg +0 -0
  13. package/.taste-skill/after/report.json +4103 -0
  14. package/.taste-skill/after/tablet-fold.jpg +0 -0
  15. package/.taste-skill/after/tablet-page-01.jpg +0 -0
  16. package/.taste-skill/after/tablet-page-02.jpg +0 -0
  17. package/.taste-skill/before/desktop-fold.jpg +0 -0
  18. package/.taste-skill/before/desktop-page-01.jpg +0 -0
  19. package/.taste-skill/before/desktop-page-02.jpg +0 -0
  20. package/.taste-skill/before/mobile-fold.jpg +0 -0
  21. package/.taste-skill/before/mobile-page-01.jpg +0 -0
  22. package/.taste-skill/before/report.json +2556 -0
  23. package/.taste-skill/before/tablet-fold.jpg +0 -0
  24. package/.taste-skill/before/tablet-page-01.jpg +0 -0
  25. package/.taste-skill/direction.json +510 -0
  26. package/.taste-skill/notes.md +84 -0
  27. package/.taste-skill/prod/desktop-fold.jpg +0 -0
  28. package/.taste-skill/prod/desktop-page-01.jpg +0 -0
  29. package/.taste-skill/prod/desktop-page-02.jpg +0 -0
  30. package/.taste-skill/prod/desktop-page-03.jpg +0 -0
  31. package/.taste-skill/prod/mobile-fold.jpg +0 -0
  32. package/.taste-skill/prod/mobile-page-01.jpg +0 -0
  33. package/.taste-skill/prod/mobile-page-02.jpg +0 -0
  34. package/.taste-skill/prod/report.json +1973 -0
  35. package/.taste-skill/prod/tablet-fold.jpg +0 -0
  36. package/.taste-skill/prod/tablet-page-01.jpg +0 -0
  37. package/.taste-skill/prod/tablet-page-02.jpg +0 -0
  38. package/.tmp-cem/custom-elements.json +2013 -2013
  39. package/AUDIT.md +228 -0
  40. package/PLAN-AMELIORATION.md +220 -0
  41. package/PLAN-DOCS-AGENTS.md +80 -0
  42. package/README.md +3 -3
  43. package/ai/skills/concorde/SKILL.md +1 -1
  44. package/ai/skills/concorde-get-set-dp/SKILL.md +3 -3
  45. package/ai/skills/concorde-theme/SKILL.md +1 -1
  46. package/build-infos.json +1 -1
  47. package/concorde-core.bundle.js +16 -16
  48. package/concorde-core.es.js +235 -233
  49. package/dist/concorde-core.bundle.js +16 -16
  50. package/dist/concorde-core.es.js +235 -233
  51. package/dist/img/archive/concorde-001-2cv.webp +0 -0
  52. package/dist/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  53. package/dist/img/archive/concorde-red-arrows-2002.webm +0 -0
  54. package/dist/img/archive/credits.json +28 -0
  55. package/docs/.htaccess +75 -0
  56. package/docs/404.html +15 -0
  57. package/docs/404.md +5 -0
  58. package/docs/assets/index-BgG6FFPt.js +11765 -0
  59. package/docs/assets/index-x89XINSG.css +1 -0
  60. package/docs/core/components/functional/date/date.html +211 -0
  61. package/docs/core/components/functional/date/date.md +150 -0
  62. package/docs/core/components/functional/fetch/fetch.html +180 -0
  63. package/docs/core/components/functional/fetch/fetch.md +108 -0
  64. package/docs/core/components/functional/if/if.html +65 -0
  65. package/docs/core/components/functional/if/if.md +34 -0
  66. package/docs/core/components/functional/jsonata/jsonata.html +110 -0
  67. package/docs/core/components/functional/jsonata/jsonata.md +61 -0
  68. package/docs/core/components/functional/list/list.html +198 -0
  69. package/docs/core/components/functional/list/list.md +121 -0
  70. package/docs/core/components/functional/mix/mix.html +78 -0
  71. package/docs/core/components/functional/mix/mix.md +46 -0
  72. package/docs/core/components/functional/queue/queue.html +155 -0
  73. package/docs/core/components/functional/queue/queue.md +51 -0
  74. package/docs/core/components/functional/router/router.html +154 -0
  75. package/docs/core/components/functional/router/router.md +93 -0
  76. package/docs/core/components/functional/sdui/sdui-extension-points.html +127 -0
  77. package/docs/core/components/functional/sdui/sdui-extension-points.md +94 -0
  78. package/docs/core/components/functional/sdui/sdui.html +397 -0
  79. package/docs/core/components/functional/sdui/sdui.md +307 -0
  80. package/docs/core/components/functional/states/states.html +141 -0
  81. package/docs/core/components/functional/states/states.md +112 -0
  82. package/docs/core/components/functional/submit/submit.html +178 -0
  83. package/docs/core/components/functional/submit/submit.md +106 -0
  84. package/docs/{crawl/core → core}/components/functional/subscriber/subscriber.html +6 -5
  85. package/docs/core/components/functional/subscriber/subscriber.md +91 -0
  86. package/docs/core/components/functional/translation/translation.html +60 -0
  87. package/docs/core/components/functional/translation/translation.md +38 -0
  88. package/docs/core/components/functional/value/value.html +81 -0
  89. package/docs/core/components/functional/value/value.md +47 -0
  90. package/docs/core/components/ui/alert/alert.html +201 -0
  91. package/docs/core/components/ui/alert/alert.md +186 -0
  92. package/docs/core/components/ui/alert-messages/alert-messages.html +132 -0
  93. package/docs/core/components/ui/alert-messages/alert-messages.md +85 -0
  94. package/docs/core/components/ui/badge/badge.html +197 -0
  95. package/docs/core/components/ui/badge/badge.md +181 -0
  96. package/docs/core/components/ui/button/button.html +309 -0
  97. package/docs/core/components/ui/button/button.md +216 -0
  98. package/docs/core/components/ui/captcha/captcha.html +80 -0
  99. package/docs/core/components/ui/captcha/captcha.md +56 -0
  100. package/docs/core/components/ui/card/card.html +254 -0
  101. package/docs/core/components/ui/card/card.md +215 -0
  102. package/docs/core/components/ui/divider/divider.html +144 -0
  103. package/docs/core/components/ui/divider/divider.md +126 -0
  104. package/docs/core/components/ui/form/checkbox/checkbox.html +200 -0
  105. package/docs/core/components/ui/form/checkbox/checkbox.md +125 -0
  106. package/docs/core/components/ui/form/fieldset/fieldset.html +238 -0
  107. package/docs/core/components/ui/form/fieldset/fieldset.md +161 -0
  108. package/docs/core/components/ui/form/form-actions/form-actions.html +122 -0
  109. package/docs/core/components/ui/form/form-actions/form-actions.md +98 -0
  110. package/docs/core/components/ui/form/form-layout/form-layout.html +115 -0
  111. package/docs/core/components/ui/form/form-layout/form-layout.md +109 -0
  112. package/docs/core/components/ui/form/input/input.html +235 -0
  113. package/docs/core/components/ui/form/input/input.md +142 -0
  114. package/docs/core/components/ui/form/radio/radio.html +144 -0
  115. package/docs/core/components/ui/form/radio/radio.md +78 -0
  116. package/docs/core/components/ui/form/select/select.html +178 -0
  117. package/docs/core/components/ui/form/select/select.md +86 -0
  118. package/docs/core/components/ui/form/switch/switch.html +146 -0
  119. package/docs/core/components/ui/form/switch/switch.md +80 -0
  120. package/docs/core/components/ui/form/textarea/textarea.html +162 -0
  121. package/docs/core/components/ui/form/textarea/textarea.md +82 -0
  122. package/docs/core/components/ui/group/group.html +113 -0
  123. package/docs/core/components/ui/group/group.md +77 -0
  124. package/docs/core/components/ui/icon/icon.html +223 -0
  125. package/docs/core/components/ui/icon/icon.md +214 -0
  126. package/docs/core/components/ui/image/image.html +194 -0
  127. package/docs/core/components/ui/image/image.md +167 -0
  128. package/docs/core/components/ui/link/link.html +101 -0
  129. package/docs/core/components/ui/link/link.md +81 -0
  130. package/docs/core/components/ui/loader/loader.html +114 -0
  131. package/docs/core/components/ui/loader/loader.md +87 -0
  132. package/docs/{crawl/core → core}/components/ui/menu/menu.html +189 -116
  133. package/docs/core/components/ui/menu/menu.md +370 -0
  134. package/docs/core/components/ui/modal/modal.html +324 -0
  135. package/docs/core/components/ui/modal/modal.md +211 -0
  136. package/docs/core/components/ui/pop/pop.html +250 -0
  137. package/docs/core/components/ui/pop/pop.md +216 -0
  138. package/docs/core/components/ui/progress/progress.html +132 -0
  139. package/docs/core/components/ui/progress/progress.md +109 -0
  140. package/docs/core/components/ui/table/table.html +333 -0
  141. package/docs/core/components/ui/table/table.md +267 -0
  142. package/docs/core/components/ui/theme/theme.html +116 -0
  143. package/docs/core/components/ui/theme/theme.md +97 -0
  144. package/docs/core/components/ui/toast/toast.html +185 -0
  145. package/docs/core/components/ui/toast/toast.md +147 -0
  146. package/docs/core/components/ui/tooltip/tooltip.html +112 -0
  147. package/docs/core/components/ui/tooltip/tooltip.md +89 -0
  148. package/docs/docs/decorators/ancestor-attribute.html +71 -0
  149. package/docs/docs/decorators/ancestor-attribute.md +59 -0
  150. package/docs/docs/decorators/auto-subscribe.html +61 -0
  151. package/docs/docs/decorators/auto-subscribe.md +40 -0
  152. package/docs/docs/decorators/bind.html +86 -0
  153. package/docs/docs/decorators/bind.md +77 -0
  154. package/docs/docs/decorators/get.html +166 -0
  155. package/docs/docs/decorators/get.md +160 -0
  156. package/docs/docs/decorators/handle.html +139 -0
  157. package/docs/docs/decorators/handle.md +119 -0
  158. package/docs/docs/decorators/on-assign.html +72 -0
  159. package/docs/docs/decorators/on-assign.md +63 -0
  160. package/docs/docs/decorators/patch.html +76 -0
  161. package/docs/docs/decorators/patch.md +44 -0
  162. package/docs/docs/decorators/post.html +150 -0
  163. package/docs/docs/decorators/post.md +134 -0
  164. package/docs/docs/decorators/publish.html +74 -0
  165. package/docs/docs/decorators/publish.md +56 -0
  166. package/docs/docs/decorators/put.html +83 -0
  167. package/docs/docs/decorators/put.md +51 -0
  168. package/docs/docs/decorators/subscribe.html +91 -0
  169. package/docs/docs/decorators/subscribe.md +87 -0
  170. package/docs/docs/decorators/wait-for-ancestors.html +82 -0
  171. package/docs/docs/decorators/wait-for-ancestors.md +76 -0
  172. package/docs/docs/directives/sub.html +79 -0
  173. package/docs/docs/directives/sub.md +75 -0
  174. package/docs/docs/directives/t.html +91 -0
  175. package/docs/docs/directives/t.md +73 -0
  176. package/docs/{crawl/docs/_getting-started → docs/getting-started}/ai-agents.html +12 -11
  177. package/{src/docs/_getting-started → docs/docs/getting-started}/ai-agents.md +3 -3
  178. package/docs/docs/getting-started/components.html +27 -0
  179. package/docs/docs/getting-started/components.md +5 -0
  180. package/docs/{crawl/docs/_getting-started → docs/getting-started}/create-a-component.html +11 -14
  181. package/docs/{src/docs/_getting-started → docs/getting-started}/create-a-component.md +3 -6
  182. package/docs/{crawl/docs/_core-concept → docs/getting-started}/dataFlow.html +26 -29
  183. package/docs/{src/docs/_core-concept → docs/getting-started}/dataFlow.md +17 -18
  184. package/docs/docs/getting-started/installation.html +69 -0
  185. package/docs/docs/getting-started/installation.md +36 -0
  186. package/docs/{crawl/docs/_getting-started → docs/getting-started}/my-first-component.html +13 -22
  187. package/docs/{src/docs/_getting-started → docs/getting-started}/my-first-component.md +5 -14
  188. package/docs/docs/getting-started/start.html +47 -0
  189. package/{src/docs/_getting-started → docs/docs/getting-started}/start.md +1 -13
  190. package/docs/docs/getting-started/theming.html +334 -0
  191. package/{src/docs/_getting-started → docs/docs/getting-started}/theming.md +2 -2
  192. package/docs/docs/index.html +99 -0
  193. package/docs/{crawl/docs/_misc → docs/misc}/api-configuration.html +18 -18
  194. package/docs/{src/docs/_misc → docs/misc}/api-configuration.md +10 -12
  195. package/docs/{crawl/docs/_misc → docs/misc}/dataProviderKey.html +12 -11
  196. package/{src/docs/_misc → docs/docs/misc}/dataProviderKey.md +4 -4
  197. package/docs/{crawl/docs/_misc → docs/misc}/docs-mock-api.html +25 -28
  198. package/docs/{src/docs/_misc → docs/misc}/docs-mock-api.md +12 -13
  199. package/docs/{crawl/docs/_misc → docs/misc}/dynamic-path.html +16 -15
  200. package/{src/docs/_misc → docs/docs/misc}/dynamic-path.md +8 -8
  201. package/docs/{crawl/docs/_misc → docs/misc}/endpoint.html +16 -15
  202. package/{src/docs/_misc → docs/docs/misc}/endpoint.md +8 -8
  203. package/docs/{crawl/docs/_misc → docs/misc}/html-integration.html +12 -15
  204. package/docs/{src/docs/_misc → docs/misc}/html-integration.md +4 -5
  205. package/docs/docs-mock-api-sw.js +60 -223
  206. package/docs/docs-mock-api-sw.js.map +4 -4
  207. package/docs/hubs/decorators.html +443 -0
  208. package/docs/hubs/form-components.html +404 -0
  209. package/docs/hubs/remote-data.html +371 -0
  210. package/docs/img/archive/concorde-001-2cv.webp +0 -0
  211. package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  212. package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
  213. package/docs/img/archive/credits.json +28 -0
  214. package/docs/img/concorde/plane_01.jpg +0 -0
  215. package/docs/img/concorde/plane_02.jpg +0 -0
  216. package/docs/img/concorde/plane_03.jpg +0 -0
  217. package/docs/img/concorde/plane_04.jpg +0 -0
  218. package/docs/img/concorde/plane_05.jpg +0 -0
  219. package/docs/img/concorde/plane_06.jpg +0 -0
  220. package/docs/img/concorde/plane_07.jpg +0 -0
  221. package/docs/img/concorde/plane_08.jpg +0 -0
  222. package/docs/img/concorde/plane_09.jpg +0 -0
  223. package/docs/img/concorde/plane_10.jpg +0 -0
  224. package/docs/img/concorde/plane_11.jpg +0 -0
  225. package/docs/img/concorde/plane_12.jpg +0 -0
  226. package/docs/img/concorde/plane_13.jpg +0 -0
  227. package/docs/index.html +96 -67
  228. package/docs/index.md +22 -0
  229. package/docs/llms-full.txt +3329 -3295
  230. package/docs/llms.txt +94 -92
  231. package/docs/robots.txt +11 -10
  232. package/docs/sitemap.xml +78 -78
  233. package/docs/src/core/components/functional/date/date.md +91 -231
  234. package/docs/src/core/components/functional/fetch/fetch.md +66 -83
  235. package/docs/src/core/components/functional/if/if.md +28 -3
  236. package/docs/src/core/components/functional/jsonata/jsonata.md +42 -37
  237. package/docs/src/core/components/functional/list/list.md +99 -43
  238. package/docs/src/core/components/functional/mix/mix.md +31 -26
  239. package/docs/src/core/components/functional/queue/queue.md +40 -61
  240. package/docs/src/core/components/functional/router/router.md +64 -65
  241. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
  242. package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
  243. package/docs/src/core/components/functional/sdui/example.json +19 -86
  244. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
  245. package/docs/src/core/components/functional/sdui/sdui.md +196 -245
  246. package/docs/src/core/components/functional/states/states.md +86 -61
  247. package/docs/src/core/components/functional/submit/submit.md +64 -72
  248. package/docs/src/core/components/functional/translation/translation.md +38 -0
  249. package/docs/src/core/components/functional/value/value.md +34 -22
  250. package/docs/src/core/components/ui/alert/alert.md +139 -74
  251. package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
  252. package/docs/src/core/components/ui/badge/badge.md +137 -83
  253. package/docs/src/core/components/ui/button/button.md +139 -105
  254. package/docs/src/core/components/ui/captcha/captcha.md +50 -6
  255. package/docs/src/core/components/ui/card/card.md +183 -65
  256. package/docs/src/core/components/ui/divider/divider.md +104 -13
  257. package/docs/src/core/components/ui/form/checkbox/checkbox.md +90 -42
  258. package/docs/src/core/components/ui/form/fieldset/fieldset.md +135 -103
  259. package/docs/src/core/components/ui/form/form-actions/form-actions.md +71 -50
  260. package/docs/src/core/components/ui/form/form-layout/form-layout.md +99 -34
  261. package/docs/src/core/components/ui/form/input/input.md +95 -95
  262. package/docs/src/core/components/ui/form/radio/radio.md +55 -34
  263. package/docs/src/core/components/ui/form/select/select.md +60 -45
  264. package/docs/src/core/components/ui/form/switch/switch.md +57 -34
  265. package/docs/src/core/components/ui/form/textarea/textarea.md +55 -38
  266. package/docs/src/core/components/ui/group/group.md +49 -47
  267. package/docs/src/core/components/ui/icon/icon.md +132 -43
  268. package/docs/src/core/components/ui/image/image.md +132 -72
  269. package/docs/src/core/components/ui/link/link.md +46 -8
  270. package/docs/src/core/components/ui/loader/loader.md +55 -23
  271. package/docs/src/core/components/ui/menu/menu.md +155 -114
  272. package/docs/src/core/components/ui/modal/modal.md +154 -62
  273. package/docs/src/core/components/ui/pop/pop.md +185 -65
  274. package/docs/src/core/components/ui/progress/progress.md +76 -30
  275. package/docs/src/core/components/ui/table/table.md +146 -334
  276. package/docs/src/core/components/ui/theme/theme.md +97 -0
  277. package/docs/src/core/components/ui/toast/toast.md +80 -99
  278. package/docs/src/core/components/ui/tooltip/tooltip.md +52 -45
  279. package/docs/src/docs/decorators/ancestor-attribute.md +59 -0
  280. package/docs/src/docs/decorators/auto-subscribe.md +40 -0
  281. package/docs/src/docs/decorators/bind.md +77 -0
  282. package/docs/src/docs/decorators/get.md +160 -0
  283. package/docs/src/docs/decorators/handle.md +119 -0
  284. package/docs/src/docs/decorators/on-assign.md +63 -0
  285. package/docs/src/docs/decorators/patch.md +44 -0
  286. package/docs/src/docs/decorators/post.md +134 -0
  287. package/docs/src/docs/decorators/publish.md +56 -0
  288. package/docs/src/docs/decorators/put.md +51 -0
  289. package/docs/src/docs/decorators/subscribe.md +87 -0
  290. package/docs/src/docs/decorators/wait-for-ancestors.md +76 -0
  291. package/docs/src/docs/directives/sub.md +75 -0
  292. package/docs/src/docs/directives/t.md +73 -0
  293. package/docs/src/docs/{_getting-started → getting-started}/ai-agents.md +3 -3
  294. package/docs/src/docs/getting-started/components.md +5 -0
  295. package/{src/docs/_getting-started → docs/src/docs/getting-started}/create-a-component.md +3 -6
  296. package/{src/docs/_core-concept → docs/src/docs/getting-started}/dataFlow.md +17 -18
  297. package/docs/src/docs/getting-started/installation.md +36 -0
  298. package/{src/docs/_getting-started → docs/src/docs/getting-started}/my-first-component.md +5 -14
  299. package/docs/src/docs/getting-started/start.md +35 -0
  300. package/docs/src/docs/getting-started/theming.md +253 -0
  301. package/{src/docs/_misc → docs/src/docs/misc}/api-configuration.md +10 -12
  302. package/docs/src/docs/{_misc → misc}/dataProviderKey.md +4 -4
  303. package/{src/docs/_misc → docs/src/docs/misc}/docs-mock-api.md +12 -13
  304. package/docs/src/docs/{_misc → misc}/dynamic-path.md +8 -8
  305. package/docs/src/docs/{_misc → misc}/endpoint.md +8 -8
  306. package/{src/docs/_misc → docs/src/docs/misc}/html-integration.md +4 -5
  307. package/docs/src/docs/search/docs-search.json +3729 -2949
  308. package/docs/src/tsconfig.json +176 -5
  309. package/index.html +94 -67
  310. package/package.json +11 -4
  311. package/public/docs-mock-api-sw.js +58 -223
  312. package/public/docs-mock-api-sw.js.map +4 -4
  313. package/public/img/archive/concorde-001-2cv.webp +0 -0
  314. package/public/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  315. package/public/img/archive/concorde-red-arrows-2002.webm +0 -0
  316. package/public/img/archive/credits.json +28 -0
  317. package/public/img/concorde/plane_01.jpg +0 -0
  318. package/public/img/concorde/plane_02.jpg +0 -0
  319. package/public/img/concorde/plane_03.jpg +0 -0
  320. package/public/img/concorde/plane_04.jpg +0 -0
  321. package/public/img/concorde/plane_05.jpg +0 -0
  322. package/public/img/concorde/plane_06.jpg +0 -0
  323. package/public/img/concorde/plane_07.jpg +0 -0
  324. package/public/img/concorde/plane_08.jpg +0 -0
  325. package/public/img/concorde/plane_09.jpg +0 -0
  326. package/public/img/concorde/plane_10.jpg +0 -0
  327. package/public/img/concorde/plane_11.jpg +0 -0
  328. package/public/img/concorde/plane_12.jpg +0 -0
  329. package/public/img/concorde/plane_13.jpg +0 -0
  330. package/public/robots.txt +11 -10
  331. package/scripts/docs-markdown-vite-plugin.ts +37 -0
  332. package/scripts/docs-public-url.mjs +50 -0
  333. package/scripts/docs.htaccess +75 -0
  334. package/scripts/generate-crawl-docs.mjs +207 -116
  335. package/scripts/generate-crawl-docs.test.mjs +124 -0
  336. package/scripts/post-build-docs.js +34 -50
  337. package/scripts/post-build.mjs +0 -0
  338. package/src/core/components/functional/date/date.md +91 -231
  339. package/src/core/components/functional/fetch/fetch.md +66 -83
  340. package/src/core/components/functional/if/if.md +28 -3
  341. package/src/core/components/functional/if/if.ts +0 -0
  342. package/src/core/components/functional/jsonata/jsonata.md +42 -37
  343. package/src/core/components/functional/list/list.demo.ts +0 -0
  344. package/src/core/components/functional/list/list.md +99 -43
  345. package/src/core/components/functional/mix/mix.md +31 -26
  346. package/src/core/components/functional/queue/queue.demo.ts +10 -7
  347. package/src/core/components/functional/queue/queue.md +40 -61
  348. package/src/core/components/functional/router/router.demo.ts +16 -16
  349. package/src/core/components/functional/router/router.md +64 -65
  350. package/src/core/components/functional/router/router.ts +0 -0
  351. package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +0 -0
  352. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  353. package/src/core/components/functional/sdui/component-catalog.json +1 -1
  354. package/src/core/components/functional/sdui/example.json +19 -86
  355. package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  356. package/src/core/components/functional/sdui/sdui.md +187 -358
  357. package/src/core/components/functional/sdui/types.ts +0 -0
  358. package/src/core/components/functional/states/states.demo.ts +21 -22
  359. package/src/core/components/functional/states/states.md +86 -61
  360. package/src/core/components/functional/states/states.ts +1 -1
  361. package/src/core/components/functional/submit/submit.md +64 -72
  362. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  363. package/src/core/components/functional/translation/translation.md +38 -0
  364. package/src/core/components/functional/value/value.md +34 -22
  365. package/src/core/components/functional/value/value.ts +0 -0
  366. package/src/core/components/ui/_css/size.ts +0 -0
  367. package/src/core/components/ui/alert/alert.md +48 -58
  368. package/src/core/components/ui/badge/badge.md +27 -34
  369. package/src/core/components/ui/button/button.md +139 -106
  370. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  371. package/src/core/components/ui/captcha/captcha.md +17 -32
  372. package/src/core/components/ui/card/card.md +6 -6
  373. package/src/core/components/ui/divider/divider.md +8 -11
  374. package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
  375. package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
  376. package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
  377. package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
  378. package/src/core/components/ui/form/input/input.md +95 -95
  379. package/src/core/components/ui/form/radio/radio.md +55 -34
  380. package/src/core/components/ui/form/select/select.md +60 -45
  381. package/src/core/components/ui/form/switch/switch.md +57 -34
  382. package/src/core/components/ui/form/textarea/textarea.md +55 -38
  383. package/src/core/components/ui/group/group.md +35 -33
  384. package/src/core/components/ui/icon/icon.md +4 -4
  385. package/src/core/components/ui/image/image.md +41 -107
  386. package/src/core/components/ui/link/link.md +6 -6
  387. package/src/core/components/ui/loader/loader.md +30 -55
  388. package/src/core/components/ui/menu/menu.md +27 -27
  389. package/src/core/components/ui/modal/modal.md +72 -96
  390. package/src/core/components/ui/modal/modal.ts +14 -11
  391. package/src/core/components/ui/pop/pop.md +80 -158
  392. package/src/core/components/ui/progress/progress.md +2 -2
  393. package/src/core/components/ui/table/table.md +91 -255
  394. package/src/core/components/ui/theme/theme.md +11 -36
  395. package/src/core/components/ui/toast/toast.md +48 -117
  396. package/src/core/components/ui/tooltip/tooltip.md +27 -62
  397. package/src/core/mixins/Subscriber.ts +0 -0
  398. package/src/core/utils/DataBindObserver.ts +0 -0
  399. package/src/core/utils/LocationHandler.spec.ts +80 -0
  400. package/src/core/utils/LocationHandler.ts +5 -9
  401. package/src/core/utils/Objects.ts +0 -0
  402. package/src/core/utils/route.ts +0 -0
  403. package/src/docs/code.ts +88 -75
  404. package/src/docs/components/docs-demo-sources.ts +70 -147
  405. package/src/docs/components/docs-lit-demo.ts +20 -40
  406. package/src/docs/components/docs-source-link.ts +0 -82
  407. package/src/docs/decorators/ancestor-attribute.md +59 -0
  408. package/src/docs/decorators/auto-subscribe.md +40 -0
  409. package/src/docs/decorators/bind.md +77 -0
  410. package/src/docs/decorators/get.md +160 -0
  411. package/src/docs/decorators/handle.md +119 -0
  412. package/src/docs/decorators/on-assign.md +63 -0
  413. package/src/docs/decorators/patch.md +44 -0
  414. package/src/docs/decorators/post.md +134 -0
  415. package/src/docs/decorators/publish.md +56 -0
  416. package/src/docs/decorators/put.md +51 -0
  417. package/src/docs/decorators/subscribe.md +87 -0
  418. package/src/docs/decorators/wait-for-ancestors.md +76 -0
  419. package/src/docs/directives/sub.md +75 -0
  420. package/src/docs/directives/t.md +73 -0
  421. package/src/docs/docs-location.spec.ts +46 -0
  422. package/src/docs/docs-location.ts +123 -32
  423. package/src/docs/docs.ts +6 -2
  424. package/src/docs/example/decorators-demo-bind-demos.ts +81 -116
  425. package/src/docs/example/decorators-demo-geo.ts +30 -19
  426. package/src/docs/example/decorators-demo-post.ts +88 -186
  427. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
  428. package/src/docs/example/decorators-demo.ts +85 -98
  429. package/src/docs/example/docs-api-config-demos.ts +19 -20
  430. package/src/docs/example/docs-boarding-pass-demo.ts +134 -0
  431. package/src/docs/example/docs-flight-demos.ts +147 -0
  432. package/src/docs/example/docs-jsonata-demos.ts +52 -52
  433. package/src/docs/example/docs-list-demos.ts +43 -123
  434. package/src/docs/example/docs-provider-keys.ts +33 -28
  435. package/src/docs/example/docs-queue-demos.ts +37 -77
  436. package/src/docs/example/docs-router-demos.ts +20 -25
  437. package/src/docs/example/docs-submit-demos.ts +48 -48
  438. package/src/docs/example/docs-toggle-demos.ts +4 -3
  439. package/src/docs/example/users.ts +0 -0
  440. package/src/docs/getting-started/ai-agents.md +76 -0
  441. package/src/docs/getting-started/components.md +5 -0
  442. package/src/docs/getting-started/create-a-component.md +136 -0
  443. package/src/docs/getting-started/dataFlow.md +87 -0
  444. package/src/docs/getting-started/installation.md +36 -0
  445. package/src/docs/getting-started/my-first-component.md +227 -0
  446. package/src/docs/getting-started/start.md +35 -0
  447. package/src/docs/getting-started/theming.md +253 -0
  448. package/src/docs/header/header.ts +240 -71
  449. package/src/docs/home/catalog.ts +44 -0
  450. package/src/docs/home/home.ts +520 -0
  451. package/src/docs/home/mach-stage.ts +389 -0
  452. package/src/docs/layout.ts +12 -11
  453. package/src/docs/misc/api-configuration.md +79 -0
  454. package/src/docs/misc/dataProviderKey.md +168 -0
  455. package/src/docs/misc/docs-mock-api.md +62 -0
  456. package/src/docs/misc/dynamic-path.md +71 -0
  457. package/src/docs/misc/endpoint.md +45 -0
  458. package/src/docs/misc/html-integration.md +14 -0
  459. package/src/docs/mock-api/api-config-mock.ts +5 -0
  460. package/src/docs/mock-api/fixtures.ts +0 -278
  461. package/src/docs/mock-api/flights.ts +89 -0
  462. package/src/docs/mock-api/router.ts +3 -4
  463. package/src/docs/mock-api/urls.ts +1 -2
  464. package/src/docs/navigation/components-index.ts +56 -0
  465. package/src/docs/navigation/navigation.ts +219 -232
  466. package/src/docs/navigation/pager.ts +67 -0
  467. package/src/docs/navigation/toc.ts +101 -0
  468. package/src/docs/search/docs-search.json +2419 -4374
  469. package/src/docs/search/markdown-renderer.ts +33 -7
  470. package/src/docs/search/page.ts +9 -6
  471. package/src/docs/search/search.ts +154 -122
  472. package/src/docs/shiki/index.ts +109 -0
  473. package/src/docs/tailwind/css/base/scrollbar.css +22 -0
  474. package/src/docs/tailwind/css/base/theme.css +96 -0
  475. package/src/docs/tailwind/css/base/typography.css +4 -0
  476. package/src/docs/tailwind/css/docs/boarding-pass.css +65 -0
  477. package/src/docs/tailwind/css/docs/content.css +32 -0
  478. package/src/docs/tailwind/css/docs/page.css +10 -0
  479. package/src/docs/tailwind/css/docs.css +9 -0
  480. package/src/docs/tailwind/css/home/hero.css +210 -0
  481. package/src/docs/tailwind/css/home/motion.css +84 -0
  482. package/src/docs/tailwind/css/home/sections.css +416 -0
  483. package/src/docs/tailwind/css/tailwind.css +7 -185
  484. package/src/tsconfig.json +23 -2
  485. package/src/tsconfig.tsbuildinfo +1 -1
  486. package/tailwind.config.js +8 -4
  487. package/vite.config.mts +11 -2
  488. package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
  489. package/.github/workflows/ci.yml +0 -21
  490. package/.github-export-ignore +0 -30
  491. package/CONTRIBUTING.md +0 -59
  492. package/DEV.md +0 -54
  493. package/LICENSE +0 -21
  494. package/OPEN_SOURCE_CHECKPOINT.md +0 -133
  495. package/concorde-3d.bundle.js +0 -3960
  496. package/concorde-3d.es.js +0 -33433
  497. package/concorde-hugging-face-infer.bundle.js +0 -32
  498. package/concorde-hugging-face-infer.es.js +0 -2952
  499. package/concorde-interactive.bundle.js +0 -1157
  500. package/concorde-interactive.es.js +0 -10734
  501. package/concorde-shader.bundle.js +0 -116
  502. package/concorde-shader.es.js +0 -8353
  503. package/concorde-webgpu.bundle.js +0 -307
  504. package/concorde-webgpu.es.js +0 -8627
  505. package/docs/assets/index-D8MVWqY6.js +0 -12251
  506. package/docs/assets/index-DiD0qYvE.css +0 -1
  507. package/docs/crawl/core/components/functional/date/date.html +0 -190
  508. package/docs/crawl/core/components/functional/fetch/fetch.html +0 -109
  509. package/docs/crawl/core/components/functional/if/if.html +0 -27
  510. package/docs/crawl/core/components/functional/jsonata/jsonata.html +0 -79
  511. package/docs/crawl/core/components/functional/list/list.html +0 -70
  512. package/docs/crawl/core/components/functional/mix/mix.html +0 -45
  513. package/docs/crawl/core/components/functional/queue/queue.html +0 -96
  514. package/docs/crawl/core/components/functional/router/router.html +0 -106
  515. package/docs/crawl/core/components/functional/sdui/sdui.html +0 -269
  516. package/docs/crawl/core/components/functional/states/states.html +0 -66
  517. package/docs/crawl/core/components/functional/submit/submit.html +0 -160
  518. package/docs/crawl/core/components/functional/value/value.html +0 -51
  519. package/docs/crawl/core/components/ui/alert/alert.html +0 -110
  520. package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +0 -23
  521. package/docs/crawl/core/components/ui/badge/badge.html +0 -119
  522. package/docs/crawl/core/components/ui/button/button.html +0 -149
  523. package/docs/crawl/core/components/ui/captcha/captcha.html +0 -30
  524. package/docs/crawl/core/components/ui/card/card.html +0 -99
  525. package/docs/crawl/core/components/ui/divider/divider.html +0 -58
  526. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +0 -73
  527. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +0 -135
  528. package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +0 -79
  529. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +0 -62
  530. package/docs/crawl/core/components/ui/form/input/input.html +0 -109
  531. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +0 -38
  532. package/docs/crawl/core/components/ui/form/radio/radio.html +0 -56
  533. package/docs/crawl/core/components/ui/form/select/select.html +0 -73
  534. package/docs/crawl/core/components/ui/form/switch/switch.html +0 -56
  535. package/docs/crawl/core/components/ui/form/textarea/textarea.html +0 -59
  536. package/docs/crawl/core/components/ui/group/group.html +0 -82
  537. package/docs/crawl/core/components/ui/icon/icon.html +0 -133
  538. package/docs/crawl/core/components/ui/image/image.html +0 -110
  539. package/docs/crawl/core/components/ui/link/link.html +0 -42
  540. package/docs/crawl/core/components/ui/loader/loader.html +0 -50
  541. package/docs/crawl/core/components/ui/modal/modal.html +0 -117
  542. package/docs/crawl/core/components/ui/pop/pop.html +0 -102
  543. package/docs/crawl/core/components/ui/progress/progress.html +0 -58
  544. package/docs/crawl/core/components/ui/table/table.html +0 -413
  545. package/docs/crawl/core/components/ui/toast/toast.html +0 -122
  546. package/docs/crawl/core/components/ui/tooltip/tooltip.html +0 -79
  547. package/docs/crawl/docs/_core-concept/overview.html +0 -66
  548. package/docs/crawl/docs/_core-concept/subscriber.html +0 -75
  549. package/docs/crawl/docs/_decorators/ancestor-attribute.html +0 -116
  550. package/docs/crawl/docs/_decorators/auto-subscribe.html +0 -202
  551. package/docs/crawl/docs/_decorators/bind.html +0 -141
  552. package/docs/crawl/docs/_decorators/get.html +0 -149
  553. package/docs/crawl/docs/_decorators/handle.html +0 -165
  554. package/docs/crawl/docs/_decorators/on-assign.html +0 -355
  555. package/docs/crawl/docs/_decorators/patch.html +0 -78
  556. package/docs/crawl/docs/_decorators/post.html +0 -139
  557. package/docs/crawl/docs/_decorators/publish.html +0 -61
  558. package/docs/crawl/docs/_decorators/put.html +0 -78
  559. package/docs/crawl/docs/_decorators/subscribe.html +0 -109
  560. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +0 -137
  561. package/docs/crawl/docs/_directives/sub.html +0 -93
  562. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +0 -100
  563. package/docs/crawl/docs/_getting-started/concorde-outside.html +0 -58
  564. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +0 -110
  565. package/docs/crawl/docs/_getting-started/pubsub.html +0 -62
  566. package/docs/crawl/docs/_getting-started/start.html +0 -76
  567. package/docs/crawl/docs/_getting-started/theming.html +0 -85
  568. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +0 -138
  569. package/docs/crawl/hubs/decorators.html +0 -547
  570. package/docs/crawl/hubs/form-components.html +0 -359
  571. package/docs/crawl/hubs/remote-data.html +0 -452
  572. package/docs/crawl/index.html +0 -101
  573. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
  574. package/docs/src/docs/_core-concept/overview.md +0 -57
  575. package/docs/src/docs/_core-concept/subscriber.md +0 -75
  576. package/docs/src/docs/_decorators/ancestor-attribute.md +0 -127
  577. package/docs/src/docs/_decorators/auto-subscribe.md +0 -202
  578. package/docs/src/docs/_decorators/bind.md +0 -167
  579. package/docs/src/docs/_decorators/get.md +0 -162
  580. package/docs/src/docs/_decorators/handle.md +0 -175
  581. package/docs/src/docs/_decorators/on-assign.md +0 -390
  582. package/docs/src/docs/_decorators/patch.md +0 -70
  583. package/docs/src/docs/_decorators/post.md +0 -146
  584. package/docs/src/docs/_decorators/publish.md +0 -55
  585. package/docs/src/docs/_decorators/put.md +0 -70
  586. package/docs/src/docs/_decorators/subscribe.md +0 -100
  587. package/docs/src/docs/_decorators/wait-for-ancestors.md +0 -163
  588. package/docs/src/docs/_directives/sub.md +0 -91
  589. package/docs/src/docs/_getting-started/concorde-manual-install.md +0 -133
  590. package/docs/src/docs/_getting-started/concorde-outside.md +0 -33
  591. package/docs/src/docs/_getting-started/my-first-subscriber.md +0 -120
  592. package/docs/src/docs/_getting-started/pubsub.md +0 -37
  593. package/docs/src/docs/_getting-started/start.md +0 -47
  594. package/docs/src/docs/_getting-started/theming.md +0 -91
  595. package/docs/src/docs/_misc/formelement-subscriber-removal.md +0 -115
  596. package/docs/src/tsconfig.declarations.json +0 -22
  597. package/docs/src/tsconfig.emit.json +0 -23
  598. package/gitlab/job_github_mirror.sh +0 -39
  599. package/scripts/github-export.mjs +0 -150
  600. package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
  601. package/src/css.d.ts +0 -19
  602. package/src/docs/_core-concept/overview.md +0 -57
  603. package/src/docs/_core-concept/subscriber.md +0 -75
  604. package/src/docs/_decorators/ancestor-attribute.md +0 -128
  605. package/src/docs/_decorators/auto-subscribe.md +0 -202
  606. package/src/docs/_decorators/bind.md +0 -167
  607. package/src/docs/_decorators/get.md +0 -162
  608. package/src/docs/_decorators/handle.md +0 -175
  609. package/src/docs/_decorators/on-assign.md +0 -390
  610. package/src/docs/_decorators/patch.md +0 -70
  611. package/src/docs/_decorators/post.md +0 -146
  612. package/src/docs/_decorators/publish.md +0 -55
  613. package/src/docs/_decorators/put.md +0 -70
  614. package/src/docs/_decorators/subscribe.md +0 -100
  615. package/src/docs/_decorators/wait-for-ancestors.md +0 -163
  616. package/src/docs/_directives/sub.md +0 -91
  617. package/src/docs/_getting-started/concorde-manual-install.md +0 -133
  618. package/src/docs/_getting-started/concorde-outside.md +0 -33
  619. package/src/docs/_getting-started/my-first-subscriber.md +0 -120
  620. package/src/docs/_getting-started/pubsub.md +0 -37
  621. package/src/docs/_misc/formelement-subscriber-removal.md +0 -115
  622. package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
  623. package/src/docs/example/docs-joke-demos.ts +0 -297
  624. package/src/docs/prism/index.ts +0 -6
  625. package/src/docs/prism/prism.css +0 -158
  626. package/src/docs/prism/prism.js +0 -1022
  627. package/src/tsconfig.declarations.json +0 -22
  628. package/src/tsconfig.emit.json +0 -23
@@ -1,120 +0,0 @@
1
- # Legacy: My first subscriber component
2
-
3
- > **New projects:** use [My first component](#docs/_getting-started/my-first-component.md/my-first-component) (`@ancestorAttribute`, `@subscribe` + `DataProviderKey`, `.items` on lists) and [Data flow](#docs/_core-concept/dataFlow.md/dataFlow). This page documents the **Subscriber mixin** used by older apps and core components.
4
-
5
- Learn how to build a component with the **Subscriber** mixin, styled with Tailwind, filled from a DataProvider via automatic property mapping.
6
-
7
- ## Create a classic lit component
8
-
9
- <sonic-code language="javascript" >
10
- <template>
11
- import { html, LitElement, nothing } from "lit";
12
- import { customElement, property } from "lit/decorators.js";
13
- @customElement("docs-user")
14
- export class user extends LitElement {
15
- @property({ type: String }) first_name = "";
16
- @property({ type: String }) last_name = "";
17
- @property({ type: String }) avatar = "";
18
- @property({ type: String }) email = "";
19
- render() {
20
- return html`
21
- &lt;img src="${this.avatar}" /&gt; &lt;br&gt;
22
- ${this.first_name} ${this.last_name} &lt;br&gt;
23
- ${this.email}`;
24
- }
25
- }
26
- </template>
27
- </sonic-code>
28
-
29
- ### Style with tailwind and ui components
30
-
31
- <sonic-code language="javascript">
32
- <template>
33
- import { css, unsafeCSS } from "lit";
34
- import tailwindImport from "./css/tailwind.css?inline";
35
- export const tailwind = css`${unsafeCSS(tailwindImport)}`;
36
- </template>
37
- </sonic-code>
38
-
39
- <sonic-code language="javascript">
40
- <template>
41
- import { html, LitElement } from "lit";
42
- import { customElement, property } from "lit/decorators.js";
43
- import { tailwind } from "../tailwind";
44
- import '@supersoniks/concode/ui/image'
45
- import '@supersoniks/concode/ui/button'
46
- import '@supersoniks/concode/ui/icon'
47
- @customElement("docs-user")
48
- export class user extends LitElement {
49
- static styles = [tailwind];
50
- @property({ type: String }) first_name = "";
51
- @property({ type: String }) last_name = "";
52
- @property({ type: String }) avatar = "";
53
- @property({ type: String }) email = "";
54
- render() {
55
- return html`&lt;div class="flex items-center gap-3 p-2"&gt;
56
- &lt;sonic-image src=${this.avatar} rounded="md" ratio="1/1" class="w-16"&gt;&lt;/sonic-image&gt;
57
- &lt;div&gt;${this.first_name} &lt;span class="font-bold"&gt;${this.last_name}&lt;/span&gt;&lt;/div&gt;
58
- &lt;div class="text-sm text-neutral-400"&gt;${this.email}&lt;/div&gt;
59
- &lt;/div&gt;`;
60
- }
61
- }
62
- </template>
63
- </sonic-code>
64
-
65
- ## Add Subscriber mixin
66
-
67
- <sonic-code language="javascript">
68
- <template>
69
- import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
70
- @customElement("docs-user")
71
- export class user extends Subscriber(LitElement) {
72
- // properties auto-filled from DataProvider when names match
73
- }
74
- </template>
75
- </sonic-code>
76
-
77
- See [Legacy: Subscriber mixin](#docs/_core-concept/subscriber.md/subscriber).
78
-
79
- ## Autofill from a dataProvider
80
-
81
- <sonic-code >
82
- <template>
83
- <docs-demo-sources for="list-users-fetch"></docs-demo-sources>
84
- <div serviceURL="/docs-mock-api">
85
- <sonic-fetch
86
- serviceURL="/docs-mock-api"
87
- dataProvider="api/users/3"
88
- key="data">
89
- <docs-user></docs-user>
90
- </sonic-fetch>
91
- </div>
92
- </template>
93
- </sonic-code>
94
-
95
- <sonic-code >
96
- <template>
97
- <sonic-fetch
98
- serviceURL="/docs-mock-api"
99
- dataProvider="api/users/2"
100
- key="data"></sonic-fetch>
101
- <docs-user dataProvider="api/users/2" ></docs-user>
102
- </template>
103
- </sonic-code>
104
-
105
- <sonic-code >
106
- <template>
107
- <div class="grid grid-cols-1 gap-4">
108
- <form formDataProvider="userPreview" class="grid grid-cols-4 gap-3" >
109
- <sonic-input label="First name" type="text" name="first_name" value="Paul" size="sm"></sonic-input>
110
- <sonic-input label="Last name" type="text" name="last_name" value="Metrand" size="sm"></sonic-input>
111
- <sonic-input class="col-span-2" label="email" type="text" name="email" value="paul@example.com" size="sm"></sonic-input>
112
- <sonic-input label="Image url" type="text" name="avatar" value="https://i.pravatar.cc/150?u=paul" size="sm"></sonic-input>
113
- </form>
114
- <sonic-divider align="left">Preview before submit</sonic-divider>
115
- <div dataProvider="userPreview">
116
- <docs-user></docs-user>
117
- </div>
118
- </div>
119
- </template>
120
- </sonic-code>
@@ -1,37 +0,0 @@
1
- # Legacy: Sharing data
2
-
3
- > **New apps:** [Data flow](#docs/_core-concept/dataFlow.md/dataFlow) (`get` / `set` / `DataProviderKey`, decorators). This page documents the historical **Publisher** proxy API (`PublisherManager`, `publisher.set`, `onAssign`, …).
4
-
5
- This section describes how data is shared between graphical and non-graphical components.
6
-
7
- Graphical components should not reference each other directly — they stay decoupled via a **publish/subscribe** store.
8
-
9
- ## The Publisher
10
-
11
- ### Principle
12
-
13
- * The **publisher** is a [JavaScript proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) that holds data.<br>
14
- Example: `{foo:{hello:["world"]}, bar:"baz"}`
15
-
16
- * Accessing a property (`myPublisher.foo.hello`) returns another **publisher** for that segment.
17
-
18
- * Missing properties create a publisher with internal data `null`, filled later.
19
-
20
- * **Subscribers** listen via `onAssign`, `onInternalMutation`, template filling on the **Subscriber mixin**, etc.
21
-
22
- * Updates use `publisher.set(...)` or nested assignment; changes propagate to subscribers.
23
-
24
- ❇️ Order of creation vs subscription theoretically does not matter.
25
-
26
- ### Methods
27
-
28
- * **set** — replace internal value
29
- <sonic-code language="javascript"><template>publisher.set({foo:{hello:["world"]}, bar:"baz"});</template></sonic-code>
30
-
31
- * **get** — read internal value
32
- <sonic-code language="javascript"><template>publisher.get()</template></sonic-code>
33
-
34
- * **onAssign / offAssign** — react to `set`
35
- <sonic-code language="javascript"><template>publisher.a.b.onAssign(console.log);</template></sonic-code>
36
-
37
- Modern equivalent: `get` / `set` / `@handle` — see [Data flow](#docs/_core-concept/dataFlow.md/dataFlow).
@@ -1,47 +0,0 @@
1
- # Introduction
2
-
3
- ## What is Concorde?
4
-
5
- Based on **[lit.dev](https://lit.dev)**, Concorde is a collection of web components for shared apps and websites.
6
- Build UIs without tying components to a specific host stack, while keeping visual consistency through a small set of CSS variables.
7
-
8
- ## Why and use case
9
-
10
- In 2022, Supersoniks needed a new ticketing stack for nearly 100 sites — mobile apps, modern sites, and legacy PHP without bundlers.
11
- One composable web-component library replaced many one-off apps. Lit was chosen for broad runtime compatibility.
12
-
13
- ### Stack
14
-
15
- * Lit
16
- * TypeScript
17
- * Vite
18
- * Tailwind (starter kit, not required in the core package)
19
-
20
- ### Functional features
21
-
22
- * **DataProvider** store (decorators, `get` / `set`)
23
- * Forms (`formDataProvider`)
24
- * Lists, queues, lazy loading
25
- * Router, states, UI kit with status variants
26
-
27
- ## Learn Concorde
28
-
29
- | Step | Page |
30
- |------|------|
31
- | 1 | [My first component](#docs/_getting-started/my-first-component.md/my-first-component) — Lit card, `@ancestorAttribute`, `@bind`, mock API |
32
- | 2 | [Data flow](#docs/_core-concept/dataFlow.md/dataFlow) — Core concepts: decorators and APIs |
33
- | 3 | [Local API demos](#docs/_misc/docs-mock-api.md/docs-mock-api) — offline `serviceURL` for this site (Misc) |
34
- | 4 | [create-concorde-ts-starter](https://www.npmjs.com/package/@supersoniks/create-concorde-ts-starter) — **recommended** project kit (Vite, Tailwind, `yarn ai:sync`) |
35
- | 5 | [AI agents (skills)](#docs/_getting-started/ai-agents.md/ai-agents) — `AGENTS.md`, Cursor / JetBrains rules |
36
-
37
- Legacy (Subscriber mixin, Publisher API): **Legacy** section at the bottom of the sidebar.
38
-
39
- ## Start a new project
40
-
41
- <sonic-code language="bash">
42
- <template>
43
- npx @supersoniks/create-concorde-ts-starter "project_name"
44
- </template>
45
- </sonic-code>
46
-
47
- The starter runs **`yarn ai:sync`** for you. Details: [AI agents (skills)](#docs/_getting-started/ai-agents.md/ai-agents). Manual Vite setup: [Legacy: Manual installation](#docs/_getting-started/concorde-manual-install.md/concorde-manual-install).
@@ -1,91 +0,0 @@
1
- # Adding styles
2
-
3
- ## Normal Behavior
4
-
5
- No style crosses the shadow root of a component, except for inheritable properties (which have the "inherit" property possible) and CSS variables.
6
- Properties integrated via a "[slot](https://developer.mozilla.org/en/docs/Web/HTML/Element/slot)" remain stylizable in a conventional way.
7
-
8
- - **During creation / from the inside:**
9
- - We edit the [static "styles" property of the lit component](https://lit.dev/docs/components/styles/), which can also reference shared and dynamic styles.
10
- These styles are scoped and do not impact the outside.
11
- - We use CSS variables as the value of properties intended to be customized from the outside.
12
- For each variable, we define a default value to have a simple but consistent base style.
13
- - We only rewrite inheritable properties with hard values if they are truly specific to the component.
14
- - The `<style>` tag as a direct child can be used as a last resort, especially if there is a need for particularly dynamic customization. Performance is reduced.
15
- - **During use / from the outside:**
16
- We define values for **inheritable CSS properties** (e.g., font-\_, color...) using tools like Tailwind.
17
- We modify the value of **CSS variables** used by the component.
18
-
19
- ## Choosing Style Presets via Reactive Properties:
20
-
21
- The declaration of reactive properties is useful for selecting a particular configuration that mostly affects a set of properties.
22
-
23
- For example, a `size` property (xs, sm, md, xl) will affect margins, font, line heights to align them with the corresponding CSS vars, which can be customized using the methods mentioned earlier if necessary.
24
-
25
- It is recommended to use the `{reflect: true}` property for reactive properties that have an associated style on the `:host()`. For example: `:host([type='primary']){...}`
26
-
27
- ☢️ **Caution:** Passing class names via reactive properties / HTML attributes of the component should be avoided as it can quickly lead to difficult-to-manage situations.
28
-
29
- #### CSS "display" Property
30
-
31
- By default, the display property is `inline`.
32
- Therefore, be careful to define it according to the needs, as one might mistakenly expect it to be `block` as with a regular `<div>`.
33
-
34
- ☢️ **Caution:** Defining the `display` property as `contents` may seem attractive at first, but:
35
-
36
- - It almost always leads to the creation of wrappers to style the content (instead of using `:host`).
37
- - It is no longer possible to directly add classes to the component or style it from the outside.
38
- Ultimately, the amount of code to write increases significantly.
39
-
40
- ## TAILWIND Functional Classes
41
-
42
- [tailwind](https://tailwindcss.com/) has been integrated into Concorde and is available in scoped components (with Shadow DOM).
43
- To use it, you need to import the following:
44
-
45
- <sonic-code language="javascript">
46
- <template>
47
- import { tailwind } from "@supersoniks/concorde/la-billetterie/ui/theme/theme";
48
- </template>
49
- </sonic-code>
50
-
51
- Then include the `tailwind` style in the static `styles` property of the component:
52
-
53
- <sonic-code language="javascript">
54
- <template>
55
- static styles = [tailwind];
56
- </template>
57
- </sonic-code>
58
-
59
- Finally, use it in the HTML within the render function:
60
-
61
- <sonic-code language="html">
62
- <template>
63
- <p class="m-2">A paragraph with margin</p>
64
- </template>
65
- </sonic-code>
66
-
67
- The colors from Concorde's theme are referenced in Tailwind's theme.
68
-
69
- ## Operation without Shadow DOM
70
-
71
- ### Usefulness
72
-
73
- This operation is particularly useful when it comes to **adding behavior to a simple existing element**.
74
- It may also become necessary to establish **compatibility with a traditional JS library**.
75
-
76
- For example, with a text input:
77
-
78
- - Trigger automatic data or filter update when typing text.
79
- - Automatic formatting.
80
- - Constraints that cannot be handled by native methods.
81
-
82
- ### Consequences
83
-
84
- If there is no shadow DOM (see the **noShadowDom** property of **Subscriber**):
85
-
86
- - Styling using the static "styles" property of the lit component will not be applied.
87
- - The element and its content can be styled in a traditional manner.
88
-
89
- For example, the components `queue`, `list`, and `fetch` do not have a shadow DOM.
90
-
91
- ℹ️ **Note:** Specifically in this case, it may be useful to set the `display` property to `contents`.
@@ -1,115 +0,0 @@
1
- # FormElement without Subscriber (REDMINE-79569)
2
-
3
- Form fields (`sonic-input`, `textarea`, `select`, `checkbox`, `radio`, `switch`, `button`, `input-autocomplete`) no longer inherit the **Subscriber** mixin.
4
-
5
- ## Behaviour now
6
-
7
- | Before | After |
8
- |--------|--------|
9
- | Dual channel `dataProvider` (autofill) + `formDataProvider` | **`formDataProvider` + `name` only** |
10
- | Ancestor `dataProvider` auto-filled field props | Ignored by form fields |
11
- | `noAutoFill` on fields/buttons inside a `dataProvider` tree | Dead on form fields (attribute harmless; can be cleaned in apps) |
12
-
13
- Preview pattern still valid: form writes via `formDataProvider`, display card reads via `dataProvider` on a **Subscriber** (or `@subscribe`) sibling — not on the fields themselves.
14
-
15
- ## Migration checklist (apps)
16
-
17
- 1. Prefer `formDataProvider` alone on forms / fieldsets.
18
- 2. Drop redundant `dataProvider={sameKey}` on form containers when it only existed for field autofill.
19
- 3. Prefill edit forms with `set(formKey, row)` / `dp(formKey.field).set(...)` before mount — not field `dataProvider`.
20
- 4. Remove `noAutoFill` on `sonic-button` / fields when it only blocked Subscriber autofill.
21
- 5. `initFromPublisher` still works (form publisher only).
22
-
23
- ## Billetterie collect — dual-channel risk
24
-
25
- Files under `la-billetterie/concorde` that mention both `formDataProvider` and `dataProvider=` (review; many are filter+queue, not field autofill):
26
-
27
- ### High priority (same key on form container)
28
-
29
- - `la-billetterie/components/reservation-request/atoms/request-event-form.ts` — `form` / `fieldset` with both attrs equal
30
- - `la-billetterie/components/reservation/atoms/new-quote-form.ts`
31
- - `la-billetterie/components/stats/sales-summary/sales-summary.ts`
32
- - `la-billetterie/components/product/price-selection-form/price-selection-form.ts` — `formDataProvider` + `dataProvider="cart/editForm"`
33
- - `la-billetterie/components/user/account/link-ticket/link-ticket.ts` — distinct keys (API vs form) — keep `dataProvider` only if used by fetch/submit siblings
34
-
35
- ### Filters + queue (usually OK)
36
-
37
- `formDataProvider` on filter bar, `dataProvider` on `sonic-queue` / list — no field autofill dependency:
38
-
39
- - `access-control/components/event/list/index.ts`
40
- - `access-control/components/control/search/views/list.ts`
41
- - `la-billetterie/components/event/form-event-filter/form-event-filter.ts`
42
- - `la-billetterie/components/counter/*` (agenda, store, reservation-request-treatment, …)
43
- - `widgets/agenda/agenda.ts`
44
- - … see full dual list in ticket notes / grep below
45
-
46
- ### Full dual-channel file list (55)
47
-
48
- ```
49
- concorde/src/access-control/components/control/search/views/list.ts
50
- concorde/src/access-control/components/event/list/index.ts
51
- concorde/src/la-billetterie/components/access-control-mobile/access-controller-picker.ts
52
- concorde/src/la-billetterie/components/accreditations-directory/accreditations-directory.ts
53
- concorde/src/la-billetterie/components/address/address-suggestion.ts
54
- concorde/src/la-billetterie/components/bulk/bulk.ts
55
- concorde/src/la-billetterie/components/campaign/campaign-content.ts
56
- concorde/src/la-billetterie/components/counter/agenda/agenda.ts
57
- concorde/src/la-billetterie/components/counter/event-selector/event-selector.ts
58
- concorde/src/la-billetterie/components/counter/order-validation/order-validation-settings.ts
59
- concorde/src/la-billetterie/components/counter/print/format-menu.ts
60
- concorde/src/la-billetterie/components/counter/reservation-request-treatment/reservation-request-treatment.ts
61
- concorde/src/la-billetterie/components/counter/store/counter-store.ts
62
- concorde/src/la-billetterie/components/counter/widgets-settings/widgets-settings-page.ts
63
- concorde/src/la-billetterie/components/custom-list/custom-list.ts
64
- concorde/src/la-billetterie/components/event/agenda/agenda.ts
65
- concorde/src/la-billetterie/components/event/atoms/buy-event-block/buy-event-block.ts
66
- concorde/src/la-billetterie/components/event/atoms/categorizedPrices/categorizedPrices.ts
67
- concorde/src/la-billetterie/components/event/event-store/event-store-content.ts
68
- concorde/src/la-billetterie/components/event/form-event-filter/form-event-filter.ts
69
- concorde/src/la-billetterie/components/form/event-selection/event-selection-filters.ts
70
- concorde/src/la-billetterie/components/form/event-selection/event-selection.ts
71
- concorde/src/la-billetterie/components/giftcards/giftcard-link.ts
72
- concorde/src/la-billetterie/components/layout/header.ts
73
- concorde/src/la-billetterie/components/orders/recover/recover.ts
74
- concorde/src/la-billetterie/components/placing/atoms/placement-choice/placement-choice.ts
75
- concorde/src/la-billetterie/components/placing/seatmap-view/seatmap-view.ts
76
- concorde/src/la-billetterie/components/product/price-selection-form/price-selection-form.ts
77
- concorde/src/la-billetterie/components/product/prices-form/price-button/price-button.ts
78
- concorde/src/la-billetterie/components/purchase/purchase-summary/complementary-info/complementary-info.ts
79
- concorde/src/la-billetterie/components/reservation-request/atoms/request-event-form.ts
80
- concorde/src/la-billetterie/components/reservation/atoms/new-quote-form.ts
81
- concorde/src/la-billetterie/components/reservation/reservation-content.ts
82
- concorde/src/la-billetterie/components/seatmap/seatmap.ts
83
- concorde/src/la-billetterie/components/shop/shop.ts
84
- concorde/src/la-billetterie/components/stats/dashboard/dashboard.ts
85
- concorde/src/la-billetterie/components/stats/event/event-stats-check.ts
86
- concorde/src/la-billetterie/components/stats/sales-summary/sales-summary.ts
87
- concorde/src/la-billetterie/components/subscription/atoms/quick-select-display-toggle/quick-select-display-toggle.ts
88
- concorde/src/la-billetterie/components/subscription/cart-quick-select.ts
89
- concorde/src/la-billetterie/components/subscription/edit/subscription-renew-form.ts
90
- concorde/src/la-billetterie/components/ticket/ticket-freeup.ts
91
- concorde/src/la-billetterie/components/tickets-app/default-router.ts
92
- concorde/src/la-billetterie/components/user/account/account-purchases.ts
93
- concorde/src/la-billetterie/components/user/account/account-tickets.ts
94
- concorde/src/la-billetterie/components/user/account/link-ticket/link-ticket.ts
95
- concorde/src/la-billetterie/components/user/form/login.ts
96
- concorde/src/la-billetterie/components/user/user-attach/buyer-attach-form.ts
97
- concorde/src/la-billetterie/components/user/user-attach/buyer-attach.ts
98
- concorde/src/la-billetterie/components/user/user-attach/owner-attach-form.ts
99
- concorde/src/la-billetterie/components/user/user-attach/subscription-attach-form.ts
100
- concorde/src/la-billetterie/components/user/user-attach/subscription-selector.ts
101
- concorde/src/la-billetterie/components/user/user-selector/user-selector.ts
102
- concorde/src/la-billetterie/components/user/user-suggest/user-suggest.ts
103
- concorde/src/widgets/agenda/agenda.ts
104
- ```
105
-
106
- Re-run audit:
107
-
108
- ```bash
109
- # from la-billetterie
110
- rg -l 'formDataProvider' concorde/src | while read f; do rg -q 'dataProvider\s*=' "$f" && echo "$f"; done
111
- ```
112
-
113
- ## Non-regression (Concorde docs)
114
-
115
- Smoke form demos: input, textarea, select, checkbox (incl. check-all), radio, switch, button form modes, queue + `dataFilterProvider`, submit, validation / sameValueAs, input-autocomplete.
@@ -1,22 +0,0 @@
1
- {
2
- "extends": "./tsconfig-model.json",
3
- "compilerOptions": {
4
- "noEmit": false,
5
- "emitDeclarationOnly": true,
6
- "declaration": true,
7
- "declarationMap": true,
8
- "outDir": "../dist/types",
9
- "rootDir": "."
10
- },
11
- "include": ["**/*.ts"],
12
- "exclude": [
13
- "node_modules/**/*",
14
- "**/*.spec.ts",
15
- "**/*.test.ts",
16
- "**/*.demo.ts",
17
- "**/*.stories.ts",
18
- "**/*.type-test.ts",
19
- "docs.ts",
20
- "docs/**/*"
21
- ]
22
- }
@@ -1,23 +0,0 @@
1
- {
2
- "extends": "./tsconfig-model.json",
3
- "compilerOptions": {
4
- "noEmit": false,
5
- "emitDeclarationOnly": false,
6
- "declaration": false,
7
- "sourceMap": true,
8
- "outDir": "../dist/js",
9
- "rootDir": ".",
10
- "lib": ["ES2021", "DOM", "DOM.Iterable"]
11
- },
12
- "include": ["**/*.ts"],
13
- "exclude": [
14
- "node_modules/**/*",
15
- "**/*.spec.ts",
16
- "**/*.test.ts",
17
- "**/*.demo.ts",
18
- "**/*.stories.ts",
19
- "**/*.type-test.ts",
20
- "docs.ts",
21
- "docs/**/*"
22
- ]
23
- }
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Pousse un export filtré (lib publique) vers GitHub.
3
- # Remplace le push mirror « tout le dépôt » : pas de doc, pas de captcha, pas de gitlab/.
4
- #
5
- # Variables CI requises :
6
- # GITHUB_REPO_URL — ex. https://github.com/supersoniks/concorde.git
7
- # GITHUB_TOKEN — PAT avec scope repo (masqué)
8
- #
9
- # Usage manuel (hors CI) :
10
- # GITHUB_REPO_URL=https://github.com/supersoniks/concorde.git \
11
- # GITHUB_TOKEN=ghp_… \
12
- # bash gitlab/job_github_mirror.sh
13
- #
14
- set -euo pipefail
15
-
16
- EXPORT_DIR="${CI_PROJECT_DIR:-$(cd "$(dirname "$0")/.." && pwd)}/.github-export"
17
- BRANCH="${GITHUB_BRANCH:-master}"
18
-
19
- if [[ -z "${GITHUB_REPO_URL:-}" || -z "${GITHUB_TOKEN:-}" ]]; then
20
- echo "❌ GITHUB_REPO_URL et GITHUB_TOKEN sont requis."
21
- exit 1
22
- fi
23
-
24
- echo "=== Export filtré ==="
25
- node "${CI_PROJECT_DIR:-.}/scripts/github-export.mjs" "$EXPORT_DIR"
26
-
27
- echo "=== Push vers GitHub ($BRANCH) ==="
28
- cd "$EXPORT_DIR"
29
- git init -q
30
- git config user.email "ci@supersoniks.org"
31
- git config user.name "GitLab CI"
32
- git add -A
33
- git commit -q -m "sync: export lib depuis GitLab ${CI_COMMIT_SHORT_SHA:-local}"
34
-
35
- PUSH_URL="${GITHUB_REPO_URL/https:\/\//https://${GITHUB_TOKEN}@}"
36
- git branch -M "$BRANCH"
37
- git push -f "$PUSH_URL" "$BRANCH"
38
-
39
- echo "=== Miroir GitHub à jour ==="
@@ -1,150 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Prépare une arborescence « lib publique » pour GitHub :
4
- * - sans site doc (src/docs, index.html, …)
5
- * - sans sonic-captcha (altcha.supersoniks.org)
6
- * - sans scripts / jobs GitLab internes
7
- *
8
- * Usage :
9
- * node scripts/github-export.mjs [répertoire_cible]
10
- *
11
- * Par défaut : ../concorde-github-export
12
- */
13
- import fs from "fs";
14
- import path from "path";
15
- import { fileURLToPath } from "url";
16
-
17
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
18
- const ROOT = path.resolve(__dirname, "..");
19
- const IGNORE_FILE = path.join(ROOT, ".github-export-ignore");
20
- const DEFAULT_OUT = path.resolve(ROOT, "../concorde-github-export");
21
-
22
- const EXPORT_FILTER_KEY =
23
- /(?:^|\/)(?:docs|mock-api|undefined)(?:\/|$)|captcha|\.demo\.|\.stories\.|TestUtils|\/prism\/|\/search\/|\/tailwind\/|\/header\/|\/navigation\/|\/layout\.ts$|\/code\.ts$|^code$|^docs$|^layout$/;
24
-
25
- function readIgnorePatterns() {
26
- if (!fs.existsSync(IGNORE_FILE)) return [];
27
- return fs
28
- .readFileSync(IGNORE_FILE, "utf8")
29
- .split("\n")
30
- .map((l) => l.trim())
31
- .filter((l) => l && !l.startsWith("#"));
32
- }
33
-
34
- function globToRegExp(pattern) {
35
- const escaped = pattern
36
- .replace(/[.+^${}()|[\]\\]/g, "\\$&")
37
- .replace(/\*\*/g, "{{GLOBSTAR}}")
38
- .replace(/\*/g, "[^/]*")
39
- .replace(/\{\{GLOBSTAR\}\}/g, ".*");
40
- return new RegExp(`^${escaped}$`);
41
- }
42
-
43
- function shouldExclude(relativePath, patterns) {
44
- const normalized = relativePath.replace(/\\/g, "/");
45
- for (const pattern of patterns) {
46
- const re = globToRegExp(pattern);
47
- if (re.test(normalized)) return true;
48
- if (normalized.startsWith(pattern.endsWith("/") ? pattern : `${pattern}/`))
49
- return true;
50
- if (normalized === pattern) return true;
51
- }
52
- return false;
53
- }
54
-
55
- function listAllFiles(dir, base = dir) {
56
- const out = [];
57
- for (const name of fs.readdirSync(dir, { withFileTypes: true })) {
58
- if (name.name === ".git" || name.name === "node_modules") continue;
59
- const full = path.join(dir, name.name);
60
- const rel = path.relative(base, full).replace(/\\/g, "/");
61
- if (name.isDirectory()) {
62
- if (shouldExclude(rel, ignorePatterns)) continue;
63
- out.push(...listAllFiles(full, base));
64
- } else {
65
- if (!shouldExclude(rel, ignorePatterns)) out.push(rel);
66
- }
67
- }
68
- return out;
69
- }
70
-
71
- function copyFile(rel, destRoot) {
72
- const src = path.join(ROOT, rel);
73
- const dest = path.join(destRoot, rel);
74
- fs.mkdirSync(path.dirname(dest), { recursive: true });
75
- fs.copyFileSync(src, dest);
76
- }
77
-
78
- function patchUiTs(destRoot) {
79
- const uiPath = path.join(
80
- destRoot,
81
- "src/core/components/ui/ui.ts",
82
- );
83
- if (!fs.existsSync(uiPath)) return;
84
- const content = fs.readFileSync(uiPath, "utf8");
85
- const patched = content.replace(
86
- /import "\.\/captcha\/captcha";\n?/,
87
- "",
88
- );
89
- fs.writeFileSync(uiPath, patched);
90
- }
91
-
92
- function exportHaystack(value) {
93
- if (typeof value === "string") return value;
94
- if (value && typeof value === "object") {
95
- return `${value.types ?? ""}${value.default ?? ""}`;
96
- }
97
- return String(value);
98
- }
99
-
100
- function filterPackageJson(destRoot) {
101
- const pkgPath = path.join(destRoot, "package.json");
102
- if (!fs.existsSync(pkgPath)) return;
103
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
104
- if (pkg.exports && typeof pkg.exports === "object") {
105
- const next = {};
106
- for (const [key, value] of Object.entries(pkg.exports)) {
107
- const hay = `${key}:${exportHaystack(value)}`;
108
- if (EXPORT_FILTER_KEY.test(hay)) continue;
109
- if (exportHaystack(value).includes("/captcha/")) continue;
110
- if (exportHaystack(value).includes("/docs/")) continue;
111
- if (exportHaystack(value).includes(".demo.")) continue;
112
- if (exportHaystack(value).includes(".stories.")) continue;
113
- next[key] = value;
114
- }
115
- pkg.exports = next;
116
- }
117
- fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
118
- }
119
-
120
- function patchReadme(destRoot) {
121
- const readmePath = path.join(destRoot, "README.md");
122
- if (!fs.existsSync(readmePath)) return;
123
- let text = fs.readFileSync(readmePath, "utf8");
124
- text = text.replace(
125
- /Le dépôt GitHub est un \*\*miroir\*\* synchronisé depuis GitLab \(voir \[OPEN_SOURCE_CHECKPOINT\.md\]\(OPEN_SOURCE_CHECKPOINT\.md\)\)\./,
126
- "Le dépôt GitHub est un **export filtré** depuis GitLab (librairie uniquement, sans site doc ni composant captcha — voir [OPEN_SOURCE_CHECKPOINT.md](OPEN_SOURCE_CHECKPOINT.md)).",
127
- );
128
- fs.writeFileSync(readmePath, text);
129
- }
130
-
131
- const ignorePatterns = readIgnorePatterns();
132
- const outDir = path.resolve(process.argv[2] || DEFAULT_OUT);
133
-
134
- if (fs.existsSync(outDir)) {
135
- fs.rmSync(outDir, { recursive: true, force: true });
136
- }
137
- fs.mkdirSync(outDir, { recursive: true });
138
-
139
- const files = listAllFiles(ROOT);
140
- for (const rel of files) {
141
- copyFile(rel, outDir);
142
- }
143
-
144
- patchUiTs(outDir);
145
- filterPackageJson(outDir);
146
- patchReadme(outDir);
147
-
148
- console.log(`✅ Export GitHub : ${files.length} fichiers → ${outDir}`);
149
- console.log(" Exclusions : .github-export-ignore");
150
- console.log(" Patches : ui.ts (sans captcha), package.json exports");