@supersoniks/concorde 5.1.1 → 5.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) 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/.tmp-cem/custom-elements.json +503 -503
  6. package/PLAN-DOCS-AGENTS.md +80 -0
  7. package/README.md +3 -3
  8. package/ai/skills/concorde/SKILL.md +1 -1
  9. package/ai/skills/concorde-get-set-dp/SKILL.md +3 -3
  10. package/ai/skills/concorde-theme/SKILL.md +1 -1
  11. package/build-infos.json +1 -1
  12. package/concorde-core.bundle.js +1 -1
  13. package/concorde-core.es.js +1 -1
  14. package/dist/concorde-core.bundle.js +1 -1
  15. package/dist/concorde-core.es.js +1 -1
  16. package/docs/.htaccess +75 -0
  17. package/docs/404.html +15 -0
  18. package/docs/404.md +5 -0
  19. package/docs/assets/{index-Bb-_LRyY.js → index-BgG6FFPt.js} +2582 -3097
  20. package/docs/assets/index-x89XINSG.css +1 -0
  21. package/docs/core/components/functional/date/date.html +211 -0
  22. package/docs/core/components/functional/date/date.md +150 -0
  23. package/docs/core/components/functional/fetch/fetch.html +180 -0
  24. package/docs/core/components/functional/fetch/fetch.md +108 -0
  25. package/docs/core/components/functional/if/if.html +65 -0
  26. package/docs/core/components/functional/if/if.md +34 -0
  27. package/docs/core/components/functional/jsonata/jsonata.html +110 -0
  28. package/docs/core/components/functional/jsonata/jsonata.md +61 -0
  29. package/docs/core/components/functional/list/list.html +198 -0
  30. package/docs/core/components/functional/list/list.md +121 -0
  31. package/docs/core/components/functional/mix/mix.html +78 -0
  32. package/docs/core/components/functional/mix/mix.md +46 -0
  33. package/docs/core/components/functional/queue/queue.html +155 -0
  34. package/docs/core/components/functional/queue/queue.md +51 -0
  35. package/docs/core/components/functional/router/router.html +154 -0
  36. package/docs/core/components/functional/router/router.md +93 -0
  37. package/docs/core/components/functional/sdui/sdui-extension-points.html +127 -0
  38. package/docs/core/components/functional/sdui/sdui-extension-points.md +94 -0
  39. package/docs/core/components/functional/sdui/sdui.html +397 -0
  40. package/docs/core/components/functional/sdui/sdui.md +307 -0
  41. package/docs/core/components/functional/states/states.html +141 -0
  42. package/docs/core/components/functional/states/states.md +112 -0
  43. package/docs/core/components/functional/submit/submit.html +178 -0
  44. package/docs/core/components/functional/submit/submit.md +106 -0
  45. package/docs/core/components/functional/subscriber/subscriber.html +68 -0
  46. package/docs/core/components/functional/subscriber/subscriber.md +91 -0
  47. package/docs/core/components/functional/translation/translation.html +60 -0
  48. package/docs/core/components/functional/translation/translation.md +38 -0
  49. package/docs/core/components/functional/value/value.html +81 -0
  50. package/docs/core/components/functional/value/value.md +47 -0
  51. package/docs/core/components/ui/alert/alert.html +201 -0
  52. package/docs/core/components/ui/alert/alert.md +186 -0
  53. package/docs/core/components/ui/alert-messages/alert-messages.html +132 -0
  54. package/docs/core/components/ui/alert-messages/alert-messages.md +85 -0
  55. package/docs/core/components/ui/badge/badge.html +197 -0
  56. package/docs/core/components/ui/badge/badge.md +181 -0
  57. package/docs/core/components/ui/button/button.html +309 -0
  58. package/docs/core/components/ui/button/button.md +216 -0
  59. package/docs/core/components/ui/captcha/captcha.html +80 -0
  60. package/docs/core/components/ui/captcha/captcha.md +56 -0
  61. package/docs/core/components/ui/card/card.html +254 -0
  62. package/docs/core/components/ui/card/card.md +215 -0
  63. package/docs/core/components/ui/divider/divider.html +144 -0
  64. package/docs/core/components/ui/divider/divider.md +126 -0
  65. package/docs/core/components/ui/form/checkbox/checkbox.html +200 -0
  66. package/docs/core/components/ui/form/checkbox/checkbox.md +125 -0
  67. package/docs/core/components/ui/form/fieldset/fieldset.html +238 -0
  68. package/docs/core/components/ui/form/fieldset/fieldset.md +161 -0
  69. package/docs/core/components/ui/form/form-actions/form-actions.html +122 -0
  70. package/docs/core/components/ui/form/form-actions/form-actions.md +98 -0
  71. package/docs/core/components/ui/form/form-layout/form-layout.html +115 -0
  72. package/docs/core/components/ui/form/form-layout/form-layout.md +109 -0
  73. package/docs/core/components/ui/form/input/input.html +235 -0
  74. package/docs/core/components/ui/form/input/input.md +142 -0
  75. package/docs/core/components/ui/form/radio/radio.html +144 -0
  76. package/docs/core/components/ui/form/radio/radio.md +78 -0
  77. package/docs/core/components/ui/form/select/select.html +178 -0
  78. package/docs/core/components/ui/form/select/select.md +86 -0
  79. package/docs/core/components/ui/form/switch/switch.html +146 -0
  80. package/docs/core/components/ui/form/switch/switch.md +80 -0
  81. package/docs/core/components/ui/form/textarea/textarea.html +162 -0
  82. package/docs/core/components/ui/form/textarea/textarea.md +82 -0
  83. package/docs/core/components/ui/group/group.html +113 -0
  84. package/docs/core/components/ui/group/group.md +77 -0
  85. package/docs/core/components/ui/icon/icon.html +223 -0
  86. package/docs/core/components/ui/icon/icon.md +214 -0
  87. package/docs/core/components/ui/image/image.html +194 -0
  88. package/docs/core/components/ui/image/image.md +167 -0
  89. package/docs/core/components/ui/link/link.html +101 -0
  90. package/docs/core/components/ui/link/link.md +81 -0
  91. package/docs/core/components/ui/loader/loader.html +114 -0
  92. package/docs/core/components/ui/loader/loader.md +87 -0
  93. package/docs/core/components/ui/menu/menu.html +395 -0
  94. package/docs/core/components/ui/menu/menu.md +370 -0
  95. package/docs/core/components/ui/modal/modal.html +324 -0
  96. package/docs/core/components/ui/modal/modal.md +211 -0
  97. package/docs/core/components/ui/pop/pop.html +250 -0
  98. package/docs/core/components/ui/pop/pop.md +216 -0
  99. package/docs/core/components/ui/progress/progress.html +132 -0
  100. package/docs/core/components/ui/progress/progress.md +109 -0
  101. package/docs/core/components/ui/table/table.html +333 -0
  102. package/docs/core/components/ui/table/table.md +267 -0
  103. package/docs/core/components/ui/theme/theme.html +116 -0
  104. package/docs/core/components/ui/theme/theme.md +97 -0
  105. package/docs/core/components/ui/toast/toast.html +185 -0
  106. package/docs/core/components/ui/toast/toast.md +147 -0
  107. package/docs/core/components/ui/tooltip/tooltip.html +112 -0
  108. package/docs/core/components/ui/tooltip/tooltip.md +89 -0
  109. package/docs/docs/decorators/ancestor-attribute.html +71 -0
  110. package/docs/docs/decorators/ancestor-attribute.md +59 -0
  111. package/docs/docs/decorators/auto-subscribe.html +61 -0
  112. package/docs/docs/decorators/auto-subscribe.md +40 -0
  113. package/docs/docs/decorators/bind.html +86 -0
  114. package/docs/docs/decorators/bind.md +77 -0
  115. package/docs/docs/decorators/get.html +166 -0
  116. package/docs/docs/decorators/get.md +160 -0
  117. package/docs/docs/decorators/handle.html +139 -0
  118. package/docs/docs/decorators/handle.md +119 -0
  119. package/docs/docs/decorators/on-assign.html +72 -0
  120. package/docs/docs/decorators/on-assign.md +63 -0
  121. package/docs/docs/decorators/patch.html +76 -0
  122. package/docs/docs/decorators/patch.md +44 -0
  123. package/docs/docs/decorators/post.html +150 -0
  124. package/docs/docs/decorators/post.md +134 -0
  125. package/docs/docs/decorators/publish.html +74 -0
  126. package/docs/docs/decorators/publish.md +56 -0
  127. package/docs/docs/decorators/put.html +83 -0
  128. package/docs/docs/decorators/put.md +51 -0
  129. package/docs/docs/decorators/subscribe.html +91 -0
  130. package/docs/docs/decorators/subscribe.md +87 -0
  131. package/docs/docs/decorators/wait-for-ancestors.html +82 -0
  132. package/docs/docs/decorators/wait-for-ancestors.md +76 -0
  133. package/docs/docs/directives/sub.html +79 -0
  134. package/docs/docs/directives/sub.md +75 -0
  135. package/docs/docs/directives/t.html +91 -0
  136. package/docs/docs/directives/t.md +73 -0
  137. package/docs/docs/getting-started/ai-agents.html +174 -0
  138. package/{src/docs/_getting-started → docs/docs/getting-started}/ai-agents.md +3 -3
  139. package/docs/docs/getting-started/components.html +27 -0
  140. package/docs/docs/getting-started/create-a-component.html +108 -0
  141. package/{src/docs/_getting-started → docs/docs/getting-started}/create-a-component.md +3 -6
  142. package/docs/docs/getting-started/dataFlow.html +174 -0
  143. package/{src/docs/_core-concept → docs/docs/getting-started}/dataFlow.md +17 -18
  144. package/docs/docs/getting-started/installation.html +69 -0
  145. package/docs/docs/getting-started/installation.md +36 -0
  146. package/docs/docs/getting-started/my-first-component.html +180 -0
  147. package/{src/docs/_getting-started → docs/docs/getting-started}/my-first-component.md +5 -14
  148. package/docs/docs/getting-started/start.html +47 -0
  149. package/{src/docs/_getting-started → docs/docs/getting-started}/start.md +1 -13
  150. package/docs/docs/getting-started/theming.html +334 -0
  151. package/docs/docs/index.html +99 -0
  152. package/docs/docs/misc/api-configuration.html +149 -0
  153. package/{src/docs/_misc → docs/docs/misc}/api-configuration.md +10 -12
  154. package/docs/docs/misc/dataProviderKey.html +136 -0
  155. package/{src/docs/_misc → docs/docs/misc}/dataProviderKey.md +4 -4
  156. package/docs/docs/misc/docs-mock-api.html +155 -0
  157. package/{src/docs/_misc → docs/docs/misc}/docs-mock-api.md +12 -13
  158. package/docs/docs/misc/dynamic-path.html +181 -0
  159. package/{src/docs/_misc → docs/docs/misc}/dynamic-path.md +8 -8
  160. package/docs/docs/misc/endpoint.html +51 -0
  161. package/{src/docs/_misc → docs/docs/misc}/endpoint.md +8 -8
  162. package/docs/docs/misc/html-integration.html +45 -0
  163. package/{src/docs/_misc → docs/docs/misc}/html-integration.md +4 -5
  164. package/docs/docs-mock-api-sw.js +58 -223
  165. package/docs/docs-mock-api-sw.js.map +4 -4
  166. package/docs/hubs/decorators.html +443 -0
  167. package/docs/hubs/form-components.html +404 -0
  168. package/docs/hubs/remote-data.html +371 -0
  169. package/docs/img/archive/concorde-001-2cv.webp +0 -0
  170. package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  171. package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
  172. package/docs/img/archive/credits.json +28 -0
  173. package/docs/img/concorde/plane_01.jpg +0 -0
  174. package/docs/img/concorde/plane_02.jpg +0 -0
  175. package/docs/img/concorde/plane_03.jpg +0 -0
  176. package/docs/img/concorde/plane_04.jpg +0 -0
  177. package/docs/img/concorde/plane_05.jpg +0 -0
  178. package/docs/img/concorde/plane_06.jpg +0 -0
  179. package/docs/img/concorde/plane_07.jpg +0 -0
  180. package/docs/img/concorde/plane_08.jpg +0 -0
  181. package/docs/img/concorde/plane_09.jpg +0 -0
  182. package/docs/img/concorde/plane_10.jpg +0 -0
  183. package/docs/img/concorde/plane_11.jpg +0 -0
  184. package/docs/img/concorde/plane_12.jpg +0 -0
  185. package/docs/img/concorde/plane_13.jpg +0 -0
  186. package/docs/index.html +95 -68
  187. package/docs/index.md +22 -0
  188. package/docs/llms-full.txt +5795 -0
  189. package/docs/llms.txt +106 -0
  190. package/docs/robots.txt +11 -10
  191. package/docs/sitemap.xml +237 -0
  192. package/docs/src/core/components/functional/date/date.md +150 -0
  193. package/docs/src/core/components/functional/fetch/fetch.md +108 -0
  194. package/docs/src/core/components/functional/if/if.md +34 -0
  195. package/docs/src/core/components/functional/jsonata/jsonata.md +61 -0
  196. package/docs/src/core/components/functional/list/list.md +121 -0
  197. package/docs/src/core/components/functional/mix/mix.md +46 -0
  198. package/docs/src/core/components/functional/queue/queue.md +51 -0
  199. package/docs/src/core/components/functional/router/router.md +93 -0
  200. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
  201. package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
  202. package/docs/src/core/components/functional/sdui/default-library.json +108 -0
  203. package/docs/src/core/components/functional/sdui/example.json +32 -0
  204. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
  205. package/docs/src/core/components/functional/sdui/sdui.md +307 -0
  206. package/docs/src/core/components/functional/states/states.md +112 -0
  207. package/docs/src/core/components/functional/submit/submit.md +106 -0
  208. package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
  209. package/docs/src/core/components/functional/translation/translation.md +38 -0
  210. package/docs/src/core/components/functional/value/value.md +47 -0
  211. package/docs/src/core/components/ui/alert/alert.md +186 -0
  212. package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
  213. package/docs/src/core/components/ui/badge/badge.md +181 -0
  214. package/docs/src/core/components/ui/button/button.md +216 -0
  215. package/docs/src/core/components/ui/captcha/captcha.md +56 -0
  216. package/docs/src/core/components/ui/card/card.md +215 -0
  217. package/docs/src/core/components/ui/divider/divider.md +126 -0
  218. package/docs/src/core/components/ui/form/checkbox/checkbox.md +125 -0
  219. package/docs/src/core/components/ui/form/fieldset/fieldset.md +161 -0
  220. package/docs/src/core/components/ui/form/form-actions/form-actions.md +98 -0
  221. package/docs/src/core/components/ui/form/form-layout/form-layout.md +109 -0
  222. package/docs/src/core/components/ui/form/input/input.md +142 -0
  223. package/docs/src/core/components/ui/form/radio/radio.md +78 -0
  224. package/docs/src/core/components/ui/form/select/select.md +86 -0
  225. package/docs/src/core/components/ui/form/switch/switch.md +80 -0
  226. package/docs/src/core/components/ui/form/textarea/textarea.md +82 -0
  227. package/docs/src/core/components/ui/group/group.md +77 -0
  228. package/docs/src/core/components/ui/icon/icon.md +214 -0
  229. package/docs/src/core/components/ui/icon/icons.json +1 -0
  230. package/docs/src/core/components/ui/image/image.md +167 -0
  231. package/docs/src/core/components/ui/link/link.md +81 -0
  232. package/docs/src/core/components/ui/loader/loader.md +87 -0
  233. package/docs/src/core/components/ui/menu/menu.md +370 -0
  234. package/docs/src/core/components/ui/modal/modal.md +211 -0
  235. package/docs/src/core/components/ui/pop/pop.md +216 -0
  236. package/docs/src/core/components/ui/progress/progress.md +109 -0
  237. package/docs/src/core/components/ui/table/table.md +267 -0
  238. package/docs/src/core/components/ui/theme/theme.md +97 -0
  239. package/docs/src/core/components/ui/toast/toast.md +147 -0
  240. package/docs/src/core/components/ui/tooltip/tooltip.md +89 -0
  241. package/docs/src/docs/decorators/ancestor-attribute.md +59 -0
  242. package/docs/src/docs/decorators/auto-subscribe.md +40 -0
  243. package/docs/src/docs/decorators/bind.md +77 -0
  244. package/docs/src/docs/decorators/get.md +160 -0
  245. package/docs/src/docs/decorators/handle.md +119 -0
  246. package/docs/src/docs/decorators/on-assign.md +63 -0
  247. package/docs/src/docs/decorators/patch.md +44 -0
  248. package/docs/src/docs/decorators/post.md +134 -0
  249. package/docs/src/docs/decorators/publish.md +56 -0
  250. package/docs/src/docs/decorators/put.md +51 -0
  251. package/docs/src/docs/decorators/subscribe.md +87 -0
  252. package/docs/src/docs/decorators/wait-for-ancestors.md +76 -0
  253. package/docs/src/docs/directives/sub.md +75 -0
  254. package/docs/src/docs/directives/t.md +73 -0
  255. package/docs/src/docs/getting-started/ai-agents.md +76 -0
  256. package/docs/src/docs/getting-started/components.md +5 -0
  257. package/docs/src/docs/getting-started/create-a-component.md +136 -0
  258. package/docs/src/docs/getting-started/dataFlow.md +87 -0
  259. package/docs/src/docs/getting-started/installation.md +36 -0
  260. package/docs/src/docs/getting-started/my-first-component.md +227 -0
  261. package/docs/src/docs/getting-started/start.md +35 -0
  262. package/docs/src/docs/getting-started/theming.md +253 -0
  263. package/docs/src/docs/misc/api-configuration.md +79 -0
  264. package/docs/src/docs/misc/dataProviderKey.md +168 -0
  265. package/docs/src/docs/misc/docs-mock-api.md +62 -0
  266. package/docs/src/docs/misc/dynamic-path.md +71 -0
  267. package/docs/src/docs/misc/endpoint.md +45 -0
  268. package/docs/src/docs/misc/html-integration.md +14 -0
  269. package/docs/src/docs/search/docs-search.json +10287 -0
  270. package/docs/src/tag-list.json +1 -0
  271. package/docs/src/tsconfig-model.json +23 -0
  272. package/docs/src/tsconfig.json +1353 -0
  273. package/index.html +68 -5
  274. package/package.json +1 -1
  275. package/public/docs-mock-api-sw.js +58 -223
  276. package/public/docs-mock-api-sw.js.map +4 -4
  277. package/public/img/concorde/plane_01.jpg +0 -0
  278. package/public/img/concorde/plane_02.jpg +0 -0
  279. package/public/img/concorde/plane_03.jpg +0 -0
  280. package/public/img/concorde/plane_04.jpg +0 -0
  281. package/public/img/concorde/plane_05.jpg +0 -0
  282. package/public/img/concorde/plane_06.jpg +0 -0
  283. package/public/img/concorde/plane_07.jpg +0 -0
  284. package/public/img/concorde/plane_08.jpg +0 -0
  285. package/public/img/concorde/plane_09.jpg +0 -0
  286. package/public/img/concorde/plane_10.jpg +0 -0
  287. package/public/img/concorde/plane_11.jpg +0 -0
  288. package/public/img/concorde/plane_12.jpg +0 -0
  289. package/public/img/concorde/plane_13.jpg +0 -0
  290. package/public/robots.txt +11 -10
  291. package/scripts/docs-markdown-vite-plugin.ts +37 -0
  292. package/scripts/docs-public-url.mjs +50 -0
  293. package/scripts/docs.htaccess +75 -0
  294. package/scripts/generate-crawl-docs.mjs +207 -116
  295. package/scripts/generate-crawl-docs.test.mjs +124 -0
  296. package/scripts/post-build-docs.js +34 -50
  297. package/src/core/components/functional/date/date.md +91 -231
  298. package/src/core/components/functional/fetch/fetch.md +66 -83
  299. package/src/core/components/functional/if/if.md +28 -3
  300. package/src/core/components/functional/jsonata/jsonata.md +42 -37
  301. package/src/core/components/functional/list/list.md +99 -43
  302. package/src/core/components/functional/mix/mix.md +31 -26
  303. package/src/core/components/functional/queue/queue.demo.ts +10 -7
  304. package/src/core/components/functional/queue/queue.md +40 -61
  305. package/src/core/components/functional/router/router.demo.ts +16 -16
  306. package/src/core/components/functional/router/router.md +64 -65
  307. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  308. package/src/core/components/functional/sdui/component-catalog.json +1 -1
  309. package/src/core/components/functional/sdui/example.json +19 -86
  310. package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  311. package/src/core/components/functional/sdui/sdui.md +187 -358
  312. package/src/core/components/functional/states/states.demo.ts +21 -22
  313. package/src/core/components/functional/states/states.md +86 -61
  314. package/src/core/components/functional/states/states.ts +1 -1
  315. package/src/core/components/functional/submit/submit.md +64 -72
  316. package/src/core/components/functional/translation/translation.md +38 -0
  317. package/src/core/components/functional/value/value.md +34 -22
  318. package/src/core/components/ui/alert/alert.md +48 -58
  319. package/src/core/components/ui/badge/badge.md +27 -34
  320. package/src/core/components/ui/button/button.md +139 -106
  321. package/src/core/components/ui/captcha/captcha.md +17 -32
  322. package/src/core/components/ui/card/card.md +6 -6
  323. package/src/core/components/ui/divider/divider.md +8 -11
  324. package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
  325. package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
  326. package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
  327. package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
  328. package/src/core/components/ui/form/input/input.md +95 -95
  329. package/src/core/components/ui/form/radio/radio.md +55 -34
  330. package/src/core/components/ui/form/select/select.md +60 -45
  331. package/src/core/components/ui/form/switch/switch.md +57 -34
  332. package/src/core/components/ui/form/textarea/textarea.md +55 -38
  333. package/src/core/components/ui/group/group.md +35 -33
  334. package/src/core/components/ui/icon/icon.md +4 -4
  335. package/src/core/components/ui/image/image.md +41 -107
  336. package/src/core/components/ui/link/link.md +6 -6
  337. package/src/core/components/ui/loader/loader.md +30 -55
  338. package/src/core/components/ui/menu/menu.md +27 -27
  339. package/src/core/components/ui/modal/modal.md +72 -96
  340. package/src/core/components/ui/pop/pop.md +80 -158
  341. package/src/core/components/ui/progress/progress.md +2 -2
  342. package/src/core/components/ui/table/table.md +91 -255
  343. package/src/core/components/ui/theme/theme.md +11 -36
  344. package/src/core/components/ui/toast/toast.md +48 -117
  345. package/src/core/components/ui/tooltip/tooltip.md +27 -62
  346. package/src/core/utils/LocationHandler.spec.ts +80 -0
  347. package/src/core/utils/LocationHandler.ts +5 -9
  348. package/src/docs/components/docs-demo-sources.ts +55 -140
  349. package/src/docs/components/docs-lit-demo.ts +1 -3
  350. package/src/docs/components/docs-source-link.ts +0 -82
  351. package/src/docs/decorators/ancestor-attribute.md +59 -0
  352. package/src/docs/decorators/auto-subscribe.md +40 -0
  353. package/src/docs/decorators/bind.md +77 -0
  354. package/src/docs/decorators/get.md +160 -0
  355. package/src/docs/decorators/handle.md +119 -0
  356. package/src/docs/decorators/on-assign.md +63 -0
  357. package/src/docs/decorators/patch.md +44 -0
  358. package/src/docs/decorators/post.md +134 -0
  359. package/src/docs/decorators/publish.md +56 -0
  360. package/src/docs/decorators/put.md +51 -0
  361. package/src/docs/decorators/subscribe.md +87 -0
  362. package/src/docs/decorators/wait-for-ancestors.md +76 -0
  363. package/src/docs/directives/sub.md +75 -0
  364. package/src/docs/directives/t.md +73 -0
  365. package/src/docs/docs-location.spec.ts +46 -0
  366. package/src/docs/docs-location.ts +123 -32
  367. package/src/docs/docs.ts +1 -2
  368. package/src/docs/example/decorators-demo-bind-demos.ts +81 -116
  369. package/src/docs/example/decorators-demo-geo.ts +30 -19
  370. package/src/docs/example/decorators-demo-post.ts +88 -186
  371. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
  372. package/src/docs/example/decorators-demo.ts +85 -98
  373. package/src/docs/example/docs-api-config-demos.ts +19 -20
  374. package/src/docs/example/docs-flight-demos.ts +147 -0
  375. package/src/docs/example/docs-jsonata-demos.ts +52 -52
  376. package/src/docs/example/docs-list-demos.ts +43 -123
  377. package/src/docs/example/docs-provider-keys.ts +21 -28
  378. package/src/docs/example/docs-queue-demos.ts +37 -77
  379. package/src/docs/example/docs-router-demos.ts +20 -25
  380. package/src/docs/example/docs-submit-demos.ts +48 -48
  381. package/src/docs/example/docs-toggle-demos.ts +4 -3
  382. package/src/docs/getting-started/ai-agents.md +76 -0
  383. package/src/docs/getting-started/components.md +5 -0
  384. package/src/docs/getting-started/create-a-component.md +136 -0
  385. package/src/docs/getting-started/dataFlow.md +87 -0
  386. package/src/docs/getting-started/installation.md +36 -0
  387. package/src/docs/getting-started/my-first-component.md +227 -0
  388. package/src/docs/getting-started/start.md +35 -0
  389. package/src/docs/getting-started/theming.md +253 -0
  390. package/src/docs/header/header.ts +11 -6
  391. package/src/docs/home/catalog.ts +1 -1
  392. package/src/docs/home/home.ts +17 -10
  393. package/src/docs/layout.ts +12 -13
  394. package/src/docs/misc/api-configuration.md +79 -0
  395. package/src/docs/misc/dataProviderKey.md +168 -0
  396. package/src/docs/misc/docs-mock-api.md +62 -0
  397. package/src/docs/misc/dynamic-path.md +71 -0
  398. package/src/docs/misc/endpoint.md +45 -0
  399. package/src/docs/misc/html-integration.md +14 -0
  400. package/src/docs/mock-api/api-config-mock.ts +5 -0
  401. package/src/docs/mock-api/fixtures.ts +0 -278
  402. package/src/docs/mock-api/flights.ts +89 -0
  403. package/src/docs/mock-api/router.ts +3 -4
  404. package/src/docs/mock-api/urls.ts +1 -2
  405. package/src/docs/navigation/navigation.ts +82 -103
  406. package/src/docs/navigation/toc.ts +7 -4
  407. package/src/docs/search/docs-search.json +2845 -5110
  408. package/src/docs/search/markdown-renderer.ts +25 -7
  409. package/src/docs/search/page.ts +9 -6
  410. package/src/docs/search/search.ts +154 -122
  411. package/vite.config.mts +11 -2
  412. package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
  413. package/docs/assets/index-CD4WyL6o.css +0 -1
  414. package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
  415. package/src/docs/_core-concept/overview.md +0 -57
  416. package/src/docs/_core-concept/subscriber.md +0 -75
  417. package/src/docs/_decorators/ancestor-attribute.md +0 -128
  418. package/src/docs/_decorators/auto-subscribe.md +0 -202
  419. package/src/docs/_decorators/bind.md +0 -167
  420. package/src/docs/_decorators/get.md +0 -162
  421. package/src/docs/_decorators/handle.md +0 -175
  422. package/src/docs/_decorators/on-assign.md +0 -390
  423. package/src/docs/_decorators/patch.md +0 -70
  424. package/src/docs/_decorators/post.md +0 -146
  425. package/src/docs/_decorators/publish.md +0 -55
  426. package/src/docs/_decorators/put.md +0 -70
  427. package/src/docs/_decorators/subscribe.md +0 -100
  428. package/src/docs/_decorators/wait-for-ancestors.md +0 -163
  429. package/src/docs/_directives/sub.md +0 -91
  430. package/src/docs/_getting-started/concorde-manual-install.md +0 -133
  431. package/src/docs/_getting-started/concorde-outside.md +0 -33
  432. package/src/docs/_getting-started/my-first-subscriber.md +0 -120
  433. package/src/docs/_getting-started/pubsub.md +0 -37
  434. package/src/docs/_misc/formelement-subscriber-removal.md +0 -115
  435. package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
  436. package/src/docs/example/docs-joke-demos.ts +0 -297
  437. /package/{src/docs/_getting-started → docs/docs/getting-started}/components.md +0 -0
  438. /package/{src/docs/_getting-started → docs/docs/getting-started}/theming.md +0 -0
@@ -0,0 +1,194 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" data-doc-url="https://concorde.supersoniks.org/core/components/ui/image" data-doc-id="core/components/ui/image/image">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Image — Concorde by Supersoniks</title>
7
+ <meta name="description" content="sonic-image wraps a responsive &lt;img&gt; with aspect ratio, object-fit: cover, optional rounded corners and a load transition. The host shows a placeholder background (--sc-placeholder-bg) until the file ">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/ui/image/image, image, Image, UI component, sonic-image, web component, , object-fit: cover, --sc-placeholder-bg, loading, lazy, loading=&quot;eager&quot;, rounded, --sc-rounded">
9
+ <meta name="concorde-doc-id" content="core/components/ui/image/image">
10
+ <link rel="canonical" href="https://concorde.supersoniks.org/core/components/ui/image">
11
+ <link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/core/components/ui/image.md">
12
+ </head>
13
+ <body>
14
+ <header>
15
+ <p><a href="/docs/index.html">Concorde documentation</a> · <a href="https://concorde.supersoniks.org/core/components/ui/image">same URL (interactive)</a> · <a href="/llms.txt">llms.txt</a></p>
16
+ </header>
17
+ <main>
18
+ <article>
19
+ <p class="doc-lead" id="doc-summary"><strong>Concorde UI component — Image</strong>. sonic-image wraps a responsive &lt;img&gt; with aspect ratio, object-fit: cover, optional rounded corners and a load transition. The host shows a placeholder background (--sc-placeholder-bg) until the file <span>Doc ID: <code>core/components/ui/image/image</code>. Keywords: Concorde, supersoniks, core/components/ui/image/image, image, Image, UI component, sonic-image, web component, , object-fit: cover, --sc-placeholder-bg, loading, lazy, loading=&quot;eager&quot;, rounded, --sc-rounded. URL: <a href="https://concorde.supersoniks.org/core/components/ui/image">https://concorde.supersoniks.org/core/components/ui/image</a>.</span></p>
20
+ <h1 id="image">Image</h1>
21
+ <p><strong><code>sonic-image</code></strong> wraps a responsive <code>&lt;img&gt;</code> with aspect ratio, <code>object-fit: cover</code>, optional rounded corners and a load transition. The host shows a placeholder background (<code>--sc-placeholder-bg</code>) until the file loads. With no <code>loading</code>, the image is <code>lazy</code>; set <code>loading=&quot;eager&quot;</code> for above-the-fold images.</p>
22
+ <h2 id="rounded">Rounded</h2>
23
+ <p>With no <code>rounded</code>, corners are square. Boolean <code>rounded</code> uses the theme token <code>--sc-rounded</code>; <code>full</code> draws a circle when paired with <code>ratio=&quot;1/1&quot;</code>.</p>
24
+ <pre><code>&lt;div class=&quot;grid gap-6 grid-cols-3 lg:grid-cols-4 items-end text-center text-xs&quot;&gt;
25
+ &lt;div&gt;
26
+ &lt;sonic-image ratio=&quot;1/1&quot; src=&quot;img/concorde/plane_04.jpg&quot; alt=&quot;Concorde on the apron&quot;&gt;&lt;/sonic-image&gt;
27
+ &lt;p class=&quot;mt-2&quot;&gt;default&lt;/p&gt;
28
+ &lt;/div&gt;
29
+ &lt;div&gt;
30
+ &lt;sonic-image rounded=&quot;sm&quot; ratio=&quot;1/1&quot; src=&quot;img/concorde/plane_04.jpg&quot; alt=&quot;Concorde on the apron&quot;&gt;&lt;/sonic-image&gt;
31
+ &lt;p class=&quot;mt-2&quot;&gt;sm&lt;/p&gt;
32
+ &lt;/div&gt;
33
+ &lt;div&gt;
34
+ &lt;sonic-image rounded ratio=&quot;1/1&quot; src=&quot;img/concorde/plane_04.jpg&quot; alt=&quot;Concorde on the apron&quot;&gt;&lt;/sonic-image&gt;
35
+ &lt;p class=&quot;mt-2&quot;&gt;rounded&lt;/p&gt;
36
+ &lt;/div&gt;
37
+ &lt;div&gt;
38
+ &lt;sonic-image rounded=&quot;md&quot; ratio=&quot;1/1&quot; src=&quot;img/concorde/plane_04.jpg&quot; alt=&quot;Concorde on the apron&quot;&gt;&lt;/sonic-image&gt;
39
+ &lt;p class=&quot;mt-2&quot;&gt;md&lt;/p&gt;
40
+ &lt;/div&gt;
41
+ &lt;div&gt;
42
+ &lt;sonic-image rounded=&quot;lg&quot; ratio=&quot;1/1&quot; src=&quot;img/concorde/plane_04.jpg&quot; alt=&quot;Concorde on the apron&quot;&gt;&lt;/sonic-image&gt;
43
+ &lt;p class=&quot;mt-2&quot;&gt;lg&lt;/p&gt;
44
+ &lt;/div&gt;
45
+ &lt;div&gt;
46
+ &lt;sonic-image rounded=&quot;xl&quot; ratio=&quot;1/1&quot; src=&quot;img/concorde/plane_04.jpg&quot; alt=&quot;Concorde on the apron&quot;&gt;&lt;/sonic-image&gt;
47
+ &lt;p class=&quot;mt-2&quot;&gt;xl&lt;/p&gt;
48
+ &lt;/div&gt;
49
+ &lt;div&gt;
50
+ &lt;sonic-image rounded=&quot;full&quot; ratio=&quot;1/1&quot; src=&quot;img/concorde/plane_04.jpg&quot; alt=&quot;Concorde on the apron&quot;&gt;&lt;/sonic-image&gt;
51
+ &lt;p class=&quot;mt-2&quot;&gt;full&lt;/p&gt;
52
+ &lt;/div&gt;
53
+ &lt;/div&gt;
54
+ </code></pre>
55
+ <h2 id="aspect-ratio">Aspect ratio</h2>
56
+ <p><code>ratio</code> sets CSS <code>aspect-ratio</code> on the image (default <code>auto</code>). The image always fills the host width.</p>
57
+ <pre><code>&lt;div class=&quot;grid gap-8 grid-cols-2 items-center&quot;&gt;
58
+ &lt;sonic-image src=&quot;img/concorde/plane_12.jpg&quot; alt=&quot;Concorde at the gate&quot;&gt;&lt;/sonic-image&gt;
59
+ &lt;sonic-image ratio=&quot;16/9&quot; src=&quot;img/concorde/plane_12.jpg&quot; alt=&quot;Concorde at the gate&quot;&gt;&lt;/sonic-image&gt;
60
+ &lt;sonic-image ratio=&quot;1/1&quot; src=&quot;img/concorde/plane_12.jpg&quot; alt=&quot;Concorde at the gate&quot;&gt;&lt;/sonic-image&gt;
61
+ &lt;sonic-image ratio=&quot;2/3&quot; src=&quot;img/concorde/plane_12.jpg&quot; alt=&quot;Concorde at the gate&quot;&gt;&lt;/sonic-image&gt;
62
+ &lt;/div&gt;
63
+ </code></pre>
64
+ <h2 id="object-position">Object position</h2>
65
+ <p><code>objectPosition</code> maps to CSS <code>object-position</code> (default <code>center center</code>). Use it on wide crops when the subject sits off-center.</p>
66
+ <pre><code>&lt;div class=&quot;grid gap-8 grid-cols-2 items-center&quot;&gt;
67
+ &lt;sonic-image ratio=&quot;11/4&quot; src=&quot;img/concorde/plane_11.jpg&quot; alt=&quot;Concorde flying over a field&quot;&gt;&lt;/sonic-image&gt;
68
+ &lt;sonic-image objectPosition=&quot;center top&quot; ratio=&quot;11/4&quot; src=&quot;img/concorde/plane_11.jpg&quot; alt=&quot;Concorde flying over a field&quot;&gt;&lt;/sonic-image&gt;
69
+ &lt;/div&gt;
70
+ </code></pre>
71
+ <h2 id="cover">Cover</h2>
72
+ <p><code>cover</code> stretches the image over a <strong>positioned</strong> parent (<code>position: relative</code> with a height). <code>ratio</code> is ignored while <code>cover</code> is set.</p>
73
+ <pre><code>&lt;div class=&quot;h-96 relative rounded-lg overflow-hidden&quot;&gt;
74
+ &lt;sonic-image cover src=&quot;img/concorde/plane_10.jpg&quot; alt=&quot;Concorde fleet parked in a star&quot;&gt;&lt;/sonic-image&gt;
75
+ &lt;/div&gt;
76
+ </code></pre>
77
+ <h2 id="load-transition">Load transition</h2>
78
+ <p>Set <code>transition</code> to <code>fade</code> or <code>fade-scale-out</code>. The image stays transparent until the browser fires <code>load</code>, then animates in. <strong>Changing <code>src</code> on an existing element does not replay the effect</strong>: mount a new <code>sonic-image</code> instead (galleries, infinite scroll).</p>
79
+ <pre><code>&lt;div class=&quot;flex flex-wrap gap-2 mb-4&quot;&gt;
80
+ &lt;sonic-button
81
+ size=&quot;sm&quot;
82
+ onclick=&quot;(function () {
83
+ var host = document.getElementById(&#39;sonic-image-transition-host&#39;);
84
+ var img = document.createElement(&#39;sonic-image&#39;);
85
+ img.transition = &#39;fade&#39;;
86
+ img.ratio = &#39;1/1&#39;;
87
+ img.rounded = &#39;md&#39;;
88
+ img.loading = &#39;eager&#39;;
89
+ img.style.width = &#39;8rem&#39;;
90
+ var pics = [&#39;01&#39;, &#39;03&#39;, &#39;04&#39;, &#39;05&#39;, &#39;06&#39;, &#39;07&#39;, &#39;08&#39;, &#39;09&#39;, &#39;10&#39;, &#39;11&#39;, &#39;12&#39;, &#39;13&#39;];
91
+ img.src = &#39;img/concorde/plane_&#39; + pics[host.childElementCount % pics.length] + &#39;.jpg&#39;;
92
+ host.appendChild(img);
93
+ })()&quot;
94
+ &gt;
95
+ Add image (fade)
96
+ &lt;/sonic-button&gt;
97
+ &lt;sonic-button
98
+ size=&quot;sm&quot;
99
+ variant=&quot;outline&quot;
100
+ onclick=&quot;(function () {
101
+ var host = document.getElementById(&#39;sonic-image-transition-host&#39;);
102
+ var img = document.createElement(&#39;sonic-image&#39;);
103
+ img.transition = &#39;fade-scale-out&#39;;
104
+ img.ratio = &#39;1/1&#39;;
105
+ img.rounded = &#39;md&#39;;
106
+ img.loading = &#39;eager&#39;;
107
+ img.style.width = &#39;8rem&#39;;
108
+ var pics = [&#39;01&#39;, &#39;03&#39;, &#39;04&#39;, &#39;05&#39;, &#39;06&#39;, &#39;07&#39;, &#39;08&#39;, &#39;09&#39;, &#39;10&#39;, &#39;11&#39;, &#39;12&#39;, &#39;13&#39;];
109
+ img.src = &#39;img/concorde/plane_&#39; + pics[host.childElementCount % pics.length] + &#39;.jpg&#39;;
110
+ host.appendChild(img);
111
+ })()&quot;
112
+ &gt;
113
+ Add image (fade-scale-out)
114
+ &lt;/sonic-button&gt;
115
+ &lt;sonic-button
116
+ size=&quot;sm&quot;
117
+ variant=&quot;ghost&quot;
118
+ onclick=&quot;document.getElementById(&#39;sonic-image-transition-host&#39;).replaceChildren()&quot;
119
+ &gt;
120
+ Clear
121
+ &lt;/sonic-button&gt;
122
+ &lt;/div&gt;
123
+ &lt;div id=&quot;sonic-image-transition-host&quot; class=&quot;flex flex-wrap gap-2 min-h-[5rem]&quot;&gt;&lt;/div&gt;
124
+ </code></pre>
125
+ <h2 id="accessibility">Accessibility</h2>
126
+ <p>Always set a meaningful <code>alt</code>. Use <code>alt=&quot;&quot;</code> only for decorative images.</p>
127
+ <pre><code>&lt;sonic-image
128
+ rounded=&quot;md&quot;
129
+ ratio=&quot;16/9&quot;
130
+ alt=&quot;Crowd gathered around Concorde at night&quot;
131
+ src=&quot;img/concorde/plane_07.jpg&quot;
132
+ &gt;&lt;/sonic-image&gt;
133
+ </code></pre>
134
+ <h2 id="api-reference">API reference</h2>
135
+ <table>
136
+ <thead>
137
+ <tr>
138
+ <th>Attribute</th>
139
+ <th>Values</th>
140
+ <th>Description</th>
141
+ </tr>
142
+ </thead>
143
+ <tbody><tr>
144
+ <td><code>src</code></td>
145
+ <td>URL</td>
146
+ <td>Image URL passed to <code>&lt;img src&gt;</code></td>
147
+ </tr>
148
+ <tr>
149
+ <td><code>alt</code></td>
150
+ <td>string</td>
151
+ <td>Accessible description; <code>&quot;&quot;</code> only for decorative images</td>
152
+ </tr>
153
+ <tr>
154
+ <td><code>loading</code></td>
155
+ <td><code>lazy</code> (default) · <code>eager</code></td>
156
+ <td>Native lazy loading</td>
157
+ </tr>
158
+ <tr>
159
+ <td><code>ratio</code></td>
160
+ <td>CSS ratio (default <code>auto</code>)</td>
161
+ <td><code>aspect-ratio</code> of the image; ignored when <code>cover</code> is set</td>
162
+ </tr>
163
+ <tr>
164
+ <td><code>rounded</code></td>
165
+ <td><code>none</code> (default) · boolean · <code>base</code> · <code>sm</code> · <code>md</code> · <code>lg</code> · <code>xl</code> · <code>full</code></td>
166
+ <td>Corner radius from theme tokens</td>
167
+ </tr>
168
+ <tr>
169
+ <td><code>objectPosition</code></td>
170
+ <td>CSS position (default <code>center center</code>)</td>
171
+ <td>Maps to <code>object-position</code></td>
172
+ </tr>
173
+ <tr>
174
+ <td><code>imageRendering</code></td>
175
+ <td>CSS value (default <code>auto</code>)</td>
176
+ <td>Maps to <code>image-rendering</code></td>
177
+ </tr>
178
+ <tr>
179
+ <td><code>cover</code></td>
180
+ <td>boolean</td>
181
+ <td>Absolutely fills a positioned parent</td>
182
+ </tr>
183
+ <tr>
184
+ <td><code>transition</code></td>
185
+ <td><code>fade</code> · <code>fade-scale-out</code></td>
186
+ <td>Entrance animation after <code>load</code>; not replayed on <code>src</code> change</td>
187
+ </tr>
188
+ </tbody></table>
189
+ <p>No slots.</p>
190
+
191
+ </article>
192
+ </main>
193
+ </body>
194
+ </html>
@@ -0,0 +1,167 @@
1
+ # Image
2
+
3
+ **`sonic-image`** wraps a responsive `<img>` with aspect ratio, `object-fit: cover`, optional rounded corners and a load transition. The host shows a placeholder background (`--sc-placeholder-bg`) until the file loads. With no `loading`, the image is `lazy`; set `loading="eager"` for above-the-fold images.
4
+
5
+ ## Rounded
6
+
7
+ With no `rounded`, corners are square. Boolean `rounded` uses the theme token `--sc-rounded`; `full` draws a circle when paired with `ratio="1/1"`.
8
+
9
+ <sonic-code>
10
+ <template>
11
+ <div class="grid gap-6 grid-cols-3 lg:grid-cols-4 items-end text-center text-xs">
12
+ <div>
13
+ <sonic-image ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
14
+ <p class="mt-2">default</p>
15
+ </div>
16
+ <div>
17
+ <sonic-image rounded="sm" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
18
+ <p class="mt-2">sm</p>
19
+ </div>
20
+ <div>
21
+ <sonic-image rounded ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
22
+ <p class="mt-2">rounded</p>
23
+ </div>
24
+ <div>
25
+ <sonic-image rounded="md" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
26
+ <p class="mt-2">md</p>
27
+ </div>
28
+ <div>
29
+ <sonic-image rounded="lg" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
30
+ <p class="mt-2">lg</p>
31
+ </div>
32
+ <div>
33
+ <sonic-image rounded="xl" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
34
+ <p class="mt-2">xl</p>
35
+ </div>
36
+ <div>
37
+ <sonic-image rounded="full" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
38
+ <p class="mt-2">full</p>
39
+ </div>
40
+ </div>
41
+ </template>
42
+ </sonic-code>
43
+
44
+ ## Aspect ratio
45
+
46
+ `ratio` sets CSS `aspect-ratio` on the image (default `auto`). The image always fills the host width.
47
+
48
+ <sonic-code>
49
+ <template>
50
+ <div class="grid gap-8 grid-cols-2 items-center">
51
+ <sonic-image src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
52
+ <sonic-image ratio="16/9" src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
53
+ <sonic-image ratio="1/1" src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
54
+ <sonic-image ratio="2/3" src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
55
+ </div>
56
+ </template>
57
+ </sonic-code>
58
+
59
+ ## Object position
60
+
61
+ `objectPosition` maps to CSS `object-position` (default `center center`). Use it on wide crops when the subject sits off-center.
62
+
63
+ <sonic-code>
64
+ <template>
65
+ <div class="grid gap-8 grid-cols-2 items-center">
66
+ <sonic-image ratio="11/4" src="img/concorde/plane_11.jpg" alt="Concorde flying over a field"></sonic-image>
67
+ <sonic-image objectPosition="center top" ratio="11/4" src="img/concorde/plane_11.jpg" alt="Concorde flying over a field"></sonic-image>
68
+ </div>
69
+ </template>
70
+ </sonic-code>
71
+
72
+ ## Cover
73
+
74
+ `cover` stretches the image over a **positioned** parent (`position: relative` with a height). `ratio` is ignored while `cover` is set.
75
+
76
+ <sonic-code>
77
+ <template>
78
+ <div class="h-96 relative rounded-lg overflow-hidden">
79
+ <sonic-image cover src="img/concorde/plane_10.jpg" alt="Concorde fleet parked in a star"></sonic-image>
80
+ </div>
81
+ </template>
82
+ </sonic-code>
83
+
84
+ ## Load transition
85
+
86
+ Set `transition` to `fade` or `fade-scale-out`. The image stays transparent until the browser fires `load`, then animates in. **Changing `src` on an existing element does not replay the effect**: mount a new `sonic-image` instead (galleries, infinite scroll).
87
+
88
+ <sonic-code>
89
+ <template>
90
+ <div class="flex flex-wrap gap-2 mb-4">
91
+ <sonic-button
92
+ size="sm"
93
+ onclick="(function () {
94
+ var host = document.getElementById('sonic-image-transition-host');
95
+ var img = document.createElement('sonic-image');
96
+ img.transition = 'fade';
97
+ img.ratio = '1/1';
98
+ img.rounded = 'md';
99
+ img.loading = 'eager';
100
+ img.style.width = '8rem';
101
+ var pics = ['01', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13'];
102
+ img.src = 'img/concorde/plane_' + pics[host.childElementCount % pics.length] + '.jpg';
103
+ host.appendChild(img);
104
+ })()"
105
+ >
106
+ Add image (fade)
107
+ </sonic-button>
108
+ <sonic-button
109
+ size="sm"
110
+ variant="outline"
111
+ onclick="(function () {
112
+ var host = document.getElementById('sonic-image-transition-host');
113
+ var img = document.createElement('sonic-image');
114
+ img.transition = 'fade-scale-out';
115
+ img.ratio = '1/1';
116
+ img.rounded = 'md';
117
+ img.loading = 'eager';
118
+ img.style.width = '8rem';
119
+ var pics = ['01', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13'];
120
+ img.src = 'img/concorde/plane_' + pics[host.childElementCount % pics.length] + '.jpg';
121
+ host.appendChild(img);
122
+ })()"
123
+ >
124
+ Add image (fade-scale-out)
125
+ </sonic-button>
126
+ <sonic-button
127
+ size="sm"
128
+ variant="ghost"
129
+ onclick="document.getElementById('sonic-image-transition-host').replaceChildren()"
130
+ >
131
+ Clear
132
+ </sonic-button>
133
+ </div>
134
+ <div id="sonic-image-transition-host" class="flex flex-wrap gap-2 min-h-[5rem]"></div>
135
+ </template>
136
+ </sonic-code>
137
+
138
+ ## Accessibility
139
+
140
+ Always set a meaningful `alt`. Use `alt=""` only for decorative images.
141
+
142
+ <sonic-code>
143
+ <template>
144
+ <sonic-image
145
+ rounded="md"
146
+ ratio="16/9"
147
+ alt="Crowd gathered around Concorde at night"
148
+ src="img/concorde/plane_07.jpg"
149
+ ></sonic-image>
150
+ </template>
151
+ </sonic-code>
152
+
153
+ ## API reference
154
+
155
+ | Attribute | Values | Description |
156
+ |----------|---------|-------------|
157
+ | `src` | URL | Image URL passed to `<img src>` |
158
+ | `alt` | string | Accessible description; `""` only for decorative images |
159
+ | `loading` | `lazy` (default) · `eager` | Native lazy loading |
160
+ | `ratio` | CSS ratio (default `auto`) | `aspect-ratio` of the image; ignored when `cover` is set |
161
+ | `rounded` | `none` (default) · boolean · `base` · `sm` · `md` · `lg` · `xl` · `full` | Corner radius from theme tokens |
162
+ | `objectPosition` | CSS position (default `center center`) | Maps to `object-position` |
163
+ | `imageRendering` | CSS value (default `auto`) | Maps to `image-rendering` |
164
+ | `cover` | boolean | Absolutely fills a positioned parent |
165
+ | `transition` | `fade` · `fade-scale-out` | Entrance animation after `load`; not replayed on `src` change |
166
+
167
+ No slots.
@@ -0,0 +1,101 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" data-doc-url="https://concorde.supersoniks.org/core/components/ui/link" data-doc-id="core/components/ui/link/link">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Link — Concorde by Supersoniks</title>
7
+ <meta name="description" content="Links navigate with inherited typography: internal routes, anchors, or external URLs. The default slot is the anchor label. For in-app routing, pair href with pushstate; use autoActive to reflect the ">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/ui/link/link, link, Link, UI component, sonic-link, web component, href, pushstate, autoActive, active, target=&quot;_blank&quot;, rel=&quot;noopener noreferrer&quot;, partial">
9
+ <meta name="concorde-doc-id" content="core/components/ui/link/link">
10
+ <link rel="canonical" href="https://concorde.supersoniks.org/core/components/ui/link">
11
+ <link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/core/components/ui/link.md">
12
+ </head>
13
+ <body>
14
+ <header>
15
+ <p><a href="/docs/index.html">Concorde documentation</a> · <a href="https://concorde.supersoniks.org/core/components/ui/link">same URL (interactive)</a> · <a href="/llms.txt">llms.txt</a></p>
16
+ </header>
17
+ <main>
18
+ <article>
19
+ <p class="doc-lead" id="doc-summary"><strong>Concorde UI component — Link</strong>. Links navigate with inherited typography: internal routes, anchors, or external URLs. The default slot is the anchor label. For in-app routing, pair href with pushstate; use autoActive to reflect the <span>Doc ID: <code>core/components/ui/link/link</code>. Keywords: Concorde, supersoniks, core/components/ui/link/link, link, Link, UI component, sonic-link, web component, href, pushstate, autoActive, active, target=&quot;_blank&quot;, rel=&quot;noopener noreferrer&quot;, partial. URL: <a href="https://concorde.supersoniks.org/core/components/ui/link">https://concorde.supersoniks.org/core/components/ui/link</a>.</span></p>
20
+ <h1 id="link">Link</h1>
21
+ <p>Links <strong>navigate</strong> with inherited typography: internal routes, anchors, or external URLs. The default slot is the anchor label. For in-app routing, pair <strong><code>href</code></strong> with <strong><code>pushstate</code></strong>; use <strong><code>autoActive</code></strong> to reflect the current URL on the host (<code>active</code>).</p>
22
+ <h2 id="basic-example">Basic example</h2>
23
+ <pre><code>&lt;sonic-link href=&quot;/&quot;&gt;Basic link with href attribute&lt;/sonic-link&gt;
24
+ </code></pre>
25
+ <h2 id="target">Target</h2>
26
+ <p><strong><code>target=&quot;_blank&quot;</code></strong> opens a new browsing context and sets <strong><code>rel=&quot;noopener noreferrer&quot;</code></strong>.</p>
27
+ <pre><code>&lt;sonic-link href=&quot;/&quot; target=&quot;_blank&quot;&gt;Link with target attribute&lt;/sonic-link&gt;
28
+ </code></pre>
29
+ <h2 id="pushstate">Pushstate</h2>
30
+ <p>Set <strong><code>pushstate</code></strong> on same-origin <strong><code>href</code></strong> values to intercept clicks and navigate through Concorde’s client router without a full reload.</p>
31
+ <pre><code>&lt;sonic-link href=&quot;/core/components/ui/link&quot; pushstate&gt;Client navigation (pushstate)&lt;/sonic-link&gt;
32
+ </code></pre>
33
+ <h2 id="autoactive">AutoActive</h2>
34
+ <p>Default <strong><code>autoActive</code></strong> is <strong><code>partial</code></strong>: the host gets <strong><code>active</code></strong> when the current URL starts with <strong><code>href</code></strong>. Style with <strong><code>[&amp;[active]]:</code></strong> utilities or host selectors.</p>
35
+ <pre><code>&lt;sonic-link href=&quot;/core/components&quot; class=&quot;[&amp;[active]]:text-success&quot;&gt;autoActive partial (default)&lt;/sonic-link&gt;
36
+ </code></pre>
37
+ <h3 id="autoactive-strict-vs-partial">AutoActive strict vs partial</h3>
38
+ <p><strong><code>strict</code></strong> requires pathname, search, and hash to match. <strong><code>strict-path-only</code></strong> matches pathname and hash but ignores search.</p>
39
+ <pre><code>&lt;div class=&quot;grid gap-3&quot;&gt;
40
+ &lt;sonic-link href=&quot;/core/components/ui/link&quot; autoActive=&quot;strict&quot; class=&quot;[&amp;[active]]:text-success&quot;&gt;autoActive strict&lt;/sonic-link&gt;
41
+ &lt;sonic-link href=&quot;/core/components/ui/button&quot; autoActive=&quot;strict&quot; class=&quot;[&amp;[active]]:text-success&quot;&gt;autoActive strict (other page)&lt;/sonic-link&gt;
42
+ &lt;sonic-link href=&quot;/core/components&quot; autoActive=&quot;strict-path-only&quot; class=&quot;[&amp;[active]]:text-success&quot;&gt;autoActive strict-path-only&lt;/sonic-link&gt;
43
+ &lt;/div&gt;
44
+ </code></pre>
45
+ <h3 id="autoactive-disabled">AutoActive disabled</h3>
46
+ <pre><code>&lt;sonic-link href=&quot;/core/components/ui/link&quot; autoActive=&quot;disabled&quot; class=&quot;[&amp;[active]]:text-success&quot;&gt;autoActive disabled&lt;/sonic-link&gt;
47
+ </code></pre>
48
+ <h2 id="accessibility">Accessibility</h2>
49
+ <p>The inner <strong><code>&lt;a&gt;</code></strong> uses <strong><code>focus-visible</code></strong> outline styling. Set <strong><code>data-aria-label</code></strong> when the slot text is not sufficient on its own.</p>
50
+ <h2 id="api-reference">API reference</h2>
51
+ <table>
52
+ <thead>
53
+ <tr>
54
+ <th>Attribute</th>
55
+ <th>Values</th>
56
+ <th>Description</th>
57
+ </tr>
58
+ </thead>
59
+ <tbody><tr>
60
+ <td><code>href</code></td>
61
+ <td>URL</td>
62
+ <td>Link target; without <strong><code>href</code></strong>, only the slot is rendered (no <strong><code>&lt;a&gt;</code></strong>)</td>
63
+ </tr>
64
+ <tr>
65
+ <td><code>target</code></td>
66
+ <td>e.g. <code>_blank</code></td>
67
+ <td>Navigation target; <strong><code>_blank</code></strong> adds <strong><code>rel=&quot;noopener noreferrer&quot;</code></strong></td>
68
+ </tr>
69
+ <tr>
70
+ <td><code>pushstate</code></td>
71
+ <td>boolean</td>
72
+ <td>Intercepts click for Concorde client navigation without reload</td>
73
+ </tr>
74
+ <tr>
75
+ <td><code>autoActive</code></td>
76
+ <td><code>partial</code> (default) · <code>strict</code> · <code>strict-path-only</code> · <code>disabled</code></td>
77
+ <td>When the host gets the <strong><code>active</code></strong> attribute (same-origin <strong><code>href</code></strong> only)</td>
78
+ </tr>
79
+ <tr>
80
+ <td><code>data-aria-label</code></td>
81
+ <td>string</td>
82
+ <td>Accessible <strong><code>aria-label</code></strong> when the slot text is not enough</td>
83
+ </tr>
84
+ </tbody></table>
85
+ <table>
86
+ <thead>
87
+ <tr>
88
+ <th>Slot</th>
89
+ <th>Description</th>
90
+ </tr>
91
+ </thead>
92
+ <tbody><tr>
93
+ <td><em>(default)</em></td>
94
+ <td>Link content (text, icons)</td>
95
+ </tr>
96
+ </tbody></table>
97
+
98
+ </article>
99
+ </main>
100
+ </body>
101
+ </html>
@@ -0,0 +1,81 @@
1
+ # Link
2
+
3
+ Links **navigate** with inherited typography: internal routes, anchors, or external URLs. The default slot is the anchor label. For in-app routing, pair **`href`** with **`pushstate`**; use **`autoActive`** to reflect the current URL on the host (`active`).
4
+
5
+ ## Basic example
6
+
7
+ <sonic-code>
8
+ <template>
9
+ <sonic-link href="/">Basic link with href attribute</sonic-link>
10
+ </template>
11
+ </sonic-code>
12
+
13
+ ## Target
14
+
15
+ **`target="_blank"`** opens a new browsing context and sets **`rel="noopener noreferrer"`**.
16
+
17
+ <sonic-code>
18
+ <template>
19
+ <sonic-link href="/" target="_blank">Link with target attribute</sonic-link>
20
+ </template>
21
+ </sonic-code>
22
+
23
+ ## Pushstate
24
+
25
+ Set **`pushstate`** on same-origin **`href`** values to intercept clicks and navigate through Concorde’s client router without a full reload.
26
+
27
+ <sonic-code>
28
+ <template>
29
+ <sonic-link href="/core/components/ui/link" pushstate>Client navigation (pushstate)</sonic-link>
30
+ </template>
31
+ </sonic-code>
32
+
33
+ ## AutoActive
34
+
35
+ Default **`autoActive`** is **`partial`**: the host gets **`active`** when the current URL starts with **`href`**. Style with **`[&[active]]:`** utilities or host selectors.
36
+
37
+ <sonic-code>
38
+ <template>
39
+ <sonic-link href="/core/components" class="[&[active]]:text-success">autoActive partial (default)</sonic-link>
40
+ </template>
41
+ </sonic-code>
42
+
43
+ ### AutoActive strict vs partial
44
+
45
+ **`strict`** requires pathname, search, and hash to match. **`strict-path-only`** matches pathname and hash but ignores search.
46
+
47
+ <sonic-code>
48
+ <template>
49
+ <div class="grid gap-3">
50
+ <sonic-link href="/core/components/ui/link" autoActive="strict" class="[&[active]]:text-success">autoActive strict</sonic-link>
51
+ <sonic-link href="/core/components/ui/button" autoActive="strict" class="[&[active]]:text-success">autoActive strict (other page)</sonic-link>
52
+ <sonic-link href="/core/components" autoActive="strict-path-only" class="[&[active]]:text-success">autoActive strict-path-only</sonic-link>
53
+ </div>
54
+ </template>
55
+ </sonic-code>
56
+
57
+ ### AutoActive disabled
58
+
59
+ <sonic-code>
60
+ <template>
61
+ <sonic-link href="/core/components/ui/link" autoActive="disabled" class="[&[active]]:text-success">autoActive disabled</sonic-link>
62
+ </template>
63
+ </sonic-code>
64
+
65
+ ## Accessibility
66
+
67
+ The inner **`<a>`** uses **`focus-visible`** outline styling. Set **`data-aria-label`** when the slot text is not sufficient on its own.
68
+
69
+ ## API reference
70
+
71
+ | Attribute | Values | Description |
72
+ |----------|---------|-------------|
73
+ | `href` | URL | Link target; without **`href`**, only the slot is rendered (no **`<a>`**) |
74
+ | `target` | e.g. `_blank` | Navigation target; **`_blank`** adds **`rel="noopener noreferrer"`** |
75
+ | `pushstate` | boolean | Intercepts click for Concorde client navigation without reload |
76
+ | `autoActive` | `partial` (default) · `strict` · `strict-path-only` · `disabled` | When the host gets the **`active`** attribute (same-origin **`href`** only) |
77
+ | `data-aria-label` | string | Accessible **`aria-label`** when the slot text is not enough |
78
+
79
+ | Slot | Description |
80
+ |------|-------------|
81
+ | *(default)* | Link content (text, icons) |