@supersoniks/concorde 5.0.5 → 5.1.0

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.
Files changed (168) hide show
  1. package/.github/workflows/ci.yml +21 -0
  2. package/.github-export-ignore +30 -0
  3. package/.tmp-cem/custom-elements.json +13705 -0
  4. package/CONTRIBUTING.md +59 -0
  5. package/DEV.md +54 -0
  6. package/LICENSE +21 -0
  7. package/OPEN_SOURCE_CHECKPOINT.md +133 -0
  8. package/build-infos.json +1 -1
  9. package/concorde-3d.bundle.js +3960 -0
  10. package/concorde-3d.es.js +33433 -0
  11. package/concorde-core.bundle.js +196 -196
  12. package/concorde-core.es.js +3685 -3405
  13. package/concorde-hugging-face-infer.bundle.js +32 -0
  14. package/concorde-hugging-face-infer.es.js +2952 -0
  15. package/concorde-interactive.bundle.js +1157 -0
  16. package/concorde-interactive.es.js +10734 -0
  17. package/concorde-shader.bundle.js +116 -0
  18. package/concorde-shader.es.js +8353 -0
  19. package/concorde-webgpu.bundle.js +307 -0
  20. package/concorde-webgpu.es.js +8627 -0
  21. package/custom-elements-manifest.config.mjs +14 -0
  22. package/dist/concorde-core.bundle.js +196 -196
  23. package/dist/concorde-core.es.js +3685 -3405
  24. package/docs/assets/{index-wVZpLVYW.js → index-D8MVWqY6.js} +1351 -1222
  25. package/docs/assets/index-DiD0qYvE.css +1 -0
  26. package/docs/crawl/core/components/ui/alert/alert.html +71 -172
  27. package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +5 -113
  28. package/docs/crawl/core/components/ui/badge/badge.html +79 -157
  29. package/docs/crawl/core/components/ui/button/button.html +0 -1
  30. package/docs/crawl/core/components/ui/captcha/captcha.html +8 -90
  31. package/docs/crawl/core/components/ui/card/card.html +68 -222
  32. package/docs/crawl/core/components/ui/divider/divider.html +31 -117
  33. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +101 -232
  34. package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +52 -95
  35. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +38 -97
  36. package/docs/crawl/core/components/ui/form/input/input.html +3 -3
  37. package/docs/crawl/core/components/ui/form/textarea/textarea.html +3 -3
  38. package/docs/crawl/core/components/ui/group/group.html +38 -60
  39. package/docs/crawl/core/components/ui/icon/icon.html +47 -136
  40. package/docs/crawl/core/components/ui/image/image.html +56 -244
  41. package/docs/crawl/core/components/ui/link/link.html +9 -67
  42. package/docs/crawl/core/components/ui/loader/loader.html +23 -97
  43. package/docs/crawl/core/components/ui/menu/menu.html +90 -162
  44. package/docs/crawl/core/components/ui/modal/modal.html +50 -275
  45. package/docs/crawl/core/components/ui/pop/pop.html +66 -260
  46. package/docs/crawl/core/components/ui/progress/progress.html +30 -103
  47. package/docs/crawl/core/components/ui/table/table.html +171 -303
  48. package/docs/crawl/core/components/ui/toast/toast.html +59 -170
  49. package/docs/crawl/core/components/ui/tooltip/tooltip.html +29 -90
  50. package/docs/crawl/docs/_decorators/ancestor-attribute.html +2 -3
  51. package/docs/crawl/docs/_getting-started/concorde-outside.html +3 -3
  52. package/docs/crawl/docs/_getting-started/start.html +1 -1
  53. package/docs/crawl/docs/_getting-started/theming.html +63 -311
  54. package/docs/crawl/hubs/form-components.html +53 -75
  55. package/docs/crawl/index.html +6 -7
  56. package/docs/docs-mock-api-sw.js +0 -2
  57. package/docs/docs-mock-api-sw.js.map +2 -2
  58. package/docs/index.html +7 -9
  59. package/docs/llms-full.txt +456 -1703
  60. package/docs/llms.txt +32 -25
  61. package/docs/sitemap.xml +0 -3
  62. package/docs/src/core/components/functional/fetch/fetch.md +0 -0
  63. package/docs/src/core/components/functional/if/if.md +0 -0
  64. package/docs/src/core/components/functional/list/list.md +0 -0
  65. package/docs/src/core/components/functional/router/router.md +0 -0
  66. package/docs/src/core/components/functional/sdui/sdui.md +0 -0
  67. package/docs/src/core/components/functional/states/states.md +0 -0
  68. package/docs/src/core/components/functional/submit/submit.md +0 -0
  69. package/docs/src/core/components/ui/alert/alert.md +72 -147
  70. package/docs/src/core/components/ui/alert-messages/alert-messages.md +0 -85
  71. package/docs/src/core/components/ui/badge/badge.md +80 -141
  72. package/docs/src/core/components/ui/button/button.md +0 -1
  73. package/docs/src/core/components/ui/captcha/captcha.md +6 -65
  74. package/docs/src/core/components/ui/card/card.md +65 -183
  75. package/docs/src/core/components/ui/divider/divider.md +13 -107
  76. package/docs/src/core/components/ui/form/fieldset/fieldset.md +99 -175
  77. package/docs/src/core/components/ui/form/form-actions/form-actions.md +52 -75
  78. package/docs/src/core/components/ui/form/form-layout/form-layout.md +34 -109
  79. package/docs/src/core/components/ui/form/input/input.md +1 -1
  80. package/docs/src/core/components/ui/form/radio/radio.md +0 -0
  81. package/docs/src/core/components/ui/form/select/select.md +0 -0
  82. package/docs/src/core/components/ui/form/switch/switch.md +0 -0
  83. package/docs/src/core/components/ui/form/textarea/textarea.md +1 -1
  84. package/docs/src/core/components/ui/group/group.md +36 -36
  85. package/docs/src/core/components/ui/icon/icon.md +43 -132
  86. package/docs/src/core/components/ui/image/image.md +53 -179
  87. package/docs/src/core/components/ui/link/link.md +7 -45
  88. package/docs/src/core/components/ui/loader/loader.md +22 -79
  89. package/docs/src/core/components/ui/menu/menu.md +92 -133
  90. package/docs/src/core/components/ui/modal/modal.md +47 -163
  91. package/docs/src/core/components/ui/pop/pop.md +64 -262
  92. package/docs/src/core/components/ui/progress/progress.md +30 -76
  93. package/docs/src/core/components/ui/table/table.md +171 -147
  94. package/docs/src/core/components/ui/toast/toast.md +58 -108
  95. package/docs/src/core/components/ui/tooltip/tooltip.md +26 -68
  96. package/docs/src/docs/_core-concept/subscriber.md +0 -0
  97. package/docs/src/docs/_decorators/ancestor-attribute.md +2 -3
  98. package/docs/src/docs/_getting-started/concorde-outside.md +3 -3
  99. package/docs/src/docs/_getting-started/my-first-subscriber.md +0 -0
  100. package/docs/src/docs/_getting-started/pubsub.md +0 -0
  101. package/docs/src/docs/_getting-started/start.md +1 -1
  102. package/docs/src/docs/_getting-started/theming.md +61 -223
  103. package/docs/src/docs/search/docs-search.json +348 -3083
  104. package/docs/src/tsconfig.declarations.json +22 -0
  105. package/docs/src/tsconfig.emit.json +23 -0
  106. package/docs/src/tsconfig.json +3 -63
  107. package/gitlab/job_github_mirror.sh +39 -0
  108. package/package.json +36 -2
  109. package/scripts/generate-sdui-catalog.mjs +250 -0
  110. package/scripts/generate-sdui-catalog.spec.ts +91 -0
  111. package/scripts/github-export.mjs +150 -0
  112. package/scripts/post-build-docs.js +0 -0
  113. package/scripts/post-build.mjs +0 -0
  114. package/scripts/pre-build.mjs +15 -0
  115. package/src/core/components/functional/fetch/fetch.md +0 -0
  116. package/src/core/components/functional/if/if.md +0 -0
  117. package/src/core/components/functional/if/if.ts +0 -0
  118. package/src/core/components/functional/list/list.demo.ts +0 -0
  119. package/src/core/components/functional/list/list.md +0 -0
  120. package/src/core/components/functional/router/router.md +0 -0
  121. package/src/core/components/functional/router/router.ts +0 -0
  122. package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +5 -5
  123. package/src/core/components/functional/sdui/__fixtures__/descriptors.ts +251 -0
  124. package/src/core/components/functional/sdui/__snapshots__/sdui-action.spec.ts.snap +73 -0
  125. package/src/core/components/functional/sdui/__snapshots__/sdui-incremental.spec.ts.snap +50 -0
  126. package/src/core/components/functional/sdui/__snapshots__/sdui-partial.spec.ts.snap +50 -0
  127. package/src/core/components/functional/sdui/__snapshots__/sdui.regression.spec.ts.snap +461 -0
  128. package/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
  129. package/src/core/components/functional/sdui/component-catalog.json +3103 -0
  130. package/src/core/components/functional/sdui/component-catalog.spec.ts +23 -0
  131. package/src/core/components/functional/sdui/sdui-action.spec.ts +99 -0
  132. package/src/core/components/functional/sdui/sdui-dom-snapshot.ts +61 -0
  133. package/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
  134. package/src/core/components/functional/sdui/sdui-incremental.spec.ts +137 -0
  135. package/src/core/components/functional/sdui/sdui-partial.spec.ts +83 -0
  136. package/src/core/components/functional/sdui/sdui-partial.ts +19 -0
  137. package/src/core/components/functional/sdui/sdui-safe.spec.ts +188 -0
  138. package/src/core/components/functional/sdui/sdui-safe.ts +100 -0
  139. package/src/core/components/functional/sdui/sdui.md +122 -0
  140. package/src/core/components/functional/sdui/sdui.regression.spec.ts +64 -0
  141. package/src/core/components/functional/sdui/sdui.ts +442 -34
  142. package/src/core/components/functional/sdui/types.ts +49 -0
  143. package/src/core/components/functional/states/states.md +0 -0
  144. package/src/core/components/functional/submit/submit.md +0 -0
  145. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  146. package/src/core/components/functional/value/value.ts +0 -0
  147. package/src/core/components/ui/_css/size.ts +0 -0
  148. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  149. package/src/core/components/ui/form/radio/radio.md +0 -0
  150. package/src/core/components/ui/form/select/select.md +0 -0
  151. package/src/core/components/ui/form/switch/switch.md +0 -0
  152. package/src/core/mixins/Subscriber.ts +0 -0
  153. package/src/core/utils/DataBindObserver.ts +0 -0
  154. package/src/core/utils/Objects.ts +0 -0
  155. package/src/core/utils/route.ts +0 -0
  156. package/src/css.d.ts +19 -0
  157. package/src/docs/_core-concept/subscriber.md +0 -0
  158. package/src/docs/_getting-started/my-first-subscriber.md +0 -0
  159. package/src/docs/_getting-started/pubsub.md +0 -0
  160. package/src/docs/example/users.ts +0 -0
  161. package/src/docs/search/page.ts +0 -0
  162. package/src/tsconfig.declarations.json +22 -0
  163. package/src/tsconfig.emit.json +23 -0
  164. package/src/tsconfig.json +90 -0
  165. package/src/tsconfig.tsbuildinfo +1 -1
  166. package/docs/assets/index-CD4WyL6o.css +0 -1
  167. package/docs/crawl/core/components/ui/theme/theme.html +0 -131
  168. package/docs/src/core/components/ui/theme/theme.md +0 -122
@@ -948,59 +948,13 @@ I prefer
948
948
 
949
949
  ---
950
950
 
951
- ## Alert messages
951
+ ## Concorde
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, Alert messages, UI component, sonic-alert-messages, web component, sonic-alert, messages, submitResultDataProvider, type="public", announce, dataProvider, type
955
+ - Keywords: Concorde, supersoniks, core/components/ui/alert-messages/alert-messages, alert-messages, UI component, sonic-alert-messages, web component
956
956
 
957
- Alert messages
958
957
 
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.
1004
958
 
1005
959
  ---
1006
960
 
@@ -1008,118 +962,68 @@ No slots — alerts are generated from messages.
1008
962
 
1009
963
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/alert/alert.html
1010
964
  - Doc ID: core/components/ui/alert/alert
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
965
+ - Keywords: Concorde, supersoniks, core/components/ui/alert/alert, alert, Alert, UI component, sonic-alert, web component
1012
966
 
1013
967
  Alert
1014
968
 
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
-
1019
969
  Status
1020
970
 
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.
971
+ This address is already in use.
972
+ This address is already in use.
973
+ This address is already in use.
974
+ This address is already in use.
975
+ This address is already in use.
1045
976
 
1046
977
  Sizes
1047
978
 
1048
- This address is already in use. Lorem ipsum dolor sit amet.
979
+ This address is already in use. Lorem ipsum dolor sit amet.
1049
980
 
1050
- This address is already in use. Lorem ipsum dolor sit amet.
981
+ This address is already in use. Lorem ipsum dolor sit amet.
1051
982
 
1052
- This address is already in use. Lorem ipsum dolor sit amet.
983
+ This address is already in use. Lorem ipsum dolor sit amet.
1053
984
 
1054
- This address is already in use. Lorem ipsum dolor sit amet.
985
+ This address is already in use. Lorem ipsum dolor sit amet.
1055
986
 
1056
- This address is already in use. Lorem ipsum dolor sit amet.
987
+ This address is already in use. Lorem ipsum dolor sit amet.
1057
988
 
1058
- This address is already in use. Lorem ipsum dolor sit amet.
989
+ This address is already in use. Lorem ipsum dolor sit amet.
1059
990
 
1060
- This address is already in use. Lorem ipsum dolor sit amet.
991
+ This address is already in use. Lorem ipsum dolor sit amet.
1061
992
 
1062
993
  Alert with link
1063
994
 
1064
- Rich content in the slot (buttons, links).
1065
-
1066
- You have 2 unread messages
995
+ You have 2 unread messages
1067
996
 
1068
- See messages
1069
- Dismiss
997
+ See messages
998
+ dismiss
1070
999
 
1071
1000
  Background
1072
1001
 
1073
- Tinted background from the status color (color-mix on currentColor).
1002
+ This address is already in use.
1074
1003
 
1075
- This address is already in use.
1004
+ This address is already in use.
1076
1005
 
1077
- This address is already in use.
1006
+ This address is already in use.
1078
1007
 
1079
- This address is already in use.
1008
+ This address is already in use.
1080
1009
 
1081
- This address is already in use.
1082
-
1083
- This address is already in use.
1010
+ This address is already in use.
1084
1011
 
1085
1012
  Dismissible
1086
1013
 
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.
1014
+ This address is already in use.
1090
1015
 
1091
- This address is already in use.
1016
+ This address is already in use.
1092
1017
 
1093
- This address is already in use.
1018
+ This address is already in use.
1094
1019
 
1095
- This address is already in use.
1020
+ This address is already in use.
1096
1021
 
1097
- This address is already in use.
1022
+ This address is already in use.
1098
1023
 
1099
1024
  Dismiss forever
1100
1025
 
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 |
1026
+ This address is already in use.
1123
1027
 
1124
1028
  ---
1125
1029
 
@@ -1127,105 +1031,68 @@ API reference
1127
1031
 
1128
1032
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/badge/badge.html
1129
1033
  - Doc ID: core/components/ui/badge/badge
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
1034
+ - Keywords: Concorde, supersoniks, core/components/ui/badge/badge, badge, Badge, UI component, sonic-badge, web component
1131
1035
 
1132
1036
  Badge
1133
1037
 
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
-
1136
1038
  Type
1137
1039
 
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).
1040
+ Default
1041
+ Primary
1042
+ Neutral
1043
+ Warning
1044
+ Info
1045
+ Success
1046
+ Danger
1047
+ Contrast
1151
1048
 
1152
1049
  Outline
1153
1050
 
1154
- Default
1155
- Primary
1156
- Neutral
1157
- Warning
1158
- Info
1159
- Success
1160
- Danger
1051
+ Default
1052
+ Primary
1053
+ Neutral
1054
+ Warning
1055
+ Info
1056
+ Success
1057
+ Danger
1058
+ Contrast
1161
1059
 
1162
1060
  Ghost
1163
1061
 
1164
- Default
1165
- Primary
1166
- Neutral
1167
- Warning
1168
- Info
1169
- Success
1170
- Danger
1062
+ Default
1063
+ Primary
1064
+ Neutral
1065
+ Warning
1066
+ Info
1067
+ Success
1068
+ Danger
1069
+ Contrast
1171
1070
 
1172
1071
  Size
1173
1072
 
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
1073
+ 2Xs badge
1074
+ Xs badge
1075
+ Sm badge
1076
+ Md badge
1077
+ Lg badge
1078
+ Xl badge
1079
+ 2Xl badge
1191
1080
 
1192
1081
  Empty badges
1193
1082
 
1194
- Badge with no text (visual dot). min-width / min-height keep a readable shape.
1195
-
1196
1083
  Ellipsis
1197
1084
 
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.
1085
+ Lorem ipsum dolor sit consectetur adipiscing elit. Lorem ipsum dolor sit consectetur adipiscing elit.
1086
+ Lorem ipsum dolor sit consectetur adipiscing elit. Lorem ipsum dolor sit consectetur adipiscing elit.
1203
1087
 
1204
1088
  Badge in button
1205
1089
 
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
1090
+ Messages 5
1212
1091
 
1213
- 33
1092
+ Mon compte
1093
+ 12
1214
1094
 
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 |
1095
+ 33
1229
1096
 
1230
1097
  ---
1231
1098
 
@@ -1287,7 +1154,6 @@ Loading
1287
1154
  The length of the button depends on the size of its content
1288
1155
 
1289
1156
  Loading button
1290
- 🚀 Loading with prefix 😂
1291
1157
 
1292
1158
  Swap
1293
1159
 
@@ -1337,54 +1203,11 @@ Custom styles & active states with tailwind
1337
1203
 
1338
1204
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/captcha/captcha.html
1339
1205
  - Doc ID: core/components/ui/captcha/captcha
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
1206
+ - Keywords: Concorde, supersoniks, core/components/ui/captcha/captcha, captcha, Captcha, UI component, sonic-captcha, web component
1341
1207
 
1342
1208
  Captcha
1343
1209
 
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.
1210
+ Submit with captcha
1388
1211
 
1389
1212
  ---
1390
1213
 
@@ -1392,118 +1215,49 @@ Related: Submit — needsCaptchaValidation and deferred send.
1392
1215
 
1393
1216
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/card/card.html
1394
1217
  - Doc ID: core/components/ui/card/card
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
1218
+ - Keywords: Concorde, supersoniks, core/components/ui/card/card, card, Card, UI component, sonic-card, web component
1396
1219
 
1397
1220
  Card
1398
1221
 
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
-
1405
1222
  Type
1406
1223
 
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
1224
+ Base
1225
+ Light
1226
+ Primary
1227
+ Warning
1228
+ Danger
1229
+ Success
1230
+ Info
1231
+ Neutral
1232
+ Invert
1428
1233
 
1429
1234
  Header
1430
1235
 
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 .
1236
+ Description rendu via le composant : "sonic-card-header-description"
1436
1237
 
1437
- Choose what we email you about.
1238
+ Suffix
1438
1239
 
1439
- 3 new
1440
-
1441
- Custom header
1442
-
1443
- Use the header slot when attributes are not enough.
1240
+ Header custom
1241
+ Tout le contenu excepté l'icône ✈ passe par le slot du header
1242
+ ✈
1444
1243
 
1445
1244
  Main
1446
1245
 
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.
1246
+ Main area
1247
+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iure id dolor debitis deleniti eligendi natus dolorem a commodi sunt dicta? Ipsa asperiores magni consequuntur dolor voluptatibus. Maxime, nemo? Facere, odio.
1452
1248
 
1453
1249
  Footer
1454
1250
 
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
1251
+ Footer area
1252
+ Debitis deleniti eligendi natus dolorem aufdh.
1470
1253
 
1471
- API reference
1254
+ 🛫 ✈ ✈ ✈ ✈ ✈ 🛬
1472
1255
 
1473
- sonic-card
1256
+ Example of use
1474
1257
 
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 |
1258
+ Main - Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iure id dolor debitis deleniti eligendi natus dolorem a commodi sunt dicta? Ipsa asperiores magni consequuntur dolor voluptatibus. Maxime, nemo? Facere, odio.
1479
1259
 
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) |
1260
+ Footer - Amet consectetur adipisicing
1507
1261
 
1508
1262
  ---
1509
1263
 
@@ -1511,72 +1265,19 @@ sonic-card-main · sonic-card-footer
1511
1265
 
1512
1266
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/divider/divider.html
1513
1267
  - Doc ID: core/components/ui/divider/divider
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
1268
+ - Keywords: Concorde, supersoniks, core/components/ui/divider/divider, divider, Divider, UI component, sonic-divider, web component
1515
1269
 
1516
1270
  Divider
1517
1271
 
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.
1519
-
1520
- Basic example
1272
+ Default
1521
1273
 
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.
1274
+ Align
1527
1275
 
1528
1276
  Size
1529
1277
 
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.
1278
+ Custom
1563
1279
 
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.
1280
+ Lorem ipsum dolor sit amet +25
1580
1281
 
1581
1282
  ---
1582
1283
 
@@ -1635,212 +1336,98 @@ Checked blacklistFlags values are sent to the mock API (?blacklistFlags=racist,s
1635
1336
 
1636
1337
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/form/fieldset/fieldset.html
1637
1338
  - Doc ID: core/components/ui/form/fieldset/fieldset
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
1339
+ - Keywords: Concorde, supersoniks, core/components/ui/form/fieldset/fieldset, fieldset, Fieldset, UI component, form, sonic-fieldset, web component
1639
1340
 
1640
1341
  Fieldset
1641
1342
 
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
-
1646
1343
  Variant
1647
1344
 
1648
- ghost and shadow use a transparent border; shadow also applies --sc-shadow-lg.
1345
+ Default
1649
1346
 
1650
- Tight layout
1347
+ Ghost
1651
1348
 
1652
- Set tight to remove horizontal padding and side borders (flat strip inside a parent).
1349
+ Shadow
1653
1350
 
1654
1351
  Legend
1655
1352
 
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.
1353
+ Custom legend via slot
1685
1354
 
1686
- Accessibility
1355
+ Description via composant : sonic-legend-description
1687
1356
 
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.
1357
+ Short hand
1689
1358
 
1690
- API reference
1359
+ Example of use
1691
1360
 
1692
- sonic-fieldset
1361
+ Informations personnelles
1362
+ Description du fieldset lorem ipsum dolor
1693
1363
 
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) |
1364
+ Mentions légales
1365
+ Conditions générales d'utilisation
1706
1366
 
1707
- | Slot | Description |
1708
- |------|-------------|
1709
- | (default) | Legend (optional) and field group content in visual order |
1367
+ - Sélectionner -
1368
+ Je préfère ne pas le dire
1369
+ Homme
1370
+ Femme
1710
1371
 
1711
- sonic-legend
1372
+ Coordonnées
1712
1373
 
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 |
1374
+ S'inscrire
1721
1375
 
1722
- | Slot | Description |
1723
- |------|-------------|
1724
- | (default) | Legend title and description components |
1725
- | suffix | Trailing actions (menus, icon buttons) |
1376
+ Continuer sans m'inscrire
1726
1377
 
1727
- sonic-legend-description
1728
-
1729
- Muted description line below the legend title. No attributes—project content through the default slot.
1378
+ Submitted informations...
1730
1379
 
1731
1380
  ---
1732
1381
 
1733
- ## Form actions
1382
+ ## Form-actions
1734
1383
 
1735
1384
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/form/form-actions/form-actions.html
1736
1385
  - Doc ID: core/components/ui/form/form-actions/form-actions
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
1738
-
1739
- Form actions
1740
-
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.
1742
-
1743
- Basic example
1744
-
1745
- With no attributes, actions align to the start of the row (typical for left-to-right forms).
1746
-
1747
- Submit
1748
- Cancel
1749
-
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
1386
+ - Keywords: Concorde, supersoniks, core/components/ui/form/form-actions/form-actions, form-actions, Form-actions, UI component, form, sonic-form-actions, web component
1756
1387
 
1757
- Flex direction
1388
+ Form-actions
1758
1389
 
1759
- direction maps to flex-direction. row-reverse swaps visual order while keeping DOM order (focus order unchanged).
1390
+ Left by default
1760
1391
 
1761
- Submit
1762
- Cancel
1392
+ Submit
1393
+ Cancel
1763
1394
 
1764
- Mixed controls
1395
+ Justify
1765
1396
 
1766
- Combine sonic-button with sonic-divider vertical or other slotted content. Default alignItems center keeps unlike heights aligned on the cross axis.
1397
+ Submit
1398
+ Cancel
1767
1399
 
1768
- Left seats
1769
-
1770
- Right seats
1400
+ Direction
1771
1401
 
1772
- API reference
1402
+ Submit
1403
+ Cancel
1773
1404
 
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 |
1405
+ Center
1779
1406
 
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.
1407
+ Left seats
1781
1408
 
1782
- | Slot | Description |
1783
- |------|-------------|
1784
- | (default) | Footer actions (sonic-button and related controls) |
1409
+ Right seats
1785
1410
 
1786
1411
  ---
1787
1412
 
1788
- ## Form layout
1413
+ ## Form-layout
1789
1414
 
1790
1415
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/form/form-layout/form-layout.html
1791
1416
  - Doc ID: core/components/ui/form/form-layout/form-layout
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
1417
+ - Keywords: Concorde, supersoniks, core/components/ui/form/form-layout/form-layout, form-layout, Form-layout, UI component, form, sonic-form-layout, web component
1809
1418
 
1810
- I accept the
1811
- terms and conditions
1419
+ Form-layout
1812
1420
 
1813
- Submit
1421
+ - Sélectionner -
1422
+ Je préfère ne pas le dire
1423
+ Homme
1424
+ Femme
1814
1425
 
1815
- Responsive columns
1426
+ Activer une superbe option
1427
+ Inscription à la newsletter
1428
+ J'ai lu et accepte les Conditions générales de ventes
1816
1429
 
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 |
1430
+ Valider
1844
1431
 
1845
1432
  ---
1846
1433
 
@@ -1882,7 +1469,7 @@ data-keyboard-nav sur le champ et les items (flèches haut / bas).
1882
1469
 
1883
1470
  Input
1884
1471
 
1885
- Native attributes list
1472
+ Native attibutes list
1886
1473
 
1887
1474
  Label
1888
1475
 
@@ -2053,7 +1640,7 @@ Same mock filter as Checkbox; switches can enable several flags (comma-separated
2053
1640
 
2054
1641
  Textarea
2055
1642
 
2056
- Native attributes list
1643
+ Native attibutes list
2057
1644
 
2058
1645
  Label
2059
1646
 
@@ -2075,91 +1662,47 @@ Size
2075
1662
 
2076
1663
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/group/group.html
2077
1664
  - Doc ID: core/components/ui/group/group
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
1665
+ - Keywords: Concorde, supersoniks, core/components/ui/group/group, group, Group, UI component, sonic-group, web component
2079
1666
 
2080
1667
  Group
2081
1668
 
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
-
2084
1669
  Radio group
2085
1670
 
2086
- Pair with sonic-button radio and a shared name; ancestor formDataProvider stores the selected value.
2087
-
2088
1671
  😎 Standard
2089
1672
  ⭐ Premium
2090
1673
  💎 Diamond
2091
1674
 
2092
1675
  Button group
2093
1676
 
2094
- Adjacent link or action buttons without merging into one control.
2095
-
2096
- 🗼 Air France
1677
+ 🗼Air France
2097
1678
  🌴 Air Tahiti
2098
1679
  💣 Air Corsica
2099
1680
 
2100
1681
  Input actions prefix
2101
1682
 
2102
- Action control before the field. label or description on sonic-group annotate the row.
2103
-
2104
1683
  Input actions suffix
2105
1684
 
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
-
2122
1685
  ---
2123
1686
 
2124
1687
  ## Icon
2125
1688
 
2126
1689
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/icon/icon.html
2127
1690
  - Doc ID: core/components/ui/icon/icon
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
1691
+ - Keywords: Concorde, supersoniks, core/components/ui/icon/icon, icon, Icon, UI component, sonic-icon, web component
2129
1692
 
2130
1693
  Icon
2131
1694
 
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.
2133
-
2134
- Core library
2135
-
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.
2137
-
2138
- cancel
2139
-
2140
- check
2141
-
2142
- check-circled-outline
2143
-
2144
- emoji-puzzled
2145
-
2146
- info-empty
2147
-
2148
- loader
2149
-
2150
- minus-small
1695
+ Custom
2151
1696
 
2152
- more-horiz
1697
+ Icons located in the following folder : /svg/$prefix/$name.svg
2153
1698
 
2154
- more-vert
2155
-
2156
- nav-arrow-down
1699
+ regular
2157
1700
 
2158
- warning-circled-outline
1701
+ solid
2159
1702
 
2160
- External libraries
1703
+ default prefix
2161
1704
 
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).
1705
+ External
2163
1706
 
2164
1707
  heroicons
2165
1708
 
@@ -2175,20 +1718,8 @@ Set library to load SVGs from a built-in CDN template. prefix falls back to each
2175
1718
 
2176
1719
  lucide
2177
1720
 
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
-
2188
1721
  Size
2189
1722
 
2190
- Omit size for the default scale (1em height). Larger steps use 3xl.
2191
-
2192
1723
  2xs
2193
1724
 
2194
1725
  xs
@@ -2205,250 +1736,87 @@ Omit size for the default scale (1em height). Larger steps use 3xl.
2205
1736
 
2206
1737
  3xl
2207
1738
 
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
-
2225
1739
  ---
2226
1740
 
2227
1741
  ## Image
2228
1742
 
2229
1743
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/image/image.html
2230
1744
  - Doc ID: core/components/ui/image/image
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
1745
+ - Keywords: Concorde, supersoniks, core/components/ui/image/image, image, Image, UI component, sonic-image, web component
2232
1746
 
2233
1747
  Image
2234
1748
 
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
-
2237
1749
  Rounded
2238
1750
 
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%).
1751
+ Ratio
2258
1752
 
2259
1753
  Object position
2260
1754
 
2261
- objectPosition maps to CSS object-position (default center center). Useful on wide crops when the subject sits off-center.
2262
-
2263
1755
  Cover
2264
1756
 
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
-
2315
1757
  ---
2316
1758
 
2317
1759
  ## Link
2318
1760
 
2319
1761
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/link/link.html
2320
1762
  - Doc ID: core/components/ui/link/link
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
1763
+ - Keywords: Concorde, supersoniks, core/components/ui/link/link, link, Link, UI component, sonic-link, web component
2322
1764
 
2323
1765
  Link
2324
1766
 
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).
1767
+ Href
2326
1768
 
2327
- Basic example
2328
-
2329
- Basic link with href attribute
1769
+ Basic link with href attibute
2330
1770
 
2331
1771
  Target
2332
1772
 
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)
1773
+ Link with target attibute
2342
1774
 
2343
1775
  AutoActive
2344
1776
 
2345
- Default autoActive is partial: the host gets active when the current URL starts with href. Style with [&[active]]: utilities or host selectors.
2346
-
2347
1777
  autoActive partial (default)
2348
1778
 
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.
1779
+ AutoActive Strict vs partial
2352
1780
 
2353
1781
  autoActive strict
2354
- autoActive strict (long href)
2355
- autoActive strict-path-only
1782
+ autoActive strict
2356
1783
 
2357
1784
  AutoActive disabled
2358
1785
 
2359
1786
  autoActive disabled
2360
1787
 
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
-
2379
1788
  ---
2380
1789
 
2381
1790
  ## Loader
2382
1791
 
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
- });
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
2425
1795
 
2426
- Loader.hide();
1796
+ Loader
2427
1797
 
2428
- Composition
1798
+ Inline mode
2429
1799
 
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.
1800
+ CurrentColor
2431
1801
 
2432
- Save changes
1802
+ Align
2433
1803
 
2434
- API reference
1804
+ Fixed mode
2435
1805
 
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 |
1806
+ Loading button
2443
1807
 
2444
- This component has no slots. The animation markup is internal.
1808
+ A loading button
2445
1809
 
2446
- Static methods
1810
+ Hide / show programmatically
2447
1811
 
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. |
1812
+ import {Loader} from "@supersoniks/concorde/core/components/ui/loader/loader";
1813
+ // Show
1814
+ Loader.show({
1815
+ mode:"fixed" // optional : fixed | inline
1816
+ container : document.querySelector('#foo') // optional, default : parent sonic-theme || document.body
1817
+ });
1818
+ // Hide
1819
+ Loader.hide();
2452
1820
 
2453
1821
  ---
2454
1822
 
@@ -2456,24 +1824,12 @@ Static methods
2456
1824
 
2457
1825
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/menu/menu.html
2458
1826
  - Doc ID: core/components/ui/menu/menu
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
1827
+ - Keywords: Concorde, supersoniks, core/components/ui/menu/menu, menu, Menu, UI component, sonic-menu, web component
2460
1828
 
2461
1829
  Menu
2462
1830
 
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
-
2473
1831
  Direction
2474
1832
 
2475
- Default direction is column. Use row for horizontal toolbars or tabs.
2476
-
2477
1833
  Row
2478
1834
 
2479
1835
  Profile
@@ -2496,9 +1852,7 @@ Default direction is column. Use row for horizontal toolbars or tabs.
2496
1852
 
2497
1853
  Size
2498
1854
 
2499
- size on the menu propagates to items and the more trigger when they omit their own size.
2500
-
2501
- XS
1855
+ XS
2502
1856
 
2503
1857
  Profile
2504
1858
 
@@ -2506,7 +1860,7 @@ size on the menu propagates to items and the more trigger when they omit their o
2506
1860
 
2507
1861
  Orders
2508
1862
 
2509
- Small
1863
+ Small
2510
1864
 
2511
1865
  Profile
2512
1866
 
@@ -2514,7 +1868,7 @@ size on the menu propagates to items and the more trigger when they omit their o
2514
1868
 
2515
1869
  Orders
2516
1870
 
2517
- Medium
1871
+ Medium
2518
1872
 
2519
1873
  Profile
2520
1874
 
@@ -2522,7 +1876,7 @@ size on the menu propagates to items and the more trigger when they omit their o
2522
1876
 
2523
1877
  Orders
2524
1878
 
2525
- Large
1879
+ Large
2526
1880
 
2527
1881
  Profile
2528
1882
 
@@ -2530,7 +1884,7 @@ size on the menu propagates to items and the more trigger when they omit their o
2530
1884
 
2531
1885
  Orders
2532
1886
 
2533
- XL
1887
+ XL
2534
1888
 
2535
1889
  Profile
2536
1890
 
@@ -2540,36 +1894,30 @@ size on the menu propagates to items and the more trigger when they omit their o
2540
1894
 
2541
1895
  Shadow
2542
1896
 
2543
- Optional shadow wraps the menu surface (no shadow when omitted).
1897
+ None
2544
1898
 
2545
- None
1899
+ Small
2546
1900
 
2547
- Small
1901
+ Medium
2548
1902
 
2549
- Medium
2550
-
2551
- Large
1903
+ Large
2552
1904
 
2553
1905
  Align
2554
1906
 
2555
- align propagates to items except square / circle shape.
2556
-
2557
- Home
1907
+ Home
2558
1908
 
2559
- Profile
1909
+ Profile
2560
1910
 
2561
- Home
1911
+ Home
2562
1912
 
2563
- Profile
1913
+ Profile
2564
1914
 
2565
- Home
1915
+ Home
2566
1916
 
2567
- Profile
1917
+ Profile
2568
1918
 
2569
1919
  More
2570
1920
 
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
-
2573
1921
  Home
2574
1922
 
2575
1923
  Profile
@@ -2586,8 +1934,6 @@ Assign nodes to slot="more" to show the overflow popover. The trigger appears on
2586
1934
 
2587
1935
  Scrollable
2588
1936
 
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
-
2591
1937
  Home
2592
1938
 
2593
1939
  Profile
@@ -2622,189 +1968,74 @@ With scrollable, the main slot scrolls with edge fade masks; drag-to-scroll work
2622
1968
 
2623
1969
  Log out
2624
1970
 
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
-
2644
1971
  ---
2645
1972
 
2646
- ## Modal
1973
+ ## Concorde
2647
1974
 
2648
1975
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/modal/modal.html
2649
1976
  - Doc ID: core/components/ui/modal/modal
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
1977
+ - Keywords: Concorde, supersoniks, core/components/ui/modal/modal, modal, UI component, sonic-modal, web component
2651
1978
 
2652
1979
  Modal
2653
1980
 
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.
1981
+ Simple modal
2659
1982
 
2660
- Open modal
1983
+ Lorem ipsum dolor sit amet +33
1984
+ Donec sed vestibulum augue.
2661
1985
 
2662
- Export ready
2663
- New
1986
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget quam eu mi luctus faucibus.
2664
1987
 
2665
- Your report finished processing.
1988
+ Click don't close
2666
1989
 
2667
- Download the CSV now or review the summary in your dashboard before sharing.
1990
+ Confirm
2668
1991
 
2669
- Save draft
1992
+ Long text
2670
1993
 
2671
- Download
1994
+ Long text
2672
1995
 
2673
- Scrollable content
1996
+ Infos et tarifs
2674
1997
 
2675
- Long copy scrolls inside the dialog. Default maxHeight is 90vh. Default align is left.
1998
+ Horaires d’ouverture
1999
+ Du mercredi au samedi de 13h30 à 19h et le dimanche de 13h30 à 18h
2000
+ + horaires spécifiques pour événements ou festivals 
2676
2001
 
2677
- Venue details
2002
+ Billetterie 
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.  
2678
2005
 
2679
- Hours and tickets
2006
+ Les tarifs (Tarif plein / Tarif Réduit / Tarif Spécifique) sont indiqués pour chaque événement et peuvent
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.
2680
2009
 
2681
- Opening hours
2682
- Wednesday–Saturday, 1:30 p.m.–7:00 p.m.; Sunday, 1:30 p.m.–6:00 p.m.
2010
+ L’accès au Skatepark, Fablab et Halle C sont soumis à adhésions. Les adhésions sont gratuites et
2011
+ nominatives. Elle donnent accès aux espaces dans la limite des places disponibles.
2683
2012
 
2684
- Ticketing
2685
- Some events require online or box-office reservations. Prices vary by event; booking ahead is recommended when capacity is limited.
2013
+ + d’infos billetterie@laconditionpublique.com +33 (0)328334833 
2686
2014
 
2687
- Contact
2688
- tickets@example.com · +33 3 28 33 48 33
2015
+ Accès 14, place Faidherbe 59100 Roubaix Métro / Tram : Arrêt
2016
+ Eurotéléport, Ligne 2 Bus / V’Lille : Arrêt Condition Publique 
2689
2017
 
2690
- Access
2691
- 14 Place Faidherbe, 59100 Roubaix
2692
- Metro line 2, Eurotéléport stop
2018
+ Accès handicapés : nous contacter avant votre venue au 03 28 33 48 33 ou par mail
2019
+ billetterie@laconditionpublique.com
2693
2020
 
2694
2021
  Force action
2695
2022
 
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.
2023
+ Force action to close
2697
2024
 
2698
- Cookie consent
2025
+ Do you want some cookies ?
2699
2026
 
2700
- Allow analytics cookies?
2027
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget quam eu mi luctus faucibus.
2701
2028
 
2702
- We use cookies to measure traffic and improve the product. You can change this later in settings.
2703
-
2704
- Decline
2705
- Accept
2029
+ Nope
2030
+ Hell yes !
2706
2031
 
2707
2032
  Custom dimensions
2708
2033
 
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
2034
+ Custom width
2712
2035
 
2713
2036
  Fullscreen
2714
2037
 
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 |
2038
+ Fullscreen
2808
2039
 
2809
2040
  ---
2810
2041
 
@@ -2812,237 +2043,103 @@ Rendered automatically unless forceAction or noCloseButton is set. Calls hide()
2812
2043
 
2813
2044
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/pop/pop.html
2814
2045
  - Doc ID: core/components/ui/pop/pop
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
2046
+ - Keywords: Concorde, supersoniks, core/components/ui/pop/pop, pop, Pop, UI component, sonic-pop, web component
2816
2047
 
2817
2048
  Pop
2818
2049
 
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
-
2829
2050
  Placement
2830
2051
 
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
2052
+ Left
2852
2053
 
2853
- Notifications
2054
+ Notifications
2854
2055
 
2855
- Top center
2056
+ Right
2856
2057
 
2857
- Notifications
2058
+ Notifications
2858
2059
 
2859
- Left center
2060
+ Top
2860
2061
 
2861
- Notifications
2062
+ Notifications
2862
2063
 
2863
- Right center
2064
+ Bottom
2864
2065
 
2865
- Notifications
2066
+ Notifications
2866
2067
 
2867
2068
  Shadow
2868
2069
 
2869
- Default shadow is lg. The shadow applies to the floating content panel.
2870
-
2871
- None
2872
-
2873
- Notifications
2874
-
2875
- Small
2876
-
2877
- Notifications
2878
-
2879
- Medium
2880
-
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.
2070
+ None
2890
2071
 
2891
- The Concorde flew from Paris to
2072
+ Notifications
2892
2073
 
2893
- New York
2074
+ Small
2894
2075
 
2895
- See flights
2896
- Book a seat
2076
+ Notifications
2897
2077
 
2898
- in about 3.5 hours.
2078
+ Medium
2899
2079
 
2900
- No toggle
2080
+ Notifications
2901
2081
 
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.
2082
+ Large
2903
2083
 
2904
- No toggle on click
2084
+ Notifications
2905
2085
 
2906
- Notifications
2086
+ noToggle
2907
2087
 
2908
- Default toggle on click
2088
+ No toggle on click
2909
2089
 
2910
- Notifications
2090
+ Notifications
2911
2091
 
2912
- Manual control
2092
+ Default toggle on click
2913
2093
 
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.
2094
+ Notifications
2915
2095
 
2916
- Click Click to open pop to open the panel programmatically.
2096
+ manual
2917
2097
 
2918
- Manual trigger
2098
+ Manual doesn't open on click
2919
2099
 
2920
- It worked!
2100
+ Hourra !
2921
2101
 
2922
2102
  Click to open pop
2923
2103
 
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
-
2968
2104
  ---
2969
2105
 
2970
- ## Progress
2106
+ ## Progress bar
2971
2107
 
2972
2108
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/progress/progress.html
2973
2109
  - Doc ID: core/components/ui/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
2975
-
2976
- Progress
2977
-
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.
2110
+ - Keywords: Concorde, supersoniks, core/components/ui/progress/progress, progress, Progress bar, UI component, sonic-progress, web component
2979
2111
 
2980
- Basic example
2981
-
2982
- Set value from 0 to max (default 100). Label text uses the type color.
2112
+ Progress bar
2983
2113
 
2984
- 50%
2114
+ Displays an indicator showing the completion progress of a task.
2985
2115
 
2986
2116
  Indeterminate
2987
2117
 
2988
- With no value, the bar animates until progress is known.
2989
-
2990
- Type
2991
-
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
2118
+ Remaining
3003
2119
 
3004
- Bar height scales with typography via size. With no size, font size matches md (1rem).
2120
+ 80% Used 20% left
3005
2121
 
3006
- 25%
3007
- 25%
3008
- 25%
3009
- 25%
3010
- 25%
3011
- 25%
3012
- 25%
2122
+ Sizes
3013
2123
 
3014
- Default and remaining slots
2124
+ 25%
2125
+ 25%
2126
+ 25%
2127
+ 25%
2128
+ 25%
2129
+ 25%
2130
+ 25%
3015
2131
 
3016
- The default slot is the main label (left). remaining is right-aligned with lighter weight—use it for “left to complete” copy.
2132
+ Type
3017
2133
 
3018
- 80% Used 20% left
2134
+ 50%
2135
+ 50%
2136
+ 50%
2137
+ 50%
2138
+ 50%
3019
2139
 
3020
2140
  Invert
3021
2141
 
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) |
2142
+ 50%
3046
2143
 
3047
2144
  ---
3048
2145
 
@@ -3050,15 +2147,11 @@ API reference
3050
2147
 
3051
2148
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/table/table.html
3052
2149
  - Doc ID: core/components/ui/table/table
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
2150
+ - Keywords: Concorde, supersoniks, core/components/ui/table/table, table, Table, UI component, sonic-table, web component
3054
2151
 
3055
2152
  Table
3056
2153
 
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.
2154
+ Basic usage
3062
2155
 
3063
2156
  Id
3064
2157
  Name
@@ -3076,9 +2169,7 @@ A header row plus body rows is enough for static tables; sonic-thead / sonic-tbo
3076
2169
  Emma Wong
3077
2170
  emma.wong@reqres.in
3078
2171
 
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.
2172
+ List / fetch
3082
2173
 
3083
2174
  Id
3084
2175
  Name
@@ -3088,8 +2179,6 @@ Place sonic-list inside sonic-tbody so each item template renders a sonic-tr. so
3088
2179
 
3089
2180
  Size
3090
2181
 
3091
- Default font size is md (omit size). Sizes follow the shared scale (2xs … 2xl).
3092
-
3093
2182
  2xs
3094
2183
 
3095
2184
  xs
@@ -3108,8 +2197,6 @@ Default font size is md (omit size). Sizes follow the shared scale (2xs … 2xl)
3108
2197
 
3109
2198
  Bordered
3110
2199
 
3111
- Set bordered on sonic-table for an outer frame and horizontal rules between rows.
3112
-
3113
2200
  Id
3114
2201
  Name
3115
2202
  Email
@@ -3126,9 +2213,7 @@ Set bordered on sonic-table for an outer frame and horizontal rules between rows
3126
2213
  Emma Wong
3127
2214
  emma.wong@reqres.in
3128
2215
 
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.
2216
+ MaxHeight
3132
2217
 
3133
2218
  Id
3134
2219
  Name
@@ -3138,34 +2223,36 @@ maxHeight applies to the scroll container (for example 8rem), so the body scroll
3138
2223
 
3139
2224
  Type
3140
2225
 
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
2226
+ Values available : primary, info, success, warning, danger
3145
2227
 
3146
- Attribute type set on
3147
- sonic-td
2228
+ Attribute type set on
2229
+ sonic-th
3148
2230
 
3149
- Attribute type set on
3150
- sonic-tr
2231
+ Attribute type set on
2232
+ sonic-td
3151
2233
 
3152
- Colspan and rowspan
2234
+ Attribute type set on
2235
+ sonic-tr
3153
2236
 
3154
- Use colSpan and rowSpan on sonic-th or sonic-td (maps to colspan / rowspan on the cell).
2237
+ Colspan / rowspan
3155
2238
 
3156
- colspan: 2
2239
+ colspan : 2
3157
2240
  cell
3158
2241
 
3159
2242
  cell
3160
2243
  cell
3161
- rowspan: 2
2244
+ rowspan : 2
3162
2245
 
3163
2246
  cell
3164
2247
  cell
3165
2248
 
3166
- Cell alignment and width
2249
+ Cell style attributes
3167
2250
 
3168
- align sets horizontal alignment (left · center · right). minWidth / maxWidth / width set inline dimensions on the cell. vAlign is available on sonic-td only.
2251
+ The following attributes will be used to set the style of the component :
2252
+ - align
2253
+ - minWidth
2254
+ - maxWidth
2255
+ - width
3169
2256
 
3170
2257
  align
3171
2258
  minWidth
@@ -3184,12 +2271,12 @@ align sets horizontal alignment (left · center · right). minWidth / maxWidth /
3184
2271
 
3185
2272
  right
3186
2273
  20rem
3187
- 5rem — Lorem ipsum dolor
3188
- 15rem — Lorem ipsum dolor sit amet, consectetur adipiscing elit.
2274
+ 5rem - Lorem ipsum dolor
2275
+ 15rem - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam porta sollicitudin mollis. Curabitur sit amet nibh diam. Vivamus a pharetra mauris.
3189
2276
 
3190
- Responsive layout
2277
+ Responsive
3191
2278
 
3192
- Tables scroll horizontally by default when columns exceed the viewport. Use minWidth on wide columns to preserve readable line length.
2279
+ Every table is responsive by default
3193
2280
 
3194
2281
  Id
3195
2282
  Name
@@ -3198,11 +2285,9 @@ Tables scroll horizontally by default when columns exceed the viewport. Use minW
3198
2285
 
3199
2286
  $lastname ">
3200
2287
 
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.
2288
+ hasellus suscipit vulputate lacus, in tempor turpis aliquam vel. Nunc eleifend, velit id ultrices elementum, ipsum felis porttitor dui, id laoreet diam nulla sed urna.
3202
2289
 
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.
2290
+ Sticky header
3206
2291
 
3207
2292
  Company
3208
2293
  Contact
@@ -3221,6 +2306,18 @@ sonic-th uses position: sticky with top: 0 inside the table. For page-level stic
3221
2306
  3
3222
2307
  40€
3223
2308
 
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
+
3224
2321
  Laughing Bacchus Winecellars
3225
2322
  Yoshi Tannamuri
3226
2323
  Canada
@@ -3233,165 +2330,42 @@ sonic-th uses position: sticky with top: 0 inside the table. For page-level stic
3233
2330
  20
3234
2331
  40€
3235
2332
 
3236
- Table caption
3237
-
3238
- API reference
3239
-
3240
- sonic-table
3241
-
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 |
3249
-
3250
- | Slot | Description |
3251
- |------|-------------|
3252
- | (default) | Table sections and rows (sonic-thead, sonic-tbody, sonic-tr, …) |
3253
-
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).
3338
-
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
2333
+ Alfreds Futterkiste
2334
+ Maria Anders
2335
+ Germany
2336
+ 2
2337
+ 40€
3376
2338
 
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" }.
2339
+ Centro comercial Moctezuma
2340
+ no information yet
2341
+ 3
2342
+ 40€
3378
2343
 
3379
- // Inside the iframe — ask the parent theme to rebroadcast tokens
3380
- window.parent.postMessage({ type: "GetSonicTheme" }, "");
2344
+ Ernst Handel
2345
+ Roland Mendel
2346
+ Austria
2347
+ 4
2348
+ 40€
3381
2349
 
3382
- API reference
2350
+ Island Trading
2351
+ Helen Bennett
2352
+ UK
2353
+ 1
2354
+ 40€
3383
2355
 
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 |
2356
+ Laughing Bacchus Winecellars
2357
+ Yoshi Tannamuri
2358
+ Canada
2359
+ 0
2360
+ 40€
3389
2361
 
3390
- | Slot | Description |
3391
- |------|-------------|
3392
- | (default) | Application markup and Concorde components |
2362
+ Magazzini Alimentari Riuniti
2363
+ Giovanni Rovelli
2364
+ Italy
2365
+ 20
2366
+ 40€
3393
2367
 
3394
- Surface background: Tailwind bg-base on sonic-theme (requires Concorde Tailwind color base → --sc-base).
2368
+ table caption
3395
2369
 
3396
2370
  ---
3397
2371
 
@@ -3399,21 +2373,17 @@ Surface background: Tailwind bg-base on sonic-theme (requires Concorde Tailwind
3399
2373
 
3400
2374
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/toast/toast.html
3401
2375
  - Doc ID: core/components/ui/toast/toast
3402
- - Keywords: Concorde, supersoniks, core/components/ui/toast/toast, toast, Toast, UI component, sonic-toast, web component, SonicToast.add(), SonicToast, label, preserve, text, status
2376
+ - Keywords: Concorde, supersoniks, core/components/ui/toast/toast, toast, Toast, UI component, sonic-toast, web component, success, error, warning, info, preserve: true, dismissForever: true, id, ghost: true
3403
2377
 
3404
2378
  Toast
3405
2379
 
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.
2380
+ Utilisation de base
3411
2381
 
3412
- Show toast
2382
+ Afficher un toast
3413
2383
 
3414
- Status
2384
+ Statut
3415
2385
 
3416
- status drives color, icon, and live-region behavior. Omit status or pass an empty string for a neutral toast.
2386
+ Les statuts disponibles sont : success, error, warning, info ou vide (par défaut).
3417
2387
 
3418
2388
  Default
3419
2389
 
@@ -3425,105 +2395,69 @@ status drives color, icon, and live-region behavior. Omit status or pass an empt
3425
2395
 
3426
2396
  Info
3427
2397
 
3428
- Label
3429
-
3430
- Set label for a bold title above text. title still works but is deprecated—use label in new code.
2398
+ Avec titre
3431
2399
 
3432
- Toast with label
2400
+ Toast avec titre
3433
2401
 
3434
- Error with label
2402
+ Toast d'erreur avec titre
3435
2403
 
3436
- HTML in text
2404
+ Avec contenu HTML
3437
2405
 
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.
2406
+ Le contenu du toast peut contenir du HTML.
3439
2407
 
3440
- HTML and an action link ', status: 'info' })"
3441
- >
3442
- Toast with HTML
2408
+ HTML et un lien cliquable ', status: 'info' })">
2409
+ Toast avec HTML
3443
2410
 
3444
- Preserve
2411
+ Persistance
3445
2412
 
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.
2413
+ Par défaut, les toasts disparaissent automatiquement. Avec preserve: true, le toast reste affiché jusqu'à ce qu'il soit fermé manuellement.
3447
2414
 
3448
- Persistent toast
2415
+ Toast persistant
3449
2416
 
3450
- Dismiss forever
2417
+ Masquer définitivement
3451
2418
 
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.
2419
+ Avec dismissForever: true et un id, le toast peut être masqué définitivement. Une fois fermé, il ne réapparaîtra plus même après rechargement de la page.
3453
2420
 
3454
- Dismiss forever
2421
+ Toast avec dismiss forever
3455
2422
 
3456
- Ghost
2423
+ Fantôme
3457
2424
 
3458
- ghost renders a semi-transparent, non-interactive toast—useful for loading or background states. SonicToast.removeAll leaves ghost toasts in place.
2425
+ Avec ghost: true, le toast devient semi-transparent et non-interactif.
3459
2426
 
3460
- Ghost toast
2427
+ Toast ghost
3461
2428
 
3462
- Dismissal
2429
+ Méthodes de suppression
3463
2430
 
3464
- Use static helpers to clear the stack from app logic (for example after navigation).
2431
+ Tout supprimer
3465
2432
 
3466
- Remove all
2433
+ Supprime tous les toasts sauf ceux marqués comme ghost.
3467
2434
 
3468
- Removes every toast except ghost items.
2435
+ Ajouter toast 1
2436
+ Ajouter toast 2
2437
+ Ajouter toast 3
2438
+ Supprimer tous
3469
2439
 
3470
- Add toast 1
3471
- Add toast 2
3472
- Add toast 3
3473
- Remove all
2440
+ Supprimer par statut
3474
2441
 
3475
- Remove by status
2442
+ Supprime tous les toasts d'un statut spécifique.
3476
2443
 
3477
2444
  Success
3478
2445
  Error
3479
2446
  Warning
3480
- Remove success
3481
- Remove error
3482
-
3483
- Remove temporary items
2447
+ Supprimer success
2448
+ Supprimer error
3484
2449
 
3485
- Removes toasts that are not preserve.
2450
+ Supprimer les éléments temporaires
3486
2451
 
3487
- Temporary
2452
+ Supprime tous les toasts qui ne sont pas marqués comme preserve.
3488
2453
 
3489
- Persistent
2454
+ Temporaire
2455
+ Persistant
2456
+ Supprimer temporaires
3490
2457
 
3491
- Remove temporary
2458
+ Exemple complet
3492
2459
 
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.
2460
+ Toast complet
3527
2461
 
3528
2462
  ---
3529
2463
 
@@ -3531,29 +2465,25 @@ sonic-toast is mounted automatically; sonic-toast-item is internal. In iframes,
3531
2465
 
3532
2466
  - URL: https://concorde.supersoniks.org/crawl/core/components/ui/tooltip/tooltip.html
3533
2467
  - Doc ID: core/components/ui/tooltip/tooltip
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
2468
+ - Keywords: Concorde, supersoniks, core/components/ui/tooltip/tooltip, tooltip, Tooltip, UI component, sonic-tooltip, web component
3535
2469
 
3536
2470
  Tooltip
3537
2471
 
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
2472
+ hover me
3543
2473
 
3544
2474
  Placement
3545
2475
 
3546
- Use top · bottom · left · right for the main axis. Add -start or -end to align the bubble along the anchor edge.
2476
+ By default, tooltip is centered next to its content
3547
2477
 
3548
- Top
2478
+ Top
3549
2479
 
3550
- Bottom
2480
+ Bottom
3551
2481
 
3552
- Right
2482
+ Right
3553
2483
 
3554
- Left
2484
+ Left
3555
2485
 
3556
- Aligned placements
2486
+ More placement
3557
2487
 
3558
2488
  Top start
3559
2489
 
@@ -3571,39 +2501,14 @@ Aligned placements
3571
2501
 
3572
2502
  Left end
3573
2503
 
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
-
3580
2504
  Focusable
3581
2505
 
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
2506
+ Focus or hover non interactive element
3585
2507
 
3586
2508
  Disabled
3587
2509
 
3588
2510
  Tooltip disabled
3589
2511
 
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
-
3607
2512
  ---
3608
2513
 
3609
2514
  ## Data flow
@@ -3903,9 +2808,8 @@ Behavior
3903
2808
  - By default (dynamic: false), the value is read once at connect time and is not updated afterward
3904
2809
  - With { dynamic: true }, the property stays in sync when:
3905
2810
  - an ancestor changes the attribute value
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.
2811
+ - a closer ancestor gains the attribute (that value wins)
2812
+ - the nearest ancestor loses the attribute (falls back to the next one up, or null)
3909
2813
  - When dynamic is enabled, updates also propagate to @subscribe / @bind paths that depend on the decorated property (e.g. ${dataProvider})
3910
2814
 
3911
2815
  Dynamic mode
@@ -5708,8 +4612,8 @@ In the HTML of a JS or TS component or in the HTML of the web page containing th
5708
4612
 
5709
4613
  Installation
5710
4614
 
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.
4615
+ For almost all new projects, use create-concorde-ts-starter .
4616
+ 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.
5713
4617
 
5714
4618
  Starter
5715
4619
 
@@ -6172,7 +5076,7 @@ Introduction
6172
5076
  What is Concorde?
6173
5077
 
6174
5078
  Based on lit.dev, Concorde is a collection of web components for shared apps and websites.
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.
5079
+ Build UIs without tying components to a specific host stack, while keeping visual consistency through a small set of CSS variables.
6176
5080
 
6177
5081
  Why and use case
6178
5082
 
@@ -6213,242 +5117,91 @@ The starter runs yarn ai:sync for you. Details: AI agents (skills). Manual Vite
6213
5117
 
6214
5118
  ---
6215
5119
 
6216
- ## Customization
5120
+ ## Adding styles
6217
5121
 
6218
5122
  - URL: https://concorde.supersoniks.org/crawl/docs/_getting-started/theming.html
6219
5123
  - Doc ID: docs/_getting-started/theming
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
- }
5124
+ - Keywords: Concorde, supersoniks, docs/_getting-started/theming, theming, Adding styles, guide, , size, {reflect: true}, :host(), :host([type='primary']){...}, inline, block, display, contents
6304
5125
 
6305
- Palette generator: concordecolors
5126
+ Adding styles
6306
5127
 
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".
5128
+ Normal Behavior
6308
5129
 
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.
5130
+ No style crosses the shadow root of a component, except for inheritable properties (which have the "inherit" property possible) and CSS variables.
5131
+ Properties integrated via a "slot" remain stylizable in a conventional way.
6310
5132
 
6311
- Only essential CSS variables (public theme API)
5133
+ - During creation / from the inside:
5134
+ - We edit the static "styles" property of the lit component, which can also reference shared and dynamic styles.
5135
+ These styles are scoped and do not impact the outside.
5136
+ - We use CSS variables as the value of properties intended to be customized from the outside.
5137
+ For each variable, we define a default value to have a simple but consistent base style.
5138
+ - We only rewrite inheritable properties with hard values if they are truly specific to the component.
5139
+ - The tag as a direct child can be used as a last resort, especially if there is a need for particularly dynamic customization. Performance is reduced.
5140
+ - During use / from the outside:
5141
+ We define values for inheritable CSS properties (e.g., font-\, color...) using tools like Tailwind.
5142
+ We modify the value of CSS variables used by the component.
6312
5143
 
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).
5144
+ Choosing Style Presets via Reactive Properties:
6314
5145
 
6315
- Surfaces and foreground
5146
+ The declaration of reactive properties is useful for selecting a particular configuration that mostly affects a set of properties.
6316
5147
 
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.).
5148
+ For example, a size property (xs, sm, md, xl) will affect margins, font, line heights to align them with the corresponding CSS vars, which can be customized using the methods mentioned earlier if necessary.
6319
5149
 
6320
- Neutral fills
5150
+ It is recommended to use the {reflect: true} property for reactive properties that have an associated style on the :host(). For example: :host([type='primary']){...}
6321
5151
 
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) |
5152
+ ☢️ Caution: Passing class names via reactive properties / HTML attributes of the component should be avoided as it can quickly lead to difficult-to-manage situations.
6326
5153
 
6327
- Neutral foreground
5154
+ CSS "display" Property
6328
5155
 
6329
- | Variable | Role |
6330
- |----------|------|
6331
- | --sc-base-content | Default body text and icons on neutral surfaces |
5156
+ By default, the display property is inline.
5157
+ Therefore, be careful to define it according to the needs, as one might mistakenly expect it to be block as with a regular .
6332
5158
 
6333
- Semantic fills
5159
+ ☢️ Caution: Defining the display property as contents may seem attractive at first, but:
6334
5160
 
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) |
5161
+ - It almost always leads to the creation of wrappers to style the content (instead of using :host).
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.
6341
5164
 
6342
- Semantic foreground
5165
+ TAILWIND Functional Classes
6343
5166
 
6344
- | Variable | Role |
6345
- |----------|------|
6346
- | --sc-primary-content, --sc-secondary-content, … | Text/icons on the matching semantic fill (--sc-primary, etc.) |
5167
+ tailwind has been integrated into Concorde and is available in scoped components (with Shadow DOM).
5168
+ To use it, you need to import the following:
6347
5169
 
6348
- Shape
5170
+ import { tailwind } from "@supersoniks/concorde/la-billetterie/ui/theme/theme";
6349
5171
 
6350
- | Variable | Role |
6351
- |----------|------|
6352
- | --sc-rounded | Single primitive corner radius; the theme computes --sc-rounded-sm, --sc-btn-rounded, --sc-input-rounded, etc. |
5172
+ Then include the tailwind style in the static styles property of the component:
6353
5173
 
6354
- Typography
5174
+ static styles = [tailwind];
6355
5175
 
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.) |
5176
+ Finally, use it in the HTML within the render function:
6361
5177
 
6362
- Forms (only if you customize inputs globally)
5178
+ A paragraph with margin
6363
5179
 
6364
- Interactive controls expose a few extra theme-level tokens; prefer these over styling individual inputs from outside.
5180
+ The colors from Concorde's theme are referenced in Tailwind's theme.
6365
5181
 
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 |
5182
+ Operation without Shadow DOM
6372
5183
 
6373
- ---
5184
+ Usefulness
6374
5185
 
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
- }
5186
+ This operation is particularly useful when it comes to adding behavior to a simple existing element.
5187
+ It may also become necessary to establish compatibility with a traditional JS library.
5188
+
5189
+ For example, with a text input:
5190
+
5191
+ - Trigger automatic data or filter update when typing text.
5192
+ - Automatic formatting.
5193
+ - Constraints that cannot be handled by native methods.
5194
+
5195
+ Consequences
5196
+
5197
+ If there is no shadow DOM (see the noShadowDom property of Subscriber):
5198
+
5199
+ - Styling using the static "styles" property of the lit component will not be applied.
5200
+ - The element and its content can be styled in a traditional manner.
5201
+
5202
+ For example, the components queue, list, and fetch do not have a shadow DOM.
5203
+
5204
+ ℹ️ Note: Specifically in this case, it may be useful to set the display property to contents.
6452
5205
 
6453
5206
  ---
6454
5207