@overcrow/mcp 0.0.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -1
  3. package/dist/audit/index.js +103 -0
  4. package/dist/audit/lexer.js +417 -0
  5. package/dist/audit/project.js +200 -0
  6. package/dist/audit/rules.js +661 -0
  7. package/dist/bootstrap/download.js +229 -0
  8. package/dist/bootstrap/install.js +280 -0
  9. package/dist/bootstrap/pin.js +85 -0
  10. package/dist/bootstrap/pin.json +119 -0
  11. package/dist/bootstrap/zip.js +258 -0
  12. package/dist/cli.js +200 -0
  13. package/dist/confine.js +244 -0
  14. package/dist/content/docs/en/cli.md +768 -0
  15. package/dist/content/docs/en/creator-space.md +78 -0
  16. package/dist/content/docs/en/dev-channel.md +130 -0
  17. package/dist/content/docs/en/elements.md +469 -0
  18. package/dist/content/docs/en/forms.md +328 -0
  19. package/dist/content/docs/en/guide.md +252 -0
  20. package/dist/content/docs/en/index.md +85 -0
  21. package/dist/content/docs/en/limits.md +241 -0
  22. package/dist/content/docs/en/logic.md +446 -0
  23. package/dist/content/docs/en/manifest.md +388 -0
  24. package/dist/content/docs/en/mcp.md +165 -0
  25. package/dist/content/docs/en/package.md +131 -0
  26. package/dist/content/docs/en/publish-a-widget.md +94 -0
  27. package/dist/content/docs/en/publish-keys.md +95 -0
  28. package/dist/content/docs/en/publishing.md +167 -0
  29. package/dist/content/docs/en/reference.md +55 -0
  30. package/dist/content/docs/en/result-shapes.md +332 -0
  31. package/dist/content/docs/en/sdk.md +295 -0
  32. package/dist/content/docs/en/security.md +115 -0
  33. package/dist/content/docs/en/service-reference.md +344 -0
  34. package/dist/content/docs/en/services.md +517 -0
  35. package/dist/content/docs/en/style-properties.md +270 -0
  36. package/dist/content/docs/en/style.md +266 -0
  37. package/dist/content/docs/en/testing.md +400 -0
  38. package/dist/content/docs/en/verified-domain.md +46 -0
  39. package/dist/content/docs/en/view.md +338 -0
  40. package/dist/content/docs/en/widget-listing.md +65 -0
  41. package/dist/content/docs/en/widget-review.md +57 -0
  42. package/dist/content/docs/en/widget-statistics.md +134 -0
  43. package/dist/content/docs/en/widgets.md +76 -0
  44. package/dist/content/docs/fr/cli.md +802 -0
  45. package/dist/content/docs/fr/creator-space.md +83 -0
  46. package/dist/content/docs/fr/dev-channel.md +140 -0
  47. package/dist/content/docs/fr/elements.md +475 -0
  48. package/dist/content/docs/fr/forms.md +341 -0
  49. package/dist/content/docs/fr/guide.md +263 -0
  50. package/dist/content/docs/fr/index.md +90 -0
  51. package/dist/content/docs/fr/limits.md +244 -0
  52. package/dist/content/docs/fr/logic.md +461 -0
  53. package/dist/content/docs/fr/manifest.md +401 -0
  54. package/dist/content/docs/fr/mcp.md +173 -0
  55. package/dist/content/docs/fr/package.md +139 -0
  56. package/dist/content/docs/fr/publish-a-widget.md +101 -0
  57. package/dist/content/docs/fr/publish-keys.md +97 -0
  58. package/dist/content/docs/fr/publishing.md +177 -0
  59. package/dist/content/docs/fr/reference.md +59 -0
  60. package/dist/content/docs/fr/result-shapes.md +333 -0
  61. package/dist/content/docs/fr/sdk.md +301 -0
  62. package/dist/content/docs/fr/security.md +129 -0
  63. package/dist/content/docs/fr/service-reference.md +346 -0
  64. package/dist/content/docs/fr/services.md +540 -0
  65. package/dist/content/docs/fr/style-properties.md +272 -0
  66. package/dist/content/docs/fr/style.md +281 -0
  67. package/dist/content/docs/fr/testing.md +417 -0
  68. package/dist/content/docs/fr/verified-domain.md +49 -0
  69. package/dist/content/docs/fr/view.md +352 -0
  70. package/dist/content/docs/fr/widget-listing.md +69 -0
  71. package/dist/content/docs/fr/widget-review.md +59 -0
  72. package/dist/content/docs/fr/widget-statistics.md +141 -0
  73. package/dist/content/docs/fr/widgets.md +81 -0
  74. package/dist/content/examples/clock/LICENSE +21 -0
  75. package/dist/content/examples/clock/README.md +75 -0
  76. package/dist/content/examples/clock/listing.json +19 -0
  77. package/dist/content/examples/clock/locales/en.json +4 -0
  78. package/dist/content/examples/clock/locales/fr.json +4 -0
  79. package/dist/content/examples/clock/logic.ts +85 -0
  80. package/dist/content/examples/clock/manifest.json +44 -0
  81. package/dist/content/examples/clock/package.json +16 -0
  82. package/dist/content/examples/clock/style.ocss +26 -0
  83. package/dist/content/examples/clock/tests/hidden.scenario.json +68 -0
  84. package/dist/content/examples/clock/tests/load-logic.mjs +22 -0
  85. package/dist/content/examples/clock/tests/logic.test.mjs +89 -0
  86. package/dist/content/examples/clock/tests/options.scenario.json +108 -0
  87. package/dist/content/examples/clock/tests/preview.scenario.json +25 -0
  88. package/dist/content/examples/clock/tests/render.scenario.json +94 -0
  89. package/dist/content/examples/clock/tests/summer-time.scenario.json +74 -0
  90. package/dist/content/examples/clock/tests/ticks.scenario.json +120 -0
  91. package/dist/content/examples/clock/tsconfig.json +16 -0
  92. package/dist/content/examples/clock/view.ocml +8 -0
  93. package/dist/content/examples/countdown/LICENSE +20 -0
  94. package/dist/content/examples/countdown/listing.json +10 -0
  95. package/dist/content/examples/countdown/locales/en.json +15 -0
  96. package/dist/content/examples/countdown/locales/fr.json +15 -0
  97. package/dist/content/examples/countdown/logic.ts +179 -0
  98. package/dist/content/examples/countdown/manifest.json +34 -0
  99. package/dist/content/examples/countdown/package.json +15 -0
  100. package/dist/content/examples/countdown/style.ocss +94 -0
  101. package/dist/content/examples/countdown/tsconfig.json +16 -0
  102. package/dist/content/examples/countdown/view.ocml +42 -0
  103. package/dist/content/examples/fps/LICENSE +21 -0
  104. package/dist/content/examples/fps/README.md +64 -0
  105. package/dist/content/examples/fps/listing.json +19 -0
  106. package/dist/content/examples/fps/locales/en.json +11 -0
  107. package/dist/content/examples/fps/locales/fr.json +11 -0
  108. package/dist/content/examples/fps/logic.ts +64 -0
  109. package/dist/content/examples/fps/manifest.json +30 -0
  110. package/dist/content/examples/fps/package.json +16 -0
  111. package/dist/content/examples/fps/style.ocss +31 -0
  112. package/dist/content/examples/fps/submission.json +8 -0
  113. package/dist/content/examples/fps/tests/label.scenario.json +63 -0
  114. package/dist/content/examples/fps/tests/load-logic.mjs +22 -0
  115. package/dist/content/examples/fps/tests/logic.test.mjs +60 -0
  116. package/dist/content/examples/fps/tests/preview.scenario.json +29 -0
  117. package/dist/content/examples/fps/tests/refused.scenario.json +20 -0
  118. package/dist/content/examples/fps/tests/render.scenario.json +96 -0
  119. package/dist/content/examples/fps/tests/stale.scenario.json +91 -0
  120. package/dist/content/examples/fps/tests/unavailable.scenario.json +111 -0
  121. package/dist/content/examples/fps/tsconfig.json +16 -0
  122. package/dist/content/examples/fps/view.ocml +11 -0
  123. package/dist/content/examples/media/LICENSE +21 -0
  124. package/dist/content/examples/media/README.md +147 -0
  125. package/dist/content/examples/media/listing.json +19 -0
  126. package/dist/content/examples/media/locales/en.json +11 -0
  127. package/dist/content/examples/media/locales/fr.json +11 -0
  128. package/dist/content/examples/media/logic.ts +191 -0
  129. package/dist/content/examples/media/manifest.json +35 -0
  130. package/dist/content/examples/media/package.json +16 -0
  131. package/dist/content/examples/media/style.ocss +148 -0
  132. package/dist/content/examples/media/submission.json +12 -0
  133. package/dist/content/examples/media/tests/covers.scenario.json +144 -0
  134. package/dist/content/examples/media/tests/gesture.scenario.json +173 -0
  135. package/dist/content/examples/media/tests/load-logic.mjs +22 -0
  136. package/dist/content/examples/media/tests/logic.test.mjs +176 -0
  137. package/dist/content/examples/media/tests/marquee.scenario.json +127 -0
  138. package/dist/content/examples/media/tests/preview.scenario.json +52 -0
  139. package/dist/content/examples/media/tests/read-only.scenario.json +53 -0
  140. package/dist/content/examples/media/tests/refused.scenario.json +22 -0
  141. package/dist/content/examples/media/tests/refused.test.mjs +31 -0
  142. package/dist/content/examples/media/tests/render.scenario.json +136 -0
  143. package/dist/content/examples/media/tests/states.scenario.json +257 -0
  144. package/dist/content/examples/media/tests/unavailable.scenario.json +120 -0
  145. package/dist/content/examples/media/tsconfig.json +16 -0
  146. package/dist/content/examples/media/view.ocml +41 -0
  147. package/dist/content/examples/notes/LICENSE +21 -0
  148. package/dist/content/examples/notes/README.md +219 -0
  149. package/dist/content/examples/notes/listing.json +19 -0
  150. package/dist/content/examples/notes/locales/en.json +25 -0
  151. package/dist/content/examples/notes/locales/fr.json +25 -0
  152. package/dist/content/examples/notes/logic.ts +799 -0
  153. package/dist/content/examples/notes/manifest.json +40 -0
  154. package/dist/content/examples/notes/package.json +16 -0
  155. package/dist/content/examples/notes/style.ocss +469 -0
  156. package/dist/content/examples/notes/submission.json +12 -0
  157. package/dist/content/examples/notes/tests/checks.scenario.json +237 -0
  158. package/dist/content/examples/notes/tests/create.scenario.json +260 -0
  159. package/dist/content/examples/notes/tests/delete.scenario.json +342 -0
  160. package/dist/content/examples/notes/tests/drafts.scenario.json +714 -0
  161. package/dist/content/examples/notes/tests/editor.scenario.json +232 -0
  162. package/dist/content/examples/notes/tests/frame.scenario.json +93 -0
  163. package/dist/content/examples/notes/tests/interactive.scenario.json +344 -0
  164. package/dist/content/examples/notes/tests/limits.scenario.json +1351 -0
  165. package/dist/content/examples/notes/tests/load-logic.mjs +22 -0
  166. package/dist/content/examples/notes/tests/logic.test.mjs +514 -0
  167. package/dist/content/examples/notes/tests/preview.scenario.json +99 -0
  168. package/dist/content/examples/notes/tests/read-only.scenario.json +105 -0
  169. package/dist/content/examples/notes/tests/refused.scenario.json +33 -0
  170. package/dist/content/examples/notes/tests/save.scenario.json +378 -0
  171. package/dist/content/examples/notes/tests/states.scenario.json +640 -0
  172. package/dist/content/examples/notes/tests/typing.scenario.json +562 -0
  173. package/dist/content/examples/notes/tests/unavailable.scenario.json +246 -0
  174. package/dist/content/examples/notes/tsconfig.json +16 -0
  175. package/dist/content/examples/notes/view.ocml +154 -0
  176. package/dist/content/examples/performance/LICENSE +21 -0
  177. package/dist/content/examples/performance/README.md +134 -0
  178. package/dist/content/examples/performance/listing.json +19 -0
  179. package/dist/content/examples/performance/locales/en.json +20 -0
  180. package/dist/content/examples/performance/locales/fr.json +20 -0
  181. package/dist/content/examples/performance/logic.ts +210 -0
  182. package/dist/content/examples/performance/manifest.json +83 -0
  183. package/dist/content/examples/performance/package.json +16 -0
  184. package/dist/content/examples/performance/style.ocss +75 -0
  185. package/dist/content/examples/performance/submission.json +12 -0
  186. package/dist/content/examples/performance/tests/fahrenheit.scenario.json +110 -0
  187. package/dist/content/examples/performance/tests/horizontal.scenario.json +96 -0
  188. package/dist/content/examples/performance/tests/load-logic.mjs +22 -0
  189. package/dist/content/examples/performance/tests/logic.test.mjs +226 -0
  190. package/dist/content/examples/performance/tests/menu.scenario.json +170 -0
  191. package/dist/content/examples/performance/tests/no-fps-source.scenario.json +47 -0
  192. package/dist/content/examples/performance/tests/preview.scenario.json +45 -0
  193. package/dist/content/examples/performance/tests/refused.scenario.json +20 -0
  194. package/dist/content/examples/performance/tests/refused.test.mjs +19 -0
  195. package/dist/content/examples/performance/tests/region.scenario.json +89 -0
  196. package/dist/content/examples/performance/tests/render.scenario.json +112 -0
  197. package/dist/content/examples/performance/tests/sources.scenario.json +151 -0
  198. package/dist/content/examples/performance/tests/stale.scenario.json +111 -0
  199. package/dist/content/examples/performance/tests/telemetry-only.scenario.json +44 -0
  200. package/dist/content/examples/performance/tests/thresholds.scenario.json +147 -0
  201. package/dist/content/examples/performance/tests/waiting.scenario.json +105 -0
  202. package/dist/content/examples/performance/tsconfig.json +16 -0
  203. package/dist/content/examples/performance/view.ocml +18 -0
  204. package/dist/content/examples/playervox-journal/LICENSE +21 -0
  205. package/dist/content/examples/playervox-journal/README.md +150 -0
  206. package/dist/content/examples/playervox-journal/listing.json +19 -0
  207. package/dist/content/examples/playervox-journal/locales/en.json +25 -0
  208. package/dist/content/examples/playervox-journal/locales/fr.json +25 -0
  209. package/dist/content/examples/playervox-journal/logic.ts +556 -0
  210. package/dist/content/examples/playervox-journal/manifest.json +19 -0
  211. package/dist/content/examples/playervox-journal/package.json +16 -0
  212. package/dist/content/examples/playervox-journal/style.ocss +142 -0
  213. package/dist/content/examples/playervox-journal/submission.json +12 -0
  214. package/dist/content/examples/playervox-journal/tests/changes.scenario.json +482 -0
  215. package/dist/content/examples/playervox-journal/tests/delete.scenario.json +432 -0
  216. package/dist/content/examples/playervox-journal/tests/frame.scenario.json +169 -0
  217. package/dist/content/examples/playervox-journal/tests/load-logic.mjs +22 -0
  218. package/dist/content/examples/playervox-journal/tests/logic.test.mjs +349 -0
  219. package/dist/content/examples/playervox-journal/tests/paging.scenario.json +428 -0
  220. package/dist/content/examples/playervox-journal/tests/preview.scenario.json +184 -0
  221. package/dist/content/examples/playervox-journal/tests/read-only.scenario.json +157 -0
  222. package/dist/content/examples/playervox-journal/tests/refused.scenario.json +39 -0
  223. package/dist/content/examples/playervox-journal/tests/scale.scenario.json +286 -0
  224. package/dist/content/examples/playervox-journal/tests/signed-out.scenario.json +134 -0
  225. package/dist/content/examples/playervox-journal/tests/states.scenario.json +741 -0
  226. package/dist/content/examples/playervox-journal/tests/unavailable.scenario.json +183 -0
  227. package/dist/content/examples/playervox-journal/tsconfig.json +16 -0
  228. package/dist/content/examples/playervox-journal/view.ocml +52 -0
  229. package/dist/content/examples/playervox-rating/LICENSE +21 -0
  230. package/dist/content/examples/playervox-rating/README.md +166 -0
  231. package/dist/content/examples/playervox-rating/listing.json +19 -0
  232. package/dist/content/examples/playervox-rating/locales/en.json +35 -0
  233. package/dist/content/examples/playervox-rating/locales/fr.json +35 -0
  234. package/dist/content/examples/playervox-rating/logic.ts +581 -0
  235. package/dist/content/examples/playervox-rating/manifest.json +19 -0
  236. package/dist/content/examples/playervox-rating/package.json +16 -0
  237. package/dist/content/examples/playervox-rating/style.ocss +333 -0
  238. package/dist/content/examples/playervox-rating/submission.json +12 -0
  239. package/dist/content/examples/playervox-rating/tests/account.scenario.json +125 -0
  240. package/dist/content/examples/playervox-rating/tests/bounds.scenario.json +73 -0
  241. package/dist/content/examples/playervox-rating/tests/draft.scenario.json +199 -0
  242. package/dist/content/examples/playervox-rating/tests/form.scenario.json +142 -0
  243. package/dist/content/examples/playervox-rating/tests/load-logic.mjs +22 -0
  244. package/dist/content/examples/playervox-rating/tests/logic.test.mjs +346 -0
  245. package/dist/content/examples/playervox-rating/tests/offline.scenario.json +142 -0
  246. package/dist/content/examples/playervox-rating/tests/preview.scenario.json +44 -0
  247. package/dist/content/examples/playervox-rating/tests/publish-keyboard.scenario.json +221 -0
  248. package/dist/content/examples/playervox-rating/tests/publish-pointer.scenario.json +314 -0
  249. package/dist/content/examples/playervox-rating/tests/read-only.scenario.json +70 -0
  250. package/dist/content/examples/playervox-rating/tests/refused.scenario.json +45 -0
  251. package/dist/content/examples/playervox-rating/tests/states.scenario.json +362 -0
  252. package/dist/content/examples/playervox-rating/tsconfig.json +16 -0
  253. package/dist/content/examples/playervox-rating/view.ocml +62 -0
  254. package/dist/content/examples/playervox-reviews/LICENSE +21 -0
  255. package/dist/content/examples/playervox-reviews/README.md +194 -0
  256. package/dist/content/examples/playervox-reviews/listing.json +19 -0
  257. package/dist/content/examples/playervox-reviews/locales/en.json +32 -0
  258. package/dist/content/examples/playervox-reviews/locales/fr.json +32 -0
  259. package/dist/content/examples/playervox-reviews/logic.ts +822 -0
  260. package/dist/content/examples/playervox-reviews/manifest.json +30 -0
  261. package/dist/content/examples/playervox-reviews/package.json +16 -0
  262. package/dist/content/examples/playervox-reviews/style.ocss +260 -0
  263. package/dist/content/examples/playervox-reviews/submission.json +8 -0
  264. package/dist/content/examples/playervox-reviews/tests/account.scenario.json +249 -0
  265. package/dist/content/examples/playervox-reviews/tests/bounds.scenario.json +336 -0
  266. package/dist/content/examples/playervox-reviews/tests/changes.scenario.json +515 -0
  267. package/dist/content/examples/playervox-reviews/tests/filter.scenario.json +400 -0
  268. package/dist/content/examples/playervox-reviews/tests/frame.scenario.json +185 -0
  269. package/dist/content/examples/playervox-reviews/tests/keyboard.scenario.json +188 -0
  270. package/dist/content/examples/playervox-reviews/tests/load-logic.mjs +22 -0
  271. package/dist/content/examples/playervox-reviews/tests/logic.test.mjs +559 -0
  272. package/dist/content/examples/playervox-reviews/tests/offline-start.scenario.json +152 -0
  273. package/dist/content/examples/playervox-reviews/tests/offline.scenario.json +311 -0
  274. package/dist/content/examples/playervox-reviews/tests/paging.scenario.json +497 -0
  275. package/dist/content/examples/playervox-reviews/tests/preview.scenario.json +286 -0
  276. package/dist/content/examples/playervox-reviews/tests/reading.scenario.json +591 -0
  277. package/dist/content/examples/playervox-reviews/tests/refused.scenario.json +54 -0
  278. package/dist/content/examples/playervox-reviews/tests/scale.scenario.json +303 -0
  279. package/dist/content/examples/playervox-reviews/tests/states.scenario.json +700 -0
  280. package/dist/content/examples/playervox-reviews/tests/unavailable.scenario.json +192 -0
  281. package/dist/content/examples/playervox-reviews/tsconfig.json +16 -0
  282. package/dist/content/examples/playervox-reviews/view.ocml +110 -0
  283. package/dist/content/examples/playervox-score/LICENSE +21 -0
  284. package/dist/content/examples/playervox-score/README.md +131 -0
  285. package/dist/content/examples/playervox-score/listing.json +19 -0
  286. package/dist/content/examples/playervox-score/locales/en.json +23 -0
  287. package/dist/content/examples/playervox-score/locales/fr.json +23 -0
  288. package/dist/content/examples/playervox-score/logic.ts +430 -0
  289. package/dist/content/examples/playervox-score/manifest.json +47 -0
  290. package/dist/content/examples/playervox-score/package.json +16 -0
  291. package/dist/content/examples/playervox-score/style.ocss +247 -0
  292. package/dist/content/examples/playervox-score/submission.json +8 -0
  293. package/dist/content/examples/playervox-score/tests/grades.scenario.json +279 -0
  294. package/dist/content/examples/playervox-score/tests/load-logic.mjs +22 -0
  295. package/dist/content/examples/playervox-score/tests/logic.test.mjs +229 -0
  296. package/dist/content/examples/playervox-score/tests/options.scenario.json +302 -0
  297. package/dist/content/examples/playervox-score/tests/preview.scenario.json +68 -0
  298. package/dist/content/examples/playervox-score/tests/pulse.scenario.json +157 -0
  299. package/dist/content/examples/playervox-score/tests/refused.scenario.json +21 -0
  300. package/dist/content/examples/playervox-score/tests/signed-out.scenario.json +46 -0
  301. package/dist/content/examples/playervox-score/tests/states.scenario.json +450 -0
  302. package/dist/content/examples/playervox-score/tests/unavailable.scenario.json +84 -0
  303. package/dist/content/examples/playervox-score/tsconfig.json +16 -0
  304. package/dist/content/examples/playervox-score/view.ocml +51 -0
  305. package/dist/content/examples/session/LICENSE +21 -0
  306. package/dist/content/examples/session/README.md +57 -0
  307. package/dist/content/examples/session/listing.json +19 -0
  308. package/dist/content/examples/session/locales/en.json +3 -0
  309. package/dist/content/examples/session/locales/fr.json +3 -0
  310. package/dist/content/examples/session/logic.ts +26 -0
  311. package/dist/content/examples/session/manifest.json +19 -0
  312. package/dist/content/examples/session/package.json +16 -0
  313. package/dist/content/examples/session/style.ocss +16 -0
  314. package/dist/content/examples/session/submission.json +8 -0
  315. package/dist/content/examples/session/tests/hidden.scenario.json +45 -0
  316. package/dist/content/examples/session/tests/load-logic.mjs +22 -0
  317. package/dist/content/examples/session/tests/logic.test.mjs +37 -0
  318. package/dist/content/examples/session/tests/preview.scenario.json +28 -0
  319. package/dist/content/examples/session/tests/refused.scenario.json +20 -0
  320. package/dist/content/examples/session/tests/refused.test.mjs +16 -0
  321. package/dist/content/examples/session/tests/render.scenario.json +95 -0
  322. package/dist/content/examples/session/tests/ticks.scenario.json +139 -0
  323. package/dist/content/examples/session/tests/unknown.scenario.json +37 -0
  324. package/dist/content/examples/session/tsconfig.json +16 -0
  325. package/dist/content/examples/session/view.ocml +11 -0
  326. package/dist/content/examples/stopwatch/LICENSE +21 -0
  327. package/dist/content/examples/stopwatch/README.md +99 -0
  328. package/dist/content/examples/stopwatch/listing.json +19 -0
  329. package/dist/content/examples/stopwatch/locales/en.json +8 -0
  330. package/dist/content/examples/stopwatch/locales/fr.json +8 -0
  331. package/dist/content/examples/stopwatch/logic.ts +93 -0
  332. package/dist/content/examples/stopwatch/manifest.json +19 -0
  333. package/dist/content/examples/stopwatch/package.json +16 -0
  334. package/dist/content/examples/stopwatch/style.ocss +54 -0
  335. package/dist/content/examples/stopwatch/submission.json +12 -0
  336. package/dist/content/examples/stopwatch/tests/errors.scenario.json +121 -0
  337. package/dist/content/examples/stopwatch/tests/gesture.scenario.json +154 -0
  338. package/dist/content/examples/stopwatch/tests/hidden.scenario.json +57 -0
  339. package/dist/content/examples/stopwatch/tests/hundredths.scenario.json +173 -0
  340. package/dist/content/examples/stopwatch/tests/load-logic.mjs +22 -0
  341. package/dist/content/examples/stopwatch/tests/logic.test.mjs +99 -0
  342. package/dist/content/examples/stopwatch/tests/preview.scenario.json +36 -0
  343. package/dist/content/examples/stopwatch/tests/read-only.scenario.json +42 -0
  344. package/dist/content/examples/stopwatch/tests/read-only.test.mjs +18 -0
  345. package/dist/content/examples/stopwatch/tests/refused.scenario.json +22 -0
  346. package/dist/content/examples/stopwatch/tests/refused.test.mjs +18 -0
  347. package/dist/content/examples/stopwatch/tests/render.scenario.json +105 -0
  348. package/dist/content/examples/stopwatch/tests/states.scenario.json +246 -0
  349. package/dist/content/examples/stopwatch/tests/unknown.scenario.json +40 -0
  350. package/dist/content/examples/stopwatch/tsconfig.json +16 -0
  351. package/dist/content/examples/stopwatch/view.ocml +29 -0
  352. package/dist/content/examples/twitch-chat/LICENSE +21 -0
  353. package/dist/content/examples/twitch-chat/README.md +283 -0
  354. package/dist/content/examples/twitch-chat/listing.json +19 -0
  355. package/dist/content/examples/twitch-chat/locales/en.json +52 -0
  356. package/dist/content/examples/twitch-chat/locales/fr.json +52 -0
  357. package/dist/content/examples/twitch-chat/logic.ts +887 -0
  358. package/dist/content/examples/twitch-chat/manifest.json +33 -0
  359. package/dist/content/examples/twitch-chat/package.json +16 -0
  360. package/dist/content/examples/twitch-chat/style.ocss +544 -0
  361. package/dist/content/examples/twitch-chat/submission.json +12 -0
  362. package/dist/content/examples/twitch-chat/tests/account.scenario.json +325 -0
  363. package/dist/content/examples/twitch-chat/tests/burst.scenario.json +1866 -0
  364. package/dist/content/examples/twitch-chat/tests/channel-refused.scenario.json +372 -0
  365. package/dist/content/examples/twitch-chat/tests/channel.scenario.json +480 -0
  366. package/dist/content/examples/twitch-chat/tests/draft.scenario.json +279 -0
  367. package/dist/content/examples/twitch-chat/tests/fade.scenario.json +269 -0
  368. package/dist/content/examples/twitch-chat/tests/failures.scenario.json +420 -0
  369. package/dist/content/examples/twitch-chat/tests/favorites.scenario.json +376 -0
  370. package/dist/content/examples/twitch-chat/tests/frame.scenario.json +152 -0
  371. package/dist/content/examples/twitch-chat/tests/lifetime.scenario.json +186 -0
  372. package/dist/content/examples/twitch-chat/tests/load-logic.mjs +22 -0
  373. package/dist/content/examples/twitch-chat/tests/logic.test.mjs +1053 -0
  374. package/dist/content/examples/twitch-chat/tests/passive.scenario.json +536 -0
  375. package/dist/content/examples/twitch-chat/tests/preview.scenario.json +147 -0
  376. package/dist/content/examples/twitch-chat/tests/read-only.scenario.json +202 -0
  377. package/dist/content/examples/twitch-chat/tests/read-only.test.mjs +63 -0
  378. package/dist/content/examples/twitch-chat/tests/refused.scenario.json +65 -0
  379. package/dist/content/examples/twitch-chat/tests/refused.test.mjs +43 -0
  380. package/dist/content/examples/twitch-chat/tests/render.scenario.json +347 -0
  381. package/dist/content/examples/twitch-chat/tests/reply.scenario.json +384 -0
  382. package/dist/content/examples/twitch-chat/tests/send-refused.scenario.json +383 -0
  383. package/dist/content/examples/twitch-chat/tests/send.scenario.json +300 -0
  384. package/dist/content/examples/twitch-chat/tests/states.scenario.json +455 -0
  385. package/dist/content/examples/twitch-chat/tests/unavailable.scenario.json +256 -0
  386. package/dist/content/examples/twitch-chat/tests/unread.scenario.json +997 -0
  387. package/dist/content/examples/twitch-chat/tsconfig.json +16 -0
  388. package/dist/content/examples/twitch-chat/view.ocml +141 -0
  389. package/dist/content/examples/warframe-market/LICENSE +21 -0
  390. package/dist/content/examples/warframe-market/README.md +176 -0
  391. package/dist/content/examples/warframe-market/listing.json +19 -0
  392. package/dist/content/examples/warframe-market/locales/en.json +44 -0
  393. package/dist/content/examples/warframe-market/locales/fr.json +44 -0
  394. package/dist/content/examples/warframe-market/logic.ts +1265 -0
  395. package/dist/content/examples/warframe-market/manifest.json +92 -0
  396. package/dist/content/examples/warframe-market/package.json +16 -0
  397. package/dist/content/examples/warframe-market/style.ocss +422 -0
  398. package/dist/content/examples/warframe-market/submission.json +24 -0
  399. package/dist/content/examples/warframe-market/tests/bounds.scenario.json +60 -0
  400. package/dist/content/examples/warframe-market/tests/cached.scenario.json +70 -0
  401. package/dist/content/examples/warframe-market/tests/detail.scenario.json +251 -0
  402. package/dist/content/examples/warframe-market/tests/errors.scenario.json +105 -0
  403. package/dist/content/examples/warframe-market/tests/fixtures.json +295 -0
  404. package/dist/content/examples/warframe-market/tests/load-logic.mjs +22 -0
  405. package/dist/content/examples/warframe-market/tests/logic.test.mjs +505 -0
  406. package/dist/content/examples/warframe-market/tests/no-clipboard.scenario.json +104 -0
  407. package/dist/content/examples/warframe-market/tests/passive.scenario.json +87 -0
  408. package/dist/content/examples/warframe-market/tests/preview.scenario.json +146 -0
  409. package/dist/content/examples/warframe-market/tests/refresh.scenario.json +56 -0
  410. package/dist/content/examples/warframe-market/tests/refused.scenario.json +74 -0
  411. package/dist/content/examples/warframe-market/tests/render.scenario.json +210 -0
  412. package/dist/content/examples/warframe-market/tests/search.scenario.json +189 -0
  413. package/dist/content/examples/warframe-market/tests/unavailable.scenario.json +54 -0
  414. package/dist/content/examples/warframe-market/tsconfig.json +16 -0
  415. package/dist/content/examples/warframe-market/view.ocml +116 -0
  416. package/dist/content/examples/weather/LICENSE +20 -0
  417. package/dist/content/examples/weather/listing.json +10 -0
  418. package/dist/content/examples/weather/locales/en.json +9 -0
  419. package/dist/content/examples/weather/locales/fr.json +9 -0
  420. package/dist/content/examples/weather/logic.ts +62 -0
  421. package/dist/content/examples/weather/manifest.json +51 -0
  422. package/dist/content/examples/weather/package.json +15 -0
  423. package/dist/content/examples/weather/style.ocss +29 -0
  424. package/dist/content/examples/weather/submission.json +17 -0
  425. package/dist/content/examples/weather/tsconfig.json +16 -0
  426. package/dist/content/examples/weather/view.ocml +12 -0
  427. package/dist/content/index.json +3705 -0
  428. package/dist/content/reference/errors.json +1924 -0
  429. package/dist/content/reference/limits.json +1154 -0
  430. package/dist/content/reference/manifest.md +223 -0
  431. package/dist/content/reference/permissions.json +413 -0
  432. package/dist/content/templates/blank/locales/en.json +3 -0
  433. package/dist/content/templates/blank/locales/fr.json +3 -0
  434. package/dist/content/templates/blank/logic.ts +7 -0
  435. package/dist/content/templates/blank/manifest.json +16 -0
  436. package/dist/content/templates/blank/style.ocss +10 -0
  437. package/dist/content/templates/blank/tests/example.scenario.json +10 -0
  438. package/dist/content/templates/blank/view.ocml +6 -0
  439. package/dist/content/templates/chart/locales/en.json +3 -0
  440. package/dist/content/templates/chart/locales/fr.json +3 -0
  441. package/dist/content/templates/chart/logic.ts +27 -0
  442. package/dist/content/templates/chart/manifest.json +16 -0
  443. package/dist/content/templates/chart/style.ocss +27 -0
  444. package/dist/content/templates/chart/tests/example.scenario.json +10 -0
  445. package/dist/content/templates/chart/view.ocml +10 -0
  446. package/dist/content/templates/counter/locales/en.json +4 -0
  447. package/dist/content/templates/counter/locales/fr.json +4 -0
  448. package/dist/content/templates/counter/logic.ts +20 -0
  449. package/dist/content/templates/counter/manifest.json +16 -0
  450. package/dist/content/templates/counter/style.ocss +26 -0
  451. package/dist/content/templates/counter/tests/example.scenario.json +11 -0
  452. package/dist/content/templates/counter/view.ocml +13 -0
  453. package/dist/content/templates/list/locales/en.json +8 -0
  454. package/dist/content/templates/list/locales/fr.json +8 -0
  455. package/dist/content/templates/list/logic.ts +35 -0
  456. package/dist/content/templates/list/manifest.json +16 -0
  457. package/dist/content/templates/list/style.ocss +42 -0
  458. package/dist/content/templates/list/tests/example.scenario.json +10 -0
  459. package/dist/content/templates/list/view.ocml +17 -0
  460. package/dist/content/templates/shared/LICENSE +20 -0
  461. package/dist/content/templates/shared/package.json +14 -0
  462. package/dist/content/templates/shared/tsconfig.json +16 -0
  463. package/dist/content.js +68 -0
  464. package/dist/env.js +156 -0
  465. package/dist/fingerprint.js +32 -0
  466. package/dist/hidden.js +47 -0
  467. package/dist/ids.js +27 -0
  468. package/dist/index.js +82 -0
  469. package/dist/knowledge.js +222 -0
  470. package/dist/npm.js +149 -0
  471. package/dist/prompts.js +47 -0
  472. package/dist/resources.js +82 -0
  473. package/dist/run.js +120 -0
  474. package/dist/server.js +43 -0
  475. package/dist/session.js +205 -0
  476. package/dist/sources.js +218 -0
  477. package/dist/text.js +80 -0
  478. package/dist/texts.js +44 -0
  479. package/dist/tools/audit.js +105 -0
  480. package/dist/tools/build.js +453 -0
  481. package/dist/tools/common.js +122 -0
  482. package/dist/tools/docs.js +196 -0
  483. package/dist/tools/preview.js +87 -0
  484. package/dist/tools/project.js +183 -0
  485. package/dist/tools/setup.js +146 -0
  486. package/dist/tools/submission.js +369 -0
  487. package/dist/version.js +3 -0
  488. package/npm-shrinkwrap.json +402 -0
  489. package/package.json +50 -4
@@ -0,0 +1,272 @@
1
+ # Propriétés de style et tokens
2
+
3
+ Toutes les propriétés que `style.ocss` accepte dans un widget PlayerVox
4
+ OverCrow, avec leurs valeurs et leur valeur initiale, puis les tokens du
5
+ design system et les icônes. [Le style](style.md) explique les sélecteurs,
6
+ la mise en page, les tokens et les animations ; cette page en est la liste.
7
+
8
+ <!-- source: templates/chart/style.ocss -->
9
+ ```css
10
+ .value {
11
+ font-size: var(--font-size-value);
12
+ font-variant-numeric: tabular-nums;
13
+ }
14
+ ```
15
+
16
+ Tout ce qui ne figure pas sur cette page est refusé à la vérification du
17
+ widget : une propriété, un mot-clé ou une unité hors des listes ci-dessous
18
+ est une erreur, accompagnée du nom le plus proche en suggestion.
19
+
20
+ ## Lire une propriété
21
+
22
+ - **Valeur** utilise les notations de [valeurs](#valeurs) : `<px>`,
23
+ `<percent>`, `<color>`… Un `|` sépare des alternatives, `?` marque une
24
+ partie facultative.
25
+ - **Valeur initiale** est la valeur d’un élément qu’aucune règle ne style.
26
+ - **Héritée** : la propriété prend la valeur du parent quand aucune règle ne
27
+ la définit ; définissez-la sur un conteneur.
28
+ - **Animable** : la propriété peut figurer dans une `transition` et dans un
29
+ bloc `@keyframes`.
30
+
31
+ ## Propriétés
32
+
33
+ <!-- generated:style-properties -->
34
+ ### Mise en page
35
+
36
+ | Propriété | Valeur | Valeur initiale | Héritée | Animable |
37
+ | --- | --- | --- | --- | --- |
38
+ | `display` | `flex` \| `grid` \| `none` | `flex` | non | non |
39
+ | `position` | `relative` \| `absolute` | `relative` | non | non |
40
+ | `top` | `<px>` \| `<percent>` \| `auto`, valeurs négatives admises | `auto` | non | non |
41
+ | `right` | `<px>` \| `<percent>` \| `auto`, valeurs négatives admises | `auto` | non | non |
42
+ | `bottom` | `<px>` \| `<percent>` \| `auto`, valeurs négatives admises | `auto` | non | non |
43
+ | `left` | `<px>` \| `<percent>` \| `auto`, valeurs négatives admises | `auto` | non | non |
44
+ | `flex-direction` | `row` \| `column` \| `row-reverse` \| `column-reverse` | `row` | non | non |
45
+ | `flex-wrap` | `nowrap` \| `wrap` | `nowrap` | non | non |
46
+ | `flex-grow` | nombre de 0 à 1000 | `0` | non | non |
47
+ | `flex-shrink` | nombre de 0 à 1000 | `1` | non | non |
48
+ | `flex-basis` | `<px>` \| `<percent>` \| `auto` | `auto` | non | non |
49
+ | `justify-content` | `start` \| `end` \| `center` \| `stretch` \| `space-between` \| `space-around` \| `space-evenly` | `start` | non | non |
50
+ | `align-items` | `start` \| `end` \| `center` \| `baseline` \| `stretch` | `stretch` | non | non |
51
+ | `align-self` | `auto` \| `start` \| `end` \| `center` \| `baseline` \| `stretch` | `auto` | non | non |
52
+ | `align-content` | `start` \| `end` \| `center` \| `stretch` \| `space-between` \| `space-around` \| `space-evenly` | `stretch` | non | non |
53
+ | `justify-items` | `start` \| `end` \| `center` \| `stretch` | `stretch` | non | non |
54
+ | `justify-self` | `auto` \| `start` \| `end` \| `center` \| `stretch` | `auto` | non | non |
55
+ | `gap` | 1–2 × (`<px>` \| `<percent>`) | `0` | non | non |
56
+ | `row-gap` | `<px>` \| `<percent>` | `0` | non | non |
57
+ | `column-gap` | `<px>` \| `<percent>` | `0` | non | non |
58
+ | `grid-template-columns` | `none` \| liste ≤ 24 de `<track>`, ou `repeat(<integer>, <track>)` | `none` | non | non |
59
+ | `grid-template-rows` | `none` \| liste ≤ 24 de `<track>`, ou `repeat(<integer>, <track>)` | `none` | non | non |
60
+ | `grid-auto-flow` | `row` \| `column` | `row` | non | non |
61
+ | `grid-auto-columns` | `<track>`: `<px>` \| `<percent>` \| `<fr>` \| `auto` \| `min-content` \| `max-content` \| `minmax(<track>, <track>)` | `auto` | non | non |
62
+ | `grid-auto-rows` | `<track>`: `<px>` \| `<percent>` \| `<fr>` \| `auto` \| `min-content` \| `max-content` \| `minmax(<track>, <track>)` | `auto` | non | non |
63
+ | `grid-column` | `auto` \| `<integer>` \| `span <integer>` \| `<start> / <end>`, lignes de 1 à 24 | `auto` | non | non |
64
+ | `grid-row` | `auto` \| `<integer>` \| `span <integer>` \| `<start> / <end>`, lignes de 1 à 24 | `auto` | non | non |
65
+
66
+ ### Boîte
67
+
68
+ | Propriété | Valeur | Valeur initiale | Héritée | Animable |
69
+ | --- | --- | --- | --- | --- |
70
+ | `width` | `<px>` \| `<percent>` \| `auto` | `auto` | non | non |
71
+ | `height` | `<px>` \| `<percent>` \| `auto` | `auto` | non | non |
72
+ | `min-width` | `<px>` \| `<percent>` \| `auto` | `auto` | non | non |
73
+ | `min-height` | `<px>` \| `<percent>` \| `auto` | `auto` | non | non |
74
+ | `max-width` | `<px>` \| `<percent>` \| `none` | `none` | non | non |
75
+ | `max-height` | `<px>` \| `<percent>` \| `none` | `none` | non | non |
76
+ | `aspect-ratio` | nombre de 0.01 à 100 | `auto` | non | non |
77
+ | `margin` | 1–4 × (`<px>` \| `<percent>` \| `auto`), valeurs négatives admises | `0` | non | non |
78
+ | `margin-top` | `<px>` \| `<percent>` \| `auto`, valeurs négatives admises | `0` | non | non |
79
+ | `margin-right` | `<px>` \| `<percent>` \| `auto`, valeurs négatives admises | `0` | non | non |
80
+ | `margin-bottom` | `<px>` \| `<percent>` \| `auto`, valeurs négatives admises | `0` | non | non |
81
+ | `margin-left` | `<px>` \| `<percent>` \| `auto`, valeurs négatives admises | `0` | non | non |
82
+ | `padding` | 1–4 × (`<px>` \| `<percent>`) | `0` | non | non |
83
+ | `padding-top` | `<px>` \| `<percent>` | `0` | non | non |
84
+ | `padding-right` | `<px>` \| `<percent>` | `0` | non | non |
85
+ | `padding-bottom` | `<px>` \| `<percent>` | `0` | non | non |
86
+ | `padding-left` | `<px>` \| `<percent>` | `0` | non | non |
87
+ | `overflow` | `visible` \| `hidden` | `visible` | non | non |
88
+
89
+ ### Apparence
90
+
91
+ | Propriété | Valeur | Valeur initiale | Héritée | Animable |
92
+ | --- | --- | --- | --- | --- |
93
+ | `background-color` | `<color>` | `transparent` | non | oui |
94
+ | `background` | `<color>` \| `linear-gradient(<angle>?, <color> <percent>?, …)`, arrêts ≤ 8 | `transparent` | non | non |
95
+ | `border` | `<px>` (`solid` \| `none`)? `<color>`? | `0 none` | non | non |
96
+ | `border-top` | `<px>` (`solid` \| `none`)? `<color>`? | `0 none` | non | non |
97
+ | `border-right` | `<px>` (`solid` \| `none`)? `<color>`? | `0 none` | non | non |
98
+ | `border-bottom` | `<px>` (`solid` \| `none`)? `<color>`? | `0 none` | non | non |
99
+ | `border-left` | `<px>` (`solid` \| `none`)? `<color>`? | `0 none` | non | non |
100
+ | `border-width` | 1–4 × (`<px>`) | `0` | non | non |
101
+ | `border-style` | `solid` \| `none` | `none` | non | non |
102
+ | `border-color` | `<color>` | `currentColor` | non | oui |
103
+ | `border-radius` | 1–4 × (`<px>` \| `<percent>`) | `0` | non | non |
104
+ | `box-shadow` | `none` \| `var(--shadow-…)` seul \| liste ≤ 2 de `inset`? `<px> <px> <px>? <px>? <color>` | `none` | non | non |
105
+ | `opacity` | nombre de 0 à 1 | `1` | non | oui |
106
+ | `visibility` | `visible` \| `hidden` | `visible` | oui | non |
107
+ | `object-fit` | `contain` \| `cover` \| `fill` \| `none` | `contain` | non | non |
108
+
109
+ ### Texte
110
+
111
+ | Propriété | Valeur | Valeur initiale | Héritée | Animable |
112
+ | --- | --- | --- | --- | --- |
113
+ | `color` | `<color>` | `var(--color-text)` | oui | oui |
114
+ | `font-family` | `ui` \| `mono` \| `display`, ou un token de police | `ui` | oui | non |
115
+ | `font-size` | `<px>` de 6 px à 96 px, ou un token de taille | `var(--font-size-body)` | oui | non |
116
+ | `font-weight` | `400` \| `500` \| `600` \| `700` \| `normal` \| `bold` | `400` | oui | non |
117
+ | `font-style` | `normal` \| `italic` | `normal` | oui | non |
118
+ | `font-variant-numeric` | `normal` \| `tabular-nums` | `normal` | oui | non |
119
+ | `line-height` | nombre de 0.5 à 4 (× taille de police) \| `<px>` | `1.3` | oui | non |
120
+ | `letter-spacing` | `<px>`, valeurs négatives admises | `0` | oui | non |
121
+ | `text-align` | `start` \| `center` \| `end` | `start` | oui | non |
122
+ | `text-decoration` | `none` \| `underline` \| `line-through` | `none` | non | non |
123
+ | `text-transform` | `none` \| `uppercase` \| `lowercase` \| `capitalize` | `none` | oui | non |
124
+ | `white-space` | `normal` \| `nowrap` \| `pre-wrap` | `normal` | oui | non |
125
+ | `vertical-align` | `baseline` \| `middle` | `baseline` | non | non |
126
+ | `text-overflow` | `clip` \| `ellipsis` \| `marquee` | `clip` | non | non |
127
+ | `line-clamp` | entier de 0 à 64 | `0` | non | non |
128
+ | `overflow-wrap` | `normal` \| `anywhere` | `normal` | oui | non |
129
+
130
+ ### Mouvement
131
+
132
+ | Propriété | Valeur | Valeur initiale | Héritée | Animable |
133
+ | --- | --- | --- | --- | --- |
134
+ | `transform` | `none` \| jusqu’à 4 fonctions parmi `translate(<length>, <length>)` avec `<px>` ou `<percent>`, `translateX()`, `translateY()`, `scale(<number>{1,2})` de 0 à 8, `rotate(<angle>)` | `none` | non | oui |
135
+ | `transform-origin` | 1–2 × (`left` \| `center` \| `right` \| `top` \| `bottom` \| `<percent>` \| `<px>`) | `center` | non | non |
136
+ | `transition` | `none` \| liste ≤ 8 de `<animatable-property> <time> <easing>? <time>?` | `none` | non | non |
137
+ | `animation` | `none` \| liste ≤ 8 de `<keyframes-name> <time> <easing>? <time>? (<integer> \| infinite)? <direction>? <fill-mode>?`, entier de 1 à 10000 | `none` | non | non |
138
+
139
+ ### Interaction
140
+
141
+ | Propriété | Valeur | Valeur initiale | Héritée | Animable |
142
+ | --- | --- | --- | --- | --- |
143
+ | `cursor` | `default` \| `pointer` \| `text` \| `not-allowed` \| `grab` \| `grabbing` | `default` | oui | non |
144
+ | `pointer-events` | `auto` \| `none` | `auto` | non | non |
145
+ <!-- /generated:style-properties -->
146
+
147
+ ## Valeurs
148
+
149
+ <!-- generated:style-values -->
150
+ | Syntaxe | Signification |
151
+ | --- | --- |
152
+ | `<px>` | `12px` ; `0` peut se passer d’unité. Nombres décimaux, sans exposant. |
153
+ | `<percent>` | `50%` du bloc conteneur, comme en CSS ; au plus 1000 dans un sens ou dans l’autre. |
154
+ | `<fr>` | `1fr`, pour les pistes de grille seulement ; de 0 à 1000. |
155
+ | `<time>` | `120ms` ou `0.12s`, de 0 à 300000 ms. |
156
+ | `<angle>` | `4deg` ou `0.5turn`, au plus 3600 degrés dans un sens ou dans l’autre. |
157
+ | `<color>` | `#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa`, `rgb(r g b)`, `rgb(r g b / a)`, `transparent`, `currentColor`, ou un token de couleur. Pas de couleurs nommées. |
158
+ | `var(--token)` | Token du design system, du type attendu, comme valeur entière ou comme composante d’une valeur composite. Pas d’argument de repli ; un widget ne peut pas déclarer de propriétés personnalisées. |
159
+ | `<easing>` | `linear`, `ease`, `ease-in`, `ease-out`, `ease-in-out`, `steps(<integer 1..=MAX_EASING_STEPS>)`. |
160
+ | `<direction>` | `normal`, `reverse`, `alternate`. |
161
+ | `<fill-mode>` | `none`, `forwards`, `backwards`, `both`. |
162
+ <!-- /generated:style-values -->
163
+
164
+ ## Tokens du design system
165
+
166
+ Un token s’écrit `var(--name)` là où une valeur de son type est attendue.
167
+ Les tokens de couleur et d’ombre ont une valeur par thème ; les autres sont
168
+ identiques dans les deux thèmes.
169
+
170
+ <!-- source: templates/list/style.ocss -->
171
+ ```css
172
+ .summary {
173
+ font-size: var(--font-size-caption);
174
+ color: var(--color-text-secondary);
175
+ }
176
+ ```
177
+
178
+ <!-- generated:tokens -->
179
+ ### Couleurs
180
+
181
+ | Token | Sombre | Clair | Signification |
182
+ | --- | --- | --- | --- |
183
+ | `--color-accent` | `#a3e635` | `#4d7c0f` | Accent de la marque : actions principales, état coché. |
184
+ | `--color-accent-hover` | `#b5f153` | `#3f6212` | Accent sous le pointeur. |
185
+ | `--color-accent-soft` | `#a3e6351c` | `#4d7c0f1f` | Voile d’accent derrière un contenu sélectionné. |
186
+ | `--color-on-accent` | `#09090b` | `#ffffff` | Texte et icônes dessinés sur l’accent et sur son état de survol. |
187
+ | `--color-surface-panel` | `#111114ee` | `#fafafaee` | Fond du panneau du widget, dessiné par l’hôte derrière le contenu. |
188
+ | `--color-surface-raised` | `#1e1e22e0` | `#f4f4f5eb` | Surface en relief dans le panneau. |
189
+ | `--color-surface-hover` | `#28282deb` | `#e4e4e7f0` | Surface sous le pointeur. |
190
+ | `--color-surface-field` | `#0f0f12` | `#ffffff` | Fond d’un champ de texte. |
191
+ | `--color-surface-popover` | `#18181c` | `#ffffff` | Fond d’un popover et d’une liste déroulante. |
192
+ | `--color-border` | `#ffffff18` | `#0000001a` | Bordure par défaut. |
193
+ | `--color-border-strong` | `#ffffff2a` | `#0000002e` | Bordure et séparateur accentués. |
194
+ | `--color-text` | `#f7f7f8` | `#18181b` | Texte principal. |
195
+ | `--color-text-secondary` | `#d4d4d8` | `#3f3f46` | Texte secondaire. |
196
+ | `--color-text-muted` | `#a1a1aa` | `#52525b` | Légendes et métadonnées. |
197
+ | `--color-text-subtle` | `#71717a` | `#71717a` | Indications des champs vides et texte désactivé. |
198
+ | `--color-danger` | `#fb7185` | `#e11d48` | Erreurs et actions destructrices. |
199
+ | `--color-danger-soft` | `#fb71851a` | `#e11d481a` | Voile de danger derrière les confirmations destructrices et les erreurs. |
200
+ | `--color-warning` | `#fbbf24` | `#b45309` | Avertissements. |
201
+ | `--color-success` | `#86efac` | `#15803d` | Réussite et états sains. |
202
+
203
+ ### Longueurs
204
+
205
+ | Token | Valeur | Signification |
206
+ | --- | --- | --- |
207
+ | `--space-1` | `2px` | Espacement, palier 1. |
208
+ | `--space-2` | `4px` | Espacement, palier 2. |
209
+ | `--space-3` | `6px` | Espacement, palier 3 (espacement par défaut entre les éléments). |
210
+ | `--space-4` | `8px` | Espacement, palier 4. |
211
+ | `--space-5` | `12px` | Espacement, palier 5. |
212
+ | `--space-6` | `16px` | Espacement, palier 6. |
213
+ | `--radius-sm` | `6px` | Petits contrôles et images. |
214
+ | `--radius-md` | `9px` | Boutons. |
215
+ | `--radius-lg` | `10px` | Cartes. |
216
+ | `--radius-pill` | `999px` | Pastilles et boutons ronds. |
217
+ | `--control-height` | `28px` | Hauteur standard d’un contrôle. |
218
+ | `--icon-button-size` | `22px` | Bouton-icône compact. |
219
+
220
+ ### Tailles de police
221
+
222
+ | Token | Valeur | Signification |
223
+ | --- | --- | --- |
224
+ | `--font-size-caption` | `10px` | Surtitres et légendes. |
225
+ | `--font-size-small` | `11px` | Métadonnées. |
226
+ | `--font-size-button` | `13px` | Libellés des boutons. |
227
+ | `--font-size-body` | `14px` | Texte courant. |
228
+ | `--font-size-title` | `18px` | Titres de section. |
229
+ | `--font-size-value` | `22px` | Valeurs mises en avant (horloge, FPS). |
230
+
231
+ ### Familles de police
232
+
233
+ | Token | Valeur | Signification |
234
+ | --- | --- | --- |
235
+ | `--font-ui` | `ui` | Noto Sans UI, la police de l’interface. |
236
+ | `--font-mono` | `mono` | Noto Sans Mono, pour les valeurs. |
237
+ | `--font-display` | `display` | Space Grotesk, pour les grades et les scores. |
238
+
239
+ ### Durées
240
+
241
+ | Token | Valeur | Signification |
242
+ | --- | --- | --- |
243
+ | `--duration-fast` | `120ms` | Transitions d’état. |
244
+ | `--duration-medium` | `240ms` | Panneaux et popovers. |
245
+
246
+ ### Ombres
247
+
248
+ | Token | Sombre | Clair | Signification |
249
+ | --- | --- | --- | --- |
250
+ | `--shadow-panel` | `0px 4px 16px 0px #00000066` | `0px 4px 16px 0px #0000001f` | Ombre du panneau du widget et des surfaces flottantes de l’hôte. |
251
+ <!-- /generated:tokens -->
252
+
253
+ ## Icônes
254
+
255
+ L’élément `icon` et les lignes du menu d’options prennent le nom d’une icône
256
+ Lucide, dans sa graphie habituelle : `circle-check`, `rotate-ccw`,
257
+ `chevron-down`.
258
+
259
+ <!-- source: templates/list/view.ocml -->
260
+ ```xml
261
+ <icon name="x"/>
262
+ ```
263
+
264
+ <!-- generated:icons -->
265
+ Lucide 1.34.0, 1777 icônes.
266
+ <!-- /generated:icons -->
267
+
268
+ Tout autre nom est refusé. Le type `IconName` du SDK les liste tous : un nom
269
+ erroné dans la logique est donc une erreur TypeScript. Au sein de l’API v1,
270
+ le jeu d’icônes peut grandir, mais il ne perd ni ne renomme jamais une
271
+ icône. OverCrow dessine les icônes lui-même : un widget n’embarque aucune
272
+ police d’icônes.
@@ -0,0 +1,281 @@
1
+ # Le style
2
+
3
+ `style.ocss` met en forme la vue d’un widget PlayerVox OverCrow avec un
4
+ sous-ensemble de CSS, réduit et borné : règles, sélecteurs de classe et
5
+ d’élément, mise en page flex et grid, couleurs, bordures, typographie,
6
+ transitions et animations. Si vous connaissez CSS, vous en connaissez la
7
+ syntaxe ; la différence, c’est que le sous-ensemble est fermé. Une
8
+ propriété, un sélecteur ou une valeur qui n’en fait pas partie est une
9
+ erreur que signale `overcrow-widget check`, et non une déclaration ignorée
10
+ en silence.
11
+
12
+ <!-- source: templates/counter/style.ocss -->
13
+ ```css
14
+ .counter {
15
+ flex-direction: column;
16
+ align-items: center;
17
+ gap: var(--space-2);
18
+ padding: var(--space-3);
19
+ }
20
+
21
+ .value {
22
+ font-size: var(--font-size-value);
23
+ font-variant-numeric: tabular-nums;
24
+ }
25
+
26
+ .actions {
27
+ gap: var(--space-2);
28
+ }
29
+
30
+ .step {
31
+ width: var(--icon-button-size);
32
+ height: var(--icon-button-size);
33
+ border-radius: var(--radius-md);
34
+ background: var(--color-surface-raised);
35
+ }
36
+
37
+ .step:hover {
38
+ background: var(--color-surface-hover);
39
+ }
40
+ ```
41
+
42
+ Le fichier est facultatif. Sans lui, le widget prend les valeurs par
43
+ défaut : une `box` dispose ses enfants à l’horizontale, le texte a la
44
+ couleur et la taille du thème.
45
+
46
+ ## Règles et sélecteurs
47
+
48
+ Une règle est une liste de sélecteurs, suivie de déclarations entre
49
+ accolades. Chaque propriété apparaît au plus une fois par règle ; le dernier
50
+ `;` est facultatif. Les commentaires s’écrivent `/* … */`.
51
+
52
+ <!-- generated:selectors -->
53
+ | Sélecteur | Signification |
54
+ | --- | --- |
55
+ | `text` | Type d’élément ; spécificité (0, 1). |
56
+ | `.name` | Classe ; spécificité (1, 0). |
57
+ | `:hover :active :focus :disabled :checked` | État résolu par l’hôte ; spécificité (1, 0). `:checked` s’applique à `toggle` et à `checkbox`. |
58
+ | `a b` | Combinateur de descendance. |
59
+ | `a > b` | Combinateur d’enfant direct. |
60
+ | `a, b` | Liste de sélecteurs ; chaque sélecteur garde sa propre spécificité. |
61
+ <!-- /generated:selectors -->
62
+
63
+ Un sélecteur composé est un nom d’élément facultatif, suivi de classes et
64
+ d’états : `button.primary:hover`. Les sélecteurs composés s’enchaînent par
65
+ une espace (descendant) ou par `>` (enfant).
66
+
67
+ <!-- source: widgets/warframe-market/style.ocss -->
68
+ ```css
69
+ .clear:focus,
70
+ .result:focus,
71
+ .copy:focus,
72
+ .back:focus,
73
+ .refresh:focus {
74
+ border-color: var(--color-accent);
75
+ }
76
+ ```
77
+
78
+ <!-- source: widgets/warframe-market/style.ocss -->
79
+ ```css
80
+ .clear:disabled .clear-text {
81
+ color: var(--color-text-muted);
82
+ }
83
+ ```
84
+
85
+ Les états sont résolus par OverCrow, pas par votre logique : `:hover` et
86
+ `:active` suivent le pointeur, `:focus` le focus clavier, `:disabled`
87
+ l’attribut `disabled`, et `:checked` l’état d’un `toggle` ou d’une
88
+ `checkbox`. OverCrow ne signale pas au widget les mouvements du pointeur :
89
+ un effet de survol ne lui coûte rien.
90
+
91
+ Quand deux règles définissent la même propriété, le sélecteur le plus
92
+ spécifique l’emporte : les classes et les états comptent d’abord, puis les
93
+ noms d’éléments. À sélecteurs égaux, la règle écrite en dernier l’emporte.
94
+ Il n’y a pas de `!important`.
95
+
96
+ ## Mise en page
97
+
98
+ Tout conteneur est par défaut un conteneur flex (`display: flex`, à
99
+ l’horizontale). `display: grid` en fait une grille, et `display: none`
100
+ retire l’élément et ses enfants de la mise en page tout en les gardant dans
101
+ la vue.
102
+
103
+ <!-- source: templates/list/style.ocss -->
104
+ ```css
105
+ .checklist {
106
+ flex-direction: column;
107
+ gap: var(--space-2);
108
+ padding: var(--space-3);
109
+ }
110
+ ```
111
+
112
+ <!-- source: widgets/warframe-market/style.ocss -->
113
+ ```css
114
+ .metrics {
115
+ display: grid;
116
+ grid-template-columns: repeat(2, minmax(0, 1fr));
117
+ gap: var(--space-3);
118
+ }
119
+ ```
120
+
121
+ Flex et grid fonctionnent comme en CSS, avec les propriétés du
122
+ [groupe Mise en page](style-properties.md#mise-en-page) : `flex-direction`,
123
+ `flex-grow`, `gap`, `justify-content`, `align-items`,
124
+ `grid-template-columns`, `grid-column`… Un élément peut aussi sortir du flux
125
+ avec `position: absolute` ; il se place alors par rapport à son parent avec
126
+ `top`, `right`, `bottom` et `left`. Deux éléments placés dans la même
127
+ cellule de grille se superposent. C’est ainsi que l’exemple du compte à
128
+ rebours place le temps au milieu de son anneau :
129
+
130
+ <!-- source: docs/content/examples/countdown/style.ocss -->
131
+ ```css
132
+ /* The time sits in the middle of the ring: both share one grid cell. */
133
+ .dial {
134
+ display: grid;
135
+ grid-template-columns: 72px;
136
+ grid-template-rows: 72px;
137
+ justify-content: center;
138
+ justify-items: center;
139
+ align-items: center;
140
+ }
141
+ ```
142
+
143
+ Un widget ne peut pas dessiner hors de son cadre : OverCrow le rogne.
144
+
145
+ ## Valeurs
146
+
147
+ Les valeurs s’écrivent comme en CSS, dans certaines limites : les longueurs
148
+ en `px` (`0` peut omettre l’unité) et les pourcentages, les couleurs sous la
149
+ forme `#rrggbb`, `#rrggbbaa` ou `rgb(r g b / a)`, les durées en `ms` ou en
150
+ `s`, les angles en `deg` ou en `turn`, et les tokens sous la forme
151
+ `var(--name)`. La notation exacte de chaque sorte de valeur figure dans
152
+ [valeurs](style-properties.md#valeurs).
153
+
154
+ Les longueurs sont des pixels logiques : OverCrow les multiplie par
155
+ l’échelle du contenu de l’utilisateur (de 50 % à 175 %) et par la densité de
156
+ l’écran. `12px` a donc la même taille physique sur tous les écrans. Les
157
+ propriétés raccourcies se développent comme en CSS : une à quatre valeurs
158
+ pour les côtés et les coins, une ou deux pour les espacements.
159
+
160
+ ## Tokens du design system
161
+
162
+ Un token est une valeur du design system d’OverCrow, écrite `var(--name)`.
163
+ Les tokens de couleur changent avec le thème de l’utilisateur, clair ou
164
+ sombre : un widget stylé avec des tokens suit le thème sans aucun code.
165
+ Préférez-les aux couleurs littérales.
166
+
167
+ <!-- source: docs/content/examples/countdown/style.ocss -->
168
+ ```css
169
+ .start {
170
+ width: var(--control-height);
171
+ height: var(--control-height);
172
+ justify-content: center;
173
+ align-items: center;
174
+ border-radius: var(--radius-md);
175
+ background: var(--color-surface-raised);
176
+ transition: background-color var(--duration-fast) ease-out;
177
+ }
178
+ ```
179
+
180
+ Un token représente une valeur entière ou une partie d’une valeur composée
181
+ (`padding: var(--space-2) var(--space-4)`). Il doit avoir le type qu’attend
182
+ la propriété : un token de couleur pour une couleur, un token de longueur
183
+ pour une longueur. Il n’y a pas d’argument de repli, et un widget ne peut
184
+ pas déclarer ses propres propriétés personnalisées. Tous les tokens sont
185
+ listés dans
186
+ [tokens du design system](style-properties.md#tokens-du-design-system).
187
+
188
+ OverCrow dessine le panneau derrière le widget (`--color-surface-panel`),
189
+ son cadre et son ombre : partez d’un fond transparent.
190
+
191
+ ## Texte
192
+
193
+ Les propriétés de texte (`color`, `font-family`, `font-size`, `font-weight`,
194
+ `line-height`, `text-align`…) sont héritées, comme en CSS : définissez-les
195
+ sur un conteneur pour styler ce qu’il contient.
196
+
197
+ - Il existe trois familles de police : `ui` (Noto Sans, la valeur par
198
+ défaut), `mono` (Noto Sans Mono, pour les valeurs) et `display` (Space
199
+ Grotesk, pour les grades et les scores). OverCrow les embarque ; les
200
+ polices du système ne sont jamais utilisées : un widget a donc le même
201
+ aspect sur toutes les machines.
202
+ - `font-variant-numeric: tabular-nums` donne la même largeur à tous les
203
+ chiffres : un nombre qui change ne déplace pas ses voisins.
204
+ - `text-overflow: ellipsis` coupe par `…` une ligne qui déborde ;
205
+ `text-overflow: marquee` la fait défiler dans un sens puis dans l’autre,
206
+ avec une pause à chaque extrémité. `line-clamp` limite un texte à un
207
+ nombre de lignes.
208
+ - Une `icon` prend la `color` et le `font-size` de l’endroit où elle se
209
+ trouve, sauf si `width` et `height` sont définis. Dans une ligne de texte,
210
+ `vertical-align: middle` centre sur la ligne une `icon` ou une `image` en
211
+ ligne.
212
+
213
+ Gardez le texte à 11 px ou plus (`--font-size-small`) : un texte plus petit
214
+ se lit mal par-dessus un jeu.
215
+
216
+ ## Transitions et animations
217
+
218
+ `transition` anime le changement d’une propriété animable ; `animation` joue
219
+ un bloc `@keyframes` de la même feuille.
220
+
221
+ <!-- source: docs/content/examples/countdown/style.ocss -->
222
+ ```css
223
+ .ring.done {
224
+ color: var(--color-success);
225
+ animation: countdown-pulse 800ms ease-in-out 3 alternate;
226
+ }
227
+ ```
228
+
229
+ <!-- source: docs/content/examples/countdown/style.ocss -->
230
+ ```css
231
+ @keyframes countdown-pulse {
232
+ from { opacity: 1; }
233
+ to { opacity: 0.4; }
234
+ }
235
+ ```
236
+
237
+ Seules les propriétés qui modifient le dessin, et non la mise en page,
238
+ peuvent être animées : `opacity`, `color`, `background-color`,
239
+ `border-color` et `transform`. Un bloc `@keyframes` ne contient que
240
+ celles-là. OverCrow exécute l’animation lui-même : aucun minuteur ni aucun
241
+ code du widget ne tourne pendant qu’elle joue, et rien n’est redessiné quand
242
+ rien ne change. Un widget masqué ne s’anime pas.
243
+
244
+ `@keyframes` est la seule règle @. Son nom est un identifiant qui n’est pas
245
+ un mot-clé d’animation, unique dans la feuille.
246
+
247
+ ## Ce qui est refusé
248
+
249
+ Chacune de ces constructions fait refuser la feuille entière :
250
+
251
+ - `!important`, `@media`, `@import`, `@font-face` et toute autre règle @ ;
252
+ - `url()`, `calc()` et les autres fonctions CSS ; les chaînes et les
253
+ échappements ;
254
+ - les déclarations de propriétés personnalisées (`--name: …`) ;
255
+ - les sélecteurs d’ID, d’attribut et universel (`*`), les pseudo-éléments,
256
+ les pseudo-classes fonctionnelles (`:not()`, `:nth-child()`), les
257
+ combinateurs de frères ;
258
+ - les couleurs nommées (`red`), les exposants, les unités autres que `px`,
259
+ `%`, `fr`, `ms`, `s`, `deg` et `turn` ;
260
+ - les caractères hors ASCII, sauf dans les commentaires.
261
+
262
+ Il n’y a pas de requête média parce qu’il n’y a rien à interroger : la
263
+ taille du widget est celle que lui donne l’utilisateur, et la logique la lit
264
+ dans `host.viewport` quand la vue doit changer avec elle.
265
+
266
+ ## Quand le style est incorrect
267
+
268
+ | Code | Problème |
269
+ | --- | --- |
270
+ | `style.syntax`, `style.encoding`, `style.size` | Le fichier n’est pas une feuille bien formée. |
271
+ | `style.unsupported` | Une construction CSS hors du sous-ensemble (voir ci-dessus). |
272
+ | `style.unknown_element`, `style.unknown_pseudo_class`, `style.invalid_selector` | Un sélecteur qui ne nomme aucun élément ou aucun état, ou qui est hors du sous-ensemble. |
273
+ | `style.unknown_property`, `style.duplicate_property` | Une propriété hors du sous-ensemble, ou définie deux fois dans une règle. |
274
+ | `style.invalid_value`, `style.unknown_token` | Une valeur que la propriété n’accepte pas, ou un token qui n’existe pas ou qui a un autre type. |
275
+ | `style.not_animatable` | Une transition ou une étape de `@keyframes` sur une propriété qui ne peut pas être animée. |
276
+ | `style.unknown_keyframes`, `style.duplicate_keyframes`, `style.invalid_keyframes` | Une `animation` qui ne nomme aucun bloc, un nom utilisé deux fois, ou un bloc invalide. |
277
+ | `style.too_many_rules`, `style.too_many_selectors`, `style.too_many_compounds`, `style.too_many_simple_selectors`, `style.too_many_declarations`, `style.too_many_keyframes`, `style.too_many_stops` | Une [limite](limits.md) du style est dépassée. |
278
+
279
+ Un nom inconnu est signalé avec, en suggestion, le nom le plus proche du
280
+ schéma. Chaque propriété, ses valeurs et sa valeur initiale figurent dans
281
+ [propriétés de style et tokens](style-properties.md).