@supersoniks/concorde 5.1.2 → 5.1.3-immutable.1

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 (497) hide show
  1. package/.agents/skills/concorde-docs/SKILL.md +1 -1
  2. package/.claude/skills +1 -0
  3. package/.github/workflows/ci.yml +21 -0
  4. package/.github-export-ignore +30 -0
  5. package/CONTRIBUTING.md +59 -0
  6. package/DEV.md +54 -0
  7. package/LICENSE +21 -0
  8. package/OPEN_SOURCE_CHECKPOINT.md +133 -0
  9. package/README.md +1 -1
  10. package/ai/README.md +29 -41
  11. package/ai/skills/concorde/SKILL.md +54 -324
  12. package/ai/skills/concorde/rules/composition.md +32 -0
  13. package/ai/skills/concorde/rules/data.md +47 -0
  14. package/ai/skills/concorde/rules/http.md +25 -0
  15. package/ai/skills/concorde/rules/lists-forms.md +35 -0
  16. package/ai/skills/concorde/rules/styling.md +46 -0
  17. package/ai/skills/concorde/rules/troubleshooting.md +45 -0
  18. package/build-infos.json +1 -1
  19. package/concorde-core.bundle.js +177 -177
  20. package/concorde-core.es.js +4993 -4833
  21. package/custom-elements-manifest.public.config.mjs +8 -0
  22. package/{.tmp-cem/custom-elements.json → custom-elements.json} +11722 -8868
  23. package/dist/concorde-core.bundle.js +177 -177
  24. package/dist/concorde-core.es.js +4993 -4833
  25. package/dist/docs-mock-api-sw.js +58 -223
  26. package/dist/docs-mock-api-sw.js.map +4 -4
  27. package/dist/img/og-concorde.jpg +0 -0
  28. package/dist/robots.txt +11 -10
  29. package/docs/assets/index-CD4WyL6o.css +1 -0
  30. package/docs/assets/index-D_alEsng.js +12122 -0
  31. package/docs/crawl/core/components/functional/date/date.html +190 -0
  32. package/docs/crawl/core/components/functional/fetch/fetch.html +109 -0
  33. package/docs/crawl/core/components/functional/if/if.html +27 -0
  34. package/docs/crawl/core/components/functional/jsonata/jsonata.html +79 -0
  35. package/docs/crawl/core/components/functional/list/list.html +70 -0
  36. package/docs/crawl/core/components/functional/mix/mix.html +45 -0
  37. package/docs/crawl/core/components/functional/queue/queue.html +96 -0
  38. package/docs/crawl/core/components/functional/router/router.html +106 -0
  39. package/docs/{core → crawl/core}/components/functional/sdui/sdui-extension-points.html +8 -9
  40. package/docs/crawl/core/components/functional/sdui/sdui.html +368 -0
  41. package/docs/crawl/core/components/functional/states/states.html +66 -0
  42. package/docs/crawl/core/components/functional/submit/submit.html +160 -0
  43. package/docs/{core → crawl/core}/components/functional/subscriber/subscriber.html +5 -6
  44. package/docs/crawl/core/components/functional/value/value.html +51 -0
  45. package/docs/{core → crawl/core}/components/ui/alert/alert.html +63 -53
  46. package/docs/{core → crawl/core}/components/ui/alert-messages/alert-messages.html +5 -6
  47. package/docs/{core → crawl/core}/components/ui/badge/badge.html +33 -33
  48. package/docs/crawl/core/components/ui/button/button.html +150 -0
  49. package/docs/crawl/core/components/ui/captcha/captcha.html +112 -0
  50. package/docs/{core → crawl/core}/components/ui/card/card.html +11 -12
  51. package/docs/{core → crawl/core}/components/ui/divider/divider.html +14 -14
  52. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +73 -0
  53. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +266 -0
  54. package/docs/{core → crawl/core}/components/ui/form/form-actions/form-actions.html +23 -23
  55. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +121 -0
  56. package/docs/crawl/core/components/ui/form/input/input.html +109 -0
  57. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +38 -0
  58. package/docs/crawl/core/components/ui/form/radio/radio.html +56 -0
  59. package/docs/crawl/core/components/ui/form/select/select.html +73 -0
  60. package/docs/crawl/core/components/ui/form/switch/switch.html +56 -0
  61. package/docs/crawl/core/components/ui/form/textarea/textarea.html +59 -0
  62. package/docs/crawl/core/components/ui/group/group.html +104 -0
  63. package/docs/{core → crawl/core}/components/ui/icon/icon.html +9 -10
  64. package/docs/crawl/core/components/ui/image/image.html +298 -0
  65. package/docs/{core → crawl/core}/components/ui/link/link.html +11 -12
  66. package/docs/crawl/core/components/ui/loader/loader.html +124 -0
  67. package/docs/{core → crawl/core}/components/ui/menu/menu.html +33 -34
  68. package/docs/crawl/core/components/ui/modal/modal.html +342 -0
  69. package/docs/crawl/core/components/ui/pop/pop.html +296 -0
  70. package/docs/{core → crawl/core}/components/ui/progress/progress.html +7 -8
  71. package/docs/crawl/core/components/ui/table/table.html +545 -0
  72. package/docs/crawl/core/components/ui/theme/theme.html +131 -0
  73. package/docs/crawl/core/components/ui/toast/toast.html +233 -0
  74. package/docs/crawl/core/components/ui/tooltip/tooltip.html +140 -0
  75. package/docs/{docs/getting-started → crawl/docs/_core-concept}/dataFlow.html +29 -26
  76. package/docs/crawl/docs/_core-concept/overview.html +66 -0
  77. package/docs/crawl/docs/_core-concept/subscriber.html +75 -0
  78. package/docs/crawl/docs/_decorators/ancestor-attribute.html +117 -0
  79. package/docs/crawl/docs/_decorators/auto-subscribe.html +202 -0
  80. package/docs/crawl/docs/_decorators/bind.html +141 -0
  81. package/docs/crawl/docs/_decorators/get.html +149 -0
  82. package/docs/crawl/docs/_decorators/handle.html +165 -0
  83. package/docs/crawl/docs/_decorators/on-assign.html +355 -0
  84. package/docs/crawl/docs/_decorators/patch.html +78 -0
  85. package/docs/crawl/docs/_decorators/post.html +139 -0
  86. package/docs/crawl/docs/_decorators/publish.html +61 -0
  87. package/docs/crawl/docs/_decorators/put.html +78 -0
  88. package/docs/crawl/docs/_decorators/subscribe.html +109 -0
  89. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +137 -0
  90. package/docs/crawl/docs/_directives/sub.html +93 -0
  91. package/docs/{docs/getting-started → crawl/docs/_getting-started}/ai-agents.html +11 -12
  92. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +100 -0
  93. package/docs/crawl/docs/_getting-started/concorde-outside.html +58 -0
  94. package/docs/{docs/getting-started → crawl/docs/_getting-started}/create-a-component.html +14 -11
  95. package/docs/{docs/getting-started → crawl/docs/_getting-started}/my-first-component.html +22 -13
  96. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +110 -0
  97. package/docs/crawl/docs/_getting-started/pubsub.html +62 -0
  98. package/docs/crawl/docs/_getting-started/start.html +76 -0
  99. package/docs/{docs/getting-started → crawl/docs/_getting-started}/theming.html +9 -10
  100. package/docs/{docs/misc → crawl/docs/_misc}/api-configuration.html +18 -18
  101. package/docs/{docs/misc → crawl/docs/_misc}/dataProviderKey.html +11 -12
  102. package/docs/{docs/misc → crawl/docs/_misc}/docs-mock-api.html +28 -25
  103. package/docs/{docs/misc → crawl/docs/_misc}/dynamic-path.html +15 -16
  104. package/docs/{docs/misc → crawl/docs/_misc}/endpoint.html +15 -16
  105. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
  106. package/docs/{docs/misc → crawl/docs/_misc}/html-integration.html +15 -12
  107. package/docs/crawl/hubs/decorators.html +547 -0
  108. package/docs/crawl/hubs/form-components.html +381 -0
  109. package/docs/crawl/hubs/remote-data.html +452 -0
  110. package/docs/crawl/index.html +103 -0
  111. package/docs/docs-mock-api-sw.js +223 -58
  112. package/docs/docs-mock-api-sw.js.map +4 -4
  113. package/docs/index.html +68 -95
  114. package/docs/llms-full.txt +3610 -2231
  115. package/docs/llms.txt +86 -94
  116. package/docs/robots.txt +10 -11
  117. package/docs/sitemap.xml +84 -78
  118. package/docs/src/core/components/functional/date/date.md +231 -91
  119. package/docs/src/core/components/functional/fetch/fetch.md +83 -66
  120. package/docs/src/core/components/functional/if/if.md +3 -28
  121. package/docs/src/core/components/functional/jsonata/jsonata.md +37 -42
  122. package/docs/src/core/components/functional/list/list.md +43 -99
  123. package/docs/src/core/components/functional/mix/mix.md +26 -31
  124. package/docs/src/core/components/functional/queue/queue.md +61 -40
  125. package/docs/src/core/components/functional/router/router.md +65 -64
  126. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  127. package/docs/src/core/components/functional/sdui/component-catalog.json +1 -1
  128. package/docs/src/core/components/functional/sdui/example.json +86 -19
  129. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  130. package/docs/src/core/components/functional/sdui/sdui.md +358 -187
  131. package/docs/src/core/components/functional/states/states.md +61 -86
  132. package/docs/src/core/components/functional/submit/submit.md +72 -64
  133. package/docs/src/core/components/functional/value/value.md +22 -34
  134. package/docs/src/core/components/ui/alert/alert.md +58 -48
  135. package/docs/src/core/components/ui/badge/badge.md +34 -27
  136. package/docs/src/core/components/ui/button/button.md +106 -139
  137. package/docs/src/core/components/ui/captcha/captcha.md +32 -17
  138. package/docs/src/core/components/ui/card/card.md +6 -6
  139. package/docs/src/core/components/ui/divider/divider.md +11 -8
  140. package/docs/src/core/components/ui/form/checkbox/checkbox.md +42 -90
  141. package/docs/src/core/components/ui/form/fieldset/fieldset.md +75 -31
  142. package/docs/src/core/components/ui/form/form-actions/form-actions.md +16 -14
  143. package/docs/src/core/components/ui/form/form-layout/form-layout.md +29 -19
  144. package/docs/src/core/components/ui/form/input/input.md +95 -95
  145. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +29 -0
  146. package/docs/src/core/components/ui/form/radio/radio.md +34 -55
  147. package/docs/src/core/components/ui/form/select/select.md +45 -60
  148. package/docs/src/core/components/ui/form/switch/switch.md +34 -57
  149. package/docs/src/core/components/ui/form/textarea/textarea.md +38 -55
  150. package/docs/src/core/components/ui/group/group.md +33 -35
  151. package/docs/src/core/components/ui/icon/icon.md +4 -4
  152. package/docs/src/core/components/ui/image/image.md +107 -41
  153. package/docs/src/core/components/ui/link/link.md +6 -6
  154. package/docs/src/core/components/ui/loader/loader.md +55 -30
  155. package/docs/src/core/components/ui/menu/menu.md +27 -27
  156. package/docs/src/core/components/ui/modal/modal.md +96 -72
  157. package/docs/src/core/components/ui/pop/pop.md +158 -80
  158. package/docs/src/core/components/ui/progress/progress.md +2 -2
  159. package/docs/src/core/components/ui/table/table.md +255 -91
  160. package/docs/src/core/components/ui/theme/theme.md +36 -11
  161. package/docs/src/core/components/ui/toast/toast.md +117 -48
  162. package/docs/src/core/components/ui/tooltip/tooltip.md +62 -27
  163. package/docs/{docs/getting-started → src/docs/_core-concept}/dataFlow.md +18 -17
  164. package/docs/src/docs/_core-concept/overview.md +57 -0
  165. package/docs/src/docs/_core-concept/subscriber.md +75 -0
  166. package/docs/src/docs/_decorators/ancestor-attribute.md +128 -0
  167. package/docs/src/docs/_decorators/auto-subscribe.md +202 -0
  168. package/docs/src/docs/_decorators/bind.md +167 -0
  169. package/docs/src/docs/_decorators/get.md +162 -0
  170. package/docs/src/docs/_decorators/handle.md +175 -0
  171. package/docs/src/docs/_decorators/on-assign.md +390 -0
  172. package/docs/src/docs/_decorators/patch.md +70 -0
  173. package/docs/src/docs/_decorators/post.md +146 -0
  174. package/docs/src/docs/_decorators/publish.md +55 -0
  175. package/docs/src/docs/_decorators/put.md +70 -0
  176. package/docs/src/docs/_decorators/subscribe.md +100 -0
  177. package/docs/src/docs/_decorators/wait-for-ancestors.md +163 -0
  178. package/docs/src/docs/_directives/sub.md +91 -0
  179. package/docs/src/docs/{getting-started → _getting-started}/ai-agents.md +3 -3
  180. package/docs/src/docs/_getting-started/concorde-manual-install.md +133 -0
  181. package/docs/src/docs/_getting-started/concorde-outside.md +33 -0
  182. package/docs/{docs/getting-started → src/docs/_getting-started}/create-a-component.md +6 -3
  183. package/docs/src/docs/{getting-started → _getting-started}/my-first-component.md +14 -5
  184. package/docs/src/docs/_getting-started/my-first-subscriber.md +120 -0
  185. package/docs/src/docs/_getting-started/pubsub.md +37 -0
  186. package/docs/src/docs/{getting-started → _getting-started}/start.md +13 -1
  187. package/docs/src/docs/{getting-started → _getting-started}/theming.md +2 -2
  188. package/docs/src/docs/{misc → _misc}/api-configuration.md +12 -10
  189. package/docs/src/docs/{misc → _misc}/dataProviderKey.md +4 -4
  190. package/docs/{docs/misc → src/docs/_misc}/docs-mock-api.md +13 -12
  191. package/docs/{docs/misc → src/docs/_misc}/dynamic-path.md +8 -8
  192. package/docs/{docs/misc → src/docs/_misc}/endpoint.md +8 -8
  193. package/docs/src/docs/_misc/formelement-subscriber-removal.md +115 -0
  194. package/docs/{docs/misc → src/docs/_misc}/html-integration.md +5 -4
  195. package/docs/src/docs/search/docs-search.json +4375 -2420
  196. package/docs/src/tsconfig.declarations.json +22 -0
  197. package/docs/src/tsconfig.emit.json +23 -0
  198. package/docs/src/tsconfig.json +2 -23
  199. package/gitlab/job_github_mirror.sh +39 -0
  200. package/index.html +89 -0
  201. package/package.json +22 -4
  202. package/public/img/og-concorde.jpg +0 -0
  203. package/scripts/ai-init.mjs +104 -379
  204. package/scripts/ai-init.test.mjs +81 -239
  205. package/scripts/docs-markdown-vite-plugin.ts +11 -5
  206. package/scripts/docs-public-url.mjs +6 -0
  207. package/scripts/docs.htaccess +7 -0
  208. package/scripts/generate-cem.mjs +244 -0
  209. package/scripts/generate-cem.test.mjs +122 -0
  210. package/scripts/generate-crawl-docs.mjs +29 -5
  211. package/scripts/generate-sdui-catalog.mjs +11 -10
  212. package/scripts/github-export.mjs +150 -0
  213. package/scripts/post-build-docs.js +3 -0
  214. package/scripts/post-build.mjs +0 -0
  215. package/scripts/pre-publish.mjs +2 -1
  216. package/scripts/site-pages.mjs +212 -0
  217. package/scripts/site-pages.test.mjs +116 -0
  218. package/site-pages/about.md +22 -0
  219. package/site-pages/privacy.md +32 -0
  220. package/src/core/components/functional/date/date.md +1 -1
  221. package/src/core/components/functional/example/example.ts +3 -1
  222. package/src/core/components/functional/if/if.ts +0 -0
  223. package/src/core/components/functional/list/list.demo.ts +0 -0
  224. package/src/core/components/functional/list/list.md +6 -2
  225. package/src/core/components/functional/list/list.ts +17 -4
  226. package/src/core/components/functional/mix/mix.md +0 -0
  227. package/src/core/components/functional/router/router.demo.ts +0 -0
  228. package/src/core/components/functional/router/router.ts +0 -0
  229. package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +0 -0
  230. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  231. package/src/core/components/functional/sdui/component-catalog.json +2 -2
  232. package/src/core/components/functional/sdui/example.json +0 -0
  233. package/src/core/components/functional/sdui/sdui-immutable.spec.ts +74 -0
  234. package/src/core/components/functional/sdui/sdui.ts +33 -8
  235. package/src/core/components/functional/sdui/types.ts +0 -0
  236. package/src/core/components/functional/states/states.ts +0 -0
  237. package/src/core/components/functional/submit/submit.spec.ts +60 -0
  238. package/src/core/components/functional/submit/submit.ts +6 -3
  239. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  240. package/src/core/components/functional/value/value.md +0 -0
  241. package/src/core/components/functional/value/value.ts +0 -0
  242. package/src/core/components/ui/_css/size.ts +0 -0
  243. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  244. package/src/core/components/ui/card/card.md +1 -1
  245. package/src/core/components/ui/form/input/input.md +19 -1
  246. package/src/core/components/ui/form/input/input.ts +8 -2
  247. package/src/core/components/ui/form/radio/radio.md +14 -0
  248. package/src/core/components/ui/image/image.md +17 -17
  249. package/src/core/components/ui/modal/modal.md +2 -2
  250. package/src/core/decorators/subscriber/bind.ts +9 -14
  251. package/src/core/decorators/subscriber/subscribe.ts +15 -9
  252. package/src/core/decorators/subscriber/subscribe.type-test.ts +14 -5
  253. package/src/core/mixins/Subscriber.ts +0 -0
  254. package/src/core/utils/DataBindObserver.ts +0 -0
  255. package/src/core/utils/Objects.ts +0 -0
  256. package/src/core/utils/PublisherProxy.ts +166 -125
  257. package/src/core/utils/deepReadonly.spec.ts +66 -0
  258. package/src/core/utils/deepReadonly.ts +71 -0
  259. package/src/core/utils/immutableValue.spec.ts +54 -0
  260. package/src/core/utils/immutableValue.ts +102 -0
  261. package/src/core/utils/nestedDotForm.spec.ts +88 -0
  262. package/src/core/utils/publisherImmutable.spec.ts +76 -0
  263. package/src/core/utils/route.ts +0 -0
  264. package/src/core/utils/strictGet.spec.ts +61 -0
  265. package/src/core/utils/strictGet.ts +102 -0
  266. package/src/css.d.ts +19 -0
  267. package/src/docs/components/docs-demo-sources.ts +3 -3
  268. package/src/docs/decorators/bind.md +23 -24
  269. package/src/docs/docs-location.spec.ts +10 -0
  270. package/src/docs/docs-location.ts +10 -0
  271. package/src/docs/example/decorators-demo-bind-demos.ts +11 -28
  272. package/src/docs/example/docs-toggle-demos.ts +1 -1
  273. package/src/docs/example/users.ts +0 -0
  274. package/src/docs/getting-started/ai-agents.md +29 -55
  275. package/src/docs/getting-started/dataFlow.md +2 -2
  276. package/src/docs/home/home.ts +3 -1
  277. package/src/docs/misc/publisher-get-immutability-docs-crawl.json +902 -0
  278. package/src/docs/misc/publisher-get-immutability-docs-recheck.json +13 -0
  279. package/src/docs/misc/publisher-get-immutability-study.md +229 -0
  280. package/src/docs/navigation/navigation.ts +5 -1
  281. package/src/docs/search/docs-search.json +358 -58
  282. package/src/docs/search/markdown-renderer.ts +6 -1
  283. package/src/docs/tailwind/css/docs/content.css +4 -5
  284. package/src/tsconfig.declarations.json +22 -0
  285. package/src/tsconfig.emit.json +23 -0
  286. package/src/tsconfig.json +53 -5
  287. package/src/tsconfig.tsbuildinfo +1 -1
  288. package/.taste-skill/after/desktop-fold.jpg +0 -0
  289. package/.taste-skill/after/desktop-page-01.jpg +0 -0
  290. package/.taste-skill/after/desktop-page-02.jpg +0 -0
  291. package/.taste-skill/after/desktop-page-03.jpg +0 -0
  292. package/.taste-skill/after/mobile-fold.jpg +0 -0
  293. package/.taste-skill/after/mobile-page-01.jpg +0 -0
  294. package/.taste-skill/after/report.json +0 -4103
  295. package/.taste-skill/after/tablet-fold.jpg +0 -0
  296. package/.taste-skill/after/tablet-page-01.jpg +0 -0
  297. package/.taste-skill/after/tablet-page-02.jpg +0 -0
  298. package/.taste-skill/before/desktop-fold.jpg +0 -0
  299. package/.taste-skill/before/desktop-page-01.jpg +0 -0
  300. package/.taste-skill/before/desktop-page-02.jpg +0 -0
  301. package/.taste-skill/before/mobile-fold.jpg +0 -0
  302. package/.taste-skill/before/mobile-page-01.jpg +0 -0
  303. package/.taste-skill/before/report.json +0 -2556
  304. package/.taste-skill/before/tablet-fold.jpg +0 -0
  305. package/.taste-skill/before/tablet-page-01.jpg +0 -0
  306. package/.taste-skill/direction.json +0 -510
  307. package/.taste-skill/notes.md +0 -84
  308. package/.taste-skill/prod/desktop-fold.jpg +0 -0
  309. package/.taste-skill/prod/desktop-page-01.jpg +0 -0
  310. package/.taste-skill/prod/desktop-page-02.jpg +0 -0
  311. package/.taste-skill/prod/desktop-page-03.jpg +0 -0
  312. package/.taste-skill/prod/mobile-fold.jpg +0 -0
  313. package/.taste-skill/prod/mobile-page-01.jpg +0 -0
  314. package/.taste-skill/prod/mobile-page-02.jpg +0 -0
  315. package/.taste-skill/prod/report.json +0 -1973
  316. package/.taste-skill/prod/tablet-fold.jpg +0 -0
  317. package/.taste-skill/prod/tablet-page-01.jpg +0 -0
  318. package/.taste-skill/prod/tablet-page-02.jpg +0 -0
  319. package/AUDIT.md +0 -228
  320. package/PLAN-AMELIORATION.md +0 -220
  321. package/PLAN-DOCS-AGENTS.md +0 -80
  322. package/ai/AGENTS.md +0 -56
  323. package/ai/cursor/rules/concorde-menu.mdc +0 -15
  324. package/ai/cursor/rules/concorde-scope.mdc +0 -14
  325. package/ai/cursor/rules/concorde-theme.mdc +0 -13
  326. package/ai/cursor/rules/concorde.mdc +0 -66
  327. package/ai/jetbrains/rules/concorde.md +0 -53
  328. package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
  329. package/ai/skills/concorde-imports/SKILL.md +0 -78
  330. package/ai/skills/concorde-menu/SKILL.md +0 -74
  331. package/ai/skills/concorde-scope/SKILL.md +0 -70
  332. package/ai/skills/concorde-theme/SKILL.md +0 -57
  333. package/docs/.htaccess +0 -75
  334. package/docs/404.html +0 -15
  335. package/docs/404.md +0 -5
  336. package/docs/assets/index-BgG6FFPt.js +0 -11765
  337. package/docs/assets/index-x89XINSG.css +0 -1
  338. package/docs/core/components/functional/date/date.html +0 -211
  339. package/docs/core/components/functional/date/date.md +0 -150
  340. package/docs/core/components/functional/fetch/fetch.html +0 -180
  341. package/docs/core/components/functional/fetch/fetch.md +0 -108
  342. package/docs/core/components/functional/if/if.html +0 -65
  343. package/docs/core/components/functional/if/if.md +0 -34
  344. package/docs/core/components/functional/jsonata/jsonata.html +0 -110
  345. package/docs/core/components/functional/jsonata/jsonata.md +0 -61
  346. package/docs/core/components/functional/list/list.html +0 -198
  347. package/docs/core/components/functional/list/list.md +0 -121
  348. package/docs/core/components/functional/mix/mix.html +0 -78
  349. package/docs/core/components/functional/mix/mix.md +0 -46
  350. package/docs/core/components/functional/queue/queue.html +0 -155
  351. package/docs/core/components/functional/queue/queue.md +0 -51
  352. package/docs/core/components/functional/router/router.html +0 -154
  353. package/docs/core/components/functional/router/router.md +0 -93
  354. package/docs/core/components/functional/sdui/sdui-extension-points.md +0 -94
  355. package/docs/core/components/functional/sdui/sdui.html +0 -397
  356. package/docs/core/components/functional/sdui/sdui.md +0 -307
  357. package/docs/core/components/functional/states/states.html +0 -141
  358. package/docs/core/components/functional/states/states.md +0 -112
  359. package/docs/core/components/functional/submit/submit.html +0 -178
  360. package/docs/core/components/functional/submit/submit.md +0 -106
  361. package/docs/core/components/functional/subscriber/subscriber.md +0 -91
  362. package/docs/core/components/functional/translation/translation.html +0 -60
  363. package/docs/core/components/functional/translation/translation.md +0 -38
  364. package/docs/core/components/functional/value/value.html +0 -81
  365. package/docs/core/components/functional/value/value.md +0 -47
  366. package/docs/core/components/ui/alert/alert.md +0 -186
  367. package/docs/core/components/ui/alert-messages/alert-messages.md +0 -85
  368. package/docs/core/components/ui/badge/badge.md +0 -181
  369. package/docs/core/components/ui/button/button.html +0 -309
  370. package/docs/core/components/ui/button/button.md +0 -216
  371. package/docs/core/components/ui/captcha/captcha.html +0 -80
  372. package/docs/core/components/ui/captcha/captcha.md +0 -56
  373. package/docs/core/components/ui/card/card.md +0 -215
  374. package/docs/core/components/ui/divider/divider.md +0 -126
  375. package/docs/core/components/ui/form/checkbox/checkbox.html +0 -200
  376. package/docs/core/components/ui/form/checkbox/checkbox.md +0 -125
  377. package/docs/core/components/ui/form/fieldset/fieldset.html +0 -238
  378. package/docs/core/components/ui/form/fieldset/fieldset.md +0 -161
  379. package/docs/core/components/ui/form/form-actions/form-actions.md +0 -98
  380. package/docs/core/components/ui/form/form-layout/form-layout.html +0 -115
  381. package/docs/core/components/ui/form/form-layout/form-layout.md +0 -109
  382. package/docs/core/components/ui/form/input/input.html +0 -235
  383. package/docs/core/components/ui/form/input/input.md +0 -142
  384. package/docs/core/components/ui/form/radio/radio.html +0 -144
  385. package/docs/core/components/ui/form/radio/radio.md +0 -78
  386. package/docs/core/components/ui/form/select/select.html +0 -178
  387. package/docs/core/components/ui/form/select/select.md +0 -86
  388. package/docs/core/components/ui/form/switch/switch.html +0 -146
  389. package/docs/core/components/ui/form/switch/switch.md +0 -80
  390. package/docs/core/components/ui/form/textarea/textarea.html +0 -162
  391. package/docs/core/components/ui/form/textarea/textarea.md +0 -82
  392. package/docs/core/components/ui/group/group.html +0 -113
  393. package/docs/core/components/ui/group/group.md +0 -77
  394. package/docs/core/components/ui/icon/icon.md +0 -214
  395. package/docs/core/components/ui/image/image.html +0 -194
  396. package/docs/core/components/ui/image/image.md +0 -167
  397. package/docs/core/components/ui/link/link.md +0 -81
  398. package/docs/core/components/ui/loader/loader.html +0 -114
  399. package/docs/core/components/ui/loader/loader.md +0 -87
  400. package/docs/core/components/ui/menu/menu.md +0 -370
  401. package/docs/core/components/ui/modal/modal.html +0 -324
  402. package/docs/core/components/ui/modal/modal.md +0 -211
  403. package/docs/core/components/ui/pop/pop.html +0 -250
  404. package/docs/core/components/ui/pop/pop.md +0 -216
  405. package/docs/core/components/ui/progress/progress.md +0 -109
  406. package/docs/core/components/ui/table/table.html +0 -333
  407. package/docs/core/components/ui/table/table.md +0 -267
  408. package/docs/core/components/ui/theme/theme.html +0 -116
  409. package/docs/core/components/ui/theme/theme.md +0 -97
  410. package/docs/core/components/ui/toast/toast.html +0 -185
  411. package/docs/core/components/ui/toast/toast.md +0 -147
  412. package/docs/core/components/ui/tooltip/tooltip.html +0 -112
  413. package/docs/core/components/ui/tooltip/tooltip.md +0 -89
  414. package/docs/docs/decorators/ancestor-attribute.html +0 -71
  415. package/docs/docs/decorators/ancestor-attribute.md +0 -59
  416. package/docs/docs/decorators/auto-subscribe.html +0 -61
  417. package/docs/docs/decorators/auto-subscribe.md +0 -40
  418. package/docs/docs/decorators/bind.html +0 -86
  419. package/docs/docs/decorators/bind.md +0 -77
  420. package/docs/docs/decorators/get.html +0 -166
  421. package/docs/docs/decorators/get.md +0 -160
  422. package/docs/docs/decorators/handle.html +0 -139
  423. package/docs/docs/decorators/handle.md +0 -119
  424. package/docs/docs/decorators/on-assign.html +0 -72
  425. package/docs/docs/decorators/on-assign.md +0 -63
  426. package/docs/docs/decorators/patch.html +0 -76
  427. package/docs/docs/decorators/patch.md +0 -44
  428. package/docs/docs/decorators/post.html +0 -150
  429. package/docs/docs/decorators/post.md +0 -134
  430. package/docs/docs/decorators/publish.html +0 -74
  431. package/docs/docs/decorators/publish.md +0 -56
  432. package/docs/docs/decorators/put.html +0 -83
  433. package/docs/docs/decorators/put.md +0 -51
  434. package/docs/docs/decorators/subscribe.html +0 -91
  435. package/docs/docs/decorators/subscribe.md +0 -87
  436. package/docs/docs/decorators/wait-for-ancestors.html +0 -82
  437. package/docs/docs/decorators/wait-for-ancestors.md +0 -76
  438. package/docs/docs/directives/sub.html +0 -79
  439. package/docs/docs/directives/sub.md +0 -75
  440. package/docs/docs/directives/t.html +0 -91
  441. package/docs/docs/directives/t.md +0 -73
  442. package/docs/docs/getting-started/ai-agents.md +0 -76
  443. package/docs/docs/getting-started/components.html +0 -27
  444. package/docs/docs/getting-started/components.md +0 -5
  445. package/docs/docs/getting-started/installation.html +0 -69
  446. package/docs/docs/getting-started/installation.md +0 -36
  447. package/docs/docs/getting-started/my-first-component.md +0 -227
  448. package/docs/docs/getting-started/start.html +0 -47
  449. package/docs/docs/getting-started/start.md +0 -35
  450. package/docs/docs/getting-started/theming.md +0 -253
  451. package/docs/docs/index.html +0 -99
  452. package/docs/docs/misc/api-configuration.md +0 -79
  453. package/docs/docs/misc/dataProviderKey.md +0 -168
  454. package/docs/hubs/decorators.html +0 -443
  455. package/docs/hubs/form-components.html +0 -404
  456. package/docs/hubs/remote-data.html +0 -371
  457. package/docs/img/archive/concorde-001-2cv.webp +0 -0
  458. package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  459. package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
  460. package/docs/img/archive/credits.json +0 -28
  461. package/docs/index.md +0 -22
  462. package/docs/src/core/components/functional/translation/translation.md +0 -38
  463. package/docs/src/docs/decorators/ancestor-attribute.md +0 -59
  464. package/docs/src/docs/decorators/auto-subscribe.md +0 -40
  465. package/docs/src/docs/decorators/bind.md +0 -77
  466. package/docs/src/docs/decorators/get.md +0 -160
  467. package/docs/src/docs/decorators/handle.md +0 -119
  468. package/docs/src/docs/decorators/on-assign.md +0 -63
  469. package/docs/src/docs/decorators/patch.md +0 -44
  470. package/docs/src/docs/decorators/post.md +0 -134
  471. package/docs/src/docs/decorators/publish.md +0 -56
  472. package/docs/src/docs/decorators/put.md +0 -51
  473. package/docs/src/docs/decorators/subscribe.md +0 -87
  474. package/docs/src/docs/decorators/wait-for-ancestors.md +0 -76
  475. package/docs/src/docs/directives/sub.md +0 -75
  476. package/docs/src/docs/directives/t.md +0 -73
  477. package/docs/src/docs/getting-started/components.md +0 -5
  478. package/docs/src/docs/getting-started/create-a-component.md +0 -136
  479. package/docs/src/docs/getting-started/dataFlow.md +0 -87
  480. package/docs/src/docs/getting-started/installation.md +0 -36
  481. package/docs/src/docs/misc/docs-mock-api.md +0 -62
  482. package/docs/src/docs/misc/dynamic-path.md +0 -71
  483. package/docs/src/docs/misc/endpoint.md +0 -45
  484. package/docs/src/docs/misc/html-integration.md +0 -14
  485. /package/{docs → dist}/img/concorde/plane_01.jpg +0 -0
  486. /package/{docs → dist}/img/concorde/plane_02.jpg +0 -0
  487. /package/{docs → dist}/img/concorde/plane_03.jpg +0 -0
  488. /package/{docs → dist}/img/concorde/plane_04.jpg +0 -0
  489. /package/{docs → dist}/img/concorde/plane_05.jpg +0 -0
  490. /package/{docs → dist}/img/concorde/plane_06.jpg +0 -0
  491. /package/{docs → dist}/img/concorde/plane_07.jpg +0 -0
  492. /package/{docs → dist}/img/concorde/plane_08.jpg +0 -0
  493. /package/{docs → dist}/img/concorde/plane_09.jpg +0 -0
  494. /package/{docs → dist}/img/concorde/plane_10.jpg +0 -0
  495. /package/{docs → dist}/img/concorde/plane_11.jpg +0 -0
  496. /package/{docs → dist}/img/concorde/plane_12.jpg +0 -0
  497. /package/{docs → dist}/img/concorde/plane_13.jpg +0 -0
@@ -1,443 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en" data-doc-url="https://concorde.supersoniks.org/hubs/decorators.html" data-doc-id="hubs/decorators">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Concorde decorators reference — Concorde by Supersoniks</title>
7
- <meta name="description" content="Hub for all Concorde Lit decorators: @get @post @put @patch @subscribe @publish @bind @handle and related. Use this page when asking about any decorator.">
8
- <meta name="keywords" content="decorator, @get, @post, @put, @patch, @subscribe, @publish, @bind, @handle, ApiResult, Endpoint, DataProviderKey">
9
- <meta name="concorde-doc-id" content="hubs/decorators">
10
- <link rel="canonical" href="https://concorde.supersoniks.org/hubs/decorators.html">
11
- </head>
12
- <body>
13
- <header>
14
- <p><a href="/docs/index.html">Concorde documentation</a></p>
15
- </header>
16
- <main>
17
- <article>
18
- <p class="doc-lead" id="doc-summary"><strong>Concorde documentation — Concorde decorators reference</strong>. Hub for all Concorde Lit decorators: @get @post @put @patch @subscribe @publish @bind @handle and related. Use this page when asking about any decorator. <span>Doc ID: <code>hubs/decorators</code>. Keywords: decorator, @get, @post, @put, @patch, @subscribe, @publish, @bind, @handle, ApiResult, Endpoint, DataProviderKey. URL: <a href="https://concorde.supersoniks.org/hubs/decorators.html">https://concorde.supersoniks.org/hubs/decorators.html</a>.</span></p>
19
- <section id="docs-decorators-ancestor-attribute" data-doc-id="docs/decorators/ancestor-attribute">
20
- <h2><a href="/docs/decorators/ancestor-attribute">@ancestorAttribute</a></h2>
21
- <p><strong>Doc ID:</strong> <code>docs/decorators/ancestor-attribute</code> · <a href="/docs/decorators/ancestor-attribute">full page</a></p>
22
- <p>Copies the value of an attribute from the nearest element that carries it (the host itself, then its ancestors, across shadow roots) into a class property. Use it to pick up a scope such as dataProvid</p>
23
- <pre class="doc-excerpt">@ancestorAttribute
24
-
25
- Copies the value of an attribute from the nearest element that carries it (the host itself, then its ancestors, across shadow roots) into a class property. Use it to pick up a scope such as dataProvider without passing it down by hand, typically to feed a dynamic key of @subscribe.
26
-
27
- Import
28
-
29
- import { ancestorAttribute } from &quot;@supersoniks/concorde/decorators&quot;;
30
-
31
- @ancestorAttribute(&quot;dataProvider&quot;)
32
- dataProvider: string | null = null;
33
-
34
- Read once at connect
35
-
36
- By default the value is read once, just before the component's connectedCallback, and never updated. The closest element with the attribute wins. If no ancestor has it, the property keeps its initial value.
37
-
38
- An attribute present without a value ( ) resolves to &quot;&quot;. A camelCase name also matches its lowercase form (dataProvider and dataprovider).
39
-
40
- Follow DOM changes
41
-
42
- With { dynamic: true }, the property stays in sync while the component is connected: when an ancestor changes the attribute, when a closer ancestor gains or loses it, and when the component is moved. When no ancestor has the attribute, the property becomes null. Add @state() so Lit re-renders on each assignment.
43
-
44
- @ancestorAttribute(&quot;dataProvider&quot;, { dyn</pre>
45
- </section>
46
- <section id="docs-decorators-auto-subscribe" data-doc-id="docs/decorators/auto-subscribe">
47
- <h2><a href="/docs/decorators/auto-subscribe">@autoSubscribe</a></h2>
48
- <p><strong>Doc ID:</strong> <code>docs/decorators/auto-subscribe</code> · <a href="/docs/decorators/auto-subscribe">full page</a></p>
49
- <p>Legacy decorator that re-runs a method whenever one of the store values it reads is assigned. For new code, prefer @subscribe with a DataProviderKey: dependencies are explicit and typed.</p>
50
- <pre class="doc-excerpt">@autoSubscribe
51
-
52
- Legacy decorator that re-runs a method whenever one of the store values it reads is assigned. For new code, prefer @subscribe with a DataProviderKey: dependencies are explicit and typed.
53
-
54
- Import
55
-
56
- import { autoSubscribe } from &quot;@supersoniks/concorde/decorators&quot;;
57
- import { get } from &quot;@supersoniks/concorde/utils&quot;;
58
-
59
- @autoSubscribe()
60
- updateDisplay() {
61
- this.total = get(passengersKey) + get(crewKey);
62
- }
63
-
64
- Tracked reads
65
-
66
- The method runs once after connectedCallback. Every store value read during that run becomes a dependency; assigning any of them runs the method again. Write the result to a @state() property (or call requestUpdate()) so the component re-renders.
67
-
68
- Notes
69
-
70
- - Several assignments in the same task trigger a single re-run (batched with queueMicrotask).
71
- - Keep reads unconditional: a value read only behind a condition becomes a dependency the first time that branch runs.
72
- - Subscriptions are removed in disconnectedCallback.
73
-
74
- API reference
75
-
76
- | Argument | Type | Description |
77
- |----------|------|-------------|
78
- | none | | @autoSubscribe() takes no argument; apply it to a method of a custom element |</pre>
79
- </section>
80
- <section id="docs-decorators-bind" data-doc-id="docs/decorators/bind">
81
- <h2><a href="/docs/decorators/bind">@bind</a></h2>
82
- <p><strong>Doc ID:</strong> <code>docs/decorators/bind</code> · <a href="/docs/decorators/bind">full page</a></p>
83
- <p>Keeps a class property in sync with a path of the DataProvider store, in both directions when needed. Pass a dot-notation string or a DataProviderKey; add { reflect: true } to push local writes back t</p>
84
- <pre class="doc-excerpt">@bind
85
-
86
- Keeps a class property in sync with a path of the DataProvider store, in both directions when needed. Pass a dot-notation string or a DataProviderKey; add { reflect: true } to push local writes back to the store. For read-only sync prefer @subscribe, and see Data flow for the overall model.
87
-
88
- Import
89
-
90
- import { bind } from &quot;@supersoniks/concorde/decorators&quot;;
91
-
92
- @bind(&quot;flight.gate&quot;)
93
- @state()
94
- gate = &quot;&quot;;
95
-
96
- Basic usage
97
-
98
- The first path segment is the data provider id, the rest is dot notation (array items use a numeric index: passengers.0). The property updates each time the store value changes. Add @state() so Lit re-renders.
99
-
100
- Typed key
101
-
102
- With a DataProviderKey , TypeScript checks that the property type matches T at that path.
103
-
104
- import { DataProviderKey } from &quot;@supersoniks/concorde/dataProviderKey&quot;;
105
-
106
- type Flight = { flight: string; gate: string; boarded: number };
107
- const flightKey = new DataProviderKey&amp;lt;Flight&amp;gt;(&quot;flight&quot;);
108
-
109
- @bind(flightKey.boarded, { reflect: true })
110
- @state()
111
- boarded = 0;
112
-
113
- Reflect
114
-
115
- By default (reflect: false) the binding is one-way: assigning the property does not touch the store. With reflect: true, each assignment calls set() on the publisher, so every other subsc</pre>
116
- </section>
117
- <section id="docs-decorators-get" data-doc-id="docs/decorators/get">
118
- <h2><a href="/docs/decorators/get">@get</a></h2>
119
- <p><strong>Doc ID:</strong> <code>docs/decorators/get</code> · <a href="/docs/decorators/get">full page</a></p>
120
- <p>@get(endpoint) runs an HTTP GET on an Endpoint and stores the full ApiResult&lt;T&gt; in a property, or passes it to a method. It runs again when the endpoint's placeholders or the API configuration change,</p>
121
- <pre class="doc-excerpt">@get
122
-
123
- @get(endpoint) runs an HTTP GET on an Endpoint and stores the full ApiResult in a property, or passes it to a method. It runs again when the endpoint's placeholders or the API configuration change, and on demand through refetch. For writes, see @post, @put and @patch.
124
-
125
- Import
126
-
127
- import { get, Endpoint, type ApiResult } from &quot;@supersoniks/concorde/decorators&quot;;
128
-
129
- type FlightBoard = { flights: Flight[] };
130
- const departuresEndpoint = new Endpoint&amp;lt;FlightBoard&amp;gt;(&quot;flights?direction=departures&quot;);
131
-
132
- @get(departuresEndpoint)
133
- @state()
134
- departures?: ApiResult&amp;lt;FlightBoard&amp;gt;;
135
-
136
- Property
137
-
138
- The property is undefined until the first response, then holds result (typed T), response (the HTTP response) and request. It is reset to undefined when the component disconnects.
139
-
140
- Without a configuration key, serviceURL and the token are read from the HTML scope: place the component under an element that sets them (see API configuration). The GET waits until serviceURL is available.
141
-
142
- Method
143
-
144
- Decorate a method to receive the ApiResult after each GET instead of storing it.
145
-
146
- @get(departuresEndpoint)
147
- onDepartures(payload?: ApiResult&amp;lt;FlightBoard&amp;gt;) {
148
- this.boarding = payload?.result?.flights.filter(</pre>
149
- </section>
150
- <section id="docs-decorators-handle" data-doc-id="docs/decorators/handle">
151
- <h2><a href="/docs/decorators/handle">@handle</a></h2>
152
- <p><strong>Doc ID:</strong> <code>docs/decorators/handle</code> · <a href="/docs/decorators/handle">full page</a></p>
153
- <p>@handle(...keys) calls the decorated method each time a publisher assigns one of up to three store paths, with one typed argument per key. Nothing is stored on the component: use it for derived values</p>
154
- <pre class="doc-excerpt">@handle
155
-
156
- @handle(...keys) calls the decorated method each time a publisher assigns one of up to three store paths, with one typed argument per key. Nothing is stored on the component: use it for derived values and side effects, and @subscribe when you only need the value. See Data flow for the overall model.
157
-
158
- Import
159
-
160
- import { handle, Skip } from &quot;@supersoniks/concorde/decorators&quot;;
161
- import { DataProviderKey } from &quot;@supersoniks/concorde/dataProviderKey&quot;;
162
-
163
- const cockpitKey = new DataProviderKey&amp;lt;{ altitude: number }&amp;gt;(&quot;cockpit&quot;);
164
-
165
- @handle(cockpitKey.altitude)
166
- onAltitude(feet: number) {
167
- this.meters = Math.round(feet 0.3048);
168
- }
169
-
170
- Basic usage
171
-
172
- The method runs once with the current value when the component connects, then on every assignment, including null and undefined. Below, each climb assigns a new altitude and the method derives meters and flight level.
173
-
174
- Dynamic path
175
-
176
- ${prop} placeholders resolve from properties of the same component; when one changes, the method is called with the value at the new path. Rules: Dynamic paths.
177
-
178
- const personKey = new DataProviderKey&amp;lt;OnBoard, { seatIndex: number }&amp;gt;(
179
- &quot;demoOnBoard.${seatIndex}&quot;,
180
- );
181
-
182
- @property({ type: Number }) seatIndex = 0;</pre>
183
- </section>
184
- <section id="docs-decorators-on-assign" data-doc-id="docs/decorators/on-assign">
185
- <h2><a href="/docs/decorators/on-assign">@onAssign</a></h2>
186
- <p><strong>Doc ID:</strong> <code>docs/decorators/on-assign</code> · <a href="/docs/decorators/on-assign">full page</a></p>
187
- <p>Legacy decorator that calls a method with the values at one or more string paths of the store, once all of them are defined. For new code, use @handle with { waitForAllDefined: true }: same behaviour,</p>
188
- <pre class="doc-excerpt">@onAssign
189
-
190
- Legacy decorator that calls a method with the values at one or more string paths of the store, once all of them are defined. For new code, use @handle with { waitForAllDefined: true }: same behaviour, with typed DataProviderKey paths.
191
-
192
- Import
193
-
194
- import { onAssign } from &quot;@supersoniks/concorde/decorators&quot;;
195
-
196
- @onAssign(&quot;passenger&quot;, &quot;passengerSettings&quot;)
197
- onReady(passenger: Passenger, settings: Settings) {}
198
-
199
- Wait for every path
200
-
201
- The method is called only when every path holds a value other than null or undefined, with the values in the order of the paths. After that, each assignment calls it again with the latest values. Subscriptions start after connectedCallback and stop in disconnectedCallback.
202
-
203
- Dynamic path
204
-
205
- Paths accept ${prop} placeholders resolved on the host. While a placeholder is null or undefined, that path is unsubscribed. Write the paths as plain strings, not template literals. Rules: Dynamic path placeholders.
206
-
207
- @property({ type: Number }) seat = 0;
208
-
209
- @onAssign(&quot;passengers.${seat}&quot;, &quot;passengerSettings.${seat}&quot;)
210
- onSeat(passenger: Passenger, settings: Settings) {}
211
-
212
- Migrate to @handle
213
-
214
- // Before
215
- @onAssign(&quot;passenger&quot;, &quot;passengerSettings&quot;)
216
- onReady(passenger: any, setting</pre>
217
- </section>
218
- <section id="docs-decorators-patch" data-doc-id="docs/decorators/patch">
219
- <h2><a href="/docs/decorators/patch">@patch</a></h2>
220
- <p><strong>Doc ID:</strong> <code>docs/decorators/patch</code> · <a href="/docs/decorators/patch">full page</a></p>
221
- <p>Sends the value of a publisher as the body of a PATCH request, to update part of a resource, and stores the response in an ApiResult&lt;T&gt; property. It takes the same arguments, options and send(componen</p>
222
- <pre class="doc-excerpt">@patch
223
-
224
- Sends the value of a publisher as the body of a PATCH request, to update part of a resource, and stores the response in an ApiResult property. It takes the same arguments, options and send(component) handle as @post; only the HTTP method differs.
225
-
226
- Import
227
-
228
- import { patch, type ApiResult } from &quot;@supersoniks/concorde/decorators&quot;;
229
- import { DataProviderKey } from &quot;@supersoniks/concorde/dataProviderKey&quot;;
230
- import { Endpoint } from &quot;@supersoniks/concorde/utils/endpoint&quot;;
231
-
232
- Basic usage
233
-
234
- The body holds only the fields to change, here a gate change for flight CN 001.
235
-
236
- type Flight = { flight: string; route: string; gate: string };
237
-
238
- const gateChangeKey = new DataProviderKey&amp;lt;Partial&amp;lt;Flight&amp;gt;&amp;gt;(&quot;gateChange&quot;);
239
-
240
- @patch(new Endpoint&amp;lt;Flight&amp;gt;(&quot;flights/CN001&quot;), gateChangeKey)
241
- @state()
242
- payload?: ApiResult&amp;lt;Flight&amp;gt;;
243
-
244
- moveToB12() {
245
- set(gateChangeKey, { gate: &quot;B12&quot; }); // sends the PATCH
246
- }
247
-
248
- Triggers, the send method decorator and every option are described on @post.
249
-
250
- API reference
251
-
252
- | Argument | Type | Description |
253
- |----------|------|-------------|
254
- | endpoint | Endpoint | Resource path and response type |
255
- | bodyKey | DataProviderKey | Publisher read as the partial body |
256
- | </pre>
257
- </section>
258
- <section id="docs-decorators-post" data-doc-id="docs/decorators/post">
259
- <h2><a href="/docs/decorators/post">@post</a></h2>
260
- <p><strong>Doc ID:</strong> <code>docs/decorators/post</code> · <a href="/docs/decorators/post">full page</a></p>
261
- <p>Sends the value of a publisher as the body of a POST request and stores the response in an ApiResult&lt;T&gt; property. Pass an Endpoint and a DataProviderKey for the body; the request runs on connect and a</p>
262
- <pre class="doc-excerpt">@post
263
-
264
- Sends the value of a publisher as the body of a POST request and stores the response in an ApiResult property. Pass an Endpoint and a DataProviderKey for the body; the request runs on connect and again whenever the body changes. @put and @patch work the same way.
265
-
266
- Import
267
-
268
- import { post, type ApiResult } from &quot;@supersoniks/concorde/decorators&quot;;
269
- import { DataProviderKey } from &quot;@supersoniks/concorde/dataProviderKey&quot;;
270
- import { Endpoint } from &quot;@supersoniks/concorde/utils/endpoint&quot;;
271
-
272
- type SignUp = { email: string; password: string };
273
- type CrewMember = { id: number; email: string };
274
-
275
- const signUpKey = new DataProviderKey&amp;lt;SignUp&amp;gt;(&quot;crewSignUp&quot;);
276
-
277
- @post(new Endpoint&amp;lt;CrewMember&amp;gt;(&quot;api/register&quot;), signUpKey)
278
- @state()
279
- payload?: ApiResult&amp;lt;CrewMember&amp;gt;;
280
-
281
- Basic usage
282
-
283
- The property is undefined until a response arrives, then holds request · response · the typed result. Each body mutation sends a new request; mutations in the same frame are coalesced into one. The demo posts to the local mock POST /docs-mock-api/api/register.
284
-
285
- Method form
286
-
287
- On a method, the decorator calls it with the full ApiResult after each request instead of assigning a property.
288
-
289
- Sending again
290
-
291
- Keep th</pre>
292
- </section>
293
- <section id="docs-decorators-publish" data-doc-id="docs/decorators/publish">
294
- <h2><a href="/docs/decorators/publish">@publish</a></h2>
295
- <p><strong>Doc ID:</strong> <code>docs/decorators/publish</code> · <a href="/docs/decorators/publish">full page</a></p>
296
- <p>@publish(key) writes a component property to one path of the store: every assignment to the property is published there. It never reads back from the store; it is the inverse of @subscribe. See Data f</p>
297
- <pre class="doc-excerpt">@publish
298
-
299
- @publish(key) writes a component property to one path of the store: every assignment to the property is published there. It never reads back from the store; it is the inverse of @subscribe. See Data flow for the overall model.
300
-
301
- Import
302
-
303
- import { publish } from &quot;@supersoniks/concorde/decorators&quot;;
304
- import { DataProviderKey } from &quot;@supersoniks/concorde/dataProviderKey&quot;;
305
-
306
- type CheckIn = { passenger: string; seat: string };
307
- const checkInKey = new DataProviderKey&amp;lt;CheckIn&amp;gt;(&quot;checkIn&quot;);
308
-
309
- @publish(checkInKey.passenger)
310
- @state()
311
- passenger = &quot;Ada Lindqvist&quot;;
312
-
313
- Basic usage
314
-
315
- Each assignment calls set() on the publisher at the DataProviderKey path. On connect, a defined property value is published immediately, so the initializer overwrites what the store held. Leave the property undefined to keep the store value. To read and write the same path, use @bind with reflect: true.
316
-
317
- The check-in form below publishes passenger and seat; the boarding pass reads them back with sub().
318
-
319
- Dynamic path
320
-
321
- ${prop} placeholders resolve from properties of the same component. When a placeholder changes, the property is published to the new path. While it is null or undefined, nothing is published. Rules</pre>
322
- </section>
323
- <section id="docs-decorators-put" data-doc-id="docs/decorators/put">
324
- <h2><a href="/docs/decorators/put">@put</a></h2>
325
- <p><strong>Doc ID:</strong> <code>docs/decorators/put</code> · <a href="/docs/decorators/put">full page</a></p>
326
- <p>Sends the value of a publisher as the body of a PUT request, to replace a resource, and stores the response in an ApiResult&lt;T&gt; property. It takes the same arguments, options and send(component) handle</p>
327
- <pre class="doc-excerpt">@put
328
-
329
- Sends the value of a publisher as the body of a PUT request, to replace a resource, and stores the response in an ApiResult property. It takes the same arguments, options and send(component) handle as @post; only the HTTP method differs.
330
-
331
- Import
332
-
333
- import { put, type ApiResult } from &quot;@supersoniks/concorde/decorators&quot;;
334
- import { DataProviderKey } from &quot;@supersoniks/concorde/dataProviderKey&quot;;
335
- import { Endpoint } from &quot;@supersoniks/concorde/utils/endpoint&quot;;
336
-
337
- Basic usage
338
-
339
- The full passenger record is sent on connect and after each body mutation. Placeholders such as ${passengerId} are resolved on the host component.
340
-
341
- type Passenger = { name: string; flight: string; seat: string };
342
-
343
- const passengerKey = new DataProviderKey&amp;lt;Passenger&amp;gt;(&quot;passengerForm&quot;);
344
- const savePassenger = put(
345
- new Endpoint&amp;lt;Passenger, { passengerId: string }&amp;gt;(&quot;passengers/${passengerId}&quot;),
346
- passengerKey,
347
- { autoPostOnBodyMutation: false },
348
- );
349
-
350
- @property() passengerId = &quot;ada-lindqvist&quot;;
351
-
352
- @savePassenger
353
- @state()
354
- payload?: ApiResult&amp;lt;Passenger&amp;gt;;
355
-
356
- async save() {
357
- await savePassenger.send(this);
358
- }
359
-
360
- Triggers, the send method decorator and every option are described on @post.
361
-
362
- API reference
363
-
364
- | Argumen</pre>
365
- </section>
366
- <section id="docs-decorators-subscribe" data-doc-id="docs/decorators/subscribe">
367
- <h2><a href="/docs/decorators/subscribe">@subscribe</a></h2>
368
- <p><strong>Doc ID:</strong> <code>docs/decorators/subscribe</code> · <a href="/docs/decorators/subscribe">full page</a></p>
369
- <p>@subscribe(key) keeps a component property in sync with one path of the store: when a publisher assigns that path, the property updates and the component re-renders. It is read-only; use @publish to w</p>
370
- <pre class="doc-excerpt">@subscribe
371
-
372
- @subscribe(key) keeps a component property in sync with one path of the store: when a publisher assigns that path, the property updates and the component re-renders. It is read-only; use @publish to write and sub() to read inside a template. See Data flow for the overall model.
373
-
374
- Import
375
-
376
- import { subscribe } from &quot;@supersoniks/concorde/decorators&quot;;
377
- import { DataProviderKey } from &quot;@supersoniks/concorde/dataProviderKey&quot;;
378
-
379
- type Cockpit = { altitude: number };
380
- const cockpitKey = new DataProviderKey&amp;lt;Cockpit&amp;gt;(&quot;cockpit&quot;);
381
-
382
- @subscribe(cockpitKey.altitude)
383
- @state()
384
- altitude = 0;
385
-
386
- Static path
387
-
388
- The key is a DataProviderKey: the property type must match T at that path. Add @state() so Lit re-renders. Until the publisher holds a value, the property keeps its initializer.
389
-
390
- type Flight = { code: string; gate: string; status: string };
391
- const flightKey = new DataProviderKey&amp;lt;Flight&amp;gt;(&quot;flight&quot;);
392
-
393
- @subscribe(flightKey)
394
- @state()
395
- flight: Flight | null = null;
396
-
397
- Dynamic path
398
-
399
- ${prop} placeholders resolve from properties of the same component. Declare them in the key's second generic so TypeScript requires them on the host. When seatIndex changes, the path is resolved again and perso</pre>
400
- </section>
401
- <section id="docs-decorators-wait-for-ancestors" data-doc-id="docs/decorators/wait-for-ancestors">
402
- <h2><a href="/docs/decorators/wait-for-ancestors">@awaitConnectedAncestors</a></h2>
403
- <p><strong>Doc ID:</strong> <code>docs/decorators/wait-for-ancestors</code> · <a href="/docs/decorators/wait-for-ancestors">full page</a></p>
404
- <p>Delays a component's connectedCallback until its matching ancestors are defined and connected, so context they set up (a dataProvider, a publisher, a fetched payload) is ready when the child starts. P</p>
405
- <pre class="doc-excerpt">@awaitConnectedAncestors
406
-
407
- Delays a component's connectedCallback until its matching ancestors are defined and connected, so context they set up (a dataProvider, a publisher, a fetched payload) is ready when the child starts. Pair it with @dispatchConnectedEvent on the ancestors, which signals readiness.
408
-
409
- Import
410
-
411
- import {
412
- awaitConnectedAncestors,
413
- dispatchConnectedEvent,
414
- } from &quot;@supersoniks/concorde/decorators&quot;;
415
-
416
- @customElement(&quot;flight-scope&quot;)
417
- @dispatchConnectedEvent()
418
- export class FlightScope extends LitElement {}
419
-
420
- @customElement(&quot;gate-panel&quot;)
421
- @awaitConnectedAncestors(&quot;flight-scope&quot;)
422
- export class GatePanel extends LitElement {}
423
-
424
- Wait for an ancestor
425
-
426
- Arguments are CSS selectors tested with element.matches() on each ancestor, across shadow roots. Here the parent element is not defined yet: the child stays uninitialized until you register it.
427
-
428
- Several ancestors
429
-
430
- With several selectors, the child waits for every matching ancestor. Register both to initialize it, in any order.
431
-
432
- Ancestor already connected
433
-
434
- When the ancestor is already connected, or no ancestor matches, the child initializes immediately.
435
-
436
- Signal readiness
437
-
438
- @dispatchConnectedEvent() dispatches a bubbling sonic-connect</pre>
439
- </section>
440
- </article>
441
- </main>
442
- </body>
443
- </html>