@supersoniks/concorde 5.1.1 → 5.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/concorde-docs/SKILL.md +153 -0
- package/.agents/skills/{concorde-component-docs/template.md → concorde-docs/templates/component.md} +6 -2
- package/.agents/skills/concorde-docs/templates/decorator.md +43 -0
- package/.agents/skills/concorde-docs/templates/guide.md +25 -0
- package/PLAN-DOCS-AGENTS.md +80 -0
- package/README.md +4 -4
- package/ai/README.md +29 -41
- package/ai/skills/concorde/SKILL.md +54 -324
- package/ai/skills/concorde/rules/composition.md +32 -0
- package/ai/skills/concorde/rules/data.md +47 -0
- package/ai/skills/concorde/rules/http.md +25 -0
- package/ai/skills/concorde/rules/lists-forms.md +35 -0
- package/ai/skills/concorde/rules/styling.md +46 -0
- package/ai/skills/concorde/rules/troubleshooting.md +45 -0
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +21 -21
- package/concorde-core.es.js +977 -980
- package/custom-elements-manifest.public.config.mjs +8 -0
- package/{.tmp-cem/custom-elements.json → custom-elements.json} +11758 -8904
- package/dist/concorde-core.bundle.js +21 -21
- package/dist/concorde-core.es.js +977 -980
- package/dist/docs-mock-api-sw.js +58 -223
- package/dist/docs-mock-api-sw.js.map +4 -4
- package/dist/img/concorde/plane_01.jpg +0 -0
- package/dist/img/concorde/plane_02.jpg +0 -0
- package/dist/img/concorde/plane_03.jpg +0 -0
- package/dist/img/concorde/plane_04.jpg +0 -0
- package/dist/img/concorde/plane_05.jpg +0 -0
- package/dist/img/concorde/plane_06.jpg +0 -0
- package/dist/img/concorde/plane_07.jpg +0 -0
- package/dist/img/concorde/plane_08.jpg +0 -0
- package/dist/img/concorde/plane_09.jpg +0 -0
- package/dist/img/concorde/plane_10.jpg +0 -0
- package/dist/img/concorde/plane_11.jpg +0 -0
- package/dist/img/concorde/plane_12.jpg +0 -0
- package/dist/img/concorde/plane_13.jpg +0 -0
- package/dist/img/og-concorde.jpg +0 -0
- package/dist/robots.txt +11 -10
- package/docs/.htaccess +82 -0
- package/docs/404.html +15 -0
- package/docs/404.md +5 -0
- package/docs/about.html +111 -0
- package/docs/about.md +22 -0
- package/docs/assets/{index-Bb-_LRyY.js → index-6sS76xWj.js} +2625 -3158
- package/docs/assets/index-DkdPbH0F.css +1 -0
- package/docs/core/components/functional/date/date.html +211 -0
- package/docs/core/components/functional/date/date.md +150 -0
- package/docs/core/components/functional/fetch/fetch.html +180 -0
- package/docs/core/components/functional/fetch/fetch.md +108 -0
- package/docs/core/components/functional/if/if.html +65 -0
- package/docs/core/components/functional/if/if.md +34 -0
- package/docs/core/components/functional/jsonata/jsonata.html +110 -0
- package/docs/core/components/functional/jsonata/jsonata.md +61 -0
- package/docs/core/components/functional/list/list.html +200 -0
- package/docs/core/components/functional/list/list.md +125 -0
- package/docs/core/components/functional/mix/mix.html +78 -0
- package/docs/core/components/functional/mix/mix.md +46 -0
- package/docs/core/components/functional/queue/queue.html +155 -0
- package/docs/core/components/functional/queue/queue.md +51 -0
- package/docs/core/components/functional/router/router.html +154 -0
- package/docs/core/components/functional/router/router.md +93 -0
- package/docs/core/components/functional/sdui/sdui-extension-points.html +127 -0
- package/docs/core/components/functional/sdui/sdui-extension-points.md +94 -0
- package/docs/core/components/functional/sdui/sdui.html +397 -0
- package/docs/core/components/functional/sdui/sdui.md +307 -0
- package/docs/core/components/functional/states/states.html +141 -0
- package/docs/core/components/functional/states/states.md +112 -0
- package/docs/core/components/functional/submit/submit.html +178 -0
- package/docs/core/components/functional/submit/submit.md +106 -0
- package/docs/core/components/functional/subscriber/subscriber.html +68 -0
- package/docs/core/components/functional/subscriber/subscriber.md +91 -0
- package/docs/core/components/functional/translation/translation.html +60 -0
- package/docs/core/components/functional/translation/translation.md +38 -0
- package/docs/core/components/functional/value/value.html +81 -0
- package/docs/core/components/functional/value/value.md +47 -0
- package/docs/core/components/ui/alert/alert.html +201 -0
- package/docs/core/components/ui/alert/alert.md +186 -0
- package/docs/core/components/ui/alert-messages/alert-messages.html +132 -0
- package/docs/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/core/components/ui/badge/badge.html +197 -0
- package/docs/core/components/ui/badge/badge.md +181 -0
- package/docs/core/components/ui/button/button.html +309 -0
- package/docs/core/components/ui/button/button.md +216 -0
- package/docs/core/components/ui/captcha/captcha.html +80 -0
- package/docs/core/components/ui/captcha/captcha.md +56 -0
- package/docs/core/components/ui/card/card.html +254 -0
- package/docs/core/components/ui/card/card.md +215 -0
- package/docs/core/components/ui/divider/divider.html +144 -0
- package/docs/core/components/ui/divider/divider.md +126 -0
- package/docs/core/components/ui/form/checkbox/checkbox.html +200 -0
- package/docs/core/components/ui/form/checkbox/checkbox.md +125 -0
- package/docs/core/components/ui/form/fieldset/fieldset.html +238 -0
- package/docs/core/components/ui/form/fieldset/fieldset.md +161 -0
- package/docs/core/components/ui/form/form-actions/form-actions.html +122 -0
- package/docs/core/components/ui/form/form-actions/form-actions.md +98 -0
- package/docs/core/components/ui/form/form-layout/form-layout.html +115 -0
- package/docs/core/components/ui/form/form-layout/form-layout.md +109 -0
- package/docs/core/components/ui/form/input/input.html +235 -0
- package/docs/core/components/ui/form/input/input.md +142 -0
- package/docs/core/components/ui/form/radio/radio.html +144 -0
- package/docs/core/components/ui/form/radio/radio.md +78 -0
- package/docs/core/components/ui/form/select/select.html +178 -0
- package/docs/core/components/ui/form/select/select.md +86 -0
- package/docs/core/components/ui/form/switch/switch.html +146 -0
- package/docs/core/components/ui/form/switch/switch.md +80 -0
- package/docs/core/components/ui/form/textarea/textarea.html +162 -0
- package/docs/core/components/ui/form/textarea/textarea.md +82 -0
- package/docs/core/components/ui/group/group.html +113 -0
- package/docs/core/components/ui/group/group.md +77 -0
- package/docs/core/components/ui/icon/icon.html +223 -0
- package/docs/core/components/ui/icon/icon.md +214 -0
- package/docs/core/components/ui/image/image.html +194 -0
- package/docs/core/components/ui/image/image.md +167 -0
- package/docs/core/components/ui/link/link.html +101 -0
- package/docs/core/components/ui/link/link.md +81 -0
- package/docs/core/components/ui/loader/loader.html +114 -0
- package/docs/core/components/ui/loader/loader.md +87 -0
- package/docs/core/components/ui/menu/menu.html +395 -0
- package/docs/core/components/ui/menu/menu.md +370 -0
- package/docs/core/components/ui/modal/modal.html +324 -0
- package/docs/core/components/ui/modal/modal.md +211 -0
- package/docs/core/components/ui/pop/pop.html +250 -0
- package/docs/core/components/ui/pop/pop.md +216 -0
- package/docs/core/components/ui/progress/progress.html +132 -0
- package/docs/core/components/ui/progress/progress.md +109 -0
- package/docs/core/components/ui/table/table.html +333 -0
- package/docs/core/components/ui/table/table.md +267 -0
- package/docs/core/components/ui/theme/theme.html +116 -0
- package/docs/core/components/ui/theme/theme.md +97 -0
- package/docs/core/components/ui/toast/toast.html +185 -0
- package/docs/core/components/ui/toast/toast.md +147 -0
- package/docs/core/components/ui/tooltip/tooltip.html +112 -0
- package/docs/core/components/ui/tooltip/tooltip.md +89 -0
- package/docs/custom-elements.json +16559 -0
- package/docs/docs/decorators/ancestor-attribute.html +71 -0
- package/docs/docs/decorators/ancestor-attribute.md +59 -0
- package/docs/docs/decorators/auto-subscribe.html +61 -0
- package/docs/docs/decorators/auto-subscribe.md +40 -0
- package/docs/docs/decorators/bind.html +87 -0
- package/docs/docs/decorators/bind.md +76 -0
- package/docs/docs/decorators/get.html +166 -0
- package/docs/docs/decorators/get.md +160 -0
- package/docs/docs/decorators/handle.html +139 -0
- package/docs/docs/decorators/handle.md +119 -0
- package/docs/docs/decorators/on-assign.html +72 -0
- package/docs/docs/decorators/on-assign.md +63 -0
- package/docs/docs/decorators/patch.html +76 -0
- package/docs/docs/decorators/patch.md +44 -0
- package/docs/docs/decorators/post.html +150 -0
- package/docs/docs/decorators/post.md +134 -0
- package/docs/docs/decorators/publish.html +74 -0
- package/docs/docs/decorators/publish.md +56 -0
- package/docs/docs/decorators/put.html +83 -0
- package/docs/docs/decorators/put.md +51 -0
- package/docs/docs/decorators/subscribe.html +91 -0
- package/docs/docs/decorators/subscribe.md +87 -0
- package/docs/docs/decorators/wait-for-ancestors.html +82 -0
- package/docs/docs/decorators/wait-for-ancestors.md +76 -0
- package/docs/docs/directives/sub.html +79 -0
- package/docs/docs/directives/sub.md +75 -0
- package/docs/docs/directives/t.html +91 -0
- package/docs/docs/directives/t.md +73 -0
- package/docs/docs/getting-started/ai-agents.html +130 -0
- package/docs/docs/getting-started/ai-agents.md +50 -0
- package/docs/docs/getting-started/components.html +27 -0
- package/docs/docs/getting-started/create-a-component.html +108 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/create-a-component.md +3 -6
- package/docs/docs/getting-started/dataFlow.html +174 -0
- package/{src/docs/_core-concept → docs/docs/getting-started}/dataFlow.md +18 -19
- package/docs/docs/getting-started/installation.html +69 -0
- package/docs/docs/getting-started/installation.md +36 -0
- package/docs/docs/getting-started/my-first-component.html +180 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/my-first-component.md +5 -14
- package/docs/docs/getting-started/start.html +47 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/start.md +1 -13
- package/docs/docs/getting-started/theming.html +334 -0
- package/docs/docs/index.html +99 -0
- package/docs/docs/misc/api-configuration.html +149 -0
- package/{src/docs/_misc → docs/docs/misc}/api-configuration.md +10 -12
- package/docs/docs/misc/dataProviderKey.html +136 -0
- package/{src/docs/_misc → docs/docs/misc}/dataProviderKey.md +4 -4
- package/docs/docs/misc/docs-mock-api.html +155 -0
- package/{src/docs/_misc → docs/docs/misc}/docs-mock-api.md +12 -13
- package/docs/docs/misc/dynamic-path.html +181 -0
- package/{src/docs/_misc → docs/docs/misc}/dynamic-path.md +8 -8
- package/docs/docs/misc/endpoint.html +51 -0
- package/{src/docs/_misc → docs/docs/misc}/endpoint.md +8 -8
- package/docs/docs/misc/html-integration.html +45 -0
- package/{src/docs/_misc → docs/docs/misc}/html-integration.md +4 -5
- package/docs/docs-mock-api-sw.js +58 -223
- package/docs/docs-mock-api-sw.js.map +4 -4
- package/docs/hubs/decorators.html +438 -0
- package/docs/hubs/form-components.html +404 -0
- package/docs/hubs/remote-data.html +367 -0
- package/docs/img/archive/concorde-001-2cv.webp +0 -0
- package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
- package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
- package/docs/img/archive/credits.json +28 -0
- package/docs/img/concorde/plane_01.jpg +0 -0
- package/docs/img/concorde/plane_02.jpg +0 -0
- package/docs/img/concorde/plane_03.jpg +0 -0
- package/docs/img/concorde/plane_04.jpg +0 -0
- package/docs/img/concorde/plane_05.jpg +0 -0
- package/docs/img/concorde/plane_06.jpg +0 -0
- package/docs/img/concorde/plane_07.jpg +0 -0
- package/docs/img/concorde/plane_08.jpg +0 -0
- package/docs/img/concorde/plane_09.jpg +0 -0
- package/docs/img/concorde/plane_10.jpg +0 -0
- package/docs/img/concorde/plane_11.jpg +0 -0
- package/docs/img/concorde/plane_12.jpg +0 -0
- package/docs/img/concorde/plane_13.jpg +0 -0
- package/docs/img/og-concorde.jpg +0 -0
- package/docs/index.html +184 -68
- package/docs/index.md +22 -0
- package/docs/llms-full.txt +5779 -0
- package/docs/llms.txt +108 -0
- package/docs/privacy.html +122 -0
- package/docs/privacy.md +32 -0
- package/docs/robots.txt +11 -10
- package/docs/sitemap.xml +243 -0
- package/docs/src/core/components/functional/date/date.md +150 -0
- package/docs/src/core/components/functional/fetch/fetch.md +108 -0
- package/docs/src/core/components/functional/if/if.md +34 -0
- package/docs/src/core/components/functional/jsonata/jsonata.md +61 -0
- package/docs/src/core/components/functional/list/list.md +125 -0
- package/docs/src/core/components/functional/mix/mix.md +46 -0
- package/docs/src/core/components/functional/queue/queue.md +51 -0
- package/docs/src/core/components/functional/router/router.md +93 -0
- package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
- package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
- package/docs/src/core/components/functional/sdui/default-library.json +108 -0
- package/docs/src/core/components/functional/sdui/example.json +32 -0
- package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
- package/docs/src/core/components/functional/sdui/sdui.md +307 -0
- package/docs/src/core/components/functional/states/states.md +112 -0
- package/docs/src/core/components/functional/submit/submit.md +106 -0
- package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
- package/docs/src/core/components/functional/translation/translation.md +38 -0
- package/docs/src/core/components/functional/value/value.md +47 -0
- package/docs/src/core/components/ui/alert/alert.md +186 -0
- package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/src/core/components/ui/badge/badge.md +181 -0
- package/docs/src/core/components/ui/button/button.md +216 -0
- package/docs/src/core/components/ui/captcha/captcha.md +56 -0
- package/docs/src/core/components/ui/card/card.md +215 -0
- package/docs/src/core/components/ui/divider/divider.md +126 -0
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +125 -0
- package/docs/src/core/components/ui/form/fieldset/fieldset.md +161 -0
- package/docs/src/core/components/ui/form/form-actions/form-actions.md +98 -0
- package/docs/src/core/components/ui/form/form-layout/form-layout.md +109 -0
- package/docs/src/core/components/ui/form/input/input.md +142 -0
- package/docs/src/core/components/ui/form/radio/radio.md +78 -0
- package/docs/src/core/components/ui/form/select/select.md +86 -0
- package/docs/src/core/components/ui/form/switch/switch.md +80 -0
- package/docs/src/core/components/ui/form/textarea/textarea.md +82 -0
- package/docs/src/core/components/ui/group/group.md +77 -0
- package/docs/src/core/components/ui/icon/icon.md +214 -0
- package/docs/src/core/components/ui/icon/icons.json +1 -0
- package/docs/src/core/components/ui/image/image.md +167 -0
- package/docs/src/core/components/ui/link/link.md +81 -0
- package/docs/src/core/components/ui/loader/loader.md +87 -0
- package/docs/src/core/components/ui/menu/menu.md +370 -0
- package/docs/src/core/components/ui/modal/modal.md +211 -0
- package/docs/src/core/components/ui/pop/pop.md +216 -0
- package/docs/src/core/components/ui/progress/progress.md +109 -0
- package/docs/src/core/components/ui/table/table.md +267 -0
- package/docs/src/core/components/ui/theme/theme.md +97 -0
- package/docs/src/core/components/ui/toast/toast.md +147 -0
- package/docs/src/core/components/ui/tooltip/tooltip.md +89 -0
- package/docs/src/docs/decorators/ancestor-attribute.md +59 -0
- package/docs/src/docs/decorators/auto-subscribe.md +40 -0
- package/docs/src/docs/decorators/bind.md +76 -0
- package/docs/src/docs/decorators/get.md +160 -0
- package/docs/src/docs/decorators/handle.md +119 -0
- package/docs/src/docs/decorators/on-assign.md +63 -0
- package/docs/src/docs/decorators/patch.md +44 -0
- package/docs/src/docs/decorators/post.md +134 -0
- package/docs/src/docs/decorators/publish.md +56 -0
- package/docs/src/docs/decorators/put.md +51 -0
- package/docs/src/docs/decorators/subscribe.md +87 -0
- package/docs/src/docs/decorators/wait-for-ancestors.md +76 -0
- package/docs/src/docs/directives/sub.md +75 -0
- package/docs/src/docs/directives/t.md +73 -0
- package/docs/src/docs/getting-started/ai-agents.md +50 -0
- package/docs/src/docs/getting-started/components.md +5 -0
- package/docs/src/docs/getting-started/create-a-component.md +136 -0
- package/docs/src/docs/getting-started/dataFlow.md +87 -0
- package/docs/src/docs/getting-started/installation.md +36 -0
- package/docs/src/docs/getting-started/my-first-component.md +227 -0
- package/docs/src/docs/getting-started/start.md +35 -0
- package/docs/src/docs/getting-started/theming.md +253 -0
- package/docs/src/docs/misc/api-configuration.md +79 -0
- package/docs/src/docs/misc/dataProviderKey.md +168 -0
- package/docs/src/docs/misc/docs-mock-api.md +62 -0
- package/docs/src/docs/misc/dynamic-path.md +71 -0
- package/docs/src/docs/misc/endpoint.md +45 -0
- package/docs/src/docs/misc/html-integration.md +14 -0
- package/docs/src/docs/search/docs-search.json +10332 -0
- package/docs/src/tag-list.json +1 -0
- package/docs/src/tsconfig-model.json +23 -0
- package/docs/src/tsconfig.json +1359 -0
- package/index.html +157 -5
- package/package.json +8 -4
- package/public/docs-mock-api-sw.js +58 -223
- package/public/docs-mock-api-sw.js.map +4 -4
- package/public/img/concorde/plane_01.jpg +0 -0
- package/public/img/concorde/plane_02.jpg +0 -0
- package/public/img/concorde/plane_03.jpg +0 -0
- package/public/img/concorde/plane_04.jpg +0 -0
- package/public/img/concorde/plane_05.jpg +0 -0
- package/public/img/concorde/plane_06.jpg +0 -0
- package/public/img/concorde/plane_07.jpg +0 -0
- package/public/img/concorde/plane_08.jpg +0 -0
- package/public/img/concorde/plane_09.jpg +0 -0
- package/public/img/concorde/plane_10.jpg +0 -0
- package/public/img/concorde/plane_11.jpg +0 -0
- package/public/img/concorde/plane_12.jpg +0 -0
- package/public/img/concorde/plane_13.jpg +0 -0
- package/public/img/og-concorde.jpg +0 -0
- package/public/robots.txt +11 -10
- package/scripts/ai-init.mjs +104 -379
- package/scripts/ai-init.test.mjs +81 -239
- package/scripts/docs-markdown-vite-plugin.ts +43 -0
- package/scripts/docs-public-url.mjs +56 -0
- package/scripts/docs.htaccess +82 -0
- package/scripts/generate-cem.mjs +244 -0
- package/scripts/generate-cem.test.mjs +122 -0
- package/scripts/generate-crawl-docs.mjs +233 -118
- package/scripts/generate-crawl-docs.test.mjs +124 -0
- package/scripts/generate-sdui-catalog.mjs +11 -10
- package/scripts/post-build-docs.js +37 -50
- package/scripts/pre-publish.mjs +2 -1
- package/scripts/site-pages.mjs +212 -0
- package/scripts/site-pages.test.mjs +116 -0
- package/site-pages/about.md +22 -0
- package/site-pages/privacy.md +32 -0
- package/src/core/components/functional/date/date.md +91 -231
- package/src/core/components/functional/fetch/fetch.md +66 -83
- package/src/core/components/functional/if/if.md +28 -3
- package/src/core/components/functional/jsonata/jsonata.md +42 -37
- package/src/core/components/functional/list/list.md +103 -43
- package/src/core/components/functional/mix/mix.md +31 -26
- package/src/core/components/functional/queue/queue.demo.ts +10 -7
- package/src/core/components/functional/queue/queue.md +40 -61
- package/src/core/components/functional/router/router.demo.ts +16 -16
- package/src/core/components/functional/router/router.md +64 -65
- package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
- package/src/core/components/functional/sdui/component-catalog.json +1 -1
- package/src/core/components/functional/sdui/example.json +19 -86
- package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
- package/src/core/components/functional/sdui/sdui.md +187 -358
- package/src/core/components/functional/states/states.demo.ts +21 -22
- package/src/core/components/functional/states/states.md +86 -61
- package/src/core/components/functional/states/states.ts +1 -1
- package/src/core/components/functional/submit/submit.md +64 -72
- package/src/core/components/functional/translation/translation.md +38 -0
- package/src/core/components/functional/value/value.md +34 -22
- package/src/core/components/ui/alert/alert.md +48 -58
- package/src/core/components/ui/badge/badge.md +27 -34
- package/src/core/components/ui/button/button.md +139 -106
- package/src/core/components/ui/captcha/captcha.md +17 -32
- package/src/core/components/ui/card/card.md +6 -6
- package/src/core/components/ui/divider/divider.md +8 -11
- package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
- package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
- package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
- package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
- package/src/core/components/ui/form/input/input.md +95 -95
- package/src/core/components/ui/form/radio/radio.md +55 -34
- package/src/core/components/ui/form/select/select.md +60 -45
- package/src/core/components/ui/form/switch/switch.md +57 -34
- package/src/core/components/ui/form/textarea/textarea.md +55 -38
- package/src/core/components/ui/group/group.md +35 -33
- package/src/core/components/ui/icon/icon.md +4 -4
- package/src/core/components/ui/image/image.md +41 -107
- package/src/core/components/ui/link/link.md +6 -6
- package/src/core/components/ui/loader/loader.md +30 -55
- package/src/core/components/ui/menu/menu.md +27 -27
- package/src/core/components/ui/modal/modal.md +72 -96
- package/src/core/components/ui/pop/pop.md +80 -158
- package/src/core/components/ui/progress/progress.md +2 -2
- package/src/core/components/ui/table/table.md +91 -255
- package/src/core/components/ui/theme/theme.md +11 -36
- package/src/core/components/ui/toast/toast.md +48 -117
- package/src/core/components/ui/tooltip/tooltip.md +27 -62
- package/src/core/decorators/subscriber/bind.ts +9 -14
- package/src/core/utils/LocationHandler.spec.ts +80 -0
- package/src/core/utils/LocationHandler.ts +5 -9
- package/src/docs/components/docs-demo-sources.ts +55 -140
- package/src/docs/components/docs-lit-demo.ts +1 -3
- package/src/docs/components/docs-source-link.ts +0 -82
- package/src/docs/decorators/ancestor-attribute.md +59 -0
- package/src/docs/decorators/auto-subscribe.md +40 -0
- package/src/docs/decorators/bind.md +76 -0
- package/src/docs/decorators/get.md +160 -0
- package/src/docs/decorators/handle.md +119 -0
- package/src/docs/decorators/on-assign.md +63 -0
- package/src/docs/decorators/patch.md +44 -0
- package/src/docs/decorators/post.md +134 -0
- package/src/docs/decorators/publish.md +56 -0
- package/src/docs/decorators/put.md +51 -0
- package/src/docs/decorators/subscribe.md +87 -0
- package/src/docs/decorators/wait-for-ancestors.md +76 -0
- package/src/docs/directives/sub.md +75 -0
- package/src/docs/directives/t.md +73 -0
- package/src/docs/docs-location.spec.ts +56 -0
- package/src/docs/docs-location.ts +133 -32
- package/src/docs/docs.ts +1 -2
- package/src/docs/example/decorators-demo-bind-demos.ts +83 -135
- package/src/docs/example/decorators-demo-geo.ts +30 -19
- package/src/docs/example/decorators-demo-post.ts +88 -186
- package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
- package/src/docs/example/decorators-demo.ts +85 -98
- package/src/docs/example/docs-api-config-demos.ts +19 -20
- package/src/docs/example/docs-flight-demos.ts +147 -0
- package/src/docs/example/docs-jsonata-demos.ts +52 -52
- package/src/docs/example/docs-list-demos.ts +43 -123
- package/src/docs/example/docs-provider-keys.ts +21 -28
- package/src/docs/example/docs-queue-demos.ts +37 -77
- package/src/docs/example/docs-router-demos.ts +20 -25
- package/src/docs/example/docs-submit-demos.ts +48 -48
- package/src/docs/example/docs-toggle-demos.ts +4 -3
- package/src/docs/getting-started/ai-agents.md +50 -0
- package/src/docs/getting-started/components.md +5 -0
- package/src/docs/getting-started/create-a-component.md +136 -0
- package/src/docs/getting-started/dataFlow.md +87 -0
- package/src/docs/getting-started/installation.md +36 -0
- package/src/docs/getting-started/my-first-component.md +227 -0
- package/src/docs/getting-started/start.md +35 -0
- package/src/docs/getting-started/theming.md +253 -0
- package/src/docs/header/header.ts +11 -6
- package/src/docs/home/catalog.ts +1 -1
- package/src/docs/home/home.ts +20 -11
- package/src/docs/layout.ts +12 -13
- package/src/docs/misc/api-configuration.md +79 -0
- package/src/docs/misc/dataProviderKey.md +168 -0
- package/src/docs/misc/docs-mock-api.md +62 -0
- package/src/docs/misc/dynamic-path.md +71 -0
- package/src/docs/misc/endpoint.md +45 -0
- package/src/docs/misc/html-integration.md +14 -0
- package/src/docs/mock-api/api-config-mock.ts +5 -0
- package/src/docs/mock-api/fixtures.ts +0 -278
- package/src/docs/mock-api/flights.ts +89 -0
- package/src/docs/mock-api/router.ts +3 -4
- package/src/docs/mock-api/urls.ts +1 -2
- package/src/docs/navigation/navigation.ts +82 -103
- package/src/docs/navigation/toc.ts +7 -4
- package/src/docs/search/docs-search.json +2804 -5024
- package/src/docs/search/markdown-renderer.ts +31 -8
- package/src/docs/search/page.ts +9 -6
- package/src/docs/search/search.ts +154 -122
- package/src/docs/tailwind/css/docs/content.css +4 -5
- package/src/tsconfig.json +11 -5
- package/src/tsconfig.tsbuildinfo +1 -1
- package/vite.config.mts +11 -2
- package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
- package/ai/AGENTS.md +0 -56
- package/ai/cursor/rules/concorde-menu.mdc +0 -15
- package/ai/cursor/rules/concorde-scope.mdc +0 -14
- package/ai/cursor/rules/concorde-theme.mdc +0 -13
- package/ai/cursor/rules/concorde.mdc +0 -66
- package/ai/jetbrains/rules/concorde.md +0 -53
- package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
- package/ai/skills/concorde-imports/SKILL.md +0 -78
- package/ai/skills/concorde-menu/SKILL.md +0 -74
- package/ai/skills/concorde-scope/SKILL.md +0 -70
- package/ai/skills/concorde-theme/SKILL.md +0 -57
- package/docs/assets/index-CD4WyL6o.css +0 -1
- package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
- package/src/docs/_core-concept/overview.md +0 -57
- package/src/docs/_core-concept/subscriber.md +0 -75
- package/src/docs/_decorators/ancestor-attribute.md +0 -128
- package/src/docs/_decorators/auto-subscribe.md +0 -202
- package/src/docs/_decorators/bind.md +0 -167
- package/src/docs/_decorators/get.md +0 -162
- package/src/docs/_decorators/handle.md +0 -175
- package/src/docs/_decorators/on-assign.md +0 -390
- package/src/docs/_decorators/patch.md +0 -70
- package/src/docs/_decorators/post.md +0 -146
- package/src/docs/_decorators/publish.md +0 -55
- package/src/docs/_decorators/put.md +0 -70
- package/src/docs/_decorators/subscribe.md +0 -100
- package/src/docs/_decorators/wait-for-ancestors.md +0 -163
- package/src/docs/_directives/sub.md +0 -91
- package/src/docs/_getting-started/ai-agents.md +0 -76
- package/src/docs/_getting-started/concorde-manual-install.md +0 -133
- package/src/docs/_getting-started/concorde-outside.md +0 -33
- package/src/docs/_getting-started/my-first-subscriber.md +0 -120
- package/src/docs/_getting-started/pubsub.md +0 -37
- package/src/docs/_misc/formelement-subscriber-removal.md +0 -115
- package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
- package/src/docs/example/docs-joke-demos.ts +0 -297
- /package/{src/docs/_getting-started → docs/docs/getting-started}/components.md +0 -0
- /package/{src/docs/_getting-started → docs/docs/getting-started}/theming.md +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Queue
|
|
2
|
+
|
|
3
|
+
**`sonic-queue`** loads a paginated API in batches and renders each batch as an internal [List](/core/components/functional/list). Choose it over `sonic-list` for long or endless lists; the key attributes are `dataProviderExpression` · `limit` · `dataFilterProvider`.
|
|
4
|
+
|
|
5
|
+
## Lazy load
|
|
6
|
+
|
|
7
|
+
`dataProviderExpression` is the request path: `$offset` and `$limit` are replaced for each batch. The first batch starts at `offset` (default `0`) with `limit` rows (default `5`, at most `15`). The next batch loads when the end of the list scrolls into view, and the queue stops at the first empty batch. Put the queue in a box with a fixed height and `overflow-y-auto`, then scroll inside it.
|
|
8
|
+
|
|
9
|
+
<docs-lit-demo for="docs-queue-geo-demo"></docs-lit-demo>
|
|
10
|
+
|
|
11
|
+
Rows come from the `.items` callback, as on [List](/core/components/functional/list); `.noItems` and `.skeleton` work the same way. Without `$offset` in the expression, the queue sends one request and behaves like a list. Set `noLazyload` to load every batch in a row without waiting for the scroll.
|
|
12
|
+
|
|
13
|
+
## Filters
|
|
14
|
+
|
|
15
|
+
`dataFilterProvider` names a form store (`formDataProvider`). Each non-empty field is added to the query string; when a field changes, the queue drops the loaded batches and reloads from the first offset, after a `filterTimeoutMs` debounce (default `400`). Search a city, an airport or a flight number.
|
|
16
|
+
|
|
17
|
+
<docs-lit-demo for="docs-queue-users-demo"></docs-lit-demo>
|
|
18
|
+
|
|
19
|
+
To keep some form fields out of the request, list their names in `filteredFields`, separated by spaces.
|
|
20
|
+
|
|
21
|
+
## API reference
|
|
22
|
+
|
|
23
|
+
| Attribute | Values | Description |
|
|
24
|
+
|-----------|--------|-------------|
|
|
25
|
+
| `dataProviderExpression` | string (default: closest ancestor `dataProvider`) | Request path; `$offset` and `$limit` are replaced for each batch |
|
|
26
|
+
| `serviceURL` | string | API base URL; inherited from the closest ancestor |
|
|
27
|
+
| `key` | string | Response property that holds the rows |
|
|
28
|
+
| `limit` | number (default `5`, max `15`) | Rows per batch |
|
|
29
|
+
| `offset` | number (default `0`) | Offset of the first batch |
|
|
30
|
+
| `idKey` | string (default `id`) | Row property used as identity |
|
|
31
|
+
| `dataFilterProvider` | string | Form store whose fields are added to the query; inherited from the closest ancestor |
|
|
32
|
+
| `filteredFields` | space-separated names | Form fields not sent to the API |
|
|
33
|
+
| `filterTimeoutMs` | number (default `400`) | Debounce before reloading after a filter change |
|
|
34
|
+
| `noLazyload` | boolean | Loads all batches without waiting for the scroll |
|
|
35
|
+
| `lazyBoundsRatio` | number (default `1`) | Lazy-load margin, as a multiple of the viewport size |
|
|
36
|
+
| `loader` | `inline` · `fixed` (default `inline`) | Loader shown while a batch loads |
|
|
37
|
+
| `cache` | `RequestCache` (default `default`) | Fetch cache mode |
|
|
38
|
+
| `invalidateOnPageShow` | boolean | Reloads batches when the page is restored from the back/forward cache |
|
|
39
|
+
| `localStorage` | `disabled` · `enabled` (default `disabled`) | Forwarded to each batch list |
|
|
40
|
+
| `debug` | boolean | Shows a live inspector of each batch list's data |
|
|
41
|
+
|
|
42
|
+
| Property | Type | Description |
|
|
43
|
+
|----------|------|-------------|
|
|
44
|
+
| `items` | `ListItems` | Row renderer |
|
|
45
|
+
| `noItems` | `ListItems` | Rendered when the first batch is empty |
|
|
46
|
+
| `skeleton` | `ListItems` | Rendered while a batch loads |
|
|
47
|
+
| `itemPropertyMap` | object | Forwarded to each batch list |
|
|
48
|
+
|
|
49
|
+
The queue publisher exposes `resultCount`, the number of rows loaded so far.
|
|
50
|
+
|
|
51
|
+
No slots. `<template>` children are used as row templates for hosts without Lit; see [HTML integration](/docs/misc/html-integration).
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-doc-url="https://concorde.supersoniks.org/core/components/functional/router" data-doc-id="core/components/functional/router/router">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Router — Concorde by Supersoniks</title>
|
|
7
|
+
<meta name="description" content="sonic-router watches the location (pathname + hash) and renders the views whose route matches. From Lit, pass a .routes map of path patterns to render functions; use sonic-redirect to navigate when a ">
|
|
8
|
+
<meta name="keywords" content="Concorde, supersoniks, core/components/functional/router/router, router, Router, functional component, sonic-router, web component, .routes, sonic-redirect, fallback, #flights/:code, { code }, basePath, , title">
|
|
9
|
+
<meta name="concorde-doc-id" content="core/components/functional/router/router">
|
|
10
|
+
<link rel="canonical" href="https://concorde.supersoniks.org/core/components/functional/router">
|
|
11
|
+
<link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/core/components/functional/router.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/functional/router">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 functional component — Router</strong>. sonic-router watches the location (pathname + hash) and renders the views whose route matches. From Lit, pass a .routes map of path patterns to render functions; use sonic-redirect to navigate when a <span>Doc ID: <code>core/components/functional/router/router</code>. Keywords: Concorde, supersoniks, core/components/functional/router/router, router, Router, functional component, sonic-router, web component, .routes, sonic-redirect, fallback, #flights/:code, { code }, basePath, , title. URL: <a href="https://concorde.supersoniks.org/core/components/functional/router">https://concorde.supersoniks.org/core/components/functional/router</a>.</span></p>
|
|
20
|
+
<h1 id="router">Router</h1>
|
|
21
|
+
<p><strong><code>sonic-router</code></strong> watches the location (pathname + hash) and renders the views whose route matches. From Lit, pass a <code>.routes</code> map of path patterns to render functions; use <strong><code>sonic-redirect</code></strong> to navigate when a value appears in a data provider.</p>
|
|
22
|
+
<h2 id="static-routes">Static routes</h2>
|
|
23
|
+
<p>Each key is tested against the pathname + hash, first as a RegExp, then as a <a href="https://www.npmjs.com/package/url-pattern">url-pattern</a>. Every matching route renders; the <code>fallback</code> key renders when none does. The demo links append a second hash so the doc page itself stays loaded.</p>
|
|
24
|
+
<p><docs-lit-demo for="docs-router-basic-demo"></docs-lit-demo></p>
|
|
25
|
+
<p>Set <code>.routes</code> as a <strong>property</strong> binding: render functions cannot go through an HTML attribute.</p>
|
|
26
|
+
<h2 id="route-parameters">Route parameters</h2>
|
|
27
|
+
<p>A url-pattern key such as <code>#flights/:code</code> passes an object (<code>{ code }</code>) to its render function. A RegExp key passes its capturing groups as an array, in order.</p>
|
|
28
|
+
<p><docs-lit-demo for="docs-router-params-demo"></docs-lit-demo></p>
|
|
29
|
+
<h2 id="base-path">Base path</h2>
|
|
30
|
+
<p>By default, url-pattern keys accept any leading slashes and RegExp keys are not anchored. Set <code>basePath</code> to require a prefix: it is prepended to every url-pattern key, and to RegExp keys after <code>^</code>.</p>
|
|
31
|
+
<pre><code class="language-html">&lt;sonic-router basePath="/app"&gt;&lt;/sonic-router&gt;
|
|
32
|
+
&lt;!-- "/fleet" now matches /app/fleet only --&gt;
|
|
33
|
+
</code></pre>
|
|
34
|
+
<h2 id="html-templates">HTML templates</h2>
|
|
35
|
+
<p>Without Lit, declare <code><template data-route></code> children. A <code>title</code> attribute sets <code>document.title</code> and <code>data-fallback</code> marks the template shown when nothing matches. <code>dataProviderExpression</code> wraps the content in an element whose <code>dataProvider</code> is built from the route (<code>$1</code> or <code>:name</code>), as in <a href="/core/components/functional/states">States</a>.</p>
|
|
36
|
+
<pre><code class="language-html">&lt;sonic-router fallBackRoute="/departures"&gt;
|
|
37
|
+
&lt;template data-route="/departures" title="Departures"&gt;…&lt;/template&gt;
|
|
38
|
+
&lt;template data-route="/flights/:code" dataProviderExpression="flights/:code"&gt;
|
|
39
|
+
&lt;sonic-value key="status"&gt;&lt;/sonic-value&gt;
|
|
40
|
+
&lt;/template&gt;
|
|
41
|
+
&lt;/sonic-router&gt;
|
|
42
|
+
</code></pre>
|
|
43
|
+
<p><code>fallBackRoute</code> navigates to its URL when no route matches, even if a <code>data-fallback</code> template exists. A <code>routes.fallback</code> function prevents it.</p>
|
|
44
|
+
<h2 id="redirect-on-data">Redirect on data</h2>
|
|
45
|
+
<p><strong><code>sonic-redirect</code></strong> navigates to <code>to</code> once the value at <code>onData</code> (dot path) in its data provider is set and truthy. Here, checking in sends the passenger to the boarding page.</p>
|
|
46
|
+
<pre><code class="language-html">&lt;sonic-redirect to="#boarding" dataProvider="checkin" onData="checkedIn"&gt;&lt;/sonic-redirect&gt;
|
|
47
|
+
&lt;div formDataProvider="checkin"&gt;
|
|
48
|
+
&lt;sonic-button radio name="checkedIn" value="yes"&gt;Check in&lt;/sonic-button&gt;
|
|
49
|
+
&lt;/div&gt;
|
|
50
|
+
</code></pre>
|
|
51
|
+
<p>Objects do not trigger the redirect: point <code>onData</code> at a scalar such as <code>passenger.id</code>.</p>
|
|
52
|
+
<h2 id="api-reference">API reference</h2>
|
|
53
|
+
<p><code>sonic-router</code></p>
|
|
54
|
+
<table>
|
|
55
|
+
<thead>
|
|
56
|
+
<tr>
|
|
57
|
+
<th>Attribute</th>
|
|
58
|
+
<th>Values</th>
|
|
59
|
+
<th>Description</th>
|
|
60
|
+
</tr>
|
|
61
|
+
</thead>
|
|
62
|
+
<tbody><tr>
|
|
63
|
+
<td><code>routes</code></td>
|
|
64
|
+
<td>object (property)</td>
|
|
65
|
+
<td>Render functions keyed by RegExp or url-pattern, plus <code>fallback</code></td>
|
|
66
|
+
</tr>
|
|
67
|
+
<tr>
|
|
68
|
+
<td><code>basePath</code></td>
|
|
69
|
+
<td>string</td>
|
|
70
|
+
<td>Prefix required before every route. Default: any leading slashes for url-pattern, no anchor for RegExp</td>
|
|
71
|
+
</tr>
|
|
72
|
+
<tr>
|
|
73
|
+
<td><code>fallBackRoute</code></td>
|
|
74
|
+
<td>string</td>
|
|
75
|
+
<td>URL to navigate to when no route matches and <code>routes.fallback</code> is not set</td>
|
|
76
|
+
</tr>
|
|
77
|
+
</tbody></table>
|
|
78
|
+
<table>
|
|
79
|
+
<thead>
|
|
80
|
+
<tr>
|
|
81
|
+
<th>Template attribute</th>
|
|
82
|
+
<th>Description</th>
|
|
83
|
+
</tr>
|
|
84
|
+
</thead>
|
|
85
|
+
<tbody><tr>
|
|
86
|
+
<td><code>data-route</code></td>
|
|
87
|
+
<td>RegExp or url-pattern matched against the location</td>
|
|
88
|
+
</tr>
|
|
89
|
+
<tr>
|
|
90
|
+
<td><code>data-fallback</code></td>
|
|
91
|
+
<td>Template shown when no route matches</td>
|
|
92
|
+
</tr>
|
|
93
|
+
<tr>
|
|
94
|
+
<td><code>title</code></td>
|
|
95
|
+
<td>Sets <code>document.title</code> when the template renders</td>
|
|
96
|
+
</tr>
|
|
97
|
+
<tr>
|
|
98
|
+
<td><code>dataProviderExpression</code></td>
|
|
99
|
+
<td>Builds the <code>dataProvider</code> of a wrapper around the content from <code>$1</code>… or <code>:name</code></td>
|
|
100
|
+
</tr>
|
|
101
|
+
</tbody></table>
|
|
102
|
+
<table>
|
|
103
|
+
<thead>
|
|
104
|
+
<tr>
|
|
105
|
+
<th>Slot</th>
|
|
106
|
+
<th>Description</th>
|
|
107
|
+
</tr>
|
|
108
|
+
</thead>
|
|
109
|
+
<tbody><tr>
|
|
110
|
+
<td><em>(default)</em></td>
|
|
111
|
+
<td><code><template data-route></code> children</td>
|
|
112
|
+
</tr>
|
|
113
|
+
</tbody></table>
|
|
114
|
+
<p><code>sonic-redirect</code></p>
|
|
115
|
+
<table>
|
|
116
|
+
<thead>
|
|
117
|
+
<tr>
|
|
118
|
+
<th>Attribute</th>
|
|
119
|
+
<th>Values</th>
|
|
120
|
+
<th>Description</th>
|
|
121
|
+
</tr>
|
|
122
|
+
</thead>
|
|
123
|
+
<tbody><tr>
|
|
124
|
+
<td><code>to</code></td>
|
|
125
|
+
<td>string</td>
|
|
126
|
+
<td>Destination. A value starting with <code>#</code> only changes the hash</td>
|
|
127
|
+
</tr>
|
|
128
|
+
<tr>
|
|
129
|
+
<td><code>dataProvider</code></td>
|
|
130
|
+
<td>string</td>
|
|
131
|
+
<td>Provider to watch. Inherited from the closest ancestor when omitted</td>
|
|
132
|
+
</tr>
|
|
133
|
+
<tr>
|
|
134
|
+
<td><code>onData</code></td>
|
|
135
|
+
<td>string (required)</td>
|
|
136
|
+
<td>Dot path of the value that triggers the redirect when truthy</td>
|
|
137
|
+
</tr>
|
|
138
|
+
<tr>
|
|
139
|
+
<td><code>onAdded</code></td>
|
|
140
|
+
<td>boolean</td>
|
|
141
|
+
<td>Redirects as soon as the element renders, without waiting for data</td>
|
|
142
|
+
</tr>
|
|
143
|
+
<tr>
|
|
144
|
+
<td><code>pushState</code> · <code>replaceState</code></td>
|
|
145
|
+
<td>boolean</td>
|
|
146
|
+
<td>Navigates with <code>history.pushState</code> or <code>history.replaceState</code> instead of a full load. Ignored for <code>#</code> destinations</td>
|
|
147
|
+
</tr>
|
|
148
|
+
</tbody></table>
|
|
149
|
+
<p>No slots.</p>
|
|
150
|
+
|
|
151
|
+
</article>
|
|
152
|
+
</main>
|
|
153
|
+
</body>
|
|
154
|
+
</html>
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Router
|
|
2
|
+
|
|
3
|
+
**`sonic-router`** watches the location (pathname + hash) and renders the views whose route matches. From Lit, pass a `.routes` map of path patterns to render functions; use **`sonic-redirect`** to navigate when a value appears in a data provider.
|
|
4
|
+
|
|
5
|
+
## Static routes
|
|
6
|
+
|
|
7
|
+
Each key is tested against the pathname + hash, first as a RegExp, then as a [url-pattern](https://www.npmjs.com/package/url-pattern). Every matching route renders; the `fallback` key renders when none does. The demo links append a second hash so the doc page itself stays loaded.
|
|
8
|
+
|
|
9
|
+
<docs-lit-demo for="docs-router-basic-demo"></docs-lit-demo>
|
|
10
|
+
|
|
11
|
+
Set `.routes` as a **property** binding: render functions cannot go through an HTML attribute.
|
|
12
|
+
|
|
13
|
+
## Route parameters
|
|
14
|
+
|
|
15
|
+
A url-pattern key such as `#flights/:code` passes an object (`{ code }`) to its render function. A RegExp key passes its capturing groups as an array, in order.
|
|
16
|
+
|
|
17
|
+
<docs-lit-demo for="docs-router-params-demo"></docs-lit-demo>
|
|
18
|
+
|
|
19
|
+
## Base path
|
|
20
|
+
|
|
21
|
+
By default, url-pattern keys accept any leading slashes and RegExp keys are not anchored. Set `basePath` to require a prefix: it is prepended to every url-pattern key, and to RegExp keys after `^`.
|
|
22
|
+
|
|
23
|
+
<sonic-code language="html" noPreview>
|
|
24
|
+
<template>
|
|
25
|
+
<sonic-router basePath="/app"></sonic-router>
|
|
26
|
+
<!-- "/fleet" now matches /app/fleet only -->
|
|
27
|
+
</template>
|
|
28
|
+
</sonic-code>
|
|
29
|
+
|
|
30
|
+
## HTML templates
|
|
31
|
+
|
|
32
|
+
Without Lit, declare `<template data-route>` children. A `title` attribute sets `document.title` and `data-fallback` marks the template shown when nothing matches. `dataProviderExpression` wraps the content in an element whose `dataProvider` is built from the route (`$1` or `:name`), as in [States](/core/components/functional/states).
|
|
33
|
+
|
|
34
|
+
<sonic-code language="html" noPreview>
|
|
35
|
+
<template>
|
|
36
|
+
<sonic-router fallBackRoute="/departures">
|
|
37
|
+
<template data-route="/departures" title="Departures">…</template>
|
|
38
|
+
<template data-route="/flights/:code" dataProviderExpression="flights/:code">
|
|
39
|
+
<sonic-value key="status"></sonic-value>
|
|
40
|
+
</template>
|
|
41
|
+
</sonic-router>
|
|
42
|
+
</template>
|
|
43
|
+
</sonic-code>
|
|
44
|
+
|
|
45
|
+
`fallBackRoute` navigates to its URL when no route matches, even if a `data-fallback` template exists. A `routes.fallback` function prevents it.
|
|
46
|
+
|
|
47
|
+
## Redirect on data
|
|
48
|
+
|
|
49
|
+
**`sonic-redirect`** navigates to `to` once the value at `onData` (dot path) in its data provider is set and truthy. Here, checking in sends the passenger to the boarding page.
|
|
50
|
+
|
|
51
|
+
<sonic-code language="html" noPreview>
|
|
52
|
+
<template>
|
|
53
|
+
<sonic-redirect to="#boarding" dataProvider="checkin" onData="checkedIn"></sonic-redirect>
|
|
54
|
+
<div formDataProvider="checkin">
|
|
55
|
+
<sonic-button radio name="checkedIn" value="yes">Check in</sonic-button>
|
|
56
|
+
</div>
|
|
57
|
+
</template>
|
|
58
|
+
</sonic-code>
|
|
59
|
+
|
|
60
|
+
Objects do not trigger the redirect: point `onData` at a scalar such as `passenger.id`.
|
|
61
|
+
|
|
62
|
+
## API reference
|
|
63
|
+
|
|
64
|
+
`sonic-router`
|
|
65
|
+
|
|
66
|
+
| Attribute | Values | Description |
|
|
67
|
+
|-----------|--------|-------------|
|
|
68
|
+
| `routes` | object (property) | Render functions keyed by RegExp or url-pattern, plus `fallback` |
|
|
69
|
+
| `basePath` | string | Prefix required before every route. Default: any leading slashes for url-pattern, no anchor for RegExp |
|
|
70
|
+
| `fallBackRoute` | string | URL to navigate to when no route matches and `routes.fallback` is not set |
|
|
71
|
+
|
|
72
|
+
| Template attribute | Description |
|
|
73
|
+
|--------------------|-------------|
|
|
74
|
+
| `data-route` | RegExp or url-pattern matched against the location |
|
|
75
|
+
| `data-fallback` | Template shown when no route matches |
|
|
76
|
+
| `title` | Sets `document.title` when the template renders |
|
|
77
|
+
| `dataProviderExpression` | Builds the `dataProvider` of a wrapper around the content from `$1`… or `:name` |
|
|
78
|
+
|
|
79
|
+
| Slot | Description |
|
|
80
|
+
|------|-------------|
|
|
81
|
+
| *(default)* | `<template data-route>` children |
|
|
82
|
+
|
|
83
|
+
`sonic-redirect`
|
|
84
|
+
|
|
85
|
+
| Attribute | Values | Description |
|
|
86
|
+
|-----------|--------|-------------|
|
|
87
|
+
| `to` | string | Destination. A value starting with `#` only changes the hash |
|
|
88
|
+
| `dataProvider` | string | Provider to watch. Inherited from the closest ancestor when omitted |
|
|
89
|
+
| `onData` | string (required) | Dot path of the value that triggers the redirect when truthy |
|
|
90
|
+
| `onAdded` | boolean | Redirects as soon as the element renders, without waiting for data |
|
|
91
|
+
| `pushState` · `replaceState` | boolean | Navigates with `history.pushState` or `history.replaceState` instead of a full load. Ignored for `#` destinations |
|
|
92
|
+
|
|
93
|
+
No slots.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-doc-url="https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points" data-doc-id="core/components/functional/sdui/sdui-extension-points">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>SDUI — points d’extension publics — Concorde by Supersoniks</title>
|
|
7
|
+
<meta name="description" content="Aide-mémoire pour les dépôts externes (adaptateurs, shells).">
|
|
8
|
+
<meta name="keywords" content="Concorde, supersoniks, core/components/functional/sdui/sdui-extension-points, sdui-extension-points, SDUI — points d’extension publics, functional component, sonic-sdui-extension-points, web component, ).
|
|
9
|
+
La doc utilisateur reste , safe, html
|
|
10
|
+
|
|
11
|
+
, js, markup, innerHTML, prefix, suffix, textContent, action">
|
|
12
|
+
<meta name="concorde-doc-id" content="core/components/functional/sdui/sdui-extension-points">
|
|
13
|
+
<link rel="canonical" href="https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points">
|
|
14
|
+
<link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points.md">
|
|
15
|
+
</head>
|
|
16
|
+
<body>
|
|
17
|
+
<header>
|
|
18
|
+
<p><a href="/docs/index.html">Concorde documentation</a> · <a href="https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points">same URL (interactive)</a> · <a href="/llms.txt">llms.txt</a></p>
|
|
19
|
+
</header>
|
|
20
|
+
<main>
|
|
21
|
+
<article>
|
|
22
|
+
<p class="doc-lead" id="doc-summary"><strong>Concorde functional component — SDUI — points d’extension publics</strong>. Aide-mémoire pour les dépôts externes (adaptateurs, shells). <span>Doc ID: <code>core/components/functional/sdui/sdui-extension-points</code>. Keywords: Concorde, supersoniks, core/components/functional/sdui/sdui-extension-points, sdui-extension-points, SDUI — points d’extension publics, functional component, sonic-sdui-extension-points, web component, ).
|
|
23
|
+
La doc utilisateur reste , safe, html
|
|
24
|
+
|
|
25
|
+
, js, markup, innerHTML, prefix, suffix, textContent, action. URL: <a href="https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points">https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points</a>.</span></p>
|
|
26
|
+
<h1 id="sdui--points-dextension-publics">SDUI — points d’extension publics</h1>
|
|
27
|
+
<p>Aide-mémoire pour les dépôts externes (adaptateurs, shells).<br><strong>Pas une page de la doc site</strong> — à lire dans le package npm<br>(<code>node_modules/@supersoniks/concorde/src/core/components/functional/sdui/sdui-extension-points.md</code>).<br>La doc utilisateur reste <code>sdui.md</code> (auto-suffisante).</p>
|
|
28
|
+
<p><strong>Aucune mention de protocoles tiers ici</strong> : uniquement les API génériques Concorde.</p>
|
|
29
|
+
<h2 id="1-profil-safe-opt-in">1. Profil <code>safe</code> (opt-in)</h2>
|
|
30
|
+
<pre><code class="language-html"><sonic-sdui profile="safe" …>
|
|
31
|
+
</code></pre>
|
|
32
|
+
<table>
|
|
33
|
+
<thead>
|
|
34
|
+
<tr>
|
|
35
|
+
<th>Refusé</th>
|
|
36
|
+
<th>Autorisé</th>
|
|
37
|
+
</tr>
|
|
38
|
+
</thead>
|
|
39
|
+
<tbody><tr>
|
|
40
|
+
<td><code>js</code>, <code>markup</code>, <code>innerHTML</code>, <code>prefix</code>, <code>suffix</code></td>
|
|
41
|
+
<td><code>textContent</code>, structure, attributs, <code>action</code>, <code>childNodeIds</code></td>
|
|
42
|
+
</tr>
|
|
43
|
+
</tbody></table>
|
|
44
|
+
<ul>
|
|
45
|
+
<li>Nœud refusé → ignoré + <code>console.warn</code> (pas de crash)</li>
|
|
46
|
+
<li>Helper pur : <code>validateSafeDescriptor(descriptor)</code> depuis <code>sdui-safe</code></li>
|
|
47
|
+
</ul>
|
|
48
|
+
<h2 id="2-événement-sdui-action">2. Événement <code>sdui-action</code></h2>
|
|
49
|
+
<p>Sur un nœud :</p>
|
|
50
|
+
<pre><code class="language-json">{
|
|
51
|
+
"tagName": "sonic-button",
|
|
52
|
+
"nodeId": "confirm",
|
|
53
|
+
"textContent": "OK",
|
|
54
|
+
"action": { "name": "confirm", "context": { "step": 1 } }
|
|
55
|
+
}
|
|
56
|
+
</code></pre>
|
|
57
|
+
<p>Au clic, <code>sonic-sdui</code> émet :</p>
|
|
58
|
+
<ul>
|
|
59
|
+
<li>type : <code>sdui-action</code></li>
|
|
60
|
+
<li><code>detail</code> : <code>{ name, context, sourceNodeId? }</code></li>
|
|
61
|
+
<li><code>bubbles: true</code>, <code>composed: true</code></li>
|
|
62
|
+
</ul>
|
|
63
|
+
<p>Ne remplace pas <code>sonic-submit</code> / POST / <code>messagesKey</code>.</p>
|
|
64
|
+
<h2 id="3-catalogue-de-composants-build-only">3. Catalogue de composants (build only)</h2>
|
|
65
|
+
<ul>
|
|
66
|
+
<li>Fichier publié : <code>component-catalog.json</code></li>
|
|
67
|
+
<li>Import : <code>@supersoniks/concorde/sdui/component-catalog.json</code></li>
|
|
68
|
+
<li>Régénération : <code>yarn generate:sdui-catalog</code> (aussi <code>prebuild</code>)</li>
|
|
69
|
+
<li>Gaps d’annotations : <code>component-catalog.gaps.json</code></li>
|
|
70
|
+
<li><strong>Aucun impact runtime</strong></li>
|
|
71
|
+
</ul>
|
|
72
|
+
<h2 id="4-rendu-partiel-opt-in">4. Rendu partiel (opt-in)</h2>
|
|
73
|
+
<pre><code class="language-html"><sonic-sdui partial …>
|
|
74
|
+
</code></pre>
|
|
75
|
+
<ul>
|
|
76
|
+
<li>Registre plat : <code>nodeById</code></li>
|
|
77
|
+
<li>Enfants par id : <code>childNodeIds</code></li>
|
|
78
|
+
<li>Id manquant + <code>partial</code> → placeholder (<code>data-sdui-placeholder</code>, <code>data-sdui-node-id</code>, <code>display: contents</code>)</li>
|
|
79
|
+
<li>Sans <code>partial</code> → warning + skip</li>
|
|
80
|
+
</ul>
|
|
81
|
+
<h2 id="5-ops-incrémentales-opt-in-chemin-à-côté">5. Ops incrémentales (opt-in, chemin à côté)</h2>
|
|
82
|
+
<p>Le descripteur entier + rebuild reste le chemin par défaut. Les ops mutent un descripteur local et mettent à jour le DOM <strong>chirurgicalement</strong> (frères préservés : focus, valeurs d’input, état composants).</p>
|
|
83
|
+
<h3 id="méthodes-publiques-sur-sonic-sdui">Méthodes publiques sur <code>sonic-sdui</code></h3>
|
|
84
|
+
<pre><code class="language-ts">upsertNode(node, parentId?, index?) // node.nodeId requis
|
|
85
|
+
removeNode(nodeId)
|
|
86
|
+
setData(path, value) // chemin publisher, ex. "form.email"
|
|
87
|
+
applyOp(op) // { op: "upsertNode"|"removeNode"|"setData", … }
|
|
88
|
+
endIncremental() // revient au mode props → rebuild
|
|
89
|
+
</code></pre>
|
|
90
|
+
<h3 id="flux-optionnel">Flux optionnel</h3>
|
|
91
|
+
<p>Attribut <code>opsDataProvider</code> : chaque valeur assignée (<code>SDUIOp</code> ou <code>SDUIOp[]</code>) est passée à <code>applyOp</code>.</p>
|
|
92
|
+
<h3 id="comportement">Comportement</h3>
|
|
93
|
+
<ul>
|
|
94
|
+
<li>Première op → clone local du descripteur + mode partial automatique</li>
|
|
95
|
+
<li><code>data-sdui-node-id</code> marque les nœuds rendus</li>
|
|
96
|
+
<li>Remplacement d’un placeholder / nœud existant via <code>replaceWith</code> (pas de <code>removeChildren</code> global)</li>
|
|
97
|
+
</ul>
|
|
98
|
+
<h2 id="imports-utiles">Imports utiles</h2>
|
|
99
|
+
<table>
|
|
100
|
+
<thead>
|
|
101
|
+
<tr>
|
|
102
|
+
<th>Artefact</th>
|
|
103
|
+
<th>Chemin</th>
|
|
104
|
+
</tr>
|
|
105
|
+
</thead>
|
|
106
|
+
<tbody><tr>
|
|
107
|
+
<td>Composant</td>
|
|
108
|
+
<td><code>@supersoniks/concorde/sdui</code></td>
|
|
109
|
+
</tr>
|
|
110
|
+
<tr>
|
|
111
|
+
<td>Types</td>
|
|
112
|
+
<td><code>…/sdui/types</code> (via package exports / short path)</td>
|
|
113
|
+
</tr>
|
|
114
|
+
<tr>
|
|
115
|
+
<td>Safe</td>
|
|
116
|
+
<td><code>@supersoniks/concorde/sdui-safe</code></td>
|
|
117
|
+
</tr>
|
|
118
|
+
<tr>
|
|
119
|
+
<td>Catalogue</td>
|
|
120
|
+
<td><code>@supersoniks/concorde/sdui/component-catalog.json</code></td>
|
|
121
|
+
</tr>
|
|
122
|
+
</tbody></table>
|
|
123
|
+
|
|
124
|
+
</article>
|
|
125
|
+
</main>
|
|
126
|
+
</body>
|
|
127
|
+
</html>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# SDUI — points d’extension publics
|
|
2
|
+
|
|
3
|
+
Aide-mémoire pour les dépôts externes (adaptateurs, shells).
|
|
4
|
+
**Pas une page de la doc site** — à lire dans le package npm
|
|
5
|
+
(`node_modules/@supersoniks/concorde/src/core/components/functional/sdui/sdui-extension-points.md`).
|
|
6
|
+
La doc utilisateur reste `sdui.md` (auto-suffisante).
|
|
7
|
+
|
|
8
|
+
**Aucune mention de protocoles tiers ici** : uniquement les API génériques Concorde.
|
|
9
|
+
|
|
10
|
+
## 1. Profil `safe` (opt-in)
|
|
11
|
+
|
|
12
|
+
```html
|
|
13
|
+
<sonic-sdui profile="safe" …>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
| Refusé | Autorisé |
|
|
17
|
+
|--------|----------|
|
|
18
|
+
| `js`, `markup`, `innerHTML`, `prefix`, `suffix` | `textContent`, structure, attributs, `action`, `childNodeIds` |
|
|
19
|
+
|
|
20
|
+
- Nœud refusé → ignoré + `console.warn` (pas de crash)
|
|
21
|
+
- Helper pur : `validateSafeDescriptor(descriptor)` depuis `sdui-safe`
|
|
22
|
+
|
|
23
|
+
## 2. Événement `sdui-action`
|
|
24
|
+
|
|
25
|
+
Sur un nœud :
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"tagName": "sonic-button",
|
|
30
|
+
"nodeId": "confirm",
|
|
31
|
+
"textContent": "OK",
|
|
32
|
+
"action": { "name": "confirm", "context": { "step": 1 } }
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Au clic, `sonic-sdui` émet :
|
|
37
|
+
|
|
38
|
+
- type : `sdui-action`
|
|
39
|
+
- `detail` : `{ name, context, sourceNodeId? }`
|
|
40
|
+
- `bubbles: true`, `composed: true`
|
|
41
|
+
|
|
42
|
+
Ne remplace pas `sonic-submit` / POST / `messagesKey`.
|
|
43
|
+
|
|
44
|
+
## 3. Catalogue de composants (build only)
|
|
45
|
+
|
|
46
|
+
- Fichier publié : `component-catalog.json`
|
|
47
|
+
- Import : `@supersoniks/concorde/sdui/component-catalog.json`
|
|
48
|
+
- Régénération : `yarn generate:sdui-catalog` (aussi `prebuild`)
|
|
49
|
+
- Gaps d’annotations : `component-catalog.gaps.json`
|
|
50
|
+
- **Aucun impact runtime**
|
|
51
|
+
|
|
52
|
+
## 4. Rendu partiel (opt-in)
|
|
53
|
+
|
|
54
|
+
```html
|
|
55
|
+
<sonic-sdui partial …>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
- Registre plat : `nodeById`
|
|
59
|
+
- Enfants par id : `childNodeIds`
|
|
60
|
+
- Id manquant + `partial` → placeholder (`data-sdui-placeholder`, `data-sdui-node-id`, `display: contents`)
|
|
61
|
+
- Sans `partial` → warning + skip
|
|
62
|
+
|
|
63
|
+
## 5. Ops incrémentales (opt-in, chemin à côté)
|
|
64
|
+
|
|
65
|
+
Le descripteur entier + rebuild reste le chemin par défaut. Les ops mutent un descripteur local et mettent à jour le DOM **chirurgicalement** (frères préservés : focus, valeurs d’input, état composants).
|
|
66
|
+
|
|
67
|
+
### Méthodes publiques sur `sonic-sdui`
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
upsertNode(node, parentId?, index?) // node.nodeId requis
|
|
71
|
+
removeNode(nodeId)
|
|
72
|
+
setData(path, value) // chemin publisher, ex. "form.email"
|
|
73
|
+
applyOp(op) // { op: "upsertNode"|"removeNode"|"setData", … }
|
|
74
|
+
endIncremental() // revient au mode props → rebuild
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Flux optionnel
|
|
78
|
+
|
|
79
|
+
Attribut `opsDataProvider` : chaque valeur assignée (`SDUIOp` ou `SDUIOp[]`) est passée à `applyOp`.
|
|
80
|
+
|
|
81
|
+
### Comportement
|
|
82
|
+
|
|
83
|
+
- Première op → clone local du descripteur + mode partial automatique
|
|
84
|
+
- `data-sdui-node-id` marque les nœuds rendus
|
|
85
|
+
- Remplacement d’un placeholder / nœud existant via `replaceWith` (pas de `removeChildren` global)
|
|
86
|
+
|
|
87
|
+
## Imports utiles
|
|
88
|
+
|
|
89
|
+
| Artefact | Chemin |
|
|
90
|
+
|----------|--------|
|
|
91
|
+
| Composant | `@supersoniks/concorde/sdui` |
|
|
92
|
+
| Types | `…/sdui/types` (via package exports / short path) |
|
|
93
|
+
| Safe | `@supersoniks/concorde/sdui-safe` |
|
|
94
|
+
| Catalogue | `@supersoniks/concorde/sdui/component-catalog.json` |
|