@supersoniks/concorde 5.1.1 → 5.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/concorde-docs/SKILL.md +153 -0
- package/.agents/skills/{concorde-component-docs/template.md → concorde-docs/templates/component.md} +6 -2
- package/.agents/skills/concorde-docs/templates/decorator.md +43 -0
- package/.agents/skills/concorde-docs/templates/guide.md +25 -0
- package/PLAN-DOCS-AGENTS.md +80 -0
- package/README.md +4 -4
- package/ai/README.md +29 -41
- package/ai/skills/concorde/SKILL.md +54 -324
- package/ai/skills/concorde/rules/composition.md +32 -0
- package/ai/skills/concorde/rules/data.md +47 -0
- package/ai/skills/concorde/rules/http.md +25 -0
- package/ai/skills/concorde/rules/lists-forms.md +35 -0
- package/ai/skills/concorde/rules/styling.md +46 -0
- package/ai/skills/concorde/rules/troubleshooting.md +45 -0
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +21 -21
- package/concorde-core.es.js +977 -980
- package/custom-elements-manifest.public.config.mjs +8 -0
- package/{.tmp-cem/custom-elements.json → custom-elements.json} +11758 -8904
- package/dist/concorde-core.bundle.js +21 -21
- package/dist/concorde-core.es.js +977 -980
- package/dist/docs-mock-api-sw.js +58 -223
- package/dist/docs-mock-api-sw.js.map +4 -4
- package/dist/img/concorde/plane_01.jpg +0 -0
- package/dist/img/concorde/plane_02.jpg +0 -0
- package/dist/img/concorde/plane_03.jpg +0 -0
- package/dist/img/concorde/plane_04.jpg +0 -0
- package/dist/img/concorde/plane_05.jpg +0 -0
- package/dist/img/concorde/plane_06.jpg +0 -0
- package/dist/img/concorde/plane_07.jpg +0 -0
- package/dist/img/concorde/plane_08.jpg +0 -0
- package/dist/img/concorde/plane_09.jpg +0 -0
- package/dist/img/concorde/plane_10.jpg +0 -0
- package/dist/img/concorde/plane_11.jpg +0 -0
- package/dist/img/concorde/plane_12.jpg +0 -0
- package/dist/img/concorde/plane_13.jpg +0 -0
- package/dist/img/og-concorde.jpg +0 -0
- package/dist/robots.txt +11 -10
- package/docs/.htaccess +82 -0
- package/docs/404.html +15 -0
- package/docs/404.md +5 -0
- package/docs/about.html +111 -0
- package/docs/about.md +22 -0
- package/docs/assets/{index-Bb-_LRyY.js → index-6sS76xWj.js} +2625 -3158
- package/docs/assets/index-DkdPbH0F.css +1 -0
- package/docs/core/components/functional/date/date.html +211 -0
- package/docs/core/components/functional/date/date.md +150 -0
- package/docs/core/components/functional/fetch/fetch.html +180 -0
- package/docs/core/components/functional/fetch/fetch.md +108 -0
- package/docs/core/components/functional/if/if.html +65 -0
- package/docs/core/components/functional/if/if.md +34 -0
- package/docs/core/components/functional/jsonata/jsonata.html +110 -0
- package/docs/core/components/functional/jsonata/jsonata.md +61 -0
- package/docs/core/components/functional/list/list.html +200 -0
- package/docs/core/components/functional/list/list.md +125 -0
- package/docs/core/components/functional/mix/mix.html +78 -0
- package/docs/core/components/functional/mix/mix.md +46 -0
- package/docs/core/components/functional/queue/queue.html +155 -0
- package/docs/core/components/functional/queue/queue.md +51 -0
- package/docs/core/components/functional/router/router.html +154 -0
- package/docs/core/components/functional/router/router.md +93 -0
- package/docs/core/components/functional/sdui/sdui-extension-points.html +127 -0
- package/docs/core/components/functional/sdui/sdui-extension-points.md +94 -0
- package/docs/core/components/functional/sdui/sdui.html +397 -0
- package/docs/core/components/functional/sdui/sdui.md +307 -0
- package/docs/core/components/functional/states/states.html +141 -0
- package/docs/core/components/functional/states/states.md +112 -0
- package/docs/core/components/functional/submit/submit.html +178 -0
- package/docs/core/components/functional/submit/submit.md +106 -0
- package/docs/core/components/functional/subscriber/subscriber.html +68 -0
- package/docs/core/components/functional/subscriber/subscriber.md +91 -0
- package/docs/core/components/functional/translation/translation.html +60 -0
- package/docs/core/components/functional/translation/translation.md +38 -0
- package/docs/core/components/functional/value/value.html +81 -0
- package/docs/core/components/functional/value/value.md +47 -0
- package/docs/core/components/ui/alert/alert.html +201 -0
- package/docs/core/components/ui/alert/alert.md +186 -0
- package/docs/core/components/ui/alert-messages/alert-messages.html +132 -0
- package/docs/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/core/components/ui/badge/badge.html +197 -0
- package/docs/core/components/ui/badge/badge.md +181 -0
- package/docs/core/components/ui/button/button.html +309 -0
- package/docs/core/components/ui/button/button.md +216 -0
- package/docs/core/components/ui/captcha/captcha.html +80 -0
- package/docs/core/components/ui/captcha/captcha.md +56 -0
- package/docs/core/components/ui/card/card.html +254 -0
- package/docs/core/components/ui/card/card.md +215 -0
- package/docs/core/components/ui/divider/divider.html +144 -0
- package/docs/core/components/ui/divider/divider.md +126 -0
- package/docs/core/components/ui/form/checkbox/checkbox.html +200 -0
- package/docs/core/components/ui/form/checkbox/checkbox.md +125 -0
- package/docs/core/components/ui/form/fieldset/fieldset.html +238 -0
- package/docs/core/components/ui/form/fieldset/fieldset.md +161 -0
- package/docs/core/components/ui/form/form-actions/form-actions.html +122 -0
- package/docs/core/components/ui/form/form-actions/form-actions.md +98 -0
- package/docs/core/components/ui/form/form-layout/form-layout.html +115 -0
- package/docs/core/components/ui/form/form-layout/form-layout.md +109 -0
- package/docs/core/components/ui/form/input/input.html +235 -0
- package/docs/core/components/ui/form/input/input.md +142 -0
- package/docs/core/components/ui/form/radio/radio.html +144 -0
- package/docs/core/components/ui/form/radio/radio.md +78 -0
- package/docs/core/components/ui/form/select/select.html +178 -0
- package/docs/core/components/ui/form/select/select.md +86 -0
- package/docs/core/components/ui/form/switch/switch.html +146 -0
- package/docs/core/components/ui/form/switch/switch.md +80 -0
- package/docs/core/components/ui/form/textarea/textarea.html +162 -0
- package/docs/core/components/ui/form/textarea/textarea.md +82 -0
- package/docs/core/components/ui/group/group.html +113 -0
- package/docs/core/components/ui/group/group.md +77 -0
- package/docs/core/components/ui/icon/icon.html +223 -0
- package/docs/core/components/ui/icon/icon.md +214 -0
- package/docs/core/components/ui/image/image.html +194 -0
- package/docs/core/components/ui/image/image.md +167 -0
- package/docs/core/components/ui/link/link.html +101 -0
- package/docs/core/components/ui/link/link.md +81 -0
- package/docs/core/components/ui/loader/loader.html +114 -0
- package/docs/core/components/ui/loader/loader.md +87 -0
- package/docs/core/components/ui/menu/menu.html +395 -0
- package/docs/core/components/ui/menu/menu.md +370 -0
- package/docs/core/components/ui/modal/modal.html +324 -0
- package/docs/core/components/ui/modal/modal.md +211 -0
- package/docs/core/components/ui/pop/pop.html +250 -0
- package/docs/core/components/ui/pop/pop.md +216 -0
- package/docs/core/components/ui/progress/progress.html +132 -0
- package/docs/core/components/ui/progress/progress.md +109 -0
- package/docs/core/components/ui/table/table.html +333 -0
- package/docs/core/components/ui/table/table.md +267 -0
- package/docs/core/components/ui/theme/theme.html +116 -0
- package/docs/core/components/ui/theme/theme.md +97 -0
- package/docs/core/components/ui/toast/toast.html +185 -0
- package/docs/core/components/ui/toast/toast.md +147 -0
- package/docs/core/components/ui/tooltip/tooltip.html +112 -0
- package/docs/core/components/ui/tooltip/tooltip.md +89 -0
- package/docs/custom-elements.json +16559 -0
- package/docs/docs/decorators/ancestor-attribute.html +71 -0
- package/docs/docs/decorators/ancestor-attribute.md +59 -0
- package/docs/docs/decorators/auto-subscribe.html +61 -0
- package/docs/docs/decorators/auto-subscribe.md +40 -0
- package/docs/docs/decorators/bind.html +87 -0
- package/docs/docs/decorators/bind.md +76 -0
- package/docs/docs/decorators/get.html +166 -0
- package/docs/docs/decorators/get.md +160 -0
- package/docs/docs/decorators/handle.html +139 -0
- package/docs/docs/decorators/handle.md +119 -0
- package/docs/docs/decorators/on-assign.html +72 -0
- package/docs/docs/decorators/on-assign.md +63 -0
- package/docs/docs/decorators/patch.html +76 -0
- package/docs/docs/decorators/patch.md +44 -0
- package/docs/docs/decorators/post.html +150 -0
- package/docs/docs/decorators/post.md +134 -0
- package/docs/docs/decorators/publish.html +74 -0
- package/docs/docs/decorators/publish.md +56 -0
- package/docs/docs/decorators/put.html +83 -0
- package/docs/docs/decorators/put.md +51 -0
- package/docs/docs/decorators/subscribe.html +91 -0
- package/docs/docs/decorators/subscribe.md +87 -0
- package/docs/docs/decorators/wait-for-ancestors.html +82 -0
- package/docs/docs/decorators/wait-for-ancestors.md +76 -0
- package/docs/docs/directives/sub.html +79 -0
- package/docs/docs/directives/sub.md +75 -0
- package/docs/docs/directives/t.html +91 -0
- package/docs/docs/directives/t.md +73 -0
- package/docs/docs/getting-started/ai-agents.html +130 -0
- package/docs/docs/getting-started/ai-agents.md +50 -0
- package/docs/docs/getting-started/components.html +27 -0
- package/docs/docs/getting-started/create-a-component.html +108 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/create-a-component.md +3 -6
- package/docs/docs/getting-started/dataFlow.html +174 -0
- package/{src/docs/_core-concept → docs/docs/getting-started}/dataFlow.md +18 -19
- package/docs/docs/getting-started/installation.html +69 -0
- package/docs/docs/getting-started/installation.md +36 -0
- package/docs/docs/getting-started/my-first-component.html +180 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/my-first-component.md +5 -14
- package/docs/docs/getting-started/start.html +47 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/start.md +1 -13
- package/docs/docs/getting-started/theming.html +334 -0
- package/docs/docs/index.html +99 -0
- package/docs/docs/misc/api-configuration.html +149 -0
- package/{src/docs/_misc → docs/docs/misc}/api-configuration.md +10 -12
- package/docs/docs/misc/dataProviderKey.html +136 -0
- package/{src/docs/_misc → docs/docs/misc}/dataProviderKey.md +4 -4
- package/docs/docs/misc/docs-mock-api.html +155 -0
- package/{src/docs/_misc → docs/docs/misc}/docs-mock-api.md +12 -13
- package/docs/docs/misc/dynamic-path.html +181 -0
- package/{src/docs/_misc → docs/docs/misc}/dynamic-path.md +8 -8
- package/docs/docs/misc/endpoint.html +51 -0
- package/{src/docs/_misc → docs/docs/misc}/endpoint.md +8 -8
- package/docs/docs/misc/html-integration.html +45 -0
- package/{src/docs/_misc → docs/docs/misc}/html-integration.md +4 -5
- package/docs/docs-mock-api-sw.js +58 -223
- package/docs/docs-mock-api-sw.js.map +4 -4
- package/docs/hubs/decorators.html +438 -0
- package/docs/hubs/form-components.html +404 -0
- package/docs/hubs/remote-data.html +367 -0
- package/docs/img/archive/concorde-001-2cv.webp +0 -0
- package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
- package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
- package/docs/img/archive/credits.json +28 -0
- package/docs/img/concorde/plane_01.jpg +0 -0
- package/docs/img/concorde/plane_02.jpg +0 -0
- package/docs/img/concorde/plane_03.jpg +0 -0
- package/docs/img/concorde/plane_04.jpg +0 -0
- package/docs/img/concorde/plane_05.jpg +0 -0
- package/docs/img/concorde/plane_06.jpg +0 -0
- package/docs/img/concorde/plane_07.jpg +0 -0
- package/docs/img/concorde/plane_08.jpg +0 -0
- package/docs/img/concorde/plane_09.jpg +0 -0
- package/docs/img/concorde/plane_10.jpg +0 -0
- package/docs/img/concorde/plane_11.jpg +0 -0
- package/docs/img/concorde/plane_12.jpg +0 -0
- package/docs/img/concorde/plane_13.jpg +0 -0
- package/docs/img/og-concorde.jpg +0 -0
- package/docs/index.html +184 -68
- package/docs/index.md +22 -0
- package/docs/llms-full.txt +5779 -0
- package/docs/llms.txt +108 -0
- package/docs/privacy.html +122 -0
- package/docs/privacy.md +32 -0
- package/docs/robots.txt +11 -10
- package/docs/sitemap.xml +243 -0
- package/docs/src/core/components/functional/date/date.md +150 -0
- package/docs/src/core/components/functional/fetch/fetch.md +108 -0
- package/docs/src/core/components/functional/if/if.md +34 -0
- package/docs/src/core/components/functional/jsonata/jsonata.md +61 -0
- package/docs/src/core/components/functional/list/list.md +125 -0
- package/docs/src/core/components/functional/mix/mix.md +46 -0
- package/docs/src/core/components/functional/queue/queue.md +51 -0
- package/docs/src/core/components/functional/router/router.md +93 -0
- package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
- package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
- package/docs/src/core/components/functional/sdui/default-library.json +108 -0
- package/docs/src/core/components/functional/sdui/example.json +32 -0
- package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
- package/docs/src/core/components/functional/sdui/sdui.md +307 -0
- package/docs/src/core/components/functional/states/states.md +112 -0
- package/docs/src/core/components/functional/submit/submit.md +106 -0
- package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
- package/docs/src/core/components/functional/translation/translation.md +38 -0
- package/docs/src/core/components/functional/value/value.md +47 -0
- package/docs/src/core/components/ui/alert/alert.md +186 -0
- package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/src/core/components/ui/badge/badge.md +181 -0
- package/docs/src/core/components/ui/button/button.md +216 -0
- package/docs/src/core/components/ui/captcha/captcha.md +56 -0
- package/docs/src/core/components/ui/card/card.md +215 -0
- package/docs/src/core/components/ui/divider/divider.md +126 -0
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +125 -0
- package/docs/src/core/components/ui/form/fieldset/fieldset.md +161 -0
- package/docs/src/core/components/ui/form/form-actions/form-actions.md +98 -0
- package/docs/src/core/components/ui/form/form-layout/form-layout.md +109 -0
- package/docs/src/core/components/ui/form/input/input.md +142 -0
- package/docs/src/core/components/ui/form/radio/radio.md +78 -0
- package/docs/src/core/components/ui/form/select/select.md +86 -0
- package/docs/src/core/components/ui/form/switch/switch.md +80 -0
- package/docs/src/core/components/ui/form/textarea/textarea.md +82 -0
- package/docs/src/core/components/ui/group/group.md +77 -0
- package/docs/src/core/components/ui/icon/icon.md +214 -0
- package/docs/src/core/components/ui/icon/icons.json +1 -0
- package/docs/src/core/components/ui/image/image.md +167 -0
- package/docs/src/core/components/ui/link/link.md +81 -0
- package/docs/src/core/components/ui/loader/loader.md +87 -0
- package/docs/src/core/components/ui/menu/menu.md +370 -0
- package/docs/src/core/components/ui/modal/modal.md +211 -0
- package/docs/src/core/components/ui/pop/pop.md +216 -0
- package/docs/src/core/components/ui/progress/progress.md +109 -0
- package/docs/src/core/components/ui/table/table.md +267 -0
- package/docs/src/core/components/ui/theme/theme.md +97 -0
- package/docs/src/core/components/ui/toast/toast.md +147 -0
- package/docs/src/core/components/ui/tooltip/tooltip.md +89 -0
- package/docs/src/docs/decorators/ancestor-attribute.md +59 -0
- package/docs/src/docs/decorators/auto-subscribe.md +40 -0
- package/docs/src/docs/decorators/bind.md +76 -0
- package/docs/src/docs/decorators/get.md +160 -0
- package/docs/src/docs/decorators/handle.md +119 -0
- package/docs/src/docs/decorators/on-assign.md +63 -0
- package/docs/src/docs/decorators/patch.md +44 -0
- package/docs/src/docs/decorators/post.md +134 -0
- package/docs/src/docs/decorators/publish.md +56 -0
- package/docs/src/docs/decorators/put.md +51 -0
- package/docs/src/docs/decorators/subscribe.md +87 -0
- package/docs/src/docs/decorators/wait-for-ancestors.md +76 -0
- package/docs/src/docs/directives/sub.md +75 -0
- package/docs/src/docs/directives/t.md +73 -0
- package/docs/src/docs/getting-started/ai-agents.md +50 -0
- package/docs/src/docs/getting-started/components.md +5 -0
- package/docs/src/docs/getting-started/create-a-component.md +136 -0
- package/docs/src/docs/getting-started/dataFlow.md +87 -0
- package/docs/src/docs/getting-started/installation.md +36 -0
- package/docs/src/docs/getting-started/my-first-component.md +227 -0
- package/docs/src/docs/getting-started/start.md +35 -0
- package/docs/src/docs/getting-started/theming.md +253 -0
- package/docs/src/docs/misc/api-configuration.md +79 -0
- package/docs/src/docs/misc/dataProviderKey.md +168 -0
- package/docs/src/docs/misc/docs-mock-api.md +62 -0
- package/docs/src/docs/misc/dynamic-path.md +71 -0
- package/docs/src/docs/misc/endpoint.md +45 -0
- package/docs/src/docs/misc/html-integration.md +14 -0
- package/docs/src/docs/search/docs-search.json +10332 -0
- package/docs/src/tag-list.json +1 -0
- package/docs/src/tsconfig-model.json +23 -0
- package/docs/src/tsconfig.json +1359 -0
- package/index.html +157 -5
- package/package.json +8 -4
- package/public/docs-mock-api-sw.js +58 -223
- package/public/docs-mock-api-sw.js.map +4 -4
- package/public/img/concorde/plane_01.jpg +0 -0
- package/public/img/concorde/plane_02.jpg +0 -0
- package/public/img/concorde/plane_03.jpg +0 -0
- package/public/img/concorde/plane_04.jpg +0 -0
- package/public/img/concorde/plane_05.jpg +0 -0
- package/public/img/concorde/plane_06.jpg +0 -0
- package/public/img/concorde/plane_07.jpg +0 -0
- package/public/img/concorde/plane_08.jpg +0 -0
- package/public/img/concorde/plane_09.jpg +0 -0
- package/public/img/concorde/plane_10.jpg +0 -0
- package/public/img/concorde/plane_11.jpg +0 -0
- package/public/img/concorde/plane_12.jpg +0 -0
- package/public/img/concorde/plane_13.jpg +0 -0
- package/public/img/og-concorde.jpg +0 -0
- package/public/robots.txt +11 -10
- package/scripts/ai-init.mjs +104 -379
- package/scripts/ai-init.test.mjs +81 -239
- package/scripts/docs-markdown-vite-plugin.ts +43 -0
- package/scripts/docs-public-url.mjs +56 -0
- package/scripts/docs.htaccess +82 -0
- package/scripts/generate-cem.mjs +244 -0
- package/scripts/generate-cem.test.mjs +122 -0
- package/scripts/generate-crawl-docs.mjs +233 -118
- package/scripts/generate-crawl-docs.test.mjs +124 -0
- package/scripts/generate-sdui-catalog.mjs +11 -10
- package/scripts/post-build-docs.js +37 -50
- package/scripts/pre-publish.mjs +2 -1
- package/scripts/site-pages.mjs +212 -0
- package/scripts/site-pages.test.mjs +116 -0
- package/site-pages/about.md +22 -0
- package/site-pages/privacy.md +32 -0
- package/src/core/components/functional/date/date.md +91 -231
- package/src/core/components/functional/fetch/fetch.md +66 -83
- package/src/core/components/functional/if/if.md +28 -3
- package/src/core/components/functional/jsonata/jsonata.md +42 -37
- package/src/core/components/functional/list/list.md +103 -43
- package/src/core/components/functional/mix/mix.md +31 -26
- package/src/core/components/functional/queue/queue.demo.ts +10 -7
- package/src/core/components/functional/queue/queue.md +40 -61
- package/src/core/components/functional/router/router.demo.ts +16 -16
- package/src/core/components/functional/router/router.md +64 -65
- package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
- package/src/core/components/functional/sdui/component-catalog.json +1 -1
- package/src/core/components/functional/sdui/example.json +19 -86
- package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
- package/src/core/components/functional/sdui/sdui.md +187 -358
- package/src/core/components/functional/states/states.demo.ts +21 -22
- package/src/core/components/functional/states/states.md +86 -61
- package/src/core/components/functional/states/states.ts +1 -1
- package/src/core/components/functional/submit/submit.md +64 -72
- package/src/core/components/functional/translation/translation.md +38 -0
- package/src/core/components/functional/value/value.md +34 -22
- package/src/core/components/ui/alert/alert.md +48 -58
- package/src/core/components/ui/badge/badge.md +27 -34
- package/src/core/components/ui/button/button.md +139 -106
- package/src/core/components/ui/captcha/captcha.md +17 -32
- package/src/core/components/ui/card/card.md +6 -6
- package/src/core/components/ui/divider/divider.md +8 -11
- package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
- package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
- package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
- package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
- package/src/core/components/ui/form/input/input.md +95 -95
- package/src/core/components/ui/form/radio/radio.md +55 -34
- package/src/core/components/ui/form/select/select.md +60 -45
- package/src/core/components/ui/form/switch/switch.md +57 -34
- package/src/core/components/ui/form/textarea/textarea.md +55 -38
- package/src/core/components/ui/group/group.md +35 -33
- package/src/core/components/ui/icon/icon.md +4 -4
- package/src/core/components/ui/image/image.md +41 -107
- package/src/core/components/ui/link/link.md +6 -6
- package/src/core/components/ui/loader/loader.md +30 -55
- package/src/core/components/ui/menu/menu.md +27 -27
- package/src/core/components/ui/modal/modal.md +72 -96
- package/src/core/components/ui/pop/pop.md +80 -158
- package/src/core/components/ui/progress/progress.md +2 -2
- package/src/core/components/ui/table/table.md +91 -255
- package/src/core/components/ui/theme/theme.md +11 -36
- package/src/core/components/ui/toast/toast.md +48 -117
- package/src/core/components/ui/tooltip/tooltip.md +27 -62
- package/src/core/decorators/subscriber/bind.ts +9 -14
- package/src/core/utils/LocationHandler.spec.ts +80 -0
- package/src/core/utils/LocationHandler.ts +5 -9
- package/src/docs/components/docs-demo-sources.ts +55 -140
- package/src/docs/components/docs-lit-demo.ts +1 -3
- package/src/docs/components/docs-source-link.ts +0 -82
- package/src/docs/decorators/ancestor-attribute.md +59 -0
- package/src/docs/decorators/auto-subscribe.md +40 -0
- package/src/docs/decorators/bind.md +76 -0
- package/src/docs/decorators/get.md +160 -0
- package/src/docs/decorators/handle.md +119 -0
- package/src/docs/decorators/on-assign.md +63 -0
- package/src/docs/decorators/patch.md +44 -0
- package/src/docs/decorators/post.md +134 -0
- package/src/docs/decorators/publish.md +56 -0
- package/src/docs/decorators/put.md +51 -0
- package/src/docs/decorators/subscribe.md +87 -0
- package/src/docs/decorators/wait-for-ancestors.md +76 -0
- package/src/docs/directives/sub.md +75 -0
- package/src/docs/directives/t.md +73 -0
- package/src/docs/docs-location.spec.ts +56 -0
- package/src/docs/docs-location.ts +133 -32
- package/src/docs/docs.ts +1 -2
- package/src/docs/example/decorators-demo-bind-demos.ts +83 -135
- package/src/docs/example/decorators-demo-geo.ts +30 -19
- package/src/docs/example/decorators-demo-post.ts +88 -186
- package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
- package/src/docs/example/decorators-demo.ts +85 -98
- package/src/docs/example/docs-api-config-demos.ts +19 -20
- package/src/docs/example/docs-flight-demos.ts +147 -0
- package/src/docs/example/docs-jsonata-demos.ts +52 -52
- package/src/docs/example/docs-list-demos.ts +43 -123
- package/src/docs/example/docs-provider-keys.ts +21 -28
- package/src/docs/example/docs-queue-demos.ts +37 -77
- package/src/docs/example/docs-router-demos.ts +20 -25
- package/src/docs/example/docs-submit-demos.ts +48 -48
- package/src/docs/example/docs-toggle-demos.ts +4 -3
- package/src/docs/getting-started/ai-agents.md +50 -0
- package/src/docs/getting-started/components.md +5 -0
- package/src/docs/getting-started/create-a-component.md +136 -0
- package/src/docs/getting-started/dataFlow.md +87 -0
- package/src/docs/getting-started/installation.md +36 -0
- package/src/docs/getting-started/my-first-component.md +227 -0
- package/src/docs/getting-started/start.md +35 -0
- package/src/docs/getting-started/theming.md +253 -0
- package/src/docs/header/header.ts +11 -6
- package/src/docs/home/catalog.ts +1 -1
- package/src/docs/home/home.ts +20 -11
- package/src/docs/layout.ts +12 -13
- package/src/docs/misc/api-configuration.md +79 -0
- package/src/docs/misc/dataProviderKey.md +168 -0
- package/src/docs/misc/docs-mock-api.md +62 -0
- package/src/docs/misc/dynamic-path.md +71 -0
- package/src/docs/misc/endpoint.md +45 -0
- package/src/docs/misc/html-integration.md +14 -0
- package/src/docs/mock-api/api-config-mock.ts +5 -0
- package/src/docs/mock-api/fixtures.ts +0 -278
- package/src/docs/mock-api/flights.ts +89 -0
- package/src/docs/mock-api/router.ts +3 -4
- package/src/docs/mock-api/urls.ts +1 -2
- package/src/docs/navigation/navigation.ts +82 -103
- package/src/docs/navigation/toc.ts +7 -4
- package/src/docs/search/docs-search.json +2804 -5024
- package/src/docs/search/markdown-renderer.ts +31 -8
- package/src/docs/search/page.ts +9 -6
- package/src/docs/search/search.ts +154 -122
- package/src/docs/tailwind/css/docs/content.css +4 -5
- package/src/tsconfig.json +11 -5
- package/src/tsconfig.tsbuildinfo +1 -1
- package/vite.config.mts +11 -2
- package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
- package/ai/AGENTS.md +0 -56
- package/ai/cursor/rules/concorde-menu.mdc +0 -15
- package/ai/cursor/rules/concorde-scope.mdc +0 -14
- package/ai/cursor/rules/concorde-theme.mdc +0 -13
- package/ai/cursor/rules/concorde.mdc +0 -66
- package/ai/jetbrains/rules/concorde.md +0 -53
- package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
- package/ai/skills/concorde-imports/SKILL.md +0 -78
- package/ai/skills/concorde-menu/SKILL.md +0 -74
- package/ai/skills/concorde-scope/SKILL.md +0 -70
- package/ai/skills/concorde-theme/SKILL.md +0 -57
- package/docs/assets/index-CD4WyL6o.css +0 -1
- package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
- package/src/docs/_core-concept/overview.md +0 -57
- package/src/docs/_core-concept/subscriber.md +0 -75
- package/src/docs/_decorators/ancestor-attribute.md +0 -128
- package/src/docs/_decorators/auto-subscribe.md +0 -202
- package/src/docs/_decorators/bind.md +0 -167
- package/src/docs/_decorators/get.md +0 -162
- package/src/docs/_decorators/handle.md +0 -175
- package/src/docs/_decorators/on-assign.md +0 -390
- package/src/docs/_decorators/patch.md +0 -70
- package/src/docs/_decorators/post.md +0 -146
- package/src/docs/_decorators/publish.md +0 -55
- package/src/docs/_decorators/put.md +0 -70
- package/src/docs/_decorators/subscribe.md +0 -100
- package/src/docs/_decorators/wait-for-ancestors.md +0 -163
- package/src/docs/_directives/sub.md +0 -91
- package/src/docs/_getting-started/ai-agents.md +0 -76
- package/src/docs/_getting-started/concorde-manual-install.md +0 -133
- package/src/docs/_getting-started/concorde-outside.md +0 -33
- package/src/docs/_getting-started/my-first-subscriber.md +0 -120
- package/src/docs/_getting-started/pubsub.md +0 -37
- package/src/docs/_misc/formelement-subscriber-removal.md +0 -115
- package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
- package/src/docs/example/docs-joke-demos.ts +0 -297
- /package/{src/docs/_getting-started → docs/docs/getting-started}/components.md +0 -0
- /package/{src/docs/_getting-started → docs/docs/getting-started}/theming.md +0 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Divider
|
|
2
|
+
|
|
3
|
+
**`sonic-divider`** draws a horizontal or vertical rule with optional **centered label** copy. Use it to separate sections in forms, cards, and **`sonic-menu`**. Set **`label`** for simple HTML captions or use the **default slot** for richer markup; default **`align`** is **`center`** and default **`lineStyle`** is **`solid`**.
|
|
4
|
+
|
|
5
|
+
## Basic example
|
|
6
|
+
|
|
7
|
+
A bare divider is a full-width line with vertical margin. Omit **`size`** to use the host default spacing (`0.5rem` block margin).
|
|
8
|
+
|
|
9
|
+
<sonic-code>
|
|
10
|
+
<template>
|
|
11
|
+
<sonic-divider></sonic-divider>
|
|
12
|
+
</template>
|
|
13
|
+
</sonic-code>
|
|
14
|
+
|
|
15
|
+
## Label and align
|
|
16
|
+
|
|
17
|
+
**`label`** renders inside the line (as HTML). **`align`** controls which side(s) of the line remain visible: **`left`** drops the leading segment, **`right`** drops the trailing segment, **`center`** keeps both.
|
|
18
|
+
|
|
19
|
+
<sonic-code>
|
|
20
|
+
<template>
|
|
21
|
+
<div class="grid gap-4">
|
|
22
|
+
<sonic-divider label="Default centered label"></sonic-divider>
|
|
23
|
+
<sonic-divider label="Left" align="left"></sonic-divider>
|
|
24
|
+
<sonic-divider label="Center" align="center"></sonic-divider>
|
|
25
|
+
<sonic-divider label="Right" align="right"></sonic-divider>
|
|
26
|
+
</div>
|
|
27
|
+
</template>
|
|
28
|
+
</sonic-code>
|
|
29
|
+
|
|
30
|
+
## Size
|
|
31
|
+
|
|
32
|
+
**`size`** adjusts block margin and label font size. Values follow the shared Concorde scale (`2xs` … `2xl`).
|
|
33
|
+
|
|
34
|
+
<sonic-code>
|
|
35
|
+
<template>
|
|
36
|
+
<div class="grid gap-4">
|
|
37
|
+
<sonic-divider size="2xs" label="2xs"></sonic-divider>
|
|
38
|
+
<sonic-divider size="xs" label="xs"></sonic-divider>
|
|
39
|
+
<sonic-divider size="sm" label="sm"></sonic-divider>
|
|
40
|
+
<sonic-divider size="md" label="md"></sonic-divider>
|
|
41
|
+
<sonic-divider size="lg" label="lg"></sonic-divider>
|
|
42
|
+
<sonic-divider size="xl" label="xl"></sonic-divider>
|
|
43
|
+
<sonic-divider size="2xl" label="2xl"></sonic-divider>
|
|
44
|
+
</div>
|
|
45
|
+
</template>
|
|
46
|
+
</sonic-code>
|
|
47
|
+
|
|
48
|
+
## Line style
|
|
49
|
+
|
|
50
|
+
**`lineStyle`** sets the stroke of the rule (`solid` · `dashed` · `dotted`). In HTML use the reflected attribute **`linestyle`** (case-insensitive).
|
|
51
|
+
|
|
52
|
+
<sonic-code>
|
|
53
|
+
<template>
|
|
54
|
+
<div class="grid gap-4">
|
|
55
|
+
<sonic-divider label="Solid"></sonic-divider>
|
|
56
|
+
<sonic-divider label="Dashed" lineStyle="dashed"></sonic-divider>
|
|
57
|
+
<sonic-divider label="Dotted" lineStyle="dotted"></sonic-divider>
|
|
58
|
+
</div>
|
|
59
|
+
</template>
|
|
60
|
+
</sonic-code>
|
|
61
|
+
|
|
62
|
+
## Vertical and margin
|
|
63
|
+
|
|
64
|
+
Set **`vertical`** for a column rule (for example between toolbar actions). **`noMargin`** removes host margin when a parent layout already provides spacing.
|
|
65
|
+
|
|
66
|
+
<sonic-code>
|
|
67
|
+
<template>
|
|
68
|
+
<div class="flex items-stretch gap-2" style="min-height: 3rem;">
|
|
69
|
+
<span class="flex items-center px-2">Before</span>
|
|
70
|
+
<sonic-divider vertical noMargin></sonic-divider>
|
|
71
|
+
<span class="flex items-center px-2">After</span>
|
|
72
|
+
</div>
|
|
73
|
+
</template>
|
|
74
|
+
</sonic-code>
|
|
75
|
+
|
|
76
|
+
## Default slot
|
|
77
|
+
|
|
78
|
+
Slotted content replaces or augments **`label`**. Useful for badges, icons, or mixed markup in menus.
|
|
79
|
+
|
|
80
|
+
<sonic-code>
|
|
81
|
+
<template>
|
|
82
|
+
<sonic-divider>
|
|
83
|
+
<span class="mr-2">Departures</span>
|
|
84
|
+
<sonic-badge type="danger">+25</sonic-badge>
|
|
85
|
+
</sonic-divider>
|
|
86
|
+
</template>
|
|
87
|
+
</sonic-code>
|
|
88
|
+
|
|
89
|
+
## Inside typed cards
|
|
90
|
+
|
|
91
|
+
On **`sonic-card`** with semantic **`type`** (`primary` · `warning` · `danger` · `info` · `success`), the rule uses the card’s text color at reduced opacity so it stays visible on tinted surfaces. **`label`** and slotted captions use the same foreground color as surrounding copy.
|
|
92
|
+
|
|
93
|
+
<sonic-code>
|
|
94
|
+
<template>
|
|
95
|
+
<div class="grid gap-4 max-w-xl">
|
|
96
|
+
<sonic-card type="danger">
|
|
97
|
+
<div>CN 001 is cancelled.</div>
|
|
98
|
+
<sonic-divider label="Affected passengers"></sonic-divider>
|
|
99
|
+
<ul class="m-0 pl-5 text-sm">
|
|
100
|
+
<li>Ada Lindqvist</li>
|
|
101
|
+
<li>Captain Leo Marchand</li>
|
|
102
|
+
</ul>
|
|
103
|
+
</sonic-card>
|
|
104
|
+
<sonic-card type="info">
|
|
105
|
+
<div>Aircraft maintenance is scheduled for tonight.</div>
|
|
106
|
+
<sonic-divider></sonic-divider>
|
|
107
|
+
<div class="opacity-60">Expected downtime: about 15 minutes.</div>
|
|
108
|
+
</sonic-card>
|
|
109
|
+
</div>
|
|
110
|
+
</template>
|
|
111
|
+
</sonic-code>
|
|
112
|
+
|
|
113
|
+
## API reference
|
|
114
|
+
|
|
115
|
+
| Attribute | Values | Description |
|
|
116
|
+
|----------|---------|-------------|
|
|
117
|
+
| `label` | string (HTML) | Caption centered on the rule; combined with default-slot content when both are set |
|
|
118
|
+
| `align` | `left` · `center` · `right` (default `center`) | Hides the leading or trailing line segment for left/right alignment |
|
|
119
|
+
| `size` | `2xs` … `2xl` · `inherit` | Vertical margin and label `font-size`; omit for host defaults |
|
|
120
|
+
| `lineStyle` | `solid` · `dashed` · `dotted` (default `solid`) | Stroke style of the rule (HTML attribute `linestyle`) |
|
|
121
|
+
| `vertical` | boolean | Renders a vertical rule; swap block/inline margins |
|
|
122
|
+
| `noMargin` | boolean | Sets host margin to `0` |
|
|
123
|
+
|
|
124
|
+
| Slot | Description |
|
|
125
|
+
|------|-------------|
|
|
126
|
+
| *(default)* | Label markup when **`label`** is insufficient or empty |
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Checkbox
|
|
2
|
+
|
|
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
|
+
|
|
7
|
+
<sonic-code>
|
|
8
|
+
<template>
|
|
9
|
+
<sonic-checkbox>
|
|
10
|
+
Notify me of gate changes
|
|
11
|
+
<span slot="description">One message per change, no spam.</span>
|
|
12
|
+
</sonic-checkbox>
|
|
13
|
+
</template>
|
|
14
|
+
</sonic-code>
|
|
15
|
+
|
|
16
|
+
## Size
|
|
17
|
+
|
|
18
|
+
With no `size`, the checkbox follows `md` (1rem).
|
|
19
|
+
|
|
20
|
+
<sonic-code>
|
|
21
|
+
<template>
|
|
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>
|
|
31
|
+
</template>
|
|
32
|
+
</sonic-code>
|
|
33
|
+
|
|
34
|
+
## Checked and disabled
|
|
35
|
+
|
|
36
|
+
`checked` sets the initial state. `disabled` blocks interaction and dims the control.
|
|
37
|
+
|
|
38
|
+
<sonic-code>
|
|
39
|
+
<template>
|
|
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>
|
|
46
|
+
</template>
|
|
47
|
+
</sonic-code>
|
|
48
|
+
|
|
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
|
+
|
|
53
|
+
<sonic-code>
|
|
54
|
+
<template>
|
|
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>
|
|
61
|
+
</template>
|
|
62
|
+
</sonic-code>
|
|
63
|
+
|
|
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
|
+
|
|
68
|
+
<sonic-code>
|
|
69
|
+
<template>
|
|
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>
|
|
75
|
+
</template>
|
|
76
|
+
</sonic-code>
|
|
77
|
+
|
|
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
|
+
|
|
82
|
+
<sonic-code>
|
|
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>
|
|
91
|
+
</div>
|
|
92
|
+
<div>Selected: <sonic-value dataProvider="checkbox-check-all-demo" key="alerts"></sonic-value></div>
|
|
93
|
+
</div>
|
|
94
|
+
</template>
|
|
95
|
+
</sonic-code>
|
|
96
|
+
|
|
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` |
|
|
119
|
+
|
|
120
|
+
| Slot | Description |
|
|
121
|
+
|------|-------------|
|
|
122
|
+
| *(default)* | Label content (text, links) |
|
|
123
|
+
| `description` | Helper text under the label |
|
|
124
|
+
|
|
125
|
+
Fires a `change` event on each click.
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Fieldset
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
## Basic example
|
|
6
|
+
|
|
7
|
+
<sonic-code>
|
|
8
|
+
<template>
|
|
9
|
+
<sonic-fieldset>
|
|
10
|
+
<sonic-legend label="Passenger contact"></sonic-legend>
|
|
11
|
+
<sonic-form-layout>
|
|
12
|
+
<sonic-input autocomplete="email" label="Email" name="email" type="email"></sonic-input>
|
|
13
|
+
<sonic-input autocomplete="tel" label="Phone" name="phone" type="tel"></sonic-input>
|
|
14
|
+
</sonic-form-layout>
|
|
15
|
+
</sonic-fieldset>
|
|
16
|
+
</template>
|
|
17
|
+
</sonic-code>
|
|
18
|
+
|
|
19
|
+
## Variant
|
|
20
|
+
|
|
21
|
+
With no `variant`, the fieldset is `default` (bordered). `ghost` and `shadow` hide the border; `shadow` adds `--sc-shadow-lg`.
|
|
22
|
+
|
|
23
|
+
<sonic-code>
|
|
24
|
+
<template>
|
|
25
|
+
<div class="grid gap-4">
|
|
26
|
+
<sonic-fieldset variant="default">
|
|
27
|
+
<sonic-legend label="Default"></sonic-legend>
|
|
28
|
+
<sonic-input label="Field" name="a"></sonic-input>
|
|
29
|
+
</sonic-fieldset>
|
|
30
|
+
<sonic-fieldset variant="ghost">
|
|
31
|
+
<sonic-legend label="Ghost"></sonic-legend>
|
|
32
|
+
<sonic-input label="Field" name="b"></sonic-input>
|
|
33
|
+
</sonic-fieldset>
|
|
34
|
+
<sonic-fieldset variant="shadow">
|
|
35
|
+
<sonic-legend label="Shadow"></sonic-legend>
|
|
36
|
+
<sonic-input label="Field" name="c"></sonic-input>
|
|
37
|
+
</sonic-fieldset>
|
|
38
|
+
</div>
|
|
39
|
+
</template>
|
|
40
|
+
</sonic-code>
|
|
41
|
+
|
|
42
|
+
## Tight
|
|
43
|
+
|
|
44
|
+
`tight` removes horizontal padding, side borders and rounding, for a flat strip inside a parent.
|
|
45
|
+
|
|
46
|
+
<sonic-code>
|
|
47
|
+
<template>
|
|
48
|
+
<sonic-fieldset tight variant="ghost">
|
|
49
|
+
<sonic-legend label="Tight fieldset"></sonic-legend>
|
|
50
|
+
<sonic-input label="Field" name="tight"></sonic-input>
|
|
51
|
+
</sonic-fieldset>
|
|
52
|
+
</template>
|
|
53
|
+
</sonic-code>
|
|
54
|
+
|
|
55
|
+
## Legend
|
|
56
|
+
|
|
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.
|
|
58
|
+
|
|
59
|
+
<sonic-code>
|
|
60
|
+
<template>
|
|
61
|
+
<div class="grid gap-4">
|
|
62
|
+
<sonic-fieldset>
|
|
63
|
+
<sonic-legend label="Attributes" description="Short description via attributes"></sonic-legend>
|
|
64
|
+
<sonic-input label="Field" name="attr"></sonic-input>
|
|
65
|
+
</sonic-fieldset>
|
|
66
|
+
<sonic-fieldset>
|
|
67
|
+
<sonic-legend iconLibrary="iconoir" iconName="pin-alt">
|
|
68
|
+
Custom title in the default slot
|
|
69
|
+
<sonic-legend-description>Description via sonic-legend-description</sonic-legend-description>
|
|
70
|
+
</sonic-legend>
|
|
71
|
+
<sonic-input label="Field" name="slot"></sonic-input>
|
|
72
|
+
</sonic-fieldset>
|
|
73
|
+
</div>
|
|
74
|
+
</template>
|
|
75
|
+
</sonic-code>
|
|
76
|
+
|
|
77
|
+
## Shorthand legend
|
|
78
|
+
|
|
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.
|
|
80
|
+
|
|
81
|
+
<sonic-code>
|
|
82
|
+
<template>
|
|
83
|
+
<sonic-fieldset
|
|
84
|
+
label="Crew profile"
|
|
85
|
+
description="Basic crew member fields"
|
|
86
|
+
iconLibrary="iconoir"
|
|
87
|
+
iconName="user"
|
|
88
|
+
>
|
|
89
|
+
<sonic-input label="Display name" name="display_name"></sonic-input>
|
|
90
|
+
</sonic-fieldset>
|
|
91
|
+
</template>
|
|
92
|
+
</sonic-code>
|
|
93
|
+
|
|
94
|
+
## Legend actions
|
|
95
|
+
|
|
96
|
+
`slot="suffix"` on `sonic-legend` aligns menus or icon buttons to the end of the title row.
|
|
97
|
+
|
|
98
|
+
<sonic-code>
|
|
99
|
+
<template>
|
|
100
|
+
<sonic-fieldset>
|
|
101
|
+
<sonic-legend label="Passenger details">
|
|
102
|
+
<sonic-pop class="inline-block" slot="suffix">
|
|
103
|
+
<sonic-button shape="circle" variant="ghost">
|
|
104
|
+
<sonic-icon library="iconoir" size="lg" name="more-vert"></sonic-icon>
|
|
105
|
+
</sonic-button>
|
|
106
|
+
<sonic-menu slot="content" minWidth="12rem">
|
|
107
|
+
<sonic-menu-item>Legal notice</sonic-menu-item>
|
|
108
|
+
<sonic-menu-item>Terms of use</sonic-menu-item>
|
|
109
|
+
</sonic-menu>
|
|
110
|
+
</sonic-pop>
|
|
111
|
+
</sonic-legend>
|
|
112
|
+
<sonic-form-layout>
|
|
113
|
+
<sonic-input autocomplete="family-name" label="Last name" name="last_name"></sonic-input>
|
|
114
|
+
<sonic-input autocomplete="given-name" label="First name" name="first_name"></sonic-input>
|
|
115
|
+
</sonic-form-layout>
|
|
116
|
+
</sonic-fieldset>
|
|
117
|
+
</template>
|
|
118
|
+
</sonic-code>
|
|
119
|
+
|
|
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>
|
|
121
|
+
|
|
122
|
+
## API reference
|
|
123
|
+
|
|
124
|
+
### `sonic-fieldset`
|
|
125
|
+
|
|
126
|
+
| Attribute | Values | Description |
|
|
127
|
+
|----------|---------|-------------|
|
|
128
|
+
| `variant` | `default` · `ghost` · `shadow` (default `default`) | Border and shadow treatment |
|
|
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 |
|
|
138
|
+
|
|
139
|
+
| Slot | Description |
|
|
140
|
+
|------|-------------|
|
|
141
|
+
| *(default)* | Optional `sonic-legend`, then the grouped fields |
|
|
142
|
+
|
|
143
|
+
### `sonic-legend`
|
|
144
|
+
|
|
145
|
+
| Attribute | Values | Description |
|
|
146
|
+
|----------|---------|-------------|
|
|
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 |
|
|
153
|
+
|
|
154
|
+
| Slot | Description |
|
|
155
|
+
|------|-------------|
|
|
156
|
+
| *(default)* | Custom title and `sonic-legend-description` |
|
|
157
|
+
| `suffix` | Trailing actions (menus, icon buttons) |
|
|
158
|
+
|
|
159
|
+
### `sonic-legend-description`
|
|
160
|
+
|
|
161
|
+
No attributes. The default slot holds the muted line under the legend title.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Form actions
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
## Basic example
|
|
6
|
+
|
|
7
|
+
With no attributes, actions align to the start of the row.
|
|
8
|
+
|
|
9
|
+
<sonic-code>
|
|
10
|
+
<template>
|
|
11
|
+
<form>
|
|
12
|
+
<sonic-form-layout>
|
|
13
|
+
<sonic-input label="First name"></sonic-input>
|
|
14
|
+
<sonic-input label="Last name"></sonic-input>
|
|
15
|
+
<sonic-form-actions>
|
|
16
|
+
<sonic-button type="success"><sonic-icon name="check" library="iconoir"></sonic-icon> Check in</sonic-button>
|
|
17
|
+
<sonic-button type="danger" variant="ghost"><sonic-icon name="undo" library="iconoir"></sonic-icon> Cancel</sonic-button>
|
|
18
|
+
</sonic-form-actions>
|
|
19
|
+
</sonic-form-layout>
|
|
20
|
+
</form>
|
|
21
|
+
</template>
|
|
22
|
+
</sonic-code>
|
|
23
|
+
|
|
24
|
+
## Justify
|
|
25
|
+
|
|
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
|
+
|
|
28
|
+
<sonic-code>
|
|
29
|
+
<template>
|
|
30
|
+
<form>
|
|
31
|
+
<sonic-form-layout>
|
|
32
|
+
<sonic-input label="First name"></sonic-input>
|
|
33
|
+
<sonic-input label="Last name"></sonic-input>
|
|
34
|
+
<sonic-form-actions justify="flex-end">
|
|
35
|
+
<sonic-button type="success"><sonic-icon name="check" library="iconoir"></sonic-icon> Submit</sonic-button>
|
|
36
|
+
<sonic-button type="danger" variant="ghost"><sonic-icon name="undo" library="iconoir"></sonic-icon> Cancel</sonic-button>
|
|
37
|
+
</sonic-form-actions>
|
|
38
|
+
</sonic-form-layout>
|
|
39
|
+
</form>
|
|
40
|
+
</template>
|
|
41
|
+
</sonic-code>
|
|
42
|
+
|
|
43
|
+
## Direction
|
|
44
|
+
|
|
45
|
+
`direction` is the CSS `flex-direction` (default `row`). `row-reverse` swaps the visual order but keeps the DOM and focus order.
|
|
46
|
+
|
|
47
|
+
<sonic-code>
|
|
48
|
+
<template>
|
|
49
|
+
<form>
|
|
50
|
+
<sonic-form-layout>
|
|
51
|
+
<sonic-input label="First name"></sonic-input>
|
|
52
|
+
<sonic-input label="Last name"></sonic-input>
|
|
53
|
+
<sonic-form-actions direction="row-reverse">
|
|
54
|
+
<sonic-button type="success"><sonic-icon name="check" library="iconoir"></sonic-icon> Submit</sonic-button>
|
|
55
|
+
<sonic-button type="danger" variant="ghost"><sonic-icon name="undo" library="iconoir"></sonic-icon> Cancel</sonic-button>
|
|
56
|
+
</sonic-form-actions>
|
|
57
|
+
</sonic-form-layout>
|
|
58
|
+
</form>
|
|
59
|
+
</template>
|
|
60
|
+
</sonic-code>
|
|
61
|
+
|
|
62
|
+
## Mixed controls
|
|
63
|
+
|
|
64
|
+
Any content can be slotted, such as a vertical `sonic-divider`. The default `alignItems` (`center`) keeps items of different heights aligned.
|
|
65
|
+
|
|
66
|
+
<sonic-code>
|
|
67
|
+
<template>
|
|
68
|
+
<form>
|
|
69
|
+
<sonic-form-layout>
|
|
70
|
+
<sonic-input label="First name"></sonic-input>
|
|
71
|
+
<sonic-input label="Last name"></sonic-input>
|
|
72
|
+
<sonic-form-actions justify="center">
|
|
73
|
+
<sonic-button type="info" minWidth="12rem">
|
|
74
|
+
<sonic-icon name="nav-arrow-left" library="iconoir" slot="prefix"></sonic-icon>
|
|
75
|
+
Previous step
|
|
76
|
+
</sonic-button>
|
|
77
|
+
<sonic-divider vertical></sonic-divider>
|
|
78
|
+
<sonic-button type="info" minWidth="12rem">
|
|
79
|
+
<sonic-icon name="nav-arrow-right" library="iconoir" slot="suffix"></sonic-icon>
|
|
80
|
+
Next step
|
|
81
|
+
</sonic-button>
|
|
82
|
+
</sonic-form-actions>
|
|
83
|
+
</sonic-form-layout>
|
|
84
|
+
</form>
|
|
85
|
+
</template>
|
|
86
|
+
</sonic-code>
|
|
87
|
+
|
|
88
|
+
## API reference
|
|
89
|
+
|
|
90
|
+
| Attribute | Values | Description |
|
|
91
|
+
|----------|---------|-------------|
|
|
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 |
|
|
95
|
+
|
|
96
|
+
| Slot | Description |
|
|
97
|
+
|------|-------------|
|
|
98
|
+
| *(default)* | Footer controls |
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Form layout
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
## Basic example
|
|
6
|
+
|
|
7
|
+
<sonic-code>
|
|
8
|
+
<template>
|
|
9
|
+
<form>
|
|
10
|
+
<sonic-form-layout>
|
|
11
|
+
<sonic-input autocomplete="family-name" label="Last name" name="last_name"></sonic-input>
|
|
12
|
+
<sonic-input autocomplete="given-name" label="First name" name="first_name"></sonic-input>
|
|
13
|
+
<sonic-select autocomplete="sex" label="Gender" name="gender">
|
|
14
|
+
<option value="" selected="selected">— Select —</option>
|
|
15
|
+
<option value="prefer-not">Prefer not to say</option>
|
|
16
|
+
<option value="male">Male</option>
|
|
17
|
+
<option value="female">Female</option>
|
|
18
|
+
</sonic-select>
|
|
19
|
+
<sonic-input autocomplete="bday" label="Date of birth" name="birth_date" type="date"></sonic-input>
|
|
20
|
+
<sonic-divider></sonic-divider>
|
|
21
|
+
<sonic-input autocomplete="email" label="Email" name="email" type="email"></sonic-input>
|
|
22
|
+
<sonic-input
|
|
23
|
+
autocomplete="email"
|
|
24
|
+
label="Confirm email"
|
|
25
|
+
name="email_confirmation"
|
|
26
|
+
type="email"
|
|
27
|
+
></sonic-input>
|
|
28
|
+
<sonic-input autocomplete="new-password" label="Password" name="password" type="password"></sonic-input>
|
|
29
|
+
<sonic-input
|
|
30
|
+
autocomplete="new-password"
|
|
31
|
+
label="Confirm password"
|
|
32
|
+
name="password_confirmation"
|
|
33
|
+
type="password"
|
|
34
|
+
></sonic-input>
|
|
35
|
+
<sonic-divider></sonic-divider>
|
|
36
|
+
<sonic-textarea label="Special assistance" rows="5"></sonic-textarea>
|
|
37
|
+
<sonic-switch>Add priority boarding</sonic-switch>
|
|
38
|
+
<sonic-checkbox>Subscribe to newsletter</sonic-checkbox>
|
|
39
|
+
<sonic-checkbox>
|
|
40
|
+
I accept the
|
|
41
|
+
<sonic-link href="#" class="underline">terms and conditions</sonic-link>
|
|
42
|
+
</sonic-checkbox>
|
|
43
|
+
<sonic-form-actions>
|
|
44
|
+
<sonic-button type="success">Confirm passenger</sonic-button>
|
|
45
|
+
</sonic-form-actions>
|
|
46
|
+
</sonic-form-layout>
|
|
47
|
+
</form>
|
|
48
|
+
</template>
|
|
49
|
+
</sonic-code>
|
|
50
|
+
|
|
51
|
+
## Responsive columns
|
|
52
|
+
|
|
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.
|
|
54
|
+
|
|
55
|
+
<sonic-code>
|
|
56
|
+
<template>
|
|
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>
|
|
63
|
+
<sonic-form-layout>
|
|
64
|
+
<sonic-divider align="left">Wide host</sonic-divider>
|
|
65
|
+
<sonic-input label="Email" name="email_wide" type="email"></sonic-input>
|
|
66
|
+
<sonic-input label="Confirm email" name="email_confirm_wide" type="email"></sonic-input>
|
|
67
|
+
</sonic-form-layout>
|
|
68
|
+
</div>
|
|
69
|
+
</template>
|
|
70
|
+
</sonic-code>
|
|
71
|
+
|
|
72
|
+
## Full-width children
|
|
73
|
+
|
|
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.
|
|
75
|
+
|
|
76
|
+
<sonic-code>
|
|
77
|
+
<template>
|
|
78
|
+
<sonic-form-layout>
|
|
79
|
+
<sonic-input label="Subject" name="subject"></sonic-input>
|
|
80
|
+
<sonic-textarea label="Details" rows="4"></sonic-textarea>
|
|
81
|
+
<sonic-form-actions>
|
|
82
|
+
<sonic-button type="primary">Send</sonic-button>
|
|
83
|
+
</sonic-form-actions>
|
|
84
|
+
</sonic-form-layout>
|
|
85
|
+
</template>
|
|
86
|
+
</sonic-code>
|
|
87
|
+
|
|
88
|
+
## Custom column wrapper
|
|
89
|
+
|
|
90
|
+
Add the class `form-item-container` to a wrapper element to keep it in the two-column flow like a short field.
|
|
91
|
+
|
|
92
|
+
<sonic-code>
|
|
93
|
+
<template>
|
|
94
|
+
<sonic-form-layout>
|
|
95
|
+
<sonic-input label="From" name="from" placeholder="CDG"></sonic-input>
|
|
96
|
+
<div class="form-item-container">
|
|
97
|
+
<sonic-input label="To" name="to" placeholder="JFK"></sonic-input>
|
|
98
|
+
</div>
|
|
99
|
+
</sonic-form-layout>
|
|
100
|
+
</template>
|
|
101
|
+
</sonic-code>
|
|
102
|
+
|
|
103
|
+
## API reference
|
|
104
|
+
|
|
105
|
+
No attributes.
|
|
106
|
+
|
|
107
|
+
| Slot | Description |
|
|
108
|
+
|------|-------------|
|
|
109
|
+
| *(default)* | Fields and blocks in visual order; short fields and `form-item-container` share rows, everything else spans the full width |
|