@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
package/index.html CHANGED
@@ -1,10 +1,109 @@
1
1
  <!doctype html>
2
- <html lang="fr">
2
+ <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <link rel="icon" type="image/svg+xml" href="./svg/favicon.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>Concorde - A supersonic design system</title>
7
+ <title>Concorde by Supersoniks — Web components for every stack</title>
8
+ <meta
9
+ name="description"
10
+ content="Concorde is the Supersoniks Lit web-components library: UI, data binding, forms and themes that work in React, Vue, PHP or plain HTML. Docs, npm package @supersoniks/concorde, and llms.txt for agents."
11
+ />
12
+ <meta
13
+ name="keywords"
14
+ content="Concorde, Supersoniks, web components, Lit, design system, @supersoniks/concorde, DataProvider, sonic-button"
15
+ />
16
+ <link rel="canonical" href="https://concorde.supersoniks.org/" />
17
+ <link rel="alternate" type="text/markdown" href="/index.md" title="Markdown" />
18
+ <link rel="alternate" type="text/plain" href="/llms.txt" title="llms.txt" />
19
+ <meta property="og:type" content="website" />
20
+ <meta property="og:site_name" content="Concorde by Supersoniks" />
21
+ <meta property="og:title" content="Concorde by Supersoniks — Web components for every stack" />
22
+ <meta property="og:description" content="Open-source Lit web components framework: UI, data binding, forms and themes for React, Vue, PHP or plain HTML." />
23
+ <meta property="og:url" content="https://concorde.supersoniks.org/" />
24
+ <meta property="og:image" content="https://concorde.supersoniks.org/img/og-concorde.jpg" />
25
+ <meta property="og:image:width" content="1200" />
26
+ <meta property="og:image:height" content="630" />
27
+ <meta property="og:image:alt" content="Five Concorde aircraft parked nose to nose, black and white photo" />
28
+ <meta name="twitter:card" content="summary_large_image" />
29
+ <script type="application/ld+json">
30
+ {
31
+ "@context": "https://schema.org",
32
+ "@graph": [
33
+ {
34
+ "@type": "WebSite",
35
+ "@id": "https://concorde.supersoniks.org/#website",
36
+ "name": "Concorde",
37
+ "alternateName": "Concorde by Supersoniks",
38
+ "url": "https://concorde.supersoniks.org/",
39
+ "inLanguage": "en",
40
+ "publisher": {
41
+ "@id": "https://supersoniks.com/#organization"
42
+ }
43
+ },
44
+ {
45
+ "@type": "SoftwareApplication",
46
+ "@id": "https://concorde.supersoniks.org/#software",
47
+ "name": "Concorde",
48
+ "alternateName": "@supersoniks/concorde",
49
+ "description": "Concorde is an open-source web components framework built on Lit: UI components, data binding, forms, routing helpers and theming that work in React, Vue, PHP or plain HTML.",
50
+ "url": "https://concorde.supersoniks.org/",
51
+ "applicationCategory": "DeveloperApplication",
52
+ "applicationSubCategory": "Web components framework",
53
+ "operatingSystem": "Any (web browser)",
54
+ "programmingLanguage": "TypeScript",
55
+ "license": "https://opensource.org/licenses/MIT",
56
+ "downloadUrl": "https://www.npmjs.com/package/@supersoniks/concorde",
57
+ "softwareHelp": "https://concorde.supersoniks.org/docs/getting-started/start",
58
+ "image": "https://concorde.supersoniks.org/img/og-concorde.jpg",
59
+ "offers": {
60
+ "@type": "Offer",
61
+ "price": "0",
62
+ "priceCurrency": "EUR"
63
+ },
64
+ "author": {
65
+ "@id": "https://supersoniks.com/#organization"
66
+ },
67
+ "publisher": {
68
+ "@id": "https://supersoniks.com/#organization"
69
+ },
70
+ "sameAs": [
71
+ "https://www.npmjs.com/package/@supersoniks/concorde"
72
+ ]
73
+ },
74
+ {
75
+ "@type": "Organization",
76
+ "@id": "https://supersoniks.com/#organization",
77
+ "name": "Supersoniks",
78
+ "legalName": "SUPERSONIKS",
79
+ "url": "https://supersoniks.com/",
80
+ "telephone": "+33 2 47 68 93 25",
81
+ "address": {
82
+ "@type": "PostalAddress",
83
+ "streetAddress": "22 rue du Docteur Bretonneau",
84
+ "postalCode": "37000",
85
+ "addressLocality": "Tours",
86
+ "addressCountry": "FR"
87
+ },
88
+ "contactPoint": {
89
+ "@type": "ContactPoint",
90
+ "contactType": "customer service",
91
+ "telephone": "+33 2 47 68 93 25",
92
+ "url": "https://supersoniks.com/un-projet",
93
+ "availableLanguage": [
94
+ "fr",
95
+ "en"
96
+ ]
97
+ },
98
+ "sameAs": [
99
+ "https://www.linkedin.com/company/supersoniks/",
100
+ "https://www.facebook.com/supersoniks",
101
+ "https://www.instagram.com/agencesupersoniks/"
102
+ ]
103
+ }
104
+ ]
105
+ }
106
+ </script>
8
107
  <link rel="preconnect" href="https://fonts.googleapis.com" />
9
108
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
109
  <link
@@ -17,16 +116,69 @@
17
116
  <script src="https://cdn.jsdelivr.net/npm/marked@13.0.3"></script>
18
117
  <script type="module" src="./src/docs.ts"></script>
19
118
  <link href="./src/docs/tailwind/css/docs.css" rel="stylesheet" />
119
+ <style>
120
+ /*
121
+ Crawler/agent fallback stays in the HTML source (Is Agentic raw-text check)
122
+ but must not take clicks or layout away from the interactive homepage.
123
+ */
124
+ #docs-agent-content {
125
+ display: none !important;
126
+ }
127
+ </style>
20
128
  </head>
21
129
  <body class="px-4 sm:px-6 lg:px-10 2xl:px-20">
130
+ <!--
131
+ Static homepage copy for agents and no-JS crawlers (Is Agentic / Ora).
132
+ Hidden after JS boot; must stay in raw HTML with a clear H1 and 500+ chars.
133
+ -->
134
+ <section id="docs-agent-content" aria-hidden="true">
135
+ <h1>Concorde by Supersoniks</h1>
136
+ <p>
137
+ Concorde is an open-source Lit web-components library from Supersoniks.
138
+ It provides UI primitives, data binding, forms, routing helpers and
139
+ theming that run the same way in React, Vue, PHP templates or a static
140
+ HTML page. Install the npm package <code>@supersoniks/concorde</code>
141
+ and load components as custom elements.
142
+ </p>
143
+ <h2>Developer resources</h2>
144
+ <p>
145
+ Interactive documentation lives on this site. Machine-readable entry
146
+ points: <a href="/llms.txt">llms.txt</a>,
147
+ <a href="/llms-full.txt">llms-full.txt</a>,
148
+ <a href="/sitemap.xml">sitemap.xml</a>, and the
149
+ <a href="/docs/index.html">documentation index</a>. Prefer
150
+ <code>Accept: text/markdown</code> on doc pathnames (and this homepage)
151
+ to receive Markdown, or open <a href="/index.md">index.md</a>.
152
+ </p>
153
+ <h2>Getting started</h2>
154
+ <p>
155
+ Scaffold a Vite project with Concorde, Tailwind and agent skills, or
156
+ import individual components from
157
+ <code>@supersoniks/concorde</code>. Start with
158
+ <a href="/docs/getting-started/start">/docs/getting-started/start</a>,
159
+ data flow, components index, and AI agents. Topic hubs under
160
+ <code>/hubs/</code> cover decorators, remote data and form components.
161
+ </p>
162
+ <h2>What you can build</h2>
163
+ <p>
164
+ Use sonic-* custom elements for buttons, forms, lists, queues, SDUI
165
+ trees and more. Decorators such as @get, @post, @subscribe and @bind
166
+ wire components to a shared DataProvider without framework lock-in.
167
+ Concorde is MIT-licensed and maintained by Supersoniks for production
168
+ stacks that need one component set across many hosts.
169
+ <a href="/about">About</a> · <a href="/privacy">Privacy</a>
170
+ </p>
171
+ </section>
172
+
22
173
  <sonic-theme
23
174
  customIconLibraryPath="https://cdn.supersoniks.com/concorde/icons/fontawesome/v6/$prefix/$name.svg"
24
175
  customIconDefaultPrefix="regular"
25
- markdownsURL="src"
176
+ markdownsURL=""
26
177
  >
27
178
  <sonic-docs-header></sonic-docs-header>
28
179
  <sonic-router>
29
- <template data-route="^((?!.md).)*$">
180
+ <!-- Home only at `/` (doc pages use pathname `/docs/...` or `/core/...`). -->
181
+ <template data-route="^/?$">
30
182
  <docs-home></docs-home>
31
183
  </template>
32
184
  </sonic-router>
@@ -40,7 +192,7 @@
40
192
  ></docs-navigation>
41
193
  </aside>
42
194
  <main class="min-w-0 min-h-[100svh] pt-3">
43
- <div class="max-w-prose mx-auto xl:mx-0 justify-self-center">
195
+ <div class="max-w-prose mx-auto xl:mx-0">
44
196
  <docs-page
45
197
  noShadowDom
46
198
  class="prose max-w-none block py-8 prose-li:my-[.2em] leading-[1.5] lg:leading-[1.5] prose-h1:text-[2.4em] sm:prose-h1:text-[3.25em] prose-code:before:content-none prose-code:after:content-none prose-pre:font-mono"
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@supersoniks/concorde",
3
- "version": "5.1.1",
3
+ "version": "5.1.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "",
7
+ "customElements": "custom-elements.json",
7
8
  "scripts": {
8
9
  "dev": "node scripts/create-search.js && LIB_NAME=docs vite --host 0.0.0.0 --port 3000",
9
10
  "prebuild": "node scripts/pre-build.mjs",
@@ -11,8 +12,9 @@
11
12
  "build": "tsc --build src/tsconfig.json && vite build",
12
13
  "build-docs": "LIB_NAME=docs vite build",
13
14
  "postbuild-docs": "node scripts/post-build-docs.js",
14
- "prepublishOnly": "node scripts/pre-publish.mjs",
15
+ "prepublishOnly": "node scripts/generate-cem.mjs && node scripts/pre-publish.mjs",
15
16
  "generate:sdui-catalog": "node scripts/generate-sdui-catalog.mjs",
17
+ "generate:cem": "node scripts/generate-cem.mjs",
16
18
  "test": "vitest --reporter verbose --watch",
17
19
  "test:ci": "vitest run --reporter verbose",
18
20
  "ai-init": "node scripts/ai-init.mjs"
@@ -379,6 +381,7 @@
379
381
  "./utils/Electron": "./src/core/utils/Electron.ts",
380
382
  "./utils/Format": "./src/core/utils/Format.ts",
381
383
  "./utils/HTML": "./src/core/utils/HTML.ts",
384
+ "./utils/LocationHandler.spec": "./src/core/utils/LocationHandler.spec.ts",
382
385
  "./utils/LocationHandler": "./src/core/utils/LocationHandler.ts",
383
386
  "./utils/Objects": "./src/core/utils/Objects.ts",
384
387
  "./utils/PublisherProxy": "./src/core/utils/PublisherProxy.ts",
@@ -416,6 +419,7 @@
416
419
  "./undefined/docs-source-link": "./src/docs/components/docs-source-link.ts",
417
420
  "./docs-source-raw": "./src/docs/components/docs-source-raw.ts",
418
421
  "./undefined/docs-source-raw": "./src/docs/components/docs-source-raw.ts",
422
+ "./docs-location.spec": "./src/docs/docs-location.spec.ts",
419
423
  "./docs-location": "./src/docs/docs-location.ts",
420
424
  "./docs": "./src/docs/docs.ts",
421
425
  "./example/decorators-demo-bind-demos": "./src/docs/example/decorators-demo-bind-demos.ts",
@@ -426,8 +430,7 @@
426
430
  "./example/decorators-demo": "./src/docs/example/decorators-demo.ts",
427
431
  "./example/docs-api-config-demos": "./src/docs/example/docs-api-config-demos.ts",
428
432
  "./example/docs-boarding-pass-demo": "./src/docs/example/docs-boarding-pass-demo.ts",
429
- "./example/docs-input-autocomplete-demos": "./src/docs/example/docs-input-autocomplete-demos.ts",
430
- "./example/docs-joke-demos": "./src/docs/example/docs-joke-demos.ts",
433
+ "./example/docs-flight-demos": "./src/docs/example/docs-flight-demos.ts",
431
434
  "./example/docs-jsonata-demos": "./src/docs/example/docs-jsonata-demos.ts",
432
435
  "./example/docs-list-demos": "./src/docs/example/docs-list-demos.ts",
433
436
  "./example/docs-provider-keys": "./src/docs/example/docs-provider-keys.ts",
@@ -446,6 +449,7 @@
446
449
  "./mock-api/api-config-mock": "./src/docs/mock-api/api-config-mock.ts",
447
450
  "./mock-api/fixtures-jsonata": "./src/docs/mock-api/fixtures-jsonata.ts",
448
451
  "./mock-api/fixtures": "./src/docs/mock-api/fixtures.ts",
452
+ "./mock-api/flights": "./src/docs/mock-api/flights.ts",
449
453
  "./mock-api/register": "./src/docs/mock-api/register.ts",
450
454
  "./mock-api/router": "./src/docs/mock-api/router.ts",
451
455
  "./mock-api/service-worker": "./src/docs/mock-api/service-worker.ts",
@@ -3,7 +3,6 @@
3
3
  // src/docs/mock-api/urls.ts
4
4
  var DOCS_MOCK_API_BASE = "/docs-mock-api";
5
5
  var DOCS_MOCK_GEO_SERVICE = `${DOCS_MOCK_API_BASE}/geo/`;
6
- var DOCS_MOCK_JOKES_SERVICE = `${DOCS_MOCK_API_BASE}/jokes`;
7
6
 
8
7
  // src/docs/mock-api/api-config-mock.ts
9
8
  var DOCS_MOCK_TOKEN_VALID = "docs-mock-valid-token";
@@ -15,6 +14,11 @@
15
14
  var WORDING_CATALOG = {
16
15
  "api-config.greeting": { fr: "Bonjour", en: "Hello" },
17
16
  "api-config.farewell": { fr: "Au revoir", en: "Goodbye" },
17
+ "flight.boarding": { fr: "Embarquement imm\xE9diat", en: "Now boarding" },
18
+ "flight.gate": {
19
+ fr: "Rendez-vous porte <strong>B12</strong>",
20
+ en: "Please proceed to gate <strong>B12</strong>"
21
+ },
18
22
  "api-config.hint": {
19
23
  fr: "Libell\xE9s servis par le mock /wording/labels",
20
24
  en: "Labels served by mock /wording/labels"
@@ -114,6 +118,56 @@
114
118
  `${DOCS_MOCK_API_BASE}/wording/labels`
115
119
  ];
116
120
 
121
+ // src/docs/mock-api/flights.ts
122
+ var row = (code, direction, airport, city, time, gate, status) => ({
123
+ code,
124
+ direction,
125
+ airport,
126
+ city,
127
+ time,
128
+ gate,
129
+ status
130
+ });
131
+ var FLIGHTS = [
132
+ row("CN 001", "departures", "JFK", "New York", "08:15", "B12", "boarding"),
133
+ row("CN 014", "departures", "LHR", "London", "08:40", "A03", "on-time"),
134
+ row("CN 102", "departures", "GIG", "Rio de Janeiro", "09:05", "C21", "delayed"),
135
+ row("CN 220", "departures", "DKR", "Dakar", "09:30", "C07", "on-time"),
136
+ row("CN 305", "departures", "IAD", "Washington", "10:10", "B04", "cancelled"),
137
+ row("CN 412", "departures", "BAH", "Bahrain", "10:45", "D02", "delayed"),
138
+ row("CN 518", "departures", "SIN", "Singapore", "11:20", "D14", "on-time"),
139
+ row("CN 633", "departures", "YUL", "Montreal", "12:00", "A11", "on-time"),
140
+ row("CN 002", "arrivals", "JFK", "New York", "07:50", "B10", "landed"),
141
+ row("CN 015", "arrivals", "LHR", "London", "08:25", "A05", "landed"),
142
+ row("CN 103", "arrivals", "GIG", "Rio de Janeiro", "09:15", "C20", "delayed"),
143
+ row("CN 221", "arrivals", "DKR", "Dakar", "09:55", "C08", "on-time"),
144
+ row("CN 306", "arrivals", "IAD", "Washington", "10:35", "B06", "on-time"),
145
+ row("CN 413", "arrivals", "BAH", "Bahrain", "11:05", "D03", "cancelled"),
146
+ row("CN 519", "arrivals", "SIN", "Singapore", "11:40", "D15", "delayed"),
147
+ row("CN 634", "arrivals", "YUL", "Montreal", "12:30", "A12", "on-time")
148
+ ];
149
+ function buildFlightsResponse(url) {
150
+ const p = url.searchParams;
151
+ let pool = FLIGHTS.map((f, i) => ({ ...f, id: i + 1 }));
152
+ const direction = p.get("direction");
153
+ if (direction === "departures" || direction === "arrivals") {
154
+ pool = pool.filter((f) => f.direction === direction);
155
+ }
156
+ const q = p.get("q")?.trim().toLowerCase();
157
+ if (q) {
158
+ pool = pool.filter(
159
+ (f) => [f.code, f.city, f.airport].join(" ").toLowerCase().includes(q)
160
+ );
161
+ }
162
+ const statuses = (p.get("status") || "").split(",").map((s) => s.trim()).filter((s) => s && s !== "all");
163
+ if (statuses.length) {
164
+ pool = pool.filter((f) => statuses.includes(f.status));
165
+ }
166
+ const offset = Math.max(0, parseInt(p.get("offset") || "0", 10));
167
+ const limit = Math.max(1, parseInt(p.get("limit") || "20", 10));
168
+ return { flights: pool.slice(offset, offset + limit) };
169
+ }
170
+
117
171
  // src/docs/mock-api/fixtures.ts
118
172
  var reqresAvatar = (seed) => `https://i.pravatar.cc/150?u=${encodeURIComponent(seed)}`;
119
173
  var REQRES_EXTRA_NAMES = [
@@ -177,224 +231,6 @@
177
231
  { nom: "Montpellier", code: "34172" },
178
232
  { nom: "Rennes", code: "35238" }
179
233
  ];
180
- var jokeFlags = (partial = {}) => ({
181
- nsfw: false,
182
- religious: false,
183
- political: false,
184
- racist: false,
185
- sexist: false,
186
- explicit: false,
187
- ...partial
188
- });
189
- var SAMPLE_JOKES = [
190
- {
191
- categories: ["Programming"],
192
- createdAt: "2020-01-01 00:00:00",
193
- id: 1,
194
- lang: "en",
195
- joke: "Why do programmers prefer dark mode? Because light attracts bugs.",
196
- flags: jokeFlags(),
197
- safe: true,
198
- type: "single"
199
- },
200
- {
201
- categories: ["Misc"],
202
- createdAt: "2020-01-02 00:00:00",
203
- id: 2,
204
- lang: "en",
205
- joke: "I told my computer I needed a break \u2014 it said: no problem, I'll go to sleep.",
206
- flags: jokeFlags({ nsfw: true }),
207
- safe: false,
208
- type: "single"
209
- },
210
- {
211
- categories: ["Pun"],
212
- createdAt: "2020-01-03 00:00:00",
213
- id: 3,
214
- lang: "en",
215
- joke: "Concorde docs run offline: even the API is a local joke.",
216
- flags: jokeFlags(),
217
- safe: true,
218
- type: "single"
219
- },
220
- {
221
- categories: ["Animals"],
222
- createdAt: "2020-01-04 00:00:00",
223
- id: 4,
224
- lang: "en",
225
- joke: "The dog ate my homework and my pull request.",
226
- flags: jokeFlags({ political: true }),
227
- safe: true,
228
- type: "single"
229
- },
230
- {
231
- categories: ["Animals", "Pun"],
232
- createdAt: "2020-01-05 00:00:00",
233
- id: 5,
234
- lang: "fr",
235
- joke: "Quel est le chien pr\xE9f\xE9r\xE9 des d\xE9veloppeurs ? Le labrador Retriever.",
236
- flags: jokeFlags(),
237
- safe: true,
238
- type: "single"
239
- },
240
- {
241
- categories: ["Animals"],
242
- createdAt: "2020-01-06 00:00:00",
243
- id: 6,
244
- lang: "fr",
245
- joke: "Un chat et un chien discutent de TypeScript : le chien dit \xAB woof \xBB, le chat compile.",
246
- flags: jokeFlags({ racist: true }),
247
- safe: false,
248
- type: "single"
249
- },
250
- {
251
- categories: ["Misc"],
252
- createdAt: "2020-01-07 00:00:00",
253
- id: 7,
254
- lang: "fr",
255
- joke: "Pourquoi les blagues offline sont-elles fiables ? Parce qu'elles passent par le Service Worker.",
256
- flags: jokeFlags({ religious: true }),
257
- safe: true,
258
- type: "single"
259
- },
260
- {
261
- categories: ["Programming"],
262
- createdAt: "2020-01-08 00:00:00",
263
- id: 8,
264
- lang: "fr",
265
- joke: "Mon compilateur et mon chien : tous deux ignorent mes commandes jusqu'au build.",
266
- flags: jokeFlags({ sexist: true }),
267
- safe: false,
268
- type: "single"
269
- },
270
- {
271
- categories: ["Misc"],
272
- createdAt: "2020-01-09 00:00:00",
273
- id: 9,
274
- lang: "en",
275
- joke: "A SQL query walks into a bar, walks up to two tables and asks: Can I join you?",
276
- flags: jokeFlags({ explicit: true }),
277
- safe: false,
278
- type: "single"
279
- },
280
- {
281
- categories: ["Pun"],
282
- createdAt: "2020-01-10 00:00:00",
283
- id: 10,
284
- lang: "fr",
285
- joke: "J'ai cherch\xE9 \xAB chien \xBB dans la doc : le mock API a r\xE9pondu.",
286
- flags: jokeFlags(),
287
- safe: true,
288
- type: "single"
289
- },
290
- {
291
- categories: ["Misc"],
292
- createdAt: "2020-01-11 00:00:00",
293
- id: 11,
294
- lang: "en",
295
- joke: "There are only two hard things in Computer Science: cache invalidation and naming things.",
296
- flags: jokeFlags({ political: true, explicit: true }),
297
- safe: false,
298
- type: "single"
299
- },
300
- {
301
- categories: ["Animals"],
302
- createdAt: "2020-01-12 00:00:00",
303
- id: 12,
304
- lang: "fr",
305
- joke: "Le golden retriever a r\xE9cup\xE9r\xE9 la donn\xE9e du publisher.",
306
- flags: jokeFlags({ racist: true, sexist: true }),
307
- safe: false,
308
- type: "two-liner",
309
- setup: "Pourquoi le chien aime Concorde ?",
310
- delivery: "Parce qu'il sait fetch."
311
- },
312
- {
313
- categories: ["Misc"],
314
- createdAt: "2020-01-13 00:00:00",
315
- id: 13,
316
- lang: "en",
317
- joke: "My code and my conscience: both have too many warnings.",
318
- flags: jokeFlags(),
319
- safe: true,
320
- type: "single"
321
- },
322
- {
323
- categories: ["Programming"],
324
- createdAt: "2020-01-14 00:00:00",
325
- id: 14,
326
- lang: "en",
327
- joke: "Git blame is just a mirror.",
328
- flags: jokeFlags({ religious: true, political: true }),
329
- safe: false,
330
- type: "single"
331
- }
332
- ];
333
- function parseBlacklistFlags(url) {
334
- const keys = /* @__PURE__ */ new Set();
335
- const valid = [
336
- "nsfw",
337
- "religious",
338
- "political",
339
- "racist",
340
- "sexist",
341
- "explicit"
342
- ];
343
- const add = (raw) => {
344
- raw.split(",").map((s) => s.trim().toLowerCase()).forEach((part) => {
345
- if (valid.includes(part)) keys.add(part);
346
- });
347
- };
348
- url.searchParams.getAll("blacklistFlags").forEach(add);
349
- const single = url.searchParams.get("blacklistFlags");
350
- if (single) add(single);
351
- return [...keys];
352
- }
353
- function applyJokeBlacklist(jokes, blacklist) {
354
- if (!blacklist.length) return jokes;
355
- return jokes.filter(
356
- (j) => !blacklist.some((flag) => j.flags[flag] === true)
357
- );
358
- }
359
- function filterDocsJokes(jokes, url) {
360
- let pool = jokes;
361
- const contains = url.searchParams.get("contains")?.trim().toLowerCase();
362
- if (contains) {
363
- pool = pool.filter((j) => {
364
- const haystack = [j.joke, j.setup, j.delivery, ...j.categories].filter(Boolean).join(" ").toLowerCase();
365
- return haystack.includes(contains);
366
- });
367
- }
368
- const lang = url.searchParams.get("lang")?.trim().toLowerCase();
369
- if (lang === "fr" || lang === "en") {
370
- pool = pool.filter((j) => j.lang === lang);
371
- }
372
- pool = applyJokeBlacklist(pool, parseBlacklistFlags(url));
373
- return pool;
374
- }
375
- function buildJokeApiResponse(url) {
376
- const pool = filterDocsJokes(SAMPLE_JOKES, url);
377
- const amount = Math.max(
378
- 1,
379
- parseInt(url.searchParams.get("amount") || "10", 10)
380
- );
381
- const hasOffset = url.searchParams.has("offset");
382
- const limit = Math.max(
383
- 1,
384
- parseInt(
385
- url.searchParams.get("limit") || url.searchParams.get("per_page") || String(amount),
386
- 10
387
- )
388
- );
389
- const offset = Math.max(0, parseInt(url.searchParams.get("offset") || "0", 10));
390
- const start = hasOffset ? offset : 0;
391
- const count = hasOffset ? limit : amount;
392
- const jokes = pool.slice(start, start + count).map((j, i) => ({
393
- ...j,
394
- id: start + i + 1
395
- }));
396
- return { error: false, amount: jokes.length, jokes };
397
- }
398
234
 
399
235
  // src/docs/mock-api/fixtures-jsonata.ts
400
236
  var avatar = (seed) => `https://i.pravatar.cc/150?u=${encodeURIComponent(seed)}`;
@@ -583,7 +419,7 @@
583
419
  const offset = Math.max(0, parseInt(url.searchParams.get("offset") || "0", 10));
584
420
  const needle = (url.searchParams.get("nom") || url.searchParams.get("text") || url.searchParams.get("q") || url.searchParams.get("code") || "").trim().toLowerCase();
585
421
  const rows = needle ? DOCS_GEO_COMMUNES.filter(
586
- (row) => row.nom.toLowerCase().includes(needle) || row.code.toLowerCase().includes(needle)
422
+ (row2) => row2.nom.toLowerCase().includes(needle) || row2.code.toLowerCase().includes(needle)
587
423
  ) : DOCS_GEO_COMMUNES;
588
424
  return rows.slice(offset, offset + limit);
589
425
  }
@@ -698,9 +534,8 @@
698
534
  headers: { "X-Fetched-At": (/* @__PURE__ */ new Date()).toISOString() }
699
535
  });
700
536
  }
701
- const jokeMatch = subPath.match(/^\/jokes\/joke\/([^/]+)$/);
702
- if (jokeMatch) {
703
- return json2(buildJokeApiResponse(url));
537
+ if (subPath === "/flights") {
538
+ return json2(buildFlightsResponse(url));
704
539
  }
705
540
  return json2({ error: "Not found", path: subPath }, { status: 404 });
706
541
  }