@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
@@ -35,24 +35,21 @@ export class DemoAncestorAttribute extends LitElement {
35
35
  @ancestorAttribute("dataProvider")
36
36
  dataProvider: string | null = null;
37
37
 
38
- @ancestorAttribute("testAttribute")
39
- testAttribute: string | null = null;
38
+ @ancestorAttribute("gate")
39
+ gate: string | null = null;
40
40
 
41
41
  render() {
42
42
  return html`
43
43
  <div
44
44
  class="space-y-2 rounded border border-neutral-200 dark:border-neutral-700 p-3"
45
45
  >
46
- <p class="text-sm text-neutral-600 dark:text-neutral-400">
47
- <code>@ancestorAttribute</code> — lecture unique au connect (défaut)
48
- </p>
49
46
  <p>
50
47
  dataProvider:
51
48
  <strong>${this.dataProvider ?? "null"}</strong>
52
49
  </p>
53
50
  <p>
54
- testAttribute:
55
- <strong>${this.testAttribute ?? "null"}</strong>
51
+ gate:
52
+ <strong>${this.gate ?? "null"}</strong>
56
53
  </p>
57
54
  </div>
58
55
  `;
@@ -86,43 +83,37 @@ export class DemoAncestorAttributeDynamicSection extends LitElement {
86
83
  static styles = [tailwind];
87
84
 
88
85
  /** Direct parent of the child — closest ancestor when set. */
89
- @state() parentValue: string | null = "from-parent";
86
+ @state() parentValue: string | null = "departures";
90
87
  /** Grandparent — used when the parent has no attribute. */
91
- @state() outerValue: string | null = "from-outer";
88
+ @state() outerValue: string | null = "fleet";
92
89
  /** Optional wrapper inserted between parent and child (wins over parent). */
93
90
  @state() closerActive = false;
94
91
 
95
92
  render() {
96
93
  return html`
97
94
  <div class="space-y-4">
98
- <p class="text-sm text-neutral-600 dark:text-neutral-400">
99
- The child always displays the <strong>nearest</strong> ancestor
100
- <code>dataProvider</code>. Change a value, add a closer wrapper, or
101
- remove an attribute — the property follows automatically.
102
- </p>
103
-
104
95
  <div class="flex flex-wrap gap-2">
105
96
  <span class="text-xs text-neutral-500 self-center w-full"
106
97
  >Parent</span
107
98
  >
108
99
  <sonic-button
109
100
  size="sm"
110
- @click=${() => (this.parentValue = "from-parent")}
101
+ @click=${() => (this.parentValue = "departures")}
111
102
  >
112
- parent-a
103
+ departures
113
104
  </sonic-button>
114
105
  <sonic-button
115
106
  size="sm"
116
- @click=${() => (this.parentValue = "from-parent-b")}
107
+ @click=${() => (this.parentValue = "arrivals")}
117
108
  >
118
- parent-b
109
+ arrivals
119
110
  </sonic-button>
120
111
  <sonic-button
121
112
  size="sm"
122
113
  variant="outline"
123
114
  @click=${() => (this.parentValue = null)}
124
115
  >
125
- Remove parent attr
116
+ Remove attribute
126
117
  </sonic-button>
127
118
  </div>
128
119
 
@@ -135,7 +126,7 @@ export class DemoAncestorAttributeDynamicSection extends LitElement {
135
126
  ?disabled=${this.closerActive}
136
127
  @click=${() => (this.closerActive = true)}
137
128
  >
138
- Add closer → from-closer
129
+ Add closer (flights.CN001)
139
130
  </sonic-button>
140
131
  <sonic-button
141
132
  size="sm"
@@ -151,22 +142,22 @@ export class DemoAncestorAttributeDynamicSection extends LitElement {
151
142
  <span class="text-xs text-neutral-500 self-center w-full">Outer</span>
152
143
  <sonic-button
153
144
  size="sm"
154
- @click=${() => (this.outerValue = "from-outer")}
145
+ @click=${() => (this.outerValue = "fleet")}
155
146
  >
156
- outer-a
147
+ fleet
157
148
  </sonic-button>
158
149
  <sonic-button
159
150
  size="sm"
160
- @click=${() => (this.outerValue = "from-outer-b")}
151
+ @click=${() => (this.outerValue = "crew")}
161
152
  >
162
- outer-b
153
+ crew
163
154
  </sonic-button>
164
155
  <sonic-button
165
156
  size="sm"
166
157
  variant="outline"
167
158
  @click=${() => (this.outerValue = null)}
168
159
  >
169
- Remove outer attr
160
+ Remove attribute
170
161
  </sonic-button>
171
162
  </div>
172
163
 
@@ -175,23 +166,23 @@ export class DemoAncestorAttributeDynamicSection extends LitElement {
175
166
  dataProvider=${this.outerValue ?? nothing}
176
167
  >
177
168
  <p class="text-xs text-neutral-400">
178
- outer ${this.outerValue ?? "— no dataProvider —"}
169
+ outer: ${this.outerValue ?? "no dataProvider"}
179
170
  </p>
180
171
  <div
181
172
  class="rounded border border-dashed border-neutral-300 dark:border-neutral-600 p-3 space-y-2"
182
173
  dataProvider=${this.parentValue ?? nothing}
183
174
  >
184
175
  <p class="text-xs text-neutral-400">
185
- parent ${this.parentValue ?? "— no dataProvider —"}
176
+ parent: ${this.parentValue ?? "no dataProvider"}
186
177
  </p>
187
178
  ${this.closerActive
188
179
  ? html`
189
180
  <div
190
181
  class="rounded border border-amber-300 dark:border-amber-700 bg-amber-50 dark:bg-amber-950/30 p-2 space-y-2"
191
- dataProvider="from-closer"
182
+ dataProvider="flights.CN001"
192
183
  >
193
184
  <p class="text-xs text-amber-800 dark:text-amber-200">
194
- closer from-closer
185
+ closer: flights.CN001
195
186
  </p>
196
187
  <demo-ancestor-attribute-dynamic></demo-ancestor-attribute-dynamic>
197
188
  </div>
@@ -204,50 +195,57 @@ export class DemoAncestorAttributeDynamicSection extends LitElement {
204
195
  }
205
196
  }
206
197
 
198
+ const PASSENGERS = [
199
+ "Ada Lindqvist",
200
+ "Captain Leo Marchand",
201
+ "Mira Okafor",
202
+ "Jonas Berg",
203
+ ];
204
+
207
205
  @customElement("demo-on-assign")
208
206
  export class DemoOnAssign extends LitElement {
209
207
  static styles = [tailwind];
210
208
 
211
- @state() userWithSettings: any = null;
212
- @state() isReady: boolean = false;
213
- @state() lastUpdate: string = "";
209
+ @state() passenger: { name: string; email: string } | null = null;
210
+ @state() settings: { theme: string; language: string } | null = null;
211
+ @state() lastUpdate = "";
214
212
 
213
+ /** Called once both paths hold a value, then on every later assignment. */
215
214
  @onAssign("demoUser", "demoUserSettings")
216
- handleDataReady(user: any, settings: any) {
217
- this.isReady =
218
- Object.keys(user).length > 0 && Object.keys(settings).length > 0;
219
- this.userWithSettings = { ...user, ...settings };
215
+ handleDataReady(
216
+ user: { name: string; email: string },
217
+ settings: { theme: string; language: string },
218
+ ) {
219
+ this.passenger = user;
220
+ this.settings = settings;
220
221
  this.lastUpdate = new Date().toLocaleTimeString();
221
- this.requestUpdate();
222
222
  }
223
223
 
224
224
  render() {
225
- const { name, email, theme, language } = this.userWithSettings;
226
225
  return html`
227
- <div class="mt-2">
228
- <sonic-button @click=${this.updateData}>Update Data</sonic-button>
229
- </div>
230
- <div class="p-3">
231
- ${this.isReady === false
232
- ? html`<p>No settings yet...</p>`
233
- : html`<p>${name || "N/A"}</p>
234
- <p>${email || "N/A"}</p>
235
- <p>${theme || "N/A"}</p>
236
- <p>${language || "N/A"}</p>
237
- <p><small>Last updated: ${this.lastUpdate}</small></p> `}
226
+ <div class="flex flex-col gap-3">
227
+ <div>
228
+ <sonic-button @click=${this.nextPassenger}>Next passenger</sonic-button>
229
+ </div>
230
+ ${this.passenger && this.settings
231
+ ? html`<div class="rounded border border-neutral-200 dark:border-neutral-700 p-3">
232
+ <p><strong>${this.passenger.name}</strong></p>
233
+ <p>${this.passenger.email}</p>
234
+ <p>Theme: ${this.settings.theme} · Language: ${this.settings.language}</p>
235
+ <p><small>Last update: ${this.lastUpdate}</small></p>
236
+ </div>`
237
+ : html`<p>Waiting for passenger and settings…</p>`}
238
238
  </div>
239
239
  `;
240
240
  }
241
241
 
242
- updateData() {
243
- const userNumber = Math.floor(Math.random() * 100);
244
- set(demoUserKey, {
245
- name: `User n°${userNumber}`,
246
- email: `user-${userNumber}@example.com`,
247
- });
242
+ nextPassenger() {
243
+ const name = PASSENGERS[Math.floor(Math.random() * PASSENGERS.length)];
244
+ const slug = name.toLowerCase().replace("captain ", "").replace(" ", ".");
245
+ set(demoUserKey, { name, email: `${slug}@example.com` });
248
246
  set(demoUserSettingsKey, {
249
247
  theme: ["light", "dark", "auto"][Math.floor(Math.random() * 3)],
250
- language: ["en", "fr", "es"][Math.floor(Math.random() * 3)],
248
+ language: ["en", "fr", "sv"][Math.floor(Math.random() * 3)],
251
249
  });
252
250
  }
253
251
  }
@@ -300,11 +298,10 @@ export class DemoOnAssignDynamic extends LitElement {
300
298
  if (!users[idx] || !settings[idx]) return;
301
299
 
302
300
  const randomNames = [
303
- { firstName: "Alice", lastName: "Wonder" },
304
- { firstName: "Bob", lastName: "Builder" },
305
- { firstName: "Charlie", lastName: "Chaplin" },
306
- { firstName: "Diana", lastName: "Prince" },
307
- { firstName: "Eve", lastName: "Adams" },
301
+ { firstName: "Ada", lastName: "Lindqvist" },
302
+ { firstName: "Leo", lastName: "Marchand" },
303
+ { firstName: "Mira", lastName: "Okafor" },
304
+ { firstName: "Jonas", lastName: "Berg" },
308
305
  ];
309
306
  const randomThemes = ["light", "dark", "auto"];
310
307
  const randomLanguages = ["en", "fr", "es", "de", "it"];
@@ -330,9 +327,9 @@ export class DemoOnAssignDynamic extends LitElement {
330
327
  render() {
331
328
  return html`
332
329
  <div class="flex flex-col gap-2">
333
- <sonic-select label="Users set" @change=${this.updateDataProvider}>
334
- <option value=${demoUsersKey.path}>First set of users</option>
335
- <option value=${demoUsersAltKey.path}>Second set of users</option>
330
+ <sonic-select label="Passenger list" @change=${this.updateDataProvider}>
331
+ <option value=${demoUsersKey.path}>First list</option>
332
+ <option value=${demoUsersAltKey.path}>Second list</option>
336
333
  </sonic-select>
337
334
  <sonic-input
338
335
  type="number"
@@ -345,7 +342,7 @@ export class DemoOnAssignDynamic extends LitElement {
345
342
  >
346
343
  </sonic-input>
347
344
  <sonic-button @click=${this.updateCurrentUserData}
348
- >Update current user data</sonic-button
345
+ >Update current passenger</sonic-button
349
346
  >
350
347
  <div class="flex flex-col gap-2 border p-2">
351
348
  <div>
@@ -370,35 +367,32 @@ export class DemoOnAssignDynamic extends LitElement {
370
367
  export class DemoAutoSubscribe extends LitElement {
371
368
  static styles = [tailwind];
372
369
 
373
- @state() displayText: string = "";
374
- @state() computedValue: number = 0;
370
+ @state() displayText = "";
375
371
 
372
+ /** Re-runs whenever `autoValue1` or `autoValue2` is assigned. */
376
373
  @autoSubscribe()
377
374
  updateDisplay() {
378
- const value1 = get(autoValue1Key) || 0;
379
- const value2 = get(autoValue2Key) || 0;
380
-
381
- this.computedValue = value1 + value2;
382
- this.displayText = `${value1} + ${value2} = ${this.computedValue}`;
375
+ const passengers = get(autoValue1Key) || 0;
376
+ const crew = get(autoValue2Key) || 0;
377
+ this.displayText = `${passengers} passengers + ${crew} crew = ${passengers + crew} on board`;
383
378
  }
384
379
 
385
380
  render() {
386
381
  return html`
387
- <p><strong>${this.displayText}</strong></p>
388
- <div>
389
- <sonic-button @click=${() => this.randomizeValue("autoValue1")}
390
- >Randomize Value 1</sonic-button
382
+ <p class="mb-2"><strong>${this.displayText}</strong></p>
383
+ <div class="flex flex-wrap gap-2">
384
+ <sonic-button @click=${() => this.randomize(autoValue1Key, 100)}
385
+ >Board passengers</sonic-button
386
+ >
387
+ <sonic-button @click=${() => this.randomize(autoValue2Key, 12)}
388
+ >Change crew</sonic-button
391
389
  >
392
- <sonic-button @click=${() => this.randomizeValue("autoValue2")}
393
- Randomize Value 2
394
- </sonic-button>
395
390
  </div>
396
391
  `;
397
392
  }
398
393
 
399
- randomizeValue(which: "autoValue1" | "autoValue2") {
400
- const key = which === "autoValue1" ? autoValue1Key : autoValue2Key;
401
- set(key, Math.floor(Math.random() * 100));
394
+ randomize(key: typeof autoValue1Key, max: number) {
395
+ set(key, Math.floor(Math.random() * max) + 1);
402
396
  }
403
397
  }
404
398
 
@@ -425,10 +419,10 @@ export class DemoWaitAncestorValue extends LitElement {
425
419
  render() {
426
420
  return html`
427
421
  <p>
428
- DataProvider from ancestor:
429
- <strong>${this.dataProvider || "—"}</strong>
422
+ dataProvider from ancestor:
423
+ <strong>${this.dataProvider || "none yet"}</strong>
430
424
  </p>
431
- <p>Initialized at: ${this.initializedAt || "(waiting for parent…)"}</p>
425
+ <p>Initialized at: ${this.initializedAt || "waiting for the parent…"}</p>
432
426
  `;
433
427
  }
434
428
  }
@@ -500,11 +494,11 @@ export class DemoWaitAncestorValueMulti extends LitElement {
500
494
  render() {
501
495
  return html`
502
496
  <p>
503
- DataProvider from ancestor:
504
- <strong>${this.dataProvider || "—"}</strong>
497
+ dataProvider from ancestor:
498
+ <strong>${this.dataProvider || "none yet"}</strong>
505
499
  </p>
506
500
  <p>
507
- Initialized at: ${this.initializedAt || "(waiting for both ancestors…)"}
501
+ Initialized at: ${this.initializedAt || "waiting for both ancestors…"}
508
502
  </p>
509
503
  `;
510
504
  }
@@ -581,7 +575,7 @@ export class DemoWaitAncestorValueReady extends LitElement {
581
575
 
582
576
  render() {
583
577
  return html`
584
- <p>DataProvider: <strong>${this.dataProvider || "—"}</strong></p>
578
+ <p>dataProvider: <strong>${this.dataProvider || "none"}</strong></p>
585
579
  <p>Initialized at: ${this.initializedAt}</p>
586
580
  `;
587
581
  }
@@ -600,12 +594,8 @@ export class DemoWaitAncestorsReadySection extends LitElement {
600
594
  render() {
601
595
  return html`
602
596
  <div class="space-y-4">
603
- <p class="text-sm text-neutral-600 dark:text-neutral-400">
604
- Parent défini au chargement. Ajout dynamique de l’enfant —
605
- initialisation immédiate si l’ancêtre est prêt.
606
- </p>
607
597
  <sonic-button ?disabled=${this.childInDom} @click=${this.addChild}>
608
- ${this.childInDom ? "Child added" : "Add child dynamically"}
598
+ ${this.childInDom ? "Child added" : "Add child"}
609
599
  </sonic-button>
610
600
  <demo-wait-ancestor-ready dataProvider=${waitAncestorDemoKey.path}>
611
601
  ${this.childInDom
@@ -623,9 +613,6 @@ export class DemoWaitAncestorsStaticSection extends LitElement {
623
613
 
624
614
  render() {
625
615
  return html`
626
- <p class="text-sm text-neutral-600 dark:text-neutral-400 mb-4">
627
- Parent et enfant présents dès le chargement — pas de délai.
628
- </p>
629
616
  <demo-wait-ancestor-ready dataProvider=${waitAncestorDemoKey.path}>
630
617
  <demo-wait-ancestor-value-ready></demo-wait-ancestor-value-ready>
631
618
  </demo-wait-ancestor-ready>
@@ -4,7 +4,7 @@ import { get } from "@supersoniks/concorde/core/decorators/api";
4
4
  import type { ApiResult } from "@supersoniks/concorde/core/utils/api";
5
5
  import { Endpoint } from "@supersoniks/concorde/core/utils/endpoint";
6
6
  import { set } from "@supersoniks/concorde/core/utils/PublisherProxy";
7
- import { wording } from "@supersoniks/concorde/core/directives/Wording";
7
+ import { t } from "@supersoniks/concorde/core/directives/Wording";
8
8
  import { DOCS_MOCK_API_BASE } from "../mock-api/urls";
9
9
  import {
10
10
  DOCS_MOCK_EVENTS_API_TOKEN,
@@ -128,32 +128,31 @@ export class DocsApiConfigStaleTokenDemo extends LitElement {
128
128
  }
129
129
  }
130
130
 
131
- /** Ancestor attributes: <code>wordingProvider</code> + directive <code>wording()</code>. */
131
+ /** <code>t()</code> reads <code>serviceURL</code> / <code>wordingProvider</code> from the host and its ancestors. */
132
132
  @customElement("docs-api-config-wording-demo")
133
133
  export class DocsApiConfigWordingDemo extends LitElement {
134
134
  static styles = [tailwind];
135
135
 
136
+ connectedCallback() {
137
+ this.setAttribute("serviceURL", DOCS_MOCK_API_BASE);
138
+ this.setAttribute("wordingProvider", "wording/labels?lang=fr");
139
+ this.setAttribute("wordingVersionProvider", docsApiConfWordingVersionKey.path);
140
+ super.connectedCallback();
141
+ }
142
+
136
143
  render() {
137
144
  return html`
138
- <div
139
- serviceURL=${DOCS_MOCK_API_BASE}
140
- wordingProvider="wording/labels?lang=fr"
141
- wordingVersionProvider=${docsApiConfWordingVersionKey.path}
145
+ <p class="text-sm space-y-2">
146
+ <span class="block">${t("api-config.greeting")}</span>
147
+ <span class="block">${t("api-config.farewell")}</span>
148
+ <span class="block text-neutral-500">${t("api-config.hint")}</span>
149
+ </p>
150
+ <sonic-button
151
+ size="sm"
152
+ class="mt-3"
153
+ @click=${() => set(docsApiConfWordingVersionKey, Date.now())}
154
+ >Bump wording version (reload)</sonic-button
142
155
  >
143
- <p class="text-sm space-y-2">
144
- <span class="block">${wording("api-config.greeting")}</span>
145
- <span class="block">${wording("api-config.farewell")}</span>
146
- <span class="block text-neutral-500"
147
- >${wording("api-config.hint")}</span
148
- >
149
- </p>
150
- <sonic-button
151
- size="sm"
152
- class="mt-3"
153
- @click=${() => set(docsApiConfWordingVersionKey, Date.now())}
154
- >Bump wording version (reload)</sonic-button
155
- >
156
- </div>
157
156
  `;
158
157
  }
159
158
  }
@@ -0,0 +1,134 @@
1
+ import { html, LitElement } from "lit";
2
+ import { customElement, state } from "lit/decorators.js";
3
+ import { keyed } from "lit/directives/keyed.js";
4
+ import { subscribe } from "@supersoniks/concorde/core/decorators/Subscriber";
5
+ import { docsBoardingPassKey } from "./docs-provider-keys";
6
+
7
+ const destinations: Record<string, string> = {
8
+ JFK: "New York",
9
+ GIG: "Rio de Janeiro",
10
+ HND: "Tokyo",
11
+ DXB: "Dubai",
12
+ SYD: "Sydney",
13
+ };
14
+
15
+ const isChecked = (v: unknown) =>
16
+ v === true || v === "true" || v === 1 || v === "1";
17
+
18
+ @customElement("docs-boarding-pass-demo")
19
+ export class DocsBoardingPassDemo extends LitElement {
20
+ /** Light DOM: the pass is part of the page (styles in tailwind/css/docs/boarding-pass.css). */
21
+ createRenderRoot() {
22
+ return this;
23
+ }
24
+
25
+
26
+ @subscribe(docsBoardingPassKey.firstName)
27
+ @state()
28
+ firstName = "";
29
+
30
+ @subscribe(docsBoardingPassKey.lastName)
31
+ @state()
32
+ lastName = "";
33
+
34
+ @subscribe(docsBoardingPassKey.destination)
35
+ @state()
36
+ destination = "JFK";
37
+
38
+ @subscribe(docsBoardingPassKey.firstClass)
39
+ @state()
40
+ firstClass = "";
41
+
42
+ render() {
43
+ const first = isChecked(this.firstClass);
44
+ const code = this.destination || "JFK";
45
+ const passenger =
46
+ `${this.lastName || "—"} / ${this.firstName || "—"}`.toUpperCase();
47
+
48
+ return html`
49
+ <div class="grid gap-6 max-w-[34rem] mx-auto">
50
+ <div formDataProvider=${docsBoardingPassKey.path} class="grid gap-3">
51
+ <div class="grid gap-3 sm:grid-cols-2">
52
+ <sonic-input name="firstName" label="First name"></sonic-input>
53
+ <sonic-input name="lastName" label="Last name"></sonic-input>
54
+ </div>
55
+ <sonic-select name="destination" label="Destination">
56
+ ${Object.entries(destinations).map(
57
+ ([value, city]) =>
58
+ html`<option value=${value}>${city} (${value})</option>`,
59
+ )}
60
+ </sonic-select>
61
+ <sonic-switch name="firstClass" value="true" unique
62
+ >First class</sonic-switch
63
+ >
64
+ </div>
65
+
66
+ <sonic-card
67
+ type=${first ? "invert" : "light"}
68
+ shadow="none"
69
+ class="block relative"
70
+ >
71
+ <div class="flex items-center justify-between gap-3 mb-5">
72
+ <span class="font-headings italic font-semibold text-xl"
73
+ >concorde airways</span
74
+ >
75
+ ${keyed(
76
+ first,
77
+ html`<sonic-badge
78
+ class="bp-pop"
79
+ variant="outline"
80
+ type=${first ? "warning" : "default"}
81
+ >${first ? "First class" : "Economy"}</sonic-badge
82
+ >`,
83
+ )}
84
+ </div>
85
+
86
+ <div class="grid grid-cols-[auto_1fr_auto] items-center gap-3">
87
+ <div>
88
+ <div class="font-headings text-4xl sm:text-5xl leading-none">CDG</div>
89
+ <div class="text-xs opacity-70">Paris</div>
90
+ </div>
91
+ <div class="bp-route">
92
+ ${keyed(
93
+ code,
94
+ html`<sonic-icon
95
+ class="bp-fly"
96
+ name="plane"
97
+ library="fontAwesome"
98
+ prefix="solid"
99
+ size="lg"
100
+ ></sonic-icon>`,
101
+ )}
102
+ </div>
103
+ <div class="text-right">
104
+ ${keyed(
105
+ code,
106
+ html`<div class="bp-pop font-headings text-4xl sm:text-5xl leading-none">
107
+ ${code}
108
+ </div>`,
109
+ )}
110
+ <div class="text-xs opacity-70">${destinations[code]}</div>
111
+ </div>
112
+ </div>
113
+
114
+ <div class="grid grid-cols-3 gap-3 mt-6 text-sm">
115
+ <div class="col-span-3 sm:col-span-1 min-w-0">
116
+ <div class="text-xs opacity-60">Passenger</div>
117
+ <div class="font-bold truncate">${passenger}</div>
118
+ </div>
119
+ <div>
120
+ <div class="text-xs opacity-60">Seat</div>
121
+ <div class="font-bold">${first ? "1A" : "24C"}</div>
122
+ </div>
123
+ <div>
124
+ <div class="text-xs opacity-60">Boarding</div>
125
+ <div class="font-bold">${first ? "10:05" : "10:25"}</div>
126
+ </div>
127
+ </div>
128
+
129
+ <div class="bp-barcode h-10 mt-6 opacity-80"></div>
130
+ </sonic-card>
131
+ </div>
132
+ `;
133
+ }
134
+ }