@supersoniks/concorde 5.1.0 → 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/launch.json +15 -0
- package/.claude/vite.http.config.mjs +7 -0
- 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 +4103 -0
- 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 +2556 -0
- package/.taste-skill/before/tablet-fold.jpg +0 -0
- package/.taste-skill/before/tablet-page-01.jpg +0 -0
- package/.taste-skill/direction.json +510 -0
- package/.taste-skill/notes.md +84 -0
- 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 +1973 -0
- 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/.tmp-cem/custom-elements.json +2013 -2013
- package/AUDIT.md +228 -0
- package/PLAN-AMELIORATION.md +220 -0
- package/PLAN-DOCS-AGENTS.md +80 -0
- package/README.md +3 -3
- package/ai/skills/concorde/SKILL.md +1 -1
- package/ai/skills/concorde-get-set-dp/SKILL.md +3 -3
- package/ai/skills/concorde-theme/SKILL.md +1 -1
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +16 -16
- package/concorde-core.es.js +235 -233
- package/dist/concorde-core.bundle.js +16 -16
- package/dist/concorde-core.es.js +235 -233
- package/dist/img/archive/concorde-001-2cv.webp +0 -0
- package/dist/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
- package/dist/img/archive/concorde-red-arrows-2002.webm +0 -0
- package/dist/img/archive/credits.json +28 -0
- package/docs/.htaccess +75 -0
- package/docs/404.html +15 -0
- package/docs/404.md +5 -0
- package/docs/assets/index-BgG6FFPt.js +11765 -0
- package/docs/assets/index-x89XINSG.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 +198 -0
- package/docs/core/components/functional/list/list.md +121 -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/{crawl/core → core}/components/functional/subscriber/subscriber.html +6 -5
- 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/{crawl/core → core}/components/ui/menu/menu.html +189 -116
- 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/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 +86 -0
- package/docs/docs/decorators/bind.md +77 -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/{crawl/docs/_getting-started → docs/getting-started}/ai-agents.html +12 -11
- package/{src/docs/_getting-started → docs/docs/getting-started}/ai-agents.md +3 -3
- package/docs/docs/getting-started/components.html +27 -0
- package/docs/docs/getting-started/components.md +5 -0
- package/docs/{crawl/docs/_getting-started → docs/getting-started}/create-a-component.html +11 -14
- package/docs/{src/docs/_getting-started → docs/getting-started}/create-a-component.md +3 -6
- package/docs/{crawl/docs/_core-concept → docs/getting-started}/dataFlow.html +26 -29
- package/docs/{src/docs/_core-concept → docs/getting-started}/dataFlow.md +17 -18
- package/docs/docs/getting-started/installation.html +69 -0
- package/docs/docs/getting-started/installation.md +36 -0
- package/docs/{crawl/docs/_getting-started → docs/getting-started}/my-first-component.html +13 -22
- package/docs/{src/docs/_getting-started → 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/{src/docs/_getting-started → docs/docs/getting-started}/theming.md +2 -2
- package/docs/docs/index.html +99 -0
- package/docs/{crawl/docs/_misc → docs/misc}/api-configuration.html +18 -18
- package/docs/{src/docs/_misc → docs/misc}/api-configuration.md +10 -12
- package/docs/{crawl/docs/_misc → docs/misc}/dataProviderKey.html +12 -11
- package/{src/docs/_misc → docs/docs/misc}/dataProviderKey.md +4 -4
- package/docs/{crawl/docs/_misc → docs/misc}/docs-mock-api.html +25 -28
- package/docs/{src/docs/_misc → docs/misc}/docs-mock-api.md +12 -13
- package/docs/{crawl/docs/_misc → docs/misc}/dynamic-path.html +16 -15
- package/{src/docs/_misc → docs/docs/misc}/dynamic-path.md +8 -8
- package/docs/{crawl/docs/_misc → docs/misc}/endpoint.html +16 -15
- package/{src/docs/_misc → docs/docs/misc}/endpoint.md +8 -8
- package/docs/{crawl/docs/_misc → docs/misc}/html-integration.html +12 -15
- package/docs/{src/docs/_misc → docs/misc}/html-integration.md +4 -5
- package/docs/docs-mock-api-sw.js +60 -223
- package/docs/docs-mock-api-sw.js.map +4 -4
- package/docs/hubs/decorators.html +443 -0
- package/docs/hubs/form-components.html +404 -0
- package/docs/hubs/remote-data.html +371 -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/index.html +96 -67
- package/docs/index.md +22 -0
- package/docs/llms-full.txt +3329 -3295
- package/docs/llms.txt +94 -92
- package/docs/robots.txt +11 -10
- package/docs/sitemap.xml +78 -78
- package/docs/src/core/components/functional/date/date.md +91 -231
- package/docs/src/core/components/functional/fetch/fetch.md +66 -83
- package/docs/src/core/components/functional/if/if.md +28 -3
- package/docs/src/core/components/functional/jsonata/jsonata.md +42 -37
- package/docs/src/core/components/functional/list/list.md +99 -43
- package/docs/src/core/components/functional/mix/mix.md +31 -26
- package/docs/src/core/components/functional/queue/queue.md +40 -61
- package/docs/src/core/components/functional/router/router.md +64 -65
- 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/example.json +19 -86
- package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
- package/docs/src/core/components/functional/sdui/sdui.md +196 -245
- package/docs/src/core/components/functional/states/states.md +86 -61
- package/docs/src/core/components/functional/submit/submit.md +64 -72
- package/docs/src/core/components/functional/translation/translation.md +38 -0
- package/docs/src/core/components/functional/value/value.md +34 -22
- package/docs/src/core/components/ui/alert/alert.md +139 -74
- package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/src/core/components/ui/badge/badge.md +137 -83
- package/docs/src/core/components/ui/button/button.md +139 -105
- package/docs/src/core/components/ui/captcha/captcha.md +50 -6
- package/docs/src/core/components/ui/card/card.md +183 -65
- package/docs/src/core/components/ui/divider/divider.md +104 -13
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +90 -42
- package/docs/src/core/components/ui/form/fieldset/fieldset.md +135 -103
- package/docs/src/core/components/ui/form/form-actions/form-actions.md +71 -50
- package/docs/src/core/components/ui/form/form-layout/form-layout.md +99 -34
- package/docs/src/core/components/ui/form/input/input.md +95 -95
- package/docs/src/core/components/ui/form/radio/radio.md +55 -34
- package/docs/src/core/components/ui/form/select/select.md +60 -45
- package/docs/src/core/components/ui/form/switch/switch.md +57 -34
- package/docs/src/core/components/ui/form/textarea/textarea.md +55 -38
- package/docs/src/core/components/ui/group/group.md +49 -47
- package/docs/src/core/components/ui/icon/icon.md +132 -43
- package/docs/src/core/components/ui/image/image.md +132 -72
- package/docs/src/core/components/ui/link/link.md +46 -8
- package/docs/src/core/components/ui/loader/loader.md +55 -23
- package/docs/src/core/components/ui/menu/menu.md +155 -114
- package/docs/src/core/components/ui/modal/modal.md +154 -62
- package/docs/src/core/components/ui/pop/pop.md +185 -65
- package/docs/src/core/components/ui/progress/progress.md +76 -30
- package/docs/src/core/components/ui/table/table.md +146 -334
- package/docs/src/core/components/ui/theme/theme.md +97 -0
- package/docs/src/core/components/ui/toast/toast.md +80 -99
- package/docs/src/core/components/ui/tooltip/tooltip.md +52 -45
- 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 +77 -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 → getting-started}/ai-agents.md +3 -3
- package/docs/src/docs/getting-started/components.md +5 -0
- package/{src/docs/_getting-started → docs/src/docs/getting-started}/create-a-component.md +3 -6
- package/{src/docs/_core-concept → docs/src/docs/getting-started}/dataFlow.md +17 -18
- package/docs/src/docs/getting-started/installation.md +36 -0
- package/{src/docs/_getting-started → docs/src/docs/getting-started}/my-first-component.md +5 -14
- package/docs/src/docs/getting-started/start.md +35 -0
- package/docs/src/docs/getting-started/theming.md +253 -0
- package/{src/docs/_misc → docs/src/docs/misc}/api-configuration.md +10 -12
- package/docs/src/docs/{_misc → misc}/dataProviderKey.md +4 -4
- package/{src/docs/_misc → docs/src/docs/misc}/docs-mock-api.md +12 -13
- package/docs/src/docs/{_misc → misc}/dynamic-path.md +8 -8
- package/docs/src/docs/{_misc → misc}/endpoint.md +8 -8
- package/{src/docs/_misc → docs/src/docs/misc}/html-integration.md +4 -5
- package/docs/src/docs/search/docs-search.json +3729 -2949
- package/docs/src/tsconfig.json +176 -5
- package/index.html +94 -67
- package/package.json +11 -4
- package/public/docs-mock-api-sw.js +58 -223
- package/public/docs-mock-api-sw.js.map +4 -4
- package/public/img/archive/concorde-001-2cv.webp +0 -0
- package/public/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
- package/public/img/archive/concorde-red-arrows-2002.webm +0 -0
- package/public/img/archive/credits.json +28 -0
- 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/robots.txt +11 -10
- package/scripts/docs-markdown-vite-plugin.ts +37 -0
- package/scripts/docs-public-url.mjs +50 -0
- package/scripts/docs.htaccess +75 -0
- package/scripts/generate-crawl-docs.mjs +207 -116
- package/scripts/generate-crawl-docs.test.mjs +124 -0
- package/scripts/post-build-docs.js +34 -50
- package/scripts/post-build.mjs +0 -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/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 +99 -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/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 +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/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/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 +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/modal/modal.ts +14 -11
- 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/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/route.ts +0 -0
- package/src/docs/code.ts +88 -75
- package/src/docs/components/docs-demo-sources.ts +70 -147
- package/src/docs/components/docs-lit-demo.ts +20 -40
- 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 +77 -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 +46 -0
- package/src/docs/docs-location.ts +123 -32
- package/src/docs/docs.ts +6 -2
- package/src/docs/example/decorators-demo-bind-demos.ts +81 -116
- 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-boarding-pass-demo.ts +134 -0
- 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 +33 -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 +76 -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 +240 -71
- package/src/docs/home/catalog.ts +44 -0
- package/src/docs/home/home.ts +520 -0
- package/src/docs/home/mach-stage.ts +389 -0
- package/src/docs/layout.ts +12 -11
- 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/components-index.ts +56 -0
- package/src/docs/navigation/navigation.ts +219 -232
- package/src/docs/navigation/pager.ts +67 -0
- package/src/docs/navigation/toc.ts +101 -0
- package/src/docs/search/docs-search.json +2419 -4374
- package/src/docs/search/markdown-renderer.ts +33 -7
- package/src/docs/search/page.ts +9 -6
- package/src/docs/search/search.ts +154 -122
- package/src/docs/shiki/index.ts +109 -0
- package/src/docs/tailwind/css/base/scrollbar.css +22 -0
- package/src/docs/tailwind/css/base/theme.css +96 -0
- package/src/docs/tailwind/css/base/typography.css +4 -0
- package/src/docs/tailwind/css/docs/boarding-pass.css +65 -0
- package/src/docs/tailwind/css/docs/content.css +32 -0
- package/src/docs/tailwind/css/docs/page.css +10 -0
- package/src/docs/tailwind/css/docs.css +9 -0
- package/src/docs/tailwind/css/home/hero.css +210 -0
- package/src/docs/tailwind/css/home/motion.css +84 -0
- package/src/docs/tailwind/css/home/sections.css +416 -0
- package/src/docs/tailwind/css/tailwind.css +7 -185
- package/src/tsconfig.json +23 -2
- package/src/tsconfig.tsbuildinfo +1 -1
- package/tailwind.config.js +8 -4
- package/vite.config.mts +11 -2
- package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
- package/.github/workflows/ci.yml +0 -21
- package/.github-export-ignore +0 -30
- package/CONTRIBUTING.md +0 -59
- package/DEV.md +0 -54
- package/LICENSE +0 -21
- package/OPEN_SOURCE_CHECKPOINT.md +0 -133
- package/concorde-3d.bundle.js +0 -3960
- package/concorde-3d.es.js +0 -33433
- package/concorde-hugging-face-infer.bundle.js +0 -32
- package/concorde-hugging-face-infer.es.js +0 -2952
- package/concorde-interactive.bundle.js +0 -1157
- package/concorde-interactive.es.js +0 -10734
- package/concorde-shader.bundle.js +0 -116
- package/concorde-shader.es.js +0 -8353
- package/concorde-webgpu.bundle.js +0 -307
- package/concorde-webgpu.es.js +0 -8627
- package/docs/assets/index-D8MVWqY6.js +0 -12251
- package/docs/assets/index-DiD0qYvE.css +0 -1
- package/docs/crawl/core/components/functional/date/date.html +0 -190
- package/docs/crawl/core/components/functional/fetch/fetch.html +0 -109
- package/docs/crawl/core/components/functional/if/if.html +0 -27
- package/docs/crawl/core/components/functional/jsonata/jsonata.html +0 -79
- package/docs/crawl/core/components/functional/list/list.html +0 -70
- package/docs/crawl/core/components/functional/mix/mix.html +0 -45
- package/docs/crawl/core/components/functional/queue/queue.html +0 -96
- package/docs/crawl/core/components/functional/router/router.html +0 -106
- package/docs/crawl/core/components/functional/sdui/sdui.html +0 -269
- package/docs/crawl/core/components/functional/states/states.html +0 -66
- package/docs/crawl/core/components/functional/submit/submit.html +0 -160
- package/docs/crawl/core/components/functional/value/value.html +0 -51
- package/docs/crawl/core/components/ui/alert/alert.html +0 -110
- package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +0 -23
- package/docs/crawl/core/components/ui/badge/badge.html +0 -119
- package/docs/crawl/core/components/ui/button/button.html +0 -149
- package/docs/crawl/core/components/ui/captcha/captcha.html +0 -30
- package/docs/crawl/core/components/ui/card/card.html +0 -99
- package/docs/crawl/core/components/ui/divider/divider.html +0 -58
- package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +0 -73
- package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +0 -135
- package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +0 -79
- package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +0 -62
- package/docs/crawl/core/components/ui/form/input/input.html +0 -109
- package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +0 -38
- package/docs/crawl/core/components/ui/form/radio/radio.html +0 -56
- package/docs/crawl/core/components/ui/form/select/select.html +0 -73
- package/docs/crawl/core/components/ui/form/switch/switch.html +0 -56
- package/docs/crawl/core/components/ui/form/textarea/textarea.html +0 -59
- package/docs/crawl/core/components/ui/group/group.html +0 -82
- package/docs/crawl/core/components/ui/icon/icon.html +0 -133
- package/docs/crawl/core/components/ui/image/image.html +0 -110
- package/docs/crawl/core/components/ui/link/link.html +0 -42
- package/docs/crawl/core/components/ui/loader/loader.html +0 -50
- package/docs/crawl/core/components/ui/modal/modal.html +0 -117
- package/docs/crawl/core/components/ui/pop/pop.html +0 -102
- package/docs/crawl/core/components/ui/progress/progress.html +0 -58
- package/docs/crawl/core/components/ui/table/table.html +0 -413
- package/docs/crawl/core/components/ui/toast/toast.html +0 -122
- package/docs/crawl/core/components/ui/tooltip/tooltip.html +0 -79
- package/docs/crawl/docs/_core-concept/overview.html +0 -66
- package/docs/crawl/docs/_core-concept/subscriber.html +0 -75
- package/docs/crawl/docs/_decorators/ancestor-attribute.html +0 -116
- package/docs/crawl/docs/_decorators/auto-subscribe.html +0 -202
- package/docs/crawl/docs/_decorators/bind.html +0 -141
- package/docs/crawl/docs/_decorators/get.html +0 -149
- package/docs/crawl/docs/_decorators/handle.html +0 -165
- package/docs/crawl/docs/_decorators/on-assign.html +0 -355
- package/docs/crawl/docs/_decorators/patch.html +0 -78
- package/docs/crawl/docs/_decorators/post.html +0 -139
- package/docs/crawl/docs/_decorators/publish.html +0 -61
- package/docs/crawl/docs/_decorators/put.html +0 -78
- package/docs/crawl/docs/_decorators/subscribe.html +0 -109
- package/docs/crawl/docs/_decorators/wait-for-ancestors.html +0 -137
- package/docs/crawl/docs/_directives/sub.html +0 -93
- package/docs/crawl/docs/_getting-started/concorde-manual-install.html +0 -100
- package/docs/crawl/docs/_getting-started/concorde-outside.html +0 -58
- package/docs/crawl/docs/_getting-started/my-first-subscriber.html +0 -110
- package/docs/crawl/docs/_getting-started/pubsub.html +0 -62
- package/docs/crawl/docs/_getting-started/start.html +0 -76
- package/docs/crawl/docs/_getting-started/theming.html +0 -85
- package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +0 -138
- package/docs/crawl/hubs/decorators.html +0 -547
- package/docs/crawl/hubs/form-components.html +0 -359
- package/docs/crawl/hubs/remote-data.html +0 -452
- package/docs/crawl/index.html +0 -101
- package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
- package/docs/src/docs/_core-concept/overview.md +0 -57
- package/docs/src/docs/_core-concept/subscriber.md +0 -75
- package/docs/src/docs/_decorators/ancestor-attribute.md +0 -127
- package/docs/src/docs/_decorators/auto-subscribe.md +0 -202
- package/docs/src/docs/_decorators/bind.md +0 -167
- package/docs/src/docs/_decorators/get.md +0 -162
- package/docs/src/docs/_decorators/handle.md +0 -175
- package/docs/src/docs/_decorators/on-assign.md +0 -390
- package/docs/src/docs/_decorators/patch.md +0 -70
- package/docs/src/docs/_decorators/post.md +0 -146
- package/docs/src/docs/_decorators/publish.md +0 -55
- package/docs/src/docs/_decorators/put.md +0 -70
- package/docs/src/docs/_decorators/subscribe.md +0 -100
- package/docs/src/docs/_decorators/wait-for-ancestors.md +0 -163
- package/docs/src/docs/_directives/sub.md +0 -91
- package/docs/src/docs/_getting-started/concorde-manual-install.md +0 -133
- package/docs/src/docs/_getting-started/concorde-outside.md +0 -33
- package/docs/src/docs/_getting-started/my-first-subscriber.md +0 -120
- package/docs/src/docs/_getting-started/pubsub.md +0 -37
- package/docs/src/docs/_getting-started/start.md +0 -47
- package/docs/src/docs/_getting-started/theming.md +0 -91
- package/docs/src/docs/_misc/formelement-subscriber-removal.md +0 -115
- package/docs/src/tsconfig.declarations.json +0 -22
- package/docs/src/tsconfig.emit.json +0 -23
- package/gitlab/job_github_mirror.sh +0 -39
- package/scripts/github-export.mjs +0 -150
- package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
- package/src/css.d.ts +0 -19
- 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/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/prism/index.ts +0 -6
- package/src/docs/prism/prism.css +0 -158
- package/src/docs/prism/prism.js +0 -1022
- package/src/tsconfig.declarations.json +0 -22
- package/src/tsconfig.emit.json +0 -23
|
File without changes
|
|
@@ -14,43 +14,42 @@ export class SonicStatesDemo extends LitElement {
|
|
|
14
14
|
|
|
15
15
|
constructor() {
|
|
16
16
|
super();
|
|
17
|
-
// Initialisation du dataProvider
|
|
18
17
|
dp<StatesDemoProvider>("states-demo-provider").set({});
|
|
19
18
|
}
|
|
20
19
|
|
|
21
20
|
@state()
|
|
22
21
|
private states = {
|
|
23
|
-
|
|
22
|
+
boarding: () => html`
|
|
24
23
|
<div class="p-4 border border-gray-200 rounded-md">
|
|
25
|
-
<h1 class="text-xl font-medium mb-2">
|
|
26
|
-
<p class="text-gray-600">
|
|
24
|
+
<h1 class="text-xl font-medium mb-2">Boarding</h1>
|
|
25
|
+
<p class="text-gray-600">Please proceed to gate B12.</p>
|
|
27
26
|
</div>
|
|
28
27
|
`,
|
|
29
28
|
|
|
30
|
-
"
|
|
31
|
-
|
|
29
|
+
"flights/:code/:status": ({
|
|
30
|
+
code,
|
|
32
31
|
status,
|
|
33
32
|
}: {
|
|
34
|
-
|
|
33
|
+
code: string;
|
|
35
34
|
status: string;
|
|
36
35
|
}) => html`
|
|
37
36
|
<div class="p-4 border border-gray-200 rounded-md">
|
|
38
|
-
<h1 class="text-xl font-medium mb-2">
|
|
39
|
-
<p class="text-gray-600">
|
|
37
|
+
<h1 class="text-xl font-medium mb-2">Flight ${code}</h1>
|
|
38
|
+
<p class="text-gray-600">Status: ${status}</p>
|
|
40
39
|
</div>
|
|
41
40
|
`,
|
|
42
41
|
|
|
43
|
-
"
|
|
42
|
+
"delayed_(\\d+)": ([minutes]: [string]) => html`
|
|
44
43
|
<div class="p-4 border border-red-200 bg-red-50 rounded-md">
|
|
45
|
-
<h1 class="text-xl font-medium text-red-800 mb-2">
|
|
46
|
-
<p class="text-red-600">
|
|
44
|
+
<h1 class="text-xl font-medium text-red-800 mb-2">Delayed</h1>
|
|
45
|
+
<p class="text-red-600">New departure in ${minutes} minutes</p>
|
|
47
46
|
</div>
|
|
48
47
|
`,
|
|
49
48
|
|
|
50
49
|
fallback: () => html`
|
|
51
50
|
<div class="p-4 border border-gray-200 rounded-md">
|
|
52
|
-
<h1 class="text-xl font-medium mb-2"
|
|
53
|
-
<p class="text-gray-600">
|
|
51
|
+
<h1 class="text-xl font-medium mb-2">Unknown status</h1>
|
|
52
|
+
<p class="text-gray-600">No state matches this value</p>
|
|
54
53
|
</div>
|
|
55
54
|
`,
|
|
56
55
|
};
|
|
@@ -58,20 +57,20 @@ export class SonicStatesDemo extends LitElement {
|
|
|
58
57
|
render() {
|
|
59
58
|
return html`
|
|
60
59
|
<div class="p-4">
|
|
61
|
-
<h2 class="text-2xl font-medium mb-6">
|
|
60
|
+
<h2 class="text-2xl font-medium mb-6">States demo</h2>
|
|
62
61
|
|
|
63
62
|
<div class="flex gap-4 mb-6" formDataProvider="states-demo-provider">
|
|
64
|
-
<sonic-button radio name="status" checked value="
|
|
65
|
-
|
|
63
|
+
<sonic-button radio name="status" checked value="boarding">
|
|
64
|
+
Boarding
|
|
66
65
|
</sonic-button>
|
|
67
|
-
<sonic-button radio name="status" value="
|
|
68
|
-
|
|
66
|
+
<sonic-button radio name="status" value="flights/CN001/landed">
|
|
67
|
+
CN 001 landed
|
|
69
68
|
</sonic-button>
|
|
70
|
-
<sonic-button radio name="status" value="
|
|
71
|
-
|
|
69
|
+
<sonic-button radio name="status" value="delayed_45">
|
|
70
|
+
Delayed 45 min
|
|
72
71
|
</sonic-button>
|
|
73
72
|
<sonic-button radio name="status" value="invalid">
|
|
74
|
-
|
|
73
|
+
Unknown
|
|
75
74
|
</sonic-button>
|
|
76
75
|
</div>
|
|
77
76
|
|
|
@@ -1,87 +1,112 @@
|
|
|
1
1
|
# States
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* The subscribers/fetch... of the template will refer to this dataProvider
|
|
9
|
-
* You can also use url-pattern expressions for the route parameters, see the examples
|
|
10
|
-
*
|
|
11
|
-
**Examples**
|
|
12
|
-
* With ma.property= 2 :
|
|
13
|
-
* RegExp data-value = (\d+) and dataproviderExpression = /user/$1 the dataProvider attribute will be "/user/2"
|
|
14
|
-
* url-pattern data-value = :id and dataproviderExpression = /user/:id the dataProvider attribute will be "/user/2
|
|
15
|
-
|
|
16
|
-
## Basic
|
|
3
|
+
**`sonic-states`** renders the child `<template>` whose `data-value` matches a value of its data provider. Use it to switch views on a status or a selection; point `data-path` at the value, or set `state` directly.
|
|
4
|
+
|
|
5
|
+
## Basic example
|
|
6
|
+
|
|
7
|
+
Each `data-value` is a RegExp tested against the value. All matching templates render; a template with `data-value=""` renders while the value is empty.
|
|
17
8
|
|
|
18
9
|
<sonic-code>
|
|
19
10
|
<template>
|
|
20
|
-
<div class="flex gap-2
|
|
21
|
-
<sonic-button radio name="
|
|
22
|
-
<sonic-button radio name="
|
|
23
|
-
<sonic-button radio name="
|
|
24
|
-
<sonic-button radio name="selection" value="#contact" size="xs">Contact</sonic-button>
|
|
11
|
+
<div class="flex flex-wrap gap-2" formDataProvider="states-flight-status">
|
|
12
|
+
<sonic-button radio name="status" value="boarding" size="xs">Boarding</sonic-button>
|
|
13
|
+
<sonic-button radio name="status" value="delayed" size="xs">Delayed</sonic-button>
|
|
14
|
+
<sonic-button radio name="status" value="landed" size="xs">Landed</sonic-button>
|
|
25
15
|
</div>
|
|
26
|
-
<div class="
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
16
|
+
<div class="my-4 rounded border p-4 text-center text-2xl text-neutral-700">
|
|
17
|
+
<sonic-states dataProvider="states-flight-status" data-path="status">
|
|
18
|
+
<template data-value="">Select a status</template>
|
|
19
|
+
<template data-value="^boarding$">CN 001 is boarding at gate B12</template>
|
|
20
|
+
<template data-value="^delayed$">CN 001 is delayed by 45 minutes</template>
|
|
21
|
+
<template data-value="^landed$">CN 001 has landed at JFK</template>
|
|
22
|
+
</sonic-states>
|
|
33
23
|
</div>
|
|
34
24
|
</template>
|
|
35
25
|
</sonic-code>
|
|
36
26
|
|
|
37
|
-
|
|
27
|
+
Templates without `data-value` are ignored, and nothing renders when no template matches.
|
|
38
28
|
|
|
39
|
-
|
|
40
|
-
|
|
29
|
+
## Captured values
|
|
30
|
+
|
|
31
|
+
Add `dataProviderExpression` to wrap the template content in an element whose `dataProvider` is built from the value: `$1` · `$2`… for RegExp groups. Children such as [sonic-fetch](/core/components/functional/fetch) then read that provider.
|
|
41
32
|
|
|
42
33
|
<sonic-code>
|
|
43
34
|
<template>
|
|
44
|
-
<div
|
|
45
|
-
<
|
|
46
|
-
<
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
<
|
|
56
|
-
|
|
35
|
+
<div serviceURL="/docs-mock-api">
|
|
36
|
+
<div class="flex flex-wrap gap-2" formDataProvider="states-flight-pick">
|
|
37
|
+
<sonic-button radio name="flight" value="flight_001" size="xs">CN 001</sonic-button>
|
|
38
|
+
<sonic-button radio name="flight" value="flight_102" size="xs">CN 102</sonic-button>
|
|
39
|
+
<sonic-button radio name="flight" value="flight_305" size="xs">CN 305</sonic-button>
|
|
40
|
+
</div>
|
|
41
|
+
<sonic-states dataProvider="states-flight-pick" data-path="flight">
|
|
42
|
+
<template data-value="flight_(\d+)" dataProviderExpression="flights?q=$1">
|
|
43
|
+
<sonic-fetch key="flights.0"></sonic-fetch>
|
|
44
|
+
<p class="my-4">
|
|
45
|
+
<sonic-value key="code"></sonic-value> to
|
|
46
|
+
<sonic-value key="city"></sonic-value>:
|
|
47
|
+
<sonic-value key="status"></sonic-value>
|
|
48
|
+
</p>
|
|
57
49
|
</template>
|
|
58
50
|
</sonic-states>
|
|
59
51
|
</div>
|
|
60
52
|
</template>
|
|
61
53
|
</sonic-code>
|
|
62
54
|
|
|
63
|
-
|
|
55
|
+
With [url-pattern](https://www.npmjs.com/package/url-pattern) syntax, name the segments instead: `data-value="flight/:code"` and `dataProviderExpression="flights?q=:code"`.
|
|
64
56
|
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
## Inverted matching
|
|
58
|
+
|
|
59
|
+
With `inverted`, the value is the RegExp and each `data-value` is the tested text. Use it to show several templates at once.
|
|
67
60
|
|
|
68
61
|
<sonic-code>
|
|
69
62
|
<template>
|
|
70
|
-
<div
|
|
71
|
-
<sonic-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
<span data-bind ::inner-html="ucFirst|$name"></span>
|
|
75
|
-
</sonic-button>
|
|
76
|
-
</template>
|
|
77
|
-
</sonic-list>
|
|
78
|
-
<sonic-states dataProvider="states-regexp-example" data-path="selection">
|
|
79
|
-
<template data-value="#couleur_:id" dataProviderExpression="api/unknown/:id">
|
|
80
|
-
<sonic-fetch>
|
|
81
|
-
<input type="color" disabled data-bind ::value="$data.color" class=" w-full h-10 my-3" />
|
|
82
|
-
</sonic-fetch>
|
|
83
|
-
</template>
|
|
84
|
-
</sonic-states>
|
|
63
|
+
<div class="flex flex-wrap gap-2" formDataProvider="states-board-filter">
|
|
64
|
+
<sonic-button radio name="filter" value=".*" size="xs">All</sonic-button>
|
|
65
|
+
<sonic-button radio name="filter" value="delayed|cancelled" size="xs">Disrupted</sonic-button>
|
|
66
|
+
<sonic-button radio name="filter" value="on-time" size="xs">On time</sonic-button>
|
|
85
67
|
</div>
|
|
68
|
+
<sonic-states inverted dataProvider="states-board-filter" data-path="filter" class="my-4 flex flex-col gap-1">
|
|
69
|
+
<template data-value="on-time"><p>CN 014 · LHR · on time</p></template>
|
|
70
|
+
<template data-value="delayed"><p>CN 102 · GIG · delayed</p></template>
|
|
71
|
+
<template data-value="cancelled"><p>CN 305 · IAD · cancelled</p></template>
|
|
72
|
+
</sonic-states>
|
|
86
73
|
</template>
|
|
87
|
-
</sonic-code>
|
|
74
|
+
</sonic-code>
|
|
75
|
+
|
|
76
|
+
While the value is empty, every template renders.
|
|
77
|
+
|
|
78
|
+
## Render functions
|
|
79
|
+
|
|
80
|
+
From Lit, pass a `.states` map instead of templates: keys are RegExp or url-pattern expressions, values are render functions. RegExp groups arrive as an array, url-pattern segments as an object, and `fallback` renders when no key matches.
|
|
81
|
+
|
|
82
|
+
<sonic-code language="typescript">
|
|
83
|
+
<template>
|
|
84
|
+
private states = {
|
|
85
|
+
boarding: () => html`<p>Boarding at gate B12</p>`,
|
|
86
|
+
"delayed_(\\d+)": ([minutes]) => html`<p>Delayed by ${minutes} min</p>`,
|
|
87
|
+
"flights/:code/:status": ({ code, status }) => html`<p>${code}: ${status}</p>`,
|
|
88
|
+
fallback: () => html`<p>Unknown status</p>`,
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
html`<sonic-states dataProvider="flight" data-path="status" .states=${this.states}></sonic-states>`;
|
|
92
|
+
</template>
|
|
93
|
+
</sonic-code>
|
|
94
|
+
|
|
95
|
+
## API reference
|
|
96
|
+
|
|
97
|
+
| Attribute | Values | Description |
|
|
98
|
+
|-----------|--------|-------------|
|
|
99
|
+
| `dataProvider` | string | Provider holding the value. Inherited from the closest ancestor when omitted |
|
|
100
|
+
| `data-path` | string | Dot path of the value in the provider |
|
|
101
|
+
| `state` | string | Value to match when `data-path` is not set |
|
|
102
|
+
| `inverted` | boolean (default `false`) | Uses the value as the RegExp and each `data-value` as the tested text |
|
|
103
|
+
| `states` | object (property) | Render functions keyed by expression, plus `fallback`. Templates are used only when nothing in the map renders |
|
|
104
|
+
|
|
105
|
+
| Template attribute | Description |
|
|
106
|
+
|--------------------|-------------|
|
|
107
|
+
| `data-value` | RegExp or url-pattern matched against the value. `""` matches an empty value |
|
|
108
|
+
| `dataProviderExpression` | Builds the `dataProvider` of a wrapper around the template content from `$1`… or `:name` |
|
|
109
|
+
|
|
110
|
+
| Slot | Description |
|
|
111
|
+
|------|-------------|
|
|
112
|
+
| *(default)* | `<template data-value>` children |
|
|
@@ -1,114 +1,106 @@
|
|
|
1
1
|
# Submit
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**`sonic-submit`** sends the form publisher named by `formDataProvider` to a REST endpoint and writes the response to `submitResultDataProvider`. The request is configured like [Fetch](/core/components/functional/fetch): `serviceURL` on an ancestor, path from the ancestor `dataProvider` or from `endPoint`. Form fields such as `sonic-input` fill the publisher through their `name`.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Basic example
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
| Trigger | Attribute |
|
|
10
|
-
|---------|-----------|
|
|
11
|
-
| Click inside the slot | `onClick` |
|
|
12
|
-
| Enter in a focused field inside the slot | `onEnterKey` |
|
|
13
|
-
|
|
14
|
-
| Data / API | Attribute / property | Notes |
|
|
15
|
-
|------------|----------------------|--------|
|
|
16
|
-
| Form fields | `formDataProvider` on ancestor | Filled by `sonic-input`, `sonic-select`, etc. via `name` |
|
|
17
|
-
| Result after call | `submitResultDataProvider` on ancestor | Whole result object (after optional `submit-result-key`) |
|
|
18
|
-
| Slice of JSON result | `submit-result-key` on **sonic-submit** | Dot path, e.g. `data` when the API returns `{ data: { … } }` |
|
|
19
|
-
| HTTP verb | `method` on **sonic-submit** | `post` (default), `put`, `patch`, `delete`, `get` — not inherited from `sonic-scope` |
|
|
20
|
-
| Path override | `endPoint` on **sonic-submit** | Wins over ancestor `dataProvider` |
|
|
21
|
-
| JSON vs multipart | `sendAsFormData` on **sonic-submit** | `FormData` body, still expects JSON response |
|
|
22
|
-
| Reset publishers | `clearedDataOnSuccess` on ancestor | Space-separated `DataProviderKey.path` values; runs when a **result object** is returned (including error payloads with `messages`) |
|
|
23
|
-
| Browser form POST | `native` on **sonic-submit** | See [Native HTML form](#native-html-form) |
|
|
24
|
-
| Result event | — | Bubbles `submit` `CustomEvent` with `detail` = result |
|
|
25
|
-
| Credential Management API | `usernameKey`, `passwordKey` on **sonic-submit** | After a **successful** HTTP response, stores login if those keys exist in the payload (defaults: `username`, `password`) |
|
|
26
|
-
| ALTCHA / captcha | `needsCaptchaValidation` on form/header publisher | Defers send until token is set — see [Captcha](#core/components/ui/captcha/captcha.md/captcha) |
|
|
27
|
-
|
|
28
|
-
While a REST submit runs, the slot is wrapped with `data-disabled` (faded, no pointer events). With **`native`**, validation and loader still run, then the browser performs a normal form submission.
|
|
29
|
-
|
|
30
|
-
## Form and result handling
|
|
31
|
-
|
|
32
|
-
POST to mock `api/register`; result publisher `submit-example-result`.
|
|
7
|
+
`onClick` sends on a click inside the element, `onEnterKey` on Enter in a focused field inside it. The method defaults to `post` and the body to JSON. Fields are validated first; while the request runs, the content is faded and not clickable.
|
|
33
8
|
|
|
34
9
|
<docs-lit-demo for="docs-submit-demo"></docs-lit-demo>
|
|
35
10
|
|
|
36
|
-
##
|
|
37
|
-
|
|
38
|
-
With **`native`**, Concorde does **not** call `fetch`. After form validation it:
|
|
11
|
+
## Result key
|
|
39
12
|
|
|
40
|
-
|
|
41
|
-
2. Programmatically clicks a hidden native `type="submit"` control (`name` / `value` on **sonic-submit** if you need them).
|
|
13
|
+
When the API wraps its payload (`{ data: { id, token } }`), set `submitResultKey` to a dot path so `submitResultDataProvider` receives only that part.
|
|
42
14
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<docs-lit-demo for="docs-submit-native-demo"></docs-lit-demo>
|
|
46
|
-
|
|
47
|
-
## sendAsFormData
|
|
15
|
+
<docs-lit-demo for="docs-submit-result-key-demo"></docs-lit-demo>
|
|
48
16
|
|
|
49
|
-
|
|
17
|
+
## Reset after submit
|
|
50
18
|
|
|
51
|
-
|
|
19
|
+
`clearedDataOnSuccess` on an ancestor lists publisher ids, separated by spaces, that are set to `{}` once the API returns a result. This includes error results with `messages`.
|
|
52
20
|
|
|
53
|
-
|
|
21
|
+
<docs-lit-demo for="docs-submit-clear-demo"></docs-lit-demo>
|
|
54
22
|
|
|
55
|
-
|
|
23
|
+
## Submit event
|
|
56
24
|
|
|
57
|
-
|
|
25
|
+
After each request, `sonic-submit` dispatches a bubbling `submit` event whose `detail` is the result, the same value written to `submitResultDataProvider`.
|
|
58
26
|
|
|
59
|
-
|
|
27
|
+
<docs-lit-demo for="docs-submit-event-demo"></docs-lit-demo>
|
|
60
28
|
|
|
61
|
-
##
|
|
29
|
+
## Endpoint override
|
|
62
30
|
|
|
63
|
-
|
|
31
|
+
`endPoint` on `sonic-submit` replaces the ancestor `dataProvider` as the request path, for this element only.
|
|
64
32
|
|
|
65
|
-
<docs-lit-demo for="docs-submit-
|
|
33
|
+
<docs-lit-demo for="docs-submit-endpoint-demo"></docs-lit-demo>
|
|
66
34
|
|
|
67
|
-
##
|
|
35
|
+
## HTTP method
|
|
68
36
|
|
|
69
|
-
|
|
37
|
+
Set `method` to `put` · `patch` · `delete` · `get` (default `post`). It is read on `sonic-submit` only, never inherited. With `get`, the fields are appended to the endpoint as a query string.
|
|
70
38
|
|
|
71
|
-
<docs-lit-demo for="docs-submit-
|
|
39
|
+
<docs-lit-demo for="docs-submit-get-demo"></docs-lit-demo>
|
|
72
40
|
|
|
73
|
-
##
|
|
41
|
+
## Multipart body
|
|
74
42
|
|
|
75
|
-
|
|
43
|
+
`sendAsFormData` sends the fields as `multipart/form-data` instead of JSON. The response is still parsed as JSON.
|
|
76
44
|
|
|
77
|
-
<docs-lit-demo for="docs-submit-
|
|
45
|
+
<docs-lit-demo for="docs-submit-formdata-demo"></docs-lit-demo>
|
|
78
46
|
|
|
79
|
-
##
|
|
47
|
+
## Native form
|
|
80
48
|
|
|
81
|
-
|
|
49
|
+
With `native`, no request is made: after validation, the publisher values are copied into the matching controls of the closest `<form>` (hidden inputs are created when missing), then the browser submits the form. `name` and `value` on `sonic-submit` are sent as the submit button pair. Use a `target` iframe to stay on the page.
|
|
82
50
|
|
|
83
|
-
<docs-lit-demo for="docs-submit-
|
|
51
|
+
<docs-lit-demo for="docs-submit-native-demo"></docs-lit-demo>
|
|
84
52
|
|
|
85
|
-
##
|
|
53
|
+
## Nested fields
|
|
86
54
|
|
|
87
|
-
|
|
55
|
+
A dot in a field `name` stores a nested object in the form publisher, and the body is sent with the same shape.
|
|
88
56
|
|
|
89
57
|
<sonic-code>
|
|
90
58
|
<template>
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
<sonic-input
|
|
94
|
-
<sonic-input
|
|
59
|
+
<sonic-scope formDataProvider="submit-example-dot-notation">
|
|
60
|
+
<div class="grid grid-cols-2 gap-4">
|
|
61
|
+
<sonic-input label="Passenger" name="passenger.name" value="Ada Lindqvist"></sonic-input>
|
|
62
|
+
<sonic-input label="Seat" name="passenger.seat" value="2A"></sonic-input>
|
|
95
63
|
</div>
|
|
96
64
|
</sonic-scope>
|
|
97
65
|
</template>
|
|
98
66
|
</sonic-code>
|
|
99
67
|
|
|
100
|
-
Stored shape:
|
|
101
|
-
|
|
102
68
|
<sonic-code language="typescript">
|
|
103
69
|
<template>
|
|
104
|
-
|
|
105
|
-
email: { value: "eve.holt@reqres.in" },
|
|
106
|
-
details: { password: { value: "pistol" } }
|
|
107
|
-
}
|
|
70
|
+
{ passenger: { name: "Ada Lindqvist", seat: "2A" } }
|
|
108
71
|
</template>
|
|
109
72
|
</sonic-code>
|
|
110
73
|
|
|
111
|
-
##
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
74
|
+
## API reference
|
|
75
|
+
|
|
76
|
+
| Attribute | Values | Description |
|
|
77
|
+
|-----------|--------|-------------|
|
|
78
|
+
| `onClick` | boolean | Sends on click inside the element |
|
|
79
|
+
| `onEnterKey` | boolean | Sends on Enter in a focused field inside the element |
|
|
80
|
+
| `method` | `post` · `put` · `patch` · `delete` · `get` (default `post`) | HTTP method. `get` sends the fields as a query string |
|
|
81
|
+
| `endPoint` | string | Request path. Overrides the ancestor `dataProvider` |
|
|
82
|
+
| `submitResultKey` | string | Dot path of the response part written to `submitResultDataProvider` |
|
|
83
|
+
| `sendAsFormData` | boolean | Sends `multipart/form-data` instead of JSON |
|
|
84
|
+
| `native` | boolean | Fills and submits the closest `<form>` instead of calling the API |
|
|
85
|
+
| `name` · `value` | string | Submit button pair added to a native form submission |
|
|
86
|
+
| `disabled` | boolean | Ignores triggers. Set while a request runs |
|
|
87
|
+
| `usernameKey` · `passwordKey` | string (default `username` · `password`) | After a successful response, fields stored with the Credential Management API when both are present |
|
|
88
|
+
|
|
89
|
+
| Ancestor attribute | Description |
|
|
90
|
+
|--------------------|-------------|
|
|
91
|
+
| `serviceURL` | API base URL |
|
|
92
|
+
| `dataProvider` | Default request path |
|
|
93
|
+
| `formDataProvider` | Publisher sent as the body. Required |
|
|
94
|
+
| `submitResultDataProvider` | Publisher receiving the result |
|
|
95
|
+
| `headersDataProvider` | Publisher sent as request headers |
|
|
96
|
+
| `clearedDataOnSuccess` | Space-separated publisher ids reset to `{}` after a result |
|
|
97
|
+
|
|
98
|
+
When the form or headers publisher has `needsCaptchaValidation`, the request waits for a [Captcha](/core/components/ui/captcha) token. A network failure produces a result with an error message in `messages`.
|
|
99
|
+
|
|
100
|
+
| Event | Detail |
|
|
101
|
+
|-------|--------|
|
|
102
|
+
| `submit` | The result (after `submitResultKey`) |
|
|
103
|
+
|
|
104
|
+
| Slot | Description |
|
|
105
|
+
|------|-------------|
|
|
106
|
+
| *(default)* | Fields and buttons that trigger the submission |
|
|
File without changes
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Translation
|
|
2
|
+
|
|
3
|
+
**`sonic-t`** renders a translated label in plain HTML. It is the markup counterpart of the [t()](/docs/directives/t) directive and shares its endpoint, batching and cache.
|
|
4
|
+
|
|
5
|
+
## Basic example
|
|
6
|
+
|
|
7
|
+
Set `serviceURL` and `wordingProvider` on an ancestor, then give each `sonic-t` a `key`. Labels requested together are fetched in one call.
|
|
8
|
+
|
|
9
|
+
<sonic-code>
|
|
10
|
+
<template>
|
|
11
|
+
<div serviceURL="/docs-mock-api" wordingProvider="wording/labels?lang=fr">
|
|
12
|
+
<p><sonic-t key="flight.boarding"></sonic-t></p>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
</sonic-code>
|
|
16
|
+
|
|
17
|
+
## HTML labels
|
|
18
|
+
|
|
19
|
+
The label is escaped by default. Add `unsafeHTML` for labels that contain trusted markup.
|
|
20
|
+
|
|
21
|
+
<sonic-code>
|
|
22
|
+
<template>
|
|
23
|
+
<div serviceURL="/docs-mock-api" wordingProvider="wording/labels?lang=fr">
|
|
24
|
+
<p><sonic-t key="flight.gate" unsafeHTML></sonic-t></p>
|
|
25
|
+
</div>
|
|
26
|
+
</template>
|
|
27
|
+
</sonic-code>
|
|
28
|
+
|
|
29
|
+
Endpoint format, reloading on `<html lang>` change and `wordingVersionProvider` are described on the [t()](/docs/directives/t) page.
|
|
30
|
+
|
|
31
|
+
## API reference
|
|
32
|
+
|
|
33
|
+
| Attribute | Values | Description |
|
|
34
|
+
|-----------|--------|-------------|
|
|
35
|
+
| `key` | string | Label key. Renders nothing while empty |
|
|
36
|
+
| `unsafeHTML` | boolean | Renders the label as HTML instead of text |
|
|
37
|
+
|
|
38
|
+
No slots.
|
|
@@ -1,35 +1,47 @@
|
|
|
1
1
|
# Value
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
**`sonic-value`** prints one value from a data provider and updates when it changes. Set `dataProvider` (or inherit it from an ancestor) and point `key` at the field to show.
|
|
4
|
+
|
|
5
|
+
## Basic example
|
|
6
|
+
|
|
7
|
+
The form below writes `cabin` into the `value-checkin` provider; `sonic-value` reads it back.
|
|
6
8
|
|
|
7
|
-
* Below is a form that helps you to set a value for the field "preference" in the data target with id "value-example"
|
|
8
9
|
<sonic-code>
|
|
9
10
|
<template>
|
|
10
|
-
<div formDataProvider="value-
|
|
11
|
-
|
|
12
|
-
<sonic-radio name="
|
|
13
|
-
<sonic-radio name="
|
|
11
|
+
<div formDataProvider="value-checkin" class="flex flex-wrap gap-4 mb-3">
|
|
12
|
+
<sonic-radio name="cabin" value="Economy" checked>Economy</sonic-radio>
|
|
13
|
+
<sonic-radio name="cabin" value="Business">Business</sonic-radio>
|
|
14
|
+
<sonic-radio name="cabin" value="First">First</sonic-radio>
|
|
14
15
|
</div>
|
|
16
|
+
<p>Cabin: <sonic-value dataProvider="value-checkin" key="cabin"></sonic-value></p>
|
|
15
17
|
</template>
|
|
16
18
|
</sonic-code>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
<sonic-code>
|
|
25
|
-
<template>
|
|
26
|
-
<sonic-subscriber dataProvider="value-example-2" props='{"my":{"complex":[{"data":"👋 Hi There"}]}}'></sonic-subscriber>
|
|
27
|
-
</template>
|
|
28
|
-
</sonic-code>
|
|
29
|
-
* You can target it with the dot syntax
|
|
19
|
+
|
|
20
|
+
The value is rendered as HTML, not escaped: only display trusted data. When the value is an object or is missing, nothing is printed.
|
|
21
|
+
|
|
22
|
+
## Nested key
|
|
23
|
+
|
|
24
|
+
`key` accepts a dot path, array indexes included.
|
|
25
|
+
|
|
30
26
|
<sonic-code>
|
|
31
27
|
<template>
|
|
32
|
-
|
|
28
|
+
<sonic-subscriber dataProvider="value-passenger" props='{"passenger":{"name":"Ada Lindqvist","seats":[{"number":"2A"}]}}'></sonic-subscriber>
|
|
29
|
+
<p>
|
|
30
|
+
<sonic-value dataProvider="value-passenger" key="passenger.name"></sonic-value>
|
|
31
|
+
is seated in
|
|
32
|
+
<sonic-value dataProvider="value-passenger" key="passenger.seats.0.number"></sonic-value>
|
|
33
|
+
</p>
|
|
33
34
|
</template>
|
|
34
35
|
</sonic-code>
|
|
35
36
|
|
|
37
|
+
## API reference
|
|
38
|
+
|
|
39
|
+
| Attribute | Values | Description |
|
|
40
|
+
|-----------|--------|-------------|
|
|
41
|
+
| `dataProvider` | string | Provider to read. Inherited from the closest ancestor when omitted |
|
|
42
|
+
| `key` | string (required) | Dot path of the value in the provider |
|
|
43
|
+
|
|
44
|
+
| Slot | Description |
|
|
45
|
+
|------|-------------|
|
|
46
|
+
| *(default)* | Content rendered after the value |
|
|
47
|
+
| `prefix` · `suffix` | Rendered around the default slot, after the value |
|
|
File without changes
|
|
File without changes
|