@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
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
# Icon
|
|
2
|
-
|
|
3
|
-
**`sonic-icon`** renders inline SVG icons from the **bundled core set** or from **CDN libraries**. Set **`name`** (and **`library`** / **`prefix`** when needed); scale with **`size`**. Icons inherit **`currentColor`** and are **`aria-hidden`** by default—keep visible text nearby or label the control that contains them.
|
|
4
|
-
|
|
5
|
-
## Core library
|
|
6
|
-
|
|
7
|
-
Omit **`library`** to use the bundled set in `icons.json`. Available **`name`** values: `cancel` · `check` · `check-circled-outline` · `emoji-puzzled` · `info-empty` · `loader` · `minus-small` · `more-horiz` · `more-vert` · `nav-arrow-down` · `warning-circled-outline`.
|
|
8
|
-
|
|
9
|
-
<sonic-code>
|
|
10
|
-
<template>
|
|
11
|
-
<div class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-8">
|
|
12
|
-
<div class="text-center">
|
|
13
|
-
<sonic-icon name="cancel" size="lg"></sonic-icon>
|
|
14
|
-
<div class="text-xs mt-1">cancel</div>
|
|
15
|
-
</div>
|
|
16
|
-
<div class="text-center">
|
|
17
|
-
<sonic-icon name="check" size="lg"></sonic-icon>
|
|
18
|
-
<div class="text-xs mt-1">check</div>
|
|
19
|
-
</div>
|
|
20
|
-
<div class="text-center">
|
|
21
|
-
<sonic-icon name="check-circled-outline" size="lg"></sonic-icon>
|
|
22
|
-
<div class="text-xs mt-1">check-circled-outline</div>
|
|
23
|
-
</div>
|
|
24
|
-
<div class="text-center">
|
|
25
|
-
<sonic-icon name="emoji-puzzled" size="lg"></sonic-icon>
|
|
26
|
-
<div class="text-xs mt-1">emoji-puzzled</div>
|
|
27
|
-
</div>
|
|
28
|
-
<div class="text-center">
|
|
29
|
-
<sonic-icon name="info-empty" size="lg"></sonic-icon>
|
|
30
|
-
<div class="text-xs mt-1">info-empty</div>
|
|
31
|
-
</div>
|
|
32
|
-
<div class="text-center">
|
|
33
|
-
<sonic-icon name="loader" size="lg"></sonic-icon>
|
|
34
|
-
<div class="text-xs mt-1">loader</div>
|
|
35
|
-
</div>
|
|
36
|
-
<div class="text-center">
|
|
37
|
-
<sonic-icon name="minus-small" size="lg"></sonic-icon>
|
|
38
|
-
<div class="text-xs mt-1">minus-small</div>
|
|
39
|
-
</div>
|
|
40
|
-
<div class="text-center">
|
|
41
|
-
<sonic-icon name="more-horiz" size="lg"></sonic-icon>
|
|
42
|
-
<div class="text-xs mt-1">more-horiz</div>
|
|
43
|
-
</div>
|
|
44
|
-
<div class="text-center">
|
|
45
|
-
<sonic-icon name="more-vert" size="lg"></sonic-icon>
|
|
46
|
-
<div class="text-xs mt-1">more-vert</div>
|
|
47
|
-
</div>
|
|
48
|
-
<div class="text-center">
|
|
49
|
-
<sonic-icon name="nav-arrow-down" size="lg"></sonic-icon>
|
|
50
|
-
<div class="text-xs mt-1">nav-arrow-down</div>
|
|
51
|
-
</div>
|
|
52
|
-
<div class="text-center">
|
|
53
|
-
<sonic-icon name="warning-circled-outline" size="lg"></sonic-icon>
|
|
54
|
-
<div class="text-xs mt-1">warning-circled-outline</div>
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
</template>
|
|
58
|
-
</sonic-code>
|
|
59
|
-
|
|
60
|
-
## External libraries
|
|
61
|
-
|
|
62
|
-
Set **`library`** to load SVGs from a built-in CDN template. **`prefix`** falls back to each library’s default when omitted (`outline` for **`heroicons`**, **`regular`** for **`fontAwesome`** and **`material`**, and so on).
|
|
63
|
-
|
|
64
|
-
<sonic-code>
|
|
65
|
-
<template>
|
|
66
|
-
<div class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-8">
|
|
67
|
-
<sonic-link href="https://heroicons.com/" target="_blank" class="text-center underline">
|
|
68
|
-
<sonic-icon library="heroicons" prefix="outline" name="academic-cap" size="lg"></sonic-icon>
|
|
69
|
-
<br />
|
|
70
|
-
<div class="text-xs mt-1">heroicons</div>
|
|
71
|
-
</sonic-link>
|
|
72
|
-
<sonic-link href="https://iconoir.com/" target="_blank" class="text-center underline">
|
|
73
|
-
<sonic-icon library="iconoir" name="2x2-cell" size="lg"></sonic-icon>
|
|
74
|
-
<br />
|
|
75
|
-
<div class="text-xs mt-1">iconoir</div>
|
|
76
|
-
</sonic-link>
|
|
77
|
-
<sonic-link href="https://materialdesignicons.com/" target="_blank" class="text-center underline">
|
|
78
|
-
<sonic-icon library="material" prefix="outline" name="email" size="lg"></sonic-icon>
|
|
79
|
-
<br />
|
|
80
|
-
<div class="text-xs mt-1">material design</div>
|
|
81
|
-
</sonic-link>
|
|
82
|
-
<sonic-link href="https://fontawesome.com/search?o=r&m=free&s=regular" target="_blank" class="text-center underline">
|
|
83
|
-
<sonic-icon library="fontAwesome" prefix="regular" name="user" size="lg"></sonic-icon>
|
|
84
|
-
<br />
|
|
85
|
-
<div class="text-xs mt-1">fontAwesome regular</div>
|
|
86
|
-
</sonic-link>
|
|
87
|
-
<sonic-link href="https://fontawesome.com/search?o=r&m=free&s=solid" target="_blank" class="text-center underline">
|
|
88
|
-
<sonic-icon library="fontAwesome" prefix="solid" name="book" size="lg"></sonic-icon>
|
|
89
|
-
<br />
|
|
90
|
-
<div class="text-xs mt-1">fontAwesome solid</div>
|
|
91
|
-
</sonic-link>
|
|
92
|
-
<sonic-link href="https://feathericons.com/" target="_blank" class="text-center underline">
|
|
93
|
-
<sonic-icon library="feathers" name="activity" size="lg"></sonic-icon>
|
|
94
|
-
<br />
|
|
95
|
-
<div class="text-xs mt-1">feathers</div>
|
|
96
|
-
</sonic-link>
|
|
97
|
-
<sonic-link href="https://lucide.dev/" target="_blank" class="text-center underline">
|
|
98
|
-
<sonic-icon library="lucide" name="album" size="lg"></sonic-icon>
|
|
99
|
-
<br />
|
|
100
|
-
<div class="text-xs mt-1">lucide</div>
|
|
101
|
-
</sonic-link>
|
|
102
|
-
</div>
|
|
103
|
-
</template>
|
|
104
|
-
</sonic-code>
|
|
105
|
-
|
|
106
|
-
## Custom library
|
|
107
|
-
|
|
108
|
-
Use **`library="custom"`** with SVG files on your origin. On an ancestor (for example **`sonic-scope`** or **`sonic-code`**), set **`customIconLibraryPath`** to a URL template with **`$prefix`** and **`$name`** placeholders, and optionally **`customIconDefaultPrefix`** when **`prefix`** is omitted.
|
|
109
|
-
|
|
110
|
-
<sonic-code
|
|
111
|
-
customIconLibraryPath="/svg/$prefix/$name.svg"
|
|
112
|
-
customIconDefaultPrefix="regular"
|
|
113
|
-
>
|
|
114
|
-
<template>
|
|
115
|
-
<sonic-scope
|
|
116
|
-
customIconLibraryPath="/svg/$prefix/$name.svg"
|
|
117
|
-
customIconDefaultPrefix="regular"
|
|
118
|
-
>
|
|
119
|
-
<div class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-8">
|
|
120
|
-
<div class="text-center">
|
|
121
|
-
<sonic-icon library="custom" prefix="regular" name="plane"></sonic-icon>
|
|
122
|
-
<br />
|
|
123
|
-
<div class="text-xs mt-1">regular</div>
|
|
124
|
-
</div>
|
|
125
|
-
<div class="text-center">
|
|
126
|
-
<sonic-icon library="custom" prefix="solid" name="plane"></sonic-icon>
|
|
127
|
-
<br />
|
|
128
|
-
<div class="text-xs mt-1">solid</div>
|
|
129
|
-
</div>
|
|
130
|
-
<div class="text-center">
|
|
131
|
-
<sonic-icon library="custom" name="plane"></sonic-icon>
|
|
132
|
-
<br />
|
|
133
|
-
<div class="text-xs mt-1">default prefix</div>
|
|
134
|
-
</div>
|
|
135
|
-
</div>
|
|
136
|
-
</sonic-scope>
|
|
137
|
-
</template>
|
|
138
|
-
</sonic-code>
|
|
139
|
-
|
|
140
|
-
## Size
|
|
141
|
-
|
|
142
|
-
Omit **`size`** for the default scale (`1em` height, inherited from the font size). Steps go from `2xs` to `3xl`.
|
|
143
|
-
|
|
144
|
-
<sonic-code>
|
|
145
|
-
<template>
|
|
146
|
-
<div class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-8">
|
|
147
|
-
<div class="text-center">
|
|
148
|
-
<sonic-icon library="heroicons" prefix="outline" name="academic-cap" size="2xs"></sonic-icon>
|
|
149
|
-
<br />
|
|
150
|
-
<div class="text-xs mt-1">2xs</div>
|
|
151
|
-
</div>
|
|
152
|
-
<div class="text-center">
|
|
153
|
-
<sonic-icon library="heroicons" prefix="outline" name="academic-cap" size="xs"></sonic-icon>
|
|
154
|
-
<br />
|
|
155
|
-
<div class="text-xs mt-1">xs</div>
|
|
156
|
-
</div>
|
|
157
|
-
<div class="text-center">
|
|
158
|
-
<sonic-icon library="heroicons" prefix="outline" name="academic-cap" size="sm"></sonic-icon>
|
|
159
|
-
<br />
|
|
160
|
-
<div class="text-xs mt-1">sm</div>
|
|
161
|
-
</div>
|
|
162
|
-
<div class="text-center">
|
|
163
|
-
<sonic-icon library="heroicons" prefix="outline" name="academic-cap"></sonic-icon>
|
|
164
|
-
<br />
|
|
165
|
-
<div class="text-xs mt-1">default</div>
|
|
166
|
-
</div>
|
|
167
|
-
<div class="text-center">
|
|
168
|
-
<sonic-icon library="heroicons" prefix="outline" name="academic-cap" size="lg"></sonic-icon>
|
|
169
|
-
<br />
|
|
170
|
-
<div class="text-xs mt-1">lg</div>
|
|
171
|
-
</div>
|
|
172
|
-
<div class="text-center">
|
|
173
|
-
<sonic-icon library="heroicons" prefix="outline" name="academic-cap" size="xl"></sonic-icon>
|
|
174
|
-
<br />
|
|
175
|
-
<div class="text-xs mt-1">xl</div>
|
|
176
|
-
</div>
|
|
177
|
-
<div class="text-center">
|
|
178
|
-
<sonic-icon library="heroicons" prefix="outline" name="academic-cap" size="2xl"></sonic-icon>
|
|
179
|
-
<br />
|
|
180
|
-
<div class="text-xs mt-1">2xl</div>
|
|
181
|
-
</div>
|
|
182
|
-
<div class="text-center">
|
|
183
|
-
<sonic-icon library="heroicons" prefix="outline" name="academic-cap" size="3xl"></sonic-icon>
|
|
184
|
-
<br />
|
|
185
|
-
<div class="text-xs mt-1">3xl</div>
|
|
186
|
-
</div>
|
|
187
|
-
</div>
|
|
188
|
-
</template>
|
|
189
|
-
</sonic-code>
|
|
190
|
-
|
|
191
|
-
## Accessibility
|
|
192
|
-
|
|
193
|
-
On connect, the host sets **`aria-hidden="true"`**. Treat icons as decorative unless the surrounding control already has an accessible name. Do not rely on **`sonic-icon`** alone for meaning—use visible text or **`aria-label`** on the parent button / link.
|
|
194
|
-
|
|
195
|
-
<sonic-code>
|
|
196
|
-
<template>
|
|
197
|
-
<sonic-button type="neutral" variant="outline" shape="circle" aria-label="Flight details">
|
|
198
|
-
<sonic-icon library="iconoir" name="airplane"></sonic-icon>
|
|
199
|
-
</sonic-button>
|
|
200
|
-
</template>
|
|
201
|
-
</sonic-code>
|
|
202
|
-
|
|
203
|
-
## API reference
|
|
204
|
-
|
|
205
|
-
| Attribute | Values | Description |
|
|
206
|
-
|----------|---------|-------------|
|
|
207
|
-
| `name` | string | Icon id in the core bundle or in the remote library |
|
|
208
|
-
| `library` | `heroicons` · `iconoir` · `feathers` · `lucide` · `material` · `fontAwesome` · `custom` | CDN or custom template; omit for bundled core icons |
|
|
209
|
-
| `prefix` | string | Library-specific variant; defaults per library when empty |
|
|
210
|
-
| `size` | `2xs` · `xs` · `sm` · `lg` · `xl` · `2xl` · `3xl` (default `1em`, no attribute) | `em`-based SVG scale on the host |
|
|
211
|
-
|
|
212
|
-
Ancestor attributes (for **`library="custom"`** only): **`customIconLibraryPath`** (URL template with **`$prefix`** and **`$name`**) and **`customIconDefaultPrefix`**. May be set on **`sonic-scope`**, theme roots, or globally in the document.
|
|
213
|
-
|
|
214
|
-
No slots — the component inlines fetched or bundled SVG markup.
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" data-doc-url="https://concorde.supersoniks.org/core/components/ui/image" data-doc-id="core/components/ui/image/image">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Image — Concorde by Supersoniks</title>
|
|
7
|
-
<meta name="description" content="sonic-image wraps a responsive <img> with aspect ratio, object-fit: cover, optional rounded corners and a load transition. The host shows a placeholder background (--sc-placeholder-bg) until the file ">
|
|
8
|
-
<meta name="keywords" content="Concorde, supersoniks, core/components/ui/image/image, image, Image, UI component, sonic-image, web component, , object-fit: cover, --sc-placeholder-bg, loading, lazy, loading="eager", rounded, --sc-rounded">
|
|
9
|
-
<meta name="concorde-doc-id" content="core/components/ui/image/image">
|
|
10
|
-
<link rel="canonical" href="https://concorde.supersoniks.org/core/components/ui/image">
|
|
11
|
-
<link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/core/components/ui/image.md">
|
|
12
|
-
</head>
|
|
13
|
-
<body>
|
|
14
|
-
<header>
|
|
15
|
-
<p><a href="/docs/index.html">Concorde documentation</a> · <a href="https://concorde.supersoniks.org/core/components/ui/image">same URL (interactive)</a> · <a href="/llms.txt">llms.txt</a></p>
|
|
16
|
-
</header>
|
|
17
|
-
<main>
|
|
18
|
-
<article>
|
|
19
|
-
<p class="doc-lead" id="doc-summary"><strong>Concorde UI component — Image</strong>. sonic-image wraps a responsive <img> with aspect ratio, object-fit: cover, optional rounded corners and a load transition. The host shows a placeholder background (--sc-placeholder-bg) until the file <span>Doc ID: <code>core/components/ui/image/image</code>. Keywords: Concorde, supersoniks, core/components/ui/image/image, image, Image, UI component, sonic-image, web component, , object-fit: cover, --sc-placeholder-bg, loading, lazy, loading="eager", rounded, --sc-rounded. URL: <a href="https://concorde.supersoniks.org/core/components/ui/image">https://concorde.supersoniks.org/core/components/ui/image</a>.</span></p>
|
|
20
|
-
<h1 id="image">Image</h1>
|
|
21
|
-
<p><strong><code>sonic-image</code></strong> wraps a responsive <code><img></code> with aspect ratio, <code>object-fit: cover</code>, optional rounded corners and a load transition. The host shows a placeholder background (<code>--sc-placeholder-bg</code>) until the file loads. With no <code>loading</code>, the image is <code>lazy</code>; set <code>loading="eager"</code> for above-the-fold images.</p>
|
|
22
|
-
<h2 id="rounded">Rounded</h2>
|
|
23
|
-
<p>With no <code>rounded</code>, corners are square. Boolean <code>rounded</code> uses the theme token <code>--sc-rounded</code>; <code>full</code> draws a circle when paired with <code>ratio="1/1"</code>.</p>
|
|
24
|
-
<pre><code><div class="grid gap-6 grid-cols-3 lg:grid-cols-4 items-end text-center text-xs">
|
|
25
|
-
<div>
|
|
26
|
-
<sonic-image ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
27
|
-
<p class="mt-2">default</p>
|
|
28
|
-
</div>
|
|
29
|
-
<div>
|
|
30
|
-
<sonic-image rounded="sm" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
31
|
-
<p class="mt-2">sm</p>
|
|
32
|
-
</div>
|
|
33
|
-
<div>
|
|
34
|
-
<sonic-image rounded ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
35
|
-
<p class="mt-2">rounded</p>
|
|
36
|
-
</div>
|
|
37
|
-
<div>
|
|
38
|
-
<sonic-image rounded="md" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
39
|
-
<p class="mt-2">md</p>
|
|
40
|
-
</div>
|
|
41
|
-
<div>
|
|
42
|
-
<sonic-image rounded="lg" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
43
|
-
<p class="mt-2">lg</p>
|
|
44
|
-
</div>
|
|
45
|
-
<div>
|
|
46
|
-
<sonic-image rounded="xl" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
47
|
-
<p class="mt-2">xl</p>
|
|
48
|
-
</div>
|
|
49
|
-
<div>
|
|
50
|
-
<sonic-image rounded="full" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
51
|
-
<p class="mt-2">full</p>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
</code></pre>
|
|
55
|
-
<h2 id="aspect-ratio">Aspect ratio</h2>
|
|
56
|
-
<p><code>ratio</code> sets CSS <code>aspect-ratio</code> on the image (default <code>auto</code>). The image always fills the host width.</p>
|
|
57
|
-
<pre><code><div class="grid gap-8 grid-cols-2 items-center">
|
|
58
|
-
<sonic-image src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
|
|
59
|
-
<sonic-image ratio="16/9" src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
|
|
60
|
-
<sonic-image ratio="1/1" src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
|
|
61
|
-
<sonic-image ratio="2/3" src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
|
|
62
|
-
</div>
|
|
63
|
-
</code></pre>
|
|
64
|
-
<h2 id="object-position">Object position</h2>
|
|
65
|
-
<p><code>objectPosition</code> maps to CSS <code>object-position</code> (default <code>center center</code>). Use it on wide crops when the subject sits off-center.</p>
|
|
66
|
-
<pre><code><div class="grid gap-8 grid-cols-2 items-center">
|
|
67
|
-
<sonic-image ratio="11/4" src="img/concorde/plane_11.jpg" alt="Concorde flying over a field"></sonic-image>
|
|
68
|
-
<sonic-image objectPosition="center top" ratio="11/4" src="img/concorde/plane_11.jpg" alt="Concorde flying over a field"></sonic-image>
|
|
69
|
-
</div>
|
|
70
|
-
</code></pre>
|
|
71
|
-
<h2 id="cover">Cover</h2>
|
|
72
|
-
<p><code>cover</code> stretches the image over a <strong>positioned</strong> parent (<code>position: relative</code> with a height). <code>ratio</code> is ignored while <code>cover</code> is set.</p>
|
|
73
|
-
<pre><code><div class="h-96 relative rounded-lg overflow-hidden">
|
|
74
|
-
<sonic-image cover src="img/concorde/plane_10.jpg" alt="Concorde fleet parked in a star"></sonic-image>
|
|
75
|
-
</div>
|
|
76
|
-
</code></pre>
|
|
77
|
-
<h2 id="load-transition">Load transition</h2>
|
|
78
|
-
<p>Set <code>transition</code> to <code>fade</code> or <code>fade-scale-out</code>. The image stays transparent until the browser fires <code>load</code>, then animates in. <strong>Changing <code>src</code> on an existing element does not replay the effect</strong>: mount a new <code>sonic-image</code> instead (galleries, infinite scroll).</p>
|
|
79
|
-
<pre><code><div class="flex flex-wrap gap-2 mb-4">
|
|
80
|
-
<sonic-button
|
|
81
|
-
size="sm"
|
|
82
|
-
onclick="(function () {
|
|
83
|
-
var host = document.getElementById('sonic-image-transition-host');
|
|
84
|
-
var img = document.createElement('sonic-image');
|
|
85
|
-
img.transition = 'fade';
|
|
86
|
-
img.ratio = '1/1';
|
|
87
|
-
img.rounded = 'md';
|
|
88
|
-
img.loading = 'eager';
|
|
89
|
-
img.style.width = '8rem';
|
|
90
|
-
var pics = ['01', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13'];
|
|
91
|
-
img.src = 'img/concorde/plane_' + pics[host.childElementCount % pics.length] + '.jpg';
|
|
92
|
-
host.appendChild(img);
|
|
93
|
-
})()"
|
|
94
|
-
>
|
|
95
|
-
Add image (fade)
|
|
96
|
-
</sonic-button>
|
|
97
|
-
<sonic-button
|
|
98
|
-
size="sm"
|
|
99
|
-
variant="outline"
|
|
100
|
-
onclick="(function () {
|
|
101
|
-
var host = document.getElementById('sonic-image-transition-host');
|
|
102
|
-
var img = document.createElement('sonic-image');
|
|
103
|
-
img.transition = 'fade-scale-out';
|
|
104
|
-
img.ratio = '1/1';
|
|
105
|
-
img.rounded = 'md';
|
|
106
|
-
img.loading = 'eager';
|
|
107
|
-
img.style.width = '8rem';
|
|
108
|
-
var pics = ['01', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13'];
|
|
109
|
-
img.src = 'img/concorde/plane_' + pics[host.childElementCount % pics.length] + '.jpg';
|
|
110
|
-
host.appendChild(img);
|
|
111
|
-
})()"
|
|
112
|
-
>
|
|
113
|
-
Add image (fade-scale-out)
|
|
114
|
-
</sonic-button>
|
|
115
|
-
<sonic-button
|
|
116
|
-
size="sm"
|
|
117
|
-
variant="ghost"
|
|
118
|
-
onclick="document.getElementById('sonic-image-transition-host').replaceChildren()"
|
|
119
|
-
>
|
|
120
|
-
Clear
|
|
121
|
-
</sonic-button>
|
|
122
|
-
</div>
|
|
123
|
-
<div id="sonic-image-transition-host" class="flex flex-wrap gap-2 min-h-[5rem]"></div>
|
|
124
|
-
</code></pre>
|
|
125
|
-
<h2 id="accessibility">Accessibility</h2>
|
|
126
|
-
<p>Always set a meaningful <code>alt</code>. Use <code>alt=""</code> only for decorative images.</p>
|
|
127
|
-
<pre><code><sonic-image
|
|
128
|
-
rounded="md"
|
|
129
|
-
ratio="16/9"
|
|
130
|
-
alt="Crowd gathered around Concorde at night"
|
|
131
|
-
src="img/concorde/plane_07.jpg"
|
|
132
|
-
></sonic-image>
|
|
133
|
-
</code></pre>
|
|
134
|
-
<h2 id="api-reference">API reference</h2>
|
|
135
|
-
<table>
|
|
136
|
-
<thead>
|
|
137
|
-
<tr>
|
|
138
|
-
<th>Attribute</th>
|
|
139
|
-
<th>Values</th>
|
|
140
|
-
<th>Description</th>
|
|
141
|
-
</tr>
|
|
142
|
-
</thead>
|
|
143
|
-
<tbody><tr>
|
|
144
|
-
<td><code>src</code></td>
|
|
145
|
-
<td>URL</td>
|
|
146
|
-
<td>Image URL passed to <code><img src></code></td>
|
|
147
|
-
</tr>
|
|
148
|
-
<tr>
|
|
149
|
-
<td><code>alt</code></td>
|
|
150
|
-
<td>string</td>
|
|
151
|
-
<td>Accessible description; <code>""</code> only for decorative images</td>
|
|
152
|
-
</tr>
|
|
153
|
-
<tr>
|
|
154
|
-
<td><code>loading</code></td>
|
|
155
|
-
<td><code>lazy</code> (default) · <code>eager</code></td>
|
|
156
|
-
<td>Native lazy loading</td>
|
|
157
|
-
</tr>
|
|
158
|
-
<tr>
|
|
159
|
-
<td><code>ratio</code></td>
|
|
160
|
-
<td>CSS ratio (default <code>auto</code>)</td>
|
|
161
|
-
<td><code>aspect-ratio</code> of the image; ignored when <code>cover</code> is set</td>
|
|
162
|
-
</tr>
|
|
163
|
-
<tr>
|
|
164
|
-
<td><code>rounded</code></td>
|
|
165
|
-
<td><code>none</code> (default) · boolean · <code>base</code> · <code>sm</code> · <code>md</code> · <code>lg</code> · <code>xl</code> · <code>full</code></td>
|
|
166
|
-
<td>Corner radius from theme tokens</td>
|
|
167
|
-
</tr>
|
|
168
|
-
<tr>
|
|
169
|
-
<td><code>objectPosition</code></td>
|
|
170
|
-
<td>CSS position (default <code>center center</code>)</td>
|
|
171
|
-
<td>Maps to <code>object-position</code></td>
|
|
172
|
-
</tr>
|
|
173
|
-
<tr>
|
|
174
|
-
<td><code>imageRendering</code></td>
|
|
175
|
-
<td>CSS value (default <code>auto</code>)</td>
|
|
176
|
-
<td>Maps to <code>image-rendering</code></td>
|
|
177
|
-
</tr>
|
|
178
|
-
<tr>
|
|
179
|
-
<td><code>cover</code></td>
|
|
180
|
-
<td>boolean</td>
|
|
181
|
-
<td>Absolutely fills a positioned parent</td>
|
|
182
|
-
</tr>
|
|
183
|
-
<tr>
|
|
184
|
-
<td><code>transition</code></td>
|
|
185
|
-
<td><code>fade</code> · <code>fade-scale-out</code></td>
|
|
186
|
-
<td>Entrance animation after <code>load</code>; not replayed on <code>src</code> change</td>
|
|
187
|
-
</tr>
|
|
188
|
-
</tbody></table>
|
|
189
|
-
<p>No slots.</p>
|
|
190
|
-
|
|
191
|
-
</article>
|
|
192
|
-
</main>
|
|
193
|
-
</body>
|
|
194
|
-
</html>
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
# Image
|
|
2
|
-
|
|
3
|
-
**`sonic-image`** wraps a responsive `<img>` with aspect ratio, `object-fit: cover`, optional rounded corners and a load transition. The host shows a placeholder background (`--sc-placeholder-bg`) until the file loads. With no `loading`, the image is `lazy`; set `loading="eager"` for above-the-fold images.
|
|
4
|
-
|
|
5
|
-
## Rounded
|
|
6
|
-
|
|
7
|
-
With no `rounded`, corners are square. Boolean `rounded` uses the theme token `--sc-rounded`; `full` draws a circle when paired with `ratio="1/1"`.
|
|
8
|
-
|
|
9
|
-
<sonic-code>
|
|
10
|
-
<template>
|
|
11
|
-
<div class="grid gap-6 grid-cols-3 lg:grid-cols-4 items-end text-center text-xs">
|
|
12
|
-
<div>
|
|
13
|
-
<sonic-image ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
14
|
-
<p class="mt-2">default</p>
|
|
15
|
-
</div>
|
|
16
|
-
<div>
|
|
17
|
-
<sonic-image rounded="sm" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
18
|
-
<p class="mt-2">sm</p>
|
|
19
|
-
</div>
|
|
20
|
-
<div>
|
|
21
|
-
<sonic-image rounded ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
22
|
-
<p class="mt-2">rounded</p>
|
|
23
|
-
</div>
|
|
24
|
-
<div>
|
|
25
|
-
<sonic-image rounded="md" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
26
|
-
<p class="mt-2">md</p>
|
|
27
|
-
</div>
|
|
28
|
-
<div>
|
|
29
|
-
<sonic-image rounded="lg" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
30
|
-
<p class="mt-2">lg</p>
|
|
31
|
-
</div>
|
|
32
|
-
<div>
|
|
33
|
-
<sonic-image rounded="xl" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
34
|
-
<p class="mt-2">xl</p>
|
|
35
|
-
</div>
|
|
36
|
-
<div>
|
|
37
|
-
<sonic-image rounded="full" ratio="1/1" src="img/concorde/plane_04.jpg" alt="Concorde on the apron"></sonic-image>
|
|
38
|
-
<p class="mt-2">full</p>
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
|
-
</template>
|
|
42
|
-
</sonic-code>
|
|
43
|
-
|
|
44
|
-
## Aspect ratio
|
|
45
|
-
|
|
46
|
-
`ratio` sets CSS `aspect-ratio` on the image (default `auto`). The image always fills the host width.
|
|
47
|
-
|
|
48
|
-
<sonic-code>
|
|
49
|
-
<template>
|
|
50
|
-
<div class="grid gap-8 grid-cols-2 items-center">
|
|
51
|
-
<sonic-image src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
|
|
52
|
-
<sonic-image ratio="16/9" src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
|
|
53
|
-
<sonic-image ratio="1/1" src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
|
|
54
|
-
<sonic-image ratio="2/3" src="img/concorde/plane_12.jpg" alt="Concorde at the gate"></sonic-image>
|
|
55
|
-
</div>
|
|
56
|
-
</template>
|
|
57
|
-
</sonic-code>
|
|
58
|
-
|
|
59
|
-
## Object position
|
|
60
|
-
|
|
61
|
-
`objectPosition` maps to CSS `object-position` (default `center center`). Use it on wide crops when the subject sits off-center.
|
|
62
|
-
|
|
63
|
-
<sonic-code>
|
|
64
|
-
<template>
|
|
65
|
-
<div class="grid gap-8 grid-cols-2 items-center">
|
|
66
|
-
<sonic-image ratio="11/4" src="img/concorde/plane_11.jpg" alt="Concorde flying over a field"></sonic-image>
|
|
67
|
-
<sonic-image objectPosition="center top" ratio="11/4" src="img/concorde/plane_11.jpg" alt="Concorde flying over a field"></sonic-image>
|
|
68
|
-
</div>
|
|
69
|
-
</template>
|
|
70
|
-
</sonic-code>
|
|
71
|
-
|
|
72
|
-
## Cover
|
|
73
|
-
|
|
74
|
-
`cover` stretches the image over a **positioned** parent (`position: relative` with a height). `ratio` is ignored while `cover` is set.
|
|
75
|
-
|
|
76
|
-
<sonic-code>
|
|
77
|
-
<template>
|
|
78
|
-
<div class="h-96 relative rounded-lg overflow-hidden">
|
|
79
|
-
<sonic-image cover src="img/concorde/plane_10.jpg" alt="Concorde fleet parked in a star"></sonic-image>
|
|
80
|
-
</div>
|
|
81
|
-
</template>
|
|
82
|
-
</sonic-code>
|
|
83
|
-
|
|
84
|
-
## Load transition
|
|
85
|
-
|
|
86
|
-
Set `transition` to `fade` or `fade-scale-out`. The image stays transparent until the browser fires `load`, then animates in. **Changing `src` on an existing element does not replay the effect**: mount a new `sonic-image` instead (galleries, infinite scroll).
|
|
87
|
-
|
|
88
|
-
<sonic-code>
|
|
89
|
-
<template>
|
|
90
|
-
<div class="flex flex-wrap gap-2 mb-4">
|
|
91
|
-
<sonic-button
|
|
92
|
-
size="sm"
|
|
93
|
-
onclick="(function () {
|
|
94
|
-
var host = document.getElementById('sonic-image-transition-host');
|
|
95
|
-
var img = document.createElement('sonic-image');
|
|
96
|
-
img.transition = 'fade';
|
|
97
|
-
img.ratio = '1/1';
|
|
98
|
-
img.rounded = 'md';
|
|
99
|
-
img.loading = 'eager';
|
|
100
|
-
img.style.width = '8rem';
|
|
101
|
-
var pics = ['01', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13'];
|
|
102
|
-
img.src = 'img/concorde/plane_' + pics[host.childElementCount % pics.length] + '.jpg';
|
|
103
|
-
host.appendChild(img);
|
|
104
|
-
})()"
|
|
105
|
-
>
|
|
106
|
-
Add image (fade)
|
|
107
|
-
</sonic-button>
|
|
108
|
-
<sonic-button
|
|
109
|
-
size="sm"
|
|
110
|
-
variant="outline"
|
|
111
|
-
onclick="(function () {
|
|
112
|
-
var host = document.getElementById('sonic-image-transition-host');
|
|
113
|
-
var img = document.createElement('sonic-image');
|
|
114
|
-
img.transition = 'fade-scale-out';
|
|
115
|
-
img.ratio = '1/1';
|
|
116
|
-
img.rounded = 'md';
|
|
117
|
-
img.loading = 'eager';
|
|
118
|
-
img.style.width = '8rem';
|
|
119
|
-
var pics = ['01', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13'];
|
|
120
|
-
img.src = 'img/concorde/plane_' + pics[host.childElementCount % pics.length] + '.jpg';
|
|
121
|
-
host.appendChild(img);
|
|
122
|
-
})()"
|
|
123
|
-
>
|
|
124
|
-
Add image (fade-scale-out)
|
|
125
|
-
</sonic-button>
|
|
126
|
-
<sonic-button
|
|
127
|
-
size="sm"
|
|
128
|
-
variant="ghost"
|
|
129
|
-
onclick="document.getElementById('sonic-image-transition-host').replaceChildren()"
|
|
130
|
-
>
|
|
131
|
-
Clear
|
|
132
|
-
</sonic-button>
|
|
133
|
-
</div>
|
|
134
|
-
<div id="sonic-image-transition-host" class="flex flex-wrap gap-2 min-h-[5rem]"></div>
|
|
135
|
-
</template>
|
|
136
|
-
</sonic-code>
|
|
137
|
-
|
|
138
|
-
## Accessibility
|
|
139
|
-
|
|
140
|
-
Always set a meaningful `alt`. Use `alt=""` only for decorative images.
|
|
141
|
-
|
|
142
|
-
<sonic-code>
|
|
143
|
-
<template>
|
|
144
|
-
<sonic-image
|
|
145
|
-
rounded="md"
|
|
146
|
-
ratio="16/9"
|
|
147
|
-
alt="Crowd gathered around Concorde at night"
|
|
148
|
-
src="img/concorde/plane_07.jpg"
|
|
149
|
-
></sonic-image>
|
|
150
|
-
</template>
|
|
151
|
-
</sonic-code>
|
|
152
|
-
|
|
153
|
-
## API reference
|
|
154
|
-
|
|
155
|
-
| Attribute | Values | Description |
|
|
156
|
-
|----------|---------|-------------|
|
|
157
|
-
| `src` | URL | Image URL passed to `<img src>` |
|
|
158
|
-
| `alt` | string | Accessible description; `""` only for decorative images |
|
|
159
|
-
| `loading` | `lazy` (default) · `eager` | Native lazy loading |
|
|
160
|
-
| `ratio` | CSS ratio (default `auto`) | `aspect-ratio` of the image; ignored when `cover` is set |
|
|
161
|
-
| `rounded` | `none` (default) · boolean · `base` · `sm` · `md` · `lg` · `xl` · `full` | Corner radius from theme tokens |
|
|
162
|
-
| `objectPosition` | CSS position (default `center center`) | Maps to `object-position` |
|
|
163
|
-
| `imageRendering` | CSS value (default `auto`) | Maps to `image-rendering` |
|
|
164
|
-
| `cover` | boolean | Absolutely fills a positioned parent |
|
|
165
|
-
| `transition` | `fade` · `fade-scale-out` | Entrance animation after `load`; not replayed on `src` change |
|
|
166
|
-
|
|
167
|
-
No slots.
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# Link
|
|
2
|
-
|
|
3
|
-
Links **navigate** with inherited typography: internal routes, anchors, or external URLs. The default slot is the anchor label. For in-app routing, pair **`href`** with **`pushstate`**; use **`autoActive`** to reflect the current URL on the host (`active`).
|
|
4
|
-
|
|
5
|
-
## Basic example
|
|
6
|
-
|
|
7
|
-
<sonic-code>
|
|
8
|
-
<template>
|
|
9
|
-
<sonic-link href="/">Basic link with href attribute</sonic-link>
|
|
10
|
-
</template>
|
|
11
|
-
</sonic-code>
|
|
12
|
-
|
|
13
|
-
## Target
|
|
14
|
-
|
|
15
|
-
**`target="_blank"`** opens a new browsing context and sets **`rel="noopener noreferrer"`**.
|
|
16
|
-
|
|
17
|
-
<sonic-code>
|
|
18
|
-
<template>
|
|
19
|
-
<sonic-link href="/" target="_blank">Link with target attribute</sonic-link>
|
|
20
|
-
</template>
|
|
21
|
-
</sonic-code>
|
|
22
|
-
|
|
23
|
-
## Pushstate
|
|
24
|
-
|
|
25
|
-
Set **`pushstate`** on same-origin **`href`** values to intercept clicks and navigate through Concorde’s client router without a full reload.
|
|
26
|
-
|
|
27
|
-
<sonic-code>
|
|
28
|
-
<template>
|
|
29
|
-
<sonic-link href="/core/components/ui/link" pushstate>Client navigation (pushstate)</sonic-link>
|
|
30
|
-
</template>
|
|
31
|
-
</sonic-code>
|
|
32
|
-
|
|
33
|
-
## AutoActive
|
|
34
|
-
|
|
35
|
-
Default **`autoActive`** is **`partial`**: the host gets **`active`** when the current URL starts with **`href`**. Style with **`[&[active]]:`** utilities or host selectors.
|
|
36
|
-
|
|
37
|
-
<sonic-code>
|
|
38
|
-
<template>
|
|
39
|
-
<sonic-link href="/core/components" class="[&[active]]:text-success">autoActive partial (default)</sonic-link>
|
|
40
|
-
</template>
|
|
41
|
-
</sonic-code>
|
|
42
|
-
|
|
43
|
-
### AutoActive strict vs partial
|
|
44
|
-
|
|
45
|
-
**`strict`** requires pathname, search, and hash to match. **`strict-path-only`** matches pathname and hash but ignores search.
|
|
46
|
-
|
|
47
|
-
<sonic-code>
|
|
48
|
-
<template>
|
|
49
|
-
<div class="grid gap-3">
|
|
50
|
-
<sonic-link href="/core/components/ui/link" autoActive="strict" class="[&[active]]:text-success">autoActive strict</sonic-link>
|
|
51
|
-
<sonic-link href="/core/components/ui/button" autoActive="strict" class="[&[active]]:text-success">autoActive strict (other page)</sonic-link>
|
|
52
|
-
<sonic-link href="/core/components" autoActive="strict-path-only" class="[&[active]]:text-success">autoActive strict-path-only</sonic-link>
|
|
53
|
-
</div>
|
|
54
|
-
</template>
|
|
55
|
-
</sonic-code>
|
|
56
|
-
|
|
57
|
-
### AutoActive disabled
|
|
58
|
-
|
|
59
|
-
<sonic-code>
|
|
60
|
-
<template>
|
|
61
|
-
<sonic-link href="/core/components/ui/link" autoActive="disabled" class="[&[active]]:text-success">autoActive disabled</sonic-link>
|
|
62
|
-
</template>
|
|
63
|
-
</sonic-code>
|
|
64
|
-
|
|
65
|
-
## Accessibility
|
|
66
|
-
|
|
67
|
-
The inner **`<a>`** uses **`focus-visible`** outline styling. Set **`data-aria-label`** when the slot text is not sufficient on its own.
|
|
68
|
-
|
|
69
|
-
## API reference
|
|
70
|
-
|
|
71
|
-
| Attribute | Values | Description |
|
|
72
|
-
|----------|---------|-------------|
|
|
73
|
-
| `href` | URL | Link target; without **`href`**, only the slot is rendered (no **`<a>`**) |
|
|
74
|
-
| `target` | e.g. `_blank` | Navigation target; **`_blank`** adds **`rel="noopener noreferrer"`** |
|
|
75
|
-
| `pushstate` | boolean | Intercepts click for Concorde client navigation without reload |
|
|
76
|
-
| `autoActive` | `partial` (default) · `strict` · `strict-path-only` · `disabled` | When the host gets the **`active`** attribute (same-origin **`href`** only) |
|
|
77
|
-
| `data-aria-label` | string | Accessible **`aria-label`** when the slot text is not enough |
|
|
78
|
-
|
|
79
|
-
| Slot | Description |
|
|
80
|
-
|------|-------------|
|
|
81
|
-
| *(default)* | Link content (text, icons) |
|