page-shell
Every page wrapper should use a skin background and readable text token.
Tokens: pageBackground, text, textSoft
Future TheoB pages should share one component contract for backgrounds, cards, buttons, tabs, game tiles, tactile states, and audio-design cues. This keeps the whole system consistent and makes global skin changes easy.
Every page wrapper should use a skin background and readable text token.
Tokens: pageBackground, text, textSoft
Cards should sit above the background with enough contrast.
Tokens: card, border, text, textSoft
firm-press or soft-pulse depending on action
Tokens: surfaceSoft, border, accent, text
precise click
Tokens: surfaceSoft, border, accent
tile-snap
Tokens: card, accent, border
short-stop
Tokens: intent-boundary, text, border
{
"purpose": "Reusable design contract for future TheoB tabs, buttons, cards, game tiles, Academy lessons, and Founder Command actions.",
"skinAccess": {
"defaultSkin": "instrument-dark",
"source": "theobSharedSensoryComponentContract58YCore",
"rule": "Backgrounds should be changed from the skin registry, not patched page by page."
},
"components": [
{
"component": "page-shell",
"requiredTokens": [
"pageBackground",
"text",
"textSoft"
],
"behavior": "Every page wrapper should use a skin background and readable text token."
},
{
"component": "card",
"requiredTokens": [
"card",
"border",
"text",
"textSoft"
],
"behavior": "Cards should sit above the background with enough contrast."
},
{
"component": "button",
"requiredTokens": [
"surfaceSoft",
"border",
"accent",
"text"
],
"tactile": "firm-press or soft-pulse depending on action"
},
{
"component": "tab",
"requiredTokens": [
"surfaceSoft",
"border",
"accent"
],
"tactile": "precise click",
"audioDesign": "crystal-tap"
},
{
"component": "game-tile",
"requiredTokens": [
"card",
"accent",
"border"
],
"tactile": "tile-snap",
"audioDesign": "match-pop"
},
{
"component": "safety-boundary",
"requiredTokens": [
"intent-boundary",
"text",
"border"
],
"tactile": "short-stop",
"audioDesign": "muted-caution"
}
],
"sensoryTokens": {
"tactile": [
"tile-snap",
"soft-pulse",
"firm-press",
"slow-glow",
"short-stop"
],
"audioDesignOnly": [
"match-pop",
"warm-chime",
"low-bell",
"crystal-tap",
"muted-caution"
],
"colorIntent": [
"intent-clarity",
"intent-warmth",
"intent-growth",
"intent-reflection",
"intent-boundary"
]
}
}