@supersoniks/concorde 5.1.1 → 5.1.3-immutable.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/.agents/skills/concorde-docs/SKILL.md +153 -0
  2. package/.agents/skills/{concorde-component-docs/template.md → concorde-docs/templates/component.md} +6 -2
  3. package/.agents/skills/concorde-docs/templates/decorator.md +43 -0
  4. package/.agents/skills/concorde-docs/templates/guide.md +25 -0
  5. package/.claude/skills +1 -0
  6. package/.github/workflows/ci.yml +21 -0
  7. package/.github-export-ignore +30 -0
  8. package/CONTRIBUTING.md +59 -0
  9. package/DEV.md +54 -0
  10. package/LICENSE +21 -0
  11. package/OPEN_SOURCE_CHECKPOINT.md +133 -0
  12. package/README.md +4 -4
  13. package/ai/README.md +29 -41
  14. package/ai/skills/concorde/SKILL.md +54 -324
  15. package/ai/skills/concorde/rules/composition.md +32 -0
  16. package/ai/skills/concorde/rules/data.md +47 -0
  17. package/ai/skills/concorde/rules/http.md +25 -0
  18. package/ai/skills/concorde/rules/lists-forms.md +35 -0
  19. package/ai/skills/concorde/rules/styling.md +46 -0
  20. package/ai/skills/concorde/rules/troubleshooting.md +45 -0
  21. package/build-infos.json +1 -1
  22. package/concorde-core.bundle.js +177 -177
  23. package/concorde-core.es.js +4993 -4833
  24. package/custom-elements-manifest.public.config.mjs +8 -0
  25. package/{.tmp-cem/custom-elements.json → custom-elements.json} +11758 -8904
  26. package/dist/concorde-core.bundle.js +177 -177
  27. package/dist/concorde-core.es.js +4993 -4833
  28. package/dist/docs-mock-api-sw.js +58 -223
  29. package/dist/docs-mock-api-sw.js.map +4 -4
  30. package/dist/img/concorde/plane_01.jpg +0 -0
  31. package/dist/img/concorde/plane_02.jpg +0 -0
  32. package/dist/img/concorde/plane_03.jpg +0 -0
  33. package/dist/img/concorde/plane_04.jpg +0 -0
  34. package/dist/img/concorde/plane_05.jpg +0 -0
  35. package/dist/img/concorde/plane_06.jpg +0 -0
  36. package/dist/img/concorde/plane_07.jpg +0 -0
  37. package/dist/img/concorde/plane_08.jpg +0 -0
  38. package/dist/img/concorde/plane_09.jpg +0 -0
  39. package/dist/img/concorde/plane_10.jpg +0 -0
  40. package/dist/img/concorde/plane_11.jpg +0 -0
  41. package/dist/img/concorde/plane_12.jpg +0 -0
  42. package/dist/img/concorde/plane_13.jpg +0 -0
  43. package/dist/img/og-concorde.jpg +0 -0
  44. package/dist/robots.txt +11 -10
  45. package/docs/assets/index-D_alEsng.js +12122 -0
  46. package/docs/crawl/core/components/functional/date/date.html +190 -0
  47. package/docs/crawl/core/components/functional/fetch/fetch.html +109 -0
  48. package/docs/crawl/core/components/functional/if/if.html +27 -0
  49. package/docs/crawl/core/components/functional/jsonata/jsonata.html +79 -0
  50. package/docs/crawl/core/components/functional/list/list.html +70 -0
  51. package/docs/crawl/core/components/functional/mix/mix.html +45 -0
  52. package/docs/crawl/core/components/functional/queue/queue.html +96 -0
  53. package/docs/crawl/core/components/functional/router/router.html +106 -0
  54. package/docs/crawl/core/components/functional/sdui/sdui-extension-points.html +126 -0
  55. package/docs/crawl/core/components/functional/sdui/sdui.html +368 -0
  56. package/docs/crawl/core/components/functional/states/states.html +66 -0
  57. package/docs/crawl/core/components/functional/submit/submit.html +160 -0
  58. package/docs/crawl/core/components/functional/subscriber/subscriber.html +67 -0
  59. package/docs/crawl/core/components/functional/value/value.html +51 -0
  60. package/docs/crawl/core/components/ui/alert/alert.html +211 -0
  61. package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +131 -0
  62. package/docs/crawl/core/components/ui/badge/badge.html +197 -0
  63. package/docs/crawl/core/components/ui/button/button.html +150 -0
  64. package/docs/crawl/core/components/ui/captcha/captcha.html +112 -0
  65. package/docs/crawl/core/components/ui/card/card.html +253 -0
  66. package/docs/crawl/core/components/ui/divider/divider.html +144 -0
  67. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +73 -0
  68. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +266 -0
  69. package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +122 -0
  70. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +121 -0
  71. package/docs/crawl/core/components/ui/form/input/input.html +109 -0
  72. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +38 -0
  73. package/docs/crawl/core/components/ui/form/radio/radio.html +56 -0
  74. package/docs/crawl/core/components/ui/form/select/select.html +73 -0
  75. package/docs/crawl/core/components/ui/form/switch/switch.html +56 -0
  76. package/docs/crawl/core/components/ui/form/textarea/textarea.html +59 -0
  77. package/docs/crawl/core/components/ui/group/group.html +104 -0
  78. package/docs/crawl/core/components/ui/icon/icon.html +222 -0
  79. package/docs/crawl/core/components/ui/image/image.html +298 -0
  80. package/docs/crawl/core/components/ui/link/link.html +100 -0
  81. package/docs/crawl/core/components/ui/loader/loader.html +124 -0
  82. package/docs/crawl/core/components/ui/menu/menu.html +394 -0
  83. package/docs/crawl/core/components/ui/modal/modal.html +342 -0
  84. package/docs/crawl/core/components/ui/pop/pop.html +296 -0
  85. package/docs/crawl/core/components/ui/progress/progress.html +131 -0
  86. package/docs/crawl/core/components/ui/table/table.html +545 -0
  87. package/docs/crawl/core/components/ui/theme/theme.html +131 -0
  88. package/docs/crawl/core/components/ui/toast/toast.html +233 -0
  89. package/docs/crawl/core/components/ui/tooltip/tooltip.html +140 -0
  90. package/docs/crawl/docs/_core-concept/dataFlow.html +177 -0
  91. package/docs/crawl/docs/_core-concept/overview.html +66 -0
  92. package/docs/crawl/docs/_core-concept/subscriber.html +75 -0
  93. package/docs/crawl/docs/_decorators/ancestor-attribute.html +117 -0
  94. package/docs/crawl/docs/_decorators/auto-subscribe.html +202 -0
  95. package/docs/crawl/docs/_decorators/bind.html +141 -0
  96. package/docs/crawl/docs/_decorators/get.html +149 -0
  97. package/docs/crawl/docs/_decorators/handle.html +165 -0
  98. package/docs/crawl/docs/_decorators/on-assign.html +355 -0
  99. package/docs/crawl/docs/_decorators/patch.html +78 -0
  100. package/docs/crawl/docs/_decorators/post.html +139 -0
  101. package/docs/crawl/docs/_decorators/publish.html +61 -0
  102. package/docs/crawl/docs/_decorators/put.html +78 -0
  103. package/docs/crawl/docs/_decorators/subscribe.html +109 -0
  104. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +137 -0
  105. package/docs/crawl/docs/_directives/sub.html +93 -0
  106. package/docs/crawl/docs/_getting-started/ai-agents.html +173 -0
  107. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +100 -0
  108. package/docs/crawl/docs/_getting-started/concorde-outside.html +58 -0
  109. package/docs/crawl/docs/_getting-started/create-a-component.html +111 -0
  110. package/docs/crawl/docs/_getting-started/my-first-component.html +189 -0
  111. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +110 -0
  112. package/docs/crawl/docs/_getting-started/pubsub.html +62 -0
  113. package/docs/crawl/docs/_getting-started/start.html +76 -0
  114. package/docs/crawl/docs/_getting-started/theming.html +333 -0
  115. package/docs/crawl/docs/_misc/api-configuration.html +149 -0
  116. package/docs/crawl/docs/_misc/dataProviderKey.html +135 -0
  117. package/docs/crawl/docs/_misc/docs-mock-api.html +158 -0
  118. package/docs/crawl/docs/_misc/dynamic-path.html +180 -0
  119. package/docs/crawl/docs/_misc/endpoint.html +50 -0
  120. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
  121. package/docs/crawl/docs/_misc/html-integration.html +48 -0
  122. package/docs/crawl/hubs/decorators.html +547 -0
  123. package/docs/crawl/hubs/form-components.html +381 -0
  124. package/docs/crawl/hubs/remote-data.html +452 -0
  125. package/docs/crawl/index.html +103 -0
  126. package/docs/index.html +1 -1
  127. package/docs/llms-full.txt +7174 -0
  128. package/docs/llms.txt +98 -0
  129. package/docs/sitemap.xml +243 -0
  130. package/docs/src/core/components/functional/date/date.md +290 -0
  131. package/docs/src/core/components/functional/fetch/fetch.md +125 -0
  132. package/docs/src/core/components/functional/if/if.md +9 -0
  133. package/docs/src/core/components/functional/jsonata/jsonata.md +56 -0
  134. package/docs/src/core/components/functional/list/list.md +65 -0
  135. package/docs/src/core/components/functional/mix/mix.md +41 -0
  136. package/docs/src/core/components/functional/queue/queue.md +72 -0
  137. package/docs/src/core/components/functional/router/router.md +94 -0
  138. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
  139. package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
  140. package/docs/src/core/components/functional/sdui/default-library.json +108 -0
  141. package/docs/src/core/components/functional/sdui/example.json +99 -0
  142. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
  143. package/docs/src/core/components/functional/sdui/sdui.md +478 -0
  144. package/docs/src/core/components/functional/states/states.md +87 -0
  145. package/docs/src/core/components/functional/submit/submit.md +114 -0
  146. package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
  147. package/docs/src/core/components/functional/value/value.md +35 -0
  148. package/docs/src/core/components/ui/alert/alert.md +196 -0
  149. package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
  150. package/docs/src/core/components/ui/badge/badge.md +188 -0
  151. package/docs/src/core/components/ui/button/button.md +183 -0
  152. package/docs/src/core/components/ui/captcha/captcha.md +71 -0
  153. package/docs/src/core/components/ui/card/card.md +215 -0
  154. package/docs/src/core/components/ui/divider/divider.md +129 -0
  155. package/docs/src/core/components/ui/form/checkbox/checkbox.md +77 -0
  156. package/docs/src/core/components/ui/form/fieldset/fieldset.md +205 -0
  157. package/docs/src/core/components/ui/form/form-actions/form-actions.md +100 -0
  158. package/docs/src/core/components/ui/form/form-layout/form-layout.md +119 -0
  159. package/docs/src/core/components/ui/form/input/input.md +142 -0
  160. package/docs/src/core/components/ui/form/radio/radio.md +57 -0
  161. package/docs/src/core/components/ui/form/select/select.md +71 -0
  162. package/docs/src/core/components/ui/form/switch/switch.md +57 -0
  163. package/docs/src/core/components/ui/form/textarea/textarea.md +65 -0
  164. package/docs/src/core/components/ui/group/group.md +75 -0
  165. package/docs/src/core/components/ui/icon/icon.md +214 -0
  166. package/docs/src/core/components/ui/icon/icons.json +1 -0
  167. package/docs/src/core/components/ui/image/image.md +233 -0
  168. package/docs/src/core/components/ui/link/link.md +81 -0
  169. package/docs/src/core/components/ui/loader/loader.md +112 -0
  170. package/docs/src/core/components/ui/menu/menu.md +370 -0
  171. package/docs/src/core/components/ui/modal/modal.md +235 -0
  172. package/docs/src/core/components/ui/pop/pop.md +294 -0
  173. package/docs/src/core/components/ui/progress/progress.md +109 -0
  174. package/docs/src/core/components/ui/table/table.md +431 -0
  175. package/docs/src/core/components/ui/theme/theme.md +122 -0
  176. package/docs/src/core/components/ui/toast/toast.md +216 -0
  177. package/docs/src/core/components/ui/tooltip/tooltip.md +124 -0
  178. package/{src → docs/src}/docs/_core-concept/subscriber.md +0 -0
  179. package/{src → docs/src}/docs/_getting-started/my-first-subscriber.md +0 -0
  180. package/{src → docs/src}/docs/_getting-started/pubsub.md +0 -0
  181. package/docs/src/docs/_getting-started/theming.md +253 -0
  182. package/docs/src/docs/search/docs-search.json +12242 -0
  183. package/docs/src/tag-list.json +1 -0
  184. package/docs/src/tsconfig-model.json +23 -0
  185. package/docs/src/tsconfig.declarations.json +22 -0
  186. package/docs/src/tsconfig.emit.json +23 -0
  187. package/docs/src/tsconfig.json +1332 -0
  188. package/gitlab/job_github_mirror.sh +39 -0
  189. package/index.html +157 -5
  190. package/package.json +22 -4
  191. package/public/docs-mock-api-sw.js +58 -223
  192. package/public/docs-mock-api-sw.js.map +4 -4
  193. package/public/img/concorde/plane_01.jpg +0 -0
  194. package/public/img/concorde/plane_02.jpg +0 -0
  195. package/public/img/concorde/plane_03.jpg +0 -0
  196. package/public/img/concorde/plane_04.jpg +0 -0
  197. package/public/img/concorde/plane_05.jpg +0 -0
  198. package/public/img/concorde/plane_06.jpg +0 -0
  199. package/public/img/concorde/plane_07.jpg +0 -0
  200. package/public/img/concorde/plane_08.jpg +0 -0
  201. package/public/img/concorde/plane_09.jpg +0 -0
  202. package/public/img/concorde/plane_10.jpg +0 -0
  203. package/public/img/concorde/plane_11.jpg +0 -0
  204. package/public/img/concorde/plane_12.jpg +0 -0
  205. package/public/img/concorde/plane_13.jpg +0 -0
  206. package/public/img/og-concorde.jpg +0 -0
  207. package/public/robots.txt +11 -10
  208. package/scripts/ai-init.mjs +104 -379
  209. package/scripts/ai-init.test.mjs +81 -239
  210. package/scripts/docs-markdown-vite-plugin.ts +43 -0
  211. package/scripts/docs-public-url.mjs +56 -0
  212. package/scripts/docs.htaccess +82 -0
  213. package/scripts/generate-cem.mjs +244 -0
  214. package/scripts/generate-cem.test.mjs +122 -0
  215. package/scripts/generate-crawl-docs.mjs +233 -118
  216. package/scripts/generate-crawl-docs.test.mjs +124 -0
  217. package/scripts/generate-sdui-catalog.mjs +11 -10
  218. package/scripts/github-export.mjs +150 -0
  219. package/scripts/post-build-docs.js +37 -50
  220. package/scripts/post-build.mjs +0 -0
  221. package/scripts/pre-publish.mjs +2 -1
  222. package/scripts/site-pages.mjs +212 -0
  223. package/scripts/site-pages.test.mjs +116 -0
  224. package/site-pages/about.md +22 -0
  225. package/site-pages/privacy.md +32 -0
  226. package/src/core/components/functional/date/date.md +91 -231
  227. package/src/core/components/functional/example/example.ts +3 -1
  228. package/src/core/components/functional/fetch/fetch.md +66 -83
  229. package/src/core/components/functional/if/if.md +28 -3
  230. package/src/core/components/functional/if/if.ts +0 -0
  231. package/src/core/components/functional/jsonata/jsonata.md +42 -37
  232. package/src/core/components/functional/list/list.demo.ts +0 -0
  233. package/src/core/components/functional/list/list.md +103 -43
  234. package/src/core/components/functional/list/list.ts +17 -4
  235. package/src/core/components/functional/mix/mix.md +31 -26
  236. package/src/core/components/functional/queue/queue.demo.ts +10 -7
  237. package/src/core/components/functional/queue/queue.md +40 -61
  238. package/src/core/components/functional/router/router.demo.ts +16 -16
  239. package/src/core/components/functional/router/router.md +64 -65
  240. package/src/core/components/functional/router/router.ts +0 -0
  241. package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +0 -0
  242. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  243. package/src/core/components/functional/sdui/component-catalog.json +2 -2
  244. package/src/core/components/functional/sdui/example.json +19 -86
  245. package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  246. package/src/core/components/functional/sdui/sdui-immutable.spec.ts +74 -0
  247. package/src/core/components/functional/sdui/sdui.md +187 -358
  248. package/src/core/components/functional/sdui/sdui.ts +33 -8
  249. package/src/core/components/functional/sdui/types.ts +0 -0
  250. package/src/core/components/functional/states/states.demo.ts +21 -22
  251. package/src/core/components/functional/states/states.md +86 -61
  252. package/src/core/components/functional/states/states.ts +1 -1
  253. package/src/core/components/functional/submit/submit.md +64 -72
  254. package/src/core/components/functional/submit/submit.spec.ts +60 -0
  255. package/src/core/components/functional/submit/submit.ts +6 -3
  256. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  257. package/src/core/components/functional/translation/translation.md +38 -0
  258. package/src/core/components/functional/value/value.md +34 -22
  259. package/src/core/components/functional/value/value.ts +0 -0
  260. package/src/core/components/ui/_css/size.ts +0 -0
  261. package/src/core/components/ui/alert/alert.md +48 -58
  262. package/src/core/components/ui/badge/badge.md +27 -34
  263. package/src/core/components/ui/button/button.md +139 -106
  264. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  265. package/src/core/components/ui/captcha/captcha.md +17 -32
  266. package/src/core/components/ui/card/card.md +6 -6
  267. package/src/core/components/ui/divider/divider.md +8 -11
  268. package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
  269. package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
  270. package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
  271. package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
  272. package/src/core/components/ui/form/input/input.md +108 -90
  273. package/src/core/components/ui/form/input/input.ts +8 -2
  274. package/src/core/components/ui/form/radio/radio.md +65 -30
  275. package/src/core/components/ui/form/select/select.md +60 -45
  276. package/src/core/components/ui/form/switch/switch.md +57 -34
  277. package/src/core/components/ui/form/textarea/textarea.md +55 -38
  278. package/src/core/components/ui/group/group.md +35 -33
  279. package/src/core/components/ui/icon/icon.md +4 -4
  280. package/src/core/components/ui/image/image.md +41 -107
  281. package/src/core/components/ui/link/link.md +6 -6
  282. package/src/core/components/ui/loader/loader.md +30 -55
  283. package/src/core/components/ui/menu/menu.md +27 -27
  284. package/src/core/components/ui/modal/modal.md +72 -96
  285. package/src/core/components/ui/pop/pop.md +80 -158
  286. package/src/core/components/ui/progress/progress.md +2 -2
  287. package/src/core/components/ui/table/table.md +91 -255
  288. package/src/core/components/ui/theme/theme.md +11 -36
  289. package/src/core/components/ui/toast/toast.md +48 -117
  290. package/src/core/components/ui/tooltip/tooltip.md +27 -62
  291. package/src/core/decorators/subscriber/bind.ts +9 -14
  292. package/src/core/decorators/subscriber/subscribe.ts +15 -9
  293. package/src/core/decorators/subscriber/subscribe.type-test.ts +14 -5
  294. package/src/core/mixins/Subscriber.ts +0 -0
  295. package/src/core/utils/DataBindObserver.ts +0 -0
  296. package/src/core/utils/LocationHandler.spec.ts +80 -0
  297. package/src/core/utils/LocationHandler.ts +5 -9
  298. package/src/core/utils/Objects.ts +0 -0
  299. package/src/core/utils/PublisherProxy.ts +166 -125
  300. package/src/core/utils/deepReadonly.spec.ts +66 -0
  301. package/src/core/utils/deepReadonly.ts +71 -0
  302. package/src/core/utils/immutableValue.spec.ts +54 -0
  303. package/src/core/utils/immutableValue.ts +102 -0
  304. package/src/core/utils/nestedDotForm.spec.ts +88 -0
  305. package/src/core/utils/publisherImmutable.spec.ts +76 -0
  306. package/src/core/utils/route.ts +0 -0
  307. package/src/core/utils/strictGet.spec.ts +61 -0
  308. package/src/core/utils/strictGet.ts +102 -0
  309. package/src/css.d.ts +19 -0
  310. package/src/docs/components/docs-demo-sources.ts +55 -140
  311. package/src/docs/components/docs-lit-demo.ts +1 -3
  312. package/src/docs/components/docs-source-link.ts +0 -82
  313. package/src/docs/decorators/ancestor-attribute.md +59 -0
  314. package/src/docs/decorators/auto-subscribe.md +40 -0
  315. package/src/docs/decorators/bind.md +76 -0
  316. package/src/docs/decorators/get.md +160 -0
  317. package/src/docs/decorators/handle.md +119 -0
  318. package/src/docs/decorators/on-assign.md +63 -0
  319. package/src/docs/decorators/patch.md +44 -0
  320. package/src/docs/decorators/post.md +134 -0
  321. package/src/docs/decorators/publish.md +56 -0
  322. package/src/docs/decorators/put.md +51 -0
  323. package/src/docs/decorators/subscribe.md +87 -0
  324. package/src/docs/decorators/wait-for-ancestors.md +76 -0
  325. package/src/docs/directives/sub.md +75 -0
  326. package/src/docs/directives/t.md +73 -0
  327. package/src/docs/docs-location.spec.ts +56 -0
  328. package/src/docs/docs-location.ts +133 -32
  329. package/src/docs/docs.ts +1 -2
  330. package/src/docs/example/decorators-demo-bind-demos.ts +83 -135
  331. package/src/docs/example/decorators-demo-geo.ts +30 -19
  332. package/src/docs/example/decorators-demo-post.ts +88 -186
  333. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
  334. package/src/docs/example/decorators-demo.ts +85 -98
  335. package/src/docs/example/docs-api-config-demos.ts +19 -20
  336. package/src/docs/example/docs-flight-demos.ts +147 -0
  337. package/src/docs/example/docs-jsonata-demos.ts +52 -52
  338. package/src/docs/example/docs-list-demos.ts +43 -123
  339. package/src/docs/example/docs-provider-keys.ts +21 -28
  340. package/src/docs/example/docs-queue-demos.ts +37 -77
  341. package/src/docs/example/docs-router-demos.ts +20 -25
  342. package/src/docs/example/docs-submit-demos.ts +48 -48
  343. package/src/docs/example/docs-toggle-demos.ts +4 -3
  344. package/src/docs/example/users.ts +0 -0
  345. package/src/docs/getting-started/ai-agents.md +50 -0
  346. package/src/docs/getting-started/create-a-component.md +136 -0
  347. package/src/docs/getting-started/dataFlow.md +87 -0
  348. package/src/docs/getting-started/installation.md +36 -0
  349. package/src/docs/getting-started/my-first-component.md +227 -0
  350. package/src/docs/getting-started/start.md +35 -0
  351. package/src/docs/header/header.ts +11 -6
  352. package/src/docs/home/catalog.ts +1 -1
  353. package/src/docs/home/home.ts +20 -11
  354. package/src/docs/layout.ts +12 -13
  355. package/src/docs/misc/api-configuration.md +79 -0
  356. package/src/docs/misc/dataProviderKey.md +168 -0
  357. package/src/docs/misc/docs-mock-api.md +62 -0
  358. package/src/docs/misc/dynamic-path.md +71 -0
  359. package/src/docs/misc/endpoint.md +45 -0
  360. package/src/docs/misc/html-integration.md +14 -0
  361. package/src/docs/misc/publisher-get-immutability-docs-crawl.json +902 -0
  362. package/src/docs/misc/publisher-get-immutability-docs-recheck.json +13 -0
  363. package/src/docs/misc/publisher-get-immutability-study.md +229 -0
  364. package/src/docs/mock-api/api-config-mock.ts +5 -0
  365. package/src/docs/mock-api/fixtures.ts +0 -278
  366. package/src/docs/mock-api/flights.ts +89 -0
  367. package/src/docs/mock-api/router.ts +3 -4
  368. package/src/docs/mock-api/urls.ts +1 -2
  369. package/src/docs/navigation/navigation.ts +84 -101
  370. package/src/docs/navigation/toc.ts +7 -4
  371. package/src/docs/search/docs-search.json +3188 -5153
  372. package/src/docs/search/markdown-renderer.ts +31 -8
  373. package/src/docs/search/page.ts +9 -6
  374. package/src/docs/search/search.ts +154 -122
  375. package/src/docs/tailwind/css/docs/content.css +4 -5
  376. package/src/tsconfig.declarations.json +22 -0
  377. package/src/tsconfig.emit.json +23 -0
  378. package/src/tsconfig.json +53 -5
  379. package/src/tsconfig.tsbuildinfo +1 -1
  380. package/vite.config.mts +11 -2
  381. package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
  382. package/.taste-skill/after/desktop-fold.jpg +0 -0
  383. package/.taste-skill/after/desktop-page-01.jpg +0 -0
  384. package/.taste-skill/after/desktop-page-02.jpg +0 -0
  385. package/.taste-skill/after/desktop-page-03.jpg +0 -0
  386. package/.taste-skill/after/mobile-fold.jpg +0 -0
  387. package/.taste-skill/after/mobile-page-01.jpg +0 -0
  388. package/.taste-skill/after/report.json +0 -4103
  389. package/.taste-skill/after/tablet-fold.jpg +0 -0
  390. package/.taste-skill/after/tablet-page-01.jpg +0 -0
  391. package/.taste-skill/after/tablet-page-02.jpg +0 -0
  392. package/.taste-skill/before/desktop-fold.jpg +0 -0
  393. package/.taste-skill/before/desktop-page-01.jpg +0 -0
  394. package/.taste-skill/before/desktop-page-02.jpg +0 -0
  395. package/.taste-skill/before/mobile-fold.jpg +0 -0
  396. package/.taste-skill/before/mobile-page-01.jpg +0 -0
  397. package/.taste-skill/before/report.json +0 -2556
  398. package/.taste-skill/before/tablet-fold.jpg +0 -0
  399. package/.taste-skill/before/tablet-page-01.jpg +0 -0
  400. package/.taste-skill/direction.json +0 -510
  401. package/.taste-skill/notes.md +0 -84
  402. package/.taste-skill/prod/desktop-fold.jpg +0 -0
  403. package/.taste-skill/prod/desktop-page-01.jpg +0 -0
  404. package/.taste-skill/prod/desktop-page-02.jpg +0 -0
  405. package/.taste-skill/prod/desktop-page-03.jpg +0 -0
  406. package/.taste-skill/prod/mobile-fold.jpg +0 -0
  407. package/.taste-skill/prod/mobile-page-01.jpg +0 -0
  408. package/.taste-skill/prod/mobile-page-02.jpg +0 -0
  409. package/.taste-skill/prod/report.json +0 -1973
  410. package/.taste-skill/prod/tablet-fold.jpg +0 -0
  411. package/.taste-skill/prod/tablet-page-01.jpg +0 -0
  412. package/.taste-skill/prod/tablet-page-02.jpg +0 -0
  413. package/AUDIT.md +0 -228
  414. package/PLAN-AMELIORATION.md +0 -220
  415. package/ai/AGENTS.md +0 -56
  416. package/ai/cursor/rules/concorde-menu.mdc +0 -15
  417. package/ai/cursor/rules/concorde-scope.mdc +0 -14
  418. package/ai/cursor/rules/concorde-theme.mdc +0 -13
  419. package/ai/cursor/rules/concorde.mdc +0 -66
  420. package/ai/jetbrains/rules/concorde.md +0 -53
  421. package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
  422. package/ai/skills/concorde-imports/SKILL.md +0 -78
  423. package/ai/skills/concorde-menu/SKILL.md +0 -74
  424. package/ai/skills/concorde-scope/SKILL.md +0 -70
  425. package/ai/skills/concorde-theme/SKILL.md +0 -57
  426. package/docs/assets/index-Bb-_LRyY.js +0 -12280
  427. package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
  428. package/src/docs/example/docs-joke-demos.ts +0 -297
  429. /package/{src → docs/src}/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -0
  430. /package/{src → docs/src}/docs/_core-concept/dataFlow.md +0 -0
  431. /package/{src → docs/src}/docs/_core-concept/overview.md +0 -0
  432. /package/{src → docs/src}/docs/_decorators/ancestor-attribute.md +0 -0
  433. /package/{src → docs/src}/docs/_decorators/auto-subscribe.md +0 -0
  434. /package/{src → docs/src}/docs/_decorators/bind.md +0 -0
  435. /package/{src → docs/src}/docs/_decorators/get.md +0 -0
  436. /package/{src → docs/src}/docs/_decorators/handle.md +0 -0
  437. /package/{src → docs/src}/docs/_decorators/on-assign.md +0 -0
  438. /package/{src → docs/src}/docs/_decorators/patch.md +0 -0
  439. /package/{src → docs/src}/docs/_decorators/post.md +0 -0
  440. /package/{src → docs/src}/docs/_decorators/publish.md +0 -0
  441. /package/{src → docs/src}/docs/_decorators/put.md +0 -0
  442. /package/{src → docs/src}/docs/_decorators/subscribe.md +0 -0
  443. /package/{src → docs/src}/docs/_decorators/wait-for-ancestors.md +0 -0
  444. /package/{src → docs/src}/docs/_directives/sub.md +0 -0
  445. /package/{src → docs/src}/docs/_getting-started/ai-agents.md +0 -0
  446. /package/{src → docs/src}/docs/_getting-started/concorde-manual-install.md +0 -0
  447. /package/{src → docs/src}/docs/_getting-started/concorde-outside.md +0 -0
  448. /package/{src → docs/src}/docs/_getting-started/create-a-component.md +0 -0
  449. /package/{src → docs/src}/docs/_getting-started/my-first-component.md +0 -0
  450. /package/{src → docs/src}/docs/_getting-started/start.md +0 -0
  451. /package/{src → docs/src}/docs/_misc/api-configuration.md +0 -0
  452. /package/{src → docs/src}/docs/_misc/dataProviderKey.md +0 -0
  453. /package/{src → docs/src}/docs/_misc/docs-mock-api.md +0 -0
  454. /package/{src → docs/src}/docs/_misc/dynamic-path.md +0 -0
  455. /package/{src → docs/src}/docs/_misc/endpoint.md +0 -0
  456. /package/{src → docs/src}/docs/_misc/formelement-subscriber-removal.md +0 -0
  457. /package/{src → docs/src}/docs/_misc/html-integration.md +0 -0
  458. /package/src/docs/{_getting-started → getting-started}/components.md +0 -0
  459. /package/src/docs/{_getting-started → getting-started}/theming.md +0 -0
@@ -1,158 +1,65 @@
1
1
  # Table
2
2
 
3
- **`sonic-table`** lays out tabular data with composable **`sonic-tr`** / **`sonic-th`** / **`sonic-td`** children. The root applies shared typography via **`size`**, scrolls horizontally when content overflows, and optionally caps height with **`maxHeight`**. Pair with **`sonic-thead`** and **`sonic-tbody`** for structure and with **`sonic-list`** to render fetched rows.
3
+ **`sonic-table`** lays out tabular data with **`sonic-tr`** · **`sonic-th`** · **`sonic-td`** children, optionally grouped in **`sonic-thead`** · **`sonic-tbody`** · **`sonic-tfoot`**. It scrolls horizontally when columns overflow; set **`minWidth`** on wide cells to keep them readable. Render fetched rows with **`sonic-list`**.
4
4
 
5
5
  ## Basic example
6
6
 
7
- A header row plus body rows is enough for static tables; **`sonic-thead`** / **`sonic-tbody`** are optional for simple layouts.
8
-
9
- <sonic-code>
10
- <template>
11
- <sonic-table>
12
- <sonic-tr>
13
- <sonic-th>Id</sonic-th>
14
- <sonic-th>Name</sonic-th>
15
- <sonic-th>Email</sonic-th>
16
- </sonic-tr>
17
- <sonic-tr>
18
- <sonic-td>1</sonic-td>
19
- <sonic-td>George Bluth</sonic-td>
20
- <sonic-td>george.bluth@reqres.in</sonic-td>
21
- </sonic-tr>
22
- <sonic-tr>
23
- <sonic-td>2</sonic-td>
24
- <sonic-td>Janet Weaver</sonic-td>
25
- <sonic-td>janet.weaver@reqres.in</sonic-td>
26
- </sonic-tr>
27
- <sonic-tr>
28
- <sonic-td>3</sonic-td>
29
- <sonic-td>Emma Wong</sonic-td>
30
- <sonic-td>emma.wong@reqres.in</sonic-td>
31
- </sonic-tr>
32
- </sonic-table>
33
- </template>
34
- </sonic-code>
35
-
36
- ## List and fetch
37
-
38
- Place **`sonic-list`** inside **`sonic-tbody`** so each item template renders a **`sonic-tr`**. **`sonic-list`** sets row metadata (`even` / `odd` / `last`) on **`sonic-tr`** for striping and borders.
39
-
40
- <sonic-code>
41
- <template>
42
- <sonic-table>
43
- <sonic-thead>
44
- <sonic-tr>
45
- <sonic-th>Id</sonic-th>
46
- <sonic-th>Name</sonic-th>
47
- <sonic-th>Email</sonic-th>
48
- </sonic-tr>
49
- </sonic-thead>
50
- <sonic-tbody>
51
- <sonic-list debug fetch serviceURL="/docs-mock-api" dataProvider="api/users" key="data" displayContents>
52
- <template>
53
- <sonic-tr>
54
- <sonic-td data-bind ::inner-html="$id"></sonic-td>
55
- <sonic-td data-bind ::inner-html="$first_name <b>$last_name</b>"></sonic-td>
56
- <sonic-td data-bind ::inner-html="$email"></sonic-td>
57
- </sonic-tr>
58
- </template>
59
- </sonic-list>
60
- </sonic-tbody>
61
- </sonic-table>
62
- </template>
63
- </sonic-code>
64
-
65
- ## Size
66
-
67
- Default font size is **`md`** (omit **`size`**). Sizes follow the shared scale (`2xs` … `2xl`).
68
-
69
- <sonic-code>
70
- <template>
71
- <div class="grid grid-cols-4 gap-3">
72
- <sonic-table size="2xs" bordered>
73
- <sonic-tr><sonic-td class="w-[5rem]">2xs</sonic-td></sonic-tr>
74
- </sonic-table>
75
- <sonic-table size="xs" bordered>
76
- <sonic-tr><sonic-td class="w-[5rem]">xs</sonic-td></sonic-tr>
77
- </sonic-table>
78
- <sonic-table size="sm" bordered>
79
- <sonic-tr><sonic-td class="w-[5rem]">sm</sonic-td></sonic-tr>
80
- </sonic-table>
81
- <sonic-table size="md" bordered>
82
- <sonic-tr><sonic-td class="w-[5rem]">md</sonic-td></sonic-tr>
83
- </sonic-table>
84
- <sonic-table bordered>
85
- <sonic-tr><sonic-td class="w-[5rem]">default</sonic-td></sonic-tr>
86
- </sonic-table>
87
- <sonic-table size="lg" bordered>
88
- <sonic-tr><sonic-td class="w-[5rem]">lg</sonic-td></sonic-tr>
89
- </sonic-table>
90
- <sonic-table size="xl" bordered>
91
- <sonic-tr><sonic-td class="w-[5rem]">xl</sonic-td></sonic-tr>
92
- </sonic-table>
93
- <sonic-table size="2xl" bordered>
94
- <sonic-tr><sonic-td class="w-[5rem]">2xl</sonic-td></sonic-tr>
95
- </sonic-table>
96
- </div>
97
- </template>
98
- </sonic-code>
99
-
100
- ## Bordered
101
-
102
- Set **`bordered`** on **`sonic-table`** for an outer frame and horizontal rules between rows.
7
+ **`bordered`** adds an outer frame and row dividers. **`sonic-tbody`** stripes and highlights its rows on hover.
103
8
 
104
9
  <sonic-code>
105
10
  <template>
106
11
  <sonic-table bordered>
107
12
  <sonic-thead>
108
13
  <sonic-tr>
109
- <sonic-th>Id</sonic-th>
110
- <sonic-th>Name</sonic-th>
111
- <sonic-th>Email</sonic-th>
14
+ <sonic-th>Flight</sonic-th>
15
+ <sonic-th>Destination</sonic-th>
16
+ <sonic-th>Status</sonic-th>
112
17
  </sonic-tr>
113
18
  </sonic-thead>
114
19
  <sonic-tbody>
115
20
  <sonic-tr>
116
- <sonic-td>1</sonic-td>
117
- <sonic-td>George Bluth</sonic-td>
118
- <sonic-td>george.bluth@reqres.in</sonic-td>
21
+ <sonic-td>CN 001</sonic-td>
22
+ <sonic-td>New York JFK</sonic-td>
23
+ <sonic-td>Boarding</sonic-td>
119
24
  </sonic-tr>
120
25
  <sonic-tr>
121
- <sonic-td>2</sonic-td>
122
- <sonic-td>Janet Weaver</sonic-td>
123
- <sonic-td>janet.weaver@reqres.in</sonic-td>
26
+ <sonic-td>CN 014</sonic-td>
27
+ <sonic-td>London LHR</sonic-td>
28
+ <sonic-td>On time</sonic-td>
124
29
  </sonic-tr>
125
30
  <sonic-tr>
126
- <sonic-td>3</sonic-td>
127
- <sonic-td>Emma Wong</sonic-td>
128
- <sonic-td>emma.wong@reqres.in</sonic-td>
31
+ <sonic-td>CN 102</sonic-td>
32
+ <sonic-td>Rio de Janeiro GIG</sonic-td>
33
+ <sonic-td>Delayed</sonic-td>
129
34
  </sonic-tr>
130
35
  </sonic-tbody>
131
36
  </sonic-table>
132
37
  </template>
133
38
  </sonic-code>
134
39
 
135
- ## Max height
40
+ ## List, fetch and max height
136
41
 
137
- **`maxHeight`** applies to the scroll container (for example `8rem`), so the body scrolls vertically while the table can still scroll horizontally.
42
+ Put a **`sonic-list`** with `displayContents` inside **`sonic-tbody`** and render one **`sonic-tr`** per item; the list sets `even` · `odd` · `last` on each row. **`maxHeight`** caps the scroll container so the body scrolls vertically.
138
43
 
139
44
  <sonic-code>
140
45
  <template>
141
- <sonic-table maxHeight="8rem">
46
+ <sonic-table maxHeight="10rem">
142
47
  <sonic-thead>
143
48
  <sonic-tr>
144
- <sonic-th>Id</sonic-th>
145
- <sonic-th>Name</sonic-th>
146
- <sonic-th>Email</sonic-th>
49
+ <sonic-th>Time</sonic-th>
50
+ <sonic-th>Flight</sonic-th>
51
+ <sonic-th>Destination</sonic-th>
52
+ <sonic-th>Gate</sonic-th>
147
53
  </sonic-tr>
148
54
  </sonic-thead>
149
55
  <sonic-tbody>
150
- <sonic-list fetch serviceURL="/docs-mock-api" dataProvider="api/users" key="data" displayContents>
56
+ <sonic-list fetch serviceURL="/docs-mock-api" dataProvider="flights" key="flights" displayContents>
151
57
  <template>
152
58
  <sonic-tr>
153
- <sonic-td data-bind ::inner-html="$id"></sonic-td>
154
- <sonic-td data-bind ::inner-html="$first_name <b>$last_name</b>"></sonic-td>
155
- <sonic-td data-bind ::inner-html="$email"></sonic-td>
59
+ <sonic-td data-bind ::inner-html="$time"></sonic-td>
60
+ <sonic-td data-bind ::inner-html="$code"></sonic-td>
61
+ <sonic-td minWidth="10rem" data-bind ::inner-html="$city <b>$airport</b>"></sonic-td>
62
+ <sonic-td data-bind ::inner-html="$gate"></sonic-td>
156
63
  </sonic-tr>
157
64
  </template>
158
65
  </sonic-list>
@@ -161,23 +68,41 @@ Set **`bordered`** on **`sonic-table`** for an outer frame and horizontal rules
161
68
  </template>
162
69
  </sonic-code>
163
70
 
71
+ ## Size
72
+
73
+ With no **`size`**, the table uses `md`.
74
+
75
+ <sonic-code>
76
+ <template>
77
+ <div class="grid grid-cols-4 gap-3">
78
+ <sonic-table size="2xs" bordered><sonic-tr><sonic-td>2xs</sonic-td></sonic-tr></sonic-table>
79
+ <sonic-table size="xs" bordered><sonic-tr><sonic-td>xs</sonic-td></sonic-tr></sonic-table>
80
+ <sonic-table size="sm" bordered><sonic-tr><sonic-td>sm</sonic-td></sonic-tr></sonic-table>
81
+ <sonic-table size="md" bordered><sonic-tr><sonic-td>md</sonic-td></sonic-tr></sonic-table>
82
+ <sonic-table size="lg" bordered><sonic-tr><sonic-td>lg</sonic-td></sonic-tr></sonic-table>
83
+ <sonic-table size="xl" bordered><sonic-tr><sonic-td>xl</sonic-td></sonic-tr></sonic-table>
84
+ <sonic-table size="2xl" bordered><sonic-tr><sonic-td>2xl</sonic-td></sonic-tr></sonic-table>
85
+ </div>
86
+ </template>
87
+ </sonic-code>
88
+
164
89
  ## Type
165
90
 
166
- Set **`type`** on **`sonic-th`** / **`sonic-td`** / **`sonic-tr`** for semantic text color (`primary` · `info` · `success` · `warning` · `danger` · `neutral` · `default`).
91
+ **`type`** on **`sonic-tr`** · **`sonic-th`** · **`sonic-td`** sets a semantic text color.
167
92
 
168
93
  <sonic-code>
169
94
  <template>
170
95
  <sonic-table bordered>
171
96
  <sonic-tr>
172
- <sonic-th type="info">Attribute type set on</sonic-th>
97
+ <sonic-th type="info">Set on</sonic-th>
173
98
  <sonic-th type="info">sonic-th</sonic-th>
174
99
  </sonic-tr>
175
100
  <sonic-tr>
176
- <sonic-td type="danger">Attribute type set on</sonic-td>
101
+ <sonic-td type="danger">Set on</sonic-td>
177
102
  <sonic-td type="danger">sonic-td</sonic-td>
178
103
  </sonic-tr>
179
104
  <sonic-tr type="success">
180
- <sonic-td>Attribute type set on</sonic-td>
105
+ <sonic-td>Set on</sonic-td>
181
106
  <sonic-td>sonic-tr</sonic-td>
182
107
  </sonic-tr>
183
108
  </sonic-table>
@@ -186,11 +111,9 @@ Set **`type`** on **`sonic-th`** / **`sonic-td`** / **`sonic-tr`** for semantic
186
111
 
187
112
  ## Colspan and rowspan
188
113
 
189
- Use **`colSpan`** and **`rowSpan`** on **`sonic-th`** or **`sonic-td`** (maps to `colspan` / `rowspan` on the cell).
190
-
191
114
  <sonic-code>
192
115
  <template>
193
- <sonic-table>
116
+ <sonic-table bordered>
194
117
  <sonic-tbody>
195
118
  <sonic-tr>
196
119
  <sonic-td colspan="2" class="bg-info text-neutral-0">colspan: 2</sonic-td>
@@ -210,73 +133,36 @@ Use **`colSpan`** and **`rowSpan`** on **`sonic-th`** or **`sonic-td`** (maps to
210
133
  </template>
211
134
  </sonic-code>
212
135
 
213
- ## Cell alignment and width
136
+ ## Alignment and width
214
137
 
215
- **`align`** sets horizontal alignment (`left` · `center` · `right`). **`minWidth`** / **`maxWidth`** / **`width`** set inline dimensions on the cell. **`vAlign`** is available on **`sonic-td`** only.
138
+ **`align`** sets horizontal alignment. **`width`** · **`minWidth`** · **`maxWidth`** set the cell dimensions. **`vAlign`** exists on **`sonic-td`** only.
216
139
 
217
140
  <sonic-code>
218
141
  <template>
219
142
  <sonic-table bordered>
220
143
  <sonic-thead>
221
144
  <sonic-tr>
222
- <sonic-th width="7rem">align</sonic-th>
223
- <sonic-th minWidth="20rem">minWidth</sonic-th>
224
- <sonic-th>maxWidth</sonic-th>
225
- <sonic-th>width</sonic-th>
145
+ <sonic-th width="8rem">align</sonic-th>
146
+ <sonic-th maxWidth="8rem">maxWidth 8rem</sonic-th>
147
+ <sonic-th>vAlign</sonic-th>
226
148
  </sonic-tr>
227
149
  </sonic-thead>
228
150
  <sonic-tbody>
229
151
  <sonic-tr>
230
- <sonic-td align="left">Left</sonic-td>
231
- <sonic-td>20rem</sonic-td>
232
- <sonic-td>5rem</sonic-td>
233
- <sonic-td>15rem</sonic-td>
152
+ <sonic-td align="left">left</sonic-td>
153
+ <sonic-td maxWidth="8rem">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</sonic-td>
154
+ <sonic-td vAlign="top">top</sonic-td>
234
155
  </sonic-tr>
235
156
  <sonic-tr>
236
157
  <sonic-td align="center">center</sonic-td>
237
- <sonic-td>20rem</sonic-td>
238
- <sonic-td maxWidth="5rem">5rem</sonic-td>
239
- <sonic-td>15rem</sonic-td>
158
+ <sonic-td maxWidth="8rem">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</sonic-td>
159
+ <sonic-td vAlign="middle">middle</sonic-td>
240
160
  </sonic-tr>
241
161
  <sonic-tr>
242
162
  <sonic-td align="right">right</sonic-td>
243
- <sonic-td>20rem</sonic-td>
244
- <sonic-td maxWidth="5rem">5rem — Lorem ipsum dolor</sonic-td>
245
- <sonic-td width="60rem">15rem — Lorem ipsum dolor sit amet, consectetur adipiscing elit.</sonic-td>
246
- </sonic-tr>
247
- </sonic-tbody>
248
- </sonic-table>
249
- </template>
250
- </sonic-code>
251
-
252
- ## Responsive layout
253
-
254
- Tables scroll horizontally by default when columns exceed the viewport. Use **`minWidth`** on wide columns to preserve readable line length.
255
-
256
- <sonic-code>
257
- <template>
258
- <sonic-table bordered>
259
- <sonic-thead>
260
- <sonic-tr>
261
- <sonic-th>Id</sonic-th>
262
- <sonic-th>Name</sonic-th>
263
- <sonic-th>Email</sonic-th>
264
- <sonic-th>Comment</sonic-th>
163
+ <sonic-td maxWidth="8rem">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</sonic-td>
164
+ <sonic-td vAlign="bottom">bottom</sonic-td>
265
165
  </sonic-tr>
266
- </sonic-thead>
267
- <sonic-tbody>
268
- <sonic-list fetch serviceURL="/docs-mock-api" dataProvider="api/users" key="data" displayContents>
269
- <template>
270
- <sonic-tr>
271
- <sonic-td data-bind ::inner-html="$id"></sonic-td>
272
- <sonic-td minWidth="10rem" data-bind ::inner-html="$first_name <b>$last_name</b>"></sonic-td>
273
- <sonic-td data-bind ::inner-html="$email"></sonic-td>
274
- <sonic-td minWidth="40rem">
275
- Phasellus suscipit vulputate lacus, in tempor turpis aliquam vel. Nunc eleifend, velit id ultrices elementum, ipsum felis porttitor dui, id laoreet diam nulla sed urna.
276
- </sonic-td>
277
- </sonic-tr>
278
- </template>
279
- </sonic-list>
280
166
  </sonic-tbody>
281
167
  </sonic-table>
282
168
  </template>
@@ -284,16 +170,14 @@ Tables scroll horizontally by default when columns exceed the viewport. Use **`m
284
170
 
285
171
  ## Sticky header and caption
286
172
 
287
- **`sonic-th`** uses `position: sticky` with `top: 0` inside the table. For page-level sticky headers, set **`noCustomScroll`** on **`sonic-table`** and position **`sonic-thead`** (for example `class="sticky top-16"`). Add **`sonic-caption`** for a table title below the grid.
173
+ **`sonic-th`** cells stick to the top of the scroll container. To stick the header to the page instead, set **`noCustomScroll`** (which removes the scroll container) and position **`sonic-thead`** yourself. **`sonic-caption`** adds a caption.
288
174
 
289
175
  <sonic-code>
290
176
  <template>
291
177
  <sonic-table bordered noCustomScroll>
292
178
  <sonic-thead class="sticky top-16">
293
179
  <sonic-tr>
294
- <sonic-th minWidth="max(20ch,12rem)">Company</sonic-th>
295
- <sonic-th type="success">Contact</sonic-th>
296
- <sonic-th>Country</sonic-th>
180
+ <sonic-th minWidth="12rem">Product</sonic-th>
297
181
  <sonic-th align="center">Quantity</sonic-th>
298
182
  <sonic-th align="right">Price</sonic-th>
299
183
  <sonic-th></sonic-th>
@@ -301,54 +185,37 @@ Tables scroll horizontally by default when columns exceed the viewport. Use **`m
301
185
  </sonic-thead>
302
186
  <sonic-tbody>
303
187
  <sonic-tr>
304
- <sonic-td>Alfreds Futterkiste</sonic-td>
305
- <sonic-td>Maria Anders</sonic-td>
306
- <sonic-td>Germany</sonic-td>
188
+ <sonic-td>Desk lamp</sonic-td>
307
189
  <sonic-td align="center">2</sonic-td>
308
- <sonic-td align="right">40€</sonic-td>
309
- <sonic-td align="right">
310
- <sonic-button shape="circle" variant="outline" size="sm">
311
- <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon>
312
- </sonic-button>
313
- </sonic-td>
314
- </sonic-tr>
315
- <sonic-tr>
316
- <sonic-td>Centro comercial Moctezuma</sonic-td>
317
- <sonic-td colspan="2" align="center" class="text-center text-neutral-400">no information yet</sonic-td>
318
- <sonic-td align="center">3</sonic-td>
319
- <sonic-td align="right">40€</sonic-td>
190
+ <sonic-td align="right">40 €</sonic-td>
320
191
  <sonic-td align="right">
321
- <sonic-button shape="circle" variant="outline" size="sm">
192
+ <sonic-button shape="circle" variant="outline" size="sm" aria-label="Edit">
322
193
  <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon>
323
194
  </sonic-button>
324
195
  </sonic-td>
325
196
  </sonic-tr>
326
197
  <sonic-tr type="warning">
327
- <sonic-td>Laughing Bacchus Winecellars</sonic-td>
328
- <sonic-td>Yoshi Tannamuri</sonic-td>
329
- <sonic-td>Canada</sonic-td>
198
+ <sonic-td>Notebook</sonic-td>
330
199
  <sonic-td align="center">0</sonic-td>
331
- <sonic-td align="right">40€</sonic-td>
200
+ <sonic-td align="right">8 €</sonic-td>
332
201
  <sonic-td align="right">
333
- <sonic-button shape="circle" variant="outline" size="sm">
202
+ <sonic-button shape="circle" variant="outline" size="sm" aria-label="Edit">
334
203
  <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon>
335
204
  </sonic-button>
336
205
  </sonic-td>
337
206
  </sonic-tr>
338
207
  <sonic-tr>
339
- <sonic-td>Magazzini Alimentari Riuniti</sonic-td>
340
- <sonic-td>Giovanni Rovelli</sonic-td>
341
- <sonic-td type="danger">Italy</sonic-td>
342
- <sonic-td align="center">20</sonic-td>
343
- <sonic-td align="right">40€</sonic-td>
208
+ <sonic-td>Headphones</sonic-td>
209
+ <sonic-td align="center">1</sonic-td>
210
+ <sonic-td align="right" type="danger">120 €</sonic-td>
344
211
  <sonic-td align="right">
345
- <sonic-button shape="circle" variant="outline" size="sm">
212
+ <sonic-button shape="circle" variant="outline" size="sm" aria-label="Edit">
346
213
  <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon>
347
214
  </sonic-button>
348
215
  </sonic-td>
349
216
  </sonic-tr>
350
217
  </sonic-tbody>
351
- <sonic-caption>Table caption</sonic-caption>
218
+ <sonic-caption>Cart contents</sonic-caption>
352
219
  </sonic-table>
353
220
  </template>
354
221
  </sonic-code>
@@ -359,72 +226,41 @@ Tables scroll horizontally by default when columns exceed the viewport. Use **`m
359
226
 
360
227
  | Attribute | Values | Description |
361
228
  |----------|---------|-------------|
362
- | `size` | `2xs` · `xs` · `sm` · `md` · `lg` · `xl` · `2xl` · `inherit` (default `md`) | Scales table font size via shared size tokens |
229
+ | `size` | `2xs` … `2xl` · `inherit` (default `md`) | Font size |
363
230
  | `bordered` | boolean | Outer border and row dividers |
364
- | `noCustomScroll` | boolean | Disables custom scrollbar styling on the horizontal scroll container |
365
- | `rounded` | boolean | Reflected on the host; no default table styles |
366
- | `maxHeight` | CSS length | Max height on the scroll container; enables vertical scrolling |
367
-
368
- | Slot | Description |
369
- |------|-------------|
370
- | *(default)* | Table sections and rows (`sonic-thead`, `sonic-tbody`, `sonic-tr`, …) |
371
-
372
- ### `sonic-thead` · `sonic-tbody` · `sonic-tfoot`
231
+ | `maxHeight` | CSS length | Max height of the scroll container |
232
+ | `noCustomScroll` | boolean | Remove the scroll container and its custom scrollbar |
373
233
 
374
234
  | Slot | Description |
375
235
  |------|-------------|
376
- | *(default)* | Row elements (`sonic-tr`) |
377
-
378
- `sonic-tbody` wraps slotted rows in a native `<tbody>` and applies zebra / hover backgrounds to **`sonic-tr`** children.
236
+ | *(default)* | Sections, rows and caption |
379
237
 
380
- ### `sonic-caption`
238
+ ### `sonic-thead` · `sonic-tbody` · `sonic-tfoot` · `sonic-caption`
381
239
 
382
- | Slot | Description |
383
- |------|-------------|
384
- | *(default)* | Caption text rendered as `table-caption` |
240
+ No attributes. Default slot only. `sonic-tbody` stripes and highlights its rows.
385
241
 
386
242
  ### `sonic-tr`
387
243
 
388
244
  | Attribute | Values | Description |
389
245
  |----------|---------|-------------|
390
- | `type` | `default` · `primary` · `info` · `success` · `warning` · `danger` · `neutral` | Semantic text color for the row |
391
- | `even` | boolean | Striping background; usually set by **`sonic-list`** metadata |
392
- | `odd` | boolean | Alternate striping background; usually set by **`sonic-list`** |
393
- | `last` | boolean | Removes bottom cell border on the last row when **`bordered`** |
394
-
395
- | Slot | Description |
396
- |------|-------------|
397
- | *(default)* | Header or data cells (`sonic-th` / `sonic-td`) |
398
-
399
- ### `sonic-th`
400
-
401
- | Attribute | Values | Description |
402
- |----------|---------|-------------|
403
- | `type` | `default` · `primary` · `info` · `success` · `warning` · `danger` · `neutral` | Semantic text color |
404
- | `align` | `left` · `center` · `right` | Horizontal text alignment |
405
- | `colSpan` | number | Column span |
406
- | `rowSpan` | number | Row span |
407
- | `minWidth` | CSS length | Minimum cell width |
408
- | `maxWidth` | CSS length | Maximum cell width |
409
- | `width` | CSS length | Cell width |
410
- | `noBorder` | boolean | Removes the bottom border under the header cell |
246
+ | `type` | `default` · `primary` · `info` · `success` · `warning` · `danger` · `neutral` | Text color |
247
+ | `even` · `odd` | boolean | Striping background; set by `sonic-list` |
248
+ | `last` | boolean | No bottom border; set by `sonic-list` |
411
249
 
412
250
  | Slot | Description |
413
251
  |------|-------------|
414
- | *(default)* | Header label content |
252
+ | *(default)* | `sonic-th` or `sonic-td` cells |
415
253
 
416
- ### `sonic-td`
254
+ ### `sonic-th` · `sonic-td`
417
255
 
418
256
  | Attribute | Values | Description |
419
257
  |----------|---------|-------------|
420
- | `type` | `default` · `primary` · `info` · `success` · `warning` · `danger` · `neutral` | Semantic text color |
421
- | `align` | `left` · `center` · `right` | Horizontal text alignment |
422
- | `vAlign` | CSS `vertical-align` value | Vertical alignment |
423
- | `colSpan` | number | Column span |
424
- | `rowSpan` | number | Row span |
425
- | `minWidth` | CSS length | Minimum cell width |
426
- | `maxWidth` | CSS length | Maximum cell width |
427
- | `width` | CSS length | Cell width |
258
+ | `type` | same as `sonic-tr` | Text color |
259
+ | `align` | `left` · `center` · `right` | Horizontal alignment |
260
+ | `vAlign` | CSS `vertical-align` | Vertical alignment (`sonic-td` only) |
261
+ | `colSpan` · `rowSpan` | number | Column and row span |
262
+ | `width` · `minWidth` · `maxWidth` | CSS length | Cell dimensions |
263
+ | `noBorder` | boolean | No bottom border (`sonic-th` only) |
428
264
 
429
265
  | Slot | Description |
430
266
  |------|-------------|
@@ -1,11 +1,9 @@
1
1
  # Theme
2
2
 
3
- **`sonic-theme`** wraps a Concorde UI: it registers **`--sc-*`** design tokens and provides the default slot for your app. With no **`theme`** attribute (or **`theme="custom"`**), only shared primitives and your overrides apply—built-in **`light`** / **`dark`** / **`auto`** palettes are opt-in. Set **`color`** and **`font`** when the host should carry base text and typography; add Tailwind **`bg-base`** and **`block`** (or **`min-h-screen`**) on the tag for a full surface fill. **Popovers**, **modals**, and **toasts** mount under the nearest connected theme (see [Pop container](#pop-container)). Import **`@supersoniks/concorde/theme`** once at the app entry. For the full public token list and brand overrides, see [Customization](#docs/_getting-started/theming.md/theming).
3
+ **`sonic-theme`** is the root element of a Concorde UI: it holds the `--sc-*` design tokens, optionally applies a built-in palette, and is where popovers, modals and toasts are mounted. Import `@supersoniks/concorde/theme` once at the app entry and wrap your app in it. Token names and brand overrides are covered in [Theming](/docs/getting-started/theming).
4
4
 
5
5
  ## Basic example
6
6
 
7
- Wrap interactive components so tokens and overlays resolve from one root.
8
-
9
7
  <sonic-code>
10
8
  <template>
11
9
  <sonic-theme color font class="block bg-base p-6 rounded-lg">
@@ -16,9 +14,7 @@ Wrap interactive components so tokens and overlays resolve from one root.
16
14
 
17
15
  ## Theme mode
18
16
 
19
- **Default:** omit **`theme`** or set **`theme="custom"`**. The host loads core tokens (`--sc-rounded`, shadows, form defaults, …) and any **`--sc-*`** you set; it does **not** apply the built-in light or dark palette.
20
-
21
- Set **`theme`** to **`light`** or **`dark`** for Concorde’s preset palettes. Set **`theme="auto"`** to follow **`prefers-color-scheme`** (light palette until the OS prefers dark).
17
+ With no `theme` (or `theme="custom"`), only the core tokens and your own `--sc-*` overrides apply. `light` and `dark` apply the built-in palettes; `auto` switches between them with `prefers-color-scheme`.
22
18
 
23
19
  <sonic-code>
24
20
  <template>
@@ -43,39 +39,21 @@ Set **`theme`** to **`light`** or **`dark`** for Concorde’s preset palettes. S
43
39
  </template>
44
40
  </sonic-code>
45
41
 
46
- ## Presentation
42
+ ## Text color and font
47
43
 
48
- **`color`** sets text from **`--sc-base-content`**. **`font`** applies **`--sc-font-family-base`**, **`--sc-font-weight-base`**, and **`--sc-font-style-base`**. For the page or shell background, use **`bg-base`** on **`sonic-theme`** (maps to **`--sc-base`** in Tailwind) with **`block`** so the host paints the surface. Components keep their own fallbacks when **`color`** / **`font`** are omitted.
44
+ `color` sets the host text color to `--sc-base-content`. `font` applies the base font family, weight and style tokens. Both are off by default. To paint the background, add the Tailwind classes `block` and `bg-base` on the host.
49
45
 
50
46
  <sonic-code>
51
47
  <template>
52
- <sonic-theme theme="light" color font class="block bg-base p-6 min-h-[8rem] rounded-lg">
53
- <p>Body copy inherits base content color and font from the theme host.</p>
54
- </sonic-theme>
55
- </template>
56
- </sonic-code>
57
-
58
- ## Custom tokens
59
-
60
- Override **primitives** on **`sonic-theme`** (or **`:root`** / a project stylesheet). Derived radii, shadows, and control rounding are computed from tokens such as **`--sc-rounded`**—avoid copying long lists of internal variables unless you have a specific need.
61
-
62
- <sonic-code>
63
- <template>
64
- <sonic-theme
65
- theme="custom"
66
- color
67
- font
68
- class="block bg-base p-6 rounded-lg"
69
- style="--sc-primary: #353429; --sc-rounded: 0.25rem;"
70
- >
71
- <sonic-button type="primary">Brand primary</sonic-button>
48
+ <sonic-theme theme="light" color font class="block bg-base p-6 rounded-lg">
49
+ <p>Body copy inherits the base content color and font from the theme.</p>
72
50
  </sonic-theme>
73
51
  </template>
74
52
  </sonic-code>
75
53
 
76
54
  ## Pop container
77
55
 
78
- **`Theme.getPopContainer()`** returns the last connected **`sonic-theme`**, or **`document.body`** if none is connected. When a theme disconnects, the previous connected instance is adopted. Imperative **`Modal.create()`** and declarative **`sonic-modal`** use the same container.
56
+ Overlays such as `sonic-modal` are appended to the last connected `sonic-theme`, or to `document.body` when there is none. `Theme.getPopContainer()` returns that element.
79
57
 
80
58
  <sonic-code>
81
59
  <template>
@@ -98,11 +76,10 @@ Override **primitives** on **`sonic-theme`** (or **`:root`** / a project stylesh
98
76
 
99
77
  ## Embedded iframes
100
78
 
101
- On connect, the theme publishes resolved **`--sc-*`** values and linked font stylesheet URLs (Google Fonts / Adobe Fonts) to the **`sonic-theme`** data channel and **`postMessage`**s them to same-page iframes. Iframes can request a refresh by posting **`{ type: "GetSonicTheme" }`**.
79
+ On connect, the theme posts its resolved `--sc-*` values and linked Google Fonts / Adobe Fonts stylesheets to every iframe on the page (message type `SonicTheme`). An iframe can ask for them again:
102
80
 
103
81
  <sonic-code language="javascript">
104
82
  <template>
105
- // Inside the iframe — ask the parent theme to rebroadcast tokens
106
83
  window.parent.postMessage({ type: "GetSonicTheme" }, "*");
107
84
  </template>
108
85
  </sonic-code>
@@ -111,12 +88,10 @@ window.parent.postMessage({ type: "GetSonicTheme" }, "*");
111
88
 
112
89
  | Attribute | Values | Description |
113
90
  |----------|---------|-------------|
114
- | `theme` | omitted · `custom` (default) · `light` · `dark` · `auto` | Omitted or `custom`: core tokens and your `--sc-*` only. `light` / `dark`: fixed presets. `auto`: presets follow `prefers-color-scheme` |
91
+ | `theme` | `custom` (default) · `light` · `dark` · `auto` | Built-in palette; `custom` applies core tokens and your overrides only |
115
92
  | `color` | boolean | Host text color uses `--sc-base-content` |
116
- | `font` | boolean | Host font uses `--sc-font-family-base` and related base weight/style tokens |
93
+ | `font` | boolean | Host uses the base font family, weight and style tokens |
117
94
 
118
95
  | Slot | Description |
119
96
  |------|-------------|
120
- | *(default)* | Application markup and Concorde components |
121
-
122
- Surface background: Tailwind **`bg-base`** on **`sonic-theme`** (requires Concorde Tailwind color **`base`** → **`--sc-base`**).
97
+ | *(default)* | Application content |