@supersoniks/concorde 5.1.2 → 5.1.3-immutable.2

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 (497) hide show
  1. package/.agents/skills/concorde-docs/SKILL.md +1 -1
  2. package/.claude/skills +1 -0
  3. package/.github/workflows/ci.yml +21 -0
  4. package/.github-export-ignore +30 -0
  5. package/CONTRIBUTING.md +59 -0
  6. package/DEV.md +54 -0
  7. package/LICENSE +21 -0
  8. package/OPEN_SOURCE_CHECKPOINT.md +133 -0
  9. package/README.md +1 -1
  10. package/ai/README.md +29 -41
  11. package/ai/skills/concorde/SKILL.md +54 -324
  12. package/ai/skills/concorde/rules/composition.md +32 -0
  13. package/ai/skills/concorde/rules/data.md +47 -0
  14. package/ai/skills/concorde/rules/http.md +25 -0
  15. package/ai/skills/concorde/rules/lists-forms.md +35 -0
  16. package/ai/skills/concorde/rules/styling.md +46 -0
  17. package/ai/skills/concorde/rules/troubleshooting.md +45 -0
  18. package/build-infos.json +1 -1
  19. package/concorde-core.bundle.js +177 -177
  20. package/concorde-core.es.js +5183 -5018
  21. package/custom-elements-manifest.public.config.mjs +8 -0
  22. package/{.tmp-cem/custom-elements.json → custom-elements.json} +11722 -8868
  23. package/dist/concorde-core.bundle.js +177 -177
  24. package/dist/concorde-core.es.js +5183 -5018
  25. package/dist/docs-mock-api-sw.js +58 -223
  26. package/dist/docs-mock-api-sw.js.map +4 -4
  27. package/dist/img/og-concorde.jpg +0 -0
  28. package/dist/robots.txt +11 -10
  29. package/docs/assets/index-CD4WyL6o.css +1 -0
  30. package/docs/assets/index-D_alEsng.js +12122 -0
  31. package/docs/crawl/core/components/functional/date/date.html +190 -0
  32. package/docs/crawl/core/components/functional/fetch/fetch.html +109 -0
  33. package/docs/crawl/core/components/functional/if/if.html +27 -0
  34. package/docs/crawl/core/components/functional/jsonata/jsonata.html +79 -0
  35. package/docs/crawl/core/components/functional/list/list.html +70 -0
  36. package/docs/crawl/core/components/functional/mix/mix.html +45 -0
  37. package/docs/crawl/core/components/functional/queue/queue.html +96 -0
  38. package/docs/crawl/core/components/functional/router/router.html +106 -0
  39. package/docs/{core → crawl/core}/components/functional/sdui/sdui-extension-points.html +8 -9
  40. package/docs/crawl/core/components/functional/sdui/sdui.html +368 -0
  41. package/docs/crawl/core/components/functional/states/states.html +66 -0
  42. package/docs/crawl/core/components/functional/submit/submit.html +160 -0
  43. package/docs/{core → crawl/core}/components/functional/subscriber/subscriber.html +5 -6
  44. package/docs/crawl/core/components/functional/value/value.html +51 -0
  45. package/docs/{core → crawl/core}/components/ui/alert/alert.html +63 -53
  46. package/docs/{core → crawl/core}/components/ui/alert-messages/alert-messages.html +5 -6
  47. package/docs/{core → crawl/core}/components/ui/badge/badge.html +33 -33
  48. package/docs/crawl/core/components/ui/button/button.html +150 -0
  49. package/docs/crawl/core/components/ui/captcha/captcha.html +112 -0
  50. package/docs/{core → crawl/core}/components/ui/card/card.html +11 -12
  51. package/docs/{core → crawl/core}/components/ui/divider/divider.html +14 -14
  52. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +73 -0
  53. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +266 -0
  54. package/docs/{core → crawl/core}/components/ui/form/form-actions/form-actions.html +23 -23
  55. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +121 -0
  56. package/docs/crawl/core/components/ui/form/input/input.html +109 -0
  57. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +38 -0
  58. package/docs/crawl/core/components/ui/form/radio/radio.html +56 -0
  59. package/docs/crawl/core/components/ui/form/select/select.html +73 -0
  60. package/docs/crawl/core/components/ui/form/switch/switch.html +56 -0
  61. package/docs/crawl/core/components/ui/form/textarea/textarea.html +59 -0
  62. package/docs/crawl/core/components/ui/group/group.html +104 -0
  63. package/docs/{core → crawl/core}/components/ui/icon/icon.html +9 -10
  64. package/docs/crawl/core/components/ui/image/image.html +298 -0
  65. package/docs/{core → crawl/core}/components/ui/link/link.html +11 -12
  66. package/docs/crawl/core/components/ui/loader/loader.html +124 -0
  67. package/docs/{core → crawl/core}/components/ui/menu/menu.html +33 -34
  68. package/docs/crawl/core/components/ui/modal/modal.html +342 -0
  69. package/docs/crawl/core/components/ui/pop/pop.html +296 -0
  70. package/docs/{core → crawl/core}/components/ui/progress/progress.html +7 -8
  71. package/docs/crawl/core/components/ui/table/table.html +545 -0
  72. package/docs/crawl/core/components/ui/theme/theme.html +131 -0
  73. package/docs/crawl/core/components/ui/toast/toast.html +233 -0
  74. package/docs/crawl/core/components/ui/tooltip/tooltip.html +140 -0
  75. package/docs/{docs/getting-started → crawl/docs/_core-concept}/dataFlow.html +29 -26
  76. package/docs/crawl/docs/_core-concept/overview.html +66 -0
  77. package/docs/crawl/docs/_core-concept/subscriber.html +75 -0
  78. package/docs/crawl/docs/_decorators/ancestor-attribute.html +117 -0
  79. package/docs/crawl/docs/_decorators/auto-subscribe.html +202 -0
  80. package/docs/crawl/docs/_decorators/bind.html +141 -0
  81. package/docs/crawl/docs/_decorators/get.html +149 -0
  82. package/docs/crawl/docs/_decorators/handle.html +165 -0
  83. package/docs/crawl/docs/_decorators/on-assign.html +355 -0
  84. package/docs/crawl/docs/_decorators/patch.html +78 -0
  85. package/docs/crawl/docs/_decorators/post.html +139 -0
  86. package/docs/crawl/docs/_decorators/publish.html +61 -0
  87. package/docs/crawl/docs/_decorators/put.html +78 -0
  88. package/docs/crawl/docs/_decorators/subscribe.html +109 -0
  89. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +137 -0
  90. package/docs/crawl/docs/_directives/sub.html +93 -0
  91. package/docs/{docs/getting-started → crawl/docs/_getting-started}/ai-agents.html +11 -12
  92. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +100 -0
  93. package/docs/crawl/docs/_getting-started/concorde-outside.html +58 -0
  94. package/docs/{docs/getting-started → crawl/docs/_getting-started}/create-a-component.html +14 -11
  95. package/docs/{docs/getting-started → crawl/docs/_getting-started}/my-first-component.html +22 -13
  96. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +110 -0
  97. package/docs/crawl/docs/_getting-started/pubsub.html +62 -0
  98. package/docs/crawl/docs/_getting-started/start.html +76 -0
  99. package/docs/{docs/getting-started → crawl/docs/_getting-started}/theming.html +9 -10
  100. package/docs/{docs/misc → crawl/docs/_misc}/api-configuration.html +18 -18
  101. package/docs/{docs/misc → crawl/docs/_misc}/dataProviderKey.html +11 -12
  102. package/docs/{docs/misc → crawl/docs/_misc}/docs-mock-api.html +28 -25
  103. package/docs/{docs/misc → crawl/docs/_misc}/dynamic-path.html +15 -16
  104. package/docs/{docs/misc → crawl/docs/_misc}/endpoint.html +15 -16
  105. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
  106. package/docs/{docs/misc → crawl/docs/_misc}/html-integration.html +15 -12
  107. package/docs/crawl/hubs/decorators.html +547 -0
  108. package/docs/crawl/hubs/form-components.html +381 -0
  109. package/docs/crawl/hubs/remote-data.html +452 -0
  110. package/docs/crawl/index.html +103 -0
  111. package/docs/docs-mock-api-sw.js +223 -58
  112. package/docs/docs-mock-api-sw.js.map +4 -4
  113. package/docs/index.html +68 -95
  114. package/docs/llms-full.txt +3610 -2231
  115. package/docs/llms.txt +86 -94
  116. package/docs/robots.txt +10 -11
  117. package/docs/sitemap.xml +84 -78
  118. package/docs/src/core/components/functional/date/date.md +231 -91
  119. package/docs/src/core/components/functional/fetch/fetch.md +83 -66
  120. package/docs/src/core/components/functional/if/if.md +3 -28
  121. package/docs/src/core/components/functional/jsonata/jsonata.md +37 -42
  122. package/docs/src/core/components/functional/list/list.md +43 -99
  123. package/docs/src/core/components/functional/mix/mix.md +26 -31
  124. package/docs/src/core/components/functional/queue/queue.md +61 -40
  125. package/docs/src/core/components/functional/router/router.md +65 -64
  126. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  127. package/docs/src/core/components/functional/sdui/component-catalog.json +1 -1
  128. package/docs/src/core/components/functional/sdui/example.json +86 -19
  129. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  130. package/docs/src/core/components/functional/sdui/sdui.md +358 -187
  131. package/docs/src/core/components/functional/states/states.md +61 -86
  132. package/docs/src/core/components/functional/submit/submit.md +72 -64
  133. package/docs/src/core/components/functional/value/value.md +22 -34
  134. package/docs/src/core/components/ui/alert/alert.md +58 -48
  135. package/docs/src/core/components/ui/badge/badge.md +34 -27
  136. package/docs/src/core/components/ui/button/button.md +106 -139
  137. package/docs/src/core/components/ui/captcha/captcha.md +32 -17
  138. package/docs/src/core/components/ui/card/card.md +6 -6
  139. package/docs/src/core/components/ui/divider/divider.md +11 -8
  140. package/docs/src/core/components/ui/form/checkbox/checkbox.md +42 -90
  141. package/docs/src/core/components/ui/form/fieldset/fieldset.md +75 -31
  142. package/docs/src/core/components/ui/form/form-actions/form-actions.md +16 -14
  143. package/docs/src/core/components/ui/form/form-layout/form-layout.md +29 -19
  144. package/docs/src/core/components/ui/form/input/input.md +95 -95
  145. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +29 -0
  146. package/docs/src/core/components/ui/form/radio/radio.md +34 -55
  147. package/docs/src/core/components/ui/form/select/select.md +45 -60
  148. package/docs/src/core/components/ui/form/switch/switch.md +34 -57
  149. package/docs/src/core/components/ui/form/textarea/textarea.md +38 -55
  150. package/docs/src/core/components/ui/group/group.md +33 -35
  151. package/docs/src/core/components/ui/icon/icon.md +4 -4
  152. package/docs/src/core/components/ui/image/image.md +107 -41
  153. package/docs/src/core/components/ui/link/link.md +6 -6
  154. package/docs/src/core/components/ui/loader/loader.md +55 -30
  155. package/docs/src/core/components/ui/menu/menu.md +27 -27
  156. package/docs/src/core/components/ui/modal/modal.md +96 -72
  157. package/docs/src/core/components/ui/pop/pop.md +158 -80
  158. package/docs/src/core/components/ui/progress/progress.md +2 -2
  159. package/docs/src/core/components/ui/table/table.md +255 -91
  160. package/docs/src/core/components/ui/theme/theme.md +36 -11
  161. package/docs/src/core/components/ui/toast/toast.md +117 -48
  162. package/docs/src/core/components/ui/tooltip/tooltip.md +62 -27
  163. package/docs/{docs/getting-started → src/docs/_core-concept}/dataFlow.md +18 -17
  164. package/docs/src/docs/_core-concept/overview.md +57 -0
  165. package/docs/src/docs/_core-concept/subscriber.md +75 -0
  166. package/docs/src/docs/_decorators/ancestor-attribute.md +128 -0
  167. package/docs/src/docs/_decorators/auto-subscribe.md +202 -0
  168. package/docs/src/docs/_decorators/bind.md +167 -0
  169. package/docs/src/docs/_decorators/get.md +162 -0
  170. package/docs/src/docs/_decorators/handle.md +175 -0
  171. package/docs/src/docs/_decorators/on-assign.md +390 -0
  172. package/docs/src/docs/_decorators/patch.md +70 -0
  173. package/docs/src/docs/_decorators/post.md +146 -0
  174. package/docs/src/docs/_decorators/publish.md +55 -0
  175. package/docs/src/docs/_decorators/put.md +70 -0
  176. package/docs/src/docs/_decorators/subscribe.md +100 -0
  177. package/docs/src/docs/_decorators/wait-for-ancestors.md +163 -0
  178. package/docs/src/docs/_directives/sub.md +91 -0
  179. package/docs/src/docs/{getting-started → _getting-started}/ai-agents.md +3 -3
  180. package/docs/src/docs/_getting-started/concorde-manual-install.md +133 -0
  181. package/docs/src/docs/_getting-started/concorde-outside.md +33 -0
  182. package/docs/{docs/getting-started → src/docs/_getting-started}/create-a-component.md +6 -3
  183. package/docs/src/docs/{getting-started → _getting-started}/my-first-component.md +14 -5
  184. package/docs/src/docs/_getting-started/my-first-subscriber.md +120 -0
  185. package/docs/src/docs/_getting-started/pubsub.md +37 -0
  186. package/docs/src/docs/{getting-started → _getting-started}/start.md +13 -1
  187. package/docs/src/docs/{getting-started → _getting-started}/theming.md +2 -2
  188. package/docs/src/docs/{misc → _misc}/api-configuration.md +12 -10
  189. package/docs/src/docs/{misc → _misc}/dataProviderKey.md +4 -4
  190. package/docs/{docs/misc → src/docs/_misc}/docs-mock-api.md +13 -12
  191. package/docs/{docs/misc → src/docs/_misc}/dynamic-path.md +8 -8
  192. package/docs/{docs/misc → src/docs/_misc}/endpoint.md +8 -8
  193. package/docs/src/docs/_misc/formelement-subscriber-removal.md +115 -0
  194. package/docs/{docs/misc → src/docs/_misc}/html-integration.md +5 -4
  195. package/docs/src/docs/search/docs-search.json +4375 -2420
  196. package/docs/src/tsconfig.declarations.json +22 -0
  197. package/docs/src/tsconfig.emit.json +23 -0
  198. package/docs/src/tsconfig.json +2 -23
  199. package/gitlab/job_github_mirror.sh +39 -0
  200. package/index.html +89 -0
  201. package/package.json +22 -4
  202. package/public/img/og-concorde.jpg +0 -0
  203. package/scripts/ai-init.mjs +104 -379
  204. package/scripts/ai-init.test.mjs +81 -239
  205. package/scripts/docs-markdown-vite-plugin.ts +11 -5
  206. package/scripts/docs-public-url.mjs +6 -0
  207. package/scripts/docs.htaccess +7 -0
  208. package/scripts/generate-cem.mjs +244 -0
  209. package/scripts/generate-cem.test.mjs +122 -0
  210. package/scripts/generate-crawl-docs.mjs +29 -5
  211. package/scripts/generate-sdui-catalog.mjs +11 -10
  212. package/scripts/github-export.mjs +150 -0
  213. package/scripts/post-build-docs.js +3 -0
  214. package/scripts/post-build.mjs +0 -0
  215. package/scripts/pre-publish.mjs +2 -1
  216. package/scripts/site-pages.mjs +212 -0
  217. package/scripts/site-pages.test.mjs +116 -0
  218. package/site-pages/about.md +22 -0
  219. package/site-pages/privacy.md +32 -0
  220. package/src/core/components/functional/date/date.md +1 -1
  221. package/src/core/components/functional/example/example.ts +3 -1
  222. package/src/core/components/functional/if/if.ts +0 -0
  223. package/src/core/components/functional/list/list.demo.ts +0 -0
  224. package/src/core/components/functional/list/list.md +6 -2
  225. package/src/core/components/functional/list/list.ts +17 -4
  226. package/src/core/components/functional/mix/mix.md +0 -0
  227. package/src/core/components/functional/router/router.demo.ts +0 -0
  228. package/src/core/components/functional/router/router.ts +0 -0
  229. package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +0 -0
  230. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  231. package/src/core/components/functional/sdui/component-catalog.json +2 -2
  232. package/src/core/components/functional/sdui/example.json +0 -0
  233. package/src/core/components/functional/sdui/sdui-immutable.spec.ts +74 -0
  234. package/src/core/components/functional/sdui/sdui.ts +33 -8
  235. package/src/core/components/functional/sdui/types.ts +0 -0
  236. package/src/core/components/functional/states/states.ts +0 -0
  237. package/src/core/components/functional/submit/submit.spec.ts +60 -0
  238. package/src/core/components/functional/submit/submit.ts +6 -3
  239. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  240. package/src/core/components/functional/value/value.md +0 -0
  241. package/src/core/components/functional/value/value.ts +0 -0
  242. package/src/core/components/ui/_css/size.ts +0 -0
  243. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  244. package/src/core/components/ui/card/card.md +1 -1
  245. package/src/core/components/ui/form/input/input.md +19 -1
  246. package/src/core/components/ui/form/input/input.ts +8 -2
  247. package/src/core/components/ui/form/radio/radio.md +14 -0
  248. package/src/core/components/ui/image/image.md +17 -17
  249. package/src/core/components/ui/modal/modal.md +2 -2
  250. package/src/core/decorators/subscriber/bind.ts +9 -14
  251. package/src/core/decorators/subscriber/subscribe.ts +15 -9
  252. package/src/core/decorators/subscriber/subscribe.type-test.ts +14 -5
  253. package/src/core/mixins/Subscriber.ts +0 -0
  254. package/src/core/utils/DataBindObserver.ts +0 -0
  255. package/src/core/utils/Objects.ts +0 -0
  256. package/src/core/utils/PublisherProxy.ts +166 -125
  257. package/src/core/utils/deepReadonly.spec.ts +66 -0
  258. package/src/core/utils/deepReadonly.ts +71 -0
  259. package/src/core/utils/immutableValue.spec.ts +58 -0
  260. package/src/core/utils/immutableValue.ts +116 -0
  261. package/src/core/utils/nestedDotForm.spec.ts +88 -0
  262. package/src/core/utils/publisherImmutable.spec.ts +127 -0
  263. package/src/core/utils/route.ts +0 -0
  264. package/src/core/utils/strictGet.spec.ts +61 -0
  265. package/src/core/utils/strictGet.ts +102 -0
  266. package/src/css.d.ts +19 -0
  267. package/src/docs/components/docs-demo-sources.ts +3 -3
  268. package/src/docs/decorators/bind.md +23 -24
  269. package/src/docs/docs-location.spec.ts +10 -0
  270. package/src/docs/docs-location.ts +10 -0
  271. package/src/docs/example/decorators-demo-bind-demos.ts +11 -28
  272. package/src/docs/example/docs-toggle-demos.ts +1 -1
  273. package/src/docs/example/users.ts +0 -0
  274. package/src/docs/getting-started/ai-agents.md +51 -51
  275. package/src/docs/getting-started/dataFlow.md +2 -2
  276. package/src/docs/home/home.ts +3 -1
  277. package/src/docs/misc/publisher-get-immutability-docs-crawl.json +902 -0
  278. package/src/docs/misc/publisher-get-immutability-docs-recheck.json +13 -0
  279. package/src/docs/misc/publisher-get-immutability-study.md +229 -0
  280. package/src/docs/navigation/navigation.ts +5 -1
  281. package/src/docs/search/docs-search.json +358 -58
  282. package/src/docs/search/markdown-renderer.ts +6 -1
  283. package/src/docs/tailwind/css/docs/content.css +4 -5
  284. package/src/tsconfig.declarations.json +22 -0
  285. package/src/tsconfig.emit.json +23 -0
  286. package/src/tsconfig.json +53 -5
  287. package/src/tsconfig.tsbuildinfo +1 -1
  288. package/.taste-skill/after/desktop-fold.jpg +0 -0
  289. package/.taste-skill/after/desktop-page-01.jpg +0 -0
  290. package/.taste-skill/after/desktop-page-02.jpg +0 -0
  291. package/.taste-skill/after/desktop-page-03.jpg +0 -0
  292. package/.taste-skill/after/mobile-fold.jpg +0 -0
  293. package/.taste-skill/after/mobile-page-01.jpg +0 -0
  294. package/.taste-skill/after/report.json +0 -4103
  295. package/.taste-skill/after/tablet-fold.jpg +0 -0
  296. package/.taste-skill/after/tablet-page-01.jpg +0 -0
  297. package/.taste-skill/after/tablet-page-02.jpg +0 -0
  298. package/.taste-skill/before/desktop-fold.jpg +0 -0
  299. package/.taste-skill/before/desktop-page-01.jpg +0 -0
  300. package/.taste-skill/before/desktop-page-02.jpg +0 -0
  301. package/.taste-skill/before/mobile-fold.jpg +0 -0
  302. package/.taste-skill/before/mobile-page-01.jpg +0 -0
  303. package/.taste-skill/before/report.json +0 -2556
  304. package/.taste-skill/before/tablet-fold.jpg +0 -0
  305. package/.taste-skill/before/tablet-page-01.jpg +0 -0
  306. package/.taste-skill/direction.json +0 -510
  307. package/.taste-skill/notes.md +0 -84
  308. package/.taste-skill/prod/desktop-fold.jpg +0 -0
  309. package/.taste-skill/prod/desktop-page-01.jpg +0 -0
  310. package/.taste-skill/prod/desktop-page-02.jpg +0 -0
  311. package/.taste-skill/prod/desktop-page-03.jpg +0 -0
  312. package/.taste-skill/prod/mobile-fold.jpg +0 -0
  313. package/.taste-skill/prod/mobile-page-01.jpg +0 -0
  314. package/.taste-skill/prod/mobile-page-02.jpg +0 -0
  315. package/.taste-skill/prod/report.json +0 -1973
  316. package/.taste-skill/prod/tablet-fold.jpg +0 -0
  317. package/.taste-skill/prod/tablet-page-01.jpg +0 -0
  318. package/.taste-skill/prod/tablet-page-02.jpg +0 -0
  319. package/AUDIT.md +0 -228
  320. package/PLAN-AMELIORATION.md +0 -220
  321. package/PLAN-DOCS-AGENTS.md +0 -80
  322. package/ai/AGENTS.md +0 -56
  323. package/ai/cursor/rules/concorde-menu.mdc +0 -15
  324. package/ai/cursor/rules/concorde-scope.mdc +0 -14
  325. package/ai/cursor/rules/concorde-theme.mdc +0 -13
  326. package/ai/cursor/rules/concorde.mdc +0 -66
  327. package/ai/jetbrains/rules/concorde.md +0 -53
  328. package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
  329. package/ai/skills/concorde-imports/SKILL.md +0 -78
  330. package/ai/skills/concorde-menu/SKILL.md +0 -74
  331. package/ai/skills/concorde-scope/SKILL.md +0 -70
  332. package/ai/skills/concorde-theme/SKILL.md +0 -57
  333. package/docs/.htaccess +0 -75
  334. package/docs/404.html +0 -15
  335. package/docs/404.md +0 -5
  336. package/docs/assets/index-BgG6FFPt.js +0 -11765
  337. package/docs/assets/index-x89XINSG.css +0 -1
  338. package/docs/core/components/functional/date/date.html +0 -211
  339. package/docs/core/components/functional/date/date.md +0 -150
  340. package/docs/core/components/functional/fetch/fetch.html +0 -180
  341. package/docs/core/components/functional/fetch/fetch.md +0 -108
  342. package/docs/core/components/functional/if/if.html +0 -65
  343. package/docs/core/components/functional/if/if.md +0 -34
  344. package/docs/core/components/functional/jsonata/jsonata.html +0 -110
  345. package/docs/core/components/functional/jsonata/jsonata.md +0 -61
  346. package/docs/core/components/functional/list/list.html +0 -198
  347. package/docs/core/components/functional/list/list.md +0 -121
  348. package/docs/core/components/functional/mix/mix.html +0 -78
  349. package/docs/core/components/functional/mix/mix.md +0 -46
  350. package/docs/core/components/functional/queue/queue.html +0 -155
  351. package/docs/core/components/functional/queue/queue.md +0 -51
  352. package/docs/core/components/functional/router/router.html +0 -154
  353. package/docs/core/components/functional/router/router.md +0 -93
  354. package/docs/core/components/functional/sdui/sdui-extension-points.md +0 -94
  355. package/docs/core/components/functional/sdui/sdui.html +0 -397
  356. package/docs/core/components/functional/sdui/sdui.md +0 -307
  357. package/docs/core/components/functional/states/states.html +0 -141
  358. package/docs/core/components/functional/states/states.md +0 -112
  359. package/docs/core/components/functional/submit/submit.html +0 -178
  360. package/docs/core/components/functional/submit/submit.md +0 -106
  361. package/docs/core/components/functional/subscriber/subscriber.md +0 -91
  362. package/docs/core/components/functional/translation/translation.html +0 -60
  363. package/docs/core/components/functional/translation/translation.md +0 -38
  364. package/docs/core/components/functional/value/value.html +0 -81
  365. package/docs/core/components/functional/value/value.md +0 -47
  366. package/docs/core/components/ui/alert/alert.md +0 -186
  367. package/docs/core/components/ui/alert-messages/alert-messages.md +0 -85
  368. package/docs/core/components/ui/badge/badge.md +0 -181
  369. package/docs/core/components/ui/button/button.html +0 -309
  370. package/docs/core/components/ui/button/button.md +0 -216
  371. package/docs/core/components/ui/captcha/captcha.html +0 -80
  372. package/docs/core/components/ui/captcha/captcha.md +0 -56
  373. package/docs/core/components/ui/card/card.md +0 -215
  374. package/docs/core/components/ui/divider/divider.md +0 -126
  375. package/docs/core/components/ui/form/checkbox/checkbox.html +0 -200
  376. package/docs/core/components/ui/form/checkbox/checkbox.md +0 -125
  377. package/docs/core/components/ui/form/fieldset/fieldset.html +0 -238
  378. package/docs/core/components/ui/form/fieldset/fieldset.md +0 -161
  379. package/docs/core/components/ui/form/form-actions/form-actions.md +0 -98
  380. package/docs/core/components/ui/form/form-layout/form-layout.html +0 -115
  381. package/docs/core/components/ui/form/form-layout/form-layout.md +0 -109
  382. package/docs/core/components/ui/form/input/input.html +0 -235
  383. package/docs/core/components/ui/form/input/input.md +0 -142
  384. package/docs/core/components/ui/form/radio/radio.html +0 -144
  385. package/docs/core/components/ui/form/radio/radio.md +0 -78
  386. package/docs/core/components/ui/form/select/select.html +0 -178
  387. package/docs/core/components/ui/form/select/select.md +0 -86
  388. package/docs/core/components/ui/form/switch/switch.html +0 -146
  389. package/docs/core/components/ui/form/switch/switch.md +0 -80
  390. package/docs/core/components/ui/form/textarea/textarea.html +0 -162
  391. package/docs/core/components/ui/form/textarea/textarea.md +0 -82
  392. package/docs/core/components/ui/group/group.html +0 -113
  393. package/docs/core/components/ui/group/group.md +0 -77
  394. package/docs/core/components/ui/icon/icon.md +0 -214
  395. package/docs/core/components/ui/image/image.html +0 -194
  396. package/docs/core/components/ui/image/image.md +0 -167
  397. package/docs/core/components/ui/link/link.md +0 -81
  398. package/docs/core/components/ui/loader/loader.html +0 -114
  399. package/docs/core/components/ui/loader/loader.md +0 -87
  400. package/docs/core/components/ui/menu/menu.md +0 -370
  401. package/docs/core/components/ui/modal/modal.html +0 -324
  402. package/docs/core/components/ui/modal/modal.md +0 -211
  403. package/docs/core/components/ui/pop/pop.html +0 -250
  404. package/docs/core/components/ui/pop/pop.md +0 -216
  405. package/docs/core/components/ui/progress/progress.md +0 -109
  406. package/docs/core/components/ui/table/table.html +0 -333
  407. package/docs/core/components/ui/table/table.md +0 -267
  408. package/docs/core/components/ui/theme/theme.html +0 -116
  409. package/docs/core/components/ui/theme/theme.md +0 -97
  410. package/docs/core/components/ui/toast/toast.html +0 -185
  411. package/docs/core/components/ui/toast/toast.md +0 -147
  412. package/docs/core/components/ui/tooltip/tooltip.html +0 -112
  413. package/docs/core/components/ui/tooltip/tooltip.md +0 -89
  414. package/docs/docs/decorators/ancestor-attribute.html +0 -71
  415. package/docs/docs/decorators/ancestor-attribute.md +0 -59
  416. package/docs/docs/decorators/auto-subscribe.html +0 -61
  417. package/docs/docs/decorators/auto-subscribe.md +0 -40
  418. package/docs/docs/decorators/bind.html +0 -86
  419. package/docs/docs/decorators/bind.md +0 -77
  420. package/docs/docs/decorators/get.html +0 -166
  421. package/docs/docs/decorators/get.md +0 -160
  422. package/docs/docs/decorators/handle.html +0 -139
  423. package/docs/docs/decorators/handle.md +0 -119
  424. package/docs/docs/decorators/on-assign.html +0 -72
  425. package/docs/docs/decorators/on-assign.md +0 -63
  426. package/docs/docs/decorators/patch.html +0 -76
  427. package/docs/docs/decorators/patch.md +0 -44
  428. package/docs/docs/decorators/post.html +0 -150
  429. package/docs/docs/decorators/post.md +0 -134
  430. package/docs/docs/decorators/publish.html +0 -74
  431. package/docs/docs/decorators/publish.md +0 -56
  432. package/docs/docs/decorators/put.html +0 -83
  433. package/docs/docs/decorators/put.md +0 -51
  434. package/docs/docs/decorators/subscribe.html +0 -91
  435. package/docs/docs/decorators/subscribe.md +0 -87
  436. package/docs/docs/decorators/wait-for-ancestors.html +0 -82
  437. package/docs/docs/decorators/wait-for-ancestors.md +0 -76
  438. package/docs/docs/directives/sub.html +0 -79
  439. package/docs/docs/directives/sub.md +0 -75
  440. package/docs/docs/directives/t.html +0 -91
  441. package/docs/docs/directives/t.md +0 -73
  442. package/docs/docs/getting-started/ai-agents.md +0 -76
  443. package/docs/docs/getting-started/components.html +0 -27
  444. package/docs/docs/getting-started/components.md +0 -5
  445. package/docs/docs/getting-started/installation.html +0 -69
  446. package/docs/docs/getting-started/installation.md +0 -36
  447. package/docs/docs/getting-started/my-first-component.md +0 -227
  448. package/docs/docs/getting-started/start.html +0 -47
  449. package/docs/docs/getting-started/start.md +0 -35
  450. package/docs/docs/getting-started/theming.md +0 -253
  451. package/docs/docs/index.html +0 -99
  452. package/docs/docs/misc/api-configuration.md +0 -79
  453. package/docs/docs/misc/dataProviderKey.md +0 -168
  454. package/docs/hubs/decorators.html +0 -443
  455. package/docs/hubs/form-components.html +0 -404
  456. package/docs/hubs/remote-data.html +0 -371
  457. package/docs/img/archive/concorde-001-2cv.webp +0 -0
  458. package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  459. package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
  460. package/docs/img/archive/credits.json +0 -28
  461. package/docs/index.md +0 -22
  462. package/docs/src/core/components/functional/translation/translation.md +0 -38
  463. package/docs/src/docs/decorators/ancestor-attribute.md +0 -59
  464. package/docs/src/docs/decorators/auto-subscribe.md +0 -40
  465. package/docs/src/docs/decorators/bind.md +0 -77
  466. package/docs/src/docs/decorators/get.md +0 -160
  467. package/docs/src/docs/decorators/handle.md +0 -119
  468. package/docs/src/docs/decorators/on-assign.md +0 -63
  469. package/docs/src/docs/decorators/patch.md +0 -44
  470. package/docs/src/docs/decorators/post.md +0 -134
  471. package/docs/src/docs/decorators/publish.md +0 -56
  472. package/docs/src/docs/decorators/put.md +0 -51
  473. package/docs/src/docs/decorators/subscribe.md +0 -87
  474. package/docs/src/docs/decorators/wait-for-ancestors.md +0 -76
  475. package/docs/src/docs/directives/sub.md +0 -75
  476. package/docs/src/docs/directives/t.md +0 -73
  477. package/docs/src/docs/getting-started/components.md +0 -5
  478. package/docs/src/docs/getting-started/create-a-component.md +0 -136
  479. package/docs/src/docs/getting-started/dataFlow.md +0 -87
  480. package/docs/src/docs/getting-started/installation.md +0 -36
  481. package/docs/src/docs/misc/docs-mock-api.md +0 -62
  482. package/docs/src/docs/misc/dynamic-path.md +0 -71
  483. package/docs/src/docs/misc/endpoint.md +0 -45
  484. package/docs/src/docs/misc/html-integration.md +0 -14
  485. /package/{docs → dist}/img/concorde/plane_01.jpg +0 -0
  486. /package/{docs → dist}/img/concorde/plane_02.jpg +0 -0
  487. /package/{docs → dist}/img/concorde/plane_03.jpg +0 -0
  488. /package/{docs → dist}/img/concorde/plane_04.jpg +0 -0
  489. /package/{docs → dist}/img/concorde/plane_05.jpg +0 -0
  490. /package/{docs → dist}/img/concorde/plane_06.jpg +0 -0
  491. /package/{docs → dist}/img/concorde/plane_07.jpg +0 -0
  492. /package/{docs → dist}/img/concorde/plane_08.jpg +0 -0
  493. /package/{docs → dist}/img/concorde/plane_09.jpg +0 -0
  494. /package/{docs → dist}/img/concorde/plane_10.jpg +0 -0
  495. /package/{docs → dist}/img/concorde/plane_11.jpg +0 -0
  496. /package/{docs → dist}/img/concorde/plane_12.jpg +0 -0
  497. /package/{docs → dist}/img/concorde/plane_13.jpg +0 -0
@@ -1,86 +1,71 @@
1
1
  # Select
2
2
 
3
- **`sonic-select`** wraps a native `<select>` with a label, a description, prefix and suffix slots and Concorde sizes. Options come from child `<option>` tags or from the `options` attribute (JSON). Bind the value to a store with **`formDataProvider`** and **`name`**, set on the field or on an ancestor.
4
-
5
- ## Basic example
6
-
7
- <sonic-code>
8
- <template>
9
- <sonic-select label="Cabin class" description="Pick one.">
10
- <option value="">No selection</option>
11
- <option value="economy">Economy</option>
12
- <option value="premium" selected>Premium</option>
13
- <option value="business">Business</option>
14
- <option value="first">First</option>
15
- </sonic-select>
16
- </template>
17
- </sonic-code>
18
-
19
3
  ## Options
20
-
21
- `options` takes an array of objects; `valueKey` (default `value`) and `wordingKey` (default `wording`) name the keys to read. An option with `selected` sets the initial value; with no `value` and nothing selected, the first option is used.
22
-
23
4
  <sonic-code>
24
5
  <template>
25
- <sonic-select label="Meal" wordingKey="label" options='[{"value":"standard","label":"Standard"},{"value":"vegetarian","label":"Vegetarian","selected":true},{"value":"none","label":"No meal"}]'></sonic-select>
6
+ <div class="grid gap-3">
7
+ <sonic-select>
8
+ <option value="">No Selection</option>
9
+ <option value="1">One</option>
10
+ <option value="2" selected>Two (set by "tag")</option>
11
+ <option value="3">Three</option>
12
+ </sonic-select>
13
+ <sonic-select options='[{"value":"", "wording":"Set options via \"attribute\""},
14
+ {"value":"dark", "wording":"dark (set by \"attribute\")", "selected" : "true"}, {"value":"auto", "wording":"auto"}
15
+ ]'>
16
+ </sonic-select>
17
+ </div>
26
18
  </template>
27
19
  </sonic-code>
28
20
 
29
- ## Size and status
30
-
31
- With no `size`, the select uses the base scale. `status` colors the field; it defaults to `default`.
32
-
21
+ ## Size
33
22
  <sonic-code>
34
23
  <template>
35
24
  <div class="grid gap-3">
36
25
  <sonic-select size="2xs"><option>2xs</option></sonic-select>
37
26
  <sonic-select size="xs"><option>xs</option></sonic-select>
38
27
  <sonic-select size="sm"><option>sm</option></sonic-select>
39
- <sonic-select><option>default</option></sonic-select>
28
+ <sonic-select size="md"><option>md</option></sonic-select>
29
+ <sonic-select size="default"><option>default</option></sonic-select>
40
30
  <sonic-select size="lg"><option>lg</option></sonic-select>
41
31
  <sonic-select size="xl"><option>xl</option></sonic-select>
42
32
  <sonic-select size="2xl"><option>2xl</option></sonic-select>
43
- <sonic-select status="success"><option>success</option></sonic-select>
44
- <sonic-select status="error"><option>error</option></sonic-select>
45
- <sonic-select status="warning"><option>warning</option></sonic-select>
46
- <sonic-select status="info"><option>info</option></sonic-select>
47
- <sonic-select status="primary"><option>primary</option></sonic-select>
48
- <sonic-select disabled><option>disabled</option></sonic-select>
49
33
  </div>
50
34
  </template>
51
35
  </sonic-code>
52
36
 
53
- ## Filtering a list
54
37
 
55
- `name="direction"` writes to the store used as `dataFilterProvider` by a `sonic-queue`, which sends it as `?direction=` to the [mock API](/docs/misc/docs-mock-api): switch between departures and arrivals.
38
+ ## Multiple
39
+ <sonic-code>
40
+ <template>
41
+ <div class="grid gap-3">
42
+ <sonic-select multiple>
43
+ <option value="">Choose a number</option>
44
+ <option value="1">One</option>
45
+ <option value="2">Two</option>
46
+ <option value="3">Three</option>
47
+ </sonic-select>
48
+ </div>
49
+ </template>
50
+ </sonic-code>
51
+
56
52
 
57
- <docs-lit-demo for="docs-flight-direction-demo"></docs-lit-demo>
53
+ ## Disabled
54
+ <sonic-code>
55
+ <template>
56
+ <div class="grid gap-3">
57
+ <sonic-select disabled>
58
+ <option value="">Choose a number</option>
59
+ <option value="1">One</option>
60
+ <option value="2">Two</option>
61
+ <option value="3">Three</option>
62
+ </sonic-select>
63
+ </div>
64
+ </template>
65
+ </sonic-code>
58
66
 
59
- ## API reference
67
+ ## Example of use — language filter + queue
60
68
 
61
- | Attribute | Values | Description |
62
- |----------|---------|-------------|
63
- | `name` | string | Key in the form store (dot notation allowed) |
64
- | `value` | string | Initial value |
65
- | `formDataProvider` | string | Store id; inherited from the closest ancestor |
66
- | `options` | JSON array | Options as objects; alternative to child `<option>` tags |
67
- | `valueKey` | string (default `value`) | Option key used as value |
68
- | `wordingKey` | string (default `wording`) | Option key used as text |
69
- | `size` | `2xs` … `2xl` (default: base scale) | Typography and padding |
70
- | `status` | `default` · `success` · `error` · `warning` · `info` · `primary` | Field color |
71
- | `label` | string (HTML) | Label; or use the `label` slot |
72
- | `description` | string (HTML) | Help text under the field; or use the `description` slot |
73
- | `required` · `disabled` · `autofocus` | boolean | Native flags |
74
- | `multiple` | boolean | Native multiple selection; only one value is stored |
75
- | `selectSize` | number | Native `size` (visible rows) |
76
- | `data-aria-label` · `data-aria-labelledby` | string | Forwarded as `aria-label` and `aria-labelledby` |
77
- | `unsetOnDisconnect` | boolean | Clears the store value when the element is removed |
78
- | `forceAutoFill` | boolean | Lets properties override `label` / `description` / `name` attributes |
69
+ **`name="lang"`** is sent as `?lang=fr|en` to the [doc mock API](#docs/_misc/docs-mock-api.md/docs-mock-api) (`filterDocsJokes`). Same pattern as [Input](#core/components/ui/form/input/input.md/input) (`contains`):
79
70
 
80
- | Slot | Description |
81
- |------|-------------|
82
- | *(default)* | `<option>` elements |
83
- | `label` | Rich label content |
84
- | `description` | Rich help text |
85
- | `prefix` | Content before the select |
86
- | `suffix` | Content after the select |
71
+ <docs-lit-demo for="docs-joke-lang-demo"></docs-lit-demo>
@@ -1,80 +1,57 @@
1
1
  # Switch
2
2
 
3
- **`sonic-switch`** is a toggle-styled [Checkbox](/core/components/ui/form/checkbox) in `unique` mode: when on, it stores its `value` under `name` in the **`formDataProvider`** data; when off, it stores `null`. Switches sharing a `name` behave as one choice, so give independent switches distinct names. Label goes in the default slot or `label`, helper text in the `description` slot.
4
-
5
- ## Basic example
6
-
3
+ ## Size
7
4
  <sonic-code>
8
5
  <template>
9
- <div formDataProvider="switch-basic-demo" class="grid gap-2">
10
- <sonic-switch name="notifications" value="on" checked>
11
- Notifications
12
- <span slot="description">Get an alert when your gate changes.</span>
13
- </sonic-switch>
14
- <div>Value: <sonic-value dataProvider="switch-basic-demo" key="notifications"></sonic-value></div>
6
+ <div class="grid gap-2" formDataProvider="switchSizeExemple">
7
+ <sonic-switch name="size2xs" value="2xs" size="2xs">2xs switch</sonic-switch>
8
+ <sonic-switch name="sizexs" value="xs" size="xs">xs switch</sonic-switch>
9
+ <sonic-switch name="sizesm" value="sm" size="sm">sm switch</sonic-switch>
10
+ <sonic-switch name="size" value="default" >default switch</sonic-switch>
11
+ <sonic-switch name="sizelg" value="lg" size="lg">lg switch</sonic-switch>
12
+ <sonic-switch name="sizexl" value="xl" size="xl">xl switch</sonic-switch>
13
+ <sonic-switch name="size2xl" value="2xl" size="2xl">2xl switch</sonic-switch>
15
14
  </div>
16
15
  </template>
17
16
  </sonic-code>
18
17
 
19
- ## Size
20
-
21
- With no `size`, the switch follows `md` (1rem).
22
-
18
+ ## Checked
23
19
  <sonic-code>
24
20
  <template>
25
- <div class="grid gap-2">
26
- <sonic-switch size="2xs">2xs</sonic-switch>
27
- <sonic-switch size="xs">xs</sonic-switch>
28
- <sonic-switch size="sm">sm</sonic-switch>
29
- <sonic-switch>Default</sonic-switch>
30
- <sonic-switch size="lg">lg</sonic-switch>
31
- <sonic-switch size="xl">xl</sonic-switch>
32
- <sonic-switch size="2xl">2xl</sonic-switch>
33
- </div>
21
+ <sonic-switch checked
22
+ >Already checked switch
23
+ </sonic-switch>
34
24
  </template>
35
25
  </sonic-code>
36
26
 
37
- ## Checked and disabled
38
-
39
- `checked` sets the initial state. `disabled` blocks interaction and dims the control.
40
-
27
+ ## Disabled
41
28
  <sonic-code>
42
29
  <template>
43
- <div class="grid gap-2">
44
- <sonic-switch checked>Checked</sonic-switch>
45
- <sonic-switch disabled>Disabled</sonic-switch>
46
- <sonic-switch disabled checked>Disabled and checked</sonic-switch>
47
- <sonic-switch>I accept the <sonic-link href="#" class="underline">terms</sonic-link></sonic-switch>
48
- </div>
30
+ <sonic-switch disabled
31
+ >Disabled switch
32
+ </sonic-switch>
49
33
  </template>
50
34
  </sonic-code>
51
35
 
52
- ## Filtering a list
53
-
54
- On, the switch writes `status=delayed` to the store used as `dataFilterProvider` by a `sonic-queue`; off, it writes `null` and the filter is dropped.
36
+ ## Disabled and checked
37
+ <sonic-code>
38
+ <template>
39
+ <sonic-switch disabled checked
40
+ >Disabled but already checked switch
41
+ </sonic-switch>
42
+ </template>
43
+ </sonic-code>
55
44
 
56
- <docs-lit-demo for="docs-flight-delayed-switch-demo"></docs-lit-demo>
45
+ ## switch with link
46
+ <sonic-code>
47
+ <template>
48
+ <sonic-switch name="link" value="link">switch with <sonic-link href="#" class="underline text-info">link</sonic-link>
49
+ </template>
50
+ </sonic-code>
57
51
 
58
- ## API reference
59
52
 
60
- | Attribute | Values | Description |
61
- |----------|---------|-------------|
62
- | `name` | string | Key in the form data (dot notation supported) |
63
- | `value` | string | Value stored when on |
64
- | `formDataProvider` | string | Form data id; inherited from the closest ancestor when omitted |
65
- | `checked` | boolean | Initial state |
66
- | `unsetOnDisconnect` | boolean | Removes the value from the data when the element is removed |
67
- | `label` | string (HTML) | Label, rendered before the default slot |
68
- | `description` | string (HTML) | Helper text, rendered in the `description` slot |
69
- | `size` | `2xs` … `2xl` · `inherit` (default `md`) | Font size and track size |
70
- | `disabled` | boolean | Blocks interaction |
71
- | `required` | boolean | Native validation on form submit |
72
- | `autofocus` | boolean | Focuses the input on load |
73
- | `data-aria-label` · `data-aria-labelledby` | string | Forwarded to the inner input as `aria-label` / `aria-labelledby` |
53
+ ## Example of use — blacklist + queue
74
54
 
75
- | Slot | Description |
76
- |------|-------------|
77
- | *(default)* | Label content (text, links) |
78
- | `description` | Helper text under the label |
55
+ Same mock filter as [Checkbox](#core/components/ui/form/checkbox/checkbox.md/checkbox); switches can enable several flags (comma-separated in the query).
79
56
 
80
- Fires a `change` event on each click.
57
+ <docs-lit-demo for="docs-joke-blacklist-switch-demo"></docs-lit-demo>
@@ -1,82 +1,65 @@
1
1
  # Textarea
2
2
 
3
- **`sonic-textarea`** wraps a native `<textarea>` with a label, a description and Concorde sizes. Native attributes (`rows`, `cols`, `maxlength`, `wrap`, …) are passed through. Bind the value to a store with **`formDataProvider`** and **`name`**, set on the field or on an ancestor.
3
+ <sonic-button type="info" size="sm" target="_blank" href="https://www.w3schools.com/tags/tag_textarea.asp#midcontentadcontainer">
4
+ <sonic-icon library="iconoir" name="open-new-window" slot="prefix" ></sonic-icon>
5
+ Native attributes list
6
+ </sonic-button>
4
7
 
5
- ## Basic example
6
8
 
9
+ ## Label
7
10
  <sonic-code>
8
11
  <template>
9
- <sonic-textarea label="Comments to the crew" placeholder="Write your message" description="Plain text only."></sonic-textarea>
12
+ <sonic-textarea label="Label"></sonic-textarea>
10
13
  </template>
11
14
  </sonic-code>
12
15
 
13
- ## Rows and resize
14
-
15
- `rows` sets the visible height. With no `resize`, the user can resize vertically only.
16
-
16
+ ## Placeholder
17
17
  <sonic-code>
18
18
  <template>
19
- <div class="grid gap-3">
20
- <sonic-textarea rows="6" label="Six rows"></sonic-textarea>
21
- <sonic-textarea resize="none" label="Not resizable"></sonic-textarea>
22
- </div>
19
+ <sonic-textarea placeholder="placeholder"></sonic-textarea>
23
20
  </template>
24
21
  </sonic-code>
25
22
 
26
- ## Size and status
27
-
28
- With no `size`, the textarea uses `md`. `status` colors the field; it defaults to `default`.
29
-
23
+ ## Value
30
24
  <sonic-code>
31
25
  <template>
32
- <div class="grid gap-3">
33
- <sonic-textarea rows="1" size="2xs" value="2xs"></sonic-textarea>
34
- <sonic-textarea rows="1" size="xs" value="xs"></sonic-textarea>
35
- <sonic-textarea rows="1" size="sm" value="sm"></sonic-textarea>
36
- <sonic-textarea rows="1" value="default"></sonic-textarea>
37
- <sonic-textarea rows="1" size="lg" value="lg"></sonic-textarea>
38
- <sonic-textarea rows="1" size="xl" value="xl"></sonic-textarea>
39
- <sonic-textarea rows="1" size="2xl" value="2xl"></sonic-textarea>
40
- <sonic-textarea rows="1" status="success" value="success"></sonic-textarea>
41
- <sonic-textarea rows="1" status="error" value="error"></sonic-textarea>
42
- <sonic-textarea rows="1" status="warning" value="warning"></sonic-textarea>
43
- <sonic-textarea rows="1" status="info" value="info"></sonic-textarea>
44
- </div>
26
+ <sonic-textarea value="value"></sonic-textarea>
45
27
  </template>
46
28
  </sonic-code>
47
29
 
48
- ## Validation
49
-
50
- `required`, `minlength` and `maxlength` are checked by the browser. Feedback styles apply once the field is `touched` (after blur).
30
+ ## Required
31
+ <sonic-code>
32
+ <template>
33
+ <sonic-textarea required label="Feedback on blur" placeholder="required" ></sonic-textarea>
34
+ </template>
35
+ </sonic-code>
51
36
 
37
+ ## Rows
52
38
  <sonic-code>
53
39
  <template>
54
- <sonic-textarea required minlength="10" label="Special assistance request" placeholder="At least 10 characters"></sonic-textarea>
40
+ <sonic-textarea rows="8"></sonic-textarea>
55
41
  </template>
56
42
  </sonic-code>
57
43
 
58
- ## API reference
44
+ ## Description
45
+ <sonic-code>
46
+ <template>
47
+ <sonic-textarea description="Description goes here" ></sonic-textarea>
48
+ </template>
49
+ </sonic-code>
59
50
 
60
- | Attribute | Values | Description |
61
- |----------|---------|-------------|
62
- | `name` | string | Key in the form store (dot notation allowed) |
63
- | `value` | string | Initial value |
64
- | `formDataProvider` | string | Store id; inherited from the closest ancestor |
65
- | `label` | string (HTML) | Label; or use the `label` slot |
66
- | `description` | string (HTML) | Help text under the field; or use the `description` slot |
67
- | `placeholder` | string | Native placeholder |
68
- | `size` | `2xs` … `2xl` (default `md`) | Typography and padding |
69
- | `status` | `default` · `success` · `error` · `warning` · `info` | Field color |
70
- | `rows` · `cols` | number | Native dimensions |
71
- | `minlength` · `maxlength` | number | Native length constraints |
72
- | `wrap` | `soft` · `hard` | Native wrapping |
73
- | `resize` | `vertical` · `horizontal` · `both` · `none` · `block` · `inline` (default `vertical`) | CSS resize handle |
74
- | `required` · `disabled` · `readonly` · `autofocus` | boolean | Native flags |
75
- | `autocomplete` · `tabindex` | native | Passed to the inner `<textarea>` |
76
- | `data-aria-label` · `data-aria-labelledby` | string | Forwarded as `aria-label` and `aria-labelledby` |
77
- | `unsetOnDisconnect` | boolean | Clears the store value when the element is removed |
78
51
 
79
- | Slot | Description |
80
- |------|-------------|
81
- | `label` | Rich label content |
82
- | `description` | Rich help text |
52
+ ## Size
53
+ <sonic-code>
54
+ <template>
55
+ <div class="grid gap-4">
56
+ <sonic-textarea size="2xs" value="2xs"></sonic-textarea>
57
+ <sonic-textarea size="xs" value="xs"></sonic-textarea>
58
+ <sonic-textarea size="sm" value="sm"></sonic-textarea>
59
+ <sonic-textarea value="md / default"></sonic-textarea>
60
+ <sonic-textarea size="lg" value="lg"></sonic-textarea>
61
+ <sonic-textarea size="xl" value="xl"></sonic-textarea>
62
+ <sonic-textarea size="2xl" value="2xl"></sonic-textarea>
63
+ </div>
64
+ </template>
65
+ </sonic-code>
@@ -1,64 +1,62 @@
1
1
  # Group
2
2
 
3
- **`sonic-group`** lays out `sonic-button` · `sonic-input` and `sonic-select` controls in one row with a **shared corner radius**: only the outer corners of the first and last items stay rounded. Use it for button groups, radio rows or a field with an attached action. Optional `label` and `description` follow form field styling.
3
+ **`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.
4
4
 
5
5
  ## Radio group
6
6
 
7
- Give each `sonic-button` the `radio` attribute and a shared `name`. The selected `value` is written to the `formDataProvider` set on the group (inherited by the buttons).
7
+ Pair with **`sonic-button`** **`radio`** and a shared **`name`**; ancestor **`formDataProvider`** stores the selected **`value`**.
8
8
 
9
9
  <sonic-code>
10
10
  <template>
11
- <sonic-group formDataProvider="groupPlanDemo">
12
- <sonic-button radio name="plan" value="free" type="default">Free</sonic-button>
13
- <sonic-button radio checked name="plan" value="pro" type="default">Pro</sonic-button>
14
- <sonic-button radio name="plan" value="team" type="default">Team</sonic-button>
11
+ <sonic-group formDataProvider="subscriptionData">
12
+ <sonic-button radio name="subscription" value="standard" type="default">😎 Standard</sonic-button>
13
+ <sonic-button radio checked name="subscription" value="premium" type="default">⭐ Premium</sonic-button>
14
+ <sonic-button radio name="subscription" value="diamond" type="default">💎 Diamond</sonic-button>
15
15
  </sonic-group>
16
16
  </template>
17
17
  </sonic-code>
18
18
 
19
19
  ## Button group
20
20
 
21
- Adjacent action buttons that stay independent controls.
21
+ Adjacent link or action buttons without merging into one control.
22
22
 
23
23
  <sonic-code>
24
24
  <template>
25
25
  <sonic-group>
26
- <sonic-button type="default">
27
- <sonic-icon library="iconoir" name="align-left"></sonic-icon>
28
- </sonic-button>
29
- <sonic-button type="default">
30
- <sonic-icon library="iconoir" name="align-center"></sonic-icon>
31
- </sonic-button>
32
- <sonic-button type="default">
33
- <sonic-icon library="iconoir" name="align-right"></sonic-icon>
34
- </sonic-button>
26
+ <sonic-button type="info" target="_blank" href="https://wwws.airfrance.fr/">🗼 Air France</sonic-button>
27
+ <sonic-button type="success" target="_blank" href="https://www.airtahitinui.com/">🌴 Air Tahiti</sonic-button>
28
+ <sonic-button type="danger" target="_blank" href="https://www.aircorsica.com/">💣 Air Corsica</sonic-button>
35
29
  </sonic-group>
36
30
  </template>
37
31
  </sonic-code>
38
32
 
39
- ## Field with action
33
+ ## Input actions prefix
40
34
 
41
- Put the action before or after the field. `label` and `description` annotate the whole row.
35
+ Action control before the field. **`label`** or **`description`** on **`sonic-group`** annotate the row.
42
36
 
43
37
  <sonic-code>
44
38
  <template>
45
- <div class="grid gap-4 max-w-md">
46
- <sonic-group label="Search" description="Type a flight number, then confirm.">
47
- <sonic-input placeholder="CN 001"></sonic-input>
48
- <sonic-button type="primary" shape="square">
49
- <sonic-icon library="iconoir" name="search"></sonic-icon>
39
+ <sonic-group label="Label" description="Description">
40
+ <sonic-button type="info" shape="square">
41
+ <sonic-icon library="iconoir" name="info-empty"></sonic-icon>
50
42
  </sonic-button>
43
+ <sonic-input></sonic-input>
51
44
  </sonic-group>
52
- <sonic-group label="Extra baggage">
53
- <sonic-button type="default" shape="square">
54
- <sonic-icon library="iconoir" name="minus"></sonic-icon>
55
- </sonic-button>
56
- <sonic-input type="number" value="1"></sonic-input>
57
- <sonic-button type="default" shape="square">
58
- <sonic-icon library="iconoir" name="plus"></sonic-icon>
45
+ </template>
46
+ </sonic-code>
47
+
48
+ ## Input actions suffix
49
+
50
+ Field first, action after (submit, validate, etc.).
51
+
52
+ <sonic-code>
53
+ <template>
54
+ <sonic-group label="Label" description="Description">
55
+ <sonic-input></sonic-input>
56
+ <sonic-button type="primary" shape="square">
57
+ <sonic-icon library="iconoir" name="check"></sonic-icon>
59
58
  </sonic-button>
60
59
  </sonic-group>
61
- </div>
62
60
  </template>
63
61
  </sonic-code>
64
62
 
@@ -66,12 +64,12 @@ Put the action before or after the field. `label` and `description` annotate the
66
64
 
67
65
  | Attribute | Values | Description |
68
66
  |----------|---------|-------------|
69
- | `label` | string (HTML) | Label above the row; content of `slot="label"` is appended |
70
- | `description` | string (HTML) | Help text below the row; content of `slot="description"` replaces it |
71
- | `alignItems` | CSS `align-items` value (default `center`) | Cross-axis alignment of the row |
67
+ | `label` | string (HTML) | Label above the row; **`slot="label"`** overrides / extends |
68
+ | `description` | string (HTML) | Help text below the row; **`slot="description"`** overrides / extends |
69
+ | `alignItems` | CSS align-items (default `center`) | Cross-axis alignment of the main flex row |
72
70
 
73
71
  | Slot | Description |
74
72
  |------|-------------|
75
- | *(default)* | `sonic-button` · `sonic-input` · `sonic-select` in visual order |
73
+ | *(default)* | **`sonic-button`** · **`sonic-input`** · **`sonic-select`** in visual order |
76
74
  | `label` | Custom label markup |
77
75
  | `description` | Custom description markup |
@@ -139,7 +139,7 @@ Use **`library="custom"`** with SVG files on your origin. On an ancestor (for ex
139
139
 
140
140
  ## Size
141
141
 
142
- Omit **`size`** for the default scale (`1em` height, inherited from the font size). Steps go from `2xs` to `3xl`.
142
+ Omit **`size`** for the default scale (`1em` height). Larger steps use **`3xl`**.
143
143
 
144
144
  <sonic-code>
145
145
  <template>
@@ -194,8 +194,8 @@ On connect, the host sets **`aria-hidden="true"`**. Treat icons as decorative un
194
194
 
195
195
  <sonic-code>
196
196
  <template>
197
- <sonic-button type="neutral" variant="outline" shape="circle" aria-label="Flight details">
198
- <sonic-icon library="iconoir" name="airplane"></sonic-icon>
197
+ <sonic-button type="neutral" variant="outline" shape="circle" aria-label="User profile">
198
+ <sonic-icon library="iconoir" name="user"></sonic-icon>
199
199
  </sonic-button>
200
200
  </template>
201
201
  </sonic-code>
@@ -207,7 +207,7 @@ On connect, the host sets **`aria-hidden="true"`**. Treat icons as decorative un
207
207
  | `name` | string | Icon id in the core bundle or in the remote library |
208
208
  | `library` | `heroicons` · `iconoir` · `feathers` · `lucide` · `material` · `fontAwesome` · `custom` | CDN or custom template; omit for bundled core icons |
209
209
  | `prefix` | string | Library-specific variant; defaults per library when empty |
210
- | `size` | `2xs` · `xs` · `sm` · `lg` · `xl` · `2xl` · `3xl` (default `1em`, no attribute) | `em`-based SVG scale on the host |
210
+ | `size` | `2xs` · `xs` · `sm` · `lg` · `xl` · `2xl` · `3xl` (default `md`) | `em`-based SVG scale on the host |
211
211
 
212
212
  Ancestor attributes (for **`library="custom"`** only): **`customIconLibraryPath`** (URL template with **`$prefix`** and **`$name`**) and **`customIconDefaultPrefix`**. May be set on **`sonic-scope`**, theme roots, or globally in the document.
213
213