@overcrow/mcp 0.0.0 → 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +91 -1
- package/dist/audit/index.js +103 -0
- package/dist/audit/lexer.js +417 -0
- package/dist/audit/project.js +200 -0
- package/dist/audit/rules.js +661 -0
- package/dist/bootstrap/download.js +229 -0
- package/dist/bootstrap/install.js +280 -0
- package/dist/bootstrap/pin.js +85 -0
- package/dist/bootstrap/pin.json +119 -0
- package/dist/bootstrap/zip.js +258 -0
- package/dist/cli.js +200 -0
- package/dist/confine.js +244 -0
- package/dist/content/docs/en/cli.md +353 -0
- package/dist/content/docs/en/dev-channel.md +130 -0
- package/dist/content/docs/en/elements.md +469 -0
- package/dist/content/docs/en/forms.md +328 -0
- package/dist/content/docs/en/guide.md +253 -0
- package/dist/content/docs/en/index.md +85 -0
- package/dist/content/docs/en/limits.md +241 -0
- package/dist/content/docs/en/logic.md +446 -0
- package/dist/content/docs/en/manifest.md +381 -0
- package/dist/content/docs/en/mcp.md +165 -0
- package/dist/content/docs/en/package.md +131 -0
- package/dist/content/docs/en/publishing.md +162 -0
- package/dist/content/docs/en/reference.md +55 -0
- package/dist/content/docs/en/result-shapes.md +332 -0
- package/dist/content/docs/en/sdk.md +295 -0
- package/dist/content/docs/en/security.md +115 -0
- package/dist/content/docs/en/service-reference.md +344 -0
- package/dist/content/docs/en/services.md +517 -0
- package/dist/content/docs/en/style-properties.md +270 -0
- package/dist/content/docs/en/style.md +266 -0
- package/dist/content/docs/en/testing.md +400 -0
- package/dist/content/docs/en/view.md +338 -0
- package/dist/content/docs/en/widgets.md +76 -0
- package/dist/content/docs/fr/cli.md +367 -0
- package/dist/content/docs/fr/dev-channel.md +140 -0
- package/dist/content/docs/fr/elements.md +475 -0
- package/dist/content/docs/fr/forms.md +341 -0
- package/dist/content/docs/fr/guide.md +264 -0
- package/dist/content/docs/fr/index.md +90 -0
- package/dist/content/docs/fr/limits.md +244 -0
- package/dist/content/docs/fr/logic.md +461 -0
- package/dist/content/docs/fr/manifest.md +392 -0
- package/dist/content/docs/fr/mcp.md +173 -0
- package/dist/content/docs/fr/package.md +139 -0
- package/dist/content/docs/fr/publishing.md +172 -0
- package/dist/content/docs/fr/reference.md +59 -0
- package/dist/content/docs/fr/result-shapes.md +333 -0
- package/dist/content/docs/fr/sdk.md +301 -0
- package/dist/content/docs/fr/security.md +129 -0
- package/dist/content/docs/fr/service-reference.md +346 -0
- package/dist/content/docs/fr/services.md +540 -0
- package/dist/content/docs/fr/style-properties.md +272 -0
- package/dist/content/docs/fr/style.md +281 -0
- package/dist/content/docs/fr/testing.md +417 -0
- package/dist/content/docs/fr/view.md +352 -0
- package/dist/content/docs/fr/widgets.md +81 -0
- package/dist/content/examples/clock/LICENSE +21 -0
- package/dist/content/examples/clock/README.md +75 -0
- package/dist/content/examples/clock/listing.json +19 -0
- package/dist/content/examples/clock/locales/en.json +4 -0
- package/dist/content/examples/clock/locales/fr.json +4 -0
- package/dist/content/examples/clock/logic.ts +85 -0
- package/dist/content/examples/clock/manifest.json +44 -0
- package/dist/content/examples/clock/package.json +16 -0
- package/dist/content/examples/clock/style.ocss +26 -0
- package/dist/content/examples/clock/tests/hidden.scenario.json +68 -0
- package/dist/content/examples/clock/tests/load-logic.mjs +22 -0
- package/dist/content/examples/clock/tests/logic.test.mjs +89 -0
- package/dist/content/examples/clock/tests/options.scenario.json +108 -0
- package/dist/content/examples/clock/tests/preview.scenario.json +25 -0
- package/dist/content/examples/clock/tests/render.scenario.json +94 -0
- package/dist/content/examples/clock/tests/summer-time.scenario.json +74 -0
- package/dist/content/examples/clock/tests/ticks.scenario.json +120 -0
- package/dist/content/examples/clock/tsconfig.json +16 -0
- package/dist/content/examples/clock/view.ocml +8 -0
- package/dist/content/examples/countdown/LICENSE +20 -0
- package/dist/content/examples/countdown/listing.json +10 -0
- package/dist/content/examples/countdown/locales/en.json +15 -0
- package/dist/content/examples/countdown/locales/fr.json +15 -0
- package/dist/content/examples/countdown/logic.ts +179 -0
- package/dist/content/examples/countdown/manifest.json +34 -0
- package/dist/content/examples/countdown/package.json +15 -0
- package/dist/content/examples/countdown/style.ocss +94 -0
- package/dist/content/examples/countdown/tsconfig.json +16 -0
- package/dist/content/examples/countdown/view.ocml +42 -0
- package/dist/content/examples/fps/LICENSE +21 -0
- package/dist/content/examples/fps/README.md +64 -0
- package/dist/content/examples/fps/listing.json +19 -0
- package/dist/content/examples/fps/locales/en.json +11 -0
- package/dist/content/examples/fps/locales/fr.json +11 -0
- package/dist/content/examples/fps/logic.ts +64 -0
- package/dist/content/examples/fps/manifest.json +30 -0
- package/dist/content/examples/fps/package.json +16 -0
- package/dist/content/examples/fps/style.ocss +31 -0
- package/dist/content/examples/fps/tests/label.scenario.json +63 -0
- package/dist/content/examples/fps/tests/load-logic.mjs +22 -0
- package/dist/content/examples/fps/tests/logic.test.mjs +60 -0
- package/dist/content/examples/fps/tests/preview.scenario.json +29 -0
- package/dist/content/examples/fps/tests/refused.scenario.json +20 -0
- package/dist/content/examples/fps/tests/render.scenario.json +96 -0
- package/dist/content/examples/fps/tests/stale.scenario.json +91 -0
- package/dist/content/examples/fps/tests/unavailable.scenario.json +111 -0
- package/dist/content/examples/fps/tsconfig.json +16 -0
- package/dist/content/examples/fps/view.ocml +11 -0
- package/dist/content/examples/media/LICENSE +21 -0
- package/dist/content/examples/media/README.md +147 -0
- package/dist/content/examples/media/listing.json +19 -0
- package/dist/content/examples/media/locales/en.json +11 -0
- package/dist/content/examples/media/locales/fr.json +11 -0
- package/dist/content/examples/media/logic.ts +191 -0
- package/dist/content/examples/media/manifest.json +35 -0
- package/dist/content/examples/media/package.json +16 -0
- package/dist/content/examples/media/style.ocss +148 -0
- package/dist/content/examples/media/tests/covers.scenario.json +144 -0
- package/dist/content/examples/media/tests/gesture.scenario.json +173 -0
- package/dist/content/examples/media/tests/load-logic.mjs +22 -0
- package/dist/content/examples/media/tests/logic.test.mjs +176 -0
- package/dist/content/examples/media/tests/marquee.scenario.json +127 -0
- package/dist/content/examples/media/tests/preview.scenario.json +52 -0
- package/dist/content/examples/media/tests/read-only.scenario.json +53 -0
- package/dist/content/examples/media/tests/refused.scenario.json +22 -0
- package/dist/content/examples/media/tests/refused.test.mjs +31 -0
- package/dist/content/examples/media/tests/render.scenario.json +136 -0
- package/dist/content/examples/media/tests/states.scenario.json +257 -0
- package/dist/content/examples/media/tests/unavailable.scenario.json +120 -0
- package/dist/content/examples/media/tsconfig.json +16 -0
- package/dist/content/examples/media/view.ocml +41 -0
- package/dist/content/examples/notes/LICENSE +21 -0
- package/dist/content/examples/notes/README.md +219 -0
- package/dist/content/examples/notes/listing.json +19 -0
- package/dist/content/examples/notes/locales/en.json +25 -0
- package/dist/content/examples/notes/locales/fr.json +25 -0
- package/dist/content/examples/notes/logic.ts +799 -0
- package/dist/content/examples/notes/manifest.json +40 -0
- package/dist/content/examples/notes/package.json +16 -0
- package/dist/content/examples/notes/style.ocss +469 -0
- package/dist/content/examples/notes/tests/checks.scenario.json +237 -0
- package/dist/content/examples/notes/tests/create.scenario.json +260 -0
- package/dist/content/examples/notes/tests/delete.scenario.json +342 -0
- package/dist/content/examples/notes/tests/drafts.scenario.json +714 -0
- package/dist/content/examples/notes/tests/editor.scenario.json +232 -0
- package/dist/content/examples/notes/tests/frame.scenario.json +93 -0
- package/dist/content/examples/notes/tests/interactive.scenario.json +344 -0
- package/dist/content/examples/notes/tests/limits.scenario.json +1351 -0
- package/dist/content/examples/notes/tests/load-logic.mjs +22 -0
- package/dist/content/examples/notes/tests/logic.test.mjs +514 -0
- package/dist/content/examples/notes/tests/preview.scenario.json +99 -0
- package/dist/content/examples/notes/tests/read-only.scenario.json +105 -0
- package/dist/content/examples/notes/tests/refused.scenario.json +33 -0
- package/dist/content/examples/notes/tests/save.scenario.json +378 -0
- package/dist/content/examples/notes/tests/states.scenario.json +640 -0
- package/dist/content/examples/notes/tests/typing.scenario.json +562 -0
- package/dist/content/examples/notes/tests/unavailable.scenario.json +246 -0
- package/dist/content/examples/notes/tsconfig.json +16 -0
- package/dist/content/examples/notes/view.ocml +154 -0
- package/dist/content/examples/performance/LICENSE +21 -0
- package/dist/content/examples/performance/README.md +134 -0
- package/dist/content/examples/performance/listing.json +19 -0
- package/dist/content/examples/performance/locales/en.json +20 -0
- package/dist/content/examples/performance/locales/fr.json +20 -0
- package/dist/content/examples/performance/logic.ts +210 -0
- package/dist/content/examples/performance/manifest.json +83 -0
- package/dist/content/examples/performance/package.json +16 -0
- package/dist/content/examples/performance/style.ocss +75 -0
- package/dist/content/examples/performance/tests/fahrenheit.scenario.json +110 -0
- package/dist/content/examples/performance/tests/horizontal.scenario.json +96 -0
- package/dist/content/examples/performance/tests/load-logic.mjs +22 -0
- package/dist/content/examples/performance/tests/logic.test.mjs +226 -0
- package/dist/content/examples/performance/tests/menu.scenario.json +170 -0
- package/dist/content/examples/performance/tests/no-fps-source.scenario.json +47 -0
- package/dist/content/examples/performance/tests/preview.scenario.json +45 -0
- package/dist/content/examples/performance/tests/refused.scenario.json +20 -0
- package/dist/content/examples/performance/tests/refused.test.mjs +19 -0
- package/dist/content/examples/performance/tests/region.scenario.json +89 -0
- package/dist/content/examples/performance/tests/render.scenario.json +112 -0
- package/dist/content/examples/performance/tests/sources.scenario.json +151 -0
- package/dist/content/examples/performance/tests/stale.scenario.json +111 -0
- package/dist/content/examples/performance/tests/telemetry-only.scenario.json +44 -0
- package/dist/content/examples/performance/tests/thresholds.scenario.json +147 -0
- package/dist/content/examples/performance/tests/waiting.scenario.json +105 -0
- package/dist/content/examples/performance/tsconfig.json +16 -0
- package/dist/content/examples/performance/view.ocml +18 -0
- package/dist/content/examples/playervox-journal/LICENSE +21 -0
- package/dist/content/examples/playervox-journal/README.md +150 -0
- package/dist/content/examples/playervox-journal/listing.json +19 -0
- package/dist/content/examples/playervox-journal/locales/en.json +25 -0
- package/dist/content/examples/playervox-journal/locales/fr.json +25 -0
- package/dist/content/examples/playervox-journal/logic.ts +556 -0
- package/dist/content/examples/playervox-journal/manifest.json +19 -0
- package/dist/content/examples/playervox-journal/package.json +16 -0
- package/dist/content/examples/playervox-journal/style.ocss +142 -0
- package/dist/content/examples/playervox-journal/tests/changes.scenario.json +482 -0
- package/dist/content/examples/playervox-journal/tests/delete.scenario.json +432 -0
- package/dist/content/examples/playervox-journal/tests/frame.scenario.json +169 -0
- package/dist/content/examples/playervox-journal/tests/load-logic.mjs +22 -0
- package/dist/content/examples/playervox-journal/tests/logic.test.mjs +349 -0
- package/dist/content/examples/playervox-journal/tests/paging.scenario.json +428 -0
- package/dist/content/examples/playervox-journal/tests/preview.scenario.json +184 -0
- package/dist/content/examples/playervox-journal/tests/read-only.scenario.json +157 -0
- package/dist/content/examples/playervox-journal/tests/refused.scenario.json +39 -0
- package/dist/content/examples/playervox-journal/tests/scale.scenario.json +286 -0
- package/dist/content/examples/playervox-journal/tests/signed-out.scenario.json +134 -0
- package/dist/content/examples/playervox-journal/tests/states.scenario.json +741 -0
- package/dist/content/examples/playervox-journal/tests/unavailable.scenario.json +183 -0
- package/dist/content/examples/playervox-journal/tsconfig.json +16 -0
- package/dist/content/examples/playervox-journal/view.ocml +52 -0
- package/dist/content/examples/playervox-rating/LICENSE +21 -0
- package/dist/content/examples/playervox-rating/README.md +166 -0
- package/dist/content/examples/playervox-rating/listing.json +19 -0
- package/dist/content/examples/playervox-rating/locales/en.json +35 -0
- package/dist/content/examples/playervox-rating/locales/fr.json +35 -0
- package/dist/content/examples/playervox-rating/logic.ts +581 -0
- package/dist/content/examples/playervox-rating/manifest.json +19 -0
- package/dist/content/examples/playervox-rating/package.json +16 -0
- package/dist/content/examples/playervox-rating/style.ocss +333 -0
- package/dist/content/examples/playervox-rating/tests/account.scenario.json +125 -0
- package/dist/content/examples/playervox-rating/tests/bounds.scenario.json +73 -0
- package/dist/content/examples/playervox-rating/tests/draft.scenario.json +199 -0
- package/dist/content/examples/playervox-rating/tests/form.scenario.json +142 -0
- package/dist/content/examples/playervox-rating/tests/load-logic.mjs +22 -0
- package/dist/content/examples/playervox-rating/tests/logic.test.mjs +346 -0
- package/dist/content/examples/playervox-rating/tests/offline.scenario.json +142 -0
- package/dist/content/examples/playervox-rating/tests/preview.scenario.json +44 -0
- package/dist/content/examples/playervox-rating/tests/publish-keyboard.scenario.json +221 -0
- package/dist/content/examples/playervox-rating/tests/publish-pointer.scenario.json +314 -0
- package/dist/content/examples/playervox-rating/tests/read-only.scenario.json +70 -0
- package/dist/content/examples/playervox-rating/tests/refused.scenario.json +45 -0
- package/dist/content/examples/playervox-rating/tests/states.scenario.json +362 -0
- package/dist/content/examples/playervox-rating/tsconfig.json +16 -0
- package/dist/content/examples/playervox-rating/view.ocml +62 -0
- package/dist/content/examples/playervox-reviews/LICENSE +21 -0
- package/dist/content/examples/playervox-reviews/README.md +194 -0
- package/dist/content/examples/playervox-reviews/listing.json +19 -0
- package/dist/content/examples/playervox-reviews/locales/en.json +32 -0
- package/dist/content/examples/playervox-reviews/locales/fr.json +32 -0
- package/dist/content/examples/playervox-reviews/logic.ts +822 -0
- package/dist/content/examples/playervox-reviews/manifest.json +30 -0
- package/dist/content/examples/playervox-reviews/package.json +16 -0
- package/dist/content/examples/playervox-reviews/style.ocss +260 -0
- package/dist/content/examples/playervox-reviews/tests/account.scenario.json +249 -0
- package/dist/content/examples/playervox-reviews/tests/bounds.scenario.json +336 -0
- package/dist/content/examples/playervox-reviews/tests/changes.scenario.json +515 -0
- package/dist/content/examples/playervox-reviews/tests/filter.scenario.json +400 -0
- package/dist/content/examples/playervox-reviews/tests/frame.scenario.json +185 -0
- package/dist/content/examples/playervox-reviews/tests/keyboard.scenario.json +188 -0
- package/dist/content/examples/playervox-reviews/tests/load-logic.mjs +22 -0
- package/dist/content/examples/playervox-reviews/tests/logic.test.mjs +559 -0
- package/dist/content/examples/playervox-reviews/tests/offline-start.scenario.json +152 -0
- package/dist/content/examples/playervox-reviews/tests/offline.scenario.json +311 -0
- package/dist/content/examples/playervox-reviews/tests/paging.scenario.json +497 -0
- package/dist/content/examples/playervox-reviews/tests/preview.scenario.json +286 -0
- package/dist/content/examples/playervox-reviews/tests/reading.scenario.json +591 -0
- package/dist/content/examples/playervox-reviews/tests/refused.scenario.json +54 -0
- package/dist/content/examples/playervox-reviews/tests/scale.scenario.json +303 -0
- package/dist/content/examples/playervox-reviews/tests/states.scenario.json +700 -0
- package/dist/content/examples/playervox-reviews/tests/unavailable.scenario.json +192 -0
- package/dist/content/examples/playervox-reviews/tsconfig.json +16 -0
- package/dist/content/examples/playervox-reviews/view.ocml +110 -0
- package/dist/content/examples/playervox-score/LICENSE +21 -0
- package/dist/content/examples/playervox-score/README.md +131 -0
- package/dist/content/examples/playervox-score/listing.json +19 -0
- package/dist/content/examples/playervox-score/locales/en.json +23 -0
- package/dist/content/examples/playervox-score/locales/fr.json +23 -0
- package/dist/content/examples/playervox-score/logic.ts +430 -0
- package/dist/content/examples/playervox-score/manifest.json +47 -0
- package/dist/content/examples/playervox-score/package.json +16 -0
- package/dist/content/examples/playervox-score/style.ocss +247 -0
- package/dist/content/examples/playervox-score/tests/grades.scenario.json +279 -0
- package/dist/content/examples/playervox-score/tests/load-logic.mjs +22 -0
- package/dist/content/examples/playervox-score/tests/logic.test.mjs +229 -0
- package/dist/content/examples/playervox-score/tests/options.scenario.json +302 -0
- package/dist/content/examples/playervox-score/tests/preview.scenario.json +68 -0
- package/dist/content/examples/playervox-score/tests/pulse.scenario.json +157 -0
- package/dist/content/examples/playervox-score/tests/refused.scenario.json +21 -0
- package/dist/content/examples/playervox-score/tests/signed-out.scenario.json +46 -0
- package/dist/content/examples/playervox-score/tests/states.scenario.json +450 -0
- package/dist/content/examples/playervox-score/tests/unavailable.scenario.json +84 -0
- package/dist/content/examples/playervox-score/tsconfig.json +16 -0
- package/dist/content/examples/playervox-score/view.ocml +51 -0
- package/dist/content/examples/session/LICENSE +21 -0
- package/dist/content/examples/session/README.md +57 -0
- package/dist/content/examples/session/listing.json +19 -0
- package/dist/content/examples/session/locales/en.json +3 -0
- package/dist/content/examples/session/locales/fr.json +3 -0
- package/dist/content/examples/session/logic.ts +26 -0
- package/dist/content/examples/session/manifest.json +19 -0
- package/dist/content/examples/session/package.json +16 -0
- package/dist/content/examples/session/style.ocss +16 -0
- package/dist/content/examples/session/tests/hidden.scenario.json +45 -0
- package/dist/content/examples/session/tests/load-logic.mjs +22 -0
- package/dist/content/examples/session/tests/logic.test.mjs +37 -0
- package/dist/content/examples/session/tests/preview.scenario.json +28 -0
- package/dist/content/examples/session/tests/refused.scenario.json +20 -0
- package/dist/content/examples/session/tests/refused.test.mjs +16 -0
- package/dist/content/examples/session/tests/render.scenario.json +95 -0
- package/dist/content/examples/session/tests/ticks.scenario.json +139 -0
- package/dist/content/examples/session/tests/unknown.scenario.json +37 -0
- package/dist/content/examples/session/tsconfig.json +16 -0
- package/dist/content/examples/session/view.ocml +11 -0
- package/dist/content/examples/stopwatch/LICENSE +21 -0
- package/dist/content/examples/stopwatch/README.md +99 -0
- package/dist/content/examples/stopwatch/listing.json +19 -0
- package/dist/content/examples/stopwatch/locales/en.json +8 -0
- package/dist/content/examples/stopwatch/locales/fr.json +8 -0
- package/dist/content/examples/stopwatch/logic.ts +93 -0
- package/dist/content/examples/stopwatch/manifest.json +19 -0
- package/dist/content/examples/stopwatch/package.json +16 -0
- package/dist/content/examples/stopwatch/style.ocss +54 -0
- package/dist/content/examples/stopwatch/tests/errors.scenario.json +121 -0
- package/dist/content/examples/stopwatch/tests/gesture.scenario.json +154 -0
- package/dist/content/examples/stopwatch/tests/hidden.scenario.json +57 -0
- package/dist/content/examples/stopwatch/tests/hundredths.scenario.json +173 -0
- package/dist/content/examples/stopwatch/tests/load-logic.mjs +22 -0
- package/dist/content/examples/stopwatch/tests/logic.test.mjs +99 -0
- package/dist/content/examples/stopwatch/tests/preview.scenario.json +36 -0
- package/dist/content/examples/stopwatch/tests/read-only.scenario.json +42 -0
- package/dist/content/examples/stopwatch/tests/read-only.test.mjs +18 -0
- package/dist/content/examples/stopwatch/tests/refused.scenario.json +22 -0
- package/dist/content/examples/stopwatch/tests/refused.test.mjs +18 -0
- package/dist/content/examples/stopwatch/tests/render.scenario.json +105 -0
- package/dist/content/examples/stopwatch/tests/states.scenario.json +246 -0
- package/dist/content/examples/stopwatch/tests/unknown.scenario.json +40 -0
- package/dist/content/examples/stopwatch/tsconfig.json +16 -0
- package/dist/content/examples/stopwatch/view.ocml +29 -0
- package/dist/content/examples/twitch-chat/LICENSE +21 -0
- package/dist/content/examples/twitch-chat/README.md +283 -0
- package/dist/content/examples/twitch-chat/listing.json +19 -0
- package/dist/content/examples/twitch-chat/locales/en.json +52 -0
- package/dist/content/examples/twitch-chat/locales/fr.json +52 -0
- package/dist/content/examples/twitch-chat/logic.ts +887 -0
- package/dist/content/examples/twitch-chat/manifest.json +33 -0
- package/dist/content/examples/twitch-chat/package.json +16 -0
- package/dist/content/examples/twitch-chat/style.ocss +544 -0
- package/dist/content/examples/twitch-chat/tests/account.scenario.json +325 -0
- package/dist/content/examples/twitch-chat/tests/burst.scenario.json +1866 -0
- package/dist/content/examples/twitch-chat/tests/channel-refused.scenario.json +372 -0
- package/dist/content/examples/twitch-chat/tests/channel.scenario.json +480 -0
- package/dist/content/examples/twitch-chat/tests/draft.scenario.json +279 -0
- package/dist/content/examples/twitch-chat/tests/fade.scenario.json +269 -0
- package/dist/content/examples/twitch-chat/tests/failures.scenario.json +420 -0
- package/dist/content/examples/twitch-chat/tests/favorites.scenario.json +376 -0
- package/dist/content/examples/twitch-chat/tests/frame.scenario.json +152 -0
- package/dist/content/examples/twitch-chat/tests/lifetime.scenario.json +186 -0
- package/dist/content/examples/twitch-chat/tests/load-logic.mjs +22 -0
- package/dist/content/examples/twitch-chat/tests/logic.test.mjs +1053 -0
- package/dist/content/examples/twitch-chat/tests/passive.scenario.json +536 -0
- package/dist/content/examples/twitch-chat/tests/preview.scenario.json +147 -0
- package/dist/content/examples/twitch-chat/tests/read-only.scenario.json +202 -0
- package/dist/content/examples/twitch-chat/tests/read-only.test.mjs +63 -0
- package/dist/content/examples/twitch-chat/tests/refused.scenario.json +65 -0
- package/dist/content/examples/twitch-chat/tests/refused.test.mjs +43 -0
- package/dist/content/examples/twitch-chat/tests/render.scenario.json +347 -0
- package/dist/content/examples/twitch-chat/tests/reply.scenario.json +384 -0
- package/dist/content/examples/twitch-chat/tests/send-refused.scenario.json +383 -0
- package/dist/content/examples/twitch-chat/tests/send.scenario.json +300 -0
- package/dist/content/examples/twitch-chat/tests/states.scenario.json +455 -0
- package/dist/content/examples/twitch-chat/tests/unavailable.scenario.json +256 -0
- package/dist/content/examples/twitch-chat/tests/unread.scenario.json +997 -0
- package/dist/content/examples/twitch-chat/tsconfig.json +16 -0
- package/dist/content/examples/twitch-chat/view.ocml +141 -0
- package/dist/content/examples/warframe-market/LICENSE +21 -0
- package/dist/content/examples/warframe-market/README.md +176 -0
- package/dist/content/examples/warframe-market/listing.json +19 -0
- package/dist/content/examples/warframe-market/locales/en.json +44 -0
- package/dist/content/examples/warframe-market/locales/fr.json +44 -0
- package/dist/content/examples/warframe-market/logic.ts +1265 -0
- package/dist/content/examples/warframe-market/manifest.json +92 -0
- package/dist/content/examples/warframe-market/package.json +16 -0
- package/dist/content/examples/warframe-market/style.ocss +422 -0
- package/dist/content/examples/warframe-market/tests/bounds.scenario.json +60 -0
- package/dist/content/examples/warframe-market/tests/cached.scenario.json +70 -0
- package/dist/content/examples/warframe-market/tests/detail.scenario.json +251 -0
- package/dist/content/examples/warframe-market/tests/errors.scenario.json +105 -0
- package/dist/content/examples/warframe-market/tests/fixtures.json +295 -0
- package/dist/content/examples/warframe-market/tests/load-logic.mjs +22 -0
- package/dist/content/examples/warframe-market/tests/logic.test.mjs +505 -0
- package/dist/content/examples/warframe-market/tests/no-clipboard.scenario.json +104 -0
- package/dist/content/examples/warframe-market/tests/passive.scenario.json +87 -0
- package/dist/content/examples/warframe-market/tests/preview.scenario.json +146 -0
- package/dist/content/examples/warframe-market/tests/refresh.scenario.json +56 -0
- package/dist/content/examples/warframe-market/tests/refused.scenario.json +74 -0
- package/dist/content/examples/warframe-market/tests/render.scenario.json +210 -0
- package/dist/content/examples/warframe-market/tests/search.scenario.json +189 -0
- package/dist/content/examples/warframe-market/tests/unavailable.scenario.json +54 -0
- package/dist/content/examples/warframe-market/tsconfig.json +16 -0
- package/dist/content/examples/warframe-market/view.ocml +116 -0
- package/dist/content/examples/weather/LICENSE +20 -0
- package/dist/content/examples/weather/listing.json +10 -0
- package/dist/content/examples/weather/locales/en.json +9 -0
- package/dist/content/examples/weather/locales/fr.json +9 -0
- package/dist/content/examples/weather/logic.ts +62 -0
- package/dist/content/examples/weather/manifest.json +51 -0
- package/dist/content/examples/weather/package.json +15 -0
- package/dist/content/examples/weather/style.ocss +29 -0
- package/dist/content/examples/weather/tsconfig.json +16 -0
- package/dist/content/examples/weather/view.ocml +12 -0
- package/dist/content/index.json +3601 -0
- package/dist/content/reference/errors.json +1712 -0
- package/dist/content/reference/limits.json +1154 -0
- package/dist/content/reference/manifest.md +223 -0
- package/dist/content/reference/permissions.json +413 -0
- package/dist/content/templates/blank/locales/en.json +3 -0
- package/dist/content/templates/blank/locales/fr.json +3 -0
- package/dist/content/templates/blank/logic.ts +7 -0
- package/dist/content/templates/blank/manifest.json +16 -0
- package/dist/content/templates/blank/style.ocss +10 -0
- package/dist/content/templates/blank/tests/example.scenario.json +10 -0
- package/dist/content/templates/blank/view.ocml +6 -0
- package/dist/content/templates/chart/locales/en.json +3 -0
- package/dist/content/templates/chart/locales/fr.json +3 -0
- package/dist/content/templates/chart/logic.ts +27 -0
- package/dist/content/templates/chart/manifest.json +16 -0
- package/dist/content/templates/chart/style.ocss +27 -0
- package/dist/content/templates/chart/tests/example.scenario.json +10 -0
- package/dist/content/templates/chart/view.ocml +10 -0
- package/dist/content/templates/counter/locales/en.json +4 -0
- package/dist/content/templates/counter/locales/fr.json +4 -0
- package/dist/content/templates/counter/logic.ts +20 -0
- package/dist/content/templates/counter/manifest.json +16 -0
- package/dist/content/templates/counter/style.ocss +26 -0
- package/dist/content/templates/counter/tests/example.scenario.json +11 -0
- package/dist/content/templates/counter/view.ocml +13 -0
- package/dist/content/templates/list/locales/en.json +8 -0
- package/dist/content/templates/list/locales/fr.json +8 -0
- package/dist/content/templates/list/logic.ts +35 -0
- package/dist/content/templates/list/manifest.json +16 -0
- package/dist/content/templates/list/style.ocss +42 -0
- package/dist/content/templates/list/tests/example.scenario.json +10 -0
- package/dist/content/templates/list/view.ocml +17 -0
- package/dist/content/templates/shared/LICENSE +20 -0
- package/dist/content/templates/shared/package.json +14 -0
- package/dist/content/templates/shared/tsconfig.json +16 -0
- package/dist/content.js +68 -0
- package/dist/env.js +156 -0
- package/dist/fingerprint.js +32 -0
- package/dist/ids.js +27 -0
- package/dist/index.js +82 -0
- package/dist/knowledge.js +222 -0
- package/dist/npm.js +149 -0
- package/dist/prompts.js +47 -0
- package/dist/resources.js +82 -0
- package/dist/run.js +120 -0
- package/dist/server.js +43 -0
- package/dist/session.js +205 -0
- package/dist/sources.js +218 -0
- package/dist/text.js +80 -0
- package/dist/texts.js +44 -0
- package/dist/tools/audit.js +105 -0
- package/dist/tools/build.js +453 -0
- package/dist/tools/common.js +122 -0
- package/dist/tools/docs.js +196 -0
- package/dist/tools/preview.js +87 -0
- package/dist/tools/project.js +178 -0
- package/dist/tools/setup.js +146 -0
- package/dist/tools/submission.js +369 -0
- package/dist/version.js +3 -0
- package/npm-shrinkwrap.json +402 -0
- 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).
|