@supersoniks/concorde 5.0.2 → 5.0.4

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 (266) hide show
  1. package/.github/workflows/ci.yml +21 -0
  2. package/.github-export-ignore +30 -0
  3. package/CONTRIBUTING.md +59 -0
  4. package/DEV.md +54 -0
  5. package/LICENSE +21 -0
  6. package/OPEN_SOURCE_CHECKPOINT.md +133 -0
  7. package/build-infos.json +1 -1
  8. package/concorde-core.bundle.js +66 -66
  9. package/concorde-core.es.js +1368 -1318
  10. package/dist/concorde-core.bundle.js +66 -66
  11. package/dist/concorde-core.es.js +1368 -1318
  12. package/docs/altcha-widget.js +2662 -0
  13. package/docs/assets/index-D8MVWqY6.js +12251 -0
  14. package/docs/assets/index-DiD0qYvE.css +1 -0
  15. package/docs/crawl/core/components/functional/date/date.html +190 -0
  16. package/docs/crawl/core/components/functional/fetch/fetch.html +109 -0
  17. package/docs/crawl/core/components/functional/if/if.html +27 -0
  18. package/docs/crawl/core/components/functional/jsonata/jsonata.html +79 -0
  19. package/docs/crawl/core/components/functional/list/list.html +70 -0
  20. package/docs/crawl/core/components/functional/mix/mix.html +45 -0
  21. package/docs/crawl/core/components/functional/queue/queue.html +96 -0
  22. package/docs/crawl/core/components/functional/router/router.html +106 -0
  23. package/docs/crawl/core/components/functional/sdui/sdui.html +269 -0
  24. package/docs/crawl/core/components/functional/states/states.html +66 -0
  25. package/docs/crawl/core/components/functional/submit/submit.html +160 -0
  26. package/docs/crawl/core/components/functional/subscriber/subscriber.html +67 -0
  27. package/docs/crawl/core/components/functional/value/value.html +51 -0
  28. package/docs/crawl/core/components/ui/alert/alert.html +110 -0
  29. package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +23 -0
  30. package/docs/crawl/core/components/ui/badge/badge.html +119 -0
  31. package/docs/crawl/core/components/ui/button/button.html +149 -0
  32. package/docs/crawl/core/components/ui/captcha/captcha.html +30 -0
  33. package/docs/crawl/core/components/ui/card/card.html +99 -0
  34. package/docs/crawl/core/components/ui/divider/divider.html +58 -0
  35. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +73 -0
  36. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +135 -0
  37. package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +79 -0
  38. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +62 -0
  39. package/docs/crawl/core/components/ui/form/input/input.html +109 -0
  40. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +38 -0
  41. package/docs/crawl/core/components/ui/form/radio/radio.html +56 -0
  42. package/docs/crawl/core/components/ui/form/select/select.html +73 -0
  43. package/docs/crawl/core/components/ui/form/switch/switch.html +56 -0
  44. package/docs/crawl/core/components/ui/form/textarea/textarea.html +59 -0
  45. package/docs/crawl/core/components/ui/group/group.html +82 -0
  46. package/docs/crawl/core/components/ui/icon/icon.html +133 -0
  47. package/docs/crawl/core/components/ui/image/image.html +110 -0
  48. package/docs/crawl/core/components/ui/link/link.html +42 -0
  49. package/docs/crawl/core/components/ui/loader/loader.html +50 -0
  50. package/docs/crawl/core/components/ui/menu/menu.html +322 -0
  51. package/docs/crawl/core/components/ui/modal/modal.html +117 -0
  52. package/docs/crawl/core/components/ui/pop/pop.html +102 -0
  53. package/docs/crawl/core/components/ui/progress/progress.html +58 -0
  54. package/docs/crawl/core/components/ui/table/table.html +413 -0
  55. package/docs/crawl/core/components/ui/toast/toast.html +122 -0
  56. package/docs/crawl/core/components/ui/tooltip/tooltip.html +79 -0
  57. package/docs/crawl/docs/_core-concept/dataFlow.html +177 -0
  58. package/docs/crawl/docs/_core-concept/overview.html +66 -0
  59. package/docs/crawl/docs/_core-concept/subscriber.html +75 -0
  60. package/docs/crawl/docs/_decorators/ancestor-attribute.html +116 -0
  61. package/docs/crawl/docs/_decorators/auto-subscribe.html +202 -0
  62. package/docs/crawl/docs/_decorators/bind.html +141 -0
  63. package/docs/crawl/docs/_decorators/get.html +149 -0
  64. package/docs/crawl/docs/_decorators/handle.html +165 -0
  65. package/docs/crawl/docs/_decorators/on-assign.html +355 -0
  66. package/docs/crawl/docs/_decorators/patch.html +78 -0
  67. package/docs/crawl/docs/_decorators/post.html +139 -0
  68. package/docs/crawl/docs/_decorators/publish.html +61 -0
  69. package/docs/crawl/docs/_decorators/put.html +78 -0
  70. package/docs/crawl/docs/_decorators/subscribe.html +109 -0
  71. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +137 -0
  72. package/docs/crawl/docs/_directives/sub.html +93 -0
  73. package/docs/crawl/docs/_getting-started/ai-agents.html +173 -0
  74. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +100 -0
  75. package/docs/crawl/docs/_getting-started/concorde-outside.html +58 -0
  76. package/docs/crawl/docs/_getting-started/create-a-component.html +111 -0
  77. package/docs/crawl/docs/_getting-started/my-first-component.html +189 -0
  78. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +110 -0
  79. package/docs/crawl/docs/_getting-started/pubsub.html +62 -0
  80. package/docs/crawl/docs/_getting-started/start.html +76 -0
  81. package/docs/crawl/docs/_getting-started/theming.html +85 -0
  82. package/docs/crawl/docs/_misc/api-configuration.html +149 -0
  83. package/docs/crawl/docs/_misc/dataProviderKey.html +135 -0
  84. package/docs/crawl/docs/_misc/docs-mock-api.html +158 -0
  85. package/docs/crawl/docs/_misc/dynamic-path.html +180 -0
  86. package/docs/crawl/docs/_misc/endpoint.html +50 -0
  87. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
  88. package/docs/crawl/docs/_misc/html-integration.html +48 -0
  89. package/docs/crawl/hubs/decorators.html +547 -0
  90. package/docs/crawl/hubs/form-components.html +359 -0
  91. package/docs/crawl/hubs/remote-data.html +452 -0
  92. package/docs/crawl/index.html +101 -0
  93. package/docs/css/docs.css +0 -0
  94. package/docs/docs-mock-api-sw.js +724 -0
  95. package/docs/docs-mock-api-sw.js.map +7 -0
  96. package/docs/fonts/ClashGrotesk-Bold.eot +0 -0
  97. package/docs/fonts/ClashGrotesk-Bold.ttf +0 -0
  98. package/docs/fonts/ClashGrotesk-Bold.woff +0 -0
  99. package/docs/fonts/ClashGrotesk-Bold.woff2 +0 -0
  100. package/docs/fonts/ClashGrotesk-Extralight.eot +0 -0
  101. package/docs/fonts/ClashGrotesk-Extralight.ttf +0 -0
  102. package/docs/fonts/ClashGrotesk-Extralight.woff +0 -0
  103. package/docs/fonts/ClashGrotesk-Extralight.woff2 +0 -0
  104. package/docs/fonts/ClashGrotesk-Light.eot +0 -0
  105. package/docs/fonts/ClashGrotesk-Light.ttf +0 -0
  106. package/docs/fonts/ClashGrotesk-Light.woff +0 -0
  107. package/docs/fonts/ClashGrotesk-Light.woff2 +0 -0
  108. package/docs/fonts/ClashGrotesk-Medium.eot +0 -0
  109. package/docs/fonts/ClashGrotesk-Medium.ttf +0 -0
  110. package/docs/fonts/ClashGrotesk-Medium.woff +0 -0
  111. package/docs/fonts/ClashGrotesk-Medium.woff2 +0 -0
  112. package/docs/fonts/ClashGrotesk-Regular.eot +0 -0
  113. package/docs/fonts/ClashGrotesk-Regular.ttf +0 -0
  114. package/docs/fonts/ClashGrotesk-Regular.woff +0 -0
  115. package/docs/fonts/ClashGrotesk-Regular.woff2 +0 -0
  116. package/docs/fonts/ClashGrotesk-Semibold.eot +0 -0
  117. package/docs/fonts/ClashGrotesk-Semibold.ttf +0 -0
  118. package/docs/fonts/ClashGrotesk-Semibold.woff +0 -0
  119. package/docs/fonts/ClashGrotesk-Semibold.woff2 +0 -0
  120. package/docs/fonts/ClashGrotesk-Variable.eot +0 -0
  121. package/docs/fonts/ClashGrotesk-Variable.ttf +0 -0
  122. package/docs/fonts/ClashGrotesk-Variable.woff +0 -0
  123. package/docs/fonts/ClashGrotesk-Variable.woff2 +0 -0
  124. package/docs/img/concorde-icon.svg +5 -0
  125. package/docs/img/concorde-logo.svg +1 -0
  126. package/docs/img/concorde.png +0 -0
  127. package/docs/img/concorde_def.png +0 -0
  128. package/docs/img/concorde_seuil.png.webp +0 -0
  129. package/docs/img/concorde_seuil_invert.png +0 -0
  130. package/docs/img/paul_metrand.jpg +0 -0
  131. package/docs/img/paul_metrand_xs.jpg +0 -0
  132. package/docs/index.html +93 -0
  133. package/docs/llms-full.txt +5761 -0
  134. package/docs/llms.txt +104 -0
  135. package/docs/robots.txt +16 -0
  136. package/docs/sitemap.xml +237 -0
  137. package/docs/src/core/components/functional/date/date.md +290 -0
  138. package/docs/src/core/components/functional/fetch/fetch.md +125 -0
  139. package/docs/src/core/components/functional/if/if.md +9 -0
  140. package/docs/src/core/components/functional/jsonata/jsonata.md +56 -0
  141. package/docs/src/core/components/functional/list/list.md +65 -0
  142. package/docs/src/core/components/functional/mix/mix.md +41 -0
  143. package/docs/src/core/components/functional/queue/queue.md +72 -0
  144. package/docs/src/core/components/functional/router/router.md +94 -0
  145. package/docs/src/core/components/functional/sdui/default-library.json +108 -0
  146. package/docs/src/core/components/functional/sdui/example.json +99 -0
  147. package/docs/src/core/components/functional/sdui/sdui.md +356 -0
  148. package/docs/src/core/components/functional/states/states.md +87 -0
  149. package/docs/src/core/components/functional/submit/submit.md +114 -0
  150. package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
  151. package/docs/src/core/components/functional/value/value.md +35 -0
  152. package/docs/src/core/components/ui/alert/alert.md +121 -0
  153. package/docs/src/core/components/ui/alert-messages/alert-messages.md +0 -0
  154. package/docs/src/core/components/ui/badge/badge.md +127 -0
  155. package/docs/src/core/components/ui/button/button.md +182 -0
  156. package/docs/src/core/components/ui/captcha/captcha.md +12 -0
  157. package/docs/src/core/components/ui/card/card.md +97 -0
  158. package/docs/src/core/components/ui/divider/divider.md +35 -0
  159. package/docs/src/core/components/ui/form/checkbox/checkbox.md +77 -0
  160. package/docs/src/core/components/ui/form/fieldset/fieldset.md +129 -0
  161. package/docs/src/core/components/ui/form/form-actions/form-actions.md +77 -0
  162. package/docs/src/core/components/ui/form/form-layout/form-layout.md +44 -0
  163. package/docs/src/core/components/ui/form/input/input.md +142 -0
  164. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +29 -0
  165. package/docs/src/core/components/ui/form/radio/radio.md +57 -0
  166. package/docs/src/core/components/ui/form/select/select.md +71 -0
  167. package/docs/src/core/components/ui/form/switch/switch.md +57 -0
  168. package/docs/src/core/components/ui/form/textarea/textarea.md +65 -0
  169. package/docs/src/core/components/ui/group/group.md +75 -0
  170. package/docs/src/core/components/ui/icon/icon.md +125 -0
  171. package/docs/src/core/components/ui/icon/icons.json +1 -0
  172. package/docs/src/core/components/ui/image/image.md +107 -0
  173. package/docs/src/core/components/ui/link/link.md +43 -0
  174. package/docs/src/core/components/ui/loader/loader.md +55 -0
  175. package/docs/src/core/components/ui/menu/menu.md +329 -0
  176. package/docs/src/core/components/ui/modal/modal.md +119 -0
  177. package/docs/src/core/components/ui/pop/pop.md +96 -0
  178. package/docs/src/core/components/ui/progress/progress.md +63 -0
  179. package/docs/src/core/components/ui/table/table.md +455 -0
  180. package/docs/src/core/components/ui/toast/toast.md +166 -0
  181. package/docs/src/core/components/ui/tooltip/tooltip.md +82 -0
  182. package/docs/src/docs/_core-concept/dataFlow.md +88 -0
  183. package/docs/src/docs/_core-concept/overview.md +57 -0
  184. package/docs/src/docs/_core-concept/subscriber.md +75 -0
  185. package/docs/src/docs/_decorators/ancestor-attribute.md +127 -0
  186. package/docs/src/docs/_decorators/auto-subscribe.md +202 -0
  187. package/docs/src/docs/_decorators/bind.md +167 -0
  188. package/docs/src/docs/_decorators/get.md +162 -0
  189. package/docs/src/docs/_decorators/handle.md +175 -0
  190. package/docs/src/docs/_decorators/on-assign.md +390 -0
  191. package/docs/src/docs/_decorators/patch.md +70 -0
  192. package/docs/src/docs/_decorators/post.md +146 -0
  193. package/docs/src/docs/_decorators/publish.md +55 -0
  194. package/docs/src/docs/_decorators/put.md +70 -0
  195. package/docs/src/docs/_decorators/subscribe.md +100 -0
  196. package/docs/src/docs/_decorators/wait-for-ancestors.md +163 -0
  197. package/docs/src/docs/_directives/sub.md +91 -0
  198. package/docs/src/docs/_getting-started/ai-agents.md +76 -0
  199. package/docs/src/docs/_getting-started/concorde-manual-install.md +133 -0
  200. package/docs/src/docs/_getting-started/concorde-outside.md +33 -0
  201. package/docs/src/docs/_getting-started/create-a-component.md +139 -0
  202. package/docs/src/docs/_getting-started/my-first-component.md +236 -0
  203. package/docs/src/docs/_getting-started/my-first-subscriber.md +120 -0
  204. package/docs/src/docs/_getting-started/pubsub.md +37 -0
  205. package/docs/src/docs/_getting-started/start.md +47 -0
  206. package/docs/src/docs/_getting-started/theming.md +91 -0
  207. package/docs/src/docs/_misc/api-configuration.md +81 -0
  208. package/docs/src/docs/_misc/dataProviderKey.md +168 -0
  209. package/docs/src/docs/_misc/docs-mock-api.md +63 -0
  210. package/docs/src/docs/_misc/dynamic-path.md +71 -0
  211. package/docs/src/docs/_misc/endpoint.md +45 -0
  212. package/docs/src/docs/_misc/formelement-subscriber-removal.md +115 -0
  213. package/docs/src/docs/_misc/html-integration.md +15 -0
  214. package/docs/src/docs/search/docs-search.json +9507 -0
  215. package/docs/src/tag-list.json +1 -0
  216. package/docs/src/tsconfig-model.json +23 -0
  217. package/docs/src/tsconfig.declarations.json +22 -0
  218. package/docs/src/tsconfig.emit.json +23 -0
  219. package/docs/src/tsconfig.json +1182 -0
  220. package/docs/svg/regular/plane.svg +1 -0
  221. package/docs/svg/solid/plane.svg +1 -0
  222. package/gitlab/job_github_mirror.sh +39 -0
  223. package/gitlab/job_tests.sh +0 -0
  224. package/package.json +1 -1
  225. package/scripts/github-export.mjs +150 -0
  226. package/scripts/post-build-docs.js +0 -0
  227. package/scripts/post-build.mjs +0 -0
  228. package/src/core/components/functional/fetch/fetch.md +0 -0
  229. package/src/core/components/functional/if/if.md +0 -0
  230. package/src/core/components/functional/list/list.demo.ts +0 -0
  231. package/src/core/components/functional/list/list.md +0 -0
  232. package/src/core/components/functional/router/router.md +0 -0
  233. package/src/core/components/functional/router/router.ts +0 -0
  234. package/src/core/components/functional/sdui/sdui.md +0 -0
  235. package/src/core/components/functional/states/states.md +0 -0
  236. package/src/core/components/functional/submit/submit.md +0 -0
  237. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  238. package/src/core/components/ui/_css/size.ts +0 -0
  239. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  240. package/src/core/components/ui/captcha/captcha.md +0 -0
  241. package/src/core/components/ui/form/radio/radio.md +0 -0
  242. package/src/core/components/ui/form/select/select.md +0 -0
  243. package/src/core/components/ui/form/switch/switch.md +0 -0
  244. package/src/core/components/ui/loader/loader.md +0 -0
  245. package/src/core/components/ui/menu/menu.md +0 -0
  246. package/src/core/components/ui/modal/modal.md +0 -0
  247. package/src/core/components/ui/table/table-caption.ts +0 -0
  248. package/src/core/components/ui/table/table.md +0 -0
  249. package/src/core/decorators/subscriber/ancestorAttribute.spec.ts +26 -0
  250. package/src/core/decorators/subscriber/ancestorAttribute.ts +3 -4
  251. package/src/core/mixins/Subscriber.ts +0 -0
  252. package/src/core/utils/AncestorAttributeObserver.ts +183 -70
  253. package/src/core/utils/DataBindObserver.ts +0 -0
  254. package/src/core/utils/Objects.ts +0 -0
  255. package/src/core/utils/route.ts +0 -0
  256. package/src/css.d.ts +19 -0
  257. package/src/docs/_core-concept/subscriber.md +0 -0
  258. package/src/docs/_decorators/ancestor-attribute.md +3 -2
  259. package/src/docs/_getting-started/my-first-subscriber.md +0 -0
  260. package/src/docs/_getting-started/pubsub.md +0 -0
  261. package/src/docs/_getting-started/start.md +0 -0
  262. package/src/docs/example/users.ts +0 -0
  263. package/src/docs/search/page.ts +0 -0
  264. package/src/tsconfig.declarations.json +22 -0
  265. package/src/tsconfig.emit.json +23 -0
  266. package/src/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1 @@
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media (min-width: 640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width: 768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width: 1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width: 1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width: 1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1em;margin-bottom:1em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;padding-inline-start:1.625em;margin-top:1em;margin-bottom:1em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;padding-inline-start:1.625em;margin-top:1em;margin-bottom:1em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: var(--sc-base-content);--tw-prose-headings: var(--sc-base-900);--tw-prose-lead: var(--sc-base-content);--tw-prose-links: var(--sc-base-900);--tw-prose-bold: var(--sc-base-content);--tw-prose-counters: var(--sc-base-500);--tw-prose-bullets: var(--sc-base-300);--tw-prose-hr: var(--sc-base-200);--tw-prose-quotes: var(--sc-base-content);--tw-prose-quote-borders: var(--sc-base-200);--tw-prose-captions: var(--sc-base-500);--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: var(--sc-info);--tw-prose-pre-code: var(--sc-base-200);--tw-prose-pre-bg: var(--sc-base-800);--tw-prose-th-borders: var(--sc-base-300);--tw-prose-td-borders: var(--sc-base-200);--tw-prose-invert-body: var(--sc-base-300);--tw-prose-invert-headings: var(--sc-base);--tw-prose-invert-lead: var(--sc-base-400);--tw-prose-invert-links: var(--sc-base);--tw-prose-invert-bold: var(--sc-base);--tw-prose-invert-counters: var(--sc-base-400);--tw-prose-invert-bullets: var(--sc-base-600);--tw-prose-invert-hr: var(--sc-base-700);--tw-prose-invert-quotes: var(--sc-base-100);--tw-prose-invert-quote-borders: var(--sc-base-700);--tw-prose-invert-captions: var(--sc-base-400);--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: var(--sc-base);--tw-prose-invert-pre-code: var(--sc-base-300);--tw-prose-invert-pre-bg: var(--sc-base-900);--tw-prose-invert-th-borders: var(--sc-base-600);--tw-prose-invert-td-borders: var(--sc-base-700);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose{line-height:1.5}.prose :where(strong a):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:bolder}.prose :where(iframe[src*=youtu]):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--sc-rounded-md)}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.\!relative{position:relative!important}.relative{position:relative}.sticky{position:sticky}.\!left-0{left:0!important}.\!top-0{top:0!important}.-top-1{top:-.25rem}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.left-0{left:0}.right-1{right:.25rem}.right-2{right:.5rem}.top-0{top:0}.top-16{top:4rem}.top-\[4\.2rem\]{top:4.2rem}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-\[3000\]{z-index:3000}.col-span-2{grid-column:span 2 / span 2}.col-span-full{grid-column:1 / -1}.m-2{margin:.5rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-40{margin-bottom:10rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-3{margin-left:.75rem}.ml-5{margin-left:1.25rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-9{margin-top:2.25rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.size-40{width:10rem;height:10rem}.size-\[2\.4rem\]{width:2.4rem;height:2.4rem}.h-1\/2{height:50%}.h-10{height:2.5rem}.h-12{height:3rem}.h-24{height:6rem}.h-3{height:.75rem}.h-4{height:1rem}.h-96{height:24rem}.h-full{height:100%}.max-h-96{max-height:24rem}.max-h-\[50vh\]{max-height:50vh}.max-h-\[calc\(100vh_-_4\.2rem\)\]{max-height:calc(100vh - 4.2rem)}.min-h-\[100vh\]{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-64{width:16rem}.w-\[5rem\]{width:5rem}.w-full{width:100%}.min-w-\[8rem\]{min-width:8rem}.max-w-\[29ch\]{max-width:29ch}.max-w-\[40rem\]{max-width:40rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-prose{max-width:70ch}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/2{--tw-translate-x: 50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1\/2{--tw-translate-y: 50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-\[55deg\]{--tw-rotate: 55deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.resize{resize:both}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[minmax\(10rem\,15rem\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(10rem,15rem) minmax(0,1fr)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.break-all{word-break:break-all}.rounded{border-radius:var(--sc-rounded)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--sc-rounded-lg)}.rounded-md{border-radius:var(--sc-rounded-md)}.rounded-xl{border-radius:var(--sc-rounded-xl)}.border{border-width:var(--sc-border-width)}.border-0{border-width:0px}.border-b{border-bottom-width:var(--sc-border-width)}.border-b-\[\.18rem\]{border-bottom-width:.18rem}.border-t{border-top-width:var(--sc-border-width)}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-current{border-color:currentColor}.border-danger{border-color:var(--sc-danger)}.border-info{border-color:var(--sc-info)}.border-neutral-100{border-color:var(--sc-base-100)}.border-neutral-200{border-color:var(--sc-base-200)}.border-neutral-300{border-color:var(--sc-base-300)}.border-success{border-color:var(--sc-success)}.bg-info{background-color:var(--sc-info)}.bg-neutral-0{background-color:var(--sc-base)}.bg-neutral-100{background-color:var(--sc-base-100)}.bg-neutral-200{background-color:var(--sc-base-200)}.bg-neutral-50{background-color:var(--sc-base-50)}.bg-neutral-900{background-color:var(--sc-base-900)}.bg-success{background-color:var(--sc-success)}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.from-\[rgba\(0\,0\,10\,\.2\)\]{--tw-gradient-from: rgba(0,0,10,.2) var(--tw-gradient-from-position);--tw-gradient-to: rgba(0, 0, 10, 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pl-5{padding-left:1.25rem}.pl-\[\.75rem\]{padding-left:.75rem}.pt-3{padding-top:.75rem}.pt-\[20vh\]{padding-top:20vh}.text-center{text-align:center}.font-headings{font-family:var(--sc-headings-font-family, var(--sc-font-family-base, sans-serif))}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-sm{font-size:.875rem}.text-xl{font-size:1.25rem}.text-xs{font-size:.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.5\]{line-height:1.5}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-content{color:var(--sc-base-content)}.text-contrast-content{color:var(--sc-contrast-content)}.text-danger{color:var(--sc-danger)}.text-info{color:var(--sc-info)}.text-neutral-0{color:var(--sc-base)}.text-neutral-300{color:var(--sc-base-300)}.text-neutral-400{color:var(--sc-base-400)}.text-neutral-500{color:var(--sc-base-500)}.text-neutral-600{color:var(--sc-base-600)}.text-neutral-700{color:var(--sc-base-700)}.text-neutral-900{color:var(--sc-base-900)}.text-success{color:var(--sc-success)}.underline{text-decoration-line:underline}.opacity-40{opacity:.4}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-lg{--tw-drop-shadow: drop-shadow(0 10px 8px rgb(0 0 0 / .04)) drop-shadow(0 4px 3px rgb(0 0 0 / .1));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:ClashGrotesk-Variable;src:url(../fonts/ClashGrotesk-Variable.woff2) format("woff2"),url(../fonts/ClashGrotesk-Variable.woff) format("woff"),url(../fonts/ClashGrotesk-Variable.ttf) format("truetype");font-weight:200 700;font-display:swap;font-style:normal}:root{--sc-headings-font-family: "ClashGrotesk-Variable", sans-serif;--sc-font-family-base: "ClashGrotesk-Variable", sans-serif;--sc-headings-font-weight: 400;--sc-rounded: .5rem;--sc-border-width: max(2px, .18rem)}[data-concorde-theme=light]{--sc-base: #fffcf0;--sc-base-content: #111111;--sc-primary: #111111;--sc-primary-content: #fffcf0;--sc-base-50: #f4f1e6;--sc-base-100: #e9e6dc;--sc-base-200: #ceccc3;--sc-base-300: #bcbab1;--sc-base-400: #96948e;--sc-base-500: #7d7c77;--sc-base-600: #5a5956;--sc-base-700: #393937;--sc-base-800: #252524;--sc-base-900: #111111;--sc-info: #3b82f6;--sc-info-content: #ffffff;--sc-success: #10b981;--sc-success-content: #ffffff;--sc-warning: #fb923c;--sc-warning-content: #111827;--sc-danger: #dc2626;--sc-danger-content: #ffffff}[data-concorde-theme=dark]{--sc-base: #0a0a0a;--sc-base-content: #dadad9;--sc-primary: #ffef8a;--sc-primary-content: #111827;--sc-base-50: #141414;--sc-base-100: #1c1c1c;--sc-base-200: #2f2f2f;--sc-base-300: #3e3e3e;--sc-base-400: #5f5f5f;--sc-base-500: #767676;--sc-base-600: #9a9a9a;--sc-base-700: #c0c0bf;--sc-base-800: #dadad9;--sc-base-900: #f5f5f4;--sc-info: #3a85f7;--sc-info-content: #ffffff;--sc-success: #0fba7f;--sc-success-content: #ffffff;--sc-warning: #fc8f3b;--sc-warning-content: #111827;--sc-danger: #dd2528;--sc-danger-content: #ffffff}[data-concorde-theme=light],[data-concorde-theme=dark]{--sc-input-bg: var(--sc-base-100);--sc-input-border-color: var(--sc-base-100)}html{font-family:var(--sc-font-family-base, sans-serif)}h2{border-bottom:var(--sc-border-width) solid;padding-bottom:.1em}p,ul,ol{font-family:Arial,Helvetica,sans-serif}body{background:var(--sc-base);color:var(--sc-base-content)}html{scroll-behavior:smooth}.animated-text{display:block;position:relative;overflow:hidden}.animated-text span{display:block;position:absolute;width:100%;height:100%;top:0;left:0;transform:translateY(108%);animation:slideUp 4.5s cubic-bezier(.17,.67,.61,1.13) infinite}.animated-text span:nth-child(2){animation-delay:1.5s}.animated-text span:nth-child(3){animation-delay:3s}@keyframes slideUp{0%{transform:translateY(108%)}7%{transform:translateY(0)}33%{transform:translateY(0)}40%{transform:translateY(-108%)}to{transform:translateY(-108%)}}.custom-scroll{overflow:auto!important}.custom-scroll:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 2rem 2rem var(--sc-base-900)}.custom-scroll::-webkit-scrollbar{width:.5rem;height:.5rem;border:solid .15rem transparent;border-radius:var(--sc-rounded);background:transparent}.custom-scroll::-webkit-scrollbar-thumb{opacity:0;-webkit-transition:box-shadow .2s;transition:box-shadow .2s;border:solid .15rem transparent}@media (min-width: 1024px){.lg\:prose-lg{font-size:1.125rem;line-height:1.7777778}.lg\:prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\:prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.lg\:prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6666667em;margin-bottom:1.6666667em;padding-inline-start:1em}.lg\:prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.lg\:prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;margin-top:1.8666667em;margin-bottom:1.0666667em;line-height:1.3333333}.lg\:prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;margin-top:1.6666667em;margin-bottom:.6666667em;line-height:1.5}.lg\:prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:.4444444em;line-height:1.5555556}.lg\:prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\:prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\:prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.lg\:prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\:prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;border-radius:.3125rem;padding-top:.2222222em;padding-inline-end:.4444444em;padding-bottom:.2222222em;padding-inline-start:.4444444em}.lg\:prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.lg\:prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.lg\:prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.lg\:prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding-top:1em;padding-inline-end:1.5em;padding-bottom:1em;padding-inline-start:1.5em}.lg\:prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.5555556em}.lg\:prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.5555556em}.lg\:prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;margin-bottom:.6666667em}.lg\:prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.lg\:prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.lg\:prose-lg :where(.lg\:prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\:prose-lg :where(.lg\:prose-lg>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.lg\:prose-lg :where(.lg\:prose-lg>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.lg\:prose-lg :where(.lg\:prose-lg>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.lg\:prose-lg :where(.lg\:prose-lg>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.lg\:prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\:prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\:prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.lg\:prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-inline-start:1.5555556em}.lg\:prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:3.1111111em;margin-bottom:3.1111111em}.lg\:prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\:prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\:prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\:prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\:prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.lg\:prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.lg\:prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.lg\:prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.lg\:prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.75em;padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.lg\:prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.lg\:prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.lg\:prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\:prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.lg\:prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.lg\:prose-lg :where(.lg\:prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\:prose-lg :where(.lg\:prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}}.hover\:bg-neutral-50:hover{background-color:var(--sc-base-50)}.prose-h1\:text-\[4\.2em\] :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:4.2em}.prose-h1\:font-normal :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){font-weight:400}.prose-li\:my-\[\.2em\] :is(:where(li):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:.2em;margin-bottom:.2em}@media (min-width: 640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-5xl{font-size:3rem}}@media (min-width: 1024px){.lg\:min-w-\[19rem\]{min-width:19rem}.lg\:max-w-\[19ch\]{max-width:19ch}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-20{padding-left:5rem;padding-right:5rem}.lg\:text-7xl{font-size:4.5rem}.lg\:leading-\[1\.5\]{line-height:1.5}}@media (min-width: 1280px){.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:text-8xl{font-size:6rem}}.dark\:block:where(.dark,.dark *){display:block}.dark\:hidden:where(.dark,.dark *){display:none}.dark\:border-neutral-600:where(.dark,.dark *){border-color:var(--sc-base-600)}.dark\:border-neutral-700:where(.dark,.dark *){border-color:var(--sc-base-700)}.dark\:bg-neutral-300:where(.dark,.dark *){background-color:var(--sc-base-300)}.dark\:text-neutral-400:where(.dark,.dark *){color:var(--sc-base-400)}.dark\:text-neutral-600:where(.dark,.dark *){color:var(--sc-base-600)}.dark\:opacity-60:where(.dark,.dark *){opacity:.6}.\[\&\[active\]\]\:min-w-\[13rem\][active]{min-width:13rem}.\[\&\[active\]\]\:rounded-full[active]{border-radius:9999px}.\[\&\[active\]\]\:bg-danger[active]{background-color:var(--sc-danger)}.\[\&\[active\]\]\:font-black[active]{font-weight:900}.\[\&\[active\]\]\:text-danger-content[active]{color:var(--sc-danger-content)}.\[\&\[active\]\]\:text-success[active]{color:var(--sc-success)}[data-home] .\[\[data-home\]_\&\]\:hidden{display:none}
@@ -0,0 +1,190 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/date/date.html" data-doc-id="core/components/functional/date/date">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Date — Concorde</title>
7
+ <meta name="description" content="Nothing is displayed.">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/functional/date/date, date, Date, functional component, sonic-date, web component">
9
+ <meta name="concorde-doc-id" content="core/components/functional/date/date">
10
+ <link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/functional/date/date.html">
11
+ </head>
12
+ <body>
13
+ <header>
14
+ <p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/date/date.md/date" rel="nofollow">interactive version</a></p>
15
+ </header>
16
+ <main>
17
+ <article>
18
+ <p class="doc-lead" id="doc-summary"><strong>Concorde functional component — Date</strong>. Nothing is displayed. <span>Doc ID: <code>core/components/functional/date/date</code>. Keywords: Concorde, supersoniks, core/components/functional/date/date, date, Date, functional component, sonic-date, web component. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/date/date.html">https://concorde.supersoniks.org/crawl/core/components/functional/date/date.html</a>.</span></p>
19
+ <h1 id="date">Date</h1>
20
+ <h2 id="no-attribute">No attribute</h2>
21
+ <p><strong>Nothing</strong> is displayed.</p>
22
+ <pre><code>&lt;sonic-date&gt;&lt;/sonic-date&gt;
23
+ </code></pre>
24
+ <h2 id="now">Now</h2>
25
+ <p>Displays the <strong>current date</strong>.</p>
26
+ <pre><code>&lt;sonic-date now&gt;&lt;/sonic-date&gt;
27
+ </code></pre>
28
+ <h2 id="date-1">Date</h2>
29
+ <p>Displays a date from a <strong>timestamp</strong>.</p>
30
+ <pre><code>&lt;sonic-date date= &quot;1640265629&quot;&gt;&lt;/sonic-date&gt;
31
+ </code></pre>
32
+ <h2 id="date_string">Date_string</h2>
33
+ <p>Displays a date from a <strong>string</strong>.</p>
34
+ <pre><code>&lt;sonic-date date_string=&quot;July 20, 69 20:17:40 GMT+00:00&quot;&gt;&lt;/sonic-date&gt;
35
+ </code></pre>
36
+ <h2 id="start_date--end_date">Start_date / end_date</h2>
37
+ <p>Displays a period of time <strong>from start_date to end_date</strong>.<br>When by itself <strong>start_date</strong> will act as <strong>date</strong><br>if a <strong>start_date is not specified</strong> it will be set by the <strong>current date</strong>.<br>if the <strong>end_date is anterior</strong> to start date date it will be <strong>used as the start_date</strong>. </p>
38
+ <pre><code>&lt;!-- from start_date to end_date --&gt;
39
+ &lt;sonic-date start_date=&quot;1640265629&quot; end_date= &quot;1640365629&quot;&gt;&lt;/sonic-date&gt;
40
+ &lt;br&gt;
41
+ &lt;!-- start_date is not specified --&gt;
42
+ &lt;sonic-date end_date= &quot;2640365629&quot;&gt;&lt;/sonic-date&gt;
43
+ &lt;br&gt;
44
+ &lt;!-- end_date is anterior --&gt;
45
+ &lt;sonic-date end_date= &quot;640365629&quot;&gt;&lt;/sonic-date&gt;
46
+ </code></pre>
47
+ <h2 id="start_date_string--end_date_string">Start_date_string / end_date_string</h2>
48
+ <pre><code>&lt;!-- from start_date to end_date --&gt;
49
+ &lt;sonic-date date_string=&quot;July 20, 90 20:17:40 GMT+00:00&quot; end_date_string= &quot;June 20, 94 20:17:40 GMT+00:00&quot;&gt;&lt;/sonic-date&gt;
50
+ &lt;br&gt;
51
+ &lt;!-- start_date is not specified --&gt;
52
+ &lt;sonic-date end_date_string= &quot;May 20, 34 20:17:40 GMT+00:00&quot;&gt;&lt;/sonic-date&gt;
53
+ &lt;br&gt;
54
+ &lt;!-- end_date is anterior --&gt;
55
+ &lt;sonic-date end_date_string= &quot;April 20, 06 20:17:40 GMT+00:00&quot;&gt;&lt;/sonic-date&gt;
56
+ </code></pre>
57
+ <h2 id="wording_billet_periode_validite">Wording_billet_periode_validite</h2>
58
+ <pre><code>&lt;sonic-date wording_billet_periode_validite= &quot;À partir du %s jusqu&#39;au %s&quot; start_date=&quot;1640265629&quot; end_date= &quot;1640365629&quot;&gt;&lt;/sonic-date&gt;
59
+ </code></pre>
60
+ <h2 id="weekday">Weekday</h2>
61
+ <pre><code>&lt;b&gt;narrow : &lt;/b&gt;
62
+ &lt;sonic-date weekday=&quot;narrow&quot; now&gt;&lt;/sonic-date&gt;
63
+ &lt;br&gt;
64
+ &lt;b&gt;short (default) : &lt;/b&gt;
65
+ &lt;sonic-date weekday=&quot;short&quot; now&gt;&lt;/sonic-date&gt;
66
+ &lt;br&gt;
67
+ &lt;b&gt;long : &lt;/b&gt;
68
+ &lt;sonic-date weekday=&quot;long&quot; now&gt;&lt;/sonic-date&gt;
69
+ &lt;br&gt;
70
+ &lt;b&gt;hidden : &lt;/b&gt;
71
+ &lt;sonic-date weekday=&quot;hidden&quot; now&gt;&lt;/sonic-date&gt;
72
+ </code></pre>
73
+ <h2 id="day">Day</h2>
74
+ <pre><code>&lt;b&gt;numeric : &lt;/b&gt;
75
+ &lt;sonic-date day=&quot;numeric&quot; date_string=&quot;July 01, 69&quot;&gt;&lt;/sonic-date&gt;
76
+ &lt;br&gt;
77
+ &lt;b&gt;2-digit (default) : &lt;/b&gt;
78
+ &lt;sonic-date day=&quot;2-digit&quot; date_string=&quot;July 01, 69&quot;&gt;&lt;/sonic-date&gt;
79
+ </code></pre>
80
+ <h2 id="month">Month</h2>
81
+ <pre><code>&lt;b&gt;numeric : &lt;/b&gt;
82
+ &lt;sonic-date month=&quot;numeric&quot; now&gt;&lt;/sonic-date&gt;
83
+ &lt;br&gt;
84
+ &lt;b&gt;2-digit : &lt;/b&gt;
85
+ &lt;sonic-date month=&quot;2-digit&quot; now&gt;&lt;/sonic-date&gt;
86
+ &lt;br&gt;
87
+ &lt;b&gt;narrow : &lt;/b&gt;
88
+ &lt;sonic-date month=&quot;narrow&quot; now&gt;&lt;/sonic-date&gt;
89
+ &lt;br&gt;
90
+ &lt;b&gt;short (default) : &lt;/b&gt;
91
+ &lt;sonic-date month=&quot;short&quot; now&gt;&lt;/sonic-date&gt;
92
+ &lt;br&gt;
93
+ &lt;b&gt;long : &lt;/b&gt;
94
+ &lt;sonic-date month=&quot;long&quot; now&gt;&lt;/sonic-date&gt;
95
+ </code></pre>
96
+ <h2 id="year">Year</h2>
97
+ <pre><code>&lt;b&gt;numeric (default) : &lt;/b&gt;
98
+ &lt;sonic-date year=&quot;numeric&quot; now&gt;&lt;/sonic-date&gt;
99
+ &lt;br&gt;
100
+ &lt;b&gt;2-digit : &lt;/b&gt;
101
+ &lt;sonic-date year=&quot;2-digit&quot; now&gt;&lt;/sonic-date&gt;
102
+ </code></pre>
103
+ <h2 id="hour">Hour</h2>
104
+ <pre><code>&lt;b&gt;numeric : &lt;/b&gt;
105
+ &lt;sonic-date hour=&quot;numeric&quot; date_string= &quot;June 20, 04 02:06:02 GMT+00:00&quot;&gt;&lt;/sonic-date&gt;
106
+ &lt;br&gt;
107
+ &lt;b&gt;2-digit (default) : &lt;/b&gt;
108
+ &lt;sonic-date hour=&quot;2-digit&quot; date_string= &quot;June 20, 04 02:06:02 GMT+00:00&quot;&gt;&lt;/sonic-date&gt;
109
+ &lt;br&gt;
110
+ &lt;b&gt;hidden : &lt;/b&gt;
111
+ &lt;sonic-date hour=&quot;hidden&quot; date_string= &quot;June 20, 04 02:06:02 GMT+00:00&quot;&gt;&lt;/sonic-date&gt;
112
+ </code></pre>
113
+ <h2 id="minute">Minute</h2>
114
+ <pre><code>&lt;b&gt;numeric : &lt;/b&gt;
115
+ &lt;sonic-date minute=&quot;numeric&quot; date_string= &quot;June 20, 04 02:06:02 GMT+00:00&quot;&gt;&lt;/sonic-date&gt;
116
+ &lt;br&gt;
117
+ &lt;b&gt;2-digit (default) : &lt;/b&gt;
118
+ &lt;sonic-date minute=&quot;2-digit&quot; date_string= &quot;June 20, 04 02:06:02 GMT+00:00&quot;&gt;&lt;/sonic-date&gt;
119
+ &lt;br&gt;
120
+ &lt;b&gt;hidden : &lt;/b&gt;
121
+ &lt;sonic-date minute=&quot;hidden&quot; date_string= &quot;June 20, 04 02:06:02 GMT+00:00&quot;&gt;&lt;/sonic-date&gt;
122
+ </code></pre>
123
+ <h2 id="language">Language</h2>
124
+ <p><sonic-button href="https://www.w3schools.com/tags/ref_language_codes.asp" target="_blank" type="info" size="sm">ISO 639-1 Language Codes</sonic-button></p>
125
+ <pre><code class="language-fr">&lt;b&gt;fr : &lt;/b&gt;
126
+ &lt;sonic-date language=&quot;fr&quot; now&gt;&lt;/sonic-date&gt;
127
+ &lt;br&gt;
128
+ &lt;b&gt;en : &lt;/b&gt;
129
+ &lt;sonic-date language=&quot;en&quot; now&gt;&lt;/sonic-date&gt;
130
+ &lt;br&gt;
131
+ &lt;b&gt;zh : &lt;/b&gt;
132
+ &lt;sonic-date language=&quot;zh&quot; now&gt;&lt;/sonic-date&gt;
133
+ &lt;br&gt;
134
+ &lt;b&gt;ja : &lt;/b&gt;
135
+ &lt;sonic-date language=&quot;ja&quot; now&gt;&lt;/sonic-date&gt;
136
+ </code></pre>
137
+ <h2 id="time_zone">Time_zone</h2>
138
+ <p>For the list of supported timeZones, run <b class="text-info">Intl.supportedValuesOf(&#39;timeZone&#39;)</b> in the console</p>
139
+ <pre><code>&lt;b&gt;Europe/London : &lt;/b&gt;
140
+ &lt;sonic-date time_zone=&quot;Europe/London&quot; now&gt;&lt;/sonic-date&gt;
141
+ &lt;br&gt;
142
+ &lt;b&gt;Europe/Paris : &lt;/b&gt;
143
+ &lt;sonic-date time_zone=&quot;Europe/Paris&quot; now&gt;&lt;/sonic-date&gt;
144
+ &lt;br&gt;
145
+ &lt;b&gt;America/Tijuana : &lt;/b&gt;
146
+ &lt;sonic-date time_zone=&quot;America/Tijuana&quot; now&gt;&lt;/sonic-date&gt;
147
+ </code></pre>
148
+ <h2 id="era">Era</h2>
149
+ <pre><code>&lt;b&gt;narrow : &lt;/b&gt;
150
+ &lt;sonic-date era=&quot;narrow&quot; now&gt;&lt;/sonic-date&gt;
151
+ &lt;br&gt;
152
+ &lt;b&gt;short : &lt;/b&gt;
153
+ &lt;sonic-date era=&quot;short&quot; now&gt;&lt;/sonic-date&gt;
154
+ &lt;br&gt;
155
+ &lt;b&gt;long : &lt;/b&gt;
156
+ &lt;sonic-date era=&quot;long&quot; now&gt;&lt;/sonic-date&gt;
157
+ </code></pre>
158
+ <h2 id="renderif">.renderIf</h2>
159
+ <p><sonic-alert status="error" background>Deprecated</sonic-alert></p>
160
+ <pre><code>&lt;b&gt;True statement : &lt;/b&gt;
161
+ &lt;sonic-date data-bind ::render-if=&quot;|10&gt;2&quot; now&gt;&lt;/sonic-date&gt;
162
+ &lt;br&gt;
163
+ &lt;b&gt;False statement : &lt;/b&gt;
164
+ &lt;sonic-date data-bind ::render-if=&quot;|10&lt;2&quot; now&gt;&lt;/sonic-date&gt;
165
+ </code></pre>
166
+ <h2 id="designmode">DesignMode</h2>
167
+ <pre><code>&lt;div class=&quot;relative max-w-lg rounded-lg overflow-hidden&quot;&gt;
168
+ &lt;div class=&quot;absolute top-0 h-1/2 w-full bg-gradient-to-b from-[rgba(0,0,10,.2)] z-10 &quot;&gt;&lt;/div&gt;
169
+ &lt;sonic-date
170
+ designMode
171
+ noShadowDom
172
+ start_date= &quot;1640265629&quot;
173
+ end_date= &quot;1640365629&quot;
174
+ language= &quot;fr&quot;
175
+ wording_billet_periode_validite= &quot;Du %s au %s&quot;
176
+ year= &quot;numeric&quot;
177
+ month= &quot;short&quot;
178
+ weekday= &quot;short&quot;
179
+ hour= &quot;2-digit&quot;
180
+ minute= &quot;2-digit&quot;
181
+ class=&quot;py-4 drop-shadow-lg text-contrast-content p-4 inline-block text-center absolute left-0 z-20 text-sm&quot;
182
+ &gt;
183
+ &lt;template data-value=&quot;weekday&quot;&gt;
184
+ &lt;span class=&quot;hidden&quot;&gt;&lt;/span&gt;
185
+ </code></pre>
186
+
187
+ </article>
188
+ </main>
189
+ </body>
190
+ </html>
@@ -0,0 +1,109 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/fetch/fetch.html" data-doc-id="core/components/functional/fetch/fetch">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Fetch — Concorde</title>
7
+ <meta name="description" content="&gt; New apps: prefer @get for a typed GET on a component, or List / Queue with fetch for collections. Use Local API demos (serviceURL=&quot;/docs-mock-api&quot;) to try examples offline.">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/functional/fetch/fetch, fetch, Fetch, functional component, sonic-fetch, web component, serviceURL=&quot;/docs-mock-api&quot;, {my:{data:{a:1,b:2}}}, key=&quot;my.data&quot;, {a:1 , b:2}">
9
+ <meta name="concorde-doc-id" content="core/components/functional/fetch/fetch">
10
+ <link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/functional/fetch/fetch.html">
11
+ </head>
12
+ <body>
13
+ <header>
14
+ <p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/fetch/fetch.md/fetch" rel="nofollow">interactive version</a></p>
15
+ </header>
16
+ <main>
17
+ <article>
18
+ <p class="doc-lead" id="doc-summary"><strong>Concorde functional component — Fetch</strong>. &gt; New apps: prefer @get for a typed GET on a component, or List / Queue with fetch for collections. Use Local API demos (serviceURL=&quot;/docs-mock-api&quot;) to try examples offline. <span>Doc ID: <code>core/components/functional/fetch/fetch</code>. Keywords: Concorde, supersoniks, core/components/functional/fetch/fetch, fetch, Fetch, functional component, sonic-fetch, web component, serviceURL=&quot;/docs-mock-api&quot;, {my:{data:{a:1,b:2}}}, key=&quot;my.data&quot;, {a:1 , b:2}. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/fetch/fetch.html">https://concorde.supersoniks.org/crawl/core/components/functional/fetch/fetch.html</a>.</span></p>
19
+ <h1 id="fetch">Fetch</h1>
20
+ <blockquote>
21
+ <p><strong>New apps:</strong> prefer <a href="../../../../docs/_decorators/get.html#get">@get</a> for a typed GET on a component, or <a href="../list/list.html#list">List</a> / <a href="../queue/queue.html#queue">Queue</a> with <code>fetch</code> for collections. Use <a href="../../../../docs/_misc/docs-mock-api.html#docs-mock-api">Local API demos</a> (<code>serviceURL=&quot;/docs-mock-api&quot;</code>) to try examples offline.</p>
22
+ </blockquote>
23
+ <p>The <strong>sonic-fetch</strong> component requests and stores API data. It extends the Fetcher and <a href="../../../../docs/_core-concept/subscriber.html#subscriber">Subscriber</a> mixins.</p>
24
+ <h2 id="basic-usage">Basic usage</h2>
25
+ <p>In order to work properly the <b>sonic-fetch</b> component needs at least the following attributes. </p>
26
+ <ul>
27
+ <li><strong>serviceURL</strong> : A base service url. This attribute can be inherited from an ancestor.
28
+ <em>ex : /docs-mock-api</em></li>
29
+ <li><strong>endPoint</strong> : the specific location where requests for information are sent (see the api docs).<br><em>ex : api/users | api/users?page=2 | api/users/2</em></li>
30
+ <li><strong>dataProvider <em>(Required)</em></strong> : An ID that is used as a reference to the object storing the data returned by the API.
31
+ This attribute can be inherited from an ancestor.</li>
32
+ </ul>
33
+ <pre><code>&lt;sonic-fetch serviceURL=&quot;/docs-mock-api&quot; endPoint=&quot;api/users?page=2&quot; dataProvider=&quot;myDataObj&quot;&gt;&lt;/sonic-fetch&gt;
34
+ &lt;sonic-button dataProvider=&quot;myDataObj&quot; debug&gt;Hover to see the data&lt;/sonic-button&gt;
35
+ </code></pre>
36
+ <h2 id="dataprovider-as-an-endpoint">DataProvider as an endPoint</h2>
37
+ <p>If no <strong>endPoint</strong> is specified it will be filled by the <strong>dataProvider ID</strong> instead </p>
38
+ <pre><code>&lt;sonic-fetch serviceURL=&quot;/docs-mock-api&quot; dataProvider=&quot;api/users?page=2&quot; &gt;&lt;/sonic-fetch&gt;
39
+ &lt;sonic-button dataProvider=&quot;api/users?page=2&quot; debug&gt;Hover to see the data&lt;/sonic-button&gt;
40
+ </code></pre>
41
+ <h2 id="headersdataprovider">HeadersDataProvider</h2>
42
+ <p><sonic-alert status="error" background>Deprecated</sonic-alert></p>
43
+ <h2 id="key">Key</h2>
44
+ <p>When the <strong>key</strong> attribute is present, only a sub-part of the data received is injected into the <strong>dataProvider</strong>.
45
+ We can use the dot syntax to target what we want to keep.</p>
46
+ <p>For example if the data is <code>{my:{data:{a:1,b:2}}}</code> and the key is <code>key=&quot;my.data&quot;</code>, the data available in the <strong>dataProvider</strong> will be <code>{a:1 , b:2}</code></p>
47
+ <pre><code>&lt;sonic-fetch serviceURL=&quot;/docs-mock-api&quot; dataProvider=&quot;api/users/2&quot; &gt;&lt;/sonic-fetch&gt;
48
+ &lt;sonic-button dataProvider=&quot;api/users/2&quot; debug&gt;dataProvider object&lt;/sonic-button&gt;
49
+ &lt;!-- Get the user ID --&gt;
50
+ &lt;sonic-fetch serviceURL=&quot;/docs-mock-api&quot; dataProvider=&quot;id&quot; endPoint=&quot;api/users/2&quot; key=&quot;data.id&quot;&gt;&lt;/sonic-fetch&gt;
51
+ &lt;sonic-button dataProvider=&quot;id&quot; debug&gt;data.id&lt;/sonic-button&gt;
52
+ &lt;!-- Get the user First name --&gt;
53
+ &lt;sonic-fetch serviceURL=&quot;/docs-mock-api&quot; dataProvider=&quot;first_name&quot; endPoint=&quot;api/users/2&quot; key=&quot;data.first_name&quot;&gt;&lt;/sonic-fetch&gt;
54
+ &lt;sonic-button dataProvider=&quot;first_name&quot; debug&gt;data.first_name&lt;/sonic-button&gt;
55
+ &lt;!-- Get the user Last name --&gt;
56
+ &lt;sonic-fetch serviceURL=&quot;/docs-mock-api&quot; dataProvider=&quot;last_name&quot; endPoint=&quot;api/users/2&quot; key=&quot;data.last_name&quot;&gt;&lt;/sonic-fetch&gt;
57
+ &lt;sonic-button dataProvider=&quot;last_name&quot; debug&gt;data.last_name&lt;/sonic-button&gt;
58
+ &lt;!-- Get the user email --&gt;
59
+ &lt;sonic-fetch serviceURL=&quot;/docs-mock-api&quot; dataProvider=&quot;email&quot; endPoint=&quot;api/users/2&quot; key=&quot;data.email&quot;&gt;&lt;/sonic-fetch&gt;
60
+ &lt;sonic-button dataProvider=&quot;email&quot; debug&gt;data.email&lt;/sonic-button&gt;
61
+ </code></pre>
62
+ <h2 id="text-mode">Text mode</h2>
63
+ <p>if the mime type of the content returned by the service begins with <strong>text/</strong>, then the dataProvider has a key named &quot;text&quot; which contains the text returned by the service.</p>
64
+ <pre><code>&lt;sonic-fetch endPoint=&quot;README.md&quot; dataProvider=&quot;fetchText&quot;&gt;&lt;/sonic-fetch&gt;
65
+ &lt;sonic-button dataProvider=&quot;fetchText&quot; debug&gt;Hover to see the data&lt;/sonic-button&gt;
66
+ </code></pre>
67
+ <h2 id="noloader">NoLoader</h2>
68
+ <p>The noLoader attribute disables display of the default loader</p>
69
+ <pre><code>&lt;sonic-fetch noLoader serviceURL=&quot;/docs-mock-api&quot; endPoint=&quot;api/users?page=2&quot; dataProvider=&quot;myDataObj&quot;&gt;&lt;/sonic-fetch&gt;
70
+ &lt;sonic-button dataProvider=&quot;myDataObj&quot; debug&gt;Basic fetch with noLoader attribute&lt;/sonic-button&gt;
71
+ </code></pre>
72
+ <!--
73
+ ## Summary
74
+ Extends mixins : Fetcher, [Subscriber](../subscriber/subscriber.html#subscriber)
75
+
76
+ ### Configuration via les attributs
77
+
78
+ | nom | sur quelle balise | Description | Exemple de valeur | défaut / requis |
79
+ |-----|-----|---|---|---|
80
+ | serviceURL |Fetcher ou un de ses parents | URL de base des services. | http://la-billetterie.net/api/v2 | domain du site |
81
+ | endpoint |Fetcher | point d'accès d'un service | user/2 | valeur de l'attribut dataProvider |
82
+ | dataProvider |Fetcher ou un de ses parents | Identifiant d'un publisher qui stock les données, voir [subscriber](../subscriber/subscriber.html#subscriber). | billetterie/user/2 | *REQUIS* |
83
+ | headersDataProvider |Fetcher ou un de ses parents | Identifiant d'un publisher qui stock les données destinées à être envoyées en entêtes de la requetes | MyCoockieHEaders | null |
84
+ | key |Fetcher | extrait une sous propriété de la donnée chargée avant de l'assignée à son publisher | ma.data | null |
85
+
86
+ *Si la données est `{ma:{data:{a:1,b:2}}}` et `key="ma.data"`, la données disponible dans le composant sera `{a:1, b:2}`*
87
+
88
+ ### Intégration auto de basic auth (pour tester une api qui nécessite une authentification)
89
+
90
+ Fetch utilise le service pour générer le token et l'ajoute au header de l'appel qui récupère les données.
91
+
92
+ | nom | sur quelle balise | Description | Exemple de valeur | défaut / requis |
93
+ |-----|-----|---|---|---|
94
+ | userName | Fetcher ou un de ses parents | Nom de l'utilisateur | DjuDju | null |
95
+ | password | Fetcher ou un de ses parents | mot de passe | pom_549 | null |
96
+ | tokenProvider | Fetcher ou un de ses parents | point d'accès du service fournissant le token | auth | null |
97
+ | token | Fetcher ou un de ses parents | A fournir à la place des autres attributs si on le possède | q<d34gb | null |
98
+
99
+ ### Autres choses utiles
100
+ L'attribut *noLoader* du composant permet de désactiver l'affichage du loader par défaut.
101
+ On peut appeler la methode invalidate() sur le publisher associé au composant pour declencher le rechargement des données.
102
+ endPoint est une propriété réctive, par conséquent, sa modification, manuelle via template ou data binbding provoque la mise à jour du contenu.
103
+ -->
104
+
105
+
106
+ </article>
107
+ </main>
108
+ </body>
109
+ </html>
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/if/if.html" data-doc-id="core/components/functional/if/if">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>if — Concorde</title>
7
+ <meta name="description" content="The sonic-if component shows its slot when .condition is true. In Lit, bind .condition from store-driven state (@subscribe on a formDataProvider field) — live preview and TypeScript source are the sam">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/functional/if/if, if, functional component, sonic-if, web component, .condition, @subscribe, formDataProvider, docs-lit-demo">
9
+ <meta name="concorde-doc-id" content="core/components/functional/if/if">
10
+ <link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/functional/if/if.html">
11
+ </head>
12
+ <body>
13
+ <header>
14
+ <p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/if/if.md/if" rel="nofollow">interactive version</a></p>
15
+ </header>
16
+ <main>
17
+ <article>
18
+ <p class="doc-lead" id="doc-summary"><strong>Concorde functional component — if</strong>. The sonic-if component shows its slot when .condition is true. In Lit, bind .condition from store-driven state (@subscribe on a formDataProvider field) — live preview and TypeScript source are the sam <span>Doc ID: <code>core/components/functional/if/if</code>. Keywords: Concorde, supersoniks, core/components/functional/if/if, if, functional component, sonic-if, web component, .condition, @subscribe, formDataProvider, docs-lit-demo. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/if/if.html">https://concorde.supersoniks.org/crawl/core/components/functional/if/if.html</a>.</span></p>
19
+ <h1 id="if">if</h1>
20
+ <p>The <strong>sonic-if</strong> component shows its slot when <strong><code>.condition</code></strong> is true. In Lit, bind <code>.condition</code> from store-driven state (<code>@subscribe</code> on a <code>formDataProvider</code> field) — live preview and <strong>TypeScript source are the same file</strong> (<code>docs-lit-demo</code>):</p>
21
+ <p><docs-lit-demo for="docs-toggle-if-demo"></docs-lit-demo></p>
22
+ <p>Plain HTML without Lit: <a href="../../../../docs/_misc/html-integration.html#html-integration">HTML integration</a>.</p>
23
+
24
+ </article>
25
+ </main>
26
+ </body>
27
+ </html>
@@ -0,0 +1,79 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/jsonata/jsonata.html" data-doc-id="core/components/functional/jsonata/jsonata">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Jsonata — Concorde</title>
7
+ <meta name="description" content="sonic-jsonata : 1 input → expression → 1 output (readonly).">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/functional/jsonata/jsonata, jsonata, Jsonata, functional component, sonic-jsonata, web component, sonic-mix, serviceURL=&quot;/docs-mock-api&quot;, inputProvider, $input, outputProvider, expression, formDataProvider, $top, $taxPercent">
9
+ <meta name="concorde-doc-id" content="core/components/functional/jsonata/jsonata">
10
+ <link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/functional/jsonata/jsonata.html">
11
+ </head>
12
+ <body>
13
+ <header>
14
+ <p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/jsonata/jsonata.md/jsonata" rel="nofollow">interactive version</a></p>
15
+ </header>
16
+ <main>
17
+ <article>
18
+ <p class="doc-lead" id="doc-summary"><strong>Concorde functional component — Jsonata</strong>. sonic-jsonata : 1 input → expression → 1 output (readonly). <span>Doc ID: <code>core/components/functional/jsonata/jsonata</code>. Keywords: Concorde, supersoniks, core/components/functional/jsonata/jsonata, jsonata, Jsonata, functional component, sonic-jsonata, web component, sonic-mix, serviceURL=&quot;/docs-mock-api&quot;, inputProvider, $input, outputProvider, expression, formDataProvider, $top, $taxPercent. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/jsonata/jsonata.html">https://concorde.supersoniks.org/crawl/core/components/functional/jsonata/jsonata.html</a>.</span></p>
19
+ <h1 id="jsonata">Jsonata</h1>
20
+ <p><code>sonic-jsonata</code> : <strong>1 input → expression → 1 output</strong> (readonly).</p>
21
+ <p>Unidirectional (fetch → compute → display), unlike <a href="../mix/mix.html#mix"><code>sonic-mix</code></a>.</p>
22
+ <blockquote>
23
+ <p>Offline : <code>serviceURL=&quot;/docs-mock-api&quot;</code> — <a href="../../../../docs/_misc/docs-mock-api.html#docs-mock-api">Local API demos</a>.</p>
24
+ </blockquote>
25
+ <h2 id="demos">Demos</h2>
26
+ <h3 id="groupby--top-n">Groupby + top N</h3>
27
+ <p>Change <strong>Top N</strong> → recalcul sans refetch.</p>
28
+ <p><docs-lit-demo for="docs-jsonata-space-cats-demo"></docs-lit-demo></p>
29
+ <h3 id="totaux-somme--taxe">Totaux (somme + taxe)</h3>
30
+ <p>Change <strong>Tax %</strong> → même idée.</p>
31
+ <p><docs-lit-demo for="docs-jsonata-table-totals-demo"></docs-lit-demo></p>
32
+ <h2 id="attributes">Attributes</h2>
33
+ <table>
34
+ <thead>
35
+ <tr>
36
+ <th>Attribute</th>
37
+ <th>Role</th>
38
+ </tr>
39
+ </thead>
40
+ <tbody><tr>
41
+ <td><code>inputProvider</code></td>
42
+ <td>Entrée (<code>$input</code> dans l’expression)</td>
43
+ </tr>
44
+ <tr>
45
+ <td><code>outputProvider</code></td>
46
+ <td>Sortie (readonly)</td>
47
+ </tr>
48
+ <tr>
49
+ <td><code>expression</code></td>
50
+ <td>Expression JSONata</td>
51
+ </tr>
52
+ <tr>
53
+ <td><code>formDataProvider</code></td>
54
+ <td>Form optionnel (<code>$top</code>, <code>$taxPercent</code>, …) — même id que le form</td>
55
+ </tr>
56
+ <tr>
57
+ <td><code>outputSchema</code></td>
58
+ <td>Schéma léger optionnel (<code>type</code>, <code>required</code>)</td>
59
+ </tr>
60
+ </tbody></table>
61
+ <h2 id="helpers">Helpers</h2>
62
+ <p><code>$ucFirst</code> · <code>$currency</code> · <code>$percent</code> · <code>$date</code> · <code>$toChart(items, labelKey, valueKey, datasetLabel?)</code></p>
63
+ <p>Pas de DOM, pas de réseau, pas d’<code>eval</code>.</p>
64
+ <h2 id="markup">Markup</h2>
65
+ <pre><code class="language-html">&amp;lt;sonic-jsonata
66
+ inputProvider=&quot;api/space-cats&quot;
67
+ outputProvider=&quot;leaderboard&quot;
68
+ formDataProvider=&quot;topForm&quot;
69
+ expression=&#39;$input{name: $sum(points)} ~&gt; $each(function($v,$k){{&quot;name&quot;:$k,&quot;points&quot;:$v}}) ^(&gt;points)[[0..$number($top)-1]]&#39;
70
+ &amp;gt;&amp;lt;/sonic-jsonata&amp;gt;
71
+ </code></pre>
72
+ <p>Pour du multi-entrées ou une fonction TS : primitive <a href="../../../../docs/_core-concept/dataFlow.html#dataFlow"><code>derive</code></a>.</p>
73
+ <h2 id="states">States</h2>
74
+ <p><code>{output}/_state_</code> → <code>{ status, error? }</code> (<code>loading</code> | <code>ready</code> | <code>error</code> | <code>empty</code>). Brancher avec <code>sonic-states</code>.</p>
75
+
76
+ </article>
77
+ </main>
78
+ </body>
79
+ </html>
@@ -0,0 +1,70 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/list/list.html" data-doc-id="core/components/functional/list/list">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>List — Concorde</title>
7
+ <meta name="description" content="&gt; Try offline: serviceURL=&quot;/docs-mock-api&quot; and dataProvider=&quot;api/users&quot; with key=&quot;data&quot; — see Local API demos. Recommended patterns: Data flow.">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/functional/list/list, list, List, functional component, sonic-list, web component, serviceURL=&quot;/docs-mock-api&quot;, dataProvider=&quot;api/users&quot;, key=&quot;data&quot;, props, dataProvider, fetch, serviceURL, key, items">
9
+ <meta name="concorde-doc-id" content="core/components/functional/list/list">
10
+ <link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/functional/list/list.html">
11
+ </head>
12
+ <body>
13
+ <header>
14
+ <p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/list/list.md/list" rel="nofollow">interactive version</a></p>
15
+ </header>
16
+ <main>
17
+ <article>
18
+ <p class="doc-lead" id="doc-summary"><strong>Concorde functional component — List</strong>. &gt; Try offline: serviceURL=&quot;/docs-mock-api&quot; and dataProvider=&quot;api/users&quot; with key=&quot;data&quot; — see Local API demos. Recommended patterns: Data flow. <span>Doc ID: <code>core/components/functional/list/list</code>. Keywords: Concorde, supersoniks, core/components/functional/list/list, list, List, functional component, sonic-list, web component, serviceURL=&quot;/docs-mock-api&quot;, dataProvider=&quot;api/users&quot;, key=&quot;data&quot;, props, dataProvider, fetch, serviceURL, key, items. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/list/list.html">https://concorde.supersoniks.org/crawl/core/components/functional/list/list.html</a>.</span></p>
19
+ <h1 id="list">List</h1>
20
+ <blockquote>
21
+ <p><strong>Try offline:</strong> <code>serviceURL=&quot;/docs-mock-api&quot;</code> and <code>dataProvider=&quot;api/users&quot;</code> with <code>key=&quot;data&quot;</code> — see <a href="../../../../docs/_misc/docs-mock-api.html#docs-mock-api">Local API demos</a>. Recommended patterns: <a href="../../../../docs/_core-concept/dataFlow.html#dataFlow">Data flow</a>.</p>
22
+ </blockquote>
23
+ <p>The <strong>sonic-list</strong> component renders one row per entry in <strong><code>props</code></strong> (array from fetch or set on the element).</p>
24
+ <p>List extends <a href="../../../../docs/_core-concept/subscriber.html#subscriber">Subscriber</a> and <strong>Fetcher</strong>:</p>
25
+ <ul>
26
+ <li><strong>Subscriber</strong> — <code>props</code> + <code>dataProvider</code></li>
27
+ <li><strong>Fetcher</strong> — optional <code>fetch</code> + <code>serviceURL</code> / <code>key</code> (see <a href="../fetch/fetch.html#fetch">Fetch</a>)</li>
28
+ </ul>
29
+ <h2 id="row-renderer-items--recommended">Row renderer (<code>items</code>) — recommended</h2>
30
+ <p>From a <strong>Lit</strong> parent, pass a function on the <strong><code>items</code></strong> property (<code>ListItems</code>). Each row is wrapped in a <code>sonic-subscriber</code> with <code>dataProvider=&quot;…/list-item/n&quot;</code> (hover rows with <code>debug</code>).</p>
31
+ <pre><code class="language-typescript">private items = ({ first_name, last_name, email, avatar }) =&gt; html`
32
+ &lt;sonic-image src=${avatar} …&gt;&lt;/sonic-image&gt;
33
+ &lt;div&gt;${first_name} &lt;b&gt;${last_name}&lt;/b&gt;&lt;/div&gt;
34
+ &lt;div&gt;${email}&lt;/div&gt;
35
+ `;
36
+
37
+ html`&lt;sonic-list
38
+ fetch
39
+ dataProvider=&quot;api/users&quot;
40
+ key=&quot;data&quot;
41
+ serviceURL=&quot;/docs-mock-api&quot;
42
+ .items=${this.items}
43
+ &gt;&lt;/sonic-list&gt;`;
44
+ </code></pre>
45
+ <p>Use <strong><code>.items=${fn}</code></strong> (property binding): Lit passes functions only as properties, not as HTML attributes — <code>@property({ type: Function })</code> does not change that. Same for <strong><code>.noItems</code></strong>, <strong><code>.separator</code></strong>, <strong><code>.skeleton</code></strong>. The callback receives each row object (replacing <code>data-bind</code> / <code>&lt;sonic-value&gt;</code> in a <code>&lt;template&gt;</code>).</p>
46
+ <p>Live demo + TypeScript source (one file, no Markdown copy):</p>
47
+ <p><docs-lit-demo for="docs-users-list"></docs-lit-demo></p>
48
+ <p>Implementation: <code>src/docs/example/docs-users-list.ts</code> — row markup in the <strong><code>items</code></strong> callback (<code>item.first_name</code>, …), same idea as replacing <code>data-bind</code> / <code>&lt;sonic-value&gt;</code> in a <code>&lt;template&gt;</code>.</p>
49
+ <h2 id="alternating-row-layouts">Alternating row layouts</h2>
50
+ <p>Use <strong><code>metadata</code></strong> (<code>even</code>, <code>odd</code>, <code>firstChild</code>, …) or fields on each item (e.g. <code>tpl</code> with <code>templateKey</code>):</p>
51
+ <p><docs-lit-demo for="docs-list-alternate-demo"></docs-lit-demo></p>
52
+ <p><docs-lit-demo for="docs-list-template-key-demo"></docs-lit-demo></p>
53
+ <h2 id="separator-and-empty-list">Separator and empty list</h2>
54
+ <p><docs-lit-demo for="docs-list-separator-demo"></docs-lit-demo></p>
55
+ <h2 id="fetch--extractvalues">Fetch + <code>extractValues</code></h2>
56
+ <p><docs-lit-demo for="docs-list-extract-values-demo"></docs-lit-demo></p>
57
+ <h2 id="html-template-children-integration-without-lit">HTML <code>&lt;template&gt;</code> children (integration without Lit)</h2>
58
+ <p>For <strong>plain HTML</strong> hosts, you can still declare <strong><code>&lt;template&gt;</code></strong> children (and <code>data-value</code> for <code>templateKey</code>, <code>separator</code>, <code>no-item</code>). That path is for <a href="../../../../docs/_misc/html-integration.html#html-integration">HTML integration</a> — not used in Concorde doc live demos.</p>
59
+ <p>Each list row still gets <code>dataProvider=&quot;[list]/list-item/[index]&quot;</code>.</p>
60
+ <h2 id="additionnal-tips">Additionnal tips</h2>
61
+ <ul>
62
+ <li>If the request returns an object, it is wrapped in an array (unless <code>extractValues</code> is set).</li>
63
+ <li>Call <strong><code>invalidate()</code></strong> on the list publisher to reload fetch data.</li>
64
+ <li>Each row publisher exposes <strong><code>_parent_</code></strong> pointing at the list publisher.</li>
65
+ </ul>
66
+
67
+ </article>
68
+ </main>
69
+ </body>
70
+ </html>