@supersoniks/concorde 5.1.1 → 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.
- 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/.claude/skills +1 -0
- package/.github/workflows/ci.yml +21 -0
- package/.github-export-ignore +30 -0
- package/CONTRIBUTING.md +59 -0
- package/DEV.md +54 -0
- package/LICENSE +21 -0
- package/OPEN_SOURCE_CHECKPOINT.md +133 -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 +177 -177
- package/concorde-core.es.js +4993 -4833
- 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 +177 -177
- package/dist/concorde-core.es.js +4993 -4833
- 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/assets/index-D_alEsng.js +12122 -0
- package/docs/crawl/core/components/functional/date/date.html +190 -0
- package/docs/crawl/core/components/functional/fetch/fetch.html +109 -0
- package/docs/crawl/core/components/functional/if/if.html +27 -0
- package/docs/crawl/core/components/functional/jsonata/jsonata.html +79 -0
- package/docs/crawl/core/components/functional/list/list.html +70 -0
- package/docs/crawl/core/components/functional/mix/mix.html +45 -0
- package/docs/crawl/core/components/functional/queue/queue.html +96 -0
- package/docs/crawl/core/components/functional/router/router.html +106 -0
- package/docs/crawl/core/components/functional/sdui/sdui-extension-points.html +126 -0
- package/docs/crawl/core/components/functional/sdui/sdui.html +368 -0
- package/docs/crawl/core/components/functional/states/states.html +66 -0
- package/docs/crawl/core/components/functional/submit/submit.html +160 -0
- package/docs/crawl/core/components/functional/subscriber/subscriber.html +67 -0
- package/docs/crawl/core/components/functional/value/value.html +51 -0
- package/docs/crawl/core/components/ui/alert/alert.html +211 -0
- package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +131 -0
- package/docs/crawl/core/components/ui/badge/badge.html +197 -0
- package/docs/crawl/core/components/ui/button/button.html +150 -0
- package/docs/crawl/core/components/ui/captcha/captcha.html +112 -0
- package/docs/crawl/core/components/ui/card/card.html +253 -0
- package/docs/crawl/core/components/ui/divider/divider.html +144 -0
- package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +73 -0
- package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +266 -0
- package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +122 -0
- package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +121 -0
- package/docs/crawl/core/components/ui/form/input/input.html +109 -0
- package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +38 -0
- package/docs/crawl/core/components/ui/form/radio/radio.html +56 -0
- package/docs/crawl/core/components/ui/form/select/select.html +73 -0
- package/docs/crawl/core/components/ui/form/switch/switch.html +56 -0
- package/docs/crawl/core/components/ui/form/textarea/textarea.html +59 -0
- package/docs/crawl/core/components/ui/group/group.html +104 -0
- package/docs/crawl/core/components/ui/icon/icon.html +222 -0
- package/docs/crawl/core/components/ui/image/image.html +298 -0
- package/docs/crawl/core/components/ui/link/link.html +100 -0
- package/docs/crawl/core/components/ui/loader/loader.html +124 -0
- package/docs/crawl/core/components/ui/menu/menu.html +394 -0
- package/docs/crawl/core/components/ui/modal/modal.html +342 -0
- package/docs/crawl/core/components/ui/pop/pop.html +296 -0
- package/docs/crawl/core/components/ui/progress/progress.html +131 -0
- package/docs/crawl/core/components/ui/table/table.html +545 -0
- package/docs/crawl/core/components/ui/theme/theme.html +131 -0
- package/docs/crawl/core/components/ui/toast/toast.html +233 -0
- package/docs/crawl/core/components/ui/tooltip/tooltip.html +140 -0
- package/docs/crawl/docs/_core-concept/dataFlow.html +177 -0
- package/docs/crawl/docs/_core-concept/overview.html +66 -0
- package/docs/crawl/docs/_core-concept/subscriber.html +75 -0
- package/docs/crawl/docs/_decorators/ancestor-attribute.html +117 -0
- package/docs/crawl/docs/_decorators/auto-subscribe.html +202 -0
- package/docs/crawl/docs/_decorators/bind.html +141 -0
- package/docs/crawl/docs/_decorators/get.html +149 -0
- package/docs/crawl/docs/_decorators/handle.html +165 -0
- package/docs/crawl/docs/_decorators/on-assign.html +355 -0
- package/docs/crawl/docs/_decorators/patch.html +78 -0
- package/docs/crawl/docs/_decorators/post.html +139 -0
- package/docs/crawl/docs/_decorators/publish.html +61 -0
- package/docs/crawl/docs/_decorators/put.html +78 -0
- package/docs/crawl/docs/_decorators/subscribe.html +109 -0
- package/docs/crawl/docs/_decorators/wait-for-ancestors.html +137 -0
- package/docs/crawl/docs/_directives/sub.html +93 -0
- package/docs/crawl/docs/_getting-started/ai-agents.html +173 -0
- package/docs/crawl/docs/_getting-started/concorde-manual-install.html +100 -0
- package/docs/crawl/docs/_getting-started/concorde-outside.html +58 -0
- package/docs/crawl/docs/_getting-started/create-a-component.html +111 -0
- package/docs/crawl/docs/_getting-started/my-first-component.html +189 -0
- package/docs/crawl/docs/_getting-started/my-first-subscriber.html +110 -0
- package/docs/crawl/docs/_getting-started/pubsub.html +62 -0
- package/docs/crawl/docs/_getting-started/start.html +76 -0
- package/docs/crawl/docs/_getting-started/theming.html +333 -0
- package/docs/crawl/docs/_misc/api-configuration.html +149 -0
- package/docs/crawl/docs/_misc/dataProviderKey.html +135 -0
- package/docs/crawl/docs/_misc/docs-mock-api.html +158 -0
- package/docs/crawl/docs/_misc/dynamic-path.html +180 -0
- package/docs/crawl/docs/_misc/endpoint.html +50 -0
- package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
- package/docs/crawl/docs/_misc/html-integration.html +48 -0
- package/docs/crawl/hubs/decorators.html +547 -0
- package/docs/crawl/hubs/form-components.html +381 -0
- package/docs/crawl/hubs/remote-data.html +452 -0
- package/docs/crawl/index.html +103 -0
- package/docs/index.html +1 -1
- package/docs/llms-full.txt +7174 -0
- package/docs/llms.txt +98 -0
- package/docs/sitemap.xml +243 -0
- package/docs/src/core/components/functional/date/date.md +290 -0
- package/docs/src/core/components/functional/fetch/fetch.md +125 -0
- package/docs/src/core/components/functional/if/if.md +9 -0
- package/docs/src/core/components/functional/jsonata/jsonata.md +56 -0
- package/docs/src/core/components/functional/list/list.md +65 -0
- package/docs/src/core/components/functional/mix/mix.md +41 -0
- package/docs/src/core/components/functional/queue/queue.md +72 -0
- package/docs/src/core/components/functional/router/router.md +94 -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 +99 -0
- package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
- package/docs/src/core/components/functional/sdui/sdui.md +478 -0
- package/docs/src/core/components/functional/states/states.md +87 -0
- package/docs/src/core/components/functional/submit/submit.md +114 -0
- package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
- package/docs/src/core/components/functional/value/value.md +35 -0
- package/docs/src/core/components/ui/alert/alert.md +196 -0
- package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/src/core/components/ui/badge/badge.md +188 -0
- package/docs/src/core/components/ui/button/button.md +183 -0
- package/docs/src/core/components/ui/captcha/captcha.md +71 -0
- package/docs/src/core/components/ui/card/card.md +215 -0
- package/docs/src/core/components/ui/divider/divider.md +129 -0
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +77 -0
- package/docs/src/core/components/ui/form/fieldset/fieldset.md +205 -0
- package/docs/src/core/components/ui/form/form-actions/form-actions.md +100 -0
- package/docs/src/core/components/ui/form/form-layout/form-layout.md +119 -0
- package/docs/src/core/components/ui/form/input/input.md +142 -0
- package/docs/src/core/components/ui/form/radio/radio.md +57 -0
- package/docs/src/core/components/ui/form/select/select.md +71 -0
- package/docs/src/core/components/ui/form/switch/switch.md +57 -0
- package/docs/src/core/components/ui/form/textarea/textarea.md +65 -0
- package/docs/src/core/components/ui/group/group.md +75 -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 +233 -0
- package/docs/src/core/components/ui/link/link.md +81 -0
- package/docs/src/core/components/ui/loader/loader.md +112 -0
- package/docs/src/core/components/ui/menu/menu.md +370 -0
- package/docs/src/core/components/ui/modal/modal.md +235 -0
- package/docs/src/core/components/ui/pop/pop.md +294 -0
- package/docs/src/core/components/ui/progress/progress.md +109 -0
- package/docs/src/core/components/ui/table/table.md +431 -0
- package/docs/src/core/components/ui/theme/theme.md +122 -0
- package/docs/src/core/components/ui/toast/toast.md +216 -0
- package/docs/src/core/components/ui/tooltip/tooltip.md +124 -0
- package/{src → docs/src}/docs/_core-concept/subscriber.md +0 -0
- package/{src → docs/src}/docs/_getting-started/my-first-subscriber.md +0 -0
- package/{src → docs/src}/docs/_getting-started/pubsub.md +0 -0
- package/docs/src/docs/_getting-started/theming.md +253 -0
- package/docs/src/docs/search/docs-search.json +12242 -0
- package/docs/src/tag-list.json +1 -0
- package/docs/src/tsconfig-model.json +23 -0
- package/docs/src/tsconfig.declarations.json +22 -0
- package/docs/src/tsconfig.emit.json +23 -0
- package/docs/src/tsconfig.json +1332 -0
- package/gitlab/job_github_mirror.sh +39 -0
- package/index.html +157 -5
- package/package.json +22 -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/github-export.mjs +150 -0
- package/scripts/post-build-docs.js +37 -50
- package/scripts/post-build.mjs +0 -0
- 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/example/example.ts +3 -1
- 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/if/if.ts +0 -0
- package/src/core/components/functional/jsonata/jsonata.md +42 -37
- package/src/core/components/functional/list/list.demo.ts +0 -0
- package/src/core/components/functional/list/list.md +103 -43
- package/src/core/components/functional/list/list.ts +17 -4
- 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/router/router.ts +0 -0
- package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +0 -0
- package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
- package/src/core/components/functional/sdui/component-catalog.json +2 -2
- 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-immutable.spec.ts +74 -0
- package/src/core/components/functional/sdui/sdui.md +187 -358
- package/src/core/components/functional/sdui/sdui.ts +33 -8
- package/src/core/components/functional/sdui/types.ts +0 -0
- 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/submit/submit.spec.ts +60 -0
- package/src/core/components/functional/submit/submit.ts +6 -3
- package/src/core/components/functional/subscriber/subscriber.ts +0 -0
- package/src/core/components/functional/translation/translation.md +38 -0
- package/src/core/components/functional/value/value.md +34 -22
- package/src/core/components/functional/value/value.ts +0 -0
- package/src/core/components/ui/_css/size.ts +0 -0
- 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/altchaStyles.ts +0 -0
- 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 +108 -90
- package/src/core/components/ui/form/input/input.ts +8 -2
- package/src/core/components/ui/form/radio/radio.md +65 -30
- 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/decorators/subscriber/subscribe.ts +15 -9
- package/src/core/decorators/subscriber/subscribe.type-test.ts +14 -5
- package/src/core/mixins/Subscriber.ts +0 -0
- package/src/core/utils/DataBindObserver.ts +0 -0
- package/src/core/utils/LocationHandler.spec.ts +80 -0
- package/src/core/utils/LocationHandler.ts +5 -9
- package/src/core/utils/Objects.ts +0 -0
- package/src/core/utils/PublisherProxy.ts +166 -125
- package/src/core/utils/deepReadonly.spec.ts +66 -0
- package/src/core/utils/deepReadonly.ts +71 -0
- package/src/core/utils/immutableValue.spec.ts +54 -0
- package/src/core/utils/immutableValue.ts +102 -0
- package/src/core/utils/nestedDotForm.spec.ts +88 -0
- package/src/core/utils/publisherImmutable.spec.ts +76 -0
- package/src/core/utils/route.ts +0 -0
- package/src/core/utils/strictGet.spec.ts +61 -0
- package/src/core/utils/strictGet.ts +102 -0
- package/src/css.d.ts +19 -0
- 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/example/users.ts +0 -0
- package/src/docs/getting-started/ai-agents.md +50 -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/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/misc/publisher-get-immutability-docs-crawl.json +902 -0
- package/src/docs/misc/publisher-get-immutability-docs-recheck.json +13 -0
- package/src/docs/misc/publisher-get-immutability-study.md +229 -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 +84 -101
- package/src/docs/navigation/toc.ts +7 -4
- package/src/docs/search/docs-search.json +3188 -5153
- 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.declarations.json +22 -0
- package/src/tsconfig.emit.json +23 -0
- package/src/tsconfig.json +53 -5
- package/src/tsconfig.tsbuildinfo +1 -1
- package/vite.config.mts +11 -2
- package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
- package/.taste-skill/after/desktop-fold.jpg +0 -0
- package/.taste-skill/after/desktop-page-01.jpg +0 -0
- package/.taste-skill/after/desktop-page-02.jpg +0 -0
- package/.taste-skill/after/desktop-page-03.jpg +0 -0
- package/.taste-skill/after/mobile-fold.jpg +0 -0
- package/.taste-skill/after/mobile-page-01.jpg +0 -0
- package/.taste-skill/after/report.json +0 -4103
- package/.taste-skill/after/tablet-fold.jpg +0 -0
- package/.taste-skill/after/tablet-page-01.jpg +0 -0
- package/.taste-skill/after/tablet-page-02.jpg +0 -0
- package/.taste-skill/before/desktop-fold.jpg +0 -0
- package/.taste-skill/before/desktop-page-01.jpg +0 -0
- package/.taste-skill/before/desktop-page-02.jpg +0 -0
- package/.taste-skill/before/mobile-fold.jpg +0 -0
- package/.taste-skill/before/mobile-page-01.jpg +0 -0
- package/.taste-skill/before/report.json +0 -2556
- package/.taste-skill/before/tablet-fold.jpg +0 -0
- package/.taste-skill/before/tablet-page-01.jpg +0 -0
- package/.taste-skill/direction.json +0 -510
- package/.taste-skill/notes.md +0 -84
- package/.taste-skill/prod/desktop-fold.jpg +0 -0
- package/.taste-skill/prod/desktop-page-01.jpg +0 -0
- package/.taste-skill/prod/desktop-page-02.jpg +0 -0
- package/.taste-skill/prod/desktop-page-03.jpg +0 -0
- package/.taste-skill/prod/mobile-fold.jpg +0 -0
- package/.taste-skill/prod/mobile-page-01.jpg +0 -0
- package/.taste-skill/prod/mobile-page-02.jpg +0 -0
- package/.taste-skill/prod/report.json +0 -1973
- package/.taste-skill/prod/tablet-fold.jpg +0 -0
- package/.taste-skill/prod/tablet-page-01.jpg +0 -0
- package/.taste-skill/prod/tablet-page-02.jpg +0 -0
- package/AUDIT.md +0 -228
- package/PLAN-AMELIORATION.md +0 -220
- 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-Bb-_LRyY.js +0 -12280
- package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
- package/src/docs/example/docs-joke-demos.ts +0 -297
- /package/{src → docs/src}/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -0
- /package/{src → docs/src}/docs/_core-concept/dataFlow.md +0 -0
- /package/{src → docs/src}/docs/_core-concept/overview.md +0 -0
- /package/{src → docs/src}/docs/_decorators/ancestor-attribute.md +0 -0
- /package/{src → docs/src}/docs/_decorators/auto-subscribe.md +0 -0
- /package/{src → docs/src}/docs/_decorators/bind.md +0 -0
- /package/{src → docs/src}/docs/_decorators/get.md +0 -0
- /package/{src → docs/src}/docs/_decorators/handle.md +0 -0
- /package/{src → docs/src}/docs/_decorators/on-assign.md +0 -0
- /package/{src → docs/src}/docs/_decorators/patch.md +0 -0
- /package/{src → docs/src}/docs/_decorators/post.md +0 -0
- /package/{src → docs/src}/docs/_decorators/publish.md +0 -0
- /package/{src → docs/src}/docs/_decorators/put.md +0 -0
- /package/{src → docs/src}/docs/_decorators/subscribe.md +0 -0
- /package/{src → docs/src}/docs/_decorators/wait-for-ancestors.md +0 -0
- /package/{src → docs/src}/docs/_directives/sub.md +0 -0
- /package/{src → docs/src}/docs/_getting-started/ai-agents.md +0 -0
- /package/{src → docs/src}/docs/_getting-started/concorde-manual-install.md +0 -0
- /package/{src → docs/src}/docs/_getting-started/concorde-outside.md +0 -0
- /package/{src → docs/src}/docs/_getting-started/create-a-component.md +0 -0
- /package/{src → docs/src}/docs/_getting-started/my-first-component.md +0 -0
- /package/{src → docs/src}/docs/_getting-started/start.md +0 -0
- /package/{src → docs/src}/docs/_misc/api-configuration.md +0 -0
- /package/{src → docs/src}/docs/_misc/dataProviderKey.md +0 -0
- /package/{src → docs/src}/docs/_misc/docs-mock-api.md +0 -0
- /package/{src → docs/src}/docs/_misc/dynamic-path.md +0 -0
- /package/{src → docs/src}/docs/_misc/endpoint.md +0 -0
- /package/{src → docs/src}/docs/_misc/formelement-subscriber-removal.md +0 -0
- /package/{src → docs/src}/docs/_misc/html-integration.md +0 -0
- /package/src/docs/{_getting-started → getting-started}/components.md +0 -0
- /package/src/docs/{_getting-started → getting-started}/theming.md +0 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/queue/queue.html" data-doc-id="core/components/functional/queue/queue">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Queue — Concorde</title>
|
|
7
|
+
<meta name="description" content="> Try offline: serviceURL="/docs-mock-api" — see Local API demos. Row rendering: Data flow (.items property binding).">
|
|
8
|
+
<meta name="keywords" content="Concorde, supersoniks, core/components/functional/queue/queue, queue, Queue, functional component, sonic-queue, web component, serviceURL="/docs-mock-api", .items, dataProvider, …/list-item/0, …/1, dataProviderExpression, $offset, $limit, lazyload, dataFilterProvider">
|
|
9
|
+
<meta name="concorde-doc-id" content="core/components/functional/queue/queue">
|
|
10
|
+
<link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/functional/queue/queue.html">
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<header>
|
|
14
|
+
<p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/queue/queue.md/queue" rel="nofollow">interactive version</a></p>
|
|
15
|
+
</header>
|
|
16
|
+
<main>
|
|
17
|
+
<article>
|
|
18
|
+
<p class="doc-lead" id="doc-summary"><strong>Concorde functional component — Queue</strong>. > Try offline: serviceURL="/docs-mock-api" — see Local API demos. Row rendering: Data flow (.items property binding). <span>Doc ID: <code>core/components/functional/queue/queue</code>. Keywords: Concorde, supersoniks, core/components/functional/queue/queue, queue, Queue, functional component, sonic-queue, web component, serviceURL="/docs-mock-api", .items, dataProvider, …/list-item/0, …/1, dataProviderExpression, $offset, $limit, lazyload, dataFilterProvider. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/queue/queue.html">https://concorde.supersoniks.org/crawl/core/components/functional/queue/queue.html</a>.</span></p>
|
|
19
|
+
<h1 id="queue">Queue</h1>
|
|
20
|
+
<blockquote>
|
|
21
|
+
<p><strong>Try offline:</strong> <code>serviceURL="/docs-mock-api"</code> — see <a href="../../../../docs/_misc/docs-mock-api.html#docs-mock-api">Local API demos</a>. Row rendering: <a href="../../../../docs/_core-concept/dataFlow.html#dataFlow">Data flow</a> (<code>.items</code> property binding).</p>
|
|
22
|
+
</blockquote>
|
|
23
|
+
<p><strong>sonic-queue</strong> loads data in <strong>batches</strong>. Each batch is an internal <a href="../list/list.html#list">List</a> with its own <code>dataProvider</code> (<code>…/list-item/0</code>, <code>…/1</code>, …).</p>
|
|
24
|
+
<table>
|
|
25
|
+
<thead>
|
|
26
|
+
<tr>
|
|
27
|
+
<th>Mechanism</th>
|
|
28
|
+
<th>Role</th>
|
|
29
|
+
</tr>
|
|
30
|
+
</thead>
|
|
31
|
+
<tbody><tr>
|
|
32
|
+
<td><strong><code>dataProviderExpression</code></strong></td>
|
|
33
|
+
<td>API path template; <code>$offset</code> and <code>$limit</code> are replaced per batch</td>
|
|
34
|
+
</tr>
|
|
35
|
+
<tr>
|
|
36
|
+
<td><strong><code>lazyload</code></strong></td>
|
|
37
|
+
<td>Load the next batch when the user scrolls near the end</td>
|
|
38
|
+
</tr>
|
|
39
|
+
<tr>
|
|
40
|
+
<td><strong><code>dataFilterProvider</code></strong></td>
|
|
41
|
+
<td>Publisher id of a form (<code>formDataProvider</code>); field values are merged into the request query string</td>
|
|
42
|
+
</tr>
|
|
43
|
+
<tr>
|
|
44
|
+
<td><strong><code>filteredFields</code></strong></td>
|
|
45
|
+
<td>Optional list of form field names to <strong>exclude</strong> from the query (space-separated) — omit when every field should be sent</td>
|
|
46
|
+
</tr>
|
|
47
|
+
<tr>
|
|
48
|
+
<td><strong><code>.items</code></strong>, <strong><code>.noItems</code></strong>, <strong><code>.separator</code></strong>, <strong><code>.skeleton</code></strong></td>
|
|
49
|
+
<td>Lit callbacks forwarded to each batch list (use the <strong>dot</strong> — functions are properties, not attributes)</td>
|
|
50
|
+
</tr>
|
|
51
|
+
</tbody></table>
|
|
52
|
+
<h2 id="lazy-load--offset-and-limit">Lazy load — <code>$offset</code> and <code>$limit</code></h2>
|
|
53
|
+
<p>When the expression contains <strong><code>$offset</code></strong> and <strong><code>$limit</code></strong>, the queue:</p>
|
|
54
|
+
<ol>
|
|
55
|
+
<li>Fetches the first batch with <code>offset=0</code> (or the initial <code>offset</code> attribute) and <code>per_page=$limit</code>.</li>
|
|
56
|
+
<li>On scroll, appends a batch with <code>offset</code> increased by the previous batch size.</li>
|
|
57
|
+
<li>Stops when a batch returns fewer rows than <code>limit</code> (or none).</li>
|
|
58
|
+
</ol>
|
|
59
|
+
<p>The doc mock implements this on <code>GET /docs-mock-api/api/users?offset=…&per_page=…</code> (<code>paginateUsers</code> in <code>src/docs/mock-api/router.ts</code>).</p>
|
|
60
|
+
<p><docs-lit-demo for="docs-queue-users-demo"></docs-lit-demo></p>
|
|
61
|
+
<p>Wrap the queue in a <strong>fixed height</strong> with <strong><code>overflow-y-auto</code></strong> so lazy load triggers when scrolling inside the box (same layout as the <a href="https://github.com/supersoniks/create-concorde-ts-starter">TS starter</a> <code>demo-queue-templates</code>).</p>
|
|
62
|
+
<p>Try scrolling after load — batches of 4 users. Search e.g. <code>George</code>, <code>Bluth</code>, or <code>zzz</code> for empty results.</p>
|
|
63
|
+
<h3 id="expression-example">Expression example</h3>
|
|
64
|
+
<pre><code class="language-typescript">html`<sonic-queue
|
|
65
|
+
lazyload
|
|
66
|
+
serviceURL="/docs-mock-api"
|
|
67
|
+
dataProviderExpression="api/users?offset=$offset&limit=$limit"
|
|
68
|
+
key="data"
|
|
69
|
+
limit="4"
|
|
70
|
+
class="grid max-h-96 overflow-y-auto"
|
|
71
|
+
.items=${this.renderUser}
|
|
72
|
+
></sonic-queue>`;
|
|
73
|
+
</code></pre>
|
|
74
|
+
<p>Without <strong><code>$offset</code></strong> in the expression, the queue behaves like a single list (one batch), e.g. geo communes below.</p>
|
|
75
|
+
<h2 id="filter--datafilterprovider--q">Filter — <code>dataFilterProvider</code> + <code>q</code></h2>
|
|
76
|
+
<p>One search field (<code>name="q"</code>) on <code>formDataProvider="filter"</code>. The queue listens via <strong><code>dataFilterProvider="filter"</code></strong> and, on change:</p>
|
|
77
|
+
<ol>
|
|
78
|
+
<li>Resets loaded batches.</li>
|
|
79
|
+
<li>Appends each non-empty form field to the query (here only <strong><code>q</code></strong> — no <code>filteredFields</code> needed).</li>
|
|
80
|
+
<li>Fetches again from offset <code>0</code>.</li>
|
|
81
|
+
</ol>
|
|
82
|
+
<p>Use <strong><code>filteredFields</code></strong> only when the form has extra fields that must <strong>not</strong> be sent to the API (e.g. <code>filteredFields="rememberMe internalId"</code>).</p>
|
|
83
|
+
<p>The mock API filters before pagination — same haystack logic as the starter (<code>filterDocsUsers</code> in <code>src/docs/mock-api/fixtures.ts</code>, used by <code>paginateUsers</code> in <code>router.ts</code> / Service Worker):</p>
|
|
84
|
+
<pre><code class="language-typescript">const haystack = `${first_name} ${last_name} ${email}`.toLowerCase();
|
|
85
|
+
return haystack.includes(q);
|
|
86
|
+
</code></pre>
|
|
87
|
+
<h2 id="simple-batch-no-lazy-scroll">Simple batch (no lazy scroll)</h2>
|
|
88
|
+
<p>Geo communes: expression uses <strong><code>$limit</code> only</strong> (no <code>$offset</code>) — one request, one batch.</p>
|
|
89
|
+
<p><docs-lit-demo for="docs-queue-geo-demo"></docs-lit-demo></p>
|
|
90
|
+
<h2 id="html-template-children">HTML <code><template></code> children</h2>
|
|
91
|
+
<p>Optional for hosts without Lit — see <a href="../../../../docs/_misc/html-integration.html#html-integration">HTML integration</a>.</p>
|
|
92
|
+
|
|
93
|
+
</article>
|
|
94
|
+
</main>
|
|
95
|
+
</body>
|
|
96
|
+
</html>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/router/router.html" 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</title>
|
|
7
|
+
<meta name="description" content="sonic-router watches document.location (pathname + hash) and renders the matching view.">
|
|
8
|
+
<meta name="keywords" content="Concorde, supersoniks, core/components/functional/router/router, router, Router, functional component, sonic-router, web component, document.location, .routes, .items, fallback, , pathname + hash, #home, #…/router.md/router, #…/router#home, href">
|
|
9
|
+
<meta name="concorde-doc-id" content="core/components/functional/router/router">
|
|
10
|
+
<link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/functional/router/router.html">
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<header>
|
|
14
|
+
<p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/router/router.md/router" rel="nofollow">interactive version</a></p>
|
|
15
|
+
</header>
|
|
16
|
+
<main>
|
|
17
|
+
<article>
|
|
18
|
+
<p class="doc-lead" id="doc-summary"><strong>Concorde functional component — Router</strong>. sonic-router watches document.location (pathname + hash) and renders the matching view. <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, document.location, .routes, .items, fallback, , pathname + hash, #home, #…/router.md/router, #…/router#home, href. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/router/router.html">https://concorde.supersoniks.org/crawl/core/components/functional/router/router.html</a>.</span></p>
|
|
19
|
+
<h1 id="router">Router</h1>
|
|
20
|
+
<p><strong>sonic-router</strong> watches <code>document.location</code> (pathname + hash) and renders the matching view.</p>
|
|
21
|
+
<p>From a <strong>Lit</strong> parent, pass a <strong><code>.routes</code></strong> map (property binding — same rule as <a href="../list/list.html#list"><code>.items</code> on list</a>): keys are path patterns, values are render functions. Use <strong><code>fallback</code></strong> when nothing matches.</p>
|
|
22
|
+
<p>Legacy HTML <strong><code><template data-route="…"></code></strong> remains for hosts without Lit — <a href="../../../../docs/_misc/html-integration.html#html-integration">HTML integration</a>.</p>
|
|
23
|
+
<h2 id="static-routes-no-parameters">Static routes (no parameters)</h2>
|
|
24
|
+
<p>Route keys are matched against <code>pathname + hash</code>. A simple hash route <code>#home</code> matches when the location contains that segment.</p>
|
|
25
|
+
<p>On the <strong>doc site</strong>, the page URL is already a hash (<code>../../../../…/router.html#router</code>). Demos append a <strong>second</strong> hash for in-page routes (<code>#…/router#home</code>), use <strong><code>href</code> + <code>autoActive="strict"</code></strong> on <code>sonic-button</code> for the active state, and <code>history.replaceState</code> on click so markdown is not reloaded (<code>setDocsDemoSubHash</code> in <code>src/docs/docs-location.ts</code>).</p>
|
|
26
|
+
<p><docs-lit-demo for="docs-router-basic-demo"></docs-lit-demo></p>
|
|
27
|
+
<pre><code class="language-typescript">@state()
|
|
28
|
+
private routes = {
|
|
29
|
+
"#home": () => html`<div>Home</div>`,
|
|
30
|
+
"#about": () => html`<div>About</div>`,
|
|
31
|
+
fallback: () => html`<div>Not found</div>`,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
html`
|
|
35
|
+
<sonic-button href="#home">Home</sonic-button>
|
|
36
|
+
<sonic-router .routes=${this.routes}></sonic-router>
|
|
37
|
+
`;
|
|
38
|
+
</code></pre>
|
|
39
|
+
<table>
|
|
40
|
+
<thead>
|
|
41
|
+
<tr>
|
|
42
|
+
<th>Key</th>
|
|
43
|
+
<th>When it runs</th>
|
|
44
|
+
</tr>
|
|
45
|
+
</thead>
|
|
46
|
+
<tbody><tr>
|
|
47
|
+
<td><code>"#home"</code>, <code>"#about"</code>, …</td>
|
|
48
|
+
<td><code>RegExp</code> or <a href="https://www.npmjs.com/package/url-pattern">url-pattern</a> test succeeds on current location</td>
|
|
49
|
+
</tr>
|
|
50
|
+
<tr>
|
|
51
|
+
<td><strong><code>fallback</code></strong></td>
|
|
52
|
+
<td>No other route matched (not an attribute — a key on the same object)</td>
|
|
53
|
+
</tr>
|
|
54
|
+
</tbody></table>
|
|
55
|
+
<h2 id="routes-with-parameters">Routes with parameters</h2>
|
|
56
|
+
<p>Two styles (see <code>router.demo.ts</code> and <code>docs-router-params-demo</code>):</p>
|
|
57
|
+
<h3 id="url-pattern-name">Url-pattern (<code>:name</code>)</h3>
|
|
58
|
+
<p>Key uses <strong><code>:param</code></strong> segments. The render function receives an <strong>object</strong> <code>{ param: string }</code>.</p>
|
|
59
|
+
<p><docs-lit-demo for="docs-router-params-demo"></docs-lit-demo></p>
|
|
60
|
+
<pre><code class="language-typescript">"#couleur/:id": ({ id }) => html`<p>Colour id: ${id}</p>`,
|
|
61
|
+
</code></pre>
|
|
62
|
+
<h3 id="regexp-capturing-groups">RegExp (capturing groups)</h3>
|
|
63
|
+
<p>Key is a <strong>RegExp</strong> string with <code>(\d+)</code> / <code>(\w+)</code> groups. The render function receives an <strong>array</strong> of captured strings (in order).</p>
|
|
64
|
+
<pre><code class="language-typescript">"#products/(\\d+)/(\\w+)": ([productId, slug]) =>
|
|
65
|
+
html`<p>Product ${productId}, slug ${slug}</p>`,
|
|
66
|
+
</code></pre>
|
|
67
|
+
<p>With parameters you usually render data directly in Lit (<code>${id}</code>). The old <strong><code><template data-route></code> + <code>dataProviderExpression</code></strong> pattern scoped a <code>dataProvider</code> for <code>data-bind</code> / fetch children — prefer <strong><code>@subscribe</code></strong> or explicit props when using <code>.routes</code>.</p>
|
|
68
|
+
<h2 id="routes-binding"><code>.routes</code> binding</h2>
|
|
69
|
+
<p>Always use <strong><code>.routes=${…}</code></strong> in Lit templates: route handlers are functions and must be set as <strong>properties</strong>, not HTML attributes.</p>
|
|
70
|
+
<h2 id="optional-attributes">Optional attributes</h2>
|
|
71
|
+
<table>
|
|
72
|
+
<thead>
|
|
73
|
+
<tr>
|
|
74
|
+
<th>Attribute</th>
|
|
75
|
+
<th>Role</th>
|
|
76
|
+
</tr>
|
|
77
|
+
</thead>
|
|
78
|
+
<tbody><tr>
|
|
79
|
+
<td><strong><code>basePath</code></strong></td>
|
|
80
|
+
<td>Prefix for pattern matching (default allows optional leading segments)</td>
|
|
81
|
+
</tr>
|
|
82
|
+
<tr>
|
|
83
|
+
<td><strong><code>fallBackRoute</code></strong></td>
|
|
84
|
+
<td>If set and no template/route matches, navigates to this URL (redirect). Distinct from <strong><code>routes.fallback</code></strong> which only renders content</td>
|
|
85
|
+
</tr>
|
|
86
|
+
</tbody></table>
|
|
87
|
+
<h2 id="sonic-redirect"><code>sonic-redirect</code></h2>
|
|
88
|
+
<p>Separate component: redirect when data appears on a publisher (login steps, wizards). Not part of the <code>.routes</code> map.</p>
|
|
89
|
+
<pre><code><sonic-redirect to="./router.html#router#data-is-set" dataProvider="stupid-data-set-id" onData="theData"></sonic-redirect>
|
|
90
|
+
<div class="flex gap-2 mb-4" formDataProvider="stupid-data-set-id">
|
|
91
|
+
<sonic-button radio name="theData" value="Some Data" size="xs">
|
|
92
|
+
Enter data
|
|
93
|
+
</sonic-button>
|
|
94
|
+
<sonic-button radio name="theData" value="" href="javascript:history.back();" size="xs">
|
|
95
|
+
Delete the data and do a history.back()
|
|
96
|
+
</sonic-button>
|
|
97
|
+
</div>
|
|
98
|
+
</code></pre>
|
|
99
|
+
<p>Example: combine with <strong><code>.routes</code></strong> and <strong>submit</strong> for login / logout / profile steps.</p>
|
|
100
|
+
<h2 id="package-demo">Package demo</h2>
|
|
101
|
+
<p><code>sonic-router-demo</code> (<code>router.demo.ts</code>) — home, user profile (<code>#user/:id/:slug</code>), products RegExp, <strong>fallback</strong> 404.</p>
|
|
102
|
+
|
|
103
|
+
</article>
|
|
104
|
+
</main>
|
|
105
|
+
</body>
|
|
106
|
+
</html>
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/sdui/sdui-extension-points.html" 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</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 / crawl 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/crawl/core/components/functional/sdui/sdui-extension-points.html">
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<header>
|
|
17
|
+
<p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/sdui/sdui-extension-points.md/sdui-extension-points" rel="nofollow">interactive version</a></p>
|
|
18
|
+
</header>
|
|
19
|
+
<main>
|
|
20
|
+
<article>
|
|
21
|
+
<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, ).
|
|
22
|
+
La doc utilisateur / crawl reste , safe, html
|
|
23
|
+
|
|
24
|
+
, js, markup, innerHTML, prefix, suffix, textContent, action. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/sdui/sdui-extension-points.html">https://concorde.supersoniks.org/crawl/core/components/functional/sdui/sdui-extension-points.html</a>.</span></p>
|
|
25
|
+
<h1 id="sdui--points-dextension-publics">SDUI — points d’extension publics</h1>
|
|
26
|
+
<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 / crawl reste <code>sdui.md</code> (auto-suffisante).</p>
|
|
27
|
+
<p><strong>Aucune mention de protocoles tiers ici</strong> : uniquement les API génériques Concorde.</p>
|
|
28
|
+
<h2 id="1-profil-safe-opt-in">1. Profil <code>safe</code> (opt-in)</h2>
|
|
29
|
+
<pre><code class="language-html"><sonic-sdui profile="safe" …>
|
|
30
|
+
</code></pre>
|
|
31
|
+
<table>
|
|
32
|
+
<thead>
|
|
33
|
+
<tr>
|
|
34
|
+
<th>Refusé</th>
|
|
35
|
+
<th>Autorisé</th>
|
|
36
|
+
</tr>
|
|
37
|
+
</thead>
|
|
38
|
+
<tbody><tr>
|
|
39
|
+
<td><code>js</code>, <code>markup</code>, <code>innerHTML</code>, <code>prefix</code>, <code>suffix</code></td>
|
|
40
|
+
<td><code>textContent</code>, structure, attributs, <code>action</code>, <code>childNodeIds</code></td>
|
|
41
|
+
</tr>
|
|
42
|
+
</tbody></table>
|
|
43
|
+
<ul>
|
|
44
|
+
<li>Nœud refusé → ignoré + <code>console.warn</code> (pas de crash)</li>
|
|
45
|
+
<li>Helper pur : <code>validateSafeDescriptor(descriptor)</code> depuis <code>sdui-safe</code></li>
|
|
46
|
+
</ul>
|
|
47
|
+
<h2 id="2-événement-sdui-action">2. Événement <code>sdui-action</code></h2>
|
|
48
|
+
<p>Sur un nœud :</p>
|
|
49
|
+
<pre><code class="language-json">{
|
|
50
|
+
"tagName": "sonic-button",
|
|
51
|
+
"nodeId": "confirm",
|
|
52
|
+
"textContent": "OK",
|
|
53
|
+
"action": { "name": "confirm", "context": { "step": 1 } }
|
|
54
|
+
}
|
|
55
|
+
</code></pre>
|
|
56
|
+
<p>Au clic, <code>sonic-sdui</code> émet :</p>
|
|
57
|
+
<ul>
|
|
58
|
+
<li>type : <code>sdui-action</code></li>
|
|
59
|
+
<li><code>detail</code> : <code>{ name, context, sourceNodeId? }</code></li>
|
|
60
|
+
<li><code>bubbles: true</code>, <code>composed: true</code></li>
|
|
61
|
+
</ul>
|
|
62
|
+
<p>Ne remplace pas <code>sonic-submit</code> / POST / <code>messagesKey</code>.</p>
|
|
63
|
+
<h2 id="3-catalogue-de-composants-build-only">3. Catalogue de composants (build only)</h2>
|
|
64
|
+
<ul>
|
|
65
|
+
<li>Fichier publié : <code>component-catalog.json</code></li>
|
|
66
|
+
<li>Import : <code>@supersoniks/concorde/sdui/component-catalog.json</code></li>
|
|
67
|
+
<li>Régénération : <code>yarn generate:sdui-catalog</code> (aussi <code>prebuild</code>)</li>
|
|
68
|
+
<li>Gaps d’annotations : <code>component-catalog.gaps.json</code></li>
|
|
69
|
+
<li><strong>Aucun impact runtime</strong></li>
|
|
70
|
+
</ul>
|
|
71
|
+
<h2 id="4-rendu-partiel-opt-in">4. Rendu partiel (opt-in)</h2>
|
|
72
|
+
<pre><code class="language-html"><sonic-sdui partial …>
|
|
73
|
+
</code></pre>
|
|
74
|
+
<ul>
|
|
75
|
+
<li>Registre plat : <code>nodeById</code></li>
|
|
76
|
+
<li>Enfants par id : <code>childNodeIds</code></li>
|
|
77
|
+
<li>Id manquant + <code>partial</code> → placeholder (<code>data-sdui-placeholder</code>, <code>data-sdui-node-id</code>, <code>display: contents</code>)</li>
|
|
78
|
+
<li>Sans <code>partial</code> → warning + skip</li>
|
|
79
|
+
</ul>
|
|
80
|
+
<h2 id="5-ops-incrémentales-opt-in-chemin-à-côté">5. Ops incrémentales (opt-in, chemin à côté)</h2>
|
|
81
|
+
<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>
|
|
82
|
+
<h3 id="méthodes-publiques-sur-sonic-sdui">Méthodes publiques sur <code>sonic-sdui</code></h3>
|
|
83
|
+
<pre><code class="language-ts">upsertNode(node, parentId?, index?) // node.nodeId requis
|
|
84
|
+
removeNode(nodeId)
|
|
85
|
+
setData(path, value) // chemin publisher, ex. "form.email"
|
|
86
|
+
applyOp(op) // { op: "upsertNode"|"removeNode"|"setData", … }
|
|
87
|
+
endIncremental() // revient au mode props → rebuild
|
|
88
|
+
</code></pre>
|
|
89
|
+
<h3 id="flux-optionnel">Flux optionnel</h3>
|
|
90
|
+
<p>Attribut <code>opsDataProvider</code> : chaque valeur assignée (<code>SDUIOp</code> ou <code>SDUIOp[]</code>) est passée à <code>applyOp</code>.</p>
|
|
91
|
+
<h3 id="comportement">Comportement</h3>
|
|
92
|
+
<ul>
|
|
93
|
+
<li>Première op → clone local du descripteur + mode partial automatique</li>
|
|
94
|
+
<li><code>data-sdui-node-id</code> marque les nœuds rendus</li>
|
|
95
|
+
<li>Remplacement d’un placeholder / nœud existant via <code>replaceWith</code> (pas de <code>removeChildren</code> global)</li>
|
|
96
|
+
</ul>
|
|
97
|
+
<h2 id="imports-utiles">Imports utiles</h2>
|
|
98
|
+
<table>
|
|
99
|
+
<thead>
|
|
100
|
+
<tr>
|
|
101
|
+
<th>Artefact</th>
|
|
102
|
+
<th>Chemin</th>
|
|
103
|
+
</tr>
|
|
104
|
+
</thead>
|
|
105
|
+
<tbody><tr>
|
|
106
|
+
<td>Composant</td>
|
|
107
|
+
<td><code>@supersoniks/concorde/sdui</code></td>
|
|
108
|
+
</tr>
|
|
109
|
+
<tr>
|
|
110
|
+
<td>Types</td>
|
|
111
|
+
<td><code>…/sdui/types</code> (via package exports / short path)</td>
|
|
112
|
+
</tr>
|
|
113
|
+
<tr>
|
|
114
|
+
<td>Safe</td>
|
|
115
|
+
<td><code>@supersoniks/concorde/sdui-safe</code></td>
|
|
116
|
+
</tr>
|
|
117
|
+
<tr>
|
|
118
|
+
<td>Catalogue</td>
|
|
119
|
+
<td><code>@supersoniks/concorde/sdui/component-catalog.json</code></td>
|
|
120
|
+
</tr>
|
|
121
|
+
</tbody></table>
|
|
122
|
+
|
|
123
|
+
</article>
|
|
124
|
+
</main>
|
|
125
|
+
</body>
|
|
126
|
+
</html>
|