@supersoniks/concorde 5.1.2 → 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 +1 -1
- 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 +1 -1
- 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} +11722 -8868
- 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/og-concorde.jpg +0 -0
- package/dist/robots.txt +11 -10
- package/docs/assets/index-CD4WyL6o.css +1 -0
- 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/{core → crawl/core}/components/functional/sdui/sdui-extension-points.html +8 -9
- 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/{core → crawl/core}/components/functional/subscriber/subscriber.html +5 -6
- package/docs/crawl/core/components/functional/value/value.html +51 -0
- package/docs/{core → crawl/core}/components/ui/alert/alert.html +63 -53
- package/docs/{core → crawl/core}/components/ui/alert-messages/alert-messages.html +5 -6
- package/docs/{core → crawl/core}/components/ui/badge/badge.html +33 -33
- package/docs/crawl/core/components/ui/button/button.html +150 -0
- package/docs/crawl/core/components/ui/captcha/captcha.html +112 -0
- package/docs/{core → crawl/core}/components/ui/card/card.html +11 -12
- package/docs/{core → crawl/core}/components/ui/divider/divider.html +14 -14
- 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/{core → crawl/core}/components/ui/form/form-actions/form-actions.html +23 -23
- 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/{core → crawl/core}/components/ui/icon/icon.html +9 -10
- package/docs/crawl/core/components/ui/image/image.html +298 -0
- package/docs/{core → crawl/core}/components/ui/link/link.html +11 -12
- package/docs/crawl/core/components/ui/loader/loader.html +124 -0
- package/docs/{core → crawl/core}/components/ui/menu/menu.html +33 -34
- package/docs/crawl/core/components/ui/modal/modal.html +342 -0
- package/docs/crawl/core/components/ui/pop/pop.html +296 -0
- package/docs/{core → crawl/core}/components/ui/progress/progress.html +7 -8
- 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/{docs/getting-started → crawl/docs/_core-concept}/dataFlow.html +29 -26
- 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/{docs/getting-started → crawl/docs/_getting-started}/ai-agents.html +11 -12
- 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/{docs/getting-started → crawl/docs/_getting-started}/create-a-component.html +14 -11
- package/docs/{docs/getting-started → crawl/docs/_getting-started}/my-first-component.html +22 -13
- 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/{docs/getting-started → crawl/docs/_getting-started}/theming.html +9 -10
- package/docs/{docs/misc → crawl/docs/_misc}/api-configuration.html +18 -18
- package/docs/{docs/misc → crawl/docs/_misc}/dataProviderKey.html +11 -12
- package/docs/{docs/misc → crawl/docs/_misc}/docs-mock-api.html +28 -25
- package/docs/{docs/misc → crawl/docs/_misc}/dynamic-path.html +15 -16
- package/docs/{docs/misc → crawl/docs/_misc}/endpoint.html +15 -16
- package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
- package/docs/{docs/misc → crawl/docs/_misc}/html-integration.html +15 -12
- 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/docs-mock-api-sw.js +223 -58
- package/docs/docs-mock-api-sw.js.map +4 -4
- package/docs/index.html +68 -95
- package/docs/llms-full.txt +3610 -2231
- package/docs/llms.txt +86 -94
- package/docs/robots.txt +10 -11
- package/docs/sitemap.xml +84 -78
- package/docs/src/core/components/functional/date/date.md +231 -91
- package/docs/src/core/components/functional/fetch/fetch.md +83 -66
- package/docs/src/core/components/functional/if/if.md +3 -28
- package/docs/src/core/components/functional/jsonata/jsonata.md +37 -42
- package/docs/src/core/components/functional/list/list.md +43 -99
- package/docs/src/core/components/functional/mix/mix.md +26 -31
- package/docs/src/core/components/functional/queue/queue.md +61 -40
- package/docs/src/core/components/functional/router/router.md +65 -64
- package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
- package/docs/src/core/components/functional/sdui/component-catalog.json +1 -1
- package/docs/src/core/components/functional/sdui/example.json +86 -19
- package/docs/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
- package/docs/src/core/components/functional/sdui/sdui.md +358 -187
- package/docs/src/core/components/functional/states/states.md +61 -86
- package/docs/src/core/components/functional/submit/submit.md +72 -64
- package/docs/src/core/components/functional/value/value.md +22 -34
- package/docs/src/core/components/ui/alert/alert.md +58 -48
- package/docs/src/core/components/ui/badge/badge.md +34 -27
- package/docs/src/core/components/ui/button/button.md +106 -139
- package/docs/src/core/components/ui/captcha/captcha.md +32 -17
- package/docs/src/core/components/ui/card/card.md +6 -6
- package/docs/src/core/components/ui/divider/divider.md +11 -8
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +42 -90
- package/docs/src/core/components/ui/form/fieldset/fieldset.md +75 -31
- package/docs/src/core/components/ui/form/form-actions/form-actions.md +16 -14
- package/docs/src/core/components/ui/form/form-layout/form-layout.md +29 -19
- package/docs/src/core/components/ui/form/input/input.md +95 -95
- package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +29 -0
- package/docs/src/core/components/ui/form/radio/radio.md +34 -55
- package/docs/src/core/components/ui/form/select/select.md +45 -60
- package/docs/src/core/components/ui/form/switch/switch.md +34 -57
- package/docs/src/core/components/ui/form/textarea/textarea.md +38 -55
- package/docs/src/core/components/ui/group/group.md +33 -35
- package/docs/src/core/components/ui/icon/icon.md +4 -4
- package/docs/src/core/components/ui/image/image.md +107 -41
- package/docs/src/core/components/ui/link/link.md +6 -6
- package/docs/src/core/components/ui/loader/loader.md +55 -30
- package/docs/src/core/components/ui/menu/menu.md +27 -27
- package/docs/src/core/components/ui/modal/modal.md +96 -72
- package/docs/src/core/components/ui/pop/pop.md +158 -80
- package/docs/src/core/components/ui/progress/progress.md +2 -2
- package/docs/src/core/components/ui/table/table.md +255 -91
- package/docs/src/core/components/ui/theme/theme.md +36 -11
- package/docs/src/core/components/ui/toast/toast.md +117 -48
- package/docs/src/core/components/ui/tooltip/tooltip.md +62 -27
- package/docs/{docs/getting-started → src/docs/_core-concept}/dataFlow.md +18 -17
- package/docs/src/docs/_core-concept/overview.md +57 -0
- package/docs/src/docs/_core-concept/subscriber.md +75 -0
- package/docs/src/docs/_decorators/ancestor-attribute.md +128 -0
- package/docs/src/docs/_decorators/auto-subscribe.md +202 -0
- package/docs/src/docs/_decorators/bind.md +167 -0
- package/docs/src/docs/_decorators/get.md +162 -0
- package/docs/src/docs/_decorators/handle.md +175 -0
- package/docs/src/docs/_decorators/on-assign.md +390 -0
- package/docs/src/docs/_decorators/patch.md +70 -0
- package/docs/src/docs/_decorators/post.md +146 -0
- package/docs/src/docs/_decorators/publish.md +55 -0
- package/docs/src/docs/_decorators/put.md +70 -0
- package/docs/src/docs/_decorators/subscribe.md +100 -0
- package/docs/src/docs/_decorators/wait-for-ancestors.md +163 -0
- package/docs/src/docs/_directives/sub.md +91 -0
- package/docs/src/docs/{getting-started → _getting-started}/ai-agents.md +3 -3
- package/docs/src/docs/_getting-started/concorde-manual-install.md +133 -0
- package/docs/src/docs/_getting-started/concorde-outside.md +33 -0
- package/docs/{docs/getting-started → src/docs/_getting-started}/create-a-component.md +6 -3
- package/docs/src/docs/{getting-started → _getting-started}/my-first-component.md +14 -5
- package/docs/src/docs/_getting-started/my-first-subscriber.md +120 -0
- package/docs/src/docs/_getting-started/pubsub.md +37 -0
- package/docs/src/docs/{getting-started → _getting-started}/start.md +13 -1
- package/docs/src/docs/{getting-started → _getting-started}/theming.md +2 -2
- package/docs/src/docs/{misc → _misc}/api-configuration.md +12 -10
- package/docs/src/docs/{misc → _misc}/dataProviderKey.md +4 -4
- package/docs/{docs/misc → src/docs/_misc}/docs-mock-api.md +13 -12
- package/docs/{docs/misc → src/docs/_misc}/dynamic-path.md +8 -8
- package/docs/{docs/misc → src/docs/_misc}/endpoint.md +8 -8
- package/docs/src/docs/_misc/formelement-subscriber-removal.md +115 -0
- package/docs/{docs/misc → src/docs/_misc}/html-integration.md +5 -4
- package/docs/src/docs/search/docs-search.json +4375 -2420
- package/docs/src/tsconfig.declarations.json +22 -0
- package/docs/src/tsconfig.emit.json +23 -0
- package/docs/src/tsconfig.json +2 -23
- package/gitlab/job_github_mirror.sh +39 -0
- package/index.html +89 -0
- package/package.json +22 -4
- package/public/img/og-concorde.jpg +0 -0
- package/scripts/ai-init.mjs +104 -379
- package/scripts/ai-init.test.mjs +81 -239
- package/scripts/docs-markdown-vite-plugin.ts +11 -5
- package/scripts/docs-public-url.mjs +6 -0
- package/scripts/docs.htaccess +7 -0
- package/scripts/generate-cem.mjs +244 -0
- package/scripts/generate-cem.test.mjs +122 -0
- package/scripts/generate-crawl-docs.mjs +29 -5
- package/scripts/generate-sdui-catalog.mjs +11 -10
- package/scripts/github-export.mjs +150 -0
- package/scripts/post-build-docs.js +3 -0
- 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 +1 -1
- package/src/core/components/functional/example/example.ts +3 -1
- package/src/core/components/functional/if/if.ts +0 -0
- package/src/core/components/functional/list/list.demo.ts +0 -0
- package/src/core/components/functional/list/list.md +6 -2
- package/src/core/components/functional/list/list.ts +17 -4
- package/src/core/components/functional/mix/mix.md +0 -0
- package/src/core/components/functional/router/router.demo.ts +0 -0
- 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 +0 -0
- package/src/core/components/functional/sdui/sdui-immutable.spec.ts +74 -0
- 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.ts +0 -0
- 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/value/value.md +0 -0
- 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/captcha/altchaStyles.ts +0 -0
- package/src/core/components/ui/card/card.md +1 -1
- package/src/core/components/ui/form/input/input.md +19 -1
- package/src/core/components/ui/form/input/input.ts +8 -2
- package/src/core/components/ui/form/radio/radio.md +14 -0
- package/src/core/components/ui/image/image.md +17 -17
- package/src/core/components/ui/modal/modal.md +2 -2
- 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/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 +3 -3
- package/src/docs/decorators/bind.md +23 -24
- package/src/docs/docs-location.spec.ts +10 -0
- package/src/docs/docs-location.ts +10 -0
- package/src/docs/example/decorators-demo-bind-demos.ts +11 -28
- package/src/docs/example/docs-toggle-demos.ts +1 -1
- package/src/docs/example/users.ts +0 -0
- package/src/docs/getting-started/ai-agents.md +29 -55
- package/src/docs/getting-started/dataFlow.md +2 -2
- package/src/docs/home/home.ts +3 -1
- 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/navigation/navigation.ts +5 -1
- package/src/docs/search/docs-search.json +358 -58
- package/src/docs/search/markdown-renderer.ts +6 -1
- 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/.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/PLAN-DOCS-AGENTS.md +0 -80
- 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/.htaccess +0 -75
- package/docs/404.html +0 -15
- package/docs/404.md +0 -5
- package/docs/assets/index-BgG6FFPt.js +0 -11765
- package/docs/assets/index-x89XINSG.css +0 -1
- package/docs/core/components/functional/date/date.html +0 -211
- package/docs/core/components/functional/date/date.md +0 -150
- package/docs/core/components/functional/fetch/fetch.html +0 -180
- package/docs/core/components/functional/fetch/fetch.md +0 -108
- package/docs/core/components/functional/if/if.html +0 -65
- package/docs/core/components/functional/if/if.md +0 -34
- package/docs/core/components/functional/jsonata/jsonata.html +0 -110
- package/docs/core/components/functional/jsonata/jsonata.md +0 -61
- package/docs/core/components/functional/list/list.html +0 -198
- package/docs/core/components/functional/list/list.md +0 -121
- package/docs/core/components/functional/mix/mix.html +0 -78
- package/docs/core/components/functional/mix/mix.md +0 -46
- package/docs/core/components/functional/queue/queue.html +0 -155
- package/docs/core/components/functional/queue/queue.md +0 -51
- package/docs/core/components/functional/router/router.html +0 -154
- package/docs/core/components/functional/router/router.md +0 -93
- package/docs/core/components/functional/sdui/sdui-extension-points.md +0 -94
- package/docs/core/components/functional/sdui/sdui.html +0 -397
- package/docs/core/components/functional/sdui/sdui.md +0 -307
- package/docs/core/components/functional/states/states.html +0 -141
- package/docs/core/components/functional/states/states.md +0 -112
- package/docs/core/components/functional/submit/submit.html +0 -178
- package/docs/core/components/functional/submit/submit.md +0 -106
- package/docs/core/components/functional/subscriber/subscriber.md +0 -91
- package/docs/core/components/functional/translation/translation.html +0 -60
- package/docs/core/components/functional/translation/translation.md +0 -38
- package/docs/core/components/functional/value/value.html +0 -81
- package/docs/core/components/functional/value/value.md +0 -47
- package/docs/core/components/ui/alert/alert.md +0 -186
- package/docs/core/components/ui/alert-messages/alert-messages.md +0 -85
- package/docs/core/components/ui/badge/badge.md +0 -181
- package/docs/core/components/ui/button/button.html +0 -309
- package/docs/core/components/ui/button/button.md +0 -216
- package/docs/core/components/ui/captcha/captcha.html +0 -80
- package/docs/core/components/ui/captcha/captcha.md +0 -56
- package/docs/core/components/ui/card/card.md +0 -215
- package/docs/core/components/ui/divider/divider.md +0 -126
- package/docs/core/components/ui/form/checkbox/checkbox.html +0 -200
- package/docs/core/components/ui/form/checkbox/checkbox.md +0 -125
- package/docs/core/components/ui/form/fieldset/fieldset.html +0 -238
- package/docs/core/components/ui/form/fieldset/fieldset.md +0 -161
- package/docs/core/components/ui/form/form-actions/form-actions.md +0 -98
- package/docs/core/components/ui/form/form-layout/form-layout.html +0 -115
- package/docs/core/components/ui/form/form-layout/form-layout.md +0 -109
- package/docs/core/components/ui/form/input/input.html +0 -235
- package/docs/core/components/ui/form/input/input.md +0 -142
- package/docs/core/components/ui/form/radio/radio.html +0 -144
- package/docs/core/components/ui/form/radio/radio.md +0 -78
- package/docs/core/components/ui/form/select/select.html +0 -178
- package/docs/core/components/ui/form/select/select.md +0 -86
- package/docs/core/components/ui/form/switch/switch.html +0 -146
- package/docs/core/components/ui/form/switch/switch.md +0 -80
- package/docs/core/components/ui/form/textarea/textarea.html +0 -162
- package/docs/core/components/ui/form/textarea/textarea.md +0 -82
- package/docs/core/components/ui/group/group.html +0 -113
- package/docs/core/components/ui/group/group.md +0 -77
- package/docs/core/components/ui/icon/icon.md +0 -214
- package/docs/core/components/ui/image/image.html +0 -194
- package/docs/core/components/ui/image/image.md +0 -167
- package/docs/core/components/ui/link/link.md +0 -81
- package/docs/core/components/ui/loader/loader.html +0 -114
- package/docs/core/components/ui/loader/loader.md +0 -87
- package/docs/core/components/ui/menu/menu.md +0 -370
- package/docs/core/components/ui/modal/modal.html +0 -324
- package/docs/core/components/ui/modal/modal.md +0 -211
- package/docs/core/components/ui/pop/pop.html +0 -250
- package/docs/core/components/ui/pop/pop.md +0 -216
- package/docs/core/components/ui/progress/progress.md +0 -109
- package/docs/core/components/ui/table/table.html +0 -333
- package/docs/core/components/ui/table/table.md +0 -267
- package/docs/core/components/ui/theme/theme.html +0 -116
- package/docs/core/components/ui/theme/theme.md +0 -97
- package/docs/core/components/ui/toast/toast.html +0 -185
- package/docs/core/components/ui/toast/toast.md +0 -147
- package/docs/core/components/ui/tooltip/tooltip.html +0 -112
- package/docs/core/components/ui/tooltip/tooltip.md +0 -89
- package/docs/docs/decorators/ancestor-attribute.html +0 -71
- package/docs/docs/decorators/ancestor-attribute.md +0 -59
- package/docs/docs/decorators/auto-subscribe.html +0 -61
- package/docs/docs/decorators/auto-subscribe.md +0 -40
- package/docs/docs/decorators/bind.html +0 -86
- package/docs/docs/decorators/bind.md +0 -77
- package/docs/docs/decorators/get.html +0 -166
- package/docs/docs/decorators/get.md +0 -160
- package/docs/docs/decorators/handle.html +0 -139
- package/docs/docs/decorators/handle.md +0 -119
- package/docs/docs/decorators/on-assign.html +0 -72
- package/docs/docs/decorators/on-assign.md +0 -63
- package/docs/docs/decorators/patch.html +0 -76
- package/docs/docs/decorators/patch.md +0 -44
- package/docs/docs/decorators/post.html +0 -150
- package/docs/docs/decorators/post.md +0 -134
- package/docs/docs/decorators/publish.html +0 -74
- package/docs/docs/decorators/publish.md +0 -56
- package/docs/docs/decorators/put.html +0 -83
- package/docs/docs/decorators/put.md +0 -51
- package/docs/docs/decorators/subscribe.html +0 -91
- package/docs/docs/decorators/subscribe.md +0 -87
- package/docs/docs/decorators/wait-for-ancestors.html +0 -82
- package/docs/docs/decorators/wait-for-ancestors.md +0 -76
- package/docs/docs/directives/sub.html +0 -79
- package/docs/docs/directives/sub.md +0 -75
- package/docs/docs/directives/t.html +0 -91
- package/docs/docs/directives/t.md +0 -73
- package/docs/docs/getting-started/ai-agents.md +0 -76
- package/docs/docs/getting-started/components.html +0 -27
- package/docs/docs/getting-started/components.md +0 -5
- package/docs/docs/getting-started/installation.html +0 -69
- package/docs/docs/getting-started/installation.md +0 -36
- package/docs/docs/getting-started/my-first-component.md +0 -227
- package/docs/docs/getting-started/start.html +0 -47
- package/docs/docs/getting-started/start.md +0 -35
- package/docs/docs/getting-started/theming.md +0 -253
- package/docs/docs/index.html +0 -99
- package/docs/docs/misc/api-configuration.md +0 -79
- package/docs/docs/misc/dataProviderKey.md +0 -168
- package/docs/hubs/decorators.html +0 -443
- package/docs/hubs/form-components.html +0 -404
- package/docs/hubs/remote-data.html +0 -371
- 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 +0 -28
- package/docs/index.md +0 -22
- package/docs/src/core/components/functional/translation/translation.md +0 -38
- package/docs/src/docs/decorators/ancestor-attribute.md +0 -59
- package/docs/src/docs/decorators/auto-subscribe.md +0 -40
- package/docs/src/docs/decorators/bind.md +0 -77
- package/docs/src/docs/decorators/get.md +0 -160
- package/docs/src/docs/decorators/handle.md +0 -119
- package/docs/src/docs/decorators/on-assign.md +0 -63
- package/docs/src/docs/decorators/patch.md +0 -44
- package/docs/src/docs/decorators/post.md +0 -134
- package/docs/src/docs/decorators/publish.md +0 -56
- package/docs/src/docs/decorators/put.md +0 -51
- package/docs/src/docs/decorators/subscribe.md +0 -87
- package/docs/src/docs/decorators/wait-for-ancestors.md +0 -76
- package/docs/src/docs/directives/sub.md +0 -75
- package/docs/src/docs/directives/t.md +0 -73
- package/docs/src/docs/getting-started/components.md +0 -5
- package/docs/src/docs/getting-started/create-a-component.md +0 -136
- package/docs/src/docs/getting-started/dataFlow.md +0 -87
- package/docs/src/docs/getting-started/installation.md +0 -36
- package/docs/src/docs/misc/docs-mock-api.md +0 -62
- package/docs/src/docs/misc/dynamic-path.md +0 -71
- package/docs/src/docs/misc/endpoint.md +0 -45
- package/docs/src/docs/misc/html-integration.md +0 -14
- /package/{docs → dist}/img/concorde/plane_01.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_02.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_03.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_04.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_05.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_06.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_07.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_08.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_09.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_10.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_11.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_12.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_13.jpg +0 -0
|
@@ -6,7 +6,7 @@ Alerts **surface important feedback** inline—errors, confirmations, or context
|
|
|
6
6
|
|
|
7
7
|
<sonic-code>
|
|
8
8
|
<template>
|
|
9
|
-
<sonic-alert status="error" label="
|
|
9
|
+
<sonic-alert status="error" label="Email error" text="This address is already in use" background></sonic-alert>
|
|
10
10
|
</template>
|
|
11
11
|
</sonic-code>
|
|
12
12
|
|
|
@@ -17,11 +17,11 @@ Color and icon follow `status`. With no `status`, behavior is `default`.
|
|
|
17
17
|
<sonic-code>
|
|
18
18
|
<template>
|
|
19
19
|
<div class="grid gap-4">
|
|
20
|
-
<sonic-alert label="Default">
|
|
21
|
-
<sonic-alert status="success" label="Success">
|
|
22
|
-
<sonic-alert status="error" label="Error">
|
|
23
|
-
<sonic-alert status="warning" label="Warning">
|
|
24
|
-
<sonic-alert status="info" label="Info">
|
|
20
|
+
<sonic-alert label="Default">This address is already in use.</sonic-alert>
|
|
21
|
+
<sonic-alert status="success" label="Success">This address is already in use.</sonic-alert>
|
|
22
|
+
<sonic-alert status="error" label="Error">This address is already in use.</sonic-alert>
|
|
23
|
+
<sonic-alert status="warning" label="Warning">This address is already in use.</sonic-alert>
|
|
24
|
+
<sonic-alert status="info" label="Info">This address is already in use.</sonic-alert>
|
|
25
25
|
</div>
|
|
26
26
|
</template>
|
|
27
27
|
</sonic-code>
|
|
@@ -34,7 +34,7 @@ By default, an alert already in the DOM is **not** announced (no `role` / `aria-
|
|
|
34
34
|
|
|
35
35
|
<sonic-code>
|
|
36
36
|
<template>
|
|
37
|
-
<sonic-alert announce status="success" label="
|
|
37
|
+
<sonic-alert announce status="success" label="Saved" text="Your changes were saved."></sonic-alert>
|
|
38
38
|
</template>
|
|
39
39
|
</sonic-code>
|
|
40
40
|
|
|
@@ -44,50 +44,48 @@ By default, an alert already in the DOM is **not** announced (no `role` / `aria-
|
|
|
44
44
|
|
|
45
45
|
<sonic-code>
|
|
46
46
|
<template>
|
|
47
|
-
<sonic-alert status="info" noIcon label="No icon" text="
|
|
47
|
+
<sonic-alert status="info" noIcon label="No icon" text="Informational message."></sonic-alert>
|
|
48
48
|
</template>
|
|
49
49
|
</sonic-code>
|
|
50
50
|
|
|
51
51
|
## Custom icon slot
|
|
52
52
|
|
|
53
|
-
Project any markup into **`slot="icon"`** (
|
|
53
|
+
Project any markup into **`slot="icon"`** (emoji, image, custom component). Keep it decorative with `aria-hidden="true"` when the message text already conveys meaning.
|
|
54
54
|
|
|
55
55
|
<sonic-code>
|
|
56
56
|
<template>
|
|
57
|
-
<sonic-alert status="success" label="
|
|
58
|
-
<
|
|
59
|
-
You
|
|
57
|
+
<sonic-alert status="success" label="Achievement unlocked" background>
|
|
58
|
+
<span slot="icon" aria-hidden="true" class="text-lg leading-none">🎉</span>
|
|
59
|
+
You unlocked a new badge.
|
|
60
60
|
</sonic-alert>
|
|
61
61
|
</template>
|
|
62
62
|
</sonic-code>
|
|
63
63
|
|
|
64
|
-
##
|
|
65
|
-
|
|
66
|
-
Default size is `md` (omit the `size` attribute). `inherit` follows the parent font size.
|
|
64
|
+
## Sizes
|
|
67
65
|
|
|
68
66
|
<sonic-code>
|
|
69
67
|
<template>
|
|
70
68
|
<div class="grid gap-4">
|
|
71
|
-
<sonic-alert status="error" label="
|
|
72
|
-
|
|
69
|
+
<sonic-alert status="error" label="Email error" size="2xs">
|
|
70
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
73
71
|
</sonic-alert>
|
|
74
|
-
<sonic-alert status="error" label="
|
|
75
|
-
|
|
72
|
+
<sonic-alert status="error" label="Email error" size="xs">
|
|
73
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
76
74
|
</sonic-alert>
|
|
77
|
-
<sonic-alert status="error" label="
|
|
78
|
-
|
|
75
|
+
<sonic-alert status="error" label="Email error" size="sm">
|
|
76
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
79
77
|
</sonic-alert>
|
|
80
|
-
<sonic-alert status="error" label="
|
|
81
|
-
|
|
78
|
+
<sonic-alert status="error" label="Email error">
|
|
79
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
82
80
|
</sonic-alert>
|
|
83
|
-
<sonic-alert status="error" label="
|
|
84
|
-
|
|
81
|
+
<sonic-alert status="error" label="Email error" size="lg">
|
|
82
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
85
83
|
</sonic-alert>
|
|
86
|
-
<sonic-alert status="error" label="
|
|
87
|
-
|
|
84
|
+
<sonic-alert status="error" label="Email error" size="xl">
|
|
85
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
88
86
|
</sonic-alert>
|
|
89
|
-
<sonic-alert status="error" label="
|
|
90
|
-
|
|
87
|
+
<sonic-alert status="error" label="Email error" size="2xl">
|
|
88
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
91
89
|
</sonic-alert>
|
|
92
90
|
</div>
|
|
93
91
|
</template>
|
|
@@ -99,10 +97,10 @@ Rich content in the slot (buttons, links).
|
|
|
99
97
|
|
|
100
98
|
<sonic-code>
|
|
101
99
|
<template>
|
|
102
|
-
<sonic-alert status="info" label="
|
|
103
|
-
|
|
100
|
+
<sonic-alert status="info" label="New messages !">
|
|
101
|
+
You have 2 unread messages<br />
|
|
104
102
|
<div class="flex gap-2 mt-1">
|
|
105
|
-
<sonic-button variant="outline" type="info" size="xs">
|
|
103
|
+
<sonic-button variant="outline" type="info" size="xs">See messages</sonic-button>
|
|
106
104
|
<sonic-button variant="ghost" type="info" size="xs">Dismiss</sonic-button>
|
|
107
105
|
</div>
|
|
108
106
|
</sonic-alert>
|
|
@@ -116,18 +114,18 @@ Tinted background from the `status` color (`color-mix` on `currentColor`).
|
|
|
116
114
|
<sonic-code>
|
|
117
115
|
<template>
|
|
118
116
|
<div class="grid gap-4">
|
|
119
|
-
<sonic-alert background label="
|
|
120
|
-
<sonic-alert status="success" background label="
|
|
121
|
-
|
|
117
|
+
<sonic-alert background label="Lorem ipsum dolor">This address is already in use.</sonic-alert>
|
|
118
|
+
<sonic-alert status="success" background label="Lorem ipsum dolor">
|
|
119
|
+
This address is already in use.
|
|
122
120
|
</sonic-alert>
|
|
123
|
-
<sonic-alert status="error" background label="
|
|
124
|
-
|
|
121
|
+
<sonic-alert status="error" background label="Lorem ipsum dolor">
|
|
122
|
+
This address is already in use.
|
|
125
123
|
</sonic-alert>
|
|
126
|
-
<sonic-alert status="warning" background label="
|
|
127
|
-
|
|
124
|
+
<sonic-alert status="warning" background label="Lorem ipsum dolor">
|
|
125
|
+
This address is already in use.
|
|
128
126
|
</sonic-alert>
|
|
129
|
-
<sonic-alert status="info" background label="
|
|
130
|
-
|
|
127
|
+
<sonic-alert status="info" background label="Lorem ipsum dolor">
|
|
128
|
+
This address is already in use.
|
|
131
129
|
</sonic-alert>
|
|
132
130
|
</div>
|
|
133
131
|
</template>
|
|
@@ -139,10 +137,22 @@ Tinted background from the `status` color (`color-mix` on `currentColor`).
|
|
|
139
137
|
|
|
140
138
|
<sonic-code>
|
|
141
139
|
<template>
|
|
142
|
-
<sonic-alert status="info" class="mb-3" dismissible label="
|
|
140
|
+
<sonic-alert status="info" class="mb-3" dismissible label="This address is already in use.">
|
|
141
|
+
</sonic-alert>
|
|
142
|
+
<sonic-alert class="mb-3" dismissible background label="Lorem ipsum dolor">
|
|
143
|
+
This address is already in use.
|
|
144
|
+
</sonic-alert>
|
|
145
|
+
<sonic-alert status="success" class="mb-3" dismissible background label="Lorem ipsum dolor">
|
|
146
|
+
This address is already in use.
|
|
147
|
+
</sonic-alert>
|
|
148
|
+
<sonic-alert status="error" class="mb-3" dismissible background label="Lorem ipsum dolor">
|
|
149
|
+
This address is already in use.
|
|
150
|
+
</sonic-alert>
|
|
151
|
+
<sonic-alert status="warning" class="mb-3" dismissible background label="Lorem ipsum dolor">
|
|
152
|
+
This address is already in use.
|
|
143
153
|
</sonic-alert>
|
|
144
|
-
<sonic-alert class="mb-3" dismissible background label="
|
|
145
|
-
|
|
154
|
+
<sonic-alert status="info" class="mb-3" dismissible background label="Lorem ipsum dolor">
|
|
155
|
+
This address is already in use.
|
|
146
156
|
</sonic-alert>
|
|
147
157
|
</template>
|
|
148
158
|
</sonic-code>
|
|
@@ -158,10 +168,10 @@ With **`dismissForever`**, dismissal is stored in `localStorage` (key `sonic-ale
|
|
|
158
168
|
dismissible
|
|
159
169
|
background
|
|
160
170
|
dismissForever
|
|
161
|
-
label="
|
|
171
|
+
label="Lorem ipsum dolor"
|
|
162
172
|
id="addressUniqueId"
|
|
163
173
|
>
|
|
164
|
-
|
|
174
|
+
This address is already in use.
|
|
165
175
|
</sonic-alert>
|
|
166
176
|
</template>
|
|
167
177
|
</sonic-code>
|
|
@@ -170,10 +180,10 @@ With **`dismissForever`**, dismissal is stored in `localStorage` (key `sonic-ale
|
|
|
170
180
|
|
|
171
181
|
| Attribute | Values | Description |
|
|
172
182
|
|----------|---------|-------------|
|
|
173
|
-
| `status` | `default`
|
|
183
|
+
| `status` | `default` · `info` · `success` · `warning` · `error` | Color and default icon |
|
|
174
184
|
| `label` | string | Title (plain text) |
|
|
175
185
|
| `text` | string | Short body (plain text), rendered before the slot |
|
|
176
|
-
| `size` | `2xs` … `2xl`
|
|
186
|
+
| `size` | `2xs` … `2xl` | Corner radius and typography |
|
|
177
187
|
| `background` | boolean | Tinted background (`color-mix` on status color) |
|
|
178
188
|
| `dismissible` | boolean | Close control; removes the element from the DOM |
|
|
179
189
|
| `dismissForever` | boolean | Persists dismissal in `localStorage`; requires **`id`** |
|
|
@@ -24,27 +24,34 @@ Badges are **compact, non-interactive** labels for status, counts, or categories
|
|
|
24
24
|
|
|
25
25
|
Default **`variant`** is filled. **`outline`** — border and text in the `type` color. **`ghost`** — text only, no padding (except in forced-colors mode).
|
|
26
26
|
|
|
27
|
+
### Outline
|
|
28
|
+
|
|
27
29
|
<sonic-code>
|
|
28
30
|
<template>
|
|
29
|
-
<div class="
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
</
|
|
31
|
+
<div class="flex items-center flex-wrap gap-3">
|
|
32
|
+
<sonic-badge variant="outline">Default</sonic-badge>
|
|
33
|
+
<sonic-badge variant="outline" type="primary">Primary</sonic-badge>
|
|
34
|
+
<sonic-badge variant="outline" type="neutral">Neutral</sonic-badge>
|
|
35
|
+
<sonic-badge variant="outline" type="warning">Warning</sonic-badge>
|
|
36
|
+
<sonic-badge variant="outline" type="info">Info</sonic-badge>
|
|
37
|
+
<sonic-badge variant="outline" type="success">Success</sonic-badge>
|
|
38
|
+
<sonic-badge variant="outline" type="danger">Danger</sonic-badge>
|
|
39
|
+
</div>
|
|
40
|
+
</template>
|
|
41
|
+
</sonic-code>
|
|
42
|
+
|
|
43
|
+
### Ghost
|
|
44
|
+
|
|
45
|
+
<sonic-code>
|
|
46
|
+
<template>
|
|
47
|
+
<div class="flex items-center flex-wrap gap-3">
|
|
48
|
+
<sonic-badge variant="ghost">Default</sonic-badge>
|
|
49
|
+
<sonic-badge variant="ghost" type="primary">Primary</sonic-badge>
|
|
50
|
+
<sonic-badge variant="ghost" type="neutral">Neutral</sonic-badge>
|
|
51
|
+
<sonic-badge variant="ghost" type="warning">Warning</sonic-badge>
|
|
52
|
+
<sonic-badge variant="ghost" type="info">Info</sonic-badge>
|
|
53
|
+
<sonic-badge variant="ghost" type="success">Success</sonic-badge>
|
|
54
|
+
<sonic-badge variant="ghost" type="danger">Danger</sonic-badge>
|
|
48
55
|
</div>
|
|
49
56
|
</template>
|
|
50
57
|
</sonic-code>
|
|
@@ -74,11 +81,11 @@ Icons or short text before / after the main label.
|
|
|
74
81
|
<sonic-code>
|
|
75
82
|
<template>
|
|
76
83
|
<sonic-badge type="info" size="sm">
|
|
77
|
-
<sonic-icon slot="prefix" name="
|
|
78
|
-
|
|
84
|
+
<sonic-icon slot="prefix" name="info-empty" library="iconoir"></sonic-icon>
|
|
85
|
+
Info
|
|
79
86
|
</sonic-badge>
|
|
80
87
|
<sonic-badge type="success">
|
|
81
|
-
|
|
88
|
+
Verified
|
|
82
89
|
<sonic-icon slot="suffix" name="check" library="iconoir"></sonic-icon>
|
|
83
90
|
</sonic-badge>
|
|
84
91
|
</template>
|
|
@@ -111,11 +118,11 @@ With `ellipsis`, long labels truncate. The parent must constrain width (`max-wid
|
|
|
111
118
|
<div class="grid grid-cols-2 gap-4 max-w-xl">
|
|
112
119
|
<sonic-badge ellipsis size="sm" variant="outline">
|
|
113
120
|
<sonic-icon slot="prefix" name="info-empty" library="iconoir"></sonic-icon>
|
|
114
|
-
|
|
121
|
+
Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod.
|
|
115
122
|
</sonic-badge>
|
|
116
123
|
<sonic-badge ellipsis size="sm">
|
|
117
124
|
<sonic-icon slot="prefix" name="info-empty" library="iconoir"></sonic-icon>
|
|
118
|
-
|
|
125
|
+
Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod.
|
|
119
126
|
</sonic-badge>
|
|
120
127
|
</div>
|
|
121
128
|
</template>
|
|
@@ -129,10 +136,10 @@ Count inside a button (`slot="suffix"`) or a badge absolutely positioned on a bu
|
|
|
129
136
|
<template>
|
|
130
137
|
<div class="flex flex-wrap gap-4 items-center">
|
|
131
138
|
<sonic-button type="default">
|
|
132
|
-
|
|
139
|
+
Messages <sonic-badge slot="suffix" type="danger" size="xs">5</sonic-badge>
|
|
133
140
|
</sonic-button>
|
|
134
141
|
<div class="relative inline-block">
|
|
135
|
-
<sonic-button type="success" class="relative">
|
|
142
|
+
<sonic-button type="success" class="relative">My account</sonic-button>
|
|
136
143
|
<sonic-badge
|
|
137
144
|
type="danger"
|
|
138
145
|
size="xs"
|
|
@@ -171,7 +178,7 @@ Count inside a button (`slot="suffix"`) or a badge absolutely positioned on a bu
|
|
|
171
178
|
|----------|---------|-------------|
|
|
172
179
|
| `type` | `default` (default) · `primary` · `neutral` · `warning` · `info` · `success` · `danger` | Semantic color (`--sc-*` tokens) |
|
|
173
180
|
| `variant` | `default` (default) · `outline` · `ghost` | Filled, bordered, or text-only |
|
|
174
|
-
| `size` | `2xs` … `2xl` (default `md`)
|
|
181
|
+
| `size` | `2xs` … `2xl` (default `md`) | Typography and padding (aligned with **`sonic-button`**) |
|
|
175
182
|
| `ellipsis` | boolean | Single-line truncation; parent must constrain width |
|
|
176
183
|
|
|
177
184
|
| Slot | Description |
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
# Button
|
|
2
2
|
|
|
3
|
-
**`sonic-button`** is the clickable control of the library: a plain button, a link when `href` is set, or a form toggle when it has a `name` and `value`. It shares `type` / `variant` / `size` with **`sonic-badge`**, and exposes `prefix` / `suffix` slots for icons.
|
|
4
|
-
|
|
5
3
|
## Type
|
|
6
|
-
|
|
7
|
-
With no `type`, the button is `default`. Use `custom` with `--sc-btn-custom-color` and `--sc-btn-custom-bg` for a one-off color.
|
|
8
|
-
|
|
9
4
|
<sonic-code>
|
|
10
5
|
<template>
|
|
11
6
|
<div class="flex flex-wrap gap-2">
|
|
@@ -21,196 +16,168 @@ With no `type`, the button is `default`. Use `custom` with `--sc-btn-custom-colo
|
|
|
21
16
|
</template>
|
|
22
17
|
</sonic-code>
|
|
23
18
|
|
|
24
|
-
##
|
|
25
|
-
|
|
26
|
-
With no `variant`, the button is filled. The `outline` / `ghost` / `link` variants take their color from `type`. `unstyled` removes all styling so you can apply your own classes.
|
|
27
|
-
|
|
19
|
+
## Outline
|
|
28
20
|
<sonic-code>
|
|
29
21
|
<template>
|
|
30
22
|
<div class="flex flex-wrap gap-2">
|
|
31
|
-
<sonic-button
|
|
32
|
-
<sonic-button
|
|
33
|
-
<sonic-button
|
|
34
|
-
<sonic-button
|
|
35
|
-
<sonic-button variant="
|
|
23
|
+
<sonic-button variant="outline">Default</sonic-button>
|
|
24
|
+
<sonic-button variant="outline" type="primary">Primary</sonic-button>
|
|
25
|
+
<sonic-button variant="outline" type="neutral">Neutral</sonic-button>
|
|
26
|
+
<sonic-button variant="outline" type="warning">Warning</sonic-button>
|
|
27
|
+
<sonic-button variant="outline" type="info">Info</sonic-button>
|
|
28
|
+
<sonic-button variant="outline" type="success">Success</sonic-button>
|
|
29
|
+
<sonic-button variant="outline" type="danger">Danger</sonic-button>
|
|
30
|
+
<sonic-button variant="outline" type="custom" style="--sc-btn-custom-bg: #5b21b6">Custom</sonic-button>
|
|
36
31
|
</div>
|
|
37
32
|
</template>
|
|
38
33
|
</sonic-code>
|
|
39
34
|
|
|
40
|
-
##
|
|
41
|
-
|
|
42
|
-
With no `size`, the button is `md`.
|
|
43
|
-
|
|
35
|
+
## Variant
|
|
44
36
|
<sonic-code>
|
|
45
37
|
<template>
|
|
46
|
-
<
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
<sonic-button size="lg">lg</sonic-button>
|
|
52
|
-
<sonic-button size="xl">xl</sonic-button>
|
|
53
|
-
<sonic-button size="2xl">2xl</sonic-button>
|
|
54
|
-
</div>
|
|
38
|
+
<sonic-button variant="default">Default</sonic-button>
|
|
39
|
+
<sonic-button variant="outline">Outline</sonic-button>
|
|
40
|
+
<sonic-button variant="ghost">Ghost</sonic-button>
|
|
41
|
+
<sonic-button variant="link">Link</sonic-button>
|
|
42
|
+
<sonic-button variant="unstyled">Unstyled</sonic-button>
|
|
55
43
|
</template>
|
|
56
44
|
</sonic-code>
|
|
57
45
|
|
|
58
|
-
##
|
|
59
|
-
|
|
60
|
-
`circle` and `square` make a fixed-size icon button. `block` stretches to the full width of the parent.
|
|
61
|
-
|
|
46
|
+
## Size
|
|
62
47
|
<sonic-code>
|
|
63
48
|
<template>
|
|
64
|
-
<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
</
|
|
68
|
-
<sonic-button
|
|
49
|
+
<sonic-button size="2xs">2Xs button</sonic-button>
|
|
50
|
+
<sonic-button size="xs">Xs button</sonic-button>
|
|
51
|
+
<sonic-button size="sm">Sm button</sonic-button>
|
|
52
|
+
<sonic-button size="md">Md button</sonic-button>
|
|
53
|
+
<sonic-button>Default button</sonic-button>
|
|
54
|
+
<sonic-button size="lg">Lg button</sonic-button>
|
|
55
|
+
<sonic-button size="xl">Xl button</sonic-button>
|
|
56
|
+
<sonic-button size="2xl">2Xl button</sonic-button>
|
|
69
57
|
</template>
|
|
70
58
|
</sonic-code>
|
|
71
59
|
|
|
72
|
-
##
|
|
73
|
-
|
|
60
|
+
## Shape
|
|
74
61
|
<sonic-code>
|
|
75
62
|
<template>
|
|
76
|
-
<
|
|
77
|
-
|
|
78
|
-
<sonic-icon library="iconoir" slot="prefix" name="arrow-left"></sonic-icon>
|
|
79
|
-
Previous flight
|
|
80
|
-
</sonic-button>
|
|
81
|
-
<sonic-button type="primary">
|
|
82
|
-
Next flight
|
|
83
|
-
<sonic-icon library="iconoir" slot="suffix" name="arrow-right"></sonic-icon>
|
|
84
|
-
</sonic-button>
|
|
85
|
-
</div>
|
|
63
|
+
<sonic-button shape="circle"> 😂 </sonic-button>
|
|
64
|
+
<sonic-button shape="square"> 🚀 </sonic-button>
|
|
86
65
|
</template>
|
|
87
66
|
</sonic-code>
|
|
88
67
|
|
|
89
68
|
## Loading
|
|
90
|
-
|
|
91
|
-
`loading` replaces the content with a spinner and blocks clicks. The button keeps the width of its content.
|
|
92
|
-
|
|
69
|
+
The length of the button depends on the size of its content
|
|
93
70
|
<sonic-code>
|
|
94
71
|
<template>
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
<sonic-button loading type="primary">
|
|
99
|
-
<sonic-icon library="iconoir" slot="prefix" name="check"></sonic-icon>
|
|
100
|
-
Checking in
|
|
101
|
-
</sonic-button>
|
|
102
|
-
</div>
|
|
72
|
+
<sonic-button loading></sonic-button>
|
|
73
|
+
<sonic-button loading>Loading button</sonic-button>
|
|
74
|
+
<sonic-button loading><span slot="prefix">🚀</span>Loading with prefix<span slot="suffix">😂</span></sonic-button>
|
|
103
75
|
</template>
|
|
104
76
|
</sonic-code>
|
|
105
77
|
|
|
106
|
-
##
|
|
107
|
-
|
|
108
|
-
|
|
78
|
+
## Swap
|
|
79
|
+
<sonic-code>
|
|
80
|
+
<template>
|
|
81
|
+
<sonic-button formDataProvider="button_swap_example" name="youpi" value="youpla" type="primary" shape="circle" variant="outline" class="mr-4">
|
|
82
|
+
<sonic-icon library="iconoir" swap="on" name="eye-empty"></sonic-icon>
|
|
83
|
+
<sonic-icon library="iconoir" swap="off" name="eye-off"></sonic-icon>
|
|
84
|
+
</sonic-button>
|
|
85
|
+
<sonic-button formDataProvider="button_swap_example" name="youpi" value="youpla" type="primary" variant="outline">
|
|
86
|
+
<sonic-icon library="iconoir" swap="on" slot="prefix" name="eye-empty"></sonic-icon>
|
|
87
|
+
<sonic-icon library="iconoir" swap="off" slot="prefix" name="eye-off"></sonic-icon>
|
|
88
|
+
Révélez
|
|
89
|
+
<span swap="off">...</span>
|
|
90
|
+
<span swap="on">moi !</span>
|
|
91
|
+
</sonic-button>
|
|
92
|
+
</template>
|
|
93
|
+
</sonic-code>
|
|
109
94
|
|
|
95
|
+
## Reset
|
|
110
96
|
<sonic-code>
|
|
111
97
|
<template>
|
|
112
|
-
<div
|
|
113
|
-
<sonic-
|
|
114
|
-
<sonic-button
|
|
98
|
+
<div formDataProvider="button-reset-demo" class="mb-2">
|
|
99
|
+
<sonic-checkbox name="aChexbox" value="AValueToSet">Set A value</sonic-checkbox><br>
|
|
100
|
+
<sonic-button reset>Reset current formDataProvider</sonic-button>
|
|
115
101
|
</div>
|
|
102
|
+
<sonic-button reset="button-reset-demo">Reset formDataProvider by name</sonic-button>
|
|
116
103
|
</template>
|
|
117
104
|
</sonic-code>
|
|
118
105
|
|
|
119
|
-
## Toggle and radio
|
|
120
|
-
|
|
121
|
-
A button with `name` and `value` writes to its `formDataProvider` and toggles `active` when clicked. Add `radio` for a single choice in a group, or `unique` to also allow deselecting. Children marked `swap="on"` / `swap="off"` show only in the active / inactive state.
|
|
122
106
|
|
|
107
|
+
## GoBack
|
|
123
108
|
<sonic-code>
|
|
124
109
|
<template>
|
|
125
|
-
<
|
|
126
|
-
<sonic-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
<sonic-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
<sonic-button radio minWidth="7rem" name="plan" value="team">Team</sonic-button>
|
|
134
|
-
</sonic-group>
|
|
135
|
-
</div>
|
|
110
|
+
<sonic-button goBack type="primary" variant="outline" class="mr-4">
|
|
111
|
+
<sonic-icon library="iconoir" slot="prefix" name="arrow-left"></sonic-icon>
|
|
112
|
+
Retour classique
|
|
113
|
+
</sonic-button>
|
|
114
|
+
<sonic-button goBack="http://la-billetterie.net" type="primary" variant="outline" class="mr-4">
|
|
115
|
+
<sonic-icon library="iconoir" slot="prefix" name="arrow-left"></sonic-icon>
|
|
116
|
+
Retour url prédéfinie
|
|
117
|
+
</sonic-button>
|
|
136
118
|
</template>
|
|
137
119
|
</sonic-code>
|
|
138
120
|
|
|
139
|
-
##
|
|
121
|
+
## Button with icon
|
|
122
|
+
<sonic-code>
|
|
123
|
+
<template>
|
|
124
|
+
<sonic-button goBack type="primary" variant="outline" class="mr-4">
|
|
125
|
+
<sonic-icon library="iconoir" slot="prefix" name="arrow-right" ></sonic-icon>
|
|
126
|
+
Button with icon
|
|
127
|
+
</sonic-button>
|
|
128
|
+
</template>
|
|
129
|
+
</sonic-code>
|
|
140
130
|
|
|
141
|
-
`reset` clears the button's own `formDataProvider`. Give it a value to clear another one by name.
|
|
142
131
|
|
|
132
|
+
## Button group
|
|
143
133
|
<sonic-code>
|
|
144
134
|
<template>
|
|
145
|
-
<
|
|
146
|
-
<sonic-
|
|
147
|
-
<sonic-button
|
|
148
|
-
|
|
149
|
-
|
|
135
|
+
<sonic-group label="Code promo" class="mr-4">
|
|
136
|
+
<sonic-input placeholder="Entrez votre code ici..."></sonic-input>
|
|
137
|
+
<sonic-button type="primary" shape="square">
|
|
138
|
+
<sonic-icon library="iconoir" library="iconoir" name="gift"></sonic-icon>
|
|
139
|
+
</sonic-button>
|
|
140
|
+
</sonic-group>
|
|
141
|
+
<sonic-divider size="lg"></sonic-divider>
|
|
142
|
+
<div class="text-lg mb-2">Choose a subscription</div>
|
|
143
|
+
<sonic-group formDataProvider="subscriptionData">
|
|
144
|
+
<sonic-button radio minWidth="10rem" name="subscription" value="standard" type="default"
|
|
145
|
+
>😎 Standard</sonic-button
|
|
146
|
+
>
|
|
147
|
+
<sonic-button radio minWidth="10rem" name="subscription" value="premium" type="default">⭐ Premium</sonic-button>
|
|
148
|
+
<sonic-button radio minWidth="10rem" name="subscription" value="diamond" type="default">💎 Diamond</sonic-button>
|
|
149
|
+
</sonic-group>
|
|
150
150
|
</template>
|
|
151
151
|
</sonic-code>
|
|
152
152
|
|
|
153
|
-
## Go back
|
|
154
|
-
|
|
155
|
-
`goBack` navigates back in history. When there is no previous page on the same origin, it goes to the attribute value, or to the site root if empty.
|
|
156
153
|
|
|
154
|
+
## Aria-label
|
|
157
155
|
<sonic-code>
|
|
158
156
|
<template>
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
157
|
+
<sonic-button data-aria-label="Custom aria label" type="primary" >
|
|
158
|
+
Button with aria label
|
|
159
|
+
</sonic-button>
|
|
160
|
+
<sonic-button data-aria-label="Custom aria label" href="https://google.fr" type="primary" >
|
|
161
|
+
Button link with aria label
|
|
162
|
+
</sonic-button>
|
|
163
163
|
</template>
|
|
164
164
|
</sonic-code>
|
|
165
165
|
|
|
166
|
-
## Accessibility
|
|
167
|
-
|
|
168
|
-
Icon-only buttons need a label. Use `data-aria-label`, which is forwarded to the inner `button` (and link).
|
|
169
166
|
|
|
167
|
+
## Custom styles & active states with tailwind
|
|
170
168
|
<sonic-code>
|
|
171
169
|
<template>
|
|
172
|
-
<
|
|
173
|
-
<sonic-
|
|
174
|
-
|
|
170
|
+
<div formDataProvider="subscriptionData2">
|
|
171
|
+
<sonic-button
|
|
172
|
+
class="bg-neutral-100 transition-all text-center text-lg text-neutral-400 rounded-md min-w-[8rem] [&[active]]:text-danger-content [&[active]]:min-w-[13rem] [&[active]]:bg-danger [&[active]]:font-black [&[active]]:rounded-full"
|
|
173
|
+
variant="unstyled"
|
|
174
|
+
checkable unique
|
|
175
|
+
name="subscription"
|
|
176
|
+
value="premium"
|
|
177
|
+
type="default">
|
|
178
|
+
<span swap="off" class="inline-block py-2 px-3" >subscribe</span>
|
|
179
|
+
<span swap="on" class="inline-block py-2 px-3" >⭐ Premium</span>
|
|
180
|
+
</sonic-button>
|
|
181
|
+
</div>
|
|
175
182
|
</template>
|
|
176
183
|
</sonic-code>
|
|
177
|
-
|
|
178
|
-
## API reference
|
|
179
|
-
|
|
180
|
-
| Attribute | Values | Description |
|
|
181
|
-
|----------|---------|-------------|
|
|
182
|
-
| `type` | `default` (default) · `primary` · `neutral` · `warning` · `info` · `success` · `danger` · `custom` | Color; `custom` reads `--sc-btn-custom-color` and `--sc-btn-custom-bg` |
|
|
183
|
-
| `variant` | `default` (default) · `outline` · `ghost` · `link` · `unstyled` | Visual style |
|
|
184
|
-
| `size` | `2xs` … `2xl` (default `md`) · `inherit` | Typography and padding |
|
|
185
|
-
| `shape` | `default` (default) · `circle` · `square` · `block` | Icon button or full width |
|
|
186
|
-
| `icon` | boolean | Enlarges a lone icon |
|
|
187
|
-
| `loading` | boolean | Shows a spinner and blocks clicks |
|
|
188
|
-
| `disabled` | boolean | Dims the button and blocks clicks |
|
|
189
|
-
| `active` | boolean | Active state, set automatically for links and toggles |
|
|
190
|
-
| `align` | `left` · `center` · `right` | Text alignment |
|
|
191
|
-
| `direction` | flex direction (default `row`) | Layout of slots |
|
|
192
|
-
| `alignItems` | flex `align-items` (default `center`) | Cross-axis alignment of slots |
|
|
193
|
-
| `justify` | flex `justify-content` (default `center`) | Main-axis alignment of slots |
|
|
194
|
-
| `minWidth` | CSS length (default `0`) | Minimum width of the button |
|
|
195
|
-
| `href` | URL | Renders the button as a link |
|
|
196
|
-
| `target` | `_self` · `_blank` · `_parent` · `_top` | Link target |
|
|
197
|
-
| `download` | string | Link `download` attribute |
|
|
198
|
-
| `pushState` | boolean | Navigates with `history.pushState` |
|
|
199
|
-
| `autoActive` | `partial` (default) · `strict` · `strict-path-only` · `disabled` | URL matching for `active` |
|
|
200
|
-
| `goBack` | URL or empty | Goes back in history, with a fallback URL |
|
|
201
|
-
| `reset` | empty or provider name | Clears the current or named form data provider |
|
|
202
|
-
| `name` / `value` | string | Form field written to the data provider |
|
|
203
|
-
| `formDataProvider` | string | Data provider to write to (default: nearest ancestor) |
|
|
204
|
-
| `radio` | boolean | Single choice among buttons with the same `name` |
|
|
205
|
-
| `unique` | boolean | Like `radio`, but can be deselected |
|
|
206
|
-
| `autoRepeat` | boolean | Repeats the click while the pointer is held |
|
|
207
|
-
| `data-aria-label` | string | `aria-label` of the inner button |
|
|
208
|
-
| `data-aria-labelledby` | string | `aria-labelledby` of the inner button |
|
|
209
|
-
| `data-aria-controls` | string | `aria-controls` of the inner button |
|
|
210
|
-
| `data-aria-expanded` | boolean | `aria-expanded` of the inner button |
|
|
211
|
-
|
|
212
|
-
| Slot | Description |
|
|
213
|
-
|------|-------------|
|
|
214
|
-
| *(default)* | Label |
|
|
215
|
-
| `prefix` | Icon or text before the label |
|
|
216
|
-
| `suffix` | Icon or text after the label |
|