@supersoniks/concorde 5.0.5 → 5.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/.claude/launch.json +15 -0
  2. package/.claude/vite.http.config.mjs +7 -0
  3. package/.taste-skill/after/desktop-fold.jpg +0 -0
  4. package/.taste-skill/after/desktop-page-01.jpg +0 -0
  5. package/.taste-skill/after/desktop-page-02.jpg +0 -0
  6. package/.taste-skill/after/desktop-page-03.jpg +0 -0
  7. package/.taste-skill/after/mobile-fold.jpg +0 -0
  8. package/.taste-skill/after/mobile-page-01.jpg +0 -0
  9. package/.taste-skill/after/report.json +4103 -0
  10. package/.taste-skill/after/tablet-fold.jpg +0 -0
  11. package/.taste-skill/after/tablet-page-01.jpg +0 -0
  12. package/.taste-skill/after/tablet-page-02.jpg +0 -0
  13. package/.taste-skill/before/desktop-fold.jpg +0 -0
  14. package/.taste-skill/before/desktop-page-01.jpg +0 -0
  15. package/.taste-skill/before/desktop-page-02.jpg +0 -0
  16. package/.taste-skill/before/mobile-fold.jpg +0 -0
  17. package/.taste-skill/before/mobile-page-01.jpg +0 -0
  18. package/.taste-skill/before/report.json +2556 -0
  19. package/.taste-skill/before/tablet-fold.jpg +0 -0
  20. package/.taste-skill/before/tablet-page-01.jpg +0 -0
  21. package/.taste-skill/direction.json +510 -0
  22. package/.taste-skill/notes.md +84 -0
  23. package/.taste-skill/prod/desktop-fold.jpg +0 -0
  24. package/.taste-skill/prod/desktop-page-01.jpg +0 -0
  25. package/.taste-skill/prod/desktop-page-02.jpg +0 -0
  26. package/.taste-skill/prod/desktop-page-03.jpg +0 -0
  27. package/.taste-skill/prod/mobile-fold.jpg +0 -0
  28. package/.taste-skill/prod/mobile-page-01.jpg +0 -0
  29. package/.taste-skill/prod/mobile-page-02.jpg +0 -0
  30. package/.taste-skill/prod/report.json +1973 -0
  31. package/.taste-skill/prod/tablet-fold.jpg +0 -0
  32. package/.taste-skill/prod/tablet-page-01.jpg +0 -0
  33. package/.taste-skill/prod/tablet-page-02.jpg +0 -0
  34. package/.tmp-cem/custom-elements.json +13705 -0
  35. package/AUDIT.md +228 -0
  36. package/PLAN-AMELIORATION.md +220 -0
  37. package/build-infos.json +1 -1
  38. package/concorde-core.bundle.js +196 -196
  39. package/concorde-core.es.js +3854 -3572
  40. package/custom-elements-manifest.config.mjs +14 -0
  41. package/dist/concorde-core.bundle.js +196 -196
  42. package/dist/concorde-core.es.js +3854 -3572
  43. package/dist/img/archive/concorde-001-2cv.webp +0 -0
  44. package/dist/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  45. package/dist/img/archive/concorde-red-arrows-2002.webm +0 -0
  46. package/dist/img/archive/credits.json +28 -0
  47. package/docs/assets/index-Bb-_LRyY.js +12280 -0
  48. package/docs/index.html +1 -1
  49. package/index.html +27 -63
  50. package/package.json +44 -3
  51. package/public/img/archive/concorde-001-2cv.webp +0 -0
  52. package/public/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  53. package/public/img/archive/concorde-red-arrows-2002.webm +0 -0
  54. package/public/img/archive/credits.json +28 -0
  55. package/scripts/generate-sdui-catalog.mjs +250 -0
  56. package/scripts/generate-sdui-catalog.spec.ts +91 -0
  57. package/scripts/pre-build.mjs +15 -0
  58. package/src/core/components/functional/fetch/fetch.md +2 -2
  59. package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +5 -5
  60. package/src/core/components/functional/sdui/__fixtures__/descriptors.ts +251 -0
  61. package/src/core/components/functional/sdui/__snapshots__/sdui-action.spec.ts.snap +73 -0
  62. package/src/core/components/functional/sdui/__snapshots__/sdui-incremental.spec.ts.snap +50 -0
  63. package/src/core/components/functional/sdui/__snapshots__/sdui-partial.spec.ts.snap +50 -0
  64. package/src/core/components/functional/sdui/__snapshots__/sdui.regression.spec.ts.snap +461 -0
  65. package/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
  66. package/src/core/components/functional/sdui/component-catalog.json +3103 -0
  67. package/src/core/components/functional/sdui/component-catalog.spec.ts +23 -0
  68. package/src/core/components/functional/sdui/sdui-action.spec.ts +99 -0
  69. package/src/core/components/functional/sdui/sdui-dom-snapshot.ts +61 -0
  70. package/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
  71. package/src/core/components/functional/sdui/sdui-incremental.spec.ts +137 -0
  72. package/src/core/components/functional/sdui/sdui-partial.spec.ts +83 -0
  73. package/src/core/components/functional/sdui/sdui-partial.ts +19 -0
  74. package/src/core/components/functional/sdui/sdui-safe.spec.ts +188 -0
  75. package/src/core/components/functional/sdui/sdui-safe.ts +100 -0
  76. package/src/core/components/functional/sdui/sdui.md +122 -0
  77. package/src/core/components/functional/sdui/sdui.regression.spec.ts +64 -0
  78. package/src/core/components/functional/sdui/sdui.ts +442 -34
  79. package/src/core/components/functional/sdui/types.ts +49 -0
  80. package/src/core/components/ui/modal/modal.ts +14 -11
  81. package/src/docs/_getting-started/components.md +5 -0
  82. package/src/docs/_getting-started/theming.md +2 -2
  83. package/src/docs/code.ts +88 -75
  84. package/src/docs/components/docs-demo-sources.ts +16 -8
  85. package/src/docs/components/docs-lit-demo.ts +19 -37
  86. package/src/docs/docs.ts +5 -0
  87. package/src/docs/example/docs-boarding-pass-demo.ts +134 -0
  88. package/src/docs/example/docs-provider-keys.ts +12 -0
  89. package/src/docs/header/header.ts +233 -69
  90. package/src/docs/home/catalog.ts +44 -0
  91. package/src/docs/home/home.ts +513 -0
  92. package/src/docs/home/mach-stage.ts +389 -0
  93. package/src/docs/layout.ts +3 -1
  94. package/src/docs/navigation/components-index.ts +56 -0
  95. package/src/docs/navigation/navigation.ts +240 -232
  96. package/src/docs/navigation/pager.ts +67 -0
  97. package/src/docs/navigation/toc.ts +98 -0
  98. package/src/docs/search/docs-search.json +330 -20
  99. package/src/docs/search/markdown-renderer.ts +11 -3
  100. package/src/docs/shiki/index.ts +109 -0
  101. package/src/docs/tailwind/css/base/scrollbar.css +22 -0
  102. package/src/docs/tailwind/css/base/theme.css +96 -0
  103. package/src/docs/tailwind/css/base/typography.css +4 -0
  104. package/src/docs/tailwind/css/docs/boarding-pass.css +65 -0
  105. package/src/docs/tailwind/css/docs/content.css +32 -0
  106. package/src/docs/tailwind/css/docs/page.css +10 -0
  107. package/src/docs/tailwind/css/docs.css +9 -0
  108. package/src/docs/tailwind/css/home/hero.css +210 -0
  109. package/src/docs/tailwind/css/home/motion.css +84 -0
  110. package/src/docs/tailwind/css/home/sections.css +416 -0
  111. package/src/docs/tailwind/css/tailwind.css +7 -185
  112. package/src/tsconfig.json +113 -2
  113. package/src/tsconfig.tsbuildinfo +1 -1
  114. package/tailwind.config.js +8 -4
  115. package/docs/assets/index-wVZpLVYW.js +0 -12122
  116. package/docs/crawl/core/components/functional/date/date.html +0 -190
  117. package/docs/crawl/core/components/functional/fetch/fetch.html +0 -109
  118. package/docs/crawl/core/components/functional/if/if.html +0 -27
  119. package/docs/crawl/core/components/functional/jsonata/jsonata.html +0 -79
  120. package/docs/crawl/core/components/functional/list/list.html +0 -70
  121. package/docs/crawl/core/components/functional/mix/mix.html +0 -45
  122. package/docs/crawl/core/components/functional/queue/queue.html +0 -96
  123. package/docs/crawl/core/components/functional/router/router.html +0 -106
  124. package/docs/crawl/core/components/functional/sdui/sdui.html +0 -269
  125. package/docs/crawl/core/components/functional/states/states.html +0 -66
  126. package/docs/crawl/core/components/functional/submit/submit.html +0 -160
  127. package/docs/crawl/core/components/functional/subscriber/subscriber.html +0 -67
  128. package/docs/crawl/core/components/functional/value/value.html +0 -51
  129. package/docs/crawl/core/components/ui/alert/alert.html +0 -211
  130. package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +0 -131
  131. package/docs/crawl/core/components/ui/badge/badge.html +0 -197
  132. package/docs/crawl/core/components/ui/button/button.html +0 -150
  133. package/docs/crawl/core/components/ui/captcha/captcha.html +0 -112
  134. package/docs/crawl/core/components/ui/card/card.html +0 -253
  135. package/docs/crawl/core/components/ui/divider/divider.html +0 -144
  136. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +0 -73
  137. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +0 -266
  138. package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +0 -122
  139. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +0 -121
  140. package/docs/crawl/core/components/ui/form/input/input.html +0 -109
  141. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +0 -38
  142. package/docs/crawl/core/components/ui/form/radio/radio.html +0 -56
  143. package/docs/crawl/core/components/ui/form/select/select.html +0 -73
  144. package/docs/crawl/core/components/ui/form/switch/switch.html +0 -56
  145. package/docs/crawl/core/components/ui/form/textarea/textarea.html +0 -59
  146. package/docs/crawl/core/components/ui/group/group.html +0 -104
  147. package/docs/crawl/core/components/ui/icon/icon.html +0 -222
  148. package/docs/crawl/core/components/ui/image/image.html +0 -298
  149. package/docs/crawl/core/components/ui/link/link.html +0 -100
  150. package/docs/crawl/core/components/ui/loader/loader.html +0 -124
  151. package/docs/crawl/core/components/ui/menu/menu.html +0 -394
  152. package/docs/crawl/core/components/ui/modal/modal.html +0 -342
  153. package/docs/crawl/core/components/ui/pop/pop.html +0 -296
  154. package/docs/crawl/core/components/ui/progress/progress.html +0 -131
  155. package/docs/crawl/core/components/ui/table/table.html +0 -545
  156. package/docs/crawl/core/components/ui/theme/theme.html +0 -131
  157. package/docs/crawl/core/components/ui/toast/toast.html +0 -233
  158. package/docs/crawl/core/components/ui/tooltip/tooltip.html +0 -140
  159. package/docs/crawl/docs/_core-concept/dataFlow.html +0 -177
  160. package/docs/crawl/docs/_core-concept/overview.html +0 -66
  161. package/docs/crawl/docs/_core-concept/subscriber.html +0 -75
  162. package/docs/crawl/docs/_decorators/ancestor-attribute.html +0 -117
  163. package/docs/crawl/docs/_decorators/auto-subscribe.html +0 -202
  164. package/docs/crawl/docs/_decorators/bind.html +0 -141
  165. package/docs/crawl/docs/_decorators/get.html +0 -149
  166. package/docs/crawl/docs/_decorators/handle.html +0 -165
  167. package/docs/crawl/docs/_decorators/on-assign.html +0 -355
  168. package/docs/crawl/docs/_decorators/patch.html +0 -78
  169. package/docs/crawl/docs/_decorators/post.html +0 -139
  170. package/docs/crawl/docs/_decorators/publish.html +0 -61
  171. package/docs/crawl/docs/_decorators/put.html +0 -78
  172. package/docs/crawl/docs/_decorators/subscribe.html +0 -109
  173. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +0 -137
  174. package/docs/crawl/docs/_directives/sub.html +0 -93
  175. package/docs/crawl/docs/_getting-started/ai-agents.html +0 -173
  176. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +0 -100
  177. package/docs/crawl/docs/_getting-started/concorde-outside.html +0 -58
  178. package/docs/crawl/docs/_getting-started/create-a-component.html +0 -111
  179. package/docs/crawl/docs/_getting-started/my-first-component.html +0 -189
  180. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +0 -110
  181. package/docs/crawl/docs/_getting-started/pubsub.html +0 -62
  182. package/docs/crawl/docs/_getting-started/start.html +0 -76
  183. package/docs/crawl/docs/_getting-started/theming.html +0 -333
  184. package/docs/crawl/docs/_misc/api-configuration.html +0 -149
  185. package/docs/crawl/docs/_misc/dataProviderKey.html +0 -135
  186. package/docs/crawl/docs/_misc/docs-mock-api.html +0 -158
  187. package/docs/crawl/docs/_misc/dynamic-path.html +0 -180
  188. package/docs/crawl/docs/_misc/endpoint.html +0 -50
  189. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +0 -138
  190. package/docs/crawl/docs/_misc/html-integration.html +0 -48
  191. package/docs/crawl/hubs/decorators.html +0 -547
  192. package/docs/crawl/hubs/form-components.html +0 -381
  193. package/docs/crawl/hubs/remote-data.html +0 -452
  194. package/docs/crawl/index.html +0 -102
  195. package/docs/llms-full.txt +0 -7008
  196. package/docs/llms.txt +0 -97
  197. package/docs/sitemap.xml +0 -240
  198. package/docs/src/core/components/functional/date/date.md +0 -290
  199. package/docs/src/core/components/functional/fetch/fetch.md +0 -125
  200. package/docs/src/core/components/functional/if/if.md +0 -9
  201. package/docs/src/core/components/functional/jsonata/jsonata.md +0 -56
  202. package/docs/src/core/components/functional/list/list.md +0 -65
  203. package/docs/src/core/components/functional/mix/mix.md +0 -41
  204. package/docs/src/core/components/functional/queue/queue.md +0 -72
  205. package/docs/src/core/components/functional/router/router.md +0 -94
  206. package/docs/src/core/components/functional/sdui/default-library.json +0 -108
  207. package/docs/src/core/components/functional/sdui/example.json +0 -99
  208. package/docs/src/core/components/functional/sdui/sdui.md +0 -356
  209. package/docs/src/core/components/functional/states/states.md +0 -87
  210. package/docs/src/core/components/functional/submit/submit.md +0 -114
  211. package/docs/src/core/components/functional/subscriber/subscriber.md +0 -91
  212. package/docs/src/core/components/functional/value/value.md +0 -35
  213. package/docs/src/core/components/ui/alert/alert.md +0 -196
  214. package/docs/src/core/components/ui/alert-messages/alert-messages.md +0 -85
  215. package/docs/src/core/components/ui/badge/badge.md +0 -188
  216. package/docs/src/core/components/ui/button/button.md +0 -183
  217. package/docs/src/core/components/ui/captcha/captcha.md +0 -71
  218. package/docs/src/core/components/ui/card/card.md +0 -215
  219. package/docs/src/core/components/ui/divider/divider.md +0 -129
  220. package/docs/src/core/components/ui/form/checkbox/checkbox.md +0 -77
  221. package/docs/src/core/components/ui/form/fieldset/fieldset.md +0 -205
  222. package/docs/src/core/components/ui/form/form-actions/form-actions.md +0 -100
  223. package/docs/src/core/components/ui/form/form-layout/form-layout.md +0 -119
  224. package/docs/src/core/components/ui/form/input/input.md +0 -142
  225. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
  226. package/docs/src/core/components/ui/form/radio/radio.md +0 -57
  227. package/docs/src/core/components/ui/form/select/select.md +0 -71
  228. package/docs/src/core/components/ui/form/switch/switch.md +0 -57
  229. package/docs/src/core/components/ui/form/textarea/textarea.md +0 -65
  230. package/docs/src/core/components/ui/group/group.md +0 -75
  231. package/docs/src/core/components/ui/icon/icon.md +0 -214
  232. package/docs/src/core/components/ui/icon/icons.json +0 -1
  233. package/docs/src/core/components/ui/image/image.md +0 -233
  234. package/docs/src/core/components/ui/link/link.md +0 -81
  235. package/docs/src/core/components/ui/loader/loader.md +0 -112
  236. package/docs/src/core/components/ui/menu/menu.md +0 -370
  237. package/docs/src/core/components/ui/modal/modal.md +0 -235
  238. package/docs/src/core/components/ui/pop/pop.md +0 -294
  239. package/docs/src/core/components/ui/progress/progress.md +0 -109
  240. package/docs/src/core/components/ui/table/table.md +0 -431
  241. package/docs/src/core/components/ui/theme/theme.md +0 -122
  242. package/docs/src/core/components/ui/toast/toast.md +0 -216
  243. package/docs/src/core/components/ui/tooltip/tooltip.md +0 -124
  244. package/docs/src/docs/_core-concept/dataFlow.md +0 -88
  245. package/docs/src/docs/_core-concept/overview.md +0 -57
  246. package/docs/src/docs/_core-concept/subscriber.md +0 -75
  247. package/docs/src/docs/_decorators/ancestor-attribute.md +0 -128
  248. package/docs/src/docs/_decorators/auto-subscribe.md +0 -202
  249. package/docs/src/docs/_decorators/bind.md +0 -167
  250. package/docs/src/docs/_decorators/get.md +0 -162
  251. package/docs/src/docs/_decorators/handle.md +0 -175
  252. package/docs/src/docs/_decorators/on-assign.md +0 -390
  253. package/docs/src/docs/_decorators/patch.md +0 -70
  254. package/docs/src/docs/_decorators/post.md +0 -146
  255. package/docs/src/docs/_decorators/publish.md +0 -55
  256. package/docs/src/docs/_decorators/put.md +0 -70
  257. package/docs/src/docs/_decorators/subscribe.md +0 -100
  258. package/docs/src/docs/_decorators/wait-for-ancestors.md +0 -163
  259. package/docs/src/docs/_directives/sub.md +0 -91
  260. package/docs/src/docs/_getting-started/ai-agents.md +0 -76
  261. package/docs/src/docs/_getting-started/concorde-manual-install.md +0 -133
  262. package/docs/src/docs/_getting-started/concorde-outside.md +0 -33
  263. package/docs/src/docs/_getting-started/create-a-component.md +0 -139
  264. package/docs/src/docs/_getting-started/my-first-component.md +0 -236
  265. package/docs/src/docs/_getting-started/my-first-subscriber.md +0 -120
  266. package/docs/src/docs/_getting-started/pubsub.md +0 -37
  267. package/docs/src/docs/_getting-started/start.md +0 -47
  268. package/docs/src/docs/_getting-started/theming.md +0 -253
  269. package/docs/src/docs/_misc/api-configuration.md +0 -81
  270. package/docs/src/docs/_misc/dataProviderKey.md +0 -168
  271. package/docs/src/docs/_misc/docs-mock-api.md +0 -63
  272. package/docs/src/docs/_misc/dynamic-path.md +0 -71
  273. package/docs/src/docs/_misc/endpoint.md +0 -45
  274. package/docs/src/docs/_misc/formelement-subscriber-removal.md +0 -115
  275. package/docs/src/docs/_misc/html-integration.md +0 -15
  276. package/docs/src/docs/search/docs-search.json +0 -12242
  277. package/docs/src/tag-list.json +0 -1
  278. package/docs/src/tsconfig-model.json +0 -23
  279. package/docs/src/tsconfig.json +0 -1242
  280. package/src/docs/prism/index.ts +0 -6
  281. package/src/docs/prism/prism.css +0 -158
  282. package/src/docs/prism/prism.js +0 -1022
@@ -1,196 +0,0 @@
1
- # Alert
2
-
3
- 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.
4
-
5
- ## Basic example
6
-
7
- <sonic-code>
8
- <template>
9
- <sonic-alert status="error" label="Email error" text="This address is already in use" background></sonic-alert>
10
- </template>
11
- </sonic-code>
12
-
13
- ## Status
14
-
15
- Color and icon follow `status`. With no `status`, behavior is `default`.
16
-
17
- <sonic-code>
18
- <template>
19
- <div class="grid gap-4">
20
- <sonic-alert label="Default">This address is already in use.</sonic-alert>
21
- <sonic-alert status="success" label="Success">This address is already in use.</sonic-alert>
22
- <sonic-alert status="error" label="Error">This address is already in use.</sonic-alert>
23
- <sonic-alert status="warning" label="Warning">This address is already in use.</sonic-alert>
24
- <sonic-alert status="info" label="Info">This address is already in use.</sonic-alert>
25
- </div>
26
- </template>
27
- </sonic-code>
28
-
29
- ## Accessibility (`announce`)
30
-
31
- 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"`.
32
-
33
- `sonic-alert-messages` sets `announce` on every rendered alert.
34
-
35
- <sonic-code>
36
- <template>
37
- <sonic-alert announce status="success" label="Saved" text="Your changes were saved."></sonic-alert>
38
- </template>
39
- </sonic-code>
40
-
41
- ## Content and icon
42
-
43
- `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.
44
-
45
- <sonic-code>
46
- <template>
47
- <sonic-alert status="info" noIcon label="No icon" text="Informational message."></sonic-alert>
48
- </template>
49
- </sonic-code>
50
-
51
- ## Custom icon slot
52
-
53
- Project any markup into **`slot="icon"`** (emoji, image, custom component). Keep it decorative with `aria-hidden="true"` when the message text already conveys meaning.
54
-
55
- <sonic-code>
56
- <template>
57
- <sonic-alert status="success" label="Achievement unlocked" background>
58
- <span slot="icon" aria-hidden="true" class="text-lg leading-none">🎉</span>
59
- You unlocked a new badge.
60
- </sonic-alert>
61
- </template>
62
- </sonic-code>
63
-
64
- ## Sizes
65
-
66
- <sonic-code>
67
- <template>
68
- <div class="grid gap-4">
69
- <sonic-alert status="error" label="Email error" size="2xs">
70
- This address is already in use. Lorem ipsum dolor sit amet.
71
- </sonic-alert>
72
- <sonic-alert status="error" label="Email error" size="xs">
73
- This address is already in use. Lorem ipsum dolor sit amet.
74
- </sonic-alert>
75
- <sonic-alert status="error" label="Email error" size="sm">
76
- This address is already in use. Lorem ipsum dolor sit amet.
77
- </sonic-alert>
78
- <sonic-alert status="error" label="Email error">
79
- This address is already in use. Lorem ipsum dolor sit amet.
80
- </sonic-alert>
81
- <sonic-alert status="error" label="Email error" size="lg">
82
- This address is already in use. Lorem ipsum dolor sit amet.
83
- </sonic-alert>
84
- <sonic-alert status="error" label="Email error" size="xl">
85
- This address is already in use. Lorem ipsum dolor sit amet.
86
- </sonic-alert>
87
- <sonic-alert status="error" label="Email error" size="2xl">
88
- This address is already in use. Lorem ipsum dolor sit amet.
89
- </sonic-alert>
90
- </div>
91
- </template>
92
- </sonic-code>
93
-
94
- ## Alert with link
95
-
96
- Rich content in the slot (buttons, links).
97
-
98
- <sonic-code>
99
- <template>
100
- <sonic-alert status="info" label="New messages !">
101
- You have 2 unread messages<br />
102
- <div class="flex gap-2 mt-1">
103
- <sonic-button variant="outline" type="info" size="xs">See messages</sonic-button>
104
- <sonic-button variant="ghost" type="info" size="xs">Dismiss</sonic-button>
105
- </div>
106
- </sonic-alert>
107
- </template>
108
- </sonic-code>
109
-
110
- ## Background
111
-
112
- Tinted background from the `status` color (`color-mix` on `currentColor`).
113
-
114
- <sonic-code>
115
- <template>
116
- <div class="grid gap-4">
117
- <sonic-alert background label="Lorem ipsum dolor">This address is already in use.</sonic-alert>
118
- <sonic-alert status="success" background label="Lorem ipsum dolor">
119
- This address is already in use.
120
- </sonic-alert>
121
- <sonic-alert status="error" background label="Lorem ipsum dolor">
122
- This address is already in use.
123
- </sonic-alert>
124
- <sonic-alert status="warning" background label="Lorem ipsum dolor">
125
- This address is already in use.
126
- </sonic-alert>
127
- <sonic-alert status="info" background label="Lorem ipsum dolor">
128
- This address is already in use.
129
- </sonic-alert>
130
- </div>
131
- </template>
132
- </sonic-code>
133
-
134
- ## Dismissible
135
-
136
- `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.
137
-
138
- <sonic-code>
139
- <template>
140
- <sonic-alert status="info" class="mb-3" dismissible label="This address is already in use.">
141
- </sonic-alert>
142
- <sonic-alert class="mb-3" dismissible background label="Lorem ipsum dolor">
143
- This address is already in use.
144
- </sonic-alert>
145
- <sonic-alert status="success" class="mb-3" dismissible background label="Lorem ipsum dolor">
146
- This address is already in use.
147
- </sonic-alert>
148
- <sonic-alert status="error" class="mb-3" dismissible background label="Lorem ipsum dolor">
149
- This address is already in use.
150
- </sonic-alert>
151
- <sonic-alert status="warning" class="mb-3" dismissible background label="Lorem ipsum dolor">
152
- This address is already in use.
153
- </sonic-alert>
154
- <sonic-alert status="info" class="mb-3" dismissible background label="Lorem ipsum dolor">
155
- This address is already in use.
156
- </sonic-alert>
157
- </template>
158
- </sonic-code>
159
-
160
- ## Dismiss forever
161
-
162
- 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.
163
-
164
- <sonic-code>
165
- <template>
166
- <sonic-alert
167
- class="mb-3"
168
- dismissible
169
- background
170
- dismissForever
171
- label="Lorem ipsum dolor"
172
- id="addressUniqueId"
173
- >
174
- This address is already in use.
175
- </sonic-alert>
176
- </template>
177
- </sonic-code>
178
-
179
- ## API reference
180
-
181
- | Attribute | Values | Description |
182
- |----------|---------|-------------|
183
- | `status` | `default` · `info` · `success` · `warning` · `error` | Color and default icon |
184
- | `label` | string | Title (plain text) |
185
- | `text` | string | Short body (plain text), rendered before the slot |
186
- | `size` | `2xs` … `2xl` | Corner radius and typography |
187
- | `background` | boolean | Tinted background (`color-mix` on status color) |
188
- | `dismissible` | boolean | Close control; removes the element from the DOM |
189
- | `dismissForever` | boolean | Persists dismissal in `localStorage`; requires **`id`** |
190
- | `noIcon` | boolean | Hides the icon (including custom `icon` slot content) |
191
- | `announce` | boolean | `role="alert"` / `aria-live` for dynamically injected content |
192
-
193
- | Slot | Description |
194
- |------|-------------|
195
- | *(default)* | Message body (HTML, actions); rendered after `text` |
196
- | `icon` | Replaces the default `sonic-icon` |
@@ -1,85 +0,0 @@
1
- # Alert messages
2
-
3
- **`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.
4
-
5
- ## With submit result
6
-
7
- Bind **`dataProvider`** to the same publisher as **`submitResultDataProvider`**. API **`messages`** entries need **`type`**: **`public`**, plus **`content`** and optional **`status`** (`warning` · `success` · `error` · `info`).
8
-
9
- <sonic-code>
10
- <template>
11
- <sonic-scope
12
- serviceURL="/docs-mock-api"
13
- formDataProvider="submit-example"
14
- submitResultDataProvider="submit-example-result"
15
- >
16
- <sonic-alert-messages dataProvider="submit-example-result" background class="mb-4"></sonic-alert-messages>
17
- <div class="grid gap-4 max-w-md">
18
- <sonic-input name="email" type="email" label="Email" value=""></sonic-input>
19
- <sonic-input name="password" type="password" label="Password" value=""></sonic-input>
20
- <sonic-submit endPoint="api/register" onClick>
21
- <sonic-button type="primary">Submit (empty fields → error messages)</sonic-button>
22
- </sonic-submit>
23
- </div>
24
- </sonic-scope>
25
- </template>
26
- </sonic-code>
27
-
28
- ## Shared alert props
29
-
30
- **`size`** · **`background`** and **`noIcon`** apply to every rendered **`sonic-alert`** in the list.
31
-
32
- <sonic-code>
33
- <template>
34
- <sonic-button
35
- size="sm"
36
- variant="outline"
37
- class="mb-3"
38
- onclick="SonicPublisherManager.get('submit-example-result').set({ messages: [{ type: 'public', content: 'Compact inline feedback without icons.', status: 'info' }] })"
39
- >
40
- Load sample messages
41
- </sonic-button>
42
- <sonic-alert-messages
43
- dataProvider="submit-example-result"
44
- size="sm"
45
- background
46
- noIcon
47
- ></sonic-alert-messages>
48
- </template>
49
- </sonic-code>
50
-
51
- ## Message shape
52
-
53
- Example JSON on the result publisher (or API response merged into it):
54
-
55
- <sonic-code language="typescript">
56
- <template>
57
- {
58
- "messages": [
59
- {
60
- "type": "public",
61
- "content": "The product has been added to your cart",
62
- "status": "success"
63
- }
64
- ]
65
- }
66
- </template>
67
- </sonic-code>
68
-
69
- ## API reference
70
-
71
- | Attribute | Values | Description |
72
- |----------|---------|-------------|
73
- | `dataProvider` | publisher id | Source object; **`messages`** array is auto-filled via **Subscriber** |
74
- | `size` | `2xs` … `2xl` (default `md`) | Passed to each **`sonic-alert`** |
75
- | `background` | boolean | Tinted background on each alert |
76
- | `noIcon` | boolean | Hides icons on each alert |
77
- | `messages` | `Message[]` | Usually set by the publisher; each item uses **`content`** as alert **`text`** |
78
-
79
- | Message field | Values | Description |
80
- |---------------|---------|-------------|
81
- | `type` | `public` | Required for the message to render |
82
- | `content` | string | Alert body (**`text`** on **`sonic-alert`**) |
83
- | `status` | `warning` · `success` · `error` · `info` | Alert **`status`**; defaults to **`default`** when omitted |
84
-
85
- No slots — alerts are generated from **`messages`**.
@@ -1,188 +0,0 @@
1
- # Badge
2
-
3
- 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.
4
-
5
- ## Type
6
-
7
- `default` — subtle background (`base-100`). `neutral` — dark fill (`base-content`) with light text, useful on light backgrounds.
8
-
9
- <sonic-code>
10
- <template>
11
- <div class="flex flex-wrap gap-2">
12
- <sonic-badge>Default</sonic-badge>
13
- <sonic-badge type="primary">Primary</sonic-badge>
14
- <sonic-badge type="neutral">Neutral</sonic-badge>
15
- <sonic-badge type="warning">Warning</sonic-badge>
16
- <sonic-badge type="info">Info</sonic-badge>
17
- <sonic-badge type="success">Success</sonic-badge>
18
- <sonic-badge type="danger">Danger</sonic-badge>
19
- </div>
20
- </template>
21
- </sonic-code>
22
-
23
- ## Variant
24
-
25
- Default **`variant`** is filled. **`outline`** — border and text in the `type` color. **`ghost`** — text only, no padding (except in forced-colors mode).
26
-
27
- ### Outline
28
-
29
- <sonic-code>
30
- <template>
31
- <div class="flex items-center flex-wrap gap-3">
32
- <sonic-badge variant="outline">Default</sonic-badge>
33
- <sonic-badge variant="outline" type="primary">Primary</sonic-badge>
34
- <sonic-badge variant="outline" type="neutral">Neutral</sonic-badge>
35
- <sonic-badge variant="outline" type="warning">Warning</sonic-badge>
36
- <sonic-badge variant="outline" type="info">Info</sonic-badge>
37
- <sonic-badge variant="outline" type="success">Success</sonic-badge>
38
- <sonic-badge variant="outline" type="danger">Danger</sonic-badge>
39
- </div>
40
- </template>
41
- </sonic-code>
42
-
43
- ### Ghost
44
-
45
- <sonic-code>
46
- <template>
47
- <div class="flex items-center flex-wrap gap-3">
48
- <sonic-badge variant="ghost">Default</sonic-badge>
49
- <sonic-badge variant="ghost" type="primary">Primary</sonic-badge>
50
- <sonic-badge variant="ghost" type="neutral">Neutral</sonic-badge>
51
- <sonic-badge variant="ghost" type="warning">Warning</sonic-badge>
52
- <sonic-badge variant="ghost" type="info">Info</sonic-badge>
53
- <sonic-badge variant="ghost" type="success">Success</sonic-badge>
54
- <sonic-badge variant="ghost" type="danger">Danger</sonic-badge>
55
- </div>
56
- </template>
57
- </sonic-code>
58
-
59
- ## Size
60
-
61
- Default size is `md` (omit the `size` attribute). Typography and padding follow `sonic-button`.
62
-
63
- <sonic-code>
64
- <template>
65
- <div class="flex flex-wrap items-center gap-2">
66
- <sonic-badge size="2xs">2Xs</sonic-badge>
67
- <sonic-badge size="xs">Xs</sonic-badge>
68
- <sonic-badge size="sm">Sm</sonic-badge>
69
- <sonic-badge>Md</sonic-badge>
70
- <sonic-badge size="lg">Lg</sonic-badge>
71
- <sonic-badge size="xl">Xl</sonic-badge>
72
- <sonic-badge size="2xl">2Xl</sonic-badge>
73
- </div>
74
- </template>
75
- </sonic-code>
76
-
77
- ## Prefix and suffix slots
78
-
79
- Icons or short text before / after the main label.
80
-
81
- <sonic-code>
82
- <template>
83
- <sonic-badge type="info" size="sm">
84
- <sonic-icon slot="prefix" name="info-empty" library="iconoir"></sonic-icon>
85
- Info
86
- </sonic-badge>
87
- <sonic-badge type="success">
88
- Verified
89
- <sonic-icon slot="suffix" name="check" library="iconoir"></sonic-icon>
90
- </sonic-badge>
91
- </template>
92
- </sonic-code>
93
-
94
- ## Empty badges
95
-
96
- Badge with no text (visual dot). `min-width` / `min-height` keep a readable shape.
97
-
98
- <sonic-code>
99
- <template>
100
- <div class="flex items-center flex-wrap gap-3">
101
- <sonic-badge type="danger" size="2xs"></sonic-badge>
102
- <sonic-badge type="danger" size="xs"></sonic-badge>
103
- <sonic-badge type="danger" size="sm"></sonic-badge>
104
- <sonic-badge type="danger"></sonic-badge>
105
- <sonic-badge type="danger" size="lg"></sonic-badge>
106
- <sonic-badge type="danger" size="xl"></sonic-badge>
107
- <sonic-badge type="danger" size="2xl"></sonic-badge>
108
- </div>
109
- </template>
110
- </sonic-code>
111
-
112
- ## Ellipsis
113
-
114
- With `ellipsis`, long labels truncate. The parent must constrain width (`max-width`, grid, etc.).
115
-
116
- <sonic-code>
117
- <template>
118
- <div class="grid grid-cols-2 gap-4 max-w-xl">
119
- <sonic-badge ellipsis size="sm" variant="outline">
120
- <sonic-icon slot="prefix" name="info-empty" library="iconoir"></sonic-icon>
121
- Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod.
122
- </sonic-badge>
123
- <sonic-badge ellipsis size="sm">
124
- <sonic-icon slot="prefix" name="info-empty" library="iconoir"></sonic-icon>
125
- Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod.
126
- </sonic-badge>
127
- </div>
128
- </template>
129
- </sonic-code>
130
-
131
- ## Badge in button
132
-
133
- Count inside a button (`slot="suffix"`) or a badge absolutely positioned on a button / icon.
134
-
135
- <sonic-code>
136
- <template>
137
- <div class="flex flex-wrap gap-4 items-center">
138
- <sonic-button type="default">
139
- Messages <sonic-badge slot="suffix" type="danger" size="xs">5</sonic-badge>
140
- </sonic-button>
141
- <div class="relative inline-block">
142
- <sonic-button type="success" class="relative">My account</sonic-button>
143
- <sonic-badge
144
- type="danger"
145
- size="xs"
146
- class="absolute right-1 top-0 pe-none transform -translate-y-1/2"
147
- >12</sonic-badge
148
- >
149
- </div>
150
- <div class="relative inline-block">
151
- <sonic-button type="neutral" shape="circle" variant="outline">
152
- <sonic-icon library="iconoir" name="user"></sonic-icon>
153
- </sonic-button>
154
- <sonic-badge
155
- type="danger"
156
- size="xs"
157
- class="absolute right-1 bottom-1 pe-none transform translate-y-1/2 translate-x-1/2"
158
- >33</sonic-badge
159
- >
160
- </div>
161
- <div class="relative inline-block">
162
- <sonic-button type="neutral" shape="circle" variant="outline">
163
- <sonic-icon library="iconoir" name="user"></sonic-icon>
164
- </sonic-button>
165
- <sonic-badge
166
- type="danger"
167
- size="xs"
168
- class="absolute right-2 bottom-2 pe-none transform translate-y-1/2 translate-x-1/2"
169
- ></sonic-badge>
170
- </div>
171
- </div>
172
- </template>
173
- </sonic-code>
174
-
175
- ## API reference
176
-
177
- | Attribute | Values | Description |
178
- |----------|---------|-------------|
179
- | `type` | `default` (default) · `primary` · `neutral` · `warning` · `info` · `success` · `danger` | Semantic color (`--sc-*` tokens) |
180
- | `variant` | `default` (default) · `outline` · `ghost` | Filled, bordered, or text-only |
181
- | `size` | `2xs` … `2xl` (default `md`) | Typography and padding (aligned with **`sonic-button`**) |
182
- | `ellipsis` | boolean | Single-line truncation; parent must constrain width |
183
-
184
- | Slot | Description |
185
- |------|-------------|
186
- | *(default)* | Main label |
187
- | `prefix` | Icon or short text before the label |
188
- | `suffix` | Icon or short text after the label |
@@ -1,183 +0,0 @@
1
- # Button
2
-
3
- ## Type
4
- <sonic-code>
5
- <template>
6
- <div class="flex flex-wrap gap-2">
7
- <sonic-button>Default</sonic-button>
8
- <sonic-button type="primary">Primary</sonic-button>
9
- <sonic-button type="neutral">Neutral</sonic-button>
10
- <sonic-button type="warning">Warning</sonic-button>
11
- <sonic-button type="info">Info</sonic-button>
12
- <sonic-button type="success">Success</sonic-button>
13
- <sonic-button type="danger">Danger</sonic-button>
14
- <sonic-button type="custom" style="--sc-btn-custom-color: #fde68a; --sc-btn-custom-bg: #5b21b6">Custom</sonic-button>
15
- </div>
16
- </template>
17
- </sonic-code>
18
-
19
- ## Outline
20
- <sonic-code>
21
- <template>
22
- <div class="flex flex-wrap gap-2">
23
- <sonic-button variant="outline">Default</sonic-button>
24
- <sonic-button variant="outline" type="primary">Primary</sonic-button>
25
- <sonic-button variant="outline" type="neutral">Neutral</sonic-button>
26
- <sonic-button variant="outline" type="warning">Warning</sonic-button>
27
- <sonic-button variant="outline" type="info">Info</sonic-button>
28
- <sonic-button variant="outline" type="success">Success</sonic-button>
29
- <sonic-button variant="outline" type="danger">Danger</sonic-button>
30
- <sonic-button variant="outline" type="custom" style="--sc-btn-custom-bg: #5b21b6">Custom</sonic-button>
31
- </div>
32
- </template>
33
- </sonic-code>
34
-
35
- ## Variant
36
- <sonic-code>
37
- <template>
38
- <sonic-button variant="default">Default</sonic-button>
39
- <sonic-button variant="outline">Outline</sonic-button>
40
- <sonic-button variant="ghost">Ghost</sonic-button>
41
- <sonic-button variant="link">Link</sonic-button>
42
- <sonic-button variant="unstyled">Unstyled</sonic-button>
43
- </template>
44
- </sonic-code>
45
-
46
- ## Size
47
- <sonic-code>
48
- <template>
49
- <sonic-button size="2xs">2Xs button</sonic-button>
50
- <sonic-button size="xs">Xs button</sonic-button>
51
- <sonic-button size="sm">Sm button</sonic-button>
52
- <sonic-button size="md">Md button</sonic-button>
53
- <sonic-button>Default button</sonic-button>
54
- <sonic-button size="lg">Lg button</sonic-button>
55
- <sonic-button size="xl">Xl button</sonic-button>
56
- <sonic-button size="2xl">2Xl button</sonic-button>
57
- </template>
58
- </sonic-code>
59
-
60
- ## Shape
61
- <sonic-code>
62
- <template>
63
- <sonic-button shape="circle"> 😂 </sonic-button>
64
- <sonic-button shape="square"> 🚀 </sonic-button>
65
- </template>
66
- </sonic-code>
67
-
68
- ## Loading
69
- The length of the button depends on the size of its content
70
- <sonic-code>
71
- <template>
72
- <sonic-button loading></sonic-button>
73
- <sonic-button loading>Loading button</sonic-button>
74
- <sonic-button loading><span slot="prefix">🚀</span>Loading with prefix<span slot="suffix">😂</span></sonic-button>
75
- </template>
76
- </sonic-code>
77
-
78
- ## Swap
79
- <sonic-code>
80
- <template>
81
- <sonic-button formDataProvider="button_swap_example" name="youpi" value="youpla" type="primary" shape="circle" variant="outline" class="mr-4">
82
- <sonic-icon library="iconoir" swap="on" name="eye-empty"></sonic-icon>
83
- <sonic-icon library="iconoir" swap="off" name="eye-off"></sonic-icon>
84
- </sonic-button>
85
- <sonic-button formDataProvider="button_swap_example" name="youpi" value="youpla" type="primary" variant="outline">
86
- <sonic-icon library="iconoir" swap="on" slot="prefix" name="eye-empty"></sonic-icon>
87
- <sonic-icon library="iconoir" swap="off" slot="prefix" name="eye-off"></sonic-icon>
88
- Révélez
89
- <span swap="off">...</span>
90
- <span swap="on">moi !</span>
91
- </sonic-button>
92
- </template>
93
- </sonic-code>
94
-
95
- ## Reset
96
- <sonic-code>
97
- <template>
98
- <div formDataProvider="button-reset-demo" class="mb-2">
99
- <sonic-checkbox name="aChexbox" value="AValueToSet">Set A value</sonic-checkbox><br>
100
- <sonic-button reset>Reset current formDataProvider</sonic-button>
101
- </div>
102
- <sonic-button reset="button-reset-demo">Reset formDataProvider by name</sonic-button>
103
- </template>
104
- </sonic-code>
105
-
106
-
107
- ## GoBack
108
- <sonic-code>
109
- <template>
110
- <sonic-button goBack type="primary" variant="outline" class="mr-4">
111
- <sonic-icon library="iconoir" slot="prefix" name="arrow-left"></sonic-icon>
112
- Retour classique
113
- </sonic-button>
114
- <sonic-button goBack="http://la-billetterie.net" type="primary" variant="outline" class="mr-4">
115
- <sonic-icon library="iconoir" slot="prefix" name="arrow-left"></sonic-icon>
116
- Retour url prédéfinie
117
- </sonic-button>
118
- </template>
119
- </sonic-code>
120
-
121
- ## Button with icon
122
- <sonic-code>
123
- <template>
124
- <sonic-button goBack type="primary" variant="outline" class="mr-4">
125
- <sonic-icon library="iconoir" slot="prefix" name="arrow-right" ></sonic-icon>
126
- Button with icon
127
- </sonic-button>
128
- </template>
129
- </sonic-code>
130
-
131
-
132
- ## Button group
133
- <sonic-code>
134
- <template>
135
- <sonic-group label="Code promo" class="mr-4">
136
- <sonic-input placeholder="Entrez votre code ici..."></sonic-input>
137
- <sonic-button type="primary" shape="square">
138
- <sonic-icon library="iconoir" library="iconoir" name="gift"></sonic-icon>
139
- </sonic-button>
140
- </sonic-group>
141
- <sonic-divider size="lg"></sonic-divider>
142
- <div class="text-lg mb-2">Choose a subscription</div>
143
- <sonic-group formDataProvider="subscriptionData">
144
- <sonic-button radio minWidth="10rem" name="subscription" value="standard" type="default"
145
- >😎 Standard</sonic-button
146
- >
147
- <sonic-button radio minWidth="10rem" name="subscription" value="premium" type="default">⭐ Premium</sonic-button>
148
- <sonic-button radio minWidth="10rem" name="subscription" value="diamond" type="default">💎 Diamond</sonic-button>
149
- </sonic-group>
150
- </template>
151
- </sonic-code>
152
-
153
-
154
- ## Aria-label
155
- <sonic-code>
156
- <template>
157
- <sonic-button data-aria-label="Custom aria label" type="primary" >
158
- Button with aria label
159
- </sonic-button>
160
- <sonic-button data-aria-label="Custom aria label" href="https://google.fr" type="primary" >
161
- Button link with aria label
162
- </sonic-button>
163
- </template>
164
- </sonic-code>
165
-
166
-
167
- ## Custom styles & active states with tailwind
168
- <sonic-code>
169
- <template>
170
- <div formDataProvider="subscriptionData2">
171
- <sonic-button
172
- class="bg-neutral-100 transition-all text-center text-lg text-neutral-400 rounded-md min-w-[8rem] [&[active]]:text-danger-content [&[active]]:min-w-[13rem] [&[active]]:bg-danger [&[active]]:font-black [&[active]]:rounded-full"
173
- variant="unstyled"
174
- checkable unique
175
- name="subscription"
176
- value="premium"
177
- type="default">
178
- <span swap="off" class="inline-block py-2 px-3" >subscribe</span>
179
- <span swap="on" class="inline-block py-2 px-3" >⭐ Premium</span>
180
- </sonic-button>
181
- </div>
182
- </template>
183
- </sonic-code>