@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
|
@@ -1,77 +1,125 @@
|
|
|
1
1
|
# Checkbox
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**`sonic-checkbox`** is a styled checkbox that writes its `value` into form data. Give it a `name` and a `formDataProvider` (on the field or an ancestor); checkboxes sharing a `name` build an array of the checked values. Label goes in the default slot or `label`, helper text in the `description` slot.
|
|
4
|
+
|
|
5
|
+
## Basic example
|
|
6
|
+
|
|
4
7
|
<sonic-code>
|
|
5
8
|
<template>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<sonic-checkbox>default checkbox</sonic-checkbox>
|
|
11
|
-
<sonic-checkbox size="lg">lg checkbox</sonic-checkbox>
|
|
12
|
-
<sonic-checkbox size="xl">xl checkbox</sonic-checkbox>
|
|
13
|
-
<sonic-checkbox size="2xl">2xl checkbox</sonic-checkbox>
|
|
14
|
-
</div>
|
|
9
|
+
<sonic-checkbox>
|
|
10
|
+
Notify me of gate changes
|
|
11
|
+
<span slot="description">One message per change, no spam.</span>
|
|
12
|
+
</sonic-checkbox>
|
|
15
13
|
</template>
|
|
16
14
|
</sonic-code>
|
|
17
15
|
|
|
18
|
-
##
|
|
16
|
+
## Size
|
|
17
|
+
|
|
18
|
+
With no `size`, the checkbox follows `md` (1rem).
|
|
19
|
+
|
|
19
20
|
<sonic-code>
|
|
20
21
|
<template>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
<div class="grid gap-2">
|
|
23
|
+
<sonic-checkbox size="2xs">2xs</sonic-checkbox>
|
|
24
|
+
<sonic-checkbox size="xs">xs</sonic-checkbox>
|
|
25
|
+
<sonic-checkbox size="sm">sm</sonic-checkbox>
|
|
26
|
+
<sonic-checkbox>Default</sonic-checkbox>
|
|
27
|
+
<sonic-checkbox size="lg">lg</sonic-checkbox>
|
|
28
|
+
<sonic-checkbox size="xl">xl</sonic-checkbox>
|
|
29
|
+
<sonic-checkbox size="2xl">2xl</sonic-checkbox>
|
|
30
|
+
</div>
|
|
24
31
|
</template>
|
|
25
32
|
</sonic-code>
|
|
26
33
|
|
|
27
|
-
##
|
|
34
|
+
## Checked and disabled
|
|
35
|
+
|
|
36
|
+
`checked` sets the initial state. `disabled` blocks interaction and dims the control.
|
|
37
|
+
|
|
28
38
|
<sonic-code>
|
|
29
39
|
<template>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
<div class="grid gap-2">
|
|
41
|
+
<sonic-checkbox checked>Checked</sonic-checkbox>
|
|
42
|
+
<sonic-checkbox disabled>Disabled</sonic-checkbox>
|
|
43
|
+
<sonic-checkbox disabled checked>Disabled and checked</sonic-checkbox>
|
|
44
|
+
<sonic-checkbox>I accept the <sonic-link href="#" class="underline">terms</sonic-link></sonic-checkbox>
|
|
45
|
+
</div>
|
|
33
46
|
</template>
|
|
34
47
|
</sonic-code>
|
|
35
48
|
|
|
36
|
-
##
|
|
49
|
+
## Form binding
|
|
50
|
+
|
|
51
|
+
Checkboxes with the same `name` under one `formDataProvider` store an array of the checked `value`s. Initial state is read from that data, so a value already present checks the matching box. See [Data flow](/docs/getting-started/dataFlow).
|
|
52
|
+
|
|
37
53
|
<sonic-code>
|
|
38
54
|
<template>
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
55
|
+
<div formDataProvider="checkbox-multiple-demo" class="grid gap-2">
|
|
56
|
+
<sonic-checkbox name="extras" value="baggage" checked>Extra baggage</sonic-checkbox>
|
|
57
|
+
<sonic-checkbox name="extras" value="meal">Meal</sonic-checkbox>
|
|
58
|
+
<sonic-checkbox name="extras" value="lounge">Lounge access</sonic-checkbox>
|
|
59
|
+
<div>Selected: <sonic-value dataProvider="checkbox-multiple-demo" key="extras"></sonic-value></div>
|
|
60
|
+
</div>
|
|
42
61
|
</template>
|
|
43
62
|
</sonic-code>
|
|
44
63
|
|
|
45
|
-
##
|
|
64
|
+
## Single value
|
|
65
|
+
|
|
66
|
+
`unique` stores a single value instead of an array: checking one box unchecks the others with the same `name`, and the checked box can be unchecked again (value `null`). `radio` does the same but cannot be unchecked by a click.
|
|
67
|
+
|
|
46
68
|
<sonic-code>
|
|
47
69
|
<template>
|
|
48
|
-
|
|
70
|
+
<div formDataProvider="checkbox-unique-demo" class="grid gap-2">
|
|
71
|
+
<sonic-checkbox unique name="cabin" value="economy">Economy</sonic-checkbox>
|
|
72
|
+
<sonic-checkbox unique name="cabin" value="business">Business</sonic-checkbox>
|
|
73
|
+
<div>Cabin: <sonic-value dataProvider="checkbox-unique-demo" key="cabin"></sonic-value></div>
|
|
74
|
+
</div>
|
|
49
75
|
</template>
|
|
50
76
|
</sonic-code>
|
|
51
77
|
|
|
52
|
-
## Check all
|
|
78
|
+
## Check all and indeterminate
|
|
79
|
+
|
|
80
|
+
A checkbox with `checksAll` and the same `name` toggles every sibling value. It shows the indeterminate icon when only some are checked; its own `value` is never stored. With `unsetOnDisconnect`, a checkbox removes its value from the data when it leaves the DOM. `showAsIndeterminate` forces the indeterminate icon on any checkbox.
|
|
81
|
+
|
|
53
82
|
<sonic-code>
|
|
54
|
-
<template>
|
|
55
|
-
|
|
56
|
-
<sonic-checkbox
|
|
57
|
-
<sonic-
|
|
58
|
-
<
|
|
59
|
-
<
|
|
60
|
-
|
|
83
|
+
<template>
|
|
84
|
+
<div formDataProvider="checkbox-check-all-demo" class="grid gap-2">
|
|
85
|
+
<sonic-checkbox name="alerts" value="all" checksAll>All alerts</sonic-checkbox>
|
|
86
|
+
<sonic-checkbox name="alerts" value="boarding">Boarding</sonic-checkbox>
|
|
87
|
+
<sonic-checkbox name="alerts" value="gate">Gate change</sonic-checkbox>
|
|
88
|
+
<div id="checkbox-removable" class="flex gap-2 items-center">
|
|
89
|
+
<sonic-checkbox name="alerts" value="delay" unsetOnDisconnect>Delay</sonic-checkbox>
|
|
90
|
+
<sonic-button size="xs" variant="ghost" onclick="document.getElementById('checkbox-removable').remove()">Remove</sonic-button>
|
|
61
91
|
</div>
|
|
62
|
-
<sonic-
|
|
63
|
-
<div>
|
|
64
|
-
<span>Enabling unsetOnDisconect ensures that outdated or irrelevant values are not retained in the form state once their associated inputs are no longer rendered.</span>
|
|
65
|
-
<div id="prunable-checkbox" class="flex gap-2 items-center">
|
|
66
|
-
<sonic-checkbox name="someSharedName" value="baz">Baz</sonic-checkbox>
|
|
67
|
-
<sonic-button variant="ghost" shape="circle" unique name="toggleCheckboxExistance" onclick="document.getElementById('prunable-checkbox').remove();" value="true"><sonic-icon library="fontAwesome" prefix="solid" name="trash"></sonic-icon></sonic-button>
|
|
68
|
-
</div>
|
|
92
|
+
<div>Selected: <sonic-value dataProvider="checkbox-check-all-demo" key="alerts"></sonic-value></div>
|
|
69
93
|
</div>
|
|
70
94
|
</template>
|
|
71
95
|
</sonic-code>
|
|
72
96
|
|
|
73
|
-
##
|
|
97
|
+
## API reference
|
|
98
|
+
|
|
99
|
+
| Attribute | Values | Description |
|
|
100
|
+
|----------|---------|-------------|
|
|
101
|
+
| `name` | string | Key in the form data (dot notation supported) |
|
|
102
|
+
| `value` | string | Value stored when checked |
|
|
103
|
+
| `formDataProvider` | string | Form data id; inherited from the closest ancestor when omitted |
|
|
104
|
+
| `checked` | boolean | Initial checked state |
|
|
105
|
+
| `unique` | boolean | Stores a single value; can be unchecked |
|
|
106
|
+
| `radio` | boolean | Stores a single value; cannot be unchecked by a click |
|
|
107
|
+
| `checksAll` | boolean | Toggles every checkbox with the same `name` |
|
|
108
|
+
| `unsetOnDisconnect` | boolean | Removes the value from the data when the element is removed |
|
|
109
|
+
| `showAsIndeterminate` | boolean | Forces the indeterminate icon |
|
|
110
|
+
| `label` | string (HTML) | Label, rendered before the default slot |
|
|
111
|
+
| `description` | string (HTML) | Helper text, rendered in the `description` slot |
|
|
112
|
+
| `size` | `2xs` … `2xl` · `inherit` (default `md`) | Font size and box size |
|
|
113
|
+
| `disabled` | boolean | Blocks interaction |
|
|
114
|
+
| `required` | boolean | Native validation on form submit |
|
|
115
|
+
| `autofocus` | boolean | Focuses the input on load |
|
|
116
|
+
| `iconName` | string (default `check`) | Icon shown when checked |
|
|
117
|
+
| `indeterminateIconName` | string (default `minus-small`) | Icon shown when indeterminate |
|
|
118
|
+
| `data-aria-label` · `data-aria-labelledby` | string | Forwarded to the inner input as `aria-label` / `aria-labelledby` |
|
|
74
119
|
|
|
75
|
-
|
|
120
|
+
| Slot | Description |
|
|
121
|
+
|------|-------------|
|
|
122
|
+
| *(default)* | Label content (text, links) |
|
|
123
|
+
| `description` | Helper text under the label |
|
|
76
124
|
|
|
77
|
-
|
|
125
|
+
Fires a `change` event on each click.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Fieldset
|
|
2
2
|
|
|
3
|
-
**`sonic-fieldset`** groups related form controls
|
|
3
|
+
**`sonic-fieldset`** groups related form controls in a bordered container rendered as a native `<fieldset>`. Put fields in the default slot and title the group with a slotted `sonic-legend` or with the `label` and `description` shorthand. Pair the body with `sonic-form-layout` for responsive columns.
|
|
4
4
|
|
|
5
5
|
## Basic example
|
|
6
6
|
|
|
7
7
|
<sonic-code>
|
|
8
8
|
<template>
|
|
9
9
|
<sonic-fieldset>
|
|
10
|
-
<sonic-legend label="
|
|
10
|
+
<sonic-legend label="Passenger contact"></sonic-legend>
|
|
11
11
|
<sonic-form-layout>
|
|
12
12
|
<sonic-input autocomplete="email" label="Email" name="email" type="email"></sonic-input>
|
|
13
13
|
<sonic-input autocomplete="tel" label="Phone" name="phone" type="tel"></sonic-input>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
## Variant
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
With no `variant`, the fieldset is `default` (bordered). `ghost` and `shadow` hide the border; `shadow` adds `--sc-shadow-lg`.
|
|
22
22
|
|
|
23
23
|
<sonic-code>
|
|
24
24
|
<template>
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
</template>
|
|
40
40
|
</sonic-code>
|
|
41
41
|
|
|
42
|
-
## Tight
|
|
42
|
+
## Tight
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
`tight` removes horizontal padding, side borders and rounding, for a flat strip inside a parent.
|
|
45
45
|
|
|
46
46
|
<sonic-code>
|
|
47
47
|
<template>
|
|
@@ -54,9 +54,7 @@ Set **`tight`** to remove horizontal padding and side borders (flat strip inside
|
|
|
54
54
|
|
|
55
55
|
## Legend
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
Attribute values on **`sonic-legend`** are rendered as HTML—use only trusted content.
|
|
57
|
+
`sonic-legend` takes `label` and `description`, or custom markup in its default slot with `sonic-legend-description` for the secondary line. `iconName` adds a leading `sonic-icon`. **`label` and `description` are rendered as HTML**: pass trusted content only.
|
|
60
58
|
|
|
61
59
|
<sonic-code>
|
|
62
60
|
<template>
|
|
@@ -76,15 +74,15 @@ Attribute values on **`sonic-legend`** are rendered as HTML—use only trusted c
|
|
|
76
74
|
</template>
|
|
77
75
|
</sonic-code>
|
|
78
76
|
|
|
79
|
-
## Shorthand legend
|
|
77
|
+
## Shorthand legend
|
|
80
78
|
|
|
81
|
-
When
|
|
79
|
+
When `label` is set on `sonic-fieldset`, it renders the `sonic-legend` itself and forwards `description` · `iconName` · `iconLibrary` · `iconPrefix`. Do not also slot a `sonic-legend`, or the group gets two titles.
|
|
82
80
|
|
|
83
81
|
<sonic-code>
|
|
84
82
|
<template>
|
|
85
83
|
<sonic-fieldset
|
|
86
|
-
label="
|
|
87
|
-
description="Basic
|
|
84
|
+
label="Crew profile"
|
|
85
|
+
description="Basic crew member fields"
|
|
88
86
|
iconLibrary="iconoir"
|
|
89
87
|
iconName="user"
|
|
90
88
|
>
|
|
@@ -95,12 +93,12 @@ When **`label`** is set on **`sonic-fieldset`**, the component renders **`sonic-
|
|
|
95
93
|
|
|
96
94
|
## Legend actions
|
|
97
95
|
|
|
98
|
-
|
|
96
|
+
`slot="suffix"` on `sonic-legend` aligns menus or icon buttons to the end of the title row.
|
|
99
97
|
|
|
100
98
|
<sonic-code>
|
|
101
99
|
<template>
|
|
102
100
|
<sonic-fieldset>
|
|
103
|
-
<sonic-legend label="
|
|
101
|
+
<sonic-legend label="Passenger details">
|
|
104
102
|
<sonic-pop class="inline-block" slot="suffix">
|
|
105
103
|
<sonic-button shape="circle" variant="ghost">
|
|
106
104
|
<sonic-icon library="iconoir" size="lg" name="more-vert"></sonic-icon>
|
|
@@ -119,49 +117,7 @@ Use **`slot="suffix"`** on **`sonic-legend`** for menus or icon buttons aligned
|
|
|
119
117
|
</template>
|
|
120
118
|
</sonic-code>
|
|
121
119
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
### Associating a distant `form`
|
|
125
|
-
|
|
126
|
-
Set **`form`** on **`sonic-fieldset`** to the **`id`** of a **`<form>`** elsewhere in the page (same as the native **`form`** attribute on **`<fieldset>`**). Named fields in the fieldset then belong to that form for submit and constraint validation—for example a toolbar **`form`** and a field group rendered lower on the layout.
|
|
127
|
-
|
|
128
|
-
<sonic-code>
|
|
129
|
-
<template>
|
|
130
|
-
<div class="grid gap-4">
|
|
131
|
-
<form id="billing-form" class="flex flex-wrap items-center gap-2">
|
|
132
|
-
<sonic-button submit type="primary">Save billing</sonic-button>
|
|
133
|
-
</form>
|
|
134
|
-
<sonic-fieldset form="billing-form" label="Billing address">
|
|
135
|
-
<sonic-form-layout>
|
|
136
|
-
<sonic-input label="Street" name="street" autocomplete="street-address"></sonic-input>
|
|
137
|
-
<sonic-input label="Postal code" required name="postal_code" autocomplete="postal-code"></sonic-input>
|
|
138
|
-
<sonic-input label="City" name="city" autocomplete="address-level2"></sonic-input>
|
|
139
|
-
</sonic-form-layout>
|
|
140
|
-
</sonic-fieldset>
|
|
141
|
-
</div>
|
|
142
|
-
</template>
|
|
143
|
-
</sonic-code>
|
|
144
|
-
|
|
145
|
-
### Disabling a group
|
|
146
|
-
|
|
147
|
-
Set **`disabled`** on **`sonic-fieldset`** to disable the inner **`<fieldset>`** and every control in the group (same as a native fieldset). Use it for read-only steps or sections gated by permissions.
|
|
148
|
-
|
|
149
|
-
<sonic-code>
|
|
150
|
-
<template>
|
|
151
|
-
<div class="grid gap-4">
|
|
152
|
-
<sonic-fieldset label="Editable">
|
|
153
|
-
<sonic-input label="Display name" name="display_name"></sonic-input>
|
|
154
|
-
</sonic-fieldset>
|
|
155
|
-
<sonic-fieldset label="Locked" disabled>
|
|
156
|
-
<sonic-input label="Account ID" name="account_id" value="acct_42"></sonic-input>
|
|
157
|
-
</sonic-fieldset>
|
|
158
|
-
</div>
|
|
159
|
-
</template>
|
|
160
|
-
</sonic-code>
|
|
161
|
-
|
|
162
|
-
## Accessibility
|
|
163
|
-
|
|
164
|
-
The inner **`<fieldset>`** carries grouping semantics. **`disabled`** is applied on that element so nested controls are disabled in the usual way. **`sonic-legend`** renders a native **`<legend>`** for the group label.
|
|
120
|
+
<sonic-alert status="warning" label="Disabled state and form association" text="Both attributes are set on the inner native fieldset only. Slotted Concorde fields are not disabled or re-associated by them: set disabled on each field instead."></sonic-alert>
|
|
165
121
|
|
|
166
122
|
## API reference
|
|
167
123
|
|
|
@@ -170,36 +126,36 @@ The inner **`<fieldset>`** carries grouping semantics. **`disabled`** is applied
|
|
|
170
126
|
| Attribute | Values | Description |
|
|
171
127
|
|----------|---------|-------------|
|
|
172
128
|
| `variant` | `default` · `ghost` · `shadow` (default `default`) | Border and shadow treatment |
|
|
173
|
-
| `tight` | boolean | Removes horizontal padding
|
|
174
|
-
| `label` | string | Shorthand
|
|
175
|
-
| `description` | string | Shorthand
|
|
176
|
-
| `iconName` | string | Shorthand legend icon
|
|
177
|
-
| `iconLibrary` | string | Shorthand legend icon
|
|
178
|
-
| `iconPrefix` | string | Shorthand legend icon
|
|
179
|
-
| `disabled` | boolean |
|
|
180
|
-
| `form` | string |
|
|
181
|
-
| `dataProvider` | string |
|
|
129
|
+
| `tight` | boolean | Removes horizontal padding, side borders and rounding |
|
|
130
|
+
| `label` | string | Shorthand title; renders a `sonic-legend` when set |
|
|
131
|
+
| `description` | string | Shorthand description (HTML) |
|
|
132
|
+
| `iconName` | string | Shorthand legend icon `name` |
|
|
133
|
+
| `iconLibrary` | string | Shorthand legend icon `library` |
|
|
134
|
+
| `iconPrefix` | string | Shorthand legend icon `prefix` |
|
|
135
|
+
| `disabled` | boolean | Sets `disabled` on the inner native `<fieldset>` |
|
|
136
|
+
| `form` | string | Sets `form` on the inner native `<fieldset>` |
|
|
137
|
+
| `dataProvider` | string | Publisher key; matching publisher fields (e.g. `label`) fill the properties |
|
|
182
138
|
|
|
183
139
|
| Slot | Description |
|
|
184
140
|
|------|-------------|
|
|
185
|
-
| *(default)* |
|
|
141
|
+
| *(default)* | Optional `sonic-legend`, then the grouped fields |
|
|
186
142
|
|
|
187
143
|
### `sonic-legend`
|
|
188
144
|
|
|
189
145
|
| Attribute | Values | Description |
|
|
190
146
|
|----------|---------|-------------|
|
|
191
|
-
| `label` | string | Title HTML
|
|
192
|
-
| `description` | string | Description HTML
|
|
193
|
-
| `iconName` | string | Leading
|
|
194
|
-
| `iconLibrary` | string | Icon
|
|
195
|
-
| `iconPrefix` | string | Icon
|
|
196
|
-
| `forceAutoFill` | boolean |
|
|
147
|
+
| `label` | string | Title (HTML) |
|
|
148
|
+
| `description` | string | Description (HTML), wrapped in `sonic-legend-description` |
|
|
149
|
+
| `iconName` | string | Leading `sonic-icon` `name` |
|
|
150
|
+
| `iconLibrary` | string | Icon `library` |
|
|
151
|
+
| `iconPrefix` | string | Icon `prefix` |
|
|
152
|
+
| `forceAutoFill` | boolean | Lets a `label` or `description` set as a property override the attribute value |
|
|
197
153
|
|
|
198
154
|
| Slot | Description |
|
|
199
155
|
|------|-------------|
|
|
200
|
-
| *(default)* |
|
|
156
|
+
| *(default)* | Custom title and `sonic-legend-description` |
|
|
201
157
|
| `suffix` | Trailing actions (menus, icon buttons) |
|
|
202
158
|
|
|
203
159
|
### `sonic-legend-description`
|
|
204
160
|
|
|
205
|
-
|
|
161
|
+
No attributes. The default slot holds the muted line under the legend title.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Form actions
|
|
2
2
|
|
|
3
|
-
**`sonic-form-actions`** lays out
|
|
3
|
+
**`sonic-form-actions`** lays out form footer controls (submit, cancel) in a wrapping flex row with a `0.3rem` gap. Place it inside `sonic-form-layout`, where it spans the full width, or at the end of any block. Use `justify` and `direction` to arrange the controls.
|
|
4
4
|
|
|
5
5
|
## Basic example
|
|
6
6
|
|
|
7
|
-
With no attributes, actions align to the
|
|
7
|
+
With no attributes, actions align to the start of the row.
|
|
8
8
|
|
|
9
9
|
<sonic-code>
|
|
10
10
|
<template>
|
|
@@ -13,7 +13,7 @@ With no attributes, actions align to the **start** of the row (typical for left-
|
|
|
13
13
|
<sonic-input label="First name"></sonic-input>
|
|
14
14
|
<sonic-input label="Last name"></sonic-input>
|
|
15
15
|
<sonic-form-actions>
|
|
16
|
-
<sonic-button type="success"><sonic-icon name="check" library="iconoir"></sonic-icon>
|
|
16
|
+
<sonic-button type="success"><sonic-icon name="check" library="iconoir"></sonic-icon> Check in</sonic-button>
|
|
17
17
|
<sonic-button type="danger" variant="ghost"><sonic-icon name="undo" library="iconoir"></sonic-icon> Cancel</sonic-button>
|
|
18
18
|
</sonic-form-actions>
|
|
19
19
|
</sonic-form-layout>
|
|
@@ -21,9 +21,9 @@ With no attributes, actions align to the **start** of the row (typical for left-
|
|
|
21
21
|
</template>
|
|
22
22
|
</sonic-code>
|
|
23
23
|
|
|
24
|
-
## Justify
|
|
24
|
+
## Justify
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
`justify` is the CSS `justify-content` of the row (default `flex-start`). Use `flex-end` for dialog-style footers or `center` for toolbars.
|
|
27
27
|
|
|
28
28
|
<sonic-code>
|
|
29
29
|
<template>
|
|
@@ -40,9 +40,9 @@ With no attributes, actions align to the **start** of the row (typical for left-
|
|
|
40
40
|
</template>
|
|
41
41
|
</sonic-code>
|
|
42
42
|
|
|
43
|
-
##
|
|
43
|
+
## Direction
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
`direction` is the CSS `flex-direction` (default `row`). `row-reverse` swaps the visual order but keeps the DOM and focus order.
|
|
46
46
|
|
|
47
47
|
<sonic-code>
|
|
48
48
|
<template>
|
|
@@ -61,7 +61,7 @@ With no attributes, actions align to the **start** of the row (typical for left-
|
|
|
61
61
|
|
|
62
62
|
## Mixed controls
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
Any content can be slotted, such as a vertical `sonic-divider`. The default `alignItems` (`center`) keeps items of different heights aligned.
|
|
65
65
|
|
|
66
66
|
<sonic-code>
|
|
67
67
|
<template>
|
|
@@ -72,12 +72,12 @@ Combine **`sonic-button`** with **`sonic-divider vertical`** or other slotted co
|
|
|
72
72
|
<sonic-form-actions justify="center">
|
|
73
73
|
<sonic-button type="info" minWidth="12rem">
|
|
74
74
|
<sonic-icon name="nav-arrow-left" library="iconoir" slot="prefix"></sonic-icon>
|
|
75
|
-
|
|
75
|
+
Previous step
|
|
76
76
|
</sonic-button>
|
|
77
77
|
<sonic-divider vertical></sonic-divider>
|
|
78
78
|
<sonic-button type="info" minWidth="12rem">
|
|
79
79
|
<sonic-icon name="nav-arrow-right" library="iconoir" slot="suffix"></sonic-icon>
|
|
80
|
-
|
|
80
|
+
Next step
|
|
81
81
|
</sonic-button>
|
|
82
82
|
</sonic-form-actions>
|
|
83
83
|
</sonic-form-layout>
|
|
@@ -89,12 +89,10 @@ Combine **`sonic-button`** with **`sonic-divider vertical`** or other slotted co
|
|
|
89
89
|
|
|
90
90
|
| Attribute | Values | Description |
|
|
91
91
|
|----------|---------|-------------|
|
|
92
|
-
| `direction` | `row` (default) · `column` · `row-reverse` · `column-reverse` |
|
|
93
|
-
| `justify` | CSS justify-content (default `flex-start`) | Distribution along the main axis |
|
|
94
|
-
| `alignItems` | CSS align-items (default `center`) | Cross-axis alignment
|
|
95
|
-
|
|
96
|
-
The component exposes a single unnamed slot; there are no named slots. Slotted nodes use the host’s flex **`gap`** (`0.3rem`) and **`flex-wrap`**.
|
|
92
|
+
| `direction` | `row` (default) · `column` · `row-reverse` · `column-reverse` | CSS `flex-direction` of the row |
|
|
93
|
+
| `justify` | CSS `justify-content` value (default `flex-start`) | Distribution along the main axis |
|
|
94
|
+
| `alignItems` | CSS `align-items` value (default `center`) | Cross-axis alignment |
|
|
97
95
|
|
|
98
96
|
| Slot | Description |
|
|
99
97
|
|------|-------------|
|
|
100
|
-
| *(default)* | Footer
|
|
98
|
+
| *(default)* | Footer controls |
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
# Form layout
|
|
2
2
|
|
|
3
|
-
**`sonic-form-layout`** arranges slotted form controls in a
|
|
3
|
+
**`sonic-form-layout`** arranges slotted form controls in a responsive grid. Short fields (`sonic-input` · `sonic-select`) sit two per row when the host is wider than `440px`; every other child spans the full width. It has no attributes: wrap the body of a `form` or `sonic-fieldset` with it.
|
|
4
4
|
|
|
5
5
|
## Basic example
|
|
6
6
|
|
|
7
|
-
Typical registration-style form: short fields flow in two columns on wide layouts; long or grouped blocks stay full width.
|
|
8
|
-
|
|
9
7
|
<sonic-code>
|
|
10
8
|
<template>
|
|
11
9
|
<form>
|
|
@@ -35,15 +33,15 @@ Typical registration-style form: short fields flow in two columns on wide layout
|
|
|
35
33
|
type="password"
|
|
36
34
|
></sonic-input>
|
|
37
35
|
<sonic-divider></sonic-divider>
|
|
38
|
-
<sonic-textarea label="
|
|
39
|
-
<sonic-switch>
|
|
36
|
+
<sonic-textarea label="Special assistance" rows="5"></sonic-textarea>
|
|
37
|
+
<sonic-switch>Add priority boarding</sonic-switch>
|
|
40
38
|
<sonic-checkbox>Subscribe to newsletter</sonic-checkbox>
|
|
41
39
|
<sonic-checkbox>
|
|
42
40
|
I accept the
|
|
43
41
|
<sonic-link href="#" class="underline">terms and conditions</sonic-link>
|
|
44
42
|
</sonic-checkbox>
|
|
45
43
|
<sonic-form-actions>
|
|
46
|
-
<sonic-button type="success">
|
|
44
|
+
<sonic-button type="success">Confirm passenger</sonic-button>
|
|
47
45
|
</sonic-form-actions>
|
|
48
46
|
</sonic-form-layout>
|
|
49
47
|
</form>
|
|
@@ -52,24 +50,18 @@ Typical registration-style form: short fields flow in two columns on wide layout
|
|
|
52
50
|
|
|
53
51
|
## Responsive columns
|
|
54
52
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
If the slot contains **exactly one** direct **`sonic-input`**, **`sonic-select`**, or **`sonic-input-autocomplete`**, the layout stays **one column** even above the breakpoint so a lone field does not sit in half an empty row.
|
|
53
|
+
The column count depends on the host width, not the viewport: two columns above `440px`, one below. When the layout holds exactly one short field, it stays single-column so the field does not sit in half an empty row.
|
|
58
54
|
|
|
59
55
|
<sonic-code>
|
|
60
56
|
<template>
|
|
61
|
-
<div class="grid gap-8
|
|
62
|
-
<
|
|
63
|
-
<sonic-
|
|
64
|
-
<sonic-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
</sonic-form-layout>
|
|
68
|
-
</div>
|
|
69
|
-
</div>
|
|
70
|
-
<div>
|
|
57
|
+
<div class="grid gap-8">
|
|
58
|
+
<sonic-form-layout style="max-width: 20rem">
|
|
59
|
+
<sonic-divider align="left">Narrow host</sonic-divider>
|
|
60
|
+
<sonic-input label="Email" name="email_narrow" type="email"></sonic-input>
|
|
61
|
+
<sonic-input label="Confirm email" name="email_confirm_narrow" type="email"></sonic-input>
|
|
62
|
+
</sonic-form-layout>
|
|
71
63
|
<sonic-form-layout>
|
|
72
|
-
|
|
64
|
+
<sonic-divider align="left">Wide host</sonic-divider>
|
|
73
65
|
<sonic-input label="Email" name="email_wide" type="email"></sonic-input>
|
|
74
66
|
<sonic-input label="Confirm email" name="email_confirm_wide" type="email"></sonic-input>
|
|
75
67
|
</sonic-form-layout>
|
|
@@ -77,11 +69,9 @@ If the slot contains **exactly one** direct **`sonic-input`**, **`sonic-select`*
|
|
|
77
69
|
</template>
|
|
78
70
|
</sonic-code>
|
|
79
71
|
|
|
80
|
-
## Full-width
|
|
81
|
-
|
|
82
|
-
Everything except **`sonic-input`**, **`sonic-select`**, **`sonic-input-autocomplete`**, and slotted elements with class **`form-item-container`** is assigned **`grid-column: 1 / -1`**. Use this for **`sonic-textarea`**, **`sonic-checkbox`**, **`sonic-switch`**, **`sonic-form-actions`**, **`sonic-divider`**, and similar blocks.
|
|
72
|
+
## Full-width children
|
|
83
73
|
|
|
84
|
-
|
|
74
|
+
Any child that is not a short field spans the full row: `sonic-textarea` · `sonic-checkbox` · `sonic-switch` · `sonic-divider` · `sonic-form-actions` and plain elements. Slotted dividers lose their vertical margin to match the grid gap, and `sonic-submit` uses `display: contents` so its button joins the grid directly.
|
|
85
75
|
|
|
86
76
|
<sonic-code>
|
|
87
77
|
<template>
|
|
@@ -97,14 +87,14 @@ Slotted **`sonic-divider`** sets **`--sc-divider-my: 0`** so divider spacing mat
|
|
|
97
87
|
|
|
98
88
|
## Custom column wrapper
|
|
99
89
|
|
|
100
|
-
Add class
|
|
90
|
+
Add the class `form-item-container` to a wrapper element to keep it in the two-column flow like a short field.
|
|
101
91
|
|
|
102
92
|
<sonic-code>
|
|
103
93
|
<template>
|
|
104
94
|
<sonic-form-layout>
|
|
105
|
-
<sonic-input label="
|
|
95
|
+
<sonic-input label="From" name="from" placeholder="CDG"></sonic-input>
|
|
106
96
|
<div class="form-item-container">
|
|
107
|
-
<sonic-input label="
|
|
97
|
+
<sonic-input label="To" name="to" placeholder="JFK"></sonic-input>
|
|
108
98
|
</div>
|
|
109
99
|
</sonic-form-layout>
|
|
110
100
|
</template>
|
|
@@ -112,8 +102,8 @@ Add class **`form-item-container`** on a slotted wrapper (for example a **`div`*
|
|
|
112
102
|
|
|
113
103
|
## API reference
|
|
114
104
|
|
|
115
|
-
No
|
|
105
|
+
No attributes.
|
|
116
106
|
|
|
117
107
|
| Slot | Description |
|
|
118
108
|
|------|-------------|
|
|
119
|
-
| *(default)* |
|
|
109
|
+
| *(default)* | Fields and blocks in visual order; short fields and `form-item-container` share rows, everything else spans the full width |
|