@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,41 +1,70 @@
|
|
|
1
1
|
# Image
|
|
2
2
|
|
|
3
|
-
**`sonic-image`** wraps a responsive
|
|
3
|
+
**`sonic-image`** wraps a responsive **`<img>`** with aspect ratio, `object-fit: cover`, optional rounded corners, and load transitions. The host shows a placeholder background (`--sc-placeholder-bg`) until the asset loads. Default **`loading`** is `lazy`; use **`loading="eager"`** for above-the-fold heroes.
|
|
4
4
|
|
|
5
5
|
## Rounded
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Omit `rounded` for square corners. Boolean **`rounded`** uses the theme token `--sc-rounded`. Sizes: **`sm`**, **`md`**, **`lg`**, **`xl`**, **`full`** (circle — pair with `ratio="1/1"`), **`none`** (explicit reset).
|
|
8
8
|
|
|
9
9
|
<sonic-code>
|
|
10
10
|
<template>
|
|
11
|
-
<div class="grid gap-6 grid-cols-3
|
|
11
|
+
<div class="grid gap-6 grid-cols-3 lg:grid-cols-4 items-end text-center text-xs ">
|
|
12
12
|
<div>
|
|
13
|
-
<sonic-image
|
|
13
|
+
<sonic-image
|
|
14
|
+
ratio="1/1"
|
|
15
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
16
|
+
></sonic-image>
|
|
14
17
|
<p class="mt-2">default</p>
|
|
15
18
|
</div>
|
|
16
19
|
<div>
|
|
17
|
-
<sonic-image
|
|
20
|
+
<sonic-image
|
|
21
|
+
rounded="sm"
|
|
22
|
+
ratio="1/1"
|
|
23
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
24
|
+
></sonic-image>
|
|
18
25
|
<p class="mt-2">sm</p>
|
|
19
26
|
</div>
|
|
20
27
|
<div>
|
|
21
|
-
<sonic-image
|
|
28
|
+
<sonic-image
|
|
29
|
+
rounded
|
|
30
|
+
ratio="1/1"
|
|
31
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
32
|
+
></sonic-image>
|
|
22
33
|
<p class="mt-2">rounded</p>
|
|
23
34
|
</div>
|
|
24
35
|
<div>
|
|
25
|
-
<sonic-image
|
|
36
|
+
<sonic-image
|
|
37
|
+
rounded="md"
|
|
38
|
+
ratio="1/1"
|
|
39
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
40
|
+
></sonic-image>
|
|
26
41
|
<p class="mt-2">md</p>
|
|
27
42
|
</div>
|
|
28
43
|
<div>
|
|
29
|
-
<sonic-image
|
|
44
|
+
<sonic-image
|
|
45
|
+
rounded="lg"
|
|
46
|
+
ratio="1/1"
|
|
47
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
48
|
+
></sonic-image>
|
|
30
49
|
<p class="mt-2">lg</p>
|
|
31
50
|
</div>
|
|
32
51
|
<div>
|
|
33
|
-
<sonic-image
|
|
52
|
+
<sonic-image
|
|
53
|
+
rounded="xl"
|
|
54
|
+
ratio="1/1"
|
|
55
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
56
|
+
></sonic-image>
|
|
34
57
|
<p class="mt-2">xl</p>
|
|
35
58
|
</div>
|
|
36
|
-
<div>
|
|
37
|
-
<
|
|
38
|
-
|
|
59
|
+
<div >
|
|
60
|
+
<div >
|
|
61
|
+
<sonic-image
|
|
62
|
+
rounded="full"
|
|
63
|
+
ratio="1/1"
|
|
64
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
65
|
+
></sonic-image>
|
|
66
|
+
<p class="mt-2">full</p>
|
|
67
|
+
</div>
|
|
39
68
|
</div>
|
|
40
69
|
</div>
|
|
41
70
|
</template>
|
|
@@ -43,47 +72,70 @@ With no `rounded`, corners are square. Boolean `rounded` uses the theme token `-
|
|
|
43
72
|
|
|
44
73
|
## Aspect ratio
|
|
45
74
|
|
|
46
|
-
|
|
75
|
+
**`ratio`** sets CSS `aspect-ratio` on the image (default **`auto`**). The image still fills the host width (`width: 100%`).
|
|
47
76
|
|
|
48
77
|
<sonic-code>
|
|
49
78
|
<template>
|
|
50
79
|
<div class="grid gap-8 grid-cols-2 items-center">
|
|
51
|
-
<sonic-image
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
<sonic-image
|
|
80
|
+
<sonic-image
|
|
81
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
82
|
+
></sonic-image>
|
|
83
|
+
<sonic-image
|
|
84
|
+
ratio="16/9"
|
|
85
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
86
|
+
></sonic-image>
|
|
87
|
+
<sonic-image
|
|
88
|
+
ratio="1/1"
|
|
89
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
90
|
+
></sonic-image>
|
|
91
|
+
<sonic-image
|
|
92
|
+
ratio="2/3"
|
|
93
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
94
|
+
></sonic-image>
|
|
55
95
|
</div>
|
|
56
96
|
</template>
|
|
57
97
|
</sonic-code>
|
|
58
98
|
|
|
59
99
|
## Object position
|
|
60
100
|
|
|
61
|
-
|
|
101
|
+
**`objectPosition`** maps to CSS `object-position` (default **`center center`**). Useful on wide crops when the subject sits off-center.
|
|
62
102
|
|
|
63
103
|
<sonic-code>
|
|
64
104
|
<template>
|
|
65
105
|
<div class="grid gap-8 grid-cols-2 items-center">
|
|
66
|
-
<sonic-image
|
|
67
|
-
|
|
106
|
+
<sonic-image
|
|
107
|
+
ratio="11/4"
|
|
108
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
109
|
+
></sonic-image>
|
|
110
|
+
<sonic-image
|
|
111
|
+
objectPosition="center top"
|
|
112
|
+
ratio="11/4"
|
|
113
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
114
|
+
></sonic-image>
|
|
68
115
|
</div>
|
|
69
116
|
</template>
|
|
70
117
|
</sonic-code>
|
|
71
118
|
|
|
72
119
|
## Cover
|
|
73
120
|
|
|
74
|
-
|
|
121
|
+
**`cover`** stretches the image to fill a **positioned** parent (`position: relative` + fixed height or inset). Aspect ratio on the host is ignored while `cover` is set.
|
|
75
122
|
|
|
76
123
|
<sonic-code>
|
|
77
124
|
<template>
|
|
78
125
|
<div class="h-96 relative rounded-lg overflow-hidden">
|
|
79
|
-
<sonic-image
|
|
126
|
+
<sonic-image
|
|
127
|
+
cover
|
|
128
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
129
|
+
></sonic-image>
|
|
80
130
|
</div>
|
|
81
131
|
</template>
|
|
82
132
|
</sonic-code>
|
|
83
133
|
|
|
84
134
|
## Load transition
|
|
85
135
|
|
|
86
|
-
Set
|
|
136
|
+
Set **`transition`** to **`fade`** (default when the attribute is present) or **`fade-scale-out`**. The image stays at `opacity: 0` until the browser fires **`load`**, then the **`loaded`** class runs the animation. Changing `src` on an existing element does not replay the effect — mount a new `sonic-image` when you need another entrance (galleries, infinite scroll).
|
|
137
|
+
|
|
138
|
+
Click **Add image** to append small thumbnails and replay the transition. **Clear** resets the row.
|
|
87
139
|
|
|
88
140
|
<sonic-code>
|
|
89
141
|
<template>
|
|
@@ -98,8 +150,7 @@ Set `transition` to `fade` or `fade-scale-out`. The image stays transparent unti
|
|
|
98
150
|
img.rounded = 'md';
|
|
99
151
|
img.loading = 'eager';
|
|
100
152
|
img.style.width = '8rem';
|
|
101
|
-
|
|
102
|
-
img.src = 'img/concorde/plane_' + pics[host.childElementCount % pics.length] + '.jpg';
|
|
153
|
+
img.src = 'https://picsum.photos/seed/' + Date.now() + '/120/120';
|
|
103
154
|
host.appendChild(img);
|
|
104
155
|
})()"
|
|
105
156
|
>
|
|
@@ -116,8 +167,7 @@ Set `transition` to `fade` or `fade-scale-out`. The image stays transparent unti
|
|
|
116
167
|
img.rounded = 'md';
|
|
117
168
|
img.loading = 'eager';
|
|
118
169
|
img.style.width = '8rem';
|
|
119
|
-
|
|
120
|
-
img.src = 'img/concorde/plane_' + pics[host.childElementCount % pics.length] + '.jpg';
|
|
170
|
+
img.src = 'https://picsum.photos/seed/' + Date.now() + '/120/120';
|
|
121
171
|
host.appendChild(img);
|
|
122
172
|
})()"
|
|
123
173
|
>
|
|
@@ -135,17 +185,17 @@ Set `transition` to `fade` or `fade-scale-out`. The image stays transparent unti
|
|
|
135
185
|
</template>
|
|
136
186
|
</sonic-code>
|
|
137
187
|
|
|
138
|
-
## Accessibility
|
|
188
|
+
## Accessibility and parts
|
|
139
189
|
|
|
140
|
-
Always set
|
|
190
|
+
Always set meaningful **`alt`** text (empty string only for decorative images).
|
|
141
191
|
|
|
142
192
|
<sonic-code>
|
|
143
193
|
<template>
|
|
144
194
|
<sonic-image
|
|
145
195
|
rounded="md"
|
|
146
196
|
ratio="16/9"
|
|
147
|
-
alt="
|
|
148
|
-
src="
|
|
197
|
+
alt="Concorde aircraft in flight"
|
|
198
|
+
src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg"
|
|
149
199
|
></sonic-image>
|
|
150
200
|
</template>
|
|
151
201
|
</sonic-code>
|
|
@@ -155,13 +205,29 @@ Always set a meaningful `alt`. Use `alt=""` only for decorative images.
|
|
|
155
205
|
| Attribute | Values | Description |
|
|
156
206
|
|----------|---------|-------------|
|
|
157
207
|
| `src` | URL | Image URL passed to `<img src>` |
|
|
158
|
-
| `alt` | string | Accessible description; `""` only for decorative images |
|
|
159
|
-
| `loading` | `lazy` (default)
|
|
160
|
-
| `ratio` | CSS ratio
|
|
161
|
-
| `rounded` | `none` (default)
|
|
162
|
-
| `objectPosition` | CSS position
|
|
163
|
-
| `imageRendering` | CSS value
|
|
164
|
-
| `cover` | boolean | Absolutely fills a positioned parent |
|
|
165
|
-
| `transition` | `fade
|
|
166
|
-
|
|
167
|
-
No slots
|
|
208
|
+
| `alt` | string | Accessible description; use `""` only for decorative images |
|
|
209
|
+
| `loading` | `lazy` (default), `eager` | Native lazy loading |
|
|
210
|
+
| `ratio` | CSS ratio, `auto` (default) | Host `aspect-ratio` on the image (ignored when `cover` is set) |
|
|
211
|
+
| `rounded` | `none` (default), boolean, `base`, `sm`, `md`, `lg`, `xl`, `full` | Corner radius from theme tokens; `full` is a circle (often with `ratio="1/1"`) |
|
|
212
|
+
| `objectPosition` | CSS position | Maps to `object-position` (default `center center`) |
|
|
213
|
+
| `imageRendering` | CSS value | Maps to `image-rendering` (default `auto`) |
|
|
214
|
+
| `cover` | boolean | Absolutely fills a positioned parent; host aspect ratio is ignored |
|
|
215
|
+
| `transition` | `fade`, `fade-scale-out` | Opacity (and scale) animation after `load`; remount to replay on `src` change |
|
|
216
|
+
|
|
217
|
+
No slots — content is driven entirely by attributes on the inner `<img>`.
|
|
218
|
+
|
|
219
|
+
## API reference
|
|
220
|
+
|
|
221
|
+
| Attribute | Values | Description |
|
|
222
|
+
|----------|---------|-------------|
|
|
223
|
+
| `src` | URL | Image URL passed to `<img src>` |
|
|
224
|
+
| `alt` | string | Accessible description; use `""` only for decorative images |
|
|
225
|
+
| `loading` | `lazy` (default), `eager` | Native lazy loading |
|
|
226
|
+
| `ratio` | CSS ratio, `auto` (default) | Host `aspect-ratio` on the image (ignored when `cover` is set) |
|
|
227
|
+
| `rounded` | `none` (default), boolean, `base`, `sm`, `md`, `lg`, `xl`, `full` | Corner radius from theme tokens; `full` is a circle (often with `ratio="1/1"`) |
|
|
228
|
+
| `objectPosition` | CSS position | Maps to `object-position` (default `center center`) |
|
|
229
|
+
| `imageRendering` | CSS value | Maps to `image-rendering` (default `auto`) |
|
|
230
|
+
| `cover` | boolean | Absolutely fills a positioned parent; host aspect ratio is ignored |
|
|
231
|
+
| `transition` | `fade`, `fade-scale-out` | Opacity (and scale) animation after `load`; remount to replay on `src` change |
|
|
232
|
+
|
|
233
|
+
No slots — content is driven entirely by attributes on the inner `<img>`.
|
|
@@ -26,7 +26,7 @@ Set **`pushstate`** on same-origin **`href`** values to intercept clicks and nav
|
|
|
26
26
|
|
|
27
27
|
<sonic-code>
|
|
28
28
|
<template>
|
|
29
|
-
<sonic-link href="
|
|
29
|
+
<sonic-link href="/#core/components" pushstate>Client navigation (pushstate)</sonic-link>
|
|
30
30
|
</template>
|
|
31
31
|
</sonic-code>
|
|
32
32
|
|
|
@@ -36,7 +36,7 @@ Default **`autoActive`** is **`partial`**: the host gets **`active`** when the c
|
|
|
36
36
|
|
|
37
37
|
<sonic-code>
|
|
38
38
|
<template>
|
|
39
|
-
<sonic-link href="
|
|
39
|
+
<sonic-link href="/#core/components" class="[&[active]]:text-success">autoActive partial (default)</sonic-link>
|
|
40
40
|
</template>
|
|
41
41
|
</sonic-code>
|
|
42
42
|
|
|
@@ -47,9 +47,9 @@ Default **`autoActive`** is **`partial`**: the host gets **`active`** when the c
|
|
|
47
47
|
<sonic-code>
|
|
48
48
|
<template>
|
|
49
49
|
<div class="grid gap-3">
|
|
50
|
-
<sonic-link href="
|
|
51
|
-
<sonic-link href="
|
|
52
|
-
<sonic-link href="
|
|
50
|
+
<sonic-link href="/#core" autoActive="strict" class="[&[active]]:text-success">autoActive strict</sonic-link>
|
|
51
|
+
<sonic-link href="/#core/components/ui/link/link.md/link" autoActive="strict" class="[&[active]]:text-success">autoActive strict (long href)</sonic-link>
|
|
52
|
+
<sonic-link href="/#core/components" autoActive="strict-path-only" class="[&[active]]:text-success">autoActive strict-path-only</sonic-link>
|
|
53
53
|
</div>
|
|
54
54
|
</template>
|
|
55
55
|
</sonic-code>
|
|
@@ -58,7 +58,7 @@ Default **`autoActive`** is **`partial`**: the host gets **`active`** when the c
|
|
|
58
58
|
|
|
59
59
|
<sonic-code>
|
|
60
60
|
<template>
|
|
61
|
-
<sonic-link href="
|
|
61
|
+
<sonic-link href="/#core/components/ui/link/link.md/link" autoActive="disabled" class="[&[active]]:text-success">autoActive disabled</sonic-link>
|
|
62
62
|
</template>
|
|
63
63
|
</sonic-code>
|
|
64
64
|
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
# Loader
|
|
2
2
|
|
|
3
|
-
**`sonic-loader`** shows a loading animation
|
|
3
|
+
**`sonic-loader`** shows a loading animation in the page or as a viewport overlay. Default **`mode`** is **`fixed`** (centered overlay). Use **`inline`** inside lists and fetch placeholders. Pair **`noDelay`** when the spinner should appear without the default fade-in wait. For **`sonic-fetch`** / **`sonic-list`**, set the parent **`loader`** attribute instead of embedding a tag manually.
|
|
4
|
+
|
|
5
|
+
## Basic example
|
|
6
|
+
|
|
7
|
+
Inline loaders fit content areas; they use the theme primary color unless **`currentColor`** is set.
|
|
8
|
+
|
|
9
|
+
<sonic-code>
|
|
10
|
+
<template>
|
|
11
|
+
<sonic-loader mode="inline"></sonic-loader>
|
|
12
|
+
</template>
|
|
13
|
+
</sonic-code>
|
|
4
14
|
|
|
5
15
|
## Mode
|
|
6
16
|
|
|
7
|
-
|
|
17
|
+
**`inline`** — ellipsis animation in the document flow. **`fixed`** — centered overlay (`position: fixed`); default when the tag is omitted.
|
|
8
18
|
|
|
9
19
|
<sonic-code>
|
|
10
20
|
<template>
|
|
@@ -12,26 +22,30 @@
|
|
|
12
22
|
</template>
|
|
13
23
|
</sonic-code>
|
|
14
24
|
|
|
25
|
+
Use the checkbox below to toggle a **`fixed`** loader over the page (default **`mode`** on **`sonic-loader`**).
|
|
26
|
+
|
|
15
27
|
<docs-lit-demo for="docs-toggle-loader-demo"></docs-lit-demo>
|
|
16
28
|
|
|
17
|
-
##
|
|
29
|
+
## Inline alignment and color
|
|
18
30
|
|
|
19
|
-
|
|
31
|
+
**`align`** only affects **`mode="inline"`**: **`left`** · **`center`** (default) · **`right`**. Set **`currentColor`** so dots follow the host `color` (for example on a purple parent).
|
|
20
32
|
|
|
21
33
|
<sonic-code>
|
|
22
34
|
<template>
|
|
23
35
|
<div class="grid gap-4">
|
|
24
36
|
<sonic-loader mode="inline" currentColor style="color: purple;"></sonic-loader>
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
|
|
37
|
+
<div class="flex flex-col gap-2">
|
|
38
|
+
<sonic-loader mode="inline" align="left"></sonic-loader>
|
|
39
|
+
<sonic-loader mode="inline" align="center"></sonic-loader>
|
|
40
|
+
<sonic-loader mode="inline" align="right"></sonic-loader>
|
|
41
|
+
</div>
|
|
28
42
|
</div>
|
|
29
43
|
</template>
|
|
30
44
|
</sonic-code>
|
|
31
45
|
|
|
32
|
-
##
|
|
46
|
+
## `noDelay`
|
|
33
47
|
|
|
34
|
-
|
|
48
|
+
By default **`mode="fixed"`** waits briefly before fading in. **`mode="inline"`** already skips that wait. Set **`noDelay`** on **`fixed`** (or pass **`noDelay: true`** to **`Loader.show()`**) to appear immediately.
|
|
35
49
|
|
|
36
50
|
<sonic-code>
|
|
37
51
|
<template>
|
|
@@ -39,33 +53,42 @@ A `fixed` loader waits 0.5 s before fading in, so short requests show nothing. `
|
|
|
39
53
|
</template>
|
|
40
54
|
</sonic-code>
|
|
41
55
|
|
|
42
|
-
## Accessibility
|
|
56
|
+
## Accessibility (`announce`)
|
|
43
57
|
|
|
44
|
-
The animation is
|
|
58
|
+
The animation is **`aria-hidden`** by default so screen readers are not spammed on every fetch. Set **`announce`** when the loader is injected **after** user action (for example a global overlay): the host gets **`role="status"`**, **`aria-live="polite"`**, and a localized **`aria-label`** (“Loading” / “Chargement en cours”, …). For in-button loading, prefer **`sonic-button`** **`loading`** and **`aria-busy`** on the control—not on the loader.
|
|
45
59
|
|
|
46
60
|
<sonic-code>
|
|
47
61
|
<template>
|
|
48
|
-
<
|
|
49
|
-
<sonic-loader mode="inline" announce></sonic-loader>
|
|
50
|
-
<sonic-button loading>Confirm check-in</sonic-button>
|
|
51
|
-
</div>
|
|
62
|
+
<sonic-loader mode="inline" announce></sonic-loader>
|
|
52
63
|
</template>
|
|
53
64
|
</sonic-code>
|
|
54
65
|
|
|
55
66
|
## Show and hide programmatically
|
|
56
67
|
|
|
57
|
-
|
|
68
|
+
Import **`Loader`** and call **`Loader.show()`** / **`Loader.hide()`**. **`hide()`** is reference-counted: call it once per **`show()`**. With no **`container`**, the loader is appended to the theme pop container and **`mode`** is always **`fixed`**. Pass **`container`** and **`mode: "inline"`** to mount an inline instance in a specific element.
|
|
58
69
|
|
|
59
70
|
<sonic-code language="javascript">
|
|
60
71
|
<template>
|
|
61
|
-
import { Loader } from "@supersoniks/concorde/ui/loader";
|
|
72
|
+
import { Loader } from "@supersoniks/concorde/core/components/ui/loader/loader";
|
|
73
|
+
|
|
74
|
+
Loader.show({
|
|
75
|
+
mode: "fixed",
|
|
76
|
+
noDelay: false,
|
|
77
|
+
announce: true,
|
|
78
|
+
container: document.querySelector("#foo"),
|
|
79
|
+
});
|
|
62
80
|
|
|
63
|
-
Loader.show({ announce: true });
|
|
64
|
-
// …
|
|
65
81
|
Loader.hide();
|
|
82
|
+
</template>
|
|
83
|
+
</sonic-code>
|
|
84
|
+
|
|
85
|
+
## Composition
|
|
66
86
|
|
|
67
|
-
|
|
68
|
-
|
|
87
|
+
**`sonic-button`** **`loading`** shows an icon spinner and sets **`aria-busy`** on the button. **`sonic-fetch`** and **`sonic-list`** render **`sonic-loader`** when their **`loader`** attribute is set: **`true`** or an empty string maps to **`fixed`**; otherwise use **`inline`** or **`fixed`**.
|
|
88
|
+
|
|
89
|
+
<sonic-code>
|
|
90
|
+
<template>
|
|
91
|
+
<sonic-button loading>Save changes</sonic-button>
|
|
69
92
|
</template>
|
|
70
93
|
</sonic-code>
|
|
71
94
|
|
|
@@ -73,15 +96,17 @@ Loader.show({ mode: "inline", container: document.querySelector("#results") });
|
|
|
73
96
|
|
|
74
97
|
| Attribute | Values | Description |
|
|
75
98
|
|----------|---------|-------------|
|
|
76
|
-
| `mode` | `inline` · `fixed` (default `fixed`) |
|
|
77
|
-
| `noDelay` | boolean | Skips the
|
|
78
|
-
| `announce` | boolean |
|
|
79
|
-
| `align` | `left` · `center` · `right`
|
|
80
|
-
| `currentColor` | boolean |
|
|
99
|
+
| `mode` | `inline` · `fixed` (default `fixed`) | Layout: in-flow ellipsis vs viewport-centered overlay |
|
|
100
|
+
| `noDelay` | boolean | Skips the initial fade-in delay before the animation appears |
|
|
101
|
+
| `announce` | boolean | **`role="status"`** and **`aria-live="polite"`** with localized loading label when the loader should be announced |
|
|
102
|
+
| `align` | `left` · `center` · `right` | Horizontal alignment for **`mode="inline"`** only (attribute selector; default centered) |
|
|
103
|
+
| `currentColor` | boolean | Uses `currentColor` for dot fill instead of **`--sc-primary`** |
|
|
104
|
+
|
|
105
|
+
This component has **no slots**. The animation markup is internal.
|
|
81
106
|
|
|
82
|
-
|
|
107
|
+
### Static methods
|
|
83
108
|
|
|
84
|
-
|
|
|
109
|
+
| Method | Description |
|
|
85
110
|
|--------|-------------|
|
|
86
|
-
| `Loader.show(conf?)` | Mounts the shared instance.
|
|
87
|
-
| `Loader.hide()` | Decrements the show counter
|
|
111
|
+
| `Loader.show(conf?)` | Mounts the shared loader instance. **`conf.mode`**, **`conf.noDelay`**, **`conf.announce`**, optional **`conf.container`**. Without **`container`**, uses the theme pop container and forces **`fixed`**. |
|
|
112
|
+
| `Loader.hide()` | Decrements the show counter and removes the instance from the DOM when it reaches zero. |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Menu
|
|
2
2
|
|
|
3
|
-
**`sonic-menu`** lays out navigation or actions as a **`direction`** row or column of **`sonic-menu-item`** entries (ghost **`variant`** and block **`shape`** by default), optional **`sonic-divider`** separators, and overflow content in the **`more`** slot (popover “…” trigger). Set
|
|
3
|
+
**`sonic-menu`** lays out navigation or actions as a **`direction`** row or column of **`sonic-menu-item`** entries (ghost **`variant`** and block **`shape`** by default), optional **`sonic-divider`** separators, and overflow content in the **`more`** slot (popover “…” trigger). Set **`href`** / **`pushstate`** / **`autoActive`** on each **`sonic-menu-item`**—same API as **`sonic-button`**—not on the menu host.
|
|
4
4
|
|
|
5
5
|
## Basic example
|
|
6
6
|
|
|
@@ -40,11 +40,11 @@ Default **`direction`** is **`column`**. Use **`row`** for horizontal toolbars o
|
|
|
40
40
|
</sonic-menu-item>
|
|
41
41
|
<sonic-menu-item>
|
|
42
42
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
43
|
-
|
|
43
|
+
History
|
|
44
44
|
</sonic-menu-item>
|
|
45
45
|
<sonic-menu-item>
|
|
46
46
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
47
|
-
|
|
47
|
+
Orders
|
|
48
48
|
</sonic-menu-item>
|
|
49
49
|
<sonic-menu-item type="danger">
|
|
50
50
|
<sonic-icon library="iconoir" name="log-out" slot="prefix"></sonic-icon>
|
|
@@ -62,11 +62,11 @@ Default **`direction`** is **`column`**. Use **`row`** for horizontal toolbars o
|
|
|
62
62
|
</sonic-menu-item>
|
|
63
63
|
<sonic-menu-item>
|
|
64
64
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
65
|
-
|
|
65
|
+
History
|
|
66
66
|
</sonic-menu-item>
|
|
67
67
|
<sonic-menu-item>
|
|
68
68
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
69
|
-
|
|
69
|
+
Orders
|
|
70
70
|
</sonic-menu-item>
|
|
71
71
|
<sonic-menu-item type="danger">
|
|
72
72
|
<sonic-icon library="iconoir" name="log-out" slot="prefix"></sonic-icon>
|
|
@@ -91,11 +91,11 @@ Default **`direction`** is **`column`**. Use **`row`** for horizontal toolbars o
|
|
|
91
91
|
</sonic-menu-item>
|
|
92
92
|
<sonic-menu-item>
|
|
93
93
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
94
|
-
|
|
94
|
+
History
|
|
95
95
|
</sonic-menu-item>
|
|
96
96
|
<sonic-menu-item>
|
|
97
97
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
98
|
-
|
|
98
|
+
Orders
|
|
99
99
|
</sonic-menu-item>
|
|
100
100
|
</sonic-menu>
|
|
101
101
|
<sonic-menu size="sm" direction="row">
|
|
@@ -106,11 +106,11 @@ Default **`direction`** is **`column`**. Use **`row`** for horizontal toolbars o
|
|
|
106
106
|
</sonic-menu-item>
|
|
107
107
|
<sonic-menu-item>
|
|
108
108
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
109
|
-
|
|
109
|
+
History
|
|
110
110
|
</sonic-menu-item>
|
|
111
111
|
<sonic-menu-item>
|
|
112
112
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
113
|
-
|
|
113
|
+
Orders
|
|
114
114
|
</sonic-menu-item>
|
|
115
115
|
</sonic-menu>
|
|
116
116
|
<sonic-menu direction="row">
|
|
@@ -121,11 +121,11 @@ Default **`direction`** is **`column`**. Use **`row`** for horizontal toolbars o
|
|
|
121
121
|
</sonic-menu-item>
|
|
122
122
|
<sonic-menu-item>
|
|
123
123
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
124
|
-
|
|
124
|
+
History
|
|
125
125
|
</sonic-menu-item>
|
|
126
126
|
<sonic-menu-item>
|
|
127
127
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
128
|
-
|
|
128
|
+
Orders
|
|
129
129
|
</sonic-menu-item>
|
|
130
130
|
</sonic-menu>
|
|
131
131
|
<sonic-menu size="lg" direction="row">
|
|
@@ -136,11 +136,11 @@ Default **`direction`** is **`column`**. Use **`row`** for horizontal toolbars o
|
|
|
136
136
|
</sonic-menu-item>
|
|
137
137
|
<sonic-menu-item>
|
|
138
138
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
139
|
-
|
|
139
|
+
History
|
|
140
140
|
</sonic-menu-item>
|
|
141
141
|
<sonic-menu-item>
|
|
142
142
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
143
|
-
|
|
143
|
+
Orders
|
|
144
144
|
</sonic-menu-item>
|
|
145
145
|
</sonic-menu>
|
|
146
146
|
<sonic-menu size="xl" direction="row">
|
|
@@ -151,11 +151,11 @@ Default **`direction`** is **`column`**. Use **`row`** for horizontal toolbars o
|
|
|
151
151
|
</sonic-menu-item>
|
|
152
152
|
<sonic-menu-item>
|
|
153
153
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
154
|
-
|
|
154
|
+
History
|
|
155
155
|
</sonic-menu-item>
|
|
156
156
|
<sonic-menu-item>
|
|
157
157
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
158
|
-
|
|
158
|
+
Orders
|
|
159
159
|
</sonic-menu-item>
|
|
160
160
|
</sonic-menu>
|
|
161
161
|
</div>
|
|
@@ -243,11 +243,11 @@ Assign nodes to **`slot="more"`** to show the overflow popover. The trigger appe
|
|
|
243
243
|
</sonic-menu-item>
|
|
244
244
|
<sonic-menu-item>
|
|
245
245
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
246
|
-
|
|
246
|
+
History
|
|
247
247
|
</sonic-menu-item>
|
|
248
248
|
<sonic-menu-item>
|
|
249
249
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
250
|
-
|
|
250
|
+
Orders
|
|
251
251
|
</sonic-menu-item>
|
|
252
252
|
<sonic-menu slot="more">
|
|
253
253
|
<sonic-menu-item>
|
|
@@ -285,11 +285,11 @@ With **`scrollable`**, the main slot scrolls with edge fade masks; drag-to-scrol
|
|
|
285
285
|
</sonic-menu-item>
|
|
286
286
|
<sonic-menu-item>
|
|
287
287
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
288
|
-
|
|
288
|
+
History
|
|
289
289
|
</sonic-menu-item>
|
|
290
290
|
<sonic-menu-item>
|
|
291
291
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
292
|
-
|
|
292
|
+
Orders
|
|
293
293
|
</sonic-menu-item>
|
|
294
294
|
<sonic-menu-item variant="ghost">
|
|
295
295
|
<sonic-icon library="iconoir" name="home" slot="prefix"></sonic-icon>
|
|
@@ -301,11 +301,11 @@ With **`scrollable`**, the main slot scrolls with edge fade masks; drag-to-scrol
|
|
|
301
301
|
</sonic-menu-item>
|
|
302
302
|
<sonic-menu-item>
|
|
303
303
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
304
|
-
|
|
304
|
+
History
|
|
305
305
|
</sonic-menu-item>
|
|
306
306
|
<sonic-menu-item>
|
|
307
307
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
308
|
-
|
|
308
|
+
Orders
|
|
309
309
|
</sonic-menu-item>
|
|
310
310
|
<sonic-menu-item variant="ghost">
|
|
311
311
|
<sonic-icon library="iconoir" name="home" slot="prefix"></sonic-icon>
|
|
@@ -317,11 +317,11 @@ With **`scrollable`**, the main slot scrolls with edge fade masks; drag-to-scrol
|
|
|
317
317
|
</sonic-menu-item>
|
|
318
318
|
<sonic-menu-item>
|
|
319
319
|
<sonic-icon library="iconoir" name="clock-outline" slot="prefix"></sonic-icon>
|
|
320
|
-
|
|
320
|
+
History
|
|
321
321
|
</sonic-menu-item>
|
|
322
322
|
<sonic-menu-item>
|
|
323
323
|
<sonic-icon library="iconoir" name="bag" slot="prefix"></sonic-icon>
|
|
324
|
-
|
|
324
|
+
Orders
|
|
325
325
|
</sonic-menu-item>
|
|
326
326
|
<sonic-menu-item>
|
|
327
327
|
<sonic-icon library="iconoir" name="settings" slot="prefix"></sonic-icon>
|
|
@@ -356,15 +356,15 @@ With **`scrollable`**, the main slot scrolls with edge fade masks; drag-to-scrol
|
|
|
356
356
|
|----------|---------|-------------|
|
|
357
357
|
| `direction` | `column` (default) · `row` | Vertical list or horizontal bar |
|
|
358
358
|
| `align` | `left` (default) · `center` · `right` | Alignment propagated to items (except square / circle **`shape`**) |
|
|
359
|
-
| `size` | `
|
|
360
|
-
| `shadow` | `
|
|
359
|
+
| `size` | `xs` · `sm` · `md` · `lg` · `xl` | Propagated to items and the **`more`** trigger when unset on the item |
|
|
360
|
+
| `shadow` | `sm` · `md` · `lg` | Shadow around the menu; omitted for none |
|
|
361
361
|
| `minWidth` | CSS length | Minimum width of the container (default `0`) |
|
|
362
362
|
| `scrollable` | boolean | Scroll with edge fade; auto-scroll when a single item is **`active`** |
|
|
363
363
|
| `moreShape` | `circle` (default) · `square` | Shape of the **`more`** slot trigger button |
|
|
364
364
|
|
|
365
365
|
| Slot | Description |
|
|
366
366
|
|------|-------------|
|
|
367
|
-
| *(default)* | Visible items:
|
|
367
|
+
| *(default)* | Visible items: **`sonic-menu-item`**, **`sonic-divider`**, nested **`sonic-menu`** |
|
|
368
368
|
| `more` | Popover content for the “…” control; shown only when the slot has assigned nodes |
|
|
369
369
|
|
|
370
|
-
**`sonic-menu-item`** extends **`sonic-button`** (defaults
|
|
370
|
+
**`sonic-menu-item`** extends **`sonic-button`** (defaults: **`variant="ghost"`**, **`shape="block"`**). Use the button docs for **`type`**, **`variant`**, **`href`**, **`pushstate`**, **`autoActive`**, and item slots.
|