@supersoniks/concorde 5.1.1 → 5.1.3

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 (494) 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/PLAN-DOCS-AGENTS.md +80 -0
  6. package/README.md +4 -4
  7. package/ai/README.md +29 -41
  8. package/ai/skills/concorde/SKILL.md +54 -324
  9. package/ai/skills/concorde/rules/composition.md +32 -0
  10. package/ai/skills/concorde/rules/data.md +47 -0
  11. package/ai/skills/concorde/rules/http.md +25 -0
  12. package/ai/skills/concorde/rules/lists-forms.md +35 -0
  13. package/ai/skills/concorde/rules/styling.md +46 -0
  14. package/ai/skills/concorde/rules/troubleshooting.md +45 -0
  15. package/build-infos.json +1 -1
  16. package/concorde-core.bundle.js +21 -21
  17. package/concorde-core.es.js +977 -980
  18. package/custom-elements-manifest.public.config.mjs +8 -0
  19. package/{.tmp-cem/custom-elements.json → custom-elements.json} +11758 -8904
  20. package/dist/concorde-core.bundle.js +21 -21
  21. package/dist/concorde-core.es.js +977 -980
  22. package/dist/docs-mock-api-sw.js +58 -223
  23. package/dist/docs-mock-api-sw.js.map +4 -4
  24. package/dist/img/concorde/plane_01.jpg +0 -0
  25. package/dist/img/concorde/plane_02.jpg +0 -0
  26. package/dist/img/concorde/plane_03.jpg +0 -0
  27. package/dist/img/concorde/plane_04.jpg +0 -0
  28. package/dist/img/concorde/plane_05.jpg +0 -0
  29. package/dist/img/concorde/plane_06.jpg +0 -0
  30. package/dist/img/concorde/plane_07.jpg +0 -0
  31. package/dist/img/concorde/plane_08.jpg +0 -0
  32. package/dist/img/concorde/plane_09.jpg +0 -0
  33. package/dist/img/concorde/plane_10.jpg +0 -0
  34. package/dist/img/concorde/plane_11.jpg +0 -0
  35. package/dist/img/concorde/plane_12.jpg +0 -0
  36. package/dist/img/concorde/plane_13.jpg +0 -0
  37. package/dist/img/og-concorde.jpg +0 -0
  38. package/dist/robots.txt +11 -10
  39. package/docs/.htaccess +82 -0
  40. package/docs/404.html +15 -0
  41. package/docs/404.md +5 -0
  42. package/docs/about.html +111 -0
  43. package/docs/about.md +22 -0
  44. package/docs/assets/{index-Bb-_LRyY.js → index-6sS76xWj.js} +2625 -3158
  45. package/docs/assets/index-DkdPbH0F.css +1 -0
  46. package/docs/core/components/functional/date/date.html +211 -0
  47. package/docs/core/components/functional/date/date.md +150 -0
  48. package/docs/core/components/functional/fetch/fetch.html +180 -0
  49. package/docs/core/components/functional/fetch/fetch.md +108 -0
  50. package/docs/core/components/functional/if/if.html +65 -0
  51. package/docs/core/components/functional/if/if.md +34 -0
  52. package/docs/core/components/functional/jsonata/jsonata.html +110 -0
  53. package/docs/core/components/functional/jsonata/jsonata.md +61 -0
  54. package/docs/core/components/functional/list/list.html +200 -0
  55. package/docs/core/components/functional/list/list.md +125 -0
  56. package/docs/core/components/functional/mix/mix.html +78 -0
  57. package/docs/core/components/functional/mix/mix.md +46 -0
  58. package/docs/core/components/functional/queue/queue.html +155 -0
  59. package/docs/core/components/functional/queue/queue.md +51 -0
  60. package/docs/core/components/functional/router/router.html +154 -0
  61. package/docs/core/components/functional/router/router.md +93 -0
  62. package/docs/core/components/functional/sdui/sdui-extension-points.html +127 -0
  63. package/docs/core/components/functional/sdui/sdui-extension-points.md +94 -0
  64. package/docs/core/components/functional/sdui/sdui.html +397 -0
  65. package/docs/core/components/functional/sdui/sdui.md +307 -0
  66. package/docs/core/components/functional/states/states.html +141 -0
  67. package/docs/core/components/functional/states/states.md +112 -0
  68. package/docs/core/components/functional/submit/submit.html +178 -0
  69. package/docs/core/components/functional/submit/submit.md +106 -0
  70. package/docs/core/components/functional/subscriber/subscriber.html +68 -0
  71. package/docs/core/components/functional/subscriber/subscriber.md +91 -0
  72. package/docs/core/components/functional/translation/translation.html +60 -0
  73. package/docs/core/components/functional/translation/translation.md +38 -0
  74. package/docs/core/components/functional/value/value.html +81 -0
  75. package/docs/core/components/functional/value/value.md +47 -0
  76. package/docs/core/components/ui/alert/alert.html +201 -0
  77. package/docs/core/components/ui/alert/alert.md +186 -0
  78. package/docs/core/components/ui/alert-messages/alert-messages.html +132 -0
  79. package/docs/core/components/ui/alert-messages/alert-messages.md +85 -0
  80. package/docs/core/components/ui/badge/badge.html +197 -0
  81. package/docs/core/components/ui/badge/badge.md +181 -0
  82. package/docs/core/components/ui/button/button.html +309 -0
  83. package/docs/core/components/ui/button/button.md +216 -0
  84. package/docs/core/components/ui/captcha/captcha.html +80 -0
  85. package/docs/core/components/ui/captcha/captcha.md +56 -0
  86. package/docs/core/components/ui/card/card.html +254 -0
  87. package/docs/core/components/ui/card/card.md +215 -0
  88. package/docs/core/components/ui/divider/divider.html +144 -0
  89. package/docs/core/components/ui/divider/divider.md +126 -0
  90. package/docs/core/components/ui/form/checkbox/checkbox.html +200 -0
  91. package/docs/core/components/ui/form/checkbox/checkbox.md +125 -0
  92. package/docs/core/components/ui/form/fieldset/fieldset.html +238 -0
  93. package/docs/core/components/ui/form/fieldset/fieldset.md +161 -0
  94. package/docs/core/components/ui/form/form-actions/form-actions.html +122 -0
  95. package/docs/core/components/ui/form/form-actions/form-actions.md +98 -0
  96. package/docs/core/components/ui/form/form-layout/form-layout.html +115 -0
  97. package/docs/core/components/ui/form/form-layout/form-layout.md +109 -0
  98. package/docs/core/components/ui/form/input/input.html +235 -0
  99. package/docs/core/components/ui/form/input/input.md +142 -0
  100. package/docs/core/components/ui/form/radio/radio.html +144 -0
  101. package/docs/core/components/ui/form/radio/radio.md +78 -0
  102. package/docs/core/components/ui/form/select/select.html +178 -0
  103. package/docs/core/components/ui/form/select/select.md +86 -0
  104. package/docs/core/components/ui/form/switch/switch.html +146 -0
  105. package/docs/core/components/ui/form/switch/switch.md +80 -0
  106. package/docs/core/components/ui/form/textarea/textarea.html +162 -0
  107. package/docs/core/components/ui/form/textarea/textarea.md +82 -0
  108. package/docs/core/components/ui/group/group.html +113 -0
  109. package/docs/core/components/ui/group/group.md +77 -0
  110. package/docs/core/components/ui/icon/icon.html +223 -0
  111. package/docs/core/components/ui/icon/icon.md +214 -0
  112. package/docs/core/components/ui/image/image.html +194 -0
  113. package/docs/core/components/ui/image/image.md +167 -0
  114. package/docs/core/components/ui/link/link.html +101 -0
  115. package/docs/core/components/ui/link/link.md +81 -0
  116. package/docs/core/components/ui/loader/loader.html +114 -0
  117. package/docs/core/components/ui/loader/loader.md +87 -0
  118. package/docs/core/components/ui/menu/menu.html +395 -0
  119. package/docs/core/components/ui/menu/menu.md +370 -0
  120. package/docs/core/components/ui/modal/modal.html +324 -0
  121. package/docs/core/components/ui/modal/modal.md +211 -0
  122. package/docs/core/components/ui/pop/pop.html +250 -0
  123. package/docs/core/components/ui/pop/pop.md +216 -0
  124. package/docs/core/components/ui/progress/progress.html +132 -0
  125. package/docs/core/components/ui/progress/progress.md +109 -0
  126. package/docs/core/components/ui/table/table.html +333 -0
  127. package/docs/core/components/ui/table/table.md +267 -0
  128. package/docs/core/components/ui/theme/theme.html +116 -0
  129. package/docs/core/components/ui/theme/theme.md +97 -0
  130. package/docs/core/components/ui/toast/toast.html +185 -0
  131. package/docs/core/components/ui/toast/toast.md +147 -0
  132. package/docs/core/components/ui/tooltip/tooltip.html +112 -0
  133. package/docs/core/components/ui/tooltip/tooltip.md +89 -0
  134. package/docs/custom-elements.json +16559 -0
  135. package/docs/docs/decorators/ancestor-attribute.html +71 -0
  136. package/docs/docs/decorators/ancestor-attribute.md +59 -0
  137. package/docs/docs/decorators/auto-subscribe.html +61 -0
  138. package/docs/docs/decorators/auto-subscribe.md +40 -0
  139. package/docs/docs/decorators/bind.html +87 -0
  140. package/docs/docs/decorators/bind.md +76 -0
  141. package/docs/docs/decorators/get.html +166 -0
  142. package/docs/docs/decorators/get.md +160 -0
  143. package/docs/docs/decorators/handle.html +139 -0
  144. package/docs/docs/decorators/handle.md +119 -0
  145. package/docs/docs/decorators/on-assign.html +72 -0
  146. package/docs/docs/decorators/on-assign.md +63 -0
  147. package/docs/docs/decorators/patch.html +76 -0
  148. package/docs/docs/decorators/patch.md +44 -0
  149. package/docs/docs/decorators/post.html +150 -0
  150. package/docs/docs/decorators/post.md +134 -0
  151. package/docs/docs/decorators/publish.html +74 -0
  152. package/docs/docs/decorators/publish.md +56 -0
  153. package/docs/docs/decorators/put.html +83 -0
  154. package/docs/docs/decorators/put.md +51 -0
  155. package/docs/docs/decorators/subscribe.html +91 -0
  156. package/docs/docs/decorators/subscribe.md +87 -0
  157. package/docs/docs/decorators/wait-for-ancestors.html +82 -0
  158. package/docs/docs/decorators/wait-for-ancestors.md +76 -0
  159. package/docs/docs/directives/sub.html +79 -0
  160. package/docs/docs/directives/sub.md +75 -0
  161. package/docs/docs/directives/t.html +91 -0
  162. package/docs/docs/directives/t.md +73 -0
  163. package/docs/docs/getting-started/ai-agents.html +130 -0
  164. package/docs/docs/getting-started/ai-agents.md +50 -0
  165. package/docs/docs/getting-started/components.html +27 -0
  166. package/docs/docs/getting-started/create-a-component.html +108 -0
  167. package/{src/docs/_getting-started → docs/docs/getting-started}/create-a-component.md +3 -6
  168. package/docs/docs/getting-started/dataFlow.html +174 -0
  169. package/{src/docs/_core-concept → docs/docs/getting-started}/dataFlow.md +18 -19
  170. package/docs/docs/getting-started/installation.html +69 -0
  171. package/docs/docs/getting-started/installation.md +36 -0
  172. package/docs/docs/getting-started/my-first-component.html +180 -0
  173. package/{src/docs/_getting-started → docs/docs/getting-started}/my-first-component.md +5 -14
  174. package/docs/docs/getting-started/start.html +47 -0
  175. package/{src/docs/_getting-started → docs/docs/getting-started}/start.md +1 -13
  176. package/docs/docs/getting-started/theming.html +334 -0
  177. package/docs/docs/index.html +99 -0
  178. package/docs/docs/misc/api-configuration.html +149 -0
  179. package/{src/docs/_misc → docs/docs/misc}/api-configuration.md +10 -12
  180. package/docs/docs/misc/dataProviderKey.html +136 -0
  181. package/{src/docs/_misc → docs/docs/misc}/dataProviderKey.md +4 -4
  182. package/docs/docs/misc/docs-mock-api.html +155 -0
  183. package/{src/docs/_misc → docs/docs/misc}/docs-mock-api.md +12 -13
  184. package/docs/docs/misc/dynamic-path.html +181 -0
  185. package/{src/docs/_misc → docs/docs/misc}/dynamic-path.md +8 -8
  186. package/docs/docs/misc/endpoint.html +51 -0
  187. package/{src/docs/_misc → docs/docs/misc}/endpoint.md +8 -8
  188. package/docs/docs/misc/html-integration.html +45 -0
  189. package/{src/docs/_misc → docs/docs/misc}/html-integration.md +4 -5
  190. package/docs/docs-mock-api-sw.js +58 -223
  191. package/docs/docs-mock-api-sw.js.map +4 -4
  192. package/docs/hubs/decorators.html +438 -0
  193. package/docs/hubs/form-components.html +404 -0
  194. package/docs/hubs/remote-data.html +367 -0
  195. package/docs/img/archive/concorde-001-2cv.webp +0 -0
  196. package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  197. package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
  198. package/docs/img/archive/credits.json +28 -0
  199. package/docs/img/concorde/plane_01.jpg +0 -0
  200. package/docs/img/concorde/plane_02.jpg +0 -0
  201. package/docs/img/concorde/plane_03.jpg +0 -0
  202. package/docs/img/concorde/plane_04.jpg +0 -0
  203. package/docs/img/concorde/plane_05.jpg +0 -0
  204. package/docs/img/concorde/plane_06.jpg +0 -0
  205. package/docs/img/concorde/plane_07.jpg +0 -0
  206. package/docs/img/concorde/plane_08.jpg +0 -0
  207. package/docs/img/concorde/plane_09.jpg +0 -0
  208. package/docs/img/concorde/plane_10.jpg +0 -0
  209. package/docs/img/concorde/plane_11.jpg +0 -0
  210. package/docs/img/concorde/plane_12.jpg +0 -0
  211. package/docs/img/concorde/plane_13.jpg +0 -0
  212. package/docs/img/og-concorde.jpg +0 -0
  213. package/docs/index.html +184 -68
  214. package/docs/index.md +22 -0
  215. package/docs/llms-full.txt +5779 -0
  216. package/docs/llms.txt +108 -0
  217. package/docs/privacy.html +122 -0
  218. package/docs/privacy.md +32 -0
  219. package/docs/robots.txt +11 -10
  220. package/docs/sitemap.xml +243 -0
  221. package/docs/src/core/components/functional/date/date.md +150 -0
  222. package/docs/src/core/components/functional/fetch/fetch.md +108 -0
  223. package/docs/src/core/components/functional/if/if.md +34 -0
  224. package/docs/src/core/components/functional/jsonata/jsonata.md +61 -0
  225. package/docs/src/core/components/functional/list/list.md +125 -0
  226. package/docs/src/core/components/functional/mix/mix.md +46 -0
  227. package/docs/src/core/components/functional/queue/queue.md +51 -0
  228. package/docs/src/core/components/functional/router/router.md +93 -0
  229. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
  230. package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
  231. package/docs/src/core/components/functional/sdui/default-library.json +108 -0
  232. package/docs/src/core/components/functional/sdui/example.json +32 -0
  233. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
  234. package/docs/src/core/components/functional/sdui/sdui.md +307 -0
  235. package/docs/src/core/components/functional/states/states.md +112 -0
  236. package/docs/src/core/components/functional/submit/submit.md +106 -0
  237. package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
  238. package/docs/src/core/components/functional/translation/translation.md +38 -0
  239. package/docs/src/core/components/functional/value/value.md +47 -0
  240. package/docs/src/core/components/ui/alert/alert.md +186 -0
  241. package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
  242. package/docs/src/core/components/ui/badge/badge.md +181 -0
  243. package/docs/src/core/components/ui/button/button.md +216 -0
  244. package/docs/src/core/components/ui/captcha/captcha.md +56 -0
  245. package/docs/src/core/components/ui/card/card.md +215 -0
  246. package/docs/src/core/components/ui/divider/divider.md +126 -0
  247. package/docs/src/core/components/ui/form/checkbox/checkbox.md +125 -0
  248. package/docs/src/core/components/ui/form/fieldset/fieldset.md +161 -0
  249. package/docs/src/core/components/ui/form/form-actions/form-actions.md +98 -0
  250. package/docs/src/core/components/ui/form/form-layout/form-layout.md +109 -0
  251. package/docs/src/core/components/ui/form/input/input.md +142 -0
  252. package/docs/src/core/components/ui/form/radio/radio.md +78 -0
  253. package/docs/src/core/components/ui/form/select/select.md +86 -0
  254. package/docs/src/core/components/ui/form/switch/switch.md +80 -0
  255. package/docs/src/core/components/ui/form/textarea/textarea.md +82 -0
  256. package/docs/src/core/components/ui/group/group.md +77 -0
  257. package/docs/src/core/components/ui/icon/icon.md +214 -0
  258. package/docs/src/core/components/ui/icon/icons.json +1 -0
  259. package/docs/src/core/components/ui/image/image.md +167 -0
  260. package/docs/src/core/components/ui/link/link.md +81 -0
  261. package/docs/src/core/components/ui/loader/loader.md +87 -0
  262. package/docs/src/core/components/ui/menu/menu.md +370 -0
  263. package/docs/src/core/components/ui/modal/modal.md +211 -0
  264. package/docs/src/core/components/ui/pop/pop.md +216 -0
  265. package/docs/src/core/components/ui/progress/progress.md +109 -0
  266. package/docs/src/core/components/ui/table/table.md +267 -0
  267. package/docs/src/core/components/ui/theme/theme.md +97 -0
  268. package/docs/src/core/components/ui/toast/toast.md +147 -0
  269. package/docs/src/core/components/ui/tooltip/tooltip.md +89 -0
  270. package/docs/src/docs/decorators/ancestor-attribute.md +59 -0
  271. package/docs/src/docs/decorators/auto-subscribe.md +40 -0
  272. package/docs/src/docs/decorators/bind.md +76 -0
  273. package/docs/src/docs/decorators/get.md +160 -0
  274. package/docs/src/docs/decorators/handle.md +119 -0
  275. package/docs/src/docs/decorators/on-assign.md +63 -0
  276. package/docs/src/docs/decorators/patch.md +44 -0
  277. package/docs/src/docs/decorators/post.md +134 -0
  278. package/docs/src/docs/decorators/publish.md +56 -0
  279. package/docs/src/docs/decorators/put.md +51 -0
  280. package/docs/src/docs/decorators/subscribe.md +87 -0
  281. package/docs/src/docs/decorators/wait-for-ancestors.md +76 -0
  282. package/docs/src/docs/directives/sub.md +75 -0
  283. package/docs/src/docs/directives/t.md +73 -0
  284. package/docs/src/docs/getting-started/ai-agents.md +50 -0
  285. package/docs/src/docs/getting-started/components.md +5 -0
  286. package/docs/src/docs/getting-started/create-a-component.md +136 -0
  287. package/docs/src/docs/getting-started/dataFlow.md +87 -0
  288. package/docs/src/docs/getting-started/installation.md +36 -0
  289. package/docs/src/docs/getting-started/my-first-component.md +227 -0
  290. package/docs/src/docs/getting-started/start.md +35 -0
  291. package/docs/src/docs/getting-started/theming.md +253 -0
  292. package/docs/src/docs/misc/api-configuration.md +79 -0
  293. package/docs/src/docs/misc/dataProviderKey.md +168 -0
  294. package/docs/src/docs/misc/docs-mock-api.md +62 -0
  295. package/docs/src/docs/misc/dynamic-path.md +71 -0
  296. package/docs/src/docs/misc/endpoint.md +45 -0
  297. package/docs/src/docs/misc/html-integration.md +14 -0
  298. package/docs/src/docs/search/docs-search.json +10332 -0
  299. package/docs/src/tag-list.json +1 -0
  300. package/docs/src/tsconfig-model.json +23 -0
  301. package/docs/src/tsconfig.json +1359 -0
  302. package/index.html +157 -5
  303. package/package.json +8 -4
  304. package/public/docs-mock-api-sw.js +58 -223
  305. package/public/docs-mock-api-sw.js.map +4 -4
  306. package/public/img/concorde/plane_01.jpg +0 -0
  307. package/public/img/concorde/plane_02.jpg +0 -0
  308. package/public/img/concorde/plane_03.jpg +0 -0
  309. package/public/img/concorde/plane_04.jpg +0 -0
  310. package/public/img/concorde/plane_05.jpg +0 -0
  311. package/public/img/concorde/plane_06.jpg +0 -0
  312. package/public/img/concorde/plane_07.jpg +0 -0
  313. package/public/img/concorde/plane_08.jpg +0 -0
  314. package/public/img/concorde/plane_09.jpg +0 -0
  315. package/public/img/concorde/plane_10.jpg +0 -0
  316. package/public/img/concorde/plane_11.jpg +0 -0
  317. package/public/img/concorde/plane_12.jpg +0 -0
  318. package/public/img/concorde/plane_13.jpg +0 -0
  319. package/public/img/og-concorde.jpg +0 -0
  320. package/public/robots.txt +11 -10
  321. package/scripts/ai-init.mjs +104 -379
  322. package/scripts/ai-init.test.mjs +81 -239
  323. package/scripts/docs-markdown-vite-plugin.ts +43 -0
  324. package/scripts/docs-public-url.mjs +56 -0
  325. package/scripts/docs.htaccess +82 -0
  326. package/scripts/generate-cem.mjs +244 -0
  327. package/scripts/generate-cem.test.mjs +122 -0
  328. package/scripts/generate-crawl-docs.mjs +233 -118
  329. package/scripts/generate-crawl-docs.test.mjs +124 -0
  330. package/scripts/generate-sdui-catalog.mjs +11 -10
  331. package/scripts/post-build-docs.js +37 -50
  332. package/scripts/pre-publish.mjs +2 -1
  333. package/scripts/site-pages.mjs +212 -0
  334. package/scripts/site-pages.test.mjs +116 -0
  335. package/site-pages/about.md +22 -0
  336. package/site-pages/privacy.md +32 -0
  337. package/src/core/components/functional/date/date.md +91 -231
  338. package/src/core/components/functional/fetch/fetch.md +66 -83
  339. package/src/core/components/functional/if/if.md +28 -3
  340. package/src/core/components/functional/jsonata/jsonata.md +42 -37
  341. package/src/core/components/functional/list/list.md +103 -43
  342. package/src/core/components/functional/mix/mix.md +31 -26
  343. package/src/core/components/functional/queue/queue.demo.ts +10 -7
  344. package/src/core/components/functional/queue/queue.md +40 -61
  345. package/src/core/components/functional/router/router.demo.ts +16 -16
  346. package/src/core/components/functional/router/router.md +64 -65
  347. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  348. package/src/core/components/functional/sdui/component-catalog.json +1 -1
  349. package/src/core/components/functional/sdui/example.json +19 -86
  350. package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  351. package/src/core/components/functional/sdui/sdui.md +187 -358
  352. package/src/core/components/functional/states/states.demo.ts +21 -22
  353. package/src/core/components/functional/states/states.md +86 -61
  354. package/src/core/components/functional/states/states.ts +1 -1
  355. package/src/core/components/functional/submit/submit.md +64 -72
  356. package/src/core/components/functional/translation/translation.md +38 -0
  357. package/src/core/components/functional/value/value.md +34 -22
  358. package/src/core/components/ui/alert/alert.md +48 -58
  359. package/src/core/components/ui/badge/badge.md +27 -34
  360. package/src/core/components/ui/button/button.md +139 -106
  361. package/src/core/components/ui/captcha/captcha.md +17 -32
  362. package/src/core/components/ui/card/card.md +6 -6
  363. package/src/core/components/ui/divider/divider.md +8 -11
  364. package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
  365. package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
  366. package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
  367. package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
  368. package/src/core/components/ui/form/input/input.md +95 -95
  369. package/src/core/components/ui/form/radio/radio.md +55 -34
  370. package/src/core/components/ui/form/select/select.md +60 -45
  371. package/src/core/components/ui/form/switch/switch.md +57 -34
  372. package/src/core/components/ui/form/textarea/textarea.md +55 -38
  373. package/src/core/components/ui/group/group.md +35 -33
  374. package/src/core/components/ui/icon/icon.md +4 -4
  375. package/src/core/components/ui/image/image.md +41 -107
  376. package/src/core/components/ui/link/link.md +6 -6
  377. package/src/core/components/ui/loader/loader.md +30 -55
  378. package/src/core/components/ui/menu/menu.md +27 -27
  379. package/src/core/components/ui/modal/modal.md +72 -96
  380. package/src/core/components/ui/pop/pop.md +80 -158
  381. package/src/core/components/ui/progress/progress.md +2 -2
  382. package/src/core/components/ui/table/table.md +91 -255
  383. package/src/core/components/ui/theme/theme.md +11 -36
  384. package/src/core/components/ui/toast/toast.md +48 -117
  385. package/src/core/components/ui/tooltip/tooltip.md +27 -62
  386. package/src/core/decorators/subscriber/bind.ts +9 -14
  387. package/src/core/utils/LocationHandler.spec.ts +80 -0
  388. package/src/core/utils/LocationHandler.ts +5 -9
  389. package/src/docs/components/docs-demo-sources.ts +55 -140
  390. package/src/docs/components/docs-lit-demo.ts +1 -3
  391. package/src/docs/components/docs-source-link.ts +0 -82
  392. package/src/docs/decorators/ancestor-attribute.md +59 -0
  393. package/src/docs/decorators/auto-subscribe.md +40 -0
  394. package/src/docs/decorators/bind.md +76 -0
  395. package/src/docs/decorators/get.md +160 -0
  396. package/src/docs/decorators/handle.md +119 -0
  397. package/src/docs/decorators/on-assign.md +63 -0
  398. package/src/docs/decorators/patch.md +44 -0
  399. package/src/docs/decorators/post.md +134 -0
  400. package/src/docs/decorators/publish.md +56 -0
  401. package/src/docs/decorators/put.md +51 -0
  402. package/src/docs/decorators/subscribe.md +87 -0
  403. package/src/docs/decorators/wait-for-ancestors.md +76 -0
  404. package/src/docs/directives/sub.md +75 -0
  405. package/src/docs/directives/t.md +73 -0
  406. package/src/docs/docs-location.spec.ts +56 -0
  407. package/src/docs/docs-location.ts +133 -32
  408. package/src/docs/docs.ts +1 -2
  409. package/src/docs/example/decorators-demo-bind-demos.ts +83 -135
  410. package/src/docs/example/decorators-demo-geo.ts +30 -19
  411. package/src/docs/example/decorators-demo-post.ts +88 -186
  412. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
  413. package/src/docs/example/decorators-demo.ts +85 -98
  414. package/src/docs/example/docs-api-config-demos.ts +19 -20
  415. package/src/docs/example/docs-flight-demos.ts +147 -0
  416. package/src/docs/example/docs-jsonata-demos.ts +52 -52
  417. package/src/docs/example/docs-list-demos.ts +43 -123
  418. package/src/docs/example/docs-provider-keys.ts +21 -28
  419. package/src/docs/example/docs-queue-demos.ts +37 -77
  420. package/src/docs/example/docs-router-demos.ts +20 -25
  421. package/src/docs/example/docs-submit-demos.ts +48 -48
  422. package/src/docs/example/docs-toggle-demos.ts +4 -3
  423. package/src/docs/getting-started/ai-agents.md +50 -0
  424. package/src/docs/getting-started/components.md +5 -0
  425. package/src/docs/getting-started/create-a-component.md +136 -0
  426. package/src/docs/getting-started/dataFlow.md +87 -0
  427. package/src/docs/getting-started/installation.md +36 -0
  428. package/src/docs/getting-started/my-first-component.md +227 -0
  429. package/src/docs/getting-started/start.md +35 -0
  430. package/src/docs/getting-started/theming.md +253 -0
  431. package/src/docs/header/header.ts +11 -6
  432. package/src/docs/home/catalog.ts +1 -1
  433. package/src/docs/home/home.ts +20 -11
  434. package/src/docs/layout.ts +12 -13
  435. package/src/docs/misc/api-configuration.md +79 -0
  436. package/src/docs/misc/dataProviderKey.md +168 -0
  437. package/src/docs/misc/docs-mock-api.md +62 -0
  438. package/src/docs/misc/dynamic-path.md +71 -0
  439. package/src/docs/misc/endpoint.md +45 -0
  440. package/src/docs/misc/html-integration.md +14 -0
  441. package/src/docs/mock-api/api-config-mock.ts +5 -0
  442. package/src/docs/mock-api/fixtures.ts +0 -278
  443. package/src/docs/mock-api/flights.ts +89 -0
  444. package/src/docs/mock-api/router.ts +3 -4
  445. package/src/docs/mock-api/urls.ts +1 -2
  446. package/src/docs/navigation/navigation.ts +82 -103
  447. package/src/docs/navigation/toc.ts +7 -4
  448. package/src/docs/search/docs-search.json +2804 -5024
  449. package/src/docs/search/markdown-renderer.ts +31 -8
  450. package/src/docs/search/page.ts +9 -6
  451. package/src/docs/search/search.ts +154 -122
  452. package/src/docs/tailwind/css/docs/content.css +4 -5
  453. package/src/tsconfig.json +11 -5
  454. package/src/tsconfig.tsbuildinfo +1 -1
  455. package/vite.config.mts +11 -2
  456. package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
  457. package/ai/AGENTS.md +0 -56
  458. package/ai/cursor/rules/concorde-menu.mdc +0 -15
  459. package/ai/cursor/rules/concorde-scope.mdc +0 -14
  460. package/ai/cursor/rules/concorde-theme.mdc +0 -13
  461. package/ai/cursor/rules/concorde.mdc +0 -66
  462. package/ai/jetbrains/rules/concorde.md +0 -53
  463. package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
  464. package/ai/skills/concorde-imports/SKILL.md +0 -78
  465. package/ai/skills/concorde-menu/SKILL.md +0 -74
  466. package/ai/skills/concorde-scope/SKILL.md +0 -70
  467. package/ai/skills/concorde-theme/SKILL.md +0 -57
  468. package/docs/assets/index-CD4WyL6o.css +0 -1
  469. package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
  470. package/src/docs/_core-concept/overview.md +0 -57
  471. package/src/docs/_core-concept/subscriber.md +0 -75
  472. package/src/docs/_decorators/ancestor-attribute.md +0 -128
  473. package/src/docs/_decorators/auto-subscribe.md +0 -202
  474. package/src/docs/_decorators/bind.md +0 -167
  475. package/src/docs/_decorators/get.md +0 -162
  476. package/src/docs/_decorators/handle.md +0 -175
  477. package/src/docs/_decorators/on-assign.md +0 -390
  478. package/src/docs/_decorators/patch.md +0 -70
  479. package/src/docs/_decorators/post.md +0 -146
  480. package/src/docs/_decorators/publish.md +0 -55
  481. package/src/docs/_decorators/put.md +0 -70
  482. package/src/docs/_decorators/subscribe.md +0 -100
  483. package/src/docs/_decorators/wait-for-ancestors.md +0 -163
  484. package/src/docs/_directives/sub.md +0 -91
  485. package/src/docs/_getting-started/ai-agents.md +0 -76
  486. package/src/docs/_getting-started/concorde-manual-install.md +0 -133
  487. package/src/docs/_getting-started/concorde-outside.md +0 -33
  488. package/src/docs/_getting-started/my-first-subscriber.md +0 -120
  489. package/src/docs/_getting-started/pubsub.md +0 -37
  490. package/src/docs/_misc/formelement-subscriber-removal.md +0 -115
  491. package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
  492. package/src/docs/example/docs-joke-demos.ts +0 -297
  493. /package/{src/docs/_getting-started → docs/docs/getting-started}/components.md +0 -0
  494. /package/{src/docs/_getting-started → docs/docs/getting-started}/theming.md +0 -0
@@ -2,7 +2,6 @@ import { html, LitElement } from "lit";
2
2
  import { customElement } from "lit/decorators.js";
3
3
  import { tailwind } from "../tailwind";
4
4
  import { DOCS_MOCK_API_BASE } from "../mock-api/urls";
5
- import { Endpoint } from "@supersoniks/concorde/core/utils/endpoint";
6
5
  import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
7
6
  import { set } from "@supersoniks/concorde/utils";
8
7
 
@@ -11,54 +10,58 @@ import "../../core/components/functional/jsonata/jsonata";
11
10
  import "../../core/components/functional/list/list";
12
11
  import "../../core/components/functional/value/value";
13
12
  import "../../core/components/ui/form/input/input";
13
+ import "../../core/components/ui/form/select/select";
14
14
 
15
- const missions = new Endpoint<unknown>("api/space-cats");
16
- const topForm = new DataProviderKey<{ top: number | string }>(
17
- "jsonataTopForm",
15
+ const directionForm = new DataProviderKey<{ direction: string }>(
16
+ "jsonataDirectionForm",
18
17
  );
19
18
 
20
- const order = new Endpoint<unknown>("api/market-order");
21
- const taxForm = new DataProviderKey<{ taxPercent: number | string }>(
22
- "jsonataTaxForm",
19
+ type FuelPhase = { phase: string; kg: number };
20
+ const fuelPlan = new DataProviderKey<FuelPhase[]>("jsonataFuelPlan");
21
+ const reserveForm = new DataProviderKey<{ reservePercent: number | string }>(
22
+ "jsonataReserveForm",
23
23
  );
24
24
 
25
- /** Cas 1 — groupby + top N (recalcul via form, sans refetch). */
25
+ /** Group by + sort: flights per status, filtered by a form variable. */
26
26
  @customElement("docs-jsonata-space-cats-demo")
27
27
  export class DocsJsonataSpaceCatsDemo extends LitElement {
28
28
  static styles = [tailwind];
29
29
 
30
30
  connectedCallback(): void {
31
31
  super.connectedCallback();
32
- set(topForm, { top: 3 });
32
+ set(directionForm, { direction: "departures" });
33
33
  }
34
34
 
35
35
  render() {
36
36
  return html`
37
37
  <div serviceURL=${DOCS_MOCK_API_BASE} class="flex flex-col gap-3">
38
- <div formDataProvider=${topForm.path} class="max-w-xs">
39
- <sonic-input name="top" type="number" label="Top N" value="3"></sonic-input>
38
+ <div formDataProvider=${directionForm.path} class="max-w-xs">
39
+ <sonic-select name="direction" label="Board" value="departures">
40
+ <option value="departures">Departures</option>
41
+ <option value="arrivals">Arrivals</option>
42
+ </sonic-select>
40
43
  </div>
41
44
 
42
45
  <sonic-fetch
43
- dataProvider=${missions.path}
44
- endPoint=${missions.path}
45
- key="data"
46
+ dataProvider="jsonataFlights"
47
+ endPoint="flights"
48
+ key="flights"
46
49
  ></sonic-fetch>
47
50
 
48
51
  <sonic-jsonata
49
- inputProvider=${missions.path}
50
- outputProvider="spaceCatLeaderboard"
51
- formDataProvider=${topForm.path}
52
- expression='$input{name: $sum(points)} ~> $each(function($v,$k){{"name":$k,"points":$v}}) ^(>points)[[0..$number($top)-1]]'
52
+ inputProvider="jsonataFlights"
53
+ outputProvider="jsonataFlightsByStatus"
54
+ formDataProvider=${directionForm.path}
55
+ expression='$append([], ($input[direction=$direction]){status: $count(code)} ~> $each(function($v, $k) {{"status": $k, "flights": $v}}) ^(>flights))'
53
56
  ></sonic-jsonata>
54
57
 
55
58
  <sonic-list
56
- dataProvider="spaceCatLeaderboard"
57
- class="flex flex-col gap-1"
58
- .items=${({ name, points }: { name: string; points: number }) =>
59
+ dataProvider="jsonataFlightsByStatus"
60
+ class="flex max-w-xs flex-col gap-1"
61
+ .items=${({ status, flights }: { status: string; flights: number }) =>
59
62
  html`<div class="flex gap-3 text-sm">
60
- <span class="font-medium">${name}</span>
61
- <span class="ml-auto tabular-nums text-neutral-500">${points}</span>
63
+ <span>${status}</span>
64
+ <span class="ml-auto tabular-nums">${flights}</span>
62
65
  </div>`}
63
66
  ></sonic-list>
64
67
  </div>
@@ -66,60 +69,57 @@ export class DocsJsonataSpaceCatsDemo extends LitElement {
66
69
  }
67
70
  }
68
71
 
69
- /** Cas 2 — totaux d’un tableau (somme + taxe via form). */
72
+ /** Totals: trip fuel, reserve and block fuel from a table of flight phases. */
70
73
  @customElement("docs-jsonata-table-totals-demo")
71
74
  export class DocsJsonataTableTotalsDemo extends LitElement {
72
75
  static styles = [tailwind];
73
76
 
74
77
  connectedCallback(): void {
75
78
  super.connectedCallback();
76
- set(taxForm, { taxPercent: 10 });
79
+ set(fuelPlan, [
80
+ { phase: "Taxi", kg: 1200 },
81
+ { phase: "Climb", kg: 21500 },
82
+ { phase: "Cruise", kg: 58300 },
83
+ { phase: "Descent", kg: 3600 },
84
+ ]);
85
+ set(reserveForm, { reservePercent: 5 });
77
86
  }
78
87
 
79
88
  render() {
80
89
  return html`
81
- <div serviceURL=${DOCS_MOCK_API_BASE} class="flex flex-col gap-3">
82
- <div formDataProvider=${taxForm.path} class="max-w-xs">
90
+ <div class="flex flex-col gap-3">
91
+ <div formDataProvider=${reserveForm.path} class="max-w-xs">
83
92
  <sonic-input
84
- name="taxPercent"
93
+ name="reservePercent"
85
94
  type="number"
86
- label="Tax %"
87
- value="10"
95
+ label="Reserve (%)"
96
+ value="5"
88
97
  ></sonic-input>
89
98
  </div>
90
99
 
91
- <sonic-fetch
92
- dataProvider=${order.path}
93
- endPoint=${order.path}
94
- key="data"
95
- ></sonic-fetch>
96
-
97
100
  <sonic-jsonata
98
- inputProvider=${order.path}
99
- outputProvider="marketOrderTotals"
100
- formDataProvider=${taxForm.path}
101
+ inputProvider=${fuelPlan.path}
102
+ outputProvider="jsonataFuelTotals"
103
+ formDataProvider=${reserveForm.path}
101
104
  expression='(
102
- $sub := $sum($input.(qty * unitPrice));
103
- {
104
- "subtotal": $round($sub, 2),
105
- "tax": $round($sub * $number($taxPercent) / 100, 2),
106
- "grandTotal": $round($sub * (1 + $number($taxPercent) / 100), 2)
107
- }
105
+ $trip := $sum($input.kg);
106
+ $reserve := $round($trip * $number($reservePercent) / 100);
107
+ { "trip": $trip, "reserve": $reserve, "block": $trip + $reserve }
108
108
  )'
109
109
  ></sonic-jsonata>
110
110
 
111
- <div dataProvider="marketOrderTotals" class="flex gap-6 text-sm">
111
+ <div dataProvider="jsonataFuelTotals" class="flex gap-6 text-sm">
112
112
  <div>
113
- <div class="text-neutral-400">Subtotal</div>
114
- <sonic-value key="subtotal"></sonic-value>
113
+ <div class="text-neutral-400">Trip fuel (kg)</div>
114
+ <sonic-value key="trip"></sonic-value>
115
115
  </div>
116
116
  <div>
117
- <div class="text-neutral-400">Tax</div>
118
- <sonic-value key="tax"></sonic-value>
117
+ <div class="text-neutral-400">Reserve (kg)</div>
118
+ <sonic-value key="reserve"></sonic-value>
119
119
  </div>
120
120
  <div>
121
- <div class="text-neutral-400">Total</div>
122
- <span class="font-semibold"><sonic-value key="grandTotal"></sonic-value></span>
121
+ <div class="text-neutral-400">Block fuel (kg)</div>
122
+ <span class="font-semibold"><sonic-value key="block"></sonic-value></span>
123
123
  </div>
124
124
  </div>
125
125
  </div>
@@ -1,115 +1,36 @@
1
- import { html, LitElement, nothing } from "lit";
1
+ import { html, LitElement } from "lit";
2
2
  import { customElement } from "lit/decorators.js";
3
3
  import { tailwind } from "../tailwind";
4
+ import type { DocsFlight } from "../mock-api/flights";
5
+ import type { ListItemMetadata } from "../../core/components/functional/list/list";
4
6
 
5
7
  import "../../core/components/functional/list/list";
6
- import "../../core/components/ui/image/image";
7
-
8
- const GRID_PROPS = [
9
- { id: "1" },
10
- { id: "2" },
11
- { id: "3" },
12
- { id: "4" },
13
- { id: "5" },
14
- { id: "6" },
15
- { id: "7" },
16
- { id: "8" },
17
- { id: "9" },
18
- ];
19
-
20
- const TEMPLATE_KEY_PROPS = [
21
- { id: "1", default: "The first template with no data-value is used" },
22
- { id: "2", default: "The second template with no data-value is used" },
23
- { id: "3", default: "Back to the first template with no data-value" },
24
- { id: "4", tpl: "custom-tpl-danger" },
25
- { id: "5", tpl: "custom-tpl-info" },
26
- { id: "6", tpl: "custom-tpl-success" },
27
- { id: "7", tpl: "Non-valid tpl name, Back to the first template with no data-value" },
28
- ];
29
-
30
- const TPL_PARTS: Record<string, (item: { id: string }) => ReturnType<typeof html>> = {
31
- "custom-tpl-danger": (item) => html`
32
- <div class="rounded border border-danger p-2 text-danger">
33
- ${item.id} :
34
- data-value : <b>custom-tpl-danger</b>
35
- </div>
36
- `,
37
- "custom-tpl-info": (item) => html`
38
- <div class="rounded border border-info p-2 text-info">
39
- ${item.id} :
40
- data-value : <b>custom-tpl-info</b>
41
- </div>
42
- `,
43
- "custom-tpl-success": (item) => html`
44
- <div class="rounded border border-success p-2 text-success">
45
- ${item.id} :
46
- data-value : <b>custom-tpl-success</b>
47
- </div>
48
- `,
49
- };
50
8
 
51
9
  @customElement("docs-list-alternate-demo")
52
10
  export class DocsListAlternateDemo extends LitElement {
53
11
  static styles = [tailwind];
54
12
 
55
- private items = (item: { id: string }, meta: { even?: boolean }) =>
56
- meta.even
57
- ? html`<div class="bg-neutral-100 p-3 text-center">
58
- ${item.id}
59
- <div class="text-xs">1st template</div>
60
- </div>`
61
- : html`<div class="bg-neutral-100 p-3 text-center text-info">
62
- ${item.id}
63
- <div class="text-xs">2nd template</div>
64
- </div>`;
13
+ private items = (flight: DocsFlight, metadata: ListItemMetadata) => html`
14
+ <div
15
+ class="grid grid-cols-[3.5rem_4.5rem_1fr_3rem] gap-3 px-3 py-2 text-sm ${metadata.even
16
+ ? "bg-neutral-100"
17
+ : ""}"
18
+ >
19
+ <span class="font-mono">${flight.time}</span>
20
+ <span class="font-mono">${flight.code}</span>
21
+ <span>${flight.city} <span class="text-neutral-500">(${flight.airport})</span></span>
22
+ <span class="font-mono">${flight.gate}</span>
23
+ </div>
24
+ `;
65
25
 
66
26
  render() {
67
27
  return html`
68
28
  <sonic-list
69
- dataProvider="listTemplateExample"
70
- class="grid grid-cols-3 gap-4"
71
- .props=${GRID_PROPS}
29
+ fetch
30
+ serviceURL="/docs-mock-api"
31
+ dataProvider="flights?direction=departures"
32
+ key="flights"
72
33
  .items=${this.items}
73
- debug
74
- ></sonic-list>
75
- `;
76
- }
77
- }
78
-
79
- @customElement("docs-list-template-key-demo")
80
- export class DocsListTemplateKeyDemo extends LitElement {
81
- static styles = [tailwind];
82
-
83
- render() {
84
- let counter = -1;
85
- const items = (item: (typeof TEMPLATE_KEY_PROPS)[number]) => {
86
- const tplName = item.tpl;
87
- const part = tplName ? TPL_PARTS[tplName] : undefined;
88
- if (part) {
89
- counter = -1;
90
- return part(item);
91
- }
92
- counter++;
93
- return counter % 2 === 0
94
- ? html`<div class="rounded border p-2 text-neutral-900">
95
- ${item.id} :
96
- <b>First</b> template with no <b>data-value</b> attribute
97
- </div>`
98
- : html`<div class="rounded border p-2 text-neutral-400">
99
- ${item.id} :
100
- <b>Second</b> template with no <b>data-value</b> attribute <br />
101
- Used when it <b>follows</b> another row with <b>no tpl</b> in props
102
- </div>`;
103
- };
104
-
105
- return html`
106
- <sonic-list
107
- templateKey="tpl"
108
- class="grid gap-3"
109
- dataProvider="TemplateKeyExample"
110
- .props=${TEMPLATE_KEY_PROPS}
111
- .items=${items}
112
- debug
113
34
  ></sonic-list>
114
35
  `;
115
36
  }
@@ -117,27 +38,35 @@ export class DocsListTemplateKeyDemo extends LitElement {
117
38
 
118
39
  @customElement("docs-list-separator-demo")
119
40
  export class DocsListSeparatorDemo extends LitElement {
120
- private items = (item: { id: string }) => html`${item.id}`;
121
- private separator = () => html` 🤜 `;
41
+ static styles = [tailwind];
42
+
43
+ private items = (flight: DocsFlight) =>
44
+ html`<span class="font-mono">${flight.airport}</span>`;
45
+ private separator = () => html`<span class="text-neutral-400"> · </span>`;
122
46
  private noItems = () =>
123
- html`<p class="text-neutral-500">No items (noItems callback)</p>`;
47
+ html`<p class="text-neutral-500">No flights match this status.</p>`;
124
48
 
125
49
  render() {
126
50
  return html`
51
+ <p class="mb-2 text-sm text-neutral-500">Departures</p>
127
52
  <sonic-list
128
- dataProvider="ListSeparatorDemo"
129
- .props=${[{ id: "1" }, { id: "2" }, { id: "3" }]}
53
+ fetch
54
+ serviceURL="/docs-mock-api"
55
+ dataProvider="docsListSeparatorDemo"
56
+ endPoint="flights?direction=departures"
57
+ key="flights"
130
58
  .items=${this.items}
131
59
  .separator=${this.separator}
132
- debug
133
60
  ></sonic-list>
134
- <hr class="my-6 border-neutral-200" />
61
+ <p class="mb-2 mt-6 text-sm text-neutral-500">Diverted</p>
135
62
  <sonic-list
136
- dataProvider="ListEmptyDemo"
137
- .props=${[]}
63
+ fetch
64
+ serviceURL="/docs-mock-api"
65
+ dataProvider="docsListEmptyDemo"
66
+ endPoint="flights?status=diverted"
67
+ key="flights"
138
68
  .items=${this.items}
139
69
  .noItems=${this.noItems}
140
- debug
141
70
  ></sonic-list>
142
71
  `;
143
72
  }
@@ -147,30 +76,21 @@ export class DocsListSeparatorDemo extends LitElement {
147
76
  export class DocsListExtractValuesDemo extends LitElement {
148
77
  static styles = [tailwind];
149
78
 
150
- private items = (item: { key: string; value: string }) => html`
151
- <div class="flex items-center gap-3">
79
+ private items = (item: { key: string; value: string | number }) => html`
80
+ <div class="flex gap-3 text-sm">
152
81
  <span class="w-24 font-bold">${item.key}</span>
153
- <span>${item.value}</span>
154
- ${item.key === "avatar"
155
- ? html`<sonic-image
156
- src=${item.value}
157
- rounded="full"
158
- ratio="1/1"
159
- class="w-20 block"
160
- ></sonic-image>`
161
- : nothing}
82
+ <span class="font-mono">${item.value}</span>
162
83
  </div>
163
84
  `;
164
85
 
165
86
  render() {
166
87
  return html`
167
88
  <sonic-list
168
- debug
169
89
  fetch
170
90
  serviceURL="/docs-mock-api"
171
- dataProvider="list-extract-values-test"
172
- endPoint="api/users/2"
173
- key="data"
91
+ dataProvider="docsListExtractValuesDemo"
92
+ endPoint="flights?limit=1"
93
+ key="flights.0"
174
94
  extractValues
175
95
  .items=${this.items}
176
96
  ></sonic-list>
@@ -86,25 +86,19 @@ export const docsApiConfWordingVersionKey = new DataProviderKey<number>(
86
86
  "docsApiConfWordingVersion",
87
87
  );
88
88
 
89
- /** Joke / queue / toggle filters */
90
- export const docsJokeInputFilterKey = new DataProviderKey<{ contains?: string }>(
91
- "input-filter",
89
+ /** Flight board filters (input / select / radio / switch demos) */
90
+ export const docsFlightSearchFilterKey = new DataProviderKey<{ q?: string }>(
91
+ "flightSearchFilter",
92
92
  );
93
- export const docsJokeSelectFilterKey = new DataProviderKey<{ lang?: string }>(
94
- "select-filter",
95
- );
96
- export const docsJokeCheckboxFilterKey = new DataProviderKey<{
97
- blacklistFlags?: string;
98
- }>("jokeFilter");
99
- export const docsJokeRadioFilterKey = new DataProviderKey<{
100
- blacklistFlags?: string;
101
- }>("jokeFilterRadio");
102
- export const docsJokeSwitchFilterKey = new DataProviderKey<{
103
- blacklistFlags?: string;
104
- }>("jokeFilterswitch");
105
- export const docsQueueUsersFilterKey = new DataProviderKey<{ q?: string }>(
106
- "filter",
93
+ export const docsFlightDirectionFilterKey = new DataProviderKey<{
94
+ direction?: string;
95
+ }>("flightDirectionFilter");
96
+ export const docsFlightStatusRadioKey = new DataProviderKey<{ status?: string }>(
97
+ "flightStatusRadioFilter",
107
98
  );
99
+ export const docsFlightDelayedSwitchKey = new DataProviderKey<{
100
+ status?: string | null;
101
+ }>("flightDelayedSwitchFilter");
108
102
  export const docsToggleVisibilityKey = new DataProviderKey<{ togglePlan?: string }>(
109
103
  "visibilitySettings",
110
104
  );
@@ -186,8 +180,8 @@ export const demoUsersAltSettingsKey = new DataProviderKey<
186
180
  >("demoUsersAltSettings");
187
181
 
188
182
  const defaultRegisterForm = (): RegisterForm => ({
189
- email: "eve.holt@reqres.in",
190
- password: "pistol",
183
+ email: "ada.lindqvist@example.com",
184
+ password: "concorde",
191
185
  });
192
186
 
193
187
  export function initDocsProviderDefaults(): void {
@@ -196,8 +190,8 @@ export function initDocsProviderDefaults(): void {
196
190
  set(submitNestedFormKey, defaultRegisterForm());
197
191
  set(submitFormDataFormKey, defaultRegisterForm());
198
192
  set(submitGetFormKey, {
199
- email: "demo@example.com",
200
- password: "secret",
193
+ email: "leo.marchand@example.com",
194
+ password: "mach2",
201
195
  });
202
196
  set(submitNativeFormKey, defaultRegisterForm());
203
197
  set(submitEventFormKey, defaultRegisterForm());
@@ -222,9 +216,8 @@ export function initDocsProviderDefaults(): void {
222
216
  });
223
217
  set(docsApiConfWordingVersionKey, 1);
224
218
 
225
- set(docsJokeInputFilterKey, { contains: "chien" });
226
- set(docsJokeSelectFilterKey, { lang: "fr" });
227
- set(docsQueueUsersFilterKey, { q: "" });
219
+ set(docsFlightSearchFilterKey, { q: "" });
220
+ set(docsFlightDirectionFilterKey, { direction: "departures" });
228
221
 
229
222
  set(docsToggleVisibilityKey, { togglePlan: "true" });
230
223
  set(docsToggleLoaderFormKey, { toggleLoader: "" });
@@ -265,13 +258,13 @@ export function initDocsProviderDefaults(): void {
265
258
  user: { name: "Initial User" },
266
259
  count: 0,
267
260
  });
268
- set(demoUserKey, { name: "Demo User", email: "demo@example.com" });
261
+ set(demoUserKey, { name: "Ada Lindqvist", email: "ada.lindqvist@example.com" });
269
262
  set(demoSettingsKey, { theme: "light", language: "en" });
270
263
  set(demoUserSettingsKey, { theme: "light", language: "en" });
271
264
  set(publishDemoKey, { email: "", message: "" });
272
- set(waitAncestorDemoKey, { message: "Context from ancestor" });
273
- set(autoValue1Key, 10);
274
- set(autoValue2Key, 20);
265
+ set(waitAncestorDemoKey, { message: "Gate B12" });
266
+ set(autoValue1Key, 92);
267
+ set(autoValue2Key, 9);
275
268
  set(bindReflectDemoKey, { count: 0 });
276
269
 
277
270
  set(demoUsersKey, [
@@ -1,113 +1,73 @@
1
1
  import { html, LitElement } from "lit";
2
2
  import { customElement } from "lit/decorators.js";
3
- import {
4
- DOCS_MOCK_GEO_SERVICE,
5
- DOCS_MOCK_REQRES_SERVICE,
6
- } from "../mock-api/urls";
7
- import { docsQueueUsersFilterKey } from "./docs-provider-keys";
3
+ import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
4
+ import { DOCS_MOCK_API_BASE } from "../mock-api/urls";
5
+ import type { DocsFlight } from "../mock-api/flights";
8
6
  import { tailwind } from "../tailwind";
9
7
 
10
8
  import "../../core/components/functional/queue/queue";
11
- import "../../core/components/ui/image/image";
9
+ import "../../core/components/ui/badge/badge";
12
10
  import "../../core/components/ui/form/input/input";
13
11
 
14
- type CommuneRow = { nom: string; code?: string };
12
+ const flightFilter = new DataProviderKey<{ q?: string }>("queueFlightFilter");
15
13
 
16
- type UserRow = {
17
- first_name: string;
18
- last_name: string;
19
- email: string;
20
- avatar: string;
21
- };
22
-
23
- const userRow = ({ first_name, last_name, email, avatar }: UserRow) =>
24
- html`<div class="flex items-center gap-3 rounded-md p-2 hover:bg-neutral-50">
25
- <sonic-image
26
- src=${avatar}
27
- rounded="md"
28
- ratio="1/1"
29
- class="w-12 block"
30
- ></sonic-image>
31
- <div>
32
- <div>${first_name} <span class="font-bold">${last_name}</span></div>
33
- <div class="text-sm text-neutral-500">${email}</div>
34
- </div>
14
+ const flightRow = ({ time, code, city, airport, gate, status }: DocsFlight) =>
15
+ html`<div
16
+ class="grid grid-cols-[3.5rem_4.5rem_1fr_3rem_auto] items-center gap-3 border-0 border-b border-dotted border-neutral-300 py-2 text-sm"
17
+ >
18
+ <span class="font-mono">${time}</span>
19
+ <span class="font-mono">${code}</span>
20
+ <span>${city} <span class="text-neutral-500">(${airport})</span></span>
21
+ <span class="font-mono text-neutral-500">${gate}</span>
22
+ <sonic-badge size="xs">${status}</sonic-badge>
35
23
  </div>`;
36
24
 
37
- /** Communes — one batch (`limit` only, no `$offset` in the expression). */
25
+ /** Lazy load: batches of 4 departures, the next one loads on scroll. */
38
26
  @customElement("docs-queue-geo-demo")
39
27
  export class DocsQueueGeoDemo extends LitElement {
40
- private items = (item: CommuneRow) =>
41
- html`<div class="rounded bg-neutral-100 p-2 text-sm">
42
- <div class="font-medium">${item.nom}</div>
43
- ${item.code
44
- ? html`<div class="text-neutral-500">${item.code}</div>`
45
- : null}
46
- </div>`;
28
+ static styles = [tailwind];
47
29
 
48
30
  render() {
49
31
  return html`
50
32
  <sonic-queue
51
- class="grid grid-cols-3 gap-3"
52
- dataProviderExpression="communes?limit=$limit"
53
- limit="6"
54
- serviceURL=${DOCS_MOCK_GEO_SERVICE}
55
- .items=${this.items}
56
- debug
33
+ serviceURL=${DOCS_MOCK_API_BASE}
34
+ dataProviderExpression="flights?offset=$offset&limit=$limit&direction=departures"
35
+ key="flights"
36
+ limit="4"
37
+ class="block max-h-48 overflow-y-auto"
38
+ .items=${flightRow}
57
39
  ></sonic-queue>
58
40
  `;
59
41
  }
60
42
  }
61
43
 
62
- /**
63
- * Users — lazy load + search (`q`), aligned with create-concorde-ts-starter demo-queue.
64
- * Mock: `filterDocsUsers` + `paginateUsers` in `src/docs/mock-api/`.
65
- */
44
+ /** Filter: the `q` field is added to every request; a change reloads from offset 0. */
66
45
  @customElement("docs-queue-users-demo")
67
46
  export class DocsQueueUsersDemo extends LitElement {
68
47
  static styles = [tailwind];
69
48
 
70
- private items = userRow;
71
-
72
- private separator = () => html`
73
- <div class="my-1 border-t border-dashed border-neutral-200"></div>
74
- `;
75
-
76
49
  private noItems = () => html`
77
- <p class="p-4 text-center text-sm italic text-neutral-500">
78
- No users — try another search (e.g. <code>zzz</code>)
79
- </p>
50
+ <p class="p-4 text-center text-sm text-neutral-500">No flight found.</p>
80
51
  `;
81
52
 
82
53
  render() {
83
54
  return html`
84
- <div formDataProvider=${docsQueueUsersFilterKey.path} class="mb-3 max-w-md">
85
- <sonic-input
86
- name="q"
87
- type="search"
88
- label="Search"
89
- placeholder="First name, last name, or email"
90
- size="sm"
91
- ></sonic-input>
92
- </div>
93
- <p class="mb-3 text-sm text-neutral-500">
94
- Typing updates <code>?q=…</code> on each request. Scroll inside the box
95
- to load the next batch (<code>offset</code> += <code>limit</code>).
96
- </p>
55
+ <sonic-input
56
+ formDataProvider=${flightFilter.path}
57
+ name="q"
58
+ type="search"
59
+ label="Search flights"
60
+ placeholder="City, airport or flight number"
61
+ ></sonic-input>
97
62
  <sonic-queue
98
- lazyload
99
- dataProviderExpression="api/users?offset=$offset&limit=$limit"
100
- dataFilterProvider="filter"
63
+ serviceURL=${DOCS_MOCK_API_BASE}
64
+ dataProviderExpression="flights?offset=$offset&limit=$limit"
65
+ dataFilterProvider=${flightFilter.path}
66
+ key="flights"
101
67
  limit="4"
102
- offset="0"
103
- idKey="id"
104
- serviceURL=${DOCS_MOCK_REQRES_SERVICE}
105
- key="data"
106
- class="grid max-h-96 max-w-md gap-2 overflow-y-auto"
107
- .items=${this.items}
108
- .separator=${this.separator}
68
+ class="mt-4 block max-h-48 overflow-y-auto"
69
+ .items=${flightRow}
109
70
  .noItems=${this.noItems}
110
- debug
111
71
  ></sonic-queue>
112
72
  `;
113
73
  }