@supersoniks/concorde 5.0.4 → 5.0.5
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-component-docs/SKILL.md +194 -0
- package/.agents/skills/concorde-component-docs/template.md +45 -0
- package/ai/cursor/rules/concorde-theme.mdc +1 -1
- package/ai/cursor/rules/concorde.mdc +1 -1
- package/ai/skills/concorde/SKILL.md +1 -1
- package/ai/skills/concorde-theme/SKILL.md +21 -10
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +528 -534
- package/concorde-core.es.js +4257 -4212
- package/dist/concorde-core.bundle.js +528 -534
- package/dist/concorde-core.es.js +4257 -4212
- package/dist/docs-mock-api-sw.js +2 -0
- package/dist/docs-mock-api-sw.js.map +2 -2
- package/docs/assets/index-CD4WyL6o.css +1 -0
- package/docs/assets/{index-D8MVWqY6.js → index-wVZpLVYW.js} +1221 -1350
- package/docs/crawl/core/components/ui/alert/alert.html +172 -71
- package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +113 -5
- package/docs/crawl/core/components/ui/badge/badge.html +157 -79
- package/docs/crawl/core/components/ui/button/button.html +1 -0
- package/docs/crawl/core/components/ui/captcha/captcha.html +90 -8
- package/docs/crawl/core/components/ui/card/card.html +222 -68
- package/docs/crawl/core/components/ui/divider/divider.html +117 -31
- package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +232 -101
- package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +95 -52
- package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +97 -38
- package/docs/crawl/core/components/ui/form/input/input.html +3 -3
- package/docs/crawl/core/components/ui/form/textarea/textarea.html +3 -3
- package/docs/crawl/core/components/ui/group/group.html +60 -38
- package/docs/crawl/core/components/ui/icon/icon.html +136 -47
- package/docs/crawl/core/components/ui/image/image.html +244 -56
- package/docs/crawl/core/components/ui/link/link.html +67 -9
- package/docs/crawl/core/components/ui/loader/loader.html +97 -23
- package/docs/crawl/core/components/ui/menu/menu.html +162 -90
- package/docs/crawl/core/components/ui/modal/modal.html +275 -50
- package/docs/crawl/core/components/ui/pop/pop.html +260 -66
- package/docs/crawl/core/components/ui/progress/progress.html +103 -30
- package/docs/crawl/core/components/ui/table/table.html +303 -171
- package/docs/crawl/core/components/ui/theme/theme.html +131 -0
- package/docs/crawl/core/components/ui/toast/toast.html +170 -59
- package/docs/crawl/core/components/ui/tooltip/tooltip.html +90 -29
- package/docs/crawl/docs/_decorators/ancestor-attribute.html +3 -2
- package/docs/crawl/docs/_getting-started/concorde-outside.html +3 -3
- package/docs/crawl/docs/_getting-started/start.html +1 -1
- package/docs/crawl/docs/_getting-started/theming.html +311 -63
- package/docs/crawl/hubs/form-components.html +75 -53
- package/docs/crawl/index.html +7 -6
- package/docs/docs-mock-api-sw.js +2 -0
- package/docs/docs-mock-api-sw.js.map +2 -2
- package/docs/index.html +9 -7
- package/docs/llms-full.txt +1703 -456
- package/docs/llms.txt +25 -32
- package/docs/sitemap.xml +3 -0
- package/docs/src/core/components/functional/fetch/fetch.md +0 -0
- package/docs/src/core/components/functional/if/if.md +0 -0
- package/docs/src/core/components/functional/list/list.md +0 -0
- package/docs/src/core/components/functional/router/router.md +0 -0
- package/docs/src/core/components/functional/sdui/sdui.md +0 -0
- package/docs/src/core/components/functional/states/states.md +0 -0
- package/docs/src/core/components/functional/submit/submit.md +0 -0
- package/docs/src/core/components/ui/alert/alert.md +147 -72
- package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/src/core/components/ui/badge/badge.md +141 -80
- package/docs/src/core/components/ui/button/button.md +1 -0
- package/docs/src/core/components/ui/captcha/captcha.md +65 -6
- package/docs/src/core/components/ui/card/card.md +183 -65
- package/docs/src/core/components/ui/divider/divider.md +107 -13
- package/docs/src/core/components/ui/form/fieldset/fieldset.md +175 -99
- package/docs/src/core/components/ui/form/form-actions/form-actions.md +75 -52
- package/docs/src/core/components/ui/form/form-layout/form-layout.md +109 -34
- package/docs/src/core/components/ui/form/input/input.md +1 -1
- package/docs/src/core/components/ui/form/radio/radio.md +0 -0
- package/docs/src/core/components/ui/form/select/select.md +0 -0
- package/docs/src/core/components/ui/form/switch/switch.md +0 -0
- package/docs/src/core/components/ui/form/textarea/textarea.md +1 -1
- package/docs/src/core/components/ui/group/group.md +36 -36
- package/docs/src/core/components/ui/icon/icon.md +132 -43
- package/docs/src/core/components/ui/image/image.md +179 -53
- package/docs/src/core/components/ui/link/link.md +45 -7
- package/docs/src/core/components/ui/loader/loader.md +79 -22
- package/docs/src/core/components/ui/menu/menu.md +133 -92
- package/docs/src/core/components/ui/modal/modal.md +163 -47
- package/docs/src/core/components/ui/pop/pop.md +262 -64
- package/docs/src/core/components/ui/progress/progress.md +76 -30
- package/docs/src/core/components/ui/table/table.md +147 -171
- package/docs/src/core/components/ui/theme/theme.md +122 -0
- package/docs/src/core/components/ui/toast/toast.md +108 -58
- package/docs/src/core/components/ui/tooltip/tooltip.md +68 -26
- package/docs/src/docs/_core-concept/subscriber.md +0 -0
- package/docs/src/docs/_decorators/ancestor-attribute.md +3 -2
- package/docs/src/docs/_getting-started/concorde-outside.md +3 -3
- package/docs/src/docs/_getting-started/my-first-subscriber.md +0 -0
- package/docs/src/docs/_getting-started/pubsub.md +0 -0
- package/docs/src/docs/_getting-started/start.md +1 -1
- package/docs/src/docs/_getting-started/theming.md +223 -61
- package/docs/src/docs/search/docs-search.json +3083 -348
- package/docs/src/tsconfig.json +63 -3
- package/gitlab/job_tests.sh +0 -0
- package/index.html +4 -2
- package/package.json +7 -1
- package/public/docs-mock-api-sw.js +2 -0
- package/public/docs-mock-api-sw.js.map +2 -2
- package/scripts/post-build-docs.js +0 -0
- package/scripts/post-build.mjs +0 -0
- package/src/core/components/functional/fetch/fetch.md +0 -0
- package/src/core/components/functional/if/if.md +0 -0
- package/src/core/components/functional/list/list.demo.ts +0 -0
- package/src/core/components/functional/list/list.md +0 -0
- package/src/core/components/functional/router/router.md +0 -0
- package/src/core/components/functional/router/router.ts +0 -0
- package/src/core/components/functional/sdui/sdui.md +0 -0
- package/src/core/components/functional/states/states.md +0 -0
- package/src/core/components/functional/submit/submit.md +0 -0
- package/src/core/components/functional/subscriber/subscriber.ts +0 -0
- package/src/core/components/ui/_css/align.ts +1 -0
- package/src/core/components/ui/_css/size.ts +0 -0
- package/src/core/components/ui/_css/type.ts +86 -8
- package/src/core/components/ui/_i18n/ui-aria-labels.ts +8 -0
- package/src/core/components/ui/alert/alert.md +21 -2
- package/src/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/src/core/components/ui/badge/badge.md +19 -6
- package/src/core/components/ui/badge/badge.ts +8 -9
- package/src/core/components/ui/button/button.ts +5 -15
- package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
- package/src/core/components/ui/captcha/captcha.md +65 -6
- package/src/core/components/ui/card/card.md +73 -10
- package/src/core/components/ui/card/card.ts +24 -22
- package/src/core/components/ui/divider/divider.md +107 -13
- package/src/core/components/ui/divider/divider.ts +40 -33
- package/src/core/components/ui/form/fieldset/fieldset.md +175 -99
- package/src/core/components/ui/form/fieldset/fieldset.ts +15 -28
- package/src/core/components/ui/form/fieldset/legend.ts +13 -13
- package/src/core/components/ui/form/form-actions/form-actions.md +75 -52
- package/src/core/components/ui/form/form-actions/form-actions.ts +7 -5
- package/src/core/components/ui/form/form-layout/form-layout.md +109 -34
- package/src/core/components/ui/form/form-layout/form-layout.ts +27 -24
- package/src/core/components/ui/form/radio/radio.md +0 -0
- package/src/core/components/ui/form/select/select.md +0 -0
- package/src/core/components/ui/form/switch/switch.md +0 -0
- package/src/core/components/ui/form/textarea/textarea.ts +4 -3
- package/src/core/components/ui/group/group.md +36 -36
- package/src/core/components/ui/group/group.ts +5 -10
- package/src/core/components/ui/icon/icon.md +132 -43
- package/src/core/components/ui/image/image.md +35 -3
- package/src/core/components/ui/link/link.md +43 -5
- package/src/core/components/ui/loader/loader.md +79 -22
- package/src/core/components/ui/loader/loader.ts +67 -27
- package/src/core/components/ui/loader/styles/fixed.ts +6 -11
- package/src/core/components/ui/menu/menu.md +133 -92
- package/src/core/components/ui/menu/menu.ts +53 -58
- package/src/core/components/ui/modal/modal.md +163 -47
- package/src/core/components/ui/modal/modal.ts +2 -4
- package/src/core/components/ui/pop/pop.md +217 -123
- package/src/core/components/ui/pop/pop.ts +0 -1
- package/src/core/components/ui/progress/progress.md +76 -30
- package/src/core/components/ui/progress/progress.ts +25 -56
- package/src/core/components/ui/table/table-caption.ts +2 -2
- package/src/core/components/ui/table/table-tbody.ts +3 -3
- package/src/core/components/ui/table/table-td.ts +23 -18
- package/src/core/components/ui/table/table-th.ts +8 -8
- package/src/core/components/ui/table/table-tr.ts +4 -4
- package/src/core/components/ui/table/table.md +147 -171
- package/src/core/components/ui/table/table.ts +20 -19
- package/src/core/components/ui/theme/theme-collection/auto.ts +15 -0
- package/src/core/components/ui/theme/theme-collection/core-variables.ts +8 -31
- package/src/core/components/ui/theme/theme-collection/dark.ts +1 -7
- package/src/core/components/ui/theme/theme-collection/light.ts +30 -26
- package/src/core/components/ui/theme/theme.md +122 -0
- package/src/core/components/ui/theme/theme.ts +30 -7
- package/src/core/components/ui/toast/toast-item.ts +6 -9
- package/src/core/components/ui/toast/toast.md +108 -58
- package/src/core/components/ui/toast/types.ts +1 -1
- package/src/core/components/ui/tooltip/tooltip.md +68 -26
- 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/route.ts +0 -0
- package/src/docs/_core-concept/subscriber.md +0 -0
- package/src/docs/_getting-started/my-first-subscriber.md +0 -0
- package/src/docs/_getting-started/pubsub.md +0 -0
- package/src/docs/_getting-started/start.md +1 -1
- package/src/docs/_getting-started/theming.md +223 -61
- package/src/docs/code.ts +125 -58
- package/src/docs/example/users.ts +0 -0
- package/src/docs/header/header.ts +62 -54
- package/src/docs/mock-api/router.ts +2 -0
- package/src/docs/navigation/navigation.ts +6 -3
- package/src/docs/search/docs-search.json +2504 -399
- package/src/docs/search/markdown-renderer.ts +6 -6
- package/src/docs/search/page.ts +0 -0
- package/src/docs/search/search.ts +4 -4
- package/src/docs/tailwind/css/tailwind.css +6 -5
- package/src/tsconfig.json +18 -0
- package/src/tsconfig.tsbuildinfo +1 -1
- package/tailwind.config.js +19 -0
- package/.github/workflows/ci.yml +0 -21
- package/.github-export-ignore +0 -30
- package/CONTRIBUTING.md +0 -59
- package/DEV.md +0 -54
- package/LICENSE +0 -21
- package/OPEN_SOURCE_CHECKPOINT.md +0 -133
- package/docs/assets/index-DiD0qYvE.css +0 -1
- package/docs/src/tsconfig.declarations.json +0 -22
- package/docs/src/tsconfig.emit.json +0 -23
- package/gitlab/job_github_mirror.sh +0 -39
- package/scripts/github-export.mjs +0 -150
- package/src/css.d.ts +0 -19
- package/src/tsconfig.declarations.json +0 -22
- package/src/tsconfig.emit.json +0 -23
package/docs/llms-full.txt
CHANGED
|
@@ -948,13 +948,59 @@ I prefer
|
|
|
948
948
|
|
|
949
949
|
---
|
|
950
950
|
|
|
951
|
-
##
|
|
951
|
+
## Alert messages
|
|
952
952
|
|
|
953
953
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/alert-messages/alert-messages.html
|
|
954
954
|
- Doc ID: core/components/ui/alert-messages/alert-messages
|
|
955
|
-
- Keywords: Concorde, supersoniks, core/components/ui/alert-messages/alert-messages, alert-messages, UI component, sonic-alert-messages, web component
|
|
955
|
+
- Keywords: Concorde, supersoniks, core/components/ui/alert-messages/alert-messages, alert-messages, Alert messages, UI component, sonic-alert-messages, web component, sonic-alert, messages, submitResultDataProvider, type="public", announce, dataProvider, type
|
|
956
956
|
|
|
957
|
+
Alert messages
|
|
957
958
|
|
|
959
|
+
sonic-alert-messages renders a vertical stack of sonic-alert items from a messages array on a linked data provider (typical pattern: submitResultDataProvider after a form submit). Only entries with type="public" are shown. Each alert gets announce so screen readers pick up feedback after the request.
|
|
960
|
+
|
|
961
|
+
With submit result
|
|
962
|
+
|
|
963
|
+
Bind dataProvider to the same publisher as submitResultDataProvider. API messages entries need type: public, plus content and optional status (warning · success · error · info).
|
|
964
|
+
|
|
965
|
+
Submit (empty fields → error messages)
|
|
966
|
+
|
|
967
|
+
Shared alert props
|
|
968
|
+
|
|
969
|
+
size · background and noIcon apply to every rendered sonic-alert in the list.
|
|
970
|
+
|
|
971
|
+
Load sample messages
|
|
972
|
+
|
|
973
|
+
Message shape
|
|
974
|
+
|
|
975
|
+
Example JSON on the result publisher (or API response merged into it):
|
|
976
|
+
|
|
977
|
+
{
|
|
978
|
+
"messages": [
|
|
979
|
+
{
|
|
980
|
+
"type": "public",
|
|
981
|
+
"content": "The product has been added to your cart",
|
|
982
|
+
"status": "success"
|
|
983
|
+
}
|
|
984
|
+
]
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
API reference
|
|
988
|
+
|
|
989
|
+
| Attribute | Values | Description |
|
|
990
|
+
|----------|---------|-------------|
|
|
991
|
+
| dataProvider | publisher id | Source object; messages array is auto-filled via Subscriber |
|
|
992
|
+
| size | 2xs … 2xl (default md) | Passed to each sonic-alert |
|
|
993
|
+
| background | boolean | Tinted background on each alert |
|
|
994
|
+
| noIcon | boolean | Hides icons on each alert |
|
|
995
|
+
| messages | Message[] | Usually set by the publisher; each item uses content as alert text |
|
|
996
|
+
|
|
997
|
+
| Message field | Values | Description |
|
|
998
|
+
|---------------|---------|-------------|
|
|
999
|
+
| type | public | Required for the message to render |
|
|
1000
|
+
| content | string | Alert body (text on sonic-alert) |
|
|
1001
|
+
| status | warning · success · error · info | Alert status; defaults to default when omitted |
|
|
1002
|
+
|
|
1003
|
+
No slots — alerts are generated from messages.
|
|
958
1004
|
|
|
959
1005
|
---
|
|
960
1006
|
|
|
@@ -962,68 +1008,118 @@ I prefer
|
|
|
962
1008
|
|
|
963
1009
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/alert/alert.html
|
|
964
1010
|
- Doc ID: core/components/ui/alert/alert
|
|
965
|
-
- Keywords: Concorde, supersoniks, core/components/ui/alert/alert, alert, Alert, UI component, sonic-alert, web component
|
|
1011
|
+
- Keywords: Concorde, supersoniks, core/components/ui/alert/alert, alert, Alert, UI component, sonic-alert, web component, label, text, announce, status, default, role, aria-live
|
|
966
1012
|
|
|
967
1013
|
Alert
|
|
968
1014
|
|
|
1015
|
+
Alerts surface important feedback inline—errors, confirmations, or contextual help. Use label / text for simple copy, or the default slot for rich content (links, buttons). Set announce when the message appears after an action so screen readers pick it up.
|
|
1016
|
+
|
|
1017
|
+
Basic example
|
|
1018
|
+
|
|
969
1019
|
Status
|
|
970
1020
|
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
1021
|
+
Color and icon follow status. With no status, behavior is default.
|
|
1022
|
+
|
|
1023
|
+
This address is already in use.
|
|
1024
|
+
This address is already in use.
|
|
1025
|
+
This address is already in use.
|
|
1026
|
+
This address is already in use.
|
|
1027
|
+
This address is already in use.
|
|
1028
|
+
|
|
1029
|
+
Accessibility (announce)
|
|
1030
|
+
|
|
1031
|
+
By default, an alert already in the DOM is not announced (no role / aria-live). Set announce when the message appears after user action (API response, validation, etc.): screen readers get role="alert" for error, otherwise role="status" and aria-live="polite".
|
|
1032
|
+
|
|
1033
|
+
sonic-alert-messages sets announce on every rendered alert.
|
|
1034
|
+
|
|
1035
|
+
Content and icon
|
|
1036
|
+
|
|
1037
|
+
label and text accept plain text only. The default slot is rendered after text. Use the icon slot to replace the default sonic-icon. noIcon hides the icon.
|
|
1038
|
+
|
|
1039
|
+
Custom icon slot
|
|
1040
|
+
|
|
1041
|
+
Project any markup into slot="icon" (emoji, image, custom component). Keep it decorative with aria-hidden="true" when the message text already conveys meaning.
|
|
1042
|
+
|
|
1043
|
+
🎉
|
|
1044
|
+
You unlocked a new badge.
|
|
976
1045
|
|
|
977
1046
|
Sizes
|
|
978
1047
|
|
|
979
|
-
|
|
1048
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
980
1049
|
|
|
981
|
-
|
|
1050
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
982
1051
|
|
|
983
|
-
|
|
1052
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
984
1053
|
|
|
985
|
-
|
|
1054
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
986
1055
|
|
|
987
|
-
|
|
1056
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
988
1057
|
|
|
989
|
-
|
|
1058
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
990
1059
|
|
|
991
|
-
|
|
1060
|
+
This address is already in use. Lorem ipsum dolor sit amet.
|
|
992
1061
|
|
|
993
1062
|
Alert with link
|
|
994
1063
|
|
|
995
|
-
|
|
1064
|
+
Rich content in the slot (buttons, links).
|
|
1065
|
+
|
|
1066
|
+
You have 2 unread messages
|
|
996
1067
|
|
|
997
|
-
|
|
998
|
-
|
|
1068
|
+
See messages
|
|
1069
|
+
Dismiss
|
|
999
1070
|
|
|
1000
1071
|
Background
|
|
1001
1072
|
|
|
1002
|
-
|
|
1073
|
+
Tinted background from the status color (color-mix on currentColor).
|
|
1003
1074
|
|
|
1004
|
-
|
|
1075
|
+
This address is already in use.
|
|
1005
1076
|
|
|
1006
|
-
|
|
1077
|
+
This address is already in use.
|
|
1007
1078
|
|
|
1008
|
-
|
|
1079
|
+
This address is already in use.
|
|
1009
1080
|
|
|
1010
|
-
|
|
1081
|
+
This address is already in use.
|
|
1082
|
+
|
|
1083
|
+
This address is already in use.
|
|
1011
1084
|
|
|
1012
1085
|
Dismissible
|
|
1013
1086
|
|
|
1014
|
-
|
|
1087
|
+
dismissible removes the alert from the DOM when the close control is clicked (i18n aria label). dismissible and background are independent: without background, close sits at the end of the row; with background, top-right.
|
|
1088
|
+
|
|
1089
|
+
This address is already in use.
|
|
1015
1090
|
|
|
1016
|
-
|
|
1091
|
+
This address is already in use.
|
|
1017
1092
|
|
|
1018
|
-
|
|
1093
|
+
This address is already in use.
|
|
1019
1094
|
|
|
1020
|
-
|
|
1095
|
+
This address is already in use.
|
|
1021
1096
|
|
|
1022
|
-
|
|
1097
|
+
This address is already in use.
|
|
1023
1098
|
|
|
1024
1099
|
Dismiss forever
|
|
1025
1100
|
|
|
1026
|
-
|
|
1101
|
+
With dismissForever, dismissal is stored in localStorage (key sonic-alert-dismissed). A stable id on the element is required; without id, a warning is logged and nothing is persisted.
|
|
1102
|
+
|
|
1103
|
+
This address is already in use.
|
|
1104
|
+
|
|
1105
|
+
API reference
|
|
1106
|
+
|
|
1107
|
+
| Attribute | Values | Description |
|
|
1108
|
+
|----------|---------|-------------|
|
|
1109
|
+
| status | default · info · success · warning · error | Color and default icon |
|
|
1110
|
+
| label | string | Title (plain text) |
|
|
1111
|
+
| text | string | Short body (plain text), rendered before the slot |
|
|
1112
|
+
| size | 2xs … 2xl | Corner radius and typography |
|
|
1113
|
+
| background | boolean | Tinted background (color-mix on status color) |
|
|
1114
|
+
| dismissible | boolean | Close control; removes the element from the DOM |
|
|
1115
|
+
| dismissForever | boolean | Persists dismissal in localStorage; requires id |
|
|
1116
|
+
| noIcon | boolean | Hides the icon (including custom icon slot content) |
|
|
1117
|
+
| announce | boolean | role="alert" / aria-live for dynamically injected content |
|
|
1118
|
+
|
|
1119
|
+
| Slot | Description |
|
|
1120
|
+
|------|-------------|
|
|
1121
|
+
| (default) | Message body (HTML, actions); rendered after text |
|
|
1122
|
+
| icon | Replaces the default sonic-icon |
|
|
1027
1123
|
|
|
1028
1124
|
---
|
|
1029
1125
|
|
|
@@ -1031,68 +1127,105 @@ Dismiss forever
|
|
|
1031
1127
|
|
|
1032
1128
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/badge/badge.html
|
|
1033
1129
|
- Doc ID: core/components/ui/badge/badge
|
|
1034
|
-
- Keywords: Concorde, supersoniks, core/components/ui/badge/badge, badge, Badge, UI component, sonic-badge, web component
|
|
1130
|
+
- Keywords: Concorde, supersoniks, core/components/ui/badge/badge, badge, Badge, UI component, sonic-badge, web component, sonic-button, type, variant, size, default, base-100, neutral, base-content, outline
|
|
1035
1131
|
|
|
1036
1132
|
Badge
|
|
1037
1133
|
|
|
1134
|
+
Badges are compact, non-interactive labels for status, counts, or categories. They mirror sonic-button styling (type, variant, size) without focus rings or click handling—use a button when the control should be actionable.
|
|
1135
|
+
|
|
1038
1136
|
Type
|
|
1039
1137
|
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1138
|
+
default — subtle background (base-100). neutral — dark fill (base-content) with light text, useful on light backgrounds.
|
|
1139
|
+
|
|
1140
|
+
Default
|
|
1141
|
+
Primary
|
|
1142
|
+
Neutral
|
|
1143
|
+
Warning
|
|
1144
|
+
Info
|
|
1145
|
+
Success
|
|
1146
|
+
Danger
|
|
1147
|
+
|
|
1148
|
+
Variant
|
|
1149
|
+
|
|
1150
|
+
Default variant is filled. outline — border and text in the type color. ghost — text only, no padding (except in forced-colors mode).
|
|
1048
1151
|
|
|
1049
1152
|
Outline
|
|
1050
1153
|
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
Contrast
|
|
1154
|
+
Default
|
|
1155
|
+
Primary
|
|
1156
|
+
Neutral
|
|
1157
|
+
Warning
|
|
1158
|
+
Info
|
|
1159
|
+
Success
|
|
1160
|
+
Danger
|
|
1059
1161
|
|
|
1060
1162
|
Ghost
|
|
1061
1163
|
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
Contrast
|
|
1164
|
+
Default
|
|
1165
|
+
Primary
|
|
1166
|
+
Neutral
|
|
1167
|
+
Warning
|
|
1168
|
+
Info
|
|
1169
|
+
Success
|
|
1170
|
+
Danger
|
|
1070
1171
|
|
|
1071
1172
|
Size
|
|
1072
1173
|
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1174
|
+
Default size is md (omit the size attribute). Typography and padding follow sonic-button.
|
|
1175
|
+
|
|
1176
|
+
2Xs
|
|
1177
|
+
Xs
|
|
1178
|
+
Sm
|
|
1179
|
+
Md
|
|
1180
|
+
Lg
|
|
1181
|
+
Xl
|
|
1182
|
+
2Xl
|
|
1183
|
+
|
|
1184
|
+
Prefix and suffix slots
|
|
1185
|
+
|
|
1186
|
+
Icons or short text before / after the main label.
|
|
1187
|
+
|
|
1188
|
+
Info
|
|
1189
|
+
|
|
1190
|
+
Verified
|
|
1080
1191
|
|
|
1081
1192
|
Empty badges
|
|
1082
1193
|
|
|
1194
|
+
Badge with no text (visual dot). min-width / min-height keep a readable shape.
|
|
1195
|
+
|
|
1083
1196
|
Ellipsis
|
|
1084
1197
|
|
|
1085
|
-
|
|
1086
|
-
|
|
1198
|
+
With ellipsis, long labels truncate. The parent must constrain width (max-width, grid, etc.).
|
|
1199
|
+
|
|
1200
|
+
Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod.
|
|
1201
|
+
|
|
1202
|
+
Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod.
|
|
1087
1203
|
|
|
1088
1204
|
Badge in button
|
|
1089
1205
|
|
|
1090
|
-
|
|
1206
|
+
Count inside a button (slot="suffix") or a badge absolutely positioned on a button / icon.
|
|
1207
|
+
|
|
1208
|
+
Messages 5
|
|
1209
|
+
|
|
1210
|
+
My account
|
|
1211
|
+
12
|
|
1091
1212
|
|
|
1092
|
-
|
|
1093
|
-
12
|
|
1213
|
+
33
|
|
1094
1214
|
|
|
1095
|
-
|
|
1215
|
+
API reference
|
|
1216
|
+
|
|
1217
|
+
| Attribute | Values | Description |
|
|
1218
|
+
|----------|---------|-------------|
|
|
1219
|
+
| type | default (default) · primary · neutral · warning · info · success · danger | Semantic color (--sc- tokens) |
|
|
1220
|
+
| variant | default (default) · outline · ghost | Filled, bordered, or text-only |
|
|
1221
|
+
| size | 2xs … 2xl (default md) | Typography and padding (aligned with sonic-button) |
|
|
1222
|
+
| ellipsis | boolean | Single-line truncation; parent must constrain width |
|
|
1223
|
+
|
|
1224
|
+
| Slot | Description |
|
|
1225
|
+
|------|-------------|
|
|
1226
|
+
| (default) | Main label |
|
|
1227
|
+
| prefix | Icon or short text before the label |
|
|
1228
|
+
| suffix | Icon or short text after the label |
|
|
1096
1229
|
|
|
1097
1230
|
---
|
|
1098
1231
|
|
|
@@ -1154,6 +1287,7 @@ Loading
|
|
|
1154
1287
|
The length of the button depends on the size of its content
|
|
1155
1288
|
|
|
1156
1289
|
Loading button
|
|
1290
|
+
🚀 Loading with prefix 😂
|
|
1157
1291
|
|
|
1158
1292
|
Swap
|
|
1159
1293
|
|
|
@@ -1203,11 +1337,54 @@ Custom styles & active states with tailwind
|
|
|
1203
1337
|
|
|
1204
1338
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/captcha/captcha.html
|
|
1205
1339
|
- Doc ID: core/components/ui/captcha/captcha
|
|
1206
|
-
- Keywords: Concorde, supersoniks, core/components/ui/captcha/captcha, captcha, Captcha, UI component, sonic-captcha, web component
|
|
1340
|
+
- Keywords: Concorde, supersoniks, core/components/ui/captcha/captcha, captcha, Captcha, UI component, sonic-captcha, web component, captchaToken, needsCaptchaValidation, formDataProvider, headersDataProvider, sonic-submit, key, generateEncryptedKey
|
|
1207
1341
|
|
|
1208
1342
|
Captcha
|
|
1209
1343
|
|
|
1210
|
-
|
|
1344
|
+
sonic-captcha embeds an ALTCHA widget and wires captchaToken / needsCaptchaValidation on the ancestor formDataProvider (or headersDataProvider). sonic-submit waits for a token before sending when validation is required. The widget loads only on HTTPS; on plain HTTP the host renders nothing.
|
|
1345
|
+
|
|
1346
|
+
> Live widget calls the Supersoniks challenge service — not part of docs mock API.
|
|
1347
|
+
|
|
1348
|
+
Basic example
|
|
1349
|
+
|
|
1350
|
+
Wrap the form scope and place sonic-submit in the default slot so the challenge appears above the action.
|
|
1351
|
+
|
|
1352
|
+
Submit with captcha
|
|
1353
|
+
|
|
1354
|
+
Encrypted site key
|
|
1355
|
+
|
|
1356
|
+
Optional key skips client-side key generation. When omitted, the component derives an encrypted key on connect (after generateEncryptedKey).
|
|
1357
|
+
|
|
1358
|
+
Complete the challenge above to enable submit
|
|
1359
|
+
|
|
1360
|
+
Form publisher fields
|
|
1361
|
+
|
|
1362
|
+
On connect (HTTPS only), needsCaptchaValidation is set to true and captchaToken is cleared. When the ALTCHA widget reaches verified, captchaToken is written on the form publisher and sonic-captcha-validate fires (detail.valid · detail.state · optional detail.token / detail.payload). sonic-submit still listens for requesttoken to refresh the token immediately before send.
|
|
1363
|
+
|
|
1364
|
+
{
|
|
1365
|
+
needsCaptchaValidation: true,
|
|
1366
|
+
captchaKey: "…",
|
|
1367
|
+
captchaToken: "…"
|
|
1368
|
+
}
|
|
1369
|
+
|
|
1370
|
+
API reference
|
|
1371
|
+
|
|
1372
|
+
| Attribute | Values | Description |
|
|
1373
|
+
|----------|---------|-------------|
|
|
1374
|
+
| formDataProvider | publisher id | Same as ancestor form scope; reads/writes needsCaptchaValidation · captchaKey · captchaToken |
|
|
1375
|
+
| key | string | ALTCHA site key; auto-generated when empty |
|
|
1376
|
+
| action | string | Optional action name forwarded to the widget |
|
|
1377
|
+
| zIndex | number (default 9999) | Stacking for the challenge overlay |
|
|
1378
|
+
|
|
1379
|
+
| Slot | Description |
|
|
1380
|
+
|------|-------------|
|
|
1381
|
+
| (default) | Form actions (typically sonic-submit and fields) rendered below the widget |
|
|
1382
|
+
|
|
1383
|
+
| Event | Description |
|
|
1384
|
+
|-------|-------------|
|
|
1385
|
+
| sonic-captcha-validate | Fired when state is verified · error or expired; detail.valid is true only for verified |
|
|
1386
|
+
|
|
1387
|
+
Related: Submit — needsCaptchaValidation and deferred send.
|
|
1211
1388
|
|
|
1212
1389
|
---
|
|
1213
1390
|
|
|
@@ -1215,49 +1392,118 @@ Captcha
|
|
|
1215
1392
|
|
|
1216
1393
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/card/card.html
|
|
1217
1394
|
- Doc ID: core/components/ui/card/card
|
|
1218
|
-
- Keywords: Concorde, supersoniks, core/components/ui/card/card, card, Card, UI component, sonic-card, web component
|
|
1395
|
+
- Keywords: Concorde, supersoniks, core/components/ui/card/card, card, Card, UI component, sonic-card, web component, type, shadow, lg, sonic-card-header, sonic-card-main, sonic-card-footer, base, default, light
|
|
1219
1396
|
|
|
1220
1397
|
Card
|
|
1221
1398
|
|
|
1399
|
+
Cards group related content on a padded surface with radius, theme type colors, and elevation. Default shadow is lg. Compose sonic-card-header / sonic-card-main / sonic-card-footer, or place any markup in the default slot.
|
|
1400
|
+
|
|
1401
|
+
Basic example
|
|
1402
|
+
|
|
1403
|
+
Related content on a raised surface.
|
|
1404
|
+
|
|
1222
1405
|
Type
|
|
1223
1406
|
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1407
|
+
Default type is base. default and light share the same surface tokens.
|
|
1408
|
+
|
|
1409
|
+
Base
|
|
1410
|
+
Light
|
|
1411
|
+
Default
|
|
1412
|
+
Primary
|
|
1413
|
+
Info
|
|
1414
|
+
Success
|
|
1415
|
+
Warning
|
|
1416
|
+
Danger
|
|
1417
|
+
Neutral
|
|
1418
|
+
Invert
|
|
1419
|
+
|
|
1420
|
+
Shadow
|
|
1421
|
+
|
|
1422
|
+
Set shadow to control elevation. Default is lg.
|
|
1423
|
+
|
|
1424
|
+
None
|
|
1425
|
+
Small
|
|
1426
|
+
Medium
|
|
1427
|
+
Large
|
|
1233
1428
|
|
|
1234
1429
|
Header
|
|
1235
1430
|
|
|
1236
|
-
|
|
1431
|
+
Quick titles with label and description, or full control through the default slot. slot="suffix" aligns badges or actions on the right; suffix content does not shrink when the title wraps.
|
|
1432
|
+
|
|
1433
|
+
label and description accept HTML (rendered as markup). Prefer plain text when possible; use sonic-card-header-description or the default slot for structured content.
|
|
1434
|
+
|
|
1435
|
+
Body content goes in the card slot or in sonic-card-main .
|
|
1237
1436
|
|
|
1238
|
-
|
|
1437
|
+
Choose what we email you about.
|
|
1239
1438
|
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1439
|
+
3 new
|
|
1440
|
+
|
|
1441
|
+
Custom header
|
|
1442
|
+
|
|
1443
|
+
Use the header slot when attributes are not enough.
|
|
1243
1444
|
|
|
1244
1445
|
Main
|
|
1245
1446
|
|
|
1246
|
-
|
|
1247
|
-
|
|
1447
|
+
Optional wrapper for the primary content area (typography, media, forms).
|
|
1448
|
+
|
|
1449
|
+
Improved performance on large lists and fixed an issue with keyboard navigation in menus.
|
|
1450
|
+
|
|
1451
|
+
See the changelog for details.
|
|
1248
1452
|
|
|
1249
1453
|
Footer
|
|
1250
1454
|
|
|
1251
|
-
|
|
1252
|
-
|
|
1455
|
+
Optional footer for actions, metadata, or secondary text.
|
|
1456
|
+
|
|
1457
|
+
This project and all of its data will be removed permanently.
|
|
1458
|
+
|
|
1459
|
+
Cancel
|
|
1460
|
+
Delete
|
|
1461
|
+
|
|
1462
|
+
Full example
|
|
1463
|
+
|
|
1464
|
+
Header, media, body, and footer together.
|
|
1465
|
+
|
|
1466
|
+
Nonstop flight with flexible dates. Prices shown include taxes and fees.
|
|
1467
|
+
|
|
1468
|
+
From $249
|
|
1469
|
+
Book
|
|
1253
1470
|
|
|
1254
|
-
|
|
1471
|
+
API reference
|
|
1255
1472
|
|
|
1256
|
-
|
|
1473
|
+
sonic-card
|
|
1257
1474
|
|
|
1258
|
-
|
|
1475
|
+
| Attribute | Values | Description |
|
|
1476
|
+
|----------|---------|-------------|
|
|
1477
|
+
| type | base (default) · light · invert · default · primary · warning · danger · success · info · neutral | Semantic background and text (default and light share the same surface) |
|
|
1478
|
+
| shadow | none · sm · md · lg (default lg) | Elevation on the card surface |
|
|
1259
1479
|
|
|
1260
|
-
|
|
1480
|
+
| Slot | Description |
|
|
1481
|
+
|------|-------------|
|
|
1482
|
+
| (default) | Free-form content (header, main, footer, or direct markup) |
|
|
1483
|
+
|
|
1484
|
+
sonic-card-header
|
|
1485
|
+
|
|
1486
|
+
| Attribute | Values | Description |
|
|
1487
|
+
|----------|---------|-------------|
|
|
1488
|
+
| label | HTML | Title (rendered as markup) |
|
|
1489
|
+
| description | HTML | Subtitle below the title |
|
|
1490
|
+
|
|
1491
|
+
| Slot | Description |
|
|
1492
|
+
|------|-------------|
|
|
1493
|
+
| (default) | Custom title / description when attributes are not enough |
|
|
1494
|
+
| suffix | Actions or badges aligned on the right (does not shrink) |
|
|
1495
|
+
|
|
1496
|
+
sonic-card-header-description
|
|
1497
|
+
|
|
1498
|
+
| Slot | Description |
|
|
1499
|
+
|------|-------------|
|
|
1500
|
+
| (default) | Subtitle text; styled below the title when slotted in sonic-card-header |
|
|
1501
|
+
|
|
1502
|
+
sonic-card-main · sonic-card-footer
|
|
1503
|
+
|
|
1504
|
+
| Slot | Description |
|
|
1505
|
+
|------|-------------|
|
|
1506
|
+
| (default) | Primary content (main) or actions / metadata (footer) |
|
|
1261
1507
|
|
|
1262
1508
|
---
|
|
1263
1509
|
|
|
@@ -1265,19 +1511,72 @@ Example of use
|
|
|
1265
1511
|
|
|
1266
1512
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/divider/divider.html
|
|
1267
1513
|
- Doc ID: core/components/ui/divider/divider
|
|
1268
|
-
- Keywords: Concorde, supersoniks, core/components/ui/divider/divider, divider, Divider, UI component, sonic-divider, web component
|
|
1514
|
+
- Keywords: Concorde, supersoniks, core/components/ui/divider/divider, divider, Divider, UI component, sonic-divider, web component, sonic-menu, label, align, center, lineStyle, solid, size, 0.5rem
|
|
1269
1515
|
|
|
1270
1516
|
Divider
|
|
1271
1517
|
|
|
1272
|
-
|
|
1518
|
+
sonic-divider draws a horizontal or vertical rule with optional centered label copy. Use it to separate sections in forms, cards, and sonic-menu. Set label for simple HTML captions or use the default slot for richer markup; default align is center and default lineStyle is solid.
|
|
1273
1519
|
|
|
1274
|
-
|
|
1520
|
+
Basic example
|
|
1521
|
+
|
|
1522
|
+
A bare divider is a full-width line with vertical margin. Omit size to use the host default spacing (0.5rem block margin).
|
|
1523
|
+
|
|
1524
|
+
Label and align
|
|
1525
|
+
|
|
1526
|
+
label renders inside the line (HTML via the same pipeline as other form labels). align controls which side(s) of the line remain visible: left drops the leading segment, right drops the trailing segment, center keeps both.
|
|
1275
1527
|
|
|
1276
1528
|
Size
|
|
1277
1529
|
|
|
1278
|
-
|
|
1530
|
+
size adjusts block margin and label font size. Values follow the shared Concorde scale (2xs … 2xl).
|
|
1531
|
+
|
|
1532
|
+
Line style
|
|
1533
|
+
|
|
1534
|
+
lineStyle sets the stroke of the rule (solid · dashed · dotted). In HTML use the reflected attribute linestyle (case-insensitive).
|
|
1535
|
+
|
|
1536
|
+
Vertical and margin
|
|
1537
|
+
|
|
1538
|
+
Set vertical for a column rule (for example between toolbar actions). noMargin removes host margin when a parent layout already provides spacing.
|
|
1539
|
+
|
|
1540
|
+
Before
|
|
1541
|
+
|
|
1542
|
+
After
|
|
1543
|
+
|
|
1544
|
+
Default slot
|
|
1545
|
+
|
|
1546
|
+
Slotted content replaces or augments label. Useful for badges, icons, or mixed markup in menus.
|
|
1547
|
+
|
|
1548
|
+
Section title
|
|
1549
|
+
+25
|
|
1550
|
+
|
|
1551
|
+
Inside typed cards
|
|
1552
|
+
|
|
1553
|
+
On sonic-card with semantic type (primary · warning · danger · info · success), the rule uses the card’s text color at reduced opacity so it stays visible on tinted surfaces. label and slotted captions use the same foreground color as surrounding copy.
|
|
1554
|
+
|
|
1555
|
+
This action cannot be undone.
|
|
1556
|
+
|
|
1557
|
+
Project files
|
|
1558
|
+
Shared links
|
|
1559
|
+
|
|
1560
|
+
Maintenance is scheduled for tonight.
|
|
1561
|
+
|
|
1562
|
+
Expected downtime: about 15 minutes.
|
|
1279
1563
|
|
|
1280
|
-
|
|
1564
|
+
API reference
|
|
1565
|
+
|
|
1566
|
+
| Attribute | Values | Description |
|
|
1567
|
+
|----------|---------|-------------|
|
|
1568
|
+
| label | string (HTML) | Caption centered on the rule; combined with default-slot content when both are set |
|
|
1569
|
+
| align | left · center · right (default center) | Hides the leading or trailing line segment for left/right alignment |
|
|
1570
|
+
| size | 2xs · xs · sm · md · lg · xl · 2xl · inherit | Vertical margin and label font-size; omit for host defaults |
|
|
1571
|
+
| lineStyle | solid · dashed · dotted (default solid) | Stroke style of the rule (HTML attribute linestyle) |
|
|
1572
|
+
| vertical | boolean | Renders a vertical rule; swap block/inline margins |
|
|
1573
|
+
| noMargin | boolean | Sets host margin to 0 |
|
|
1574
|
+
|
|
1575
|
+
| Slot | Description |
|
|
1576
|
+
|------|-------------|
|
|
1577
|
+
| (default) | Label markup when label is insufficient or empty |
|
|
1578
|
+
|
|
1579
|
+
The inner flex container exposes part="divider" for theme overrides.
|
|
1281
1580
|
|
|
1282
1581
|
---
|
|
1283
1582
|
|
|
@@ -1336,98 +1635,212 @@ Checked blacklistFlags values are sent to the mock API (?blacklistFlags=racist,s
|
|
|
1336
1635
|
|
|
1337
1636
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/form/fieldset/fieldset.html
|
|
1338
1637
|
- Doc ID: core/components/ui/form/fieldset/fieldset
|
|
1339
|
-
- Keywords: Concorde, supersoniks, core/components/ui/form/fieldset/fieldset, fieldset, Fieldset, UI component, form, sonic-fieldset, web component
|
|
1638
|
+
- Keywords: Concorde, supersoniks, core/components/ui/form/fieldset/fieldset, fieldset, Fieldset, UI component, form, sonic-fieldset, web component, , sonic-legend, label, description, iconName, variant, default, sonic-form-layout, ghost
|
|
1340
1639
|
|
|
1341
1640
|
Fieldset
|
|
1342
1641
|
|
|
1642
|
+
sonic-fieldset groups related form controls with a bordered container and an accessible semantics layer. Put fields in the default slot; add a title with sonic-legend or the shorthand label / description / iconName attributes. Default variant is default. Pair the body with sonic-form-layout for responsive columns.
|
|
1643
|
+
|
|
1644
|
+
Basic example
|
|
1645
|
+
|
|
1343
1646
|
Variant
|
|
1344
1647
|
|
|
1345
|
-
|
|
1648
|
+
ghost and shadow use a transparent border; shadow also applies --sc-shadow-lg.
|
|
1346
1649
|
|
|
1347
|
-
|
|
1650
|
+
Tight layout
|
|
1348
1651
|
|
|
1349
|
-
|
|
1652
|
+
Set tight to remove horizontal padding and side borders (flat strip inside a parent).
|
|
1350
1653
|
|
|
1351
1654
|
Legend
|
|
1352
1655
|
|
|
1353
|
-
|
|
1656
|
+
Use sonic-legend for the group title. Set label and description for simple copy, or use the default slot for custom markup. Add secondary text with sonic-legend-description. Place actions in slot="suffix" on the legend.
|
|
1657
|
+
|
|
1658
|
+
Attribute values on sonic-legend are rendered as HTML—use only trusted content.
|
|
1659
|
+
|
|
1660
|
+
Custom title in the default slot
|
|
1661
|
+
Description via sonic-legend-description
|
|
1662
|
+
|
|
1663
|
+
Shorthand legend on the fieldset
|
|
1664
|
+
|
|
1665
|
+
When label is set on sonic-fieldset, the component renders sonic-legend for you. Pass description iconName iconLibrary and iconPrefix the same way. Do not combine shorthand label with a separate slotted sonic-legend—you will get two legends.
|
|
1666
|
+
|
|
1667
|
+
Legend actions
|
|
1668
|
+
|
|
1669
|
+
Use slot="suffix" on sonic-legend for menus or icon buttons aligned to the end of the legend row.
|
|
1670
|
+
|
|
1671
|
+
Legal notice
|
|
1672
|
+
Terms of use
|
|
1673
|
+
|
|
1674
|
+
Form association and disabled state
|
|
1675
|
+
|
|
1676
|
+
Associating a distant form
|
|
1677
|
+
|
|
1678
|
+
Set form on sonic-fieldset to the id of a elsewhere in the page (same as the native form attribute on ). Named fields in the fieldset then belong to that form for submit and constraint validation—for example a toolbar form and a field group rendered lower on the layout.
|
|
1679
|
+
|
|
1680
|
+
Save billing
|
|
1681
|
+
|
|
1682
|
+
Disabling a group
|
|
1683
|
+
|
|
1684
|
+
Set disabled on sonic-fieldset to disable the inner and every control in the group (same as a native fieldset). Use it for read-only steps or sections gated by permissions.
|
|
1354
1685
|
|
|
1355
|
-
|
|
1686
|
+
Accessibility
|
|
1356
1687
|
|
|
1357
|
-
|
|
1688
|
+
The inner carries grouping semantics. disabled is applied on that element so nested controls are disabled in the usual way. sonic-legend renders a native for the group label.
|
|
1358
1689
|
|
|
1359
|
-
|
|
1690
|
+
API reference
|
|
1360
1691
|
|
|
1361
|
-
|
|
1362
|
-
Description du fieldset lorem ipsum dolor
|
|
1692
|
+
sonic-fieldset
|
|
1363
1693
|
|
|
1364
|
-
|
|
1365
|
-
|
|
1694
|
+
| Attribute | Values | Description |
|
|
1695
|
+
|----------|---------|-------------|
|
|
1696
|
+
| variant | default · ghost · shadow (default default) | Border and shadow treatment |
|
|
1697
|
+
| tight | boolean | Removes horizontal padding and side borders |
|
|
1698
|
+
| label | string | Shorthand legend title; renders sonic-legend when set |
|
|
1699
|
+
| description | string | Shorthand legend description (HTML) |
|
|
1700
|
+
| iconName | string | Shorthand legend icon name |
|
|
1701
|
+
| iconLibrary | string | Shorthand legend icon library |
|
|
1702
|
+
| iconPrefix | string | Shorthand legend icon prefix |
|
|
1703
|
+
| disabled | boolean | Disables the native and its controls |
|
|
1704
|
+
| form | string | id of an associated form |
|
|
1705
|
+
| dataProvider | string | Subscriber key; can autofill properties that match publisher fields (e.g. label) |
|
|
1366
1706
|
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
Femme
|
|
1707
|
+
| Slot | Description |
|
|
1708
|
+
|------|-------------|
|
|
1709
|
+
| (default) | Legend (optional) and field group content in visual order |
|
|
1371
1710
|
|
|
1372
|
-
|
|
1711
|
+
sonic-legend
|
|
1373
1712
|
|
|
1374
|
-
|
|
1713
|
+
| Attribute | Values | Description |
|
|
1714
|
+
|----------|---------|-------------|
|
|
1715
|
+
| label | string | Title HTML when not using the default slot |
|
|
1716
|
+
| description | string | Description HTML (wrapped in sonic-legend-description) |
|
|
1717
|
+
| iconName | string | Leading sonic-icon name |
|
|
1718
|
+
| iconLibrary | string | Icon library |
|
|
1719
|
+
| iconPrefix | string | Icon prefix |
|
|
1720
|
+
| forceAutoFill | boolean | Allows Subscriber autofill to override attribute-backed label / description |
|
|
1375
1721
|
|
|
1376
|
-
|
|
1722
|
+
| Slot | Description |
|
|
1723
|
+
|------|-------------|
|
|
1724
|
+
| (default) | Legend title and description components |
|
|
1725
|
+
| suffix | Trailing actions (menus, icon buttons) |
|
|
1377
1726
|
|
|
1378
|
-
|
|
1727
|
+
sonic-legend-description
|
|
1728
|
+
|
|
1729
|
+
Muted description line below the legend title. No attributes—project content through the default slot.
|
|
1379
1730
|
|
|
1380
1731
|
---
|
|
1381
1732
|
|
|
1382
|
-
## Form
|
|
1733
|
+
## Form actions
|
|
1383
1734
|
|
|
1384
1735
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/form/form-actions/form-actions.html
|
|
1385
1736
|
- Doc ID: core/components/ui/form/form-actions/form-actions
|
|
1386
|
-
- Keywords: Concorde, supersoniks, core/components/ui/form/form-actions/form-actions, form-actions, Form
|
|
1737
|
+
- Keywords: Concorde, supersoniks, core/components/ui/form/form-actions/form-actions, form-actions, Form actions, UI component, form, sonic-form-actions, web component, sonic-form-layout, direction, row, justify, flex-start, alignItems, center, justify-content
|
|
1387
1738
|
|
|
1388
|
-
Form
|
|
1739
|
+
Form actions
|
|
1389
1740
|
|
|
1390
|
-
|
|
1741
|
+
sonic-form-actions lays out submit / cancel and other form footer controls in a wrapping flex row with a small fixed gap. Place it inside sonic-form-layout (full-width row) or any block that should end with actions. Defaults: direction row · justify flex-start · alignItems center.
|
|
1391
1742
|
|
|
1392
|
-
|
|
1393
|
-
Cancel
|
|
1743
|
+
Basic example
|
|
1394
1744
|
|
|
1395
|
-
|
|
1745
|
+
With no attributes, actions align to the start of the row (typical for left-to-right forms).
|
|
1396
1746
|
|
|
1397
|
-
|
|
1398
|
-
|
|
1747
|
+
Submit
|
|
1748
|
+
Cancel
|
|
1399
1749
|
|
|
1400
|
-
|
|
1750
|
+
Justify content
|
|
1751
|
+
|
|
1752
|
+
justify maps to CSS justify-content. Use flex-end for dialog-style footers or center for balanced toolbars.
|
|
1753
|
+
|
|
1754
|
+
Submit
|
|
1755
|
+
Cancel
|
|
1756
|
+
|
|
1757
|
+
Flex direction
|
|
1758
|
+
|
|
1759
|
+
direction maps to flex-direction. row-reverse swaps visual order while keeping DOM order (focus order unchanged).
|
|
1760
|
+
|
|
1761
|
+
Submit
|
|
1762
|
+
Cancel
|
|
1763
|
+
|
|
1764
|
+
Mixed controls
|
|
1765
|
+
|
|
1766
|
+
Combine sonic-button with sonic-divider vertical or other slotted content. Default alignItems center keeps unlike heights aligned on the cross axis.
|
|
1401
1767
|
|
|
1402
|
-
|
|
1403
|
-
Cancel
|
|
1768
|
+
Left seats
|
|
1404
1769
|
|
|
1405
|
-
|
|
1770
|
+
Right seats
|
|
1406
1771
|
|
|
1407
|
-
|
|
1772
|
+
API reference
|
|
1408
1773
|
|
|
1409
|
-
|
|
1774
|
+
| Attribute | Values | Description |
|
|
1775
|
+
|----------|---------|-------------|
|
|
1776
|
+
| direction | row (default) · column · row-reverse · column-reverse | Main-axis layout of slotted controls |
|
|
1777
|
+
| justify | CSS justify-content (default flex-start) | Distribution along the main axis |
|
|
1778
|
+
| alignItems | CSS align-items (default center) | Cross-axis alignment when items differ in height |
|
|
1779
|
+
|
|
1780
|
+
The component exposes a single unnamed slot; there are no named slots. Slotted nodes use the host’s flex gap (0.3rem) and flex-wrap.
|
|
1781
|
+
|
|
1782
|
+
| Slot | Description |
|
|
1783
|
+
|------|-------------|
|
|
1784
|
+
| (default) | Footer actions (sonic-button and related controls) |
|
|
1410
1785
|
|
|
1411
1786
|
---
|
|
1412
1787
|
|
|
1413
|
-
## Form
|
|
1788
|
+
## Form layout
|
|
1414
1789
|
|
|
1415
1790
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/form/form-layout/form-layout.html
|
|
1416
1791
|
- Doc ID: core/components/ui/form/form-layout/form-layout
|
|
1417
|
-
- Keywords: Concorde, supersoniks, core/components/ui/form/form-layout/form-layout, form-layout, Form
|
|
1792
|
+
- Keywords: Concorde, supersoniks, core/components/ui/form/form-layout/form-layout, form-layout, Form layout, UI component, form, sonic-form-layout, web component, sonic-input, sonic-select, sonic-input-autocomplete, sonic-form-actions, sonic-fieldset, offsetWidth
|
|
1793
|
+
|
|
1794
|
+
Form layout
|
|
1795
|
+
|
|
1796
|
+
sonic-form-layout arranges slotted form controls in a responsive CSS grid with consistent vertical spacing. Pair sonic-input · sonic-select and sonic-input-autocomplete fields side by side when the host is wider than 440px; textareas, toggles, dividers, and sonic-form-actions span the full width. Wrap a form or sonic-fieldset body—no attributes are required.
|
|
1797
|
+
|
|
1798
|
+
Basic example
|
|
1799
|
+
|
|
1800
|
+
Typical registration-style form: short fields flow in two columns on wide layouts; long or grouped blocks stay full width.
|
|
1801
|
+
|
|
1802
|
+
— Select —
|
|
1803
|
+
Prefer not to say
|
|
1804
|
+
Male
|
|
1805
|
+
Female
|
|
1806
|
+
|
|
1807
|
+
Enable optional feature
|
|
1808
|
+
Subscribe to newsletter
|
|
1418
1809
|
|
|
1419
|
-
|
|
1810
|
+
I accept the
|
|
1811
|
+
terms and conditions
|
|
1420
1812
|
|
|
1421
|
-
|
|
1422
|
-
Je préfère ne pas le dire
|
|
1423
|
-
Homme
|
|
1424
|
-
Femme
|
|
1813
|
+
Submit
|
|
1425
1814
|
|
|
1426
|
-
|
|
1427
|
-
Inscription à la newsletter
|
|
1428
|
-
J'ai lu et accepte les Conditions générales de ventes
|
|
1815
|
+
Responsive columns
|
|
1429
1816
|
|
|
1430
|
-
|
|
1817
|
+
When the host offsetWidth is greater than 440px, the grid uses two equal columns with slightly larger gap (1.75rem). Below that breakpoint, fields stack in a single column (1.5rem gap).
|
|
1818
|
+
|
|
1819
|
+
If the slot contains exactly one direct sonic-input, sonic-select, or sonic-input-autocomplete, the layout stays one column even above the breakpoint so a lone field does not sit in half an empty row.
|
|
1820
|
+
|
|
1821
|
+
Narrow host (single column)
|
|
1822
|
+
|
|
1823
|
+
Wide host (two columns for inputs)
|
|
1824
|
+
|
|
1825
|
+
Full-width slotted blocks
|
|
1826
|
+
|
|
1827
|
+
Everything except sonic-input, sonic-select, sonic-input-autocomplete, and slotted elements with class form-item-container is assigned grid-column: 1 / -1. Use this for sonic-textarea, sonic-checkbox, sonic-switch, sonic-form-actions, sonic-divider, and similar blocks.
|
|
1828
|
+
|
|
1829
|
+
Slotted sonic-divider sets --sc-divider-my: 0 so divider spacing matches the grid rhythm. Slotted sonic-submit uses display: contents so submit controls participate in the grid without an extra wrapper box.
|
|
1830
|
+
|
|
1831
|
+
Send
|
|
1832
|
+
|
|
1833
|
+
Custom column wrapper
|
|
1834
|
+
|
|
1835
|
+
Add class form-item-container on a slotted wrapper (for example a div) when a field is not a direct sonic-input / sonic-select / sonic-input-autocomplete but should still share the two-column flow with short inputs.
|
|
1836
|
+
|
|
1837
|
+
API reference
|
|
1838
|
+
|
|
1839
|
+
No public attributes — layout follows slotted children and host width.
|
|
1840
|
+
|
|
1841
|
+
| Slot | Description |
|
|
1842
|
+
|------|-------------|
|
|
1843
|
+
| (default) | Form fields and blocks in visual order; column vs full-width rules apply per slotted tag or form-item-container class |
|
|
1431
1844
|
|
|
1432
1845
|
---
|
|
1433
1846
|
|
|
@@ -1469,7 +1882,7 @@ data-keyboard-nav sur le champ et les items (flèches haut / bas).
|
|
|
1469
1882
|
|
|
1470
1883
|
Input
|
|
1471
1884
|
|
|
1472
|
-
Native
|
|
1885
|
+
Native attributes list
|
|
1473
1886
|
|
|
1474
1887
|
Label
|
|
1475
1888
|
|
|
@@ -1640,7 +2053,7 @@ Same mock filter as Checkbox; switches can enable several flags (comma-separated
|
|
|
1640
2053
|
|
|
1641
2054
|
Textarea
|
|
1642
2055
|
|
|
1643
|
-
Native
|
|
2056
|
+
Native attributes list
|
|
1644
2057
|
|
|
1645
2058
|
Label
|
|
1646
2059
|
|
|
@@ -1662,47 +2075,91 @@ Size
|
|
|
1662
2075
|
|
|
1663
2076
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/group/group.html
|
|
1664
2077
|
- Doc ID: core/components/ui/group/group
|
|
1665
|
-
- Keywords: Concorde, supersoniks, core/components/ui/group/group, group, Group, UI component, sonic-group, web component
|
|
2078
|
+
- Keywords: Concorde, supersoniks, core/components/ui/group/group, group, Group, UI component, sonic-group, web component, sonic-button, sonic-input, sonic-select, label, description, radio, name, formDataProvider
|
|
1666
2079
|
|
|
1667
2080
|
Group
|
|
1668
2081
|
|
|
2082
|
+
sonic-group lays out slotted sonic-button · sonic-input and sonic-select controls in a single horizontal row with shared corner radius (first / middle / last items). Optional label and description follow form field styling. Use it for button groups, radio rows, or input + action toolbars.
|
|
2083
|
+
|
|
1669
2084
|
Radio group
|
|
1670
2085
|
|
|
2086
|
+
Pair with sonic-button radio and a shared name; ancestor formDataProvider stores the selected value.
|
|
2087
|
+
|
|
1671
2088
|
😎 Standard
|
|
1672
2089
|
⭐ Premium
|
|
1673
2090
|
💎 Diamond
|
|
1674
2091
|
|
|
1675
2092
|
Button group
|
|
1676
2093
|
|
|
1677
|
-
|
|
2094
|
+
Adjacent link or action buttons without merging into one control.
|
|
2095
|
+
|
|
2096
|
+
🗼 Air France
|
|
1678
2097
|
🌴 Air Tahiti
|
|
1679
2098
|
💣 Air Corsica
|
|
1680
2099
|
|
|
1681
2100
|
Input actions prefix
|
|
1682
2101
|
|
|
2102
|
+
Action control before the field. label or description on sonic-group annotate the row.
|
|
2103
|
+
|
|
1683
2104
|
Input actions suffix
|
|
1684
2105
|
|
|
2106
|
+
Field first, action after (submit, validate, etc.).
|
|
2107
|
+
|
|
2108
|
+
API reference
|
|
2109
|
+
|
|
2110
|
+
| Attribute | Values | Description |
|
|
2111
|
+
|----------|---------|-------------|
|
|
2112
|
+
| label | string (HTML) | Label above the row; slot="label" overrides / extends |
|
|
2113
|
+
| description | string (HTML) | Help text below the row; slot="description" overrides / extends |
|
|
2114
|
+
| alignItems | CSS align-items (default center) | Cross-axis alignment of the main flex row |
|
|
2115
|
+
|
|
2116
|
+
| Slot | Description |
|
|
2117
|
+
|------|-------------|
|
|
2118
|
+
| (default) | sonic-button · sonic-input · sonic-select in visual order |
|
|
2119
|
+
| label | Custom label markup |
|
|
2120
|
+
| description | Custom description markup |
|
|
2121
|
+
|
|
1685
2122
|
---
|
|
1686
2123
|
|
|
1687
2124
|
## Icon
|
|
1688
2125
|
|
|
1689
2126
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/icon/icon.html
|
|
1690
2127
|
- Doc ID: core/components/ui/icon/icon
|
|
1691
|
-
- Keywords: Concorde, supersoniks, core/components/ui/icon/icon, icon, Icon, UI component, sonic-icon, web component
|
|
2128
|
+
- Keywords: Concorde, supersoniks, core/components/ui/icon/icon, icon, Icon, UI component, sonic-icon, web component, name, library, prefix, size, currentColor, aria-hidden, icons.json
|
|
1692
2129
|
|
|
1693
2130
|
Icon
|
|
1694
2131
|
|
|
1695
|
-
|
|
2132
|
+
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.
|
|
1696
2133
|
|
|
1697
|
-
|
|
2134
|
+
Core library
|
|
1698
2135
|
|
|
1699
|
-
|
|
2136
|
+
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.
|
|
1700
2137
|
|
|
1701
|
-
|
|
2138
|
+
cancel
|
|
1702
2139
|
|
|
1703
|
-
|
|
2140
|
+
check
|
|
2141
|
+
|
|
2142
|
+
check-circled-outline
|
|
2143
|
+
|
|
2144
|
+
emoji-puzzled
|
|
2145
|
+
|
|
2146
|
+
info-empty
|
|
2147
|
+
|
|
2148
|
+
loader
|
|
2149
|
+
|
|
2150
|
+
minus-small
|
|
2151
|
+
|
|
2152
|
+
more-horiz
|
|
1704
2153
|
|
|
1705
|
-
|
|
2154
|
+
more-vert
|
|
2155
|
+
|
|
2156
|
+
nav-arrow-down
|
|
2157
|
+
|
|
2158
|
+
warning-circled-outline
|
|
2159
|
+
|
|
2160
|
+
External libraries
|
|
2161
|
+
|
|
2162
|
+
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).
|
|
1706
2163
|
|
|
1707
2164
|
heroicons
|
|
1708
2165
|
|
|
@@ -1718,8 +2175,20 @@ External
|
|
|
1718
2175
|
|
|
1719
2176
|
lucide
|
|
1720
2177
|
|
|
2178
|
+
Custom library
|
|
2179
|
+
|
|
2180
|
+
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.
|
|
2181
|
+
|
|
2182
|
+
regular
|
|
2183
|
+
|
|
2184
|
+
solid
|
|
2185
|
+
|
|
2186
|
+
default prefix
|
|
2187
|
+
|
|
1721
2188
|
Size
|
|
1722
2189
|
|
|
2190
|
+
Omit size for the default scale (1em height). Larger steps use 3xl.
|
|
2191
|
+
|
|
1723
2192
|
2xs
|
|
1724
2193
|
|
|
1725
2194
|
xs
|
|
@@ -1736,87 +2205,250 @@ Size
|
|
|
1736
2205
|
|
|
1737
2206
|
3xl
|
|
1738
2207
|
|
|
2208
|
+
Accessibility
|
|
2209
|
+
|
|
2210
|
+
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.
|
|
2211
|
+
|
|
2212
|
+
API reference
|
|
2213
|
+
|
|
2214
|
+
| Attribute | Values | Description |
|
|
2215
|
+
|----------|---------|-------------|
|
|
2216
|
+
| name | string | Icon id in the core bundle or in the remote library |
|
|
2217
|
+
| library | heroicons · iconoir · feathers · lucide · material · fontAwesome · custom | CDN or custom template; omit for bundled core icons |
|
|
2218
|
+
| prefix | string | Library-specific variant; defaults per library when empty |
|
|
2219
|
+
| size | 2xs · xs · sm · lg · xl · 2xl · 3xl (default md) | em-based SVG scale on the host |
|
|
2220
|
+
|
|
2221
|
+
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.
|
|
2222
|
+
|
|
2223
|
+
No slots — the component inlines fetched or bundled SVG markup.
|
|
2224
|
+
|
|
1739
2225
|
---
|
|
1740
2226
|
|
|
1741
2227
|
## Image
|
|
1742
2228
|
|
|
1743
2229
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/image/image.html
|
|
1744
2230
|
- Doc ID: core/components/ui/image/image
|
|
1745
|
-
- Keywords: Concorde, supersoniks, core/components/ui/image/image, image, Image, UI component, sonic-image, web component
|
|
2231
|
+
- 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
|
|
1746
2232
|
|
|
1747
2233
|
Image
|
|
1748
2234
|
|
|
2235
|
+
sonic-image wraps a responsive 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.
|
|
2236
|
+
|
|
1749
2237
|
Rounded
|
|
1750
2238
|
|
|
1751
|
-
|
|
2239
|
+
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).
|
|
2240
|
+
|
|
2241
|
+
default
|
|
2242
|
+
|
|
2243
|
+
sm
|
|
2244
|
+
|
|
2245
|
+
rounded
|
|
2246
|
+
|
|
2247
|
+
md
|
|
2248
|
+
|
|
2249
|
+
lg
|
|
2250
|
+
|
|
2251
|
+
xl
|
|
2252
|
+
|
|
2253
|
+
full
|
|
2254
|
+
|
|
2255
|
+
Aspect ratio
|
|
2256
|
+
|
|
2257
|
+
ratio sets CSS aspect-ratio on the image (default auto). The image still fills the host width (width: 100%).
|
|
1752
2258
|
|
|
1753
2259
|
Object position
|
|
1754
2260
|
|
|
2261
|
+
objectPosition maps to CSS object-position (default center center). Useful on wide crops when the subject sits off-center.
|
|
2262
|
+
|
|
1755
2263
|
Cover
|
|
1756
2264
|
|
|
2265
|
+
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.
|
|
2266
|
+
|
|
2267
|
+
Load transition
|
|
2268
|
+
|
|
2269
|
+
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).
|
|
2270
|
+
|
|
2271
|
+
Click Add image to append small thumbnails and replay the transition. Clear resets the row.
|
|
2272
|
+
|
|
2273
|
+
Add image (fade)
|
|
2274
|
+
|
|
2275
|
+
Add image (fade-scale-out)
|
|
2276
|
+
|
|
2277
|
+
Clear
|
|
2278
|
+
|
|
2279
|
+
Accessibility and parts
|
|
2280
|
+
|
|
2281
|
+
Always set meaningful alt text (empty string only for decorative images).
|
|
2282
|
+
|
|
2283
|
+
API reference
|
|
2284
|
+
|
|
2285
|
+
| Attribute | Values | Description |
|
|
2286
|
+
|----------|---------|-------------|
|
|
2287
|
+
| src | URL | Image URL passed to |
|
|
2288
|
+
| alt | string | Accessible description; use "" only for decorative images |
|
|
2289
|
+
| loading | lazy (default), eager | Native lazy loading |
|
|
2290
|
+
| ratio | CSS ratio, auto (default) | Host aspect-ratio on the image (ignored when cover is set) |
|
|
2291
|
+
| rounded | none (default), boolean, base, sm, md, lg, xl, full | Corner radius from theme tokens; full is a circle (often with ratio="1/1") |
|
|
2292
|
+
| objectPosition | CSS position | Maps to object-position (default center center) |
|
|
2293
|
+
| imageRendering | CSS value | Maps to image-rendering (default auto) |
|
|
2294
|
+
| cover | boolean | Absolutely fills a positioned parent; host aspect ratio is ignored |
|
|
2295
|
+
| transition | fade, fade-scale-out | Opacity (and scale) animation after load; remount to replay on src change |
|
|
2296
|
+
|
|
2297
|
+
No slots — content is driven entirely by attributes on the inner .
|
|
2298
|
+
|
|
2299
|
+
API reference
|
|
2300
|
+
|
|
2301
|
+
| Attribute | Values | Description |
|
|
2302
|
+
|----------|---------|-------------|
|
|
2303
|
+
| src | URL | Image URL passed to |
|
|
2304
|
+
| alt | string | Accessible description; use "" only for decorative images |
|
|
2305
|
+
| loading | lazy (default), eager | Native lazy loading |
|
|
2306
|
+
| ratio | CSS ratio, auto (default) | Host aspect-ratio on the image (ignored when cover is set) |
|
|
2307
|
+
| rounded | none (default), boolean, base, sm, md, lg, xl, full | Corner radius from theme tokens; full is a circle (often with ratio="1/1") |
|
|
2308
|
+
| objectPosition | CSS position | Maps to object-position (default center center) |
|
|
2309
|
+
| imageRendering | CSS value | Maps to image-rendering (default auto) |
|
|
2310
|
+
| cover | boolean | Absolutely fills a positioned parent; host aspect ratio is ignored |
|
|
2311
|
+
| transition | fade, fade-scale-out | Opacity (and scale) animation after load; remount to replay on src change |
|
|
2312
|
+
|
|
2313
|
+
No slots — content is driven entirely by attributes on the inner .
|
|
2314
|
+
|
|
1757
2315
|
---
|
|
1758
2316
|
|
|
1759
2317
|
## Link
|
|
1760
2318
|
|
|
1761
2319
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/link/link.html
|
|
1762
2320
|
- Doc ID: core/components/ui/link/link
|
|
1763
|
-
- Keywords: Concorde, supersoniks, core/components/ui/link/link, link, Link, UI component, sonic-link, web component
|
|
2321
|
+
- Keywords: Concorde, supersoniks, core/components/ui/link/link, link, Link, UI component, sonic-link, web component, href, pushstate, autoActive, active, target="_blank", rel="noopener noreferrer", partial
|
|
1764
2322
|
|
|
1765
2323
|
Link
|
|
1766
2324
|
|
|
1767
|
-
|
|
2325
|
+
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).
|
|
1768
2326
|
|
|
1769
|
-
|
|
2327
|
+
Basic example
|
|
2328
|
+
|
|
2329
|
+
Basic link with href attribute
|
|
1770
2330
|
|
|
1771
2331
|
Target
|
|
1772
2332
|
|
|
1773
|
-
|
|
2333
|
+
target="blank" opens a new browsing context and sets rel="noopener noreferrer".
|
|
2334
|
+
|
|
2335
|
+
Link with target attribute
|
|
2336
|
+
|
|
2337
|
+
Pushstate
|
|
2338
|
+
|
|
2339
|
+
Set pushstate on same-origin href values to intercept clicks and navigate through Concorde’s client router without a full reload.
|
|
2340
|
+
|
|
2341
|
+
Client navigation (pushstate)
|
|
1774
2342
|
|
|
1775
2343
|
AutoActive
|
|
1776
2344
|
|
|
2345
|
+
Default autoActive is partial: the host gets active when the current URL starts with href. Style with [&[active]]: utilities or host selectors.
|
|
2346
|
+
|
|
1777
2347
|
autoActive partial (default)
|
|
1778
2348
|
|
|
1779
|
-
AutoActive
|
|
2349
|
+
AutoActive strict vs partial
|
|
2350
|
+
|
|
2351
|
+
strict requires pathname, search, and hash to match. strict-path-only matches pathname and hash but ignores search.
|
|
1780
2352
|
|
|
1781
2353
|
autoActive strict
|
|
1782
|
-
autoActive strict
|
|
2354
|
+
autoActive strict (long href)
|
|
2355
|
+
autoActive strict-path-only
|
|
1783
2356
|
|
|
1784
2357
|
AutoActive disabled
|
|
1785
2358
|
|
|
1786
2359
|
autoActive disabled
|
|
1787
2360
|
|
|
2361
|
+
Accessibility
|
|
2362
|
+
|
|
2363
|
+
The inner uses focus-visible outline styling. Set data-aria-label when the slot text is not sufficient on its own.
|
|
2364
|
+
|
|
2365
|
+
API reference
|
|
2366
|
+
|
|
2367
|
+
| Attribute | Values | Description |
|
|
2368
|
+
|----------|---------|-------------|
|
|
2369
|
+
| href | URL | Link target; without href, only the slot is rendered (no ) |
|
|
2370
|
+
| target | e.g. blank | Navigation target; blank adds rel="noopener noreferrer" |
|
|
2371
|
+
| pushstate | boolean | Intercepts click for Concorde client navigation without reload |
|
|
2372
|
+
| autoActive | partial (default) · strict · strict-path-only · disabled | When the host gets the active attribute (same-origin href only) |
|
|
2373
|
+
| data-aria-label | string | Accessible aria-label when the slot text is not enough |
|
|
2374
|
+
|
|
2375
|
+
| Slot | Description |
|
|
2376
|
+
|------|-------------|
|
|
2377
|
+
| (default) | Link content (text, icons) |
|
|
2378
|
+
|
|
1788
2379
|
---
|
|
1789
2380
|
|
|
1790
2381
|
## Loader
|
|
1791
2382
|
|
|
1792
|
-
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/loader/loader.html
|
|
1793
|
-
- Doc ID: core/components/ui/loader/loader
|
|
1794
|
-
- Keywords: Concorde, supersoniks, core/components/ui/loader/loader, loader, Loader, UI component, sonic-loader, web component
|
|
2383
|
+
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/loader/loader.html
|
|
2384
|
+
- Doc ID: core/components/ui/loader/loader
|
|
2385
|
+
- Keywords: Concorde, supersoniks, core/components/ui/loader/loader, loader, Loader, UI component, sonic-loader, web component, mode, fixed, inline, noDelay, sonic-fetch, sonic-list, currentColor
|
|
2386
|
+
|
|
2387
|
+
Loader
|
|
2388
|
+
|
|
2389
|
+
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.
|
|
2390
|
+
|
|
2391
|
+
Basic example
|
|
2392
|
+
|
|
2393
|
+
Inline loaders fit content areas; they use the theme primary color unless currentColor is set.
|
|
2394
|
+
|
|
2395
|
+
Mode
|
|
2396
|
+
|
|
2397
|
+
inline — ellipsis animation in the document flow. fixed — centered overlay (position: fixed); default when the tag is omitted.
|
|
2398
|
+
|
|
2399
|
+
Use the checkbox below to toggle a fixed loader over the page (default mode on sonic-loader).
|
|
2400
|
+
|
|
2401
|
+
Inline alignment and color
|
|
2402
|
+
|
|
2403
|
+
align only affects mode="inline": left · center (default) · right. Set currentColor so dots follow the host color (for example on a purple parent).
|
|
2404
|
+
|
|
2405
|
+
noDelay
|
|
2406
|
+
|
|
2407
|
+
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.
|
|
2408
|
+
|
|
2409
|
+
Accessibility (announce)
|
|
2410
|
+
|
|
2411
|
+
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.
|
|
2412
|
+
|
|
2413
|
+
Show and hide programmatically
|
|
2414
|
+
|
|
2415
|
+
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.
|
|
2416
|
+
|
|
2417
|
+
import { Loader } from "@supersoniks/concorde/core/components/ui/loader/loader";
|
|
2418
|
+
|
|
2419
|
+
Loader.show({
|
|
2420
|
+
mode: "fixed",
|
|
2421
|
+
noDelay: false,
|
|
2422
|
+
announce: true,
|
|
2423
|
+
container: document.querySelector("#foo"),
|
|
2424
|
+
});
|
|
1795
2425
|
|
|
1796
|
-
Loader
|
|
2426
|
+
Loader.hide();
|
|
1797
2427
|
|
|
1798
|
-
|
|
2428
|
+
Composition
|
|
1799
2429
|
|
|
1800
|
-
|
|
2430
|
+
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.
|
|
1801
2431
|
|
|
1802
|
-
|
|
2432
|
+
Save changes
|
|
1803
2433
|
|
|
1804
|
-
|
|
2434
|
+
API reference
|
|
1805
2435
|
|
|
1806
|
-
|
|
2436
|
+
| Attribute | Values | Description |
|
|
2437
|
+
|----------|---------|-------------|
|
|
2438
|
+
| mode | inline · fixed (default fixed) | Layout: in-flow ellipsis vs viewport-centered overlay |
|
|
2439
|
+
| noDelay | boolean | Skips the initial fade-in delay before the animation appears |
|
|
2440
|
+
| announce | boolean | role="status" and aria-live="polite" with localized loading label when the loader should be announced |
|
|
2441
|
+
| align | left · center · right | Horizontal alignment for mode="inline" only (attribute selector; default centered) |
|
|
2442
|
+
| currentColor | boolean | Uses currentColor for dot fill instead of --sc-primary |
|
|
1807
2443
|
|
|
1808
|
-
|
|
2444
|
+
This component has no slots. The animation markup is internal.
|
|
1809
2445
|
|
|
1810
|
-
|
|
2446
|
+
Static methods
|
|
1811
2447
|
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
container : document.querySelector('#foo') // optional, default : parent sonic-theme || document.body
|
|
1817
|
-
});
|
|
1818
|
-
// Hide
|
|
1819
|
-
Loader.hide();
|
|
2448
|
+
| Method | Description |
|
|
2449
|
+
|--------|-------------|
|
|
2450
|
+
| 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. |
|
|
2451
|
+
| Loader.hide() | Decrements the show counter and removes the instance from the DOM when it reaches zero. |
|
|
1820
2452
|
|
|
1821
2453
|
---
|
|
1822
2454
|
|
|
@@ -1824,12 +2456,24 @@ import {Loader} from "@supersoniks/concorde/core/components/ui/loader/loader";
|
|
|
1824
2456
|
|
|
1825
2457
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/menu/menu.html
|
|
1826
2458
|
- Doc ID: core/components/ui/menu/menu
|
|
1827
|
-
- Keywords: Concorde, supersoniks, core/components/ui/menu/menu, menu, Menu, UI component, sonic-menu, web component
|
|
2459
|
+
- Keywords: Concorde, supersoniks, core/components/ui/menu/menu, menu, Menu, UI component, sonic-menu, web component, direction, sonic-menu-item, variant, shape, sonic-divider, more, href, pushstate, autoActive
|
|
1828
2460
|
|
|
1829
2461
|
Menu
|
|
1830
2462
|
|
|
2463
|
+
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.
|
|
2464
|
+
|
|
2465
|
+
Basic example
|
|
2466
|
+
|
|
2467
|
+
Home
|
|
2468
|
+
|
|
2469
|
+
Profile
|
|
2470
|
+
|
|
2471
|
+
Log out
|
|
2472
|
+
|
|
1831
2473
|
Direction
|
|
1832
2474
|
|
|
2475
|
+
Default direction is column. Use row for horizontal toolbars or tabs.
|
|
2476
|
+
|
|
1833
2477
|
Row
|
|
1834
2478
|
|
|
1835
2479
|
Profile
|
|
@@ -1852,7 +2496,9 @@ Direction
|
|
|
1852
2496
|
|
|
1853
2497
|
Size
|
|
1854
2498
|
|
|
1855
|
-
|
|
2499
|
+
size on the menu propagates to items and the more trigger when they omit their own size.
|
|
2500
|
+
|
|
2501
|
+
XS
|
|
1856
2502
|
|
|
1857
2503
|
Profile
|
|
1858
2504
|
|
|
@@ -1860,7 +2506,7 @@ Size
|
|
|
1860
2506
|
|
|
1861
2507
|
Orders
|
|
1862
2508
|
|
|
1863
|
-
|
|
2509
|
+
Small
|
|
1864
2510
|
|
|
1865
2511
|
Profile
|
|
1866
2512
|
|
|
@@ -1868,7 +2514,7 @@ Size
|
|
|
1868
2514
|
|
|
1869
2515
|
Orders
|
|
1870
2516
|
|
|
1871
|
-
|
|
2517
|
+
Medium
|
|
1872
2518
|
|
|
1873
2519
|
Profile
|
|
1874
2520
|
|
|
@@ -1876,7 +2522,7 @@ Size
|
|
|
1876
2522
|
|
|
1877
2523
|
Orders
|
|
1878
2524
|
|
|
1879
|
-
|
|
2525
|
+
Large
|
|
1880
2526
|
|
|
1881
2527
|
Profile
|
|
1882
2528
|
|
|
@@ -1884,7 +2530,7 @@ Size
|
|
|
1884
2530
|
|
|
1885
2531
|
Orders
|
|
1886
2532
|
|
|
1887
|
-
|
|
2533
|
+
XL
|
|
1888
2534
|
|
|
1889
2535
|
Profile
|
|
1890
2536
|
|
|
@@ -1894,30 +2540,36 @@ Size
|
|
|
1894
2540
|
|
|
1895
2541
|
Shadow
|
|
1896
2542
|
|
|
1897
|
-
|
|
2543
|
+
Optional shadow wraps the menu surface (no shadow when omitted).
|
|
1898
2544
|
|
|
1899
|
-
|
|
2545
|
+
None
|
|
1900
2546
|
|
|
1901
|
-
|
|
2547
|
+
Small
|
|
1902
2548
|
|
|
1903
|
-
|
|
2549
|
+
Medium
|
|
2550
|
+
|
|
2551
|
+
Large
|
|
1904
2552
|
|
|
1905
2553
|
Align
|
|
1906
2554
|
|
|
1907
|
-
|
|
2555
|
+
align propagates to items except square / circle shape.
|
|
1908
2556
|
|
|
1909
|
-
|
|
2557
|
+
Home
|
|
1910
2558
|
|
|
1911
|
-
|
|
2559
|
+
Profile
|
|
1912
2560
|
|
|
1913
|
-
|
|
2561
|
+
Home
|
|
1914
2562
|
|
|
1915
|
-
|
|
2563
|
+
Profile
|
|
1916
2564
|
|
|
1917
|
-
|
|
2565
|
+
Home
|
|
2566
|
+
|
|
2567
|
+
Profile
|
|
1918
2568
|
|
|
1919
2569
|
More
|
|
1920
2570
|
|
|
2571
|
+
Assign nodes to slot="more" to show the overflow popover. The trigger appears only when the slot has content. Icon orientation follows direction (vertical ellipsis in a row menu).
|
|
2572
|
+
|
|
1921
2573
|
Home
|
|
1922
2574
|
|
|
1923
2575
|
Profile
|
|
@@ -1934,6 +2586,8 @@ More
|
|
|
1934
2586
|
|
|
1935
2587
|
Scrollable
|
|
1936
2588
|
|
|
2589
|
+
With scrollable, the main slot scrolls with edge fade masks; drag-to-scroll works on pointer devices. When exactly one item is active, the menu scrolls it into view.
|
|
2590
|
+
|
|
1937
2591
|
Home
|
|
1938
2592
|
|
|
1939
2593
|
Profile
|
|
@@ -1968,74 +2622,189 @@ Scrollable
|
|
|
1968
2622
|
|
|
1969
2623
|
Log out
|
|
1970
2624
|
|
|
2625
|
+
API reference
|
|
2626
|
+
|
|
2627
|
+
| Attribute | Values | Description |
|
|
2628
|
+
|----------|---------|-------------|
|
|
2629
|
+
| direction | column (default) · row | Vertical list or horizontal bar |
|
|
2630
|
+
| align | left (default) · center · right | Alignment propagated to items (except square / circle shape) |
|
|
2631
|
+
| size | xs · sm · md · lg · xl | Propagated to items and the more trigger when unset on the item |
|
|
2632
|
+
| shadow | sm · md · lg | Shadow around the menu; omitted for none |
|
|
2633
|
+
| minWidth | CSS length | Minimum width of the container (default 0) |
|
|
2634
|
+
| scrollable | boolean | Scroll with edge fade; auto-scroll when a single item is active |
|
|
2635
|
+
| moreShape | circle (default) · square | Shape of the more slot trigger button |
|
|
2636
|
+
|
|
2637
|
+
| Slot | Description |
|
|
2638
|
+
|------|-------------|
|
|
2639
|
+
| (default) | Visible items: sonic-menu-item, sonic-divider, nested sonic-menu |
|
|
2640
|
+
| more | Popover content for the “…” control; shown only when the slot has assigned nodes |
|
|
2641
|
+
|
|
2642
|
+
sonic-menu-item extends sonic-button (defaults: variant="ghost", shape="block"). Use the button docs for type, variant, href, pushstate, autoActive, and item slots.
|
|
2643
|
+
|
|
1971
2644
|
---
|
|
1972
2645
|
|
|
1973
|
-
##
|
|
2646
|
+
## Modal
|
|
1974
2647
|
|
|
1975
2648
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/modal/modal.html
|
|
1976
2649
|
- Doc ID: core/components/ui/modal/modal
|
|
1977
|
-
- Keywords: Concorde, supersoniks, core/components/ui/modal/modal, modal, UI component, sonic-modal, web component
|
|
2650
|
+
- Keywords: Concorde, supersoniks, core/components/ui/modal/modal, modal, Modal, UI component, sonic-modal, web component, , sonic-modal-title, sonic-modal-subtitle, sonic-modal-content, sonic-modal-actions, show(), hideModal, hide(), forceAction
|
|
1978
2651
|
|
|
1979
2652
|
Modal
|
|
1980
2653
|
|
|
1981
|
-
|
|
2654
|
+
sonic-modal presents focused content in a overlay with backdrop, enter/exit animation, and a built-in close control. Compose sonic-modal-title / sonic-modal-subtitle / sonic-modal-content / sonic-modal-actions, or use the default slot. Call show() on the element to open; use hideModal on action buttons or hide() from script. Set forceAction when dismissal must go through explicit actions only. Imperative dialogs: Modal.create() (also window.SonicModal).
|
|
2655
|
+
|
|
2656
|
+
Basic example
|
|
2657
|
+
|
|
2658
|
+
Click the trigger to open. sonic-modal-actions lays out footer buttons; hideModal closes the modal on click. Scope form state with formDataProvider on sonic-modal-actions so child sonic-button elements share one publisher.
|
|
1982
2659
|
|
|
1983
|
-
|
|
1984
|
-
Donec sed vestibulum augue.
|
|
2660
|
+
Open modal
|
|
1985
2661
|
|
|
1986
|
-
|
|
2662
|
+
Export ready
|
|
2663
|
+
New
|
|
1987
2664
|
|
|
1988
|
-
|
|
2665
|
+
Your report finished processing.
|
|
1989
2666
|
|
|
1990
|
-
|
|
2667
|
+
Download the CSV now or review the summary in your dashboard before sharing.
|
|
1991
2668
|
|
|
1992
|
-
|
|
2669
|
+
Save draft
|
|
1993
2670
|
|
|
1994
|
-
|
|
2671
|
+
Download
|
|
1995
2672
|
|
|
1996
|
-
|
|
2673
|
+
Scrollable content
|
|
1997
2674
|
|
|
1998
|
-
|
|
1999
|
-
Du mercredi au samedi de 13h30 à 19h et le dimanche de 13h30 à 18h
|
|
2000
|
-
+ horaires spécifiques pour événements ou festivals
|
|
2675
|
+
Long copy scrolls inside the dialog. Default maxHeight is 90vh. Default align is left.
|
|
2001
2676
|
|
|
2002
|
-
|
|
2003
|
-
La participation à certains événements et activités est soumise à un système de billetterie avec achats ou
|
|
2004
|
-
réservations disponibles en ligne ou au guichet.
|
|
2677
|
+
Venue details
|
|
2005
2678
|
|
|
2006
|
-
|
|
2007
|
-
varier selon la nature de l’événement. Les tarifs sont identiques en ligne et au guichet. Il est néanmoins
|
|
2008
|
-
conseillé de réserver les billets en avance pour s’assurer une place.
|
|
2679
|
+
Hours and tickets
|
|
2009
2680
|
|
|
2010
|
-
|
|
2011
|
-
|
|
2681
|
+
Opening hours
|
|
2682
|
+
Wednesday–Saturday, 1:30 p.m.–7:00 p.m.; Sunday, 1:30 p.m.–6:00 p.m.
|
|
2012
2683
|
|
|
2013
|
-
|
|
2684
|
+
Ticketing
|
|
2685
|
+
Some events require online or box-office reservations. Prices vary by event; booking ahead is recommended when capacity is limited.
|
|
2014
2686
|
|
|
2015
|
-
|
|
2016
|
-
|
|
2687
|
+
Contact
|
|
2688
|
+
tickets@example.com · +33 3 28 33 48 33
|
|
2017
2689
|
|
|
2018
|
-
|
|
2019
|
-
|
|
2690
|
+
Access
|
|
2691
|
+
14 Place Faidherbe, 59100 Roubaix
|
|
2692
|
+
Metro line 2, Eurotéléport stop
|
|
2020
2693
|
|
|
2021
2694
|
Force action
|
|
2022
2695
|
|
|
2023
|
-
|
|
2696
|
+
With forceAction, backdrop click, Escape, and the default close button are disabled. Provide sonic-modal-actions (or sonic-modal-close) so users can finish the flow.
|
|
2024
2697
|
|
|
2025
|
-
|
|
2698
|
+
Cookie consent
|
|
2026
2699
|
|
|
2027
|
-
|
|
2700
|
+
Allow analytics cookies?
|
|
2028
2701
|
|
|
2029
|
-
|
|
2030
|
-
|
|
2702
|
+
We use cookies to measure traffic and improve the product. You can change this later in settings.
|
|
2703
|
+
|
|
2704
|
+
Decline
|
|
2705
|
+
Accept
|
|
2031
2706
|
|
|
2032
2707
|
Custom dimensions
|
|
2033
2708
|
|
|
2034
|
-
|
|
2709
|
+
Set width / height / maxWidth / maxHeight (CSS lengths). On narrow viewports the panel becomes a bottom sheet. Use rounded="none" for edge-to-edge media.
|
|
2710
|
+
|
|
2711
|
+
Image preview
|
|
2035
2712
|
|
|
2036
2713
|
Fullscreen
|
|
2037
2714
|
|
|
2038
|
-
|
|
2715
|
+
fullscreen fills the viewport and hides the backdrop.
|
|
2716
|
+
|
|
2717
|
+
Fullscreen
|
|
2718
|
+
|
|
2719
|
+
Programmatic creation
|
|
2720
|
+
|
|
2721
|
+
Use Modal.create(options) when there is no modal in the template—for confirmations, toasts that need a follow-up, or one-off flows from script. The modal is appended to the nearest sonic-theme pop container (same as declarative modals), opened automatically, and returns the sonic-modal instance. Set removeOnHide: true to detach it from the DOM after close. In the browser, window.SonicModal is the same class after the module loads.
|
|
2722
|
+
|
|
2723
|
+
Pass title / subtitle / content / actions as HTML strings (or Lit template results from application code). Put hideModal on action buttons in the actions string so clicks close the dialog.
|
|
2724
|
+
|
|
2725
|
+
Open programmatic modal
|
|
2726
|
+
|
|
2727
|
+
import { Modal } from "@supersoniks/concorde/core/components/ui/modal/modal";
|
|
2728
|
+
|
|
2729
|
+
const modal = Modal.create({
|
|
2730
|
+
title: "Delete project?",
|
|
2731
|
+
subtitle: "This cannot be undone.",
|
|
2732
|
+
content: " All files in Acme HQ will be removed. ",
|
|
2733
|
+
actions:
|
|
2734
|
+
Cancel
|
|
2735
|
+
Delete
|
|
2736
|
+
,
|
|
2737
|
+
removeOnHide: true,
|
|
2738
|
+
forceAction: false,
|
|
2739
|
+
maxWidth: "min(100vw, 28rem)",
|
|
2740
|
+
});
|
|
2741
|
+
|
|
2742
|
+
modal.addEventListener("hidden", () => {
|
|
2743
|
+
console.log("Modal removed from the DOM");
|
|
2744
|
+
});
|
|
2745
|
+
|
|
2746
|
+
// Or close from script: await modal.hide(); await modal.dispose();
|
|
2747
|
+
|
|
2748
|
+
API reference
|
|
2749
|
+
|
|
2750
|
+
sonic-modal
|
|
2751
|
+
|
|
2752
|
+
| Attribute | Values | Description |
|
|
2753
|
+
|----------|---------|-------------|
|
|
2754
|
+
| align | left (default) · center · right | Align title and slotted content |
|
|
2755
|
+
| maxWidth | CSS length (default min(100vw, 40rem)) | Dialog max width |
|
|
2756
|
+
| maxHeight | CSS length (default 90vh) | Scrollable body max height |
|
|
2757
|
+
| width | CSS length (default 100%) | Dialog width |
|
|
2758
|
+
| height | CSS length (default fit-content) | Dialog height |
|
|
2759
|
+
| paddingX · paddingY | CSS length | Override content padding (--sc-modal-px / --sc-modal-py) |
|
|
2760
|
+
| zIndex | CSS number | Stacking order (default 990) |
|
|
2761
|
+
| effect | slide (default) · fade · none | Open/close animation |
|
|
2762
|
+
| fullscreen | boolean | Full viewport; no backdrop |
|
|
2763
|
+
| forceAction | boolean | Disable overlay, Escape, and default close button |
|
|
2764
|
+
| noCloseButton | boolean | Hide built-in close when not forceAction |
|
|
2765
|
+
| closeButtonType | sonic-button type | Style of built-in close |
|
|
2766
|
+
| visible | boolean | When toggled, opens or closes the dialog |
|
|
2767
|
+
| removeOnHide | boolean | Remove element from DOM after close |
|
|
2768
|
+
| removeHashOnHide | boolean | Clear URL hash on close |
|
|
2769
|
+
| closeOnLocationChange | boolean | Close when app location changes |
|
|
2770
|
+
| resetDataProviderOnHide | string | Reset named formDataProvider on close |
|
|
2771
|
+
| rounded | none | Square dialog corners (useful for full-bleed media) |
|
|
2772
|
+
|
|
2773
|
+
| Slot | Description |
|
|
2774
|
+
|------|-------------|
|
|
2775
|
+
| (default) | Additional markup alongside structured children |
|
|
2776
|
+
|
|
2777
|
+
| Event | Description |
|
|
2778
|
+
|-------|-------------|
|
|
2779
|
+
| show | Fired when open animation completes |
|
|
2780
|
+
| hide | Fired when close starts |
|
|
2781
|
+
| hidden | Fired when close finishes |
|
|
2782
|
+
|
|
2783
|
+
Methods: show() · hide() · dispose() (hide and remove). Static Modal.create(options) appends a modal to the theme pop container and opens it. options / styleSheet are JavaScript-only.
|
|
2784
|
+
|
|
2785
|
+
sonic-modal-title · sonic-modal-subtitle · sonic-modal-content
|
|
2786
|
+
|
|
2787
|
+
| Slot | Description |
|
|
2788
|
+
|------|-------------|
|
|
2789
|
+
| (default) | Title, subtitle, or main body content |
|
|
2790
|
+
|
|
2791
|
+
sonic-modal-actions
|
|
2792
|
+
|
|
2793
|
+
| Slot | Description |
|
|
2794
|
+
|------|-------------|
|
|
2795
|
+
| (default) | Footer actions (typically sonic-button) |
|
|
2796
|
+
|
|
2797
|
+
Put hideModal on a sonic-button to close the parent modal on click. Ancestor formDataProvider on this element is inherited by child form controls.
|
|
2798
|
+
|
|
2799
|
+
sonic-modal-close
|
|
2800
|
+
|
|
2801
|
+
Rendered automatically unless forceAction or noCloseButton is set. Calls hide() on the parent modal.
|
|
2802
|
+
|
|
2803
|
+
| Attribute | Values | Description |
|
|
2804
|
+
|----------|---------|-------------|
|
|
2805
|
+
| type | sonic-button type | Close button color |
|
|
2806
|
+
| reset | string | Passed to inner sonic-button reset |
|
|
2807
|
+
| translation | UI label object | Overrides default close aria-label |
|
|
2039
2808
|
|
|
2040
2809
|
---
|
|
2041
2810
|
|
|
@@ -2043,103 +2812,237 @@ Fullscreen
|
|
|
2043
2812
|
|
|
2044
2813
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/pop/pop.html
|
|
2045
2814
|
- Doc ID: core/components/ui/pop/pop
|
|
2046
|
-
- Keywords: Concorde, supersoniks, core/components/ui/pop/pop, pop, Pop, UI component, sonic-pop, web component
|
|
2815
|
+
- Keywords: Concorde, supersoniks, core/components/ui/pop/pop, pop, Pop, UI component, sonic-pop, web component, slot="content", manual, placement, bottom, top, left, right, -start
|
|
2047
2816
|
|
|
2048
2817
|
Pop
|
|
2049
2818
|
|
|
2819
|
+
sonic-pop anchors floating panels to a trigger: put the control in the default slot and the panel in slot="content" (menus, forms, custom markup). Click toggles open/closed unless manual is set; default placement is bottom (start-aligned). Position updates while open and flips inside the viewport when space is tight.
|
|
2820
|
+
|
|
2821
|
+
Basic example
|
|
2822
|
+
|
|
2823
|
+
Notifications
|
|
2824
|
+
|
|
2825
|
+
Notifications
|
|
2826
|
+
|
|
2827
|
+
Settings
|
|
2828
|
+
|
|
2050
2829
|
Placement
|
|
2051
2830
|
|
|
2052
|
-
|
|
2831
|
+
Use top · bottom · left · right for the main axis. Add -start · -center · -end to align along the trigger edge. With no align suffix, content aligns to start. Legacy space syntax (placement="bottom center") still works but is deprecated—prefer bottom-center.
|
|
2832
|
+
|
|
2833
|
+
Left
|
|
2834
|
+
|
|
2835
|
+
Notifications
|
|
2836
|
+
|
|
2837
|
+
Right
|
|
2838
|
+
|
|
2839
|
+
Notifications
|
|
2840
|
+
|
|
2841
|
+
Top
|
|
2842
|
+
|
|
2843
|
+
Notifications
|
|
2844
|
+
|
|
2845
|
+
Bottom
|
|
2846
|
+
|
|
2847
|
+
Notifications
|
|
2848
|
+
|
|
2849
|
+
Center-aligned sides
|
|
2850
|
+
|
|
2851
|
+
Bottom center
|
|
2053
2852
|
|
|
2054
|
-
|
|
2853
|
+
Notifications
|
|
2055
2854
|
|
|
2056
|
-
|
|
2855
|
+
Top center
|
|
2057
2856
|
|
|
2058
|
-
|
|
2857
|
+
Notifications
|
|
2059
2858
|
|
|
2060
|
-
|
|
2859
|
+
Left center
|
|
2061
2860
|
|
|
2062
|
-
|
|
2861
|
+
Notifications
|
|
2063
2862
|
|
|
2064
|
-
|
|
2863
|
+
Right center
|
|
2065
2864
|
|
|
2066
|
-
|
|
2865
|
+
Notifications
|
|
2067
2866
|
|
|
2068
2867
|
Shadow
|
|
2069
2868
|
|
|
2070
|
-
|
|
2869
|
+
Default shadow is lg. The shadow applies to the floating content panel.
|
|
2071
2870
|
|
|
2072
|
-
|
|
2871
|
+
None
|
|
2073
2872
|
|
|
2074
|
-
|
|
2873
|
+
Notifications
|
|
2075
2874
|
|
|
2076
|
-
|
|
2875
|
+
Small
|
|
2077
2876
|
|
|
2078
|
-
|
|
2877
|
+
Notifications
|
|
2079
2878
|
|
|
2080
|
-
|
|
2879
|
+
Medium
|
|
2081
2880
|
|
|
2082
|
-
|
|
2881
|
+
Notifications
|
|
2882
|
+
|
|
2883
|
+
Large
|
|
2884
|
+
|
|
2885
|
+
Notifications
|
|
2886
|
+
|
|
2887
|
+
Inline
|
|
2888
|
+
|
|
2889
|
+
By default the host is middle-aligned with siblings. Set inline to baseline-align the trigger inside running text.
|
|
2083
2890
|
|
|
2084
|
-
|
|
2891
|
+
The Concorde flew from Paris to
|
|
2085
2892
|
|
|
2086
|
-
|
|
2893
|
+
New York
|
|
2087
2894
|
|
|
2088
|
-
|
|
2895
|
+
See flights
|
|
2896
|
+
Book a seat
|
|
2089
2897
|
|
|
2090
|
-
|
|
2898
|
+
in about 3.5 hours.
|
|
2091
2899
|
|
|
2092
|
-
|
|
2900
|
+
No toggle
|
|
2093
2901
|
|
|
2094
|
-
|
|
2902
|
+
With noToggle, a click on the trigger still opens the pop but does not close it when it is already open. Use hide() or an outside click to dismiss.
|
|
2095
2903
|
|
|
2096
|
-
|
|
2904
|
+
No toggle on click
|
|
2097
2905
|
|
|
2098
|
-
|
|
2906
|
+
Notifications
|
|
2099
2907
|
|
|
2100
|
-
|
|
2908
|
+
Default toggle on click
|
|
2909
|
+
|
|
2910
|
+
Notifications
|
|
2911
|
+
|
|
2912
|
+
Manual control
|
|
2913
|
+
|
|
2914
|
+
Set manual to disable built-in click and keyboard toggle on the trigger. Call show() and hide() on the element instead. The pop dispatches show when it opens and hide when it closes.
|
|
2915
|
+
|
|
2916
|
+
Click Click to open pop to open the panel programmatically.
|
|
2917
|
+
|
|
2918
|
+
Manual trigger
|
|
2919
|
+
|
|
2920
|
+
It worked!
|
|
2101
2921
|
|
|
2102
2922
|
Click to open pop
|
|
2103
2923
|
|
|
2924
|
+
Keep open on select
|
|
2925
|
+
|
|
2926
|
+
By default, a click inside content closes the pop (same as an outside click). Set data-on-select="keep" on the panel or a descendant to keep it open while selecting checkboxes, toggles, or menu items.
|
|
2927
|
+
|
|
2928
|
+
Closes on select
|
|
2929
|
+
|
|
2930
|
+
Option A
|
|
2931
|
+
Option B
|
|
2932
|
+
|
|
2933
|
+
Stays open on select
|
|
2934
|
+
|
|
2935
|
+
Option A
|
|
2936
|
+
Option B
|
|
2937
|
+
|
|
2938
|
+
Keyboard and dismissal
|
|
2939
|
+
|
|
2940
|
+
ArrowDown on the trigger opens the pop when it is closed. Escape closes the most recently opened pop (capture phase, before ancestors such as sonic-modal) and returns focus to that trigger. Multiple pops on the page stack in open order for Escape.
|
|
2941
|
+
|
|
2942
|
+
Focus me — ArrowDown opens, Escape closes
|
|
2943
|
+
|
|
2944
|
+
First item
|
|
2945
|
+
Second item
|
|
2946
|
+
|
|
2947
|
+
API reference
|
|
2948
|
+
|
|
2949
|
+
| Attribute | Values | Description |
|
|
2950
|
+
|----------|---------|-------------|
|
|
2951
|
+
| placement | bottom (default) · top · left · right · top-start · top-center · top-end · bottom-start · bottom-center · bottom-end · left-start · left-center · left-end · right-start · right-center · right-end | Side and alignment relative to the trigger; repositions while open and flips within the viewport |
|
|
2952
|
+
| shadow | none · sm · md · lg (default lg) | Box shadow on the content panel |
|
|
2953
|
+
| inline | boolean | Baseline-align the host for inline triggers |
|
|
2954
|
+
| noToggle | boolean | When open, trigger click does not close the pop |
|
|
2955
|
+
| manual | boolean | Disable default trigger toggle; use show() / hide() |
|
|
2956
|
+
|
|
2957
|
+
| Slot | Description |
|
|
2958
|
+
|------|-------------|
|
|
2959
|
+
| (default) | Trigger; listens for click and keydown (ArrowDown opens when closed) unless manual |
|
|
2960
|
+
| content | Floating panel; receives focus tabindex="0" while open |
|
|
2961
|
+
|
|
2962
|
+
Methods: show() · hide() on the host element.
|
|
2963
|
+
|
|
2964
|
+
Events: show · hide (non-bubbling CustomEvent).
|
|
2965
|
+
|
|
2966
|
+
Content attribute: data-on-select="keep" on content or descendants prevents close-on-click inside the panel.
|
|
2967
|
+
|
|
2104
2968
|
---
|
|
2105
2969
|
|
|
2106
|
-
## Progress
|
|
2970
|
+
## Progress
|
|
2107
2971
|
|
|
2108
2972
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/progress/progress.html
|
|
2109
2973
|
- Doc ID: core/components/ui/progress/progress
|
|
2110
|
-
- Keywords: Concorde, supersoniks, core/components/ui/progress/progress, progress, Progress
|
|
2974
|
+
- Keywords: Concorde, supersoniks, core/components/ui/progress/progress, progress, Progress, UI component, sonic-progress, web component, value, max, , remaining, invert, sonic-card, to **, ** (default
|
|
2111
2975
|
|
|
2112
|
-
Progress
|
|
2976
|
+
Progress
|
|
2113
2977
|
|
|
2114
|
-
|
|
2978
|
+
Shows task completion on a value / max scale via a native bar. Omit value for an indeterminate loading animation. Put primary copy in the default slot and optional secondary text in remaining; set invert when the bar sits on a colored surface such as sonic-card.
|
|
2115
2979
|
|
|
2116
|
-
|
|
2980
|
+
Basic example
|
|
2117
2981
|
|
|
2118
|
-
|
|
2982
|
+
Set value from 0 to max (default 100). Label text uses the type color.
|
|
2119
2983
|
|
|
2120
|
-
|
|
2984
|
+
50%
|
|
2121
2985
|
|
|
2122
|
-
|
|
2986
|
+
Indeterminate
|
|
2123
2987
|
|
|
2124
|
-
|
|
2125
|
-
25%
|
|
2126
|
-
25%
|
|
2127
|
-
25%
|
|
2128
|
-
25%
|
|
2129
|
-
25%
|
|
2130
|
-
25%
|
|
2988
|
+
With no value, the bar animates until progress is known.
|
|
2131
2989
|
|
|
2132
2990
|
Type
|
|
2133
2991
|
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2992
|
+
Semantic color follows type. With no type, behavior is default.
|
|
2993
|
+
|
|
2994
|
+
50%
|
|
2995
|
+
50%
|
|
2996
|
+
50%
|
|
2997
|
+
50%
|
|
2998
|
+
50%
|
|
2999
|
+
50%
|
|
3000
|
+
50%
|
|
3001
|
+
|
|
3002
|
+
Size
|
|
3003
|
+
|
|
3004
|
+
Bar height scales with typography via size. With no size, font size matches md (1rem).
|
|
3005
|
+
|
|
3006
|
+
25%
|
|
3007
|
+
25%
|
|
3008
|
+
25%
|
|
3009
|
+
25%
|
|
3010
|
+
25%
|
|
3011
|
+
25%
|
|
3012
|
+
25%
|
|
3013
|
+
|
|
3014
|
+
Default and remaining slots
|
|
3015
|
+
|
|
3016
|
+
The default slot is the main label (left). remaining is right-aligned with lighter weight—use it for “left to complete” copy.
|
|
3017
|
+
|
|
3018
|
+
80% Used 20% left
|
|
2139
3019
|
|
|
2140
3020
|
Invert
|
|
2141
3021
|
|
|
2142
|
-
|
|
3022
|
+
On tinted backgrounds, invert adjusts track and fill tokens so the bar stays readable (pair with matching type on sonic-card or similar).
|
|
3023
|
+
|
|
3024
|
+
50%
|
|
3025
|
+
|
|
3026
|
+
50%
|
|
3027
|
+
|
|
3028
|
+
50%
|
|
3029
|
+
|
|
3030
|
+
50%
|
|
3031
|
+
|
|
3032
|
+
API reference
|
|
3033
|
+
|
|
3034
|
+
| Attribute | Values | Description |
|
|
3035
|
+
|----------|---------|-------------|
|
|
3036
|
+
| value | number | Completion amount; omit for indeterminate state |
|
|
3037
|
+
| max | number (default 100) | Upper bound for value |
|
|
3038
|
+
| type | default (default) · primary · neutral · warning · info · success · danger | Semantic bar and label color |
|
|
3039
|
+
| size | 2xs · xs · sm · md · lg · xl · 2xl · inherit | Typography scale (bar height follows em) |
|
|
3040
|
+
| invert | boolean | High-contrast tokens on colored backgrounds |
|
|
3041
|
+
|
|
3042
|
+
| Slot | Description |
|
|
3043
|
+
|------|-------------|
|
|
3044
|
+
| (default) | Primary label below the bar (left) |
|
|
3045
|
+
| remaining | Secondary label below the bar (right) |
|
|
2143
3046
|
|
|
2144
3047
|
---
|
|
2145
3048
|
|
|
@@ -2147,11 +3050,15 @@ Invert
|
|
|
2147
3050
|
|
|
2148
3051
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/table/table.html
|
|
2149
3052
|
- Doc ID: core/components/ui/table/table
|
|
2150
|
-
- Keywords: Concorde, supersoniks, core/components/ui/table/table, table, Table, UI component, sonic-table, web component
|
|
3053
|
+
- Keywords: Concorde, supersoniks, core/components/ui/table/table, table, Table, UI component, sonic-table, web component, sonic-tr, sonic-th, sonic-td, size, maxHeight, sonic-thead, sonic-tbody, sonic-list
|
|
2151
3054
|
|
|
2152
3055
|
Table
|
|
2153
3056
|
|
|
2154
|
-
|
|
3057
|
+
sonic-table lays out tabular data with composable sonic-tr / sonic-th / sonic-td children. The root applies shared typography via size, scrolls horizontally when content overflows, and optionally caps height with maxHeight. Pair with sonic-thead and sonic-tbody for structure and with sonic-list to render fetched rows.
|
|
3058
|
+
|
|
3059
|
+
Basic example
|
|
3060
|
+
|
|
3061
|
+
A header row plus body rows is enough for static tables; sonic-thead / sonic-tbody are optional for simple layouts.
|
|
2155
3062
|
|
|
2156
3063
|
Id
|
|
2157
3064
|
Name
|
|
@@ -2169,7 +3076,9 @@ Basic usage
|
|
|
2169
3076
|
Emma Wong
|
|
2170
3077
|
emma.wong@reqres.in
|
|
2171
3078
|
|
|
2172
|
-
List
|
|
3079
|
+
List and fetch
|
|
3080
|
+
|
|
3081
|
+
Place sonic-list inside sonic-tbody so each item template renders a sonic-tr. sonic-list sets row metadata (even / odd / last) on sonic-tr for striping and borders.
|
|
2173
3082
|
|
|
2174
3083
|
Id
|
|
2175
3084
|
Name
|
|
@@ -2179,6 +3088,8 @@ List / fetch
|
|
|
2179
3088
|
|
|
2180
3089
|
Size
|
|
2181
3090
|
|
|
3091
|
+
Default font size is md (omit size). Sizes follow the shared scale (2xs … 2xl).
|
|
3092
|
+
|
|
2182
3093
|
2xs
|
|
2183
3094
|
|
|
2184
3095
|
xs
|
|
@@ -2197,6 +3108,8 @@ Size
|
|
|
2197
3108
|
|
|
2198
3109
|
Bordered
|
|
2199
3110
|
|
|
3111
|
+
Set bordered on sonic-table for an outer frame and horizontal rules between rows.
|
|
3112
|
+
|
|
2200
3113
|
Id
|
|
2201
3114
|
Name
|
|
2202
3115
|
Email
|
|
@@ -2213,7 +3126,9 @@ Bordered
|
|
|
2213
3126
|
Emma Wong
|
|
2214
3127
|
emma.wong@reqres.in
|
|
2215
3128
|
|
|
2216
|
-
|
|
3129
|
+
Max height
|
|
3130
|
+
|
|
3131
|
+
maxHeight applies to the scroll container (for example 8rem), so the body scrolls vertically while the table can still scroll horizontally.
|
|
2217
3132
|
|
|
2218
3133
|
Id
|
|
2219
3134
|
Name
|
|
@@ -2223,36 +3138,34 @@ MaxHeight
|
|
|
2223
3138
|
|
|
2224
3139
|
Type
|
|
2225
3140
|
|
|
2226
|
-
|
|
3141
|
+
Set type on sonic-th / sonic-td / sonic-tr for semantic text color (primary · info · success · warning · danger · neutral · default).
|
|
3142
|
+
|
|
3143
|
+
Attribute type set on
|
|
3144
|
+
sonic-th
|
|
2227
3145
|
|
|
2228
|
-
|
|
2229
|
-
|
|
3146
|
+
Attribute type set on
|
|
3147
|
+
sonic-td
|
|
2230
3148
|
|
|
2231
|
-
|
|
2232
|
-
|
|
3149
|
+
Attribute type set on
|
|
3150
|
+
sonic-tr
|
|
2233
3151
|
|
|
2234
|
-
|
|
2235
|
-
sonic-tr
|
|
3152
|
+
Colspan and rowspan
|
|
2236
3153
|
|
|
2237
|
-
|
|
3154
|
+
Use colSpan and rowSpan on sonic-th or sonic-td (maps to colspan / rowspan on the cell).
|
|
2238
3155
|
|
|
2239
|
-
colspan
|
|
3156
|
+
colspan: 2
|
|
2240
3157
|
cell
|
|
2241
3158
|
|
|
2242
3159
|
cell
|
|
2243
3160
|
cell
|
|
2244
|
-
rowspan
|
|
3161
|
+
rowspan: 2
|
|
2245
3162
|
|
|
2246
3163
|
cell
|
|
2247
3164
|
cell
|
|
2248
3165
|
|
|
2249
|
-
Cell
|
|
3166
|
+
Cell alignment and width
|
|
2250
3167
|
|
|
2251
|
-
|
|
2252
|
-
- align
|
|
2253
|
-
- minWidth
|
|
2254
|
-
- maxWidth
|
|
2255
|
-
- width
|
|
3168
|
+
align sets horizontal alignment (left · center · right). minWidth / maxWidth / width set inline dimensions on the cell. vAlign is available on sonic-td only.
|
|
2256
3169
|
|
|
2257
3170
|
align
|
|
2258
3171
|
minWidth
|
|
@@ -2271,12 +3184,12 @@ The following attributes will be used to set the style of the component :
|
|
|
2271
3184
|
|
|
2272
3185
|
right
|
|
2273
3186
|
20rem
|
|
2274
|
-
5rem
|
|
2275
|
-
15rem
|
|
3187
|
+
5rem — Lorem ipsum dolor
|
|
3188
|
+
15rem — Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
2276
3189
|
|
|
2277
|
-
Responsive
|
|
3190
|
+
Responsive layout
|
|
2278
3191
|
|
|
2279
|
-
|
|
3192
|
+
Tables scroll horizontally by default when columns exceed the viewport. Use minWidth on wide columns to preserve readable line length.
|
|
2280
3193
|
|
|
2281
3194
|
Id
|
|
2282
3195
|
Name
|
|
@@ -2285,9 +3198,11 @@ Every table is responsive by default
|
|
|
2285
3198
|
|
|
2286
3199
|
$lastname ">
|
|
2287
3200
|
|
|
2288
|
-
|
|
3201
|
+
Phasellus suscipit vulputate lacus, in tempor turpis aliquam vel. Nunc eleifend, velit id ultrices elementum, ipsum felis porttitor dui, id laoreet diam nulla sed urna.
|
|
2289
3202
|
|
|
2290
|
-
Sticky header
|
|
3203
|
+
Sticky header and caption
|
|
3204
|
+
|
|
3205
|
+
sonic-th uses position: sticky with top: 0 inside the table. For page-level sticky headers, set noCustomScroll on sonic-table and position sonic-thead (for example class="sticky top-16"). Add sonic-caption for a table title below the grid.
|
|
2291
3206
|
|
|
2292
3207
|
Company
|
|
2293
3208
|
Contact
|
|
@@ -2306,18 +3221,6 @@ Sticky header
|
|
|
2306
3221
|
3
|
|
2307
3222
|
40€
|
|
2308
3223
|
|
|
2309
|
-
Ernst Handel
|
|
2310
|
-
Roland Mendel
|
|
2311
|
-
Austria
|
|
2312
|
-
4
|
|
2313
|
-
40€
|
|
2314
|
-
|
|
2315
|
-
Island Trading
|
|
2316
|
-
Helen Bennett
|
|
2317
|
-
UK
|
|
2318
|
-
1
|
|
2319
|
-
40€
|
|
2320
|
-
|
|
2321
3224
|
Laughing Bacchus Winecellars
|
|
2322
3225
|
Yoshi Tannamuri
|
|
2323
3226
|
Canada
|
|
@@ -2330,42 +3233,165 @@ Sticky header
|
|
|
2330
3233
|
20
|
|
2331
3234
|
40€
|
|
2332
3235
|
|
|
2333
|
-
|
|
2334
|
-
Maria Anders
|
|
2335
|
-
Germany
|
|
2336
|
-
2
|
|
2337
|
-
40€
|
|
3236
|
+
Table caption
|
|
2338
3237
|
|
|
2339
|
-
|
|
2340
|
-
no information yet
|
|
2341
|
-
3
|
|
2342
|
-
40€
|
|
3238
|
+
API reference
|
|
2343
3239
|
|
|
2344
|
-
|
|
2345
|
-
Roland Mendel
|
|
2346
|
-
Austria
|
|
2347
|
-
4
|
|
2348
|
-
40€
|
|
3240
|
+
sonic-table
|
|
2349
3241
|
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
3242
|
+
| Attribute | Values | Description |
|
|
3243
|
+
|----------|---------|-------------|
|
|
3244
|
+
| size | 2xs · xs · sm · md · lg · xl · 2xl · inherit (default md) | Scales table font size via shared size tokens |
|
|
3245
|
+
| bordered | boolean | Outer border and row dividers |
|
|
3246
|
+
| noCustomScroll | boolean | Disables custom scrollbar styling on the horizontal scroll container |
|
|
3247
|
+
| rounded | boolean | Reflected on the host; no default table styles |
|
|
3248
|
+
| maxHeight | CSS length | Max height on the scroll container; enables vertical scrolling |
|
|
2355
3249
|
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
0
|
|
2360
|
-
40€
|
|
3250
|
+
| Slot | Description |
|
|
3251
|
+
|------|-------------|
|
|
3252
|
+
| (default) | Table sections and rows (sonic-thead, sonic-tbody, sonic-tr, …) |
|
|
2361
3253
|
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
3254
|
+
sonic-thead · sonic-tbody · sonic-tfoot
|
|
3255
|
+
|
|
3256
|
+
| Slot | Description |
|
|
3257
|
+
|------|-------------|
|
|
3258
|
+
| (default) | Row elements (sonic-tr) |
|
|
3259
|
+
|
|
3260
|
+
sonic-tbody wraps slotted rows in a native and applies zebra / hover backgrounds to sonic-tr children.
|
|
3261
|
+
|
|
3262
|
+
sonic-caption
|
|
3263
|
+
|
|
3264
|
+
| Slot | Description |
|
|
3265
|
+
|------|-------------|
|
|
3266
|
+
| (default) | Caption text rendered as table-caption |
|
|
3267
|
+
|
|
3268
|
+
sonic-tr
|
|
3269
|
+
|
|
3270
|
+
| Attribute | Values | Description |
|
|
3271
|
+
|----------|---------|-------------|
|
|
3272
|
+
| type | default · primary · info · success · warning · danger · neutral | Semantic text color for the row |
|
|
3273
|
+
| even | boolean | Striping background; usually set by sonic-list metadata |
|
|
3274
|
+
| odd | boolean | Alternate striping background; usually set by sonic-list |
|
|
3275
|
+
| last | boolean | Removes bottom cell border on the last row when bordered |
|
|
3276
|
+
|
|
3277
|
+
| Slot | Description |
|
|
3278
|
+
|------|-------------|
|
|
3279
|
+
| (default) | Header or data cells (sonic-th / sonic-td) |
|
|
3280
|
+
|
|
3281
|
+
sonic-th
|
|
3282
|
+
|
|
3283
|
+
| Attribute | Values | Description |
|
|
3284
|
+
|----------|---------|-------------|
|
|
3285
|
+
| type | default · primary · info · success · warning · danger · neutral | Semantic text color |
|
|
3286
|
+
| align | left · center · right | Horizontal text alignment |
|
|
3287
|
+
| colSpan | number | Column span |
|
|
3288
|
+
| rowSpan | number | Row span |
|
|
3289
|
+
| minWidth | CSS length | Minimum cell width |
|
|
3290
|
+
| maxWidth | CSS length | Maximum cell width |
|
|
3291
|
+
| width | CSS length | Cell width |
|
|
3292
|
+
| noBorder | boolean | Removes the bottom border under the header cell |
|
|
3293
|
+
|
|
3294
|
+
| Slot | Description |
|
|
3295
|
+
|------|-------------|
|
|
3296
|
+
| (default) | Header label content |
|
|
3297
|
+
|
|
3298
|
+
sonic-td
|
|
3299
|
+
|
|
3300
|
+
| Attribute | Values | Description |
|
|
3301
|
+
|----------|---------|-------------|
|
|
3302
|
+
| type | default · primary · info · success · warning · danger · neutral | Semantic text color |
|
|
3303
|
+
| align | left · center · right | Horizontal text alignment |
|
|
3304
|
+
| vAlign | CSS vertical-align value | Vertical alignment |
|
|
3305
|
+
| colSpan | number | Column span |
|
|
3306
|
+
| rowSpan | number | Row span |
|
|
3307
|
+
| minWidth | CSS length | Minimum cell width |
|
|
3308
|
+
| maxWidth | CSS length | Maximum cell width |
|
|
3309
|
+
| width | CSS length | Cell width |
|
|
3310
|
+
|
|
3311
|
+
| Slot | Description |
|
|
3312
|
+
|------|-------------|
|
|
3313
|
+
| (default) | Cell content |
|
|
3314
|
+
|
|
3315
|
+
---
|
|
3316
|
+
|
|
3317
|
+
## Theme
|
|
3318
|
+
|
|
3319
|
+
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/theme/theme.html
|
|
3320
|
+
- Doc ID: core/components/ui/theme/theme
|
|
3321
|
+
- Keywords: Concorde, supersoniks, core/components/ui/theme/theme, theme, Theme, UI component, sonic-theme, web component, --sc-*, theme="custom", light, dark, auto, color, font, bg-base
|
|
3322
|
+
|
|
3323
|
+
Theme
|
|
3324
|
+
|
|
3325
|
+
sonic-theme wraps a Concorde UI: it registers --sc- design tokens and provides the default slot for your app. With no theme attribute (or theme="custom"), only shared primitives and your overrides apply—built-in light / dark / auto palettes are opt-in. Set color and font when the host should carry base text and typography; add Tailwind bg-base and block (or min-h-screen) on the tag for a full surface fill. Popovers, modals, and toasts mount under the nearest connected theme (see Pop container). Import @supersoniks/concorde/theme once at the app entry. For the full public token list and brand overrides, see Customization.
|
|
3326
|
+
|
|
3327
|
+
Basic example
|
|
3328
|
+
|
|
3329
|
+
Wrap interactive components so tokens and overlays resolve from one root.
|
|
3330
|
+
|
|
3331
|
+
Save changes
|
|
3332
|
+
|
|
3333
|
+
Theme mode
|
|
3334
|
+
|
|
3335
|
+
Default: omit theme or set theme="custom". The host loads core tokens (--sc-rounded, shadows, form defaults, …) and any --sc- you set; it does not apply the built-in light or dark palette.
|
|
3336
|
+
|
|
3337
|
+
Set theme to light or dark for Concorde’s preset palettes. Set theme="auto" to follow prefers-color-scheme (light palette until the OS prefers dark).
|
|
2367
3338
|
|
|
2368
|
-
|
|
3339
|
+
theme="light"
|
|
3340
|
+
|
|
3341
|
+
Primary
|
|
3342
|
+
Success
|
|
3343
|
+
Danger
|
|
3344
|
+
|
|
3345
|
+
theme="dark"
|
|
3346
|
+
|
|
3347
|
+
Primary
|
|
3348
|
+
Success
|
|
3349
|
+
Danger
|
|
3350
|
+
|
|
3351
|
+
Presentation
|
|
3352
|
+
|
|
3353
|
+
color sets text from --sc-base-content. font applies --sc-font-family-base, --sc-font-weight-base, and --sc-font-style-base. For the page or shell background, use bg-base on sonic-theme (maps to --sc-base in Tailwind) with block so the host paints the surface. Components keep their own fallbacks when color / font are omitted.
|
|
3354
|
+
|
|
3355
|
+
Body copy inherits base content color and font from the theme host.
|
|
3356
|
+
|
|
3357
|
+
Custom tokens
|
|
3358
|
+
|
|
3359
|
+
Override primitives on sonic-theme (or :root / a project stylesheet). Derived radii, shadows, and control rounding are computed from tokens such as --sc-rounded—avoid copying long lists of internal variables unless you have a specific need.
|
|
3360
|
+
|
|
3361
|
+
Brand primary
|
|
3362
|
+
|
|
3363
|
+
Pop container
|
|
3364
|
+
|
|
3365
|
+
Theme.getPopContainer() returns the last connected sonic-theme, or document.body if none is connected. When a theme disconnects, the previous connected instance is adopted. Imperative Modal.create() and declarative sonic-modal use the same container.
|
|
3366
|
+
|
|
3367
|
+
Open modal
|
|
3368
|
+
|
|
3369
|
+
Mounted on theme
|
|
3370
|
+
|
|
3371
|
+
This dialog is appended under the nearest sonic-theme pop container.
|
|
3372
|
+
|
|
3373
|
+
Close
|
|
3374
|
+
|
|
3375
|
+
Embedded iframes
|
|
3376
|
+
|
|
3377
|
+
On connect, the theme publishes resolved --sc- values and linked font stylesheet URLs (Google Fonts / Adobe Fonts) to the sonic-theme data channel and postMessages them to same-page iframes. Iframes can request a refresh by posting { type: "GetSonicTheme" }.
|
|
3378
|
+
|
|
3379
|
+
// Inside the iframe — ask the parent theme to rebroadcast tokens
|
|
3380
|
+
window.parent.postMessage({ type: "GetSonicTheme" }, "");
|
|
3381
|
+
|
|
3382
|
+
API reference
|
|
3383
|
+
|
|
3384
|
+
| Attribute | Values | Description |
|
|
3385
|
+
|----------|---------|-------------|
|
|
3386
|
+
| theme | omitted · custom (default) · light · dark · auto | Omitted or custom: core tokens and your --sc- only. light / dark: fixed presets. auto: presets follow prefers-color-scheme |
|
|
3387
|
+
| color | boolean | Host text color uses --sc-base-content |
|
|
3388
|
+
| font | boolean | Host font uses --sc-font-family-base and related base weight/style tokens |
|
|
3389
|
+
|
|
3390
|
+
| Slot | Description |
|
|
3391
|
+
|------|-------------|
|
|
3392
|
+
| (default) | Application markup and Concorde components |
|
|
3393
|
+
|
|
3394
|
+
Surface background: Tailwind bg-base on sonic-theme (requires Concorde Tailwind color base → --sc-base).
|
|
2369
3395
|
|
|
2370
3396
|
---
|
|
2371
3397
|
|
|
@@ -2373,17 +3399,21 @@ Sticky header
|
|
|
2373
3399
|
|
|
2374
3400
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/toast/toast.html
|
|
2375
3401
|
- Doc ID: core/components/ui/toast/toast
|
|
2376
|
-
- Keywords: Concorde, supersoniks, core/components/ui/toast/toast, toast, Toast, UI component, sonic-toast, web component,
|
|
3402
|
+
- Keywords: Concorde, supersoniks, core/components/ui/toast/toast, toast, Toast, UI component, sonic-toast, web component, SonicToast.add(), SonicToast, label, preserve, text, status
|
|
2377
3403
|
|
|
2378
3404
|
Toast
|
|
2379
3405
|
|
|
2380
|
-
|
|
3406
|
+
Toasts surface short-lived feedback in a fixed stack (bottom-right in the main window). Queue messages with SonicToast.add() on the global SonicToast class—the host sonic-toast is created automatically. Prefer label for a heading; use preserve or interactive text when the user must read or act before dismiss.
|
|
3407
|
+
|
|
3408
|
+
Basic example
|
|
3409
|
+
|
|
3410
|
+
Click the button to show a toast.
|
|
2381
3411
|
|
|
2382
|
-
|
|
3412
|
+
Show toast
|
|
2383
3413
|
|
|
2384
|
-
|
|
3414
|
+
Status
|
|
2385
3415
|
|
|
2386
|
-
|
|
3416
|
+
status drives color, icon, and live-region behavior. Omit status or pass an empty string for a neutral toast.
|
|
2387
3417
|
|
|
2388
3418
|
Default
|
|
2389
3419
|
|
|
@@ -2395,69 +3425,105 @@ Les statuts disponibles sont : success, error, warning, info ou vide (par défau
|
|
|
2395
3425
|
|
|
2396
3426
|
Info
|
|
2397
3427
|
|
|
2398
|
-
|
|
3428
|
+
Label
|
|
3429
|
+
|
|
3430
|
+
Set label for a bold title above text. title still works but is deprecated—use label in new code.
|
|
2399
3431
|
|
|
2400
|
-
Toast
|
|
3432
|
+
Toast with label
|
|
2401
3433
|
|
|
2402
|
-
|
|
3434
|
+
Error with label
|
|
2403
3435
|
|
|
2404
|
-
|
|
3436
|
+
HTML in text
|
|
2405
3437
|
|
|
2406
|
-
|
|
3438
|
+
text (and label) can include HTML strings. Links and controls in text automatically enable preserve so the toast does not auto-hide while the user interacts.
|
|
2407
3439
|
|
|
2408
|
-
HTML
|
|
2409
|
-
|
|
3440
|
+
HTML and an action link ', status: 'info' })"
|
|
3441
|
+
>
|
|
3442
|
+
Toast with HTML
|
|
2410
3443
|
|
|
2411
|
-
|
|
3444
|
+
Preserve
|
|
2412
3445
|
|
|
2413
|
-
|
|
3446
|
+
Without preserve, toasts auto-hide after about six seconds (timer pauses on hover or focus). Set preserve to keep the toast until the user closes it.
|
|
2414
3447
|
|
|
2415
|
-
|
|
3448
|
+
Persistent toast
|
|
2416
3449
|
|
|
2417
|
-
|
|
3450
|
+
Dismiss forever
|
|
2418
3451
|
|
|
2419
|
-
|
|
3452
|
+
With dismissForever and a stable id, closing the toast stores dismissal in localStorage—SonicToast.add skips it on later visits. Duplicate payloads (same fields, ignoring id) are not queued twice.
|
|
2420
3453
|
|
|
2421
|
-
|
|
3454
|
+
Dismiss forever
|
|
2422
3455
|
|
|
2423
|
-
|
|
3456
|
+
Ghost
|
|
2424
3457
|
|
|
2425
|
-
|
|
3458
|
+
ghost renders a semi-transparent, non-interactive toast—useful for loading or background states. SonicToast.removeAll leaves ghost toasts in place.
|
|
2426
3459
|
|
|
2427
|
-
|
|
3460
|
+
Ghost toast
|
|
2428
3461
|
|
|
2429
|
-
|
|
3462
|
+
Dismissal
|
|
2430
3463
|
|
|
2431
|
-
|
|
3464
|
+
Use static helpers to clear the stack from app logic (for example after navigation).
|
|
2432
3465
|
|
|
2433
|
-
|
|
3466
|
+
Remove all
|
|
2434
3467
|
|
|
2435
|
-
|
|
2436
|
-
Ajouter toast 2
|
|
2437
|
-
Ajouter toast 3
|
|
2438
|
-
Supprimer tous
|
|
3468
|
+
Removes every toast except ghost items.
|
|
2439
3469
|
|
|
2440
|
-
|
|
3470
|
+
Add toast 1
|
|
3471
|
+
Add toast 2
|
|
3472
|
+
Add toast 3
|
|
3473
|
+
Remove all
|
|
2441
3474
|
|
|
2442
|
-
|
|
3475
|
+
Remove by status
|
|
2443
3476
|
|
|
2444
3477
|
Success
|
|
2445
3478
|
Error
|
|
2446
3479
|
Warning
|
|
2447
|
-
|
|
2448
|
-
|
|
3480
|
+
Remove success
|
|
3481
|
+
Remove error
|
|
3482
|
+
|
|
3483
|
+
Remove temporary items
|
|
2449
3484
|
|
|
2450
|
-
|
|
3485
|
+
Removes toasts that are not preserve.
|
|
2451
3486
|
|
|
2452
|
-
|
|
3487
|
+
Temporary
|
|
2453
3488
|
|
|
2454
|
-
|
|
2455
|
-
Persistant
|
|
2456
|
-
Supprimer temporaires
|
|
3489
|
+
Persistent
|
|
2457
3490
|
|
|
2458
|
-
|
|
3491
|
+
Remove temporary
|
|
2459
3492
|
|
|
2460
|
-
|
|
3493
|
+
Combined options
|
|
3494
|
+
|
|
3495
|
+
Full example
|
|
3496
|
+
|
|
3497
|
+
Accessibility
|
|
3498
|
+
|
|
3499
|
+
Each toast uses role="alert" for error and role="status" otherwise (with aria-live="polite" when applicable). Status icons are decorative (aria-hidden). The close control has an i18n aria-label. When there is no label, a truncated string aria-label may be derived from plain text.
|
|
3500
|
+
|
|
3501
|
+
API reference
|
|
3502
|
+
|
|
3503
|
+
Options passed to SonicToast.add(conf):
|
|
3504
|
+
|
|
3505
|
+
| Option | Values | Description |
|
|
3506
|
+
|----------|---------|-------------|
|
|
3507
|
+
| text | string · Lit template | Main body; HTML strings are supported |
|
|
3508
|
+
| label | string · Lit template | Optional heading above text |
|
|
3509
|
+
| title | string · Lit template | Deprecated alias for label |
|
|
3510
|
+
| status | success · error · warning · info · (empty) | Semantic styling and live region behavior |
|
|
3511
|
+
| id | string · number | Stable id for deduplication and dismissForever (defaults to timestamp) |
|
|
3512
|
+
| preserve | boolean | Skip auto-hide; forced when text contains interactive markup |
|
|
3513
|
+
| ghost | boolean | Semi-transparent and non-interactive; kept by removeAll |
|
|
3514
|
+
| dismissForever | boolean | Persist dismissal in localStorage when closed (requires stable id) |
|
|
3515
|
+
| styleSheet | modal style input | Extra adopted styles on the toast item shadow root |
|
|
3516
|
+
| useSlot | boolean | Legacy: project text into the light DOM slot |
|
|
3517
|
+
|
|
3518
|
+
| Method | Description |
|
|
3519
|
+
|--------|-------------|
|
|
3520
|
+
| SonicToast.add(conf) | Append a toast; returns the config or null if skipped (dismissed forever or duplicate) |
|
|
3521
|
+
| SonicToast.removeAll() | Remove all non-ghost toasts |
|
|
3522
|
+
| SonicToast.removeItemsByStatus(status) | Remove toasts matching status |
|
|
3523
|
+
| SonicToast.removeItemById(id) | Remove a single toast by id |
|
|
3524
|
+
| SonicToast.removeTemporaryItems() | Remove toasts without preserve |
|
|
3525
|
+
|
|
3526
|
+
sonic-toast is mounted automatically; sonic-toast-item is internal. In iframes, toasts can delegate to the parent window via postMessage.
|
|
2461
3527
|
|
|
2462
3528
|
---
|
|
2463
3529
|
|
|
@@ -2465,25 +3531,29 @@ Exemple complet
|
|
|
2465
3531
|
|
|
2466
3532
|
- URL: https://concorde.supersoniks.org/crawl/core/components/ui/tooltip/tooltip.html
|
|
2467
3533
|
- Doc ID: core/components/ui/tooltip/tooltip
|
|
2468
|
-
- Keywords: Concorde, supersoniks, core/components/ui/tooltip/tooltip, tooltip, Tooltip, UI component, sonic-tooltip, web component
|
|
3534
|
+
- Keywords: Concorde, supersoniks, core/components/ui/tooltip/tooltip, tooltip, Tooltip, UI component, sonic-tooltip, web component, label, placement, top, disabled, bottom, left, right, -start
|
|
2469
3535
|
|
|
2470
3536
|
Tooltip
|
|
2471
3537
|
|
|
2472
|
-
hover
|
|
3538
|
+
Tooltip shows a short label on hover (and on focus when the trigger can receive focus). Wrap the trigger in the default slot—buttons, icons, or plain text. Default placement is top (center-aligned). An empty label hides the bubble the same way as disabled.
|
|
3539
|
+
|
|
3540
|
+
Basic example
|
|
3541
|
+
|
|
3542
|
+
Hover me
|
|
2473
3543
|
|
|
2474
3544
|
Placement
|
|
2475
3545
|
|
|
2476
|
-
|
|
3546
|
+
Use top · bottom · left · right for the main axis. Add -start or -end to align the bubble along the anchor edge.
|
|
2477
3547
|
|
|
2478
|
-
|
|
3548
|
+
Top
|
|
2479
3549
|
|
|
2480
|
-
|
|
3550
|
+
Bottom
|
|
2481
3551
|
|
|
2482
|
-
|
|
3552
|
+
Right
|
|
2483
3553
|
|
|
2484
|
-
|
|
3554
|
+
Left
|
|
2485
3555
|
|
|
2486
|
-
|
|
3556
|
+
Aligned placements
|
|
2487
3557
|
|
|
2488
3558
|
Top start
|
|
2489
3559
|
|
|
@@ -2501,14 +3571,39 @@ More placement
|
|
|
2501
3571
|
|
|
2502
3572
|
Left end
|
|
2503
3573
|
|
|
3574
|
+
Label formatting
|
|
3575
|
+
|
|
3576
|
+
label supports line breaks (\n in markup or multiline text). Lines are trimmed; is normalized to spaces. white-space: pre-line preserves breaks in the bubble (max width 18rem).
|
|
3577
|
+
|
|
3578
|
+
Multiline label
|
|
3579
|
+
|
|
2504
3580
|
Focusable
|
|
2505
3581
|
|
|
2506
|
-
|
|
3582
|
+
On non-interactive triggers, set focusable so the host gets tabindex="0" and the tooltip opens on keyboard focus as well as hover.
|
|
3583
|
+
|
|
3584
|
+
Focus or hover this text
|
|
2507
3585
|
|
|
2508
3586
|
Disabled
|
|
2509
3587
|
|
|
2510
3588
|
Tooltip disabled
|
|
2511
3589
|
|
|
3590
|
+
Accessibility
|
|
3591
|
+
|
|
3592
|
+
The bubble uses popover="hint" (non-modal, no pointer capture). Prefer focusable when the slotted content is not already focusable. When the Popover API is unavailable, the host falls back to the native title attribute with a single-line label. Opacity transitions respect prefers-reduced-motion.
|
|
3593
|
+
|
|
3594
|
+
API reference
|
|
3595
|
+
|
|
3596
|
+
| Attribute | Values | Description |
|
|
3597
|
+
|----------|---------|-------------|
|
|
3598
|
+
| label | string | Tooltip copy; whitespace-only values suppress the bubble |
|
|
3599
|
+
| placement | top (default) · bottom · left · right · top-start · top-end · bottom-start · bottom-end · left-start · left-end · right-start · right-end | Position relative to the trigger; repositions while open |
|
|
3600
|
+
| disabled | boolean | Suppress show/hide; sets tabindex="-1" on the host |
|
|
3601
|
+
| focusable | boolean | Add tabindex="0" on the host for keyboard access |
|
|
3602
|
+
|
|
3603
|
+
| Slot | Description |
|
|
3604
|
+
|------|-------------|
|
|
3605
|
+
| (default) | Trigger content (hover target) |
|
|
3606
|
+
|
|
2512
3607
|
---
|
|
2513
3608
|
|
|
2514
3609
|
## Data flow
|
|
@@ -2808,8 +3903,9 @@ Behavior
|
|
|
2808
3903
|
- By default (dynamic: false), the value is read once at connect time and is not updated afterward
|
|
2809
3904
|
- With { dynamic: true }, the property stays in sync when:
|
|
2810
3905
|
- an ancestor changes the attribute value
|
|
2811
|
-
- a closer ancestor gains the attribute (
|
|
2812
|
-
- the
|
|
3906
|
+
- a closer ancestor gains / loses the attribute (fallback / null)
|
|
3907
|
+
- the component is reparented (no extra opt-in) — parent childList only reacts if this node moves
|
|
3908
|
+
- Observers are shared (one per ancestor attribute / one per parent) so large lists of sonic-icon stay cheap on Firefox.
|
|
2813
3909
|
- When dynamic is enabled, updates also propagate to @subscribe / @bind paths that depend on the decorated property (e.g. ${dataProvider})
|
|
2814
3910
|
|
|
2815
3911
|
Dynamic mode
|
|
@@ -4612,8 +5708,8 @@ In the HTML of a JS or TS component or in the HTML of the web page containing th
|
|
|
4612
5708
|
|
|
4613
5709
|
Installation
|
|
4614
5710
|
|
|
4615
|
-
|
|
4616
|
-
|
|
5711
|
+
For almost all new projects, use create-concorde-ts-starter
|
|
5712
|
+
You get Vite + TypeScript + Lit + Tailwind, an example component, npx concorde enable-short-paths ready to run, and yarn ai:sync for AI agent skills ( AGENTS.md , Cursor / JetBrains rules) without extra setup.
|
|
4617
5713
|
|
|
4618
5714
|
Starter
|
|
4619
5715
|
|
|
@@ -5076,7 +6172,7 @@ Introduction
|
|
|
5076
6172
|
What is Concorde?
|
|
5077
6173
|
|
|
5078
6174
|
Based on lit.dev, Concorde is a collection of web components for shared apps and websites.
|
|
5079
|
-
Build UIs without tying components to a specific host stack, while keeping visual consistency through
|
|
6175
|
+
Build UIs without tying components to a specific host stack, while keeping visual consistency through the smallest set of CSS variables needed to define a theme.
|
|
5080
6176
|
|
|
5081
6177
|
Why and use case
|
|
5082
6178
|
|
|
@@ -5117,91 +6213,242 @@ The starter runs yarn ai:sync for you. Details: AI agents (skills). Manual Vite
|
|
|
5117
6213
|
|
|
5118
6214
|
---
|
|
5119
6215
|
|
|
5120
|
-
##
|
|
6216
|
+
## Customization
|
|
5121
6217
|
|
|
5122
6218
|
- URL: https://concorde.supersoniks.org/crawl/docs/_getting-started/theming.html
|
|
5123
6219
|
- Doc ID: docs/_getting-started/theming
|
|
5124
|
-
- Keywords: Concorde, supersoniks, docs/_getting-started/theming, theming,
|
|
5125
|
-
|
|
5126
|
-
|
|
5127
|
-
|
|
5128
|
-
|
|
5129
|
-
|
|
5130
|
-
|
|
5131
|
-
|
|
5132
|
-
|
|
5133
|
-
|
|
5134
|
-
|
|
5135
|
-
|
|
5136
|
-
|
|
5137
|
-
|
|
5138
|
-
|
|
5139
|
-
|
|
5140
|
-
|
|
5141
|
-
|
|
5142
|
-
|
|
5143
|
-
|
|
5144
|
-
|
|
5145
|
-
|
|
5146
|
-
|
|
5147
|
-
|
|
5148
|
-
|
|
6220
|
+
- Keywords: Concorde, supersoniks, docs/_getting-started/theming, theming, Customization, guide, , :root, theme="custom", --sc-*, theme="light", "dark", "auto", auto, prefers-color-scheme
|
|
6221
|
+
|
|
6222
|
+
Customization
|
|
6223
|
+
|
|
6224
|
+
Theme-first customization
|
|
6225
|
+
|
|
6226
|
+
Concorde components ship with default styles (fallback values in each component and in ).
|
|
6227
|
+
You do not need to define any CSS variables to get a usable UI.
|
|
6228
|
+
|
|
6229
|
+
To align the kit with your brand, override only the essential theme tokens on , on :root, or in a project stylesheet.
|
|
6230
|
+
Concorde derives radius steps, button/input rounding, shadows, and most per-component layout from these primitives—do not copy long lists of derived variables unless you have a specific need.
|
|
6231
|
+
|
|
6232
|
+
import "@supersoniks/concorde/theme";
|
|
6233
|
+
|
|
6234
|
+
| Attribute | Effect |
|
|
6235
|
+
|-----------|--------|
|
|
6236
|
+
| (omit) \| theme="custom" | Default: core tokens + your --sc-; no built-in light/dark palette |
|
|
6237
|
+
| theme="light" \| "dark" \| "auto" | Opt-in presets; auto follows prefers-color-scheme |
|
|
6238
|
+
| class="bg-base block" (Tailwind) | Page/surface background (--sc-base) |
|
|
6239
|
+
| color | Text color (--sc-base-content) |
|
|
6240
|
+
| font | Base font family/weight (--sc-font-family-base, etc.) |
|
|
6241
|
+
|
|
6242
|
+
Popovers, modals, and toasts mount under the nearest .
|
|
6243
|
+
|
|
6244
|
+
Customization example
|
|
6245
|
+
|
|
6246
|
+
Example (full brand override on or :root). Set every essential token below; derived radii and shadows still come from the theme engine—only --sc-rounded is listed here.
|
|
6247
|
+
|
|
6248
|
+
sonic-theme {
|
|
6249
|
+
/ Semantic fills /
|
|
6250
|
+
--sc-primary: #353429;
|
|
6251
|
+
--sc-secondary: #f43f5e;
|
|
6252
|
+
--sc-info: #7c3aed;
|
|
6253
|
+
--sc-danger: #d71839;
|
|
6254
|
+
--sc-warning: #f97316;
|
|
6255
|
+
--sc-success: #10b981;
|
|
6256
|
+
--sc-contrast: #111;
|
|
6257
|
+
|
|
6258
|
+
/ Text/icons on semantic fills /
|
|
6259
|
+
--sc-primary-content: #fff;
|
|
6260
|
+
--sc-secondary-content: #fff;
|
|
6261
|
+
--sc-info-content: #fff;
|
|
6262
|
+
--sc-danger-content: #fff;
|
|
6263
|
+
--sc-warning-content: #fff;
|
|
6264
|
+
--sc-success-content: #fff;
|
|
6265
|
+
--sc-contrast-content: #fff;
|
|
6266
|
+
|
|
6267
|
+
/ Neutral fills /
|
|
6268
|
+
--sc-base: #fff;
|
|
6269
|
+
--sc-base-50: #f6f6f5;
|
|
6270
|
+
--sc-base-100: #ededec;
|
|
6271
|
+
--sc-base-200: #d7d7d4;
|
|
6272
|
+
--sc-base-300: #c8c7c4;
|
|
6273
|
+
--sc-base-400: #a8a7a2;
|
|
6274
|
+
--sc-base-500: #94938c;
|
|
6275
|
+
--sc-base-600: #76756c;
|
|
6276
|
+
--sc-base-700: #59584e;
|
|
6277
|
+
--sc-base-800: #47463b;
|
|
6278
|
+
--sc-base-900: #353429;
|
|
6279
|
+
|
|
6280
|
+
/ Text/icons on neutral surfaces /
|
|
6281
|
+
--sc-base-content: var(--sc-base-900);
|
|
6282
|
+
|
|
6283
|
+
/ Typography /
|
|
6284
|
+
--sc-font-family-base: "Oswald", system-ui, -apple-system, "Segoe UI", Roboto,
|
|
6285
|
+
"Helvetica Neue", Arial, sans-serif;
|
|
6286
|
+
--sc-headings-font-family: "alternate-gothic-compressed", system-ui, sans-serif;
|
|
6287
|
+
--sc-headings-line-height: 1.1;
|
|
6288
|
+
--sc-headings-font-weight: bold;
|
|
6289
|
+
--sc-headings-text-transform: none;
|
|
6290
|
+
|
|
6291
|
+
/ Shape (primitive only) /
|
|
6292
|
+
--sc-rounded: 0;
|
|
6293
|
+
|
|
6294
|
+
/ Forms /
|
|
6295
|
+
--sc-border-width: 0.2rem;
|
|
6296
|
+
--sc-form-height: 2em;
|
|
6297
|
+
--sc-input-bg: var(--sc-base);
|
|
6298
|
+
--sc-input-color: var(--sc-base-content);
|
|
6299
|
+
--sc-input-border-color: var(--sc-input-color);
|
|
6300
|
+
--sc-input-active-bg: var(--sc-primary);
|
|
6301
|
+
--sc-input-active-color: var(--sc-primary-content);
|
|
6302
|
+
--sc-input-active-border-color: var(--sc-primary);
|
|
6303
|
+
}
|
|
5149
6304
|
|
|
5150
|
-
|
|
6305
|
+
Palette generator: concordecolors
|
|
5151
6306
|
|
|
5152
|
-
|
|
6307
|
+
Without these overrides, components keep Concorde’s per-component fallbacks. Built-in light/dark palettes apply only when you set theme="light", theme="dark", or theme="auto".
|
|
5153
6308
|
|
|
5154
|
-
|
|
6309
|
+
What we intentionally avoid: large public --sc-alert- / --sc-badge- APIs or ::part() styling hooks on most components. Prefer attributes (type, status, size, …) and the theme tokens above.
|
|
5155
6310
|
|
|
5156
|
-
|
|
5157
|
-
Therefore, be careful to define it according to the needs, as one might mistakenly expect it to be block as with a regular .
|
|
6311
|
+
Only essential CSS variables (public theme API)
|
|
5158
6312
|
|
|
5159
|
-
|
|
6313
|
+
These are the smallest set we recommend customizing. Everything else should stay internal to the theme or to components (--sc private variables, attributes like type, size, variant).
|
|
5160
6314
|
|
|
5161
|
-
|
|
5162
|
-
- It is no longer possible to directly add classes to the component or style it from the outside.
|
|
5163
|
-
Ultimately, the amount of code to write increases significantly.
|
|
6315
|
+
Surfaces and foreground
|
|
5164
6316
|
|
|
5165
|
-
|
|
6317
|
+
Tokens without a -content suffix are fill / background colors.
|
|
6318
|
+
Tokens with -content are text and icons on top of the matching fill (solid buttons, badges, alerts, etc.).
|
|
5166
6319
|
|
|
5167
|
-
|
|
5168
|
-
To use it, you need to import the following:
|
|
6320
|
+
Neutral fills
|
|
5169
6321
|
|
|
5170
|
-
|
|
6322
|
+
| Variable | Role |
|
|
6323
|
+
|----------|------|
|
|
6324
|
+
| --sc-base | Main surface / page background |
|
|
6325
|
+
| --sc-base-50 … --sc-base-900 | Neutral scale (borders, subtle backgrounds, muted UI) |
|
|
5171
6326
|
|
|
5172
|
-
|
|
6327
|
+
Neutral foreground
|
|
5173
6328
|
|
|
5174
|
-
|
|
6329
|
+
| Variable | Role |
|
|
6330
|
+
|----------|------|
|
|
6331
|
+
| --sc-base-content | Default body text and icons on neutral surfaces |
|
|
5175
6332
|
|
|
5176
|
-
|
|
6333
|
+
Semantic fills
|
|
5177
6334
|
|
|
5178
|
-
|
|
6335
|
+
| Variable | Role |
|
|
6336
|
+
|----------|------|
|
|
6337
|
+
| --sc-primary | Primary actions, links, emphasis |
|
|
6338
|
+
| --sc-secondary | Secondary brand accent (when used) |
|
|
6339
|
+
| --sc-info, --sc-success, --sc-warning, --sc-danger | Status and feedback |
|
|
6340
|
+
| --sc-contrast | High-contrast fills (e.g. on media) |
|
|
5179
6341
|
|
|
5180
|
-
|
|
6342
|
+
Semantic foreground
|
|
5181
6343
|
|
|
5182
|
-
|
|
6344
|
+
| Variable | Role |
|
|
6345
|
+
|----------|------|
|
|
6346
|
+
| --sc-primary-content, --sc-secondary-content, … | Text/icons on the matching semantic fill (--sc-primary, etc.) |
|
|
5183
6347
|
|
|
5184
|
-
|
|
6348
|
+
Shape
|
|
5185
6349
|
|
|
5186
|
-
|
|
5187
|
-
|
|
6350
|
+
| Variable | Role |
|
|
6351
|
+
|----------|------|
|
|
6352
|
+
| --sc-rounded | Single primitive corner radius; the theme computes --sc-rounded-sm, --sc-btn-rounded, --sc-input-rounded, etc. |
|
|
5188
6353
|
|
|
5189
|
-
|
|
6354
|
+
Typography
|
|
5190
6355
|
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
-
|
|
6356
|
+
| Variable | Role |
|
|
6357
|
+
|----------|------|
|
|
6358
|
+
| --sc-font-family-base | Body UI text |
|
|
6359
|
+
| --sc-font-weight-base, --sc-font-style-base | Optional |
|
|
6360
|
+
| --sc-headings-font-family, --sc-headings-line-height, --sc-headings-font-weight, --sc-headings-text-transform | Headings (modal titles, etc.) |
|
|
5194
6361
|
|
|
5195
|
-
|
|
6362
|
+
Forms (only if you customize inputs globally)
|
|
5196
6363
|
|
|
5197
|
-
|
|
6364
|
+
Interactive controls expose a few extra theme-level tokens; prefer these over styling individual inputs from outside.
|
|
5198
6365
|
|
|
5199
|
-
|
|
5200
|
-
|
|
6366
|
+
| Variable | Role |
|
|
6367
|
+
|----------|------|
|
|
6368
|
+
| --sc-border-width | Default border thickness |
|
|
6369
|
+
| --sc-form-height | Control height |
|
|
6370
|
+
| --sc-input-bg, --sc-input-color, --sc-input-border-color | Default field chrome |
|
|
6371
|
+
| --sc-input-active-bg, --sc-input-active-color, --sc-input-active-border-color | Focus/active state |
|
|
5201
6372
|
|
|
5202
|
-
|
|
6373
|
+
---
|
|
5203
6374
|
|
|
5204
|
-
|
|
6375
|
+
Tailwind in new components ?
|
|
6376
|
+
|
|
6377
|
+
Set tailwind.config.js to match concorde style token in your custom component.
|
|
6378
|
+
|
|
6379
|
+
...
|
|
6380
|
+
theme: {
|
|
6381
|
+
borderRadius: {
|
|
6382
|
+
DEFAULT: "var(--sc-rounded)",
|
|
6383
|
+
none: "0",
|
|
6384
|
+
sm: "var(--sc-rounded-sm)",
|
|
6385
|
+
md: "var(--sc-rounded-md)",
|
|
6386
|
+
lg: "var(--sc-rounded-lg)",
|
|
6387
|
+
xl: "var(--sc-rounded-xl)",
|
|
6388
|
+
full: "9999px",
|
|
6389
|
+
},
|
|
6390
|
+
boxShadow: {
|
|
6391
|
+
DEFAULT: "var(--sc-shadow)",
|
|
6392
|
+
none: "none",
|
|
6393
|
+
sm: "var(--sc-shadow-sm)",
|
|
6394
|
+
md: "var(--sc-shadow-md)",
|
|
6395
|
+
lg: "var(--sc-shadow-lg)",
|
|
6396
|
+
xl: "var(--sc-shadow-xl)",
|
|
6397
|
+
},
|
|
6398
|
+
colors: {
|
|
6399
|
+
transparent: "transparent",
|
|
6400
|
+
current: "currentColor",
|
|
6401
|
+
content: "var(--sc-base-content)",
|
|
6402
|
+
base: "var(--sc-base)",
|
|
6403
|
+
neutral: {
|
|
6404
|
+
0: "var(--sc-base)",
|
|
6405
|
+
50: "var(--sc-base-50)",
|
|
6406
|
+
100: "var(--sc-base-100)",
|
|
6407
|
+
200: "var(--sc-base-200)",
|
|
6408
|
+
300: "var(--sc-base-300)",
|
|
6409
|
+
400: "var(--sc-base-400)",
|
|
6410
|
+
500: "var(--sc-base-500)",
|
|
6411
|
+
600: "var(--sc-base-600)",
|
|
6412
|
+
700: "var(--sc-base-700)",
|
|
6413
|
+
800: "var(--sc-base-800)",
|
|
6414
|
+
900: "var(--sc-base-900)",
|
|
6415
|
+
content: "var(--sc-base)",
|
|
6416
|
+
},
|
|
6417
|
+
primary: {
|
|
6418
|
+
DEFAULT: "var(--sc-primary)",
|
|
6419
|
+
content: "var(--sc-primary-content)",
|
|
6420
|
+
},
|
|
6421
|
+
success: {
|
|
6422
|
+
DEFAULT: "var(--sc-success)",
|
|
6423
|
+
content: "var(--sc-success-content)",
|
|
6424
|
+
},
|
|
6425
|
+
danger: {
|
|
6426
|
+
DEFAULT: "var(--sc-danger)",
|
|
6427
|
+
content: "var(--sc-danger-content)",
|
|
6428
|
+
},
|
|
6429
|
+
warning: {
|
|
6430
|
+
DEFAULT: "var(--sc-warning)",
|
|
6431
|
+
content: "var(--sc-warning-content)",
|
|
6432
|
+
},
|
|
6433
|
+
info: {
|
|
6434
|
+
DEFAULT: "var(--sc-info)",
|
|
6435
|
+
content: "var(--sc-info-content)",
|
|
6436
|
+
},
|
|
6437
|
+
contrast: {
|
|
6438
|
+
DEFAULT: "var(--sc-contrast)",
|
|
6439
|
+
content: "var(--sc-contrast-content)",
|
|
6440
|
+
},
|
|
6441
|
+
},
|
|
6442
|
+
extend: {
|
|
6443
|
+
borderWidth: {
|
|
6444
|
+
DEFAULT: "var(--sc-border-width)",
|
|
6445
|
+
},
|
|
6446
|
+
fontFamily: {
|
|
6447
|
+
headings: ["var(--sc-headings-font-family, var(--sc-font-family-base, sans-serif))"],
|
|
6448
|
+
body: ["var(--sc-font-family-base)"],
|
|
6449
|
+
monospace: ["var(--sc-font-family-monospace, monospace)"],
|
|
6450
|
+
}
|
|
6451
|
+
}
|
|
5205
6452
|
|
|
5206
6453
|
---
|
|
5207
6454
|
|