[{"data":1,"prerenderedAt":1206},["ShallowReactive",2],{"navigation_docs":3,"-guide-styles":223,"-guide-styles-surround":1201},[4,26,96,105,202],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":25},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F1.installation","i-lucide-download",{"title":16,"path":17,"stem":18,"icon":19},"The first app","\u002Fgetting-started\u002Ffirst-app","1.getting-started\u002F2.first-app","i-lucide-play",{"title":21,"path":22,"stem":23,"icon":24},"The first test","\u002Fgetting-started\u002Ffirst-test","1.getting-started\u002F3.first-test","i-lucide-flask-conical",false,{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":25},"Guide","i-lucide-book-open","\u002Fguide","2.guide",[32,37,42,47,52,57,62,67,72,77,81,86,91],{"title":33,"path":34,"stem":35,"icon":36},"Components","\u002Fguide\u002Fcomponents","2.guide\u002F01.components","i-lucide-component",{"title":38,"path":39,"stem":40,"icon":41},"Inputs and forms","\u002Fguide\u002Finputs-and-forms","2.guide\u002F02.inputs-and-forms","i-lucide-text-cursor-input",{"title":43,"path":44,"stem":45,"icon":46},"Scrolling and viewports","\u002Fguide\u002Fscrolling","2.guide\u002F03.scrolling","i-lucide-scroll-text",{"title":48,"path":49,"stem":50,"icon":51},"Overlays and layers","\u002Fguide\u002Foverlays","2.guide\u002F04.overlays","i-lucide-layers",{"title":53,"path":54,"stem":55,"icon":56},"Styles and theme","\u002Fguide\u002Fstyles","2.guide\u002F05.styles","i-lucide-palette",{"title":58,"path":59,"stem":60,"icon":61},"Composables","\u002Fguide\u002Fcomposables","2.guide\u002F06.composables","i-lucide-puzzle",{"title":63,"path":64,"stem":65,"icon":66},"Widgets","\u002Fguide\u002Fwidgets","2.guide\u002F07.widgets","i-lucide-blocks",{"title":68,"path":69,"stem":70,"icon":71},"The assistant","\u002Fguide\u002Fassistant","2.guide\u002F08.assistant","i-lucide-message-square",{"title":73,"path":74,"stem":75,"icon":76},"The same app on the web","\u002Fguide\u002Fweb","2.guide\u002F09.web","i-lucide-globe",{"title":78,"path":79,"stem":80,"icon":24},"Testing","\u002Fguide\u002Ftesting","2.guide\u002F10.testing",{"title":82,"path":83,"stem":84,"icon":85},"Running and packaging","\u002Fguide\u002Fpackaging","2.guide\u002F11.packaging","i-lucide-package",{"title":87,"path":88,"stem":89,"icon":90},"The terminal contract","\u002Fguide\u002Fterminal","2.guide\u002F12.terminal","i-lucide-square-terminal",{"title":92,"path":93,"stem":94,"icon":95},"Benchmarks","\u002Fguide\u002Fbenchmarks","2.guide\u002F13.benchmarks","i-lucide-gauge",{"title":97,"icon":98,"path":99,"stem":100,"children":101,"page":25},"AI and agents","i-lucide-bot","\u002Fai","3.ai",[102],{"title":97,"path":103,"stem":104,"icon":98},"\u002Fai\u002Fagents","3.ai\u002F1.agents",{"title":106,"icon":107,"path":108,"stem":109,"children":110},"Decisions","i-lucide-scale","\u002Fdecisions","4.decisions",[111,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198],{"title":112,"path":108,"stem":113,"icon":46},"All decisions","4.decisions\u002Findex",{"title":115,"path":116,"stem":117},"0001. kyo-ui is the DSL","\u002Fdecisions\u002F0001-kyo-ui-is-the-dsl","4.decisions\u002F0001-kyo-ui-is-the-dsl",{"title":119,"path":120,"stem":121},"0002. jatatui renders the cells","\u002Fdecisions\u002F0002-jatatui-renders-the-cells","4.decisions\u002F0002-jatatui-renders-the-cells",{"title":123,"path":124,"stem":125},"0003. Pin Kyo 1.0.0-RC7 and JDK 25","\u002Fdecisions\u002F0003-pin-kyo-rc7-and-jdk-25","4.decisions\u002F0003-pin-kyo-rc7-and-jdk-25",{"title":127,"path":128,"stem":129},"0004. Public Kyo APIs only","\u002Fdecisions\u002F0004-public-kyo-apis-only","4.decisions\u002F0004-public-kyo-apis-only",{"title":131,"path":132,"stem":133},"0005. A SOFT frame contract and an own watcher loop","\u002Fdecisions\u002F0005-soft-frame-contract-and-own-watcher-loop","4.decisions\u002F0005-soft-frame-contract-and-own-watcher-loop",{"title":135,"path":136,"stem":137},"0006. Purity: edge files, lint and a pure painter","\u002Fdecisions\u002F0006-purity-edge-files-and-lint","4.decisions\u002F0006-purity-edge-files-and-lint",{"title":139,"path":140,"stem":141},"0007. Compiler flags from sbt-tpolecat","\u002Fdecisions\u002F0007-compiler-flags-from-sbt-tpolecat","4.decisions\u002F0007-compiler-flags-from-sbt-tpolecat",{"title":143,"path":144,"stem":145},"0008. The artifact split: runner, app, testkit and core","\u002Fdecisions\u002F0008-artifact-split-runner-app-testkit-core","4.decisions\u002F0008-artifact-split-runner-app-testkit-core",{"title":147,"path":148,"stem":149},"0009. tui4s-use and tui4s-widgets, cross-built","\u002Fdecisions\u002F0009-use-and-widgets-cross-built","4.decisions\u002F0009-use-and-widgets-cross-built",{"title":151,"path":152,"stem":153},"0010. The flagship assistant is the blueprint of a real app","\u002Fdecisions\u002F0010-the-flagship-assistant-as-blueprint","4.decisions\u002F0010-the-flagship-assistant-as-blueprint",{"title":155,"path":156,"stem":157},"0011. The web target: a standalone Scala.js app and one theme","\u002Fdecisions\u002F0011-web-target-standalone-scalajs-and-one-theme","4.decisions\u002F0011-web-target-standalone-scalajs-and-one-theme",{"title":159,"path":160,"stem":161},"0012. The documentation is example-first","\u002Fdecisions\u002F0012-documentation-is-example-first","4.decisions\u002F0012-documentation-is-example-first",{"title":163,"path":164,"stem":165},"0013. Benchmarks in the repository, with their own build","\u002Fdecisions\u002F0013-benchmarks-in-repo-with-own-build","4.decisions\u002F0013-benchmarks-in-repo-with-own-build",{"title":167,"path":168,"stem":169},"0014. Release per module, by tag, as 0.1.0-RC1","\u002Fdecisions\u002F0014-release-per-module-tags-and-rc1","4.decisions\u002F0014-release-per-module-tags-and-rc1",{"title":171,"path":172,"stem":173},"0015. Packaging: the AOT cache in the start scripts, native-image as an option","\u002Fdecisions\u002F0015-packaging-aot-cache-and-native-image","4.decisions\u002F0015-packaging-aot-cache-and-native-image",{"title":175,"path":176,"stem":177},"0016. Process: lean mode and agent roles","\u002Fdecisions\u002F0016-process-lean-mode-and-agent-roles","4.decisions\u002F0016-process-lean-mode-and-agent-roles",{"title":179,"path":180,"stem":181},"0017. Deferred: templates, mouse, the kitty keyboard protocol and Windows","\u002Fdecisions\u002F0017-deferred-templates-mouse-and-kitty","4.decisions\u002F0017-deferred-templates-mouse-and-kitty",{"title":183,"path":184,"stem":185},"0018. pini4s is a vendored Git submodule","\u002Fdecisions\u002F0018-pini4s-as-a-vendored-submodule","4.decisions\u002F0018-pini4s-as-a-vendored-submodule",{"title":187,"path":188,"stem":189},"0019. Upstream issues are drafts that the user posts","\u002Fdecisions\u002F0019-upstream-kyo-issues-as-drafts","4.decisions\u002F0019-upstream-kyo-issues-as-drafts",{"title":191,"path":192,"stem":193},"0020. Release from the Actions form","\u002Fdecisions\u002F0020-release-from-the-actions-form","4.decisions\u002F0020-release-from-the-actions-form",{"title":195,"path":196,"stem":197},"0021. The rulebook is CONTRIBUTING.md","\u002Fdecisions\u002F0021-the-rulebook-is-contributing-md","4.decisions\u002F0021-the-rulebook-is-contributing-md",{"title":199,"path":200,"stem":201},"0022. The logo is text","\u002Fdecisions\u002F0022-the-logo-is-text","4.decisions\u002F0022-the-logo-is-text",{"title":203,"icon":204,"path":205,"stem":206,"children":207,"page":25},"Project","i-lucide-compass","\u002Fproject","5.project",[208,213,218],{"title":209,"path":210,"stem":211,"icon":212},"Roadmap","\u002Fproject\u002Froadmap","5.project\u002F1.roadmap","i-lucide-map",{"title":214,"path":215,"stem":216,"icon":217},"Contributing","\u002Fproject\u002Fcontributing","5.project\u002F2.contributing","i-lucide-git-pull-request",{"title":219,"path":220,"stem":221,"icon":222},"Security","\u002Fproject\u002Fsecurity","5.project\u002F3.security","i-lucide-shield",{"id":224,"title":53,"body":225,"description":1194,"extension":1195,"links":1196,"meta":1197,"navigation":1198,"path":54,"seo":1199,"stem":55,"__hash__":1200},"docs\u002F2.guide\u002F05.styles.md",{"type":226,"value":227,"toc":1189},"minimark",[228,493,508,513,562,566,580,1110,1153,1157,1174,1185],[229,230,236],"pre",{"className":231,"code":232,"filename":233,"language":234,"meta":235,"style":235},"language-scala shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","    \u002F** The custom colours of the app, declared once for the whole tree: a\n      * kyo-ui `Stylesheet.vars` block (CSS custom properties on `:root`). The\n      * run gets it as its stylesheet (`TuiApp.stylesheet`, or the `stylesheet`\n      * of `Headless.start`), and an element names a colour with\n      * `Style.Color.variable`.\n      *\u002F\n    val colors: Stylesheet = Stylesheet.vars(\n      \"frame\" -> \"#64748b\",\n      \"label\" -> \"#eab308\",\n      \"count\" -> \"#22c55e\",\n    )\n\n    val frame: Style.Color = Style.Color.variable(\"frame\")\n    val label: Style.Color = Style.Color.variable(\"label\")\n    val count: Style.Color = Style.Color.variable(\"count\")\n","CounterStyles.scala","scala","",[237,238,239,248,254,260,266,272,278,304,331,352,373,379,386,425,459],"code",{"__ignoreMap":235},[240,241,244],"span",{"class":242,"line":243},"line",1,[240,245,247],{"class":246},"sHwdD","    \u002F** The custom colours of the app, declared once for the whole tree: a\n",[240,249,251],{"class":242,"line":250},2,[240,252,253],{"class":246},"      * kyo-ui `Stylesheet.vars` block (CSS custom properties on `:root`). The\n",[240,255,257],{"class":242,"line":256},3,[240,258,259],{"class":246},"      * run gets it as its stylesheet (`TuiApp.stylesheet`, or the `stylesheet`\n",[240,261,263],{"class":242,"line":262},4,[240,264,265],{"class":246},"      * of `Headless.start`), and an element names a colour with\n",[240,267,269],{"class":242,"line":268},5,[240,270,271],{"class":246},"      * `Style.Color.variable`.\n",[240,273,275],{"class":242,"line":274},6,[240,276,277],{"class":246},"      *\u002F\n",[240,279,281,285,289,292,296,299,301],{"class":242,"line":280},7,[240,282,284],{"class":283},"sMK4o","    val",[240,286,288],{"class":287},"sTEyZ"," colors",[240,290,291],{"class":283},":",[240,293,295],{"class":294},"sBMFI"," Stylesheet",[240,297,298],{"class":283}," =",[240,300,295],{"class":294},[240,302,303],{"class":287},".vars(\n",[240,305,307,310,314,317,320,323,326,328],{"class":242,"line":306},8,[240,308,309],{"class":283},"      \"",[240,311,313],{"class":312},"sfazB","frame",[240,315,316],{"class":283},"\"",[240,318,319],{"class":283}," ->",[240,321,322],{"class":283}," \"",[240,324,325],{"class":312},"#64748b",[240,327,316],{"class":283},[240,329,330],{"class":287},",\n",[240,332,334,336,339,341,343,345,348,350],{"class":242,"line":333},9,[240,335,309],{"class":283},[240,337,338],{"class":312},"label",[240,340,316],{"class":283},[240,342,319],{"class":283},[240,344,322],{"class":283},[240,346,347],{"class":312},"#eab308",[240,349,316],{"class":283},[240,351,330],{"class":287},[240,353,355,357,360,362,364,366,369,371],{"class":242,"line":354},10,[240,356,309],{"class":283},[240,358,359],{"class":312},"count",[240,361,316],{"class":283},[240,363,319],{"class":283},[240,365,322],{"class":283},[240,367,368],{"class":312},"#22c55e",[240,370,316],{"class":283},[240,372,330],{"class":287},[240,374,376],{"class":242,"line":375},11,[240,377,378],{"class":287},"    )\n",[240,380,382],{"class":242,"line":381},12,[240,383,385],{"emptyLinePlaceholder":384},true,"\n",[240,387,389,391,394,396,399,402,405,407,409,411,413,416,418,420,422],{"class":242,"line":388},13,[240,390,284],{"class":283},[240,392,393],{"class":287}," frame",[240,395,291],{"class":283},[240,397,398],{"class":294}," Style",[240,400,401],{"class":287},".",[240,403,404],{"class":294},"Color",[240,406,298],{"class":283},[240,408,398],{"class":294},[240,410,401],{"class":287},[240,412,404],{"class":294},[240,414,415],{"class":287},".variable(",[240,417,316],{"class":283},[240,419,313],{"class":312},[240,421,316],{"class":283},[240,423,424],{"class":287},")\n",[240,426,428,430,433,435,437,439,441,443,445,447,449,451,453,455,457],{"class":242,"line":427},14,[240,429,284],{"class":283},[240,431,432],{"class":287}," label",[240,434,291],{"class":283},[240,436,398],{"class":294},[240,438,401],{"class":287},[240,440,404],{"class":294},[240,442,298],{"class":283},[240,444,398],{"class":294},[240,446,401],{"class":287},[240,448,404],{"class":294},[240,450,415],{"class":287},[240,452,316],{"class":283},[240,454,338],{"class":312},[240,456,316],{"class":283},[240,458,424],{"class":287},[240,460,462,464,467,469,471,473,475,477,479,481,483,485,487,489,491],{"class":242,"line":461},15,[240,463,284],{"class":283},[240,465,466],{"class":287}," count",[240,468,291],{"class":283},[240,470,398],{"class":294},[240,472,401],{"class":287},[240,474,404],{"class":294},[240,476,298],{"class":283},[240,478,398],{"class":294},[240,480,401],{"class":287},[240,482,404],{"class":294},[240,484,415],{"class":287},[240,486,316],{"class":283},[240,488,359],{"class":312},[240,490,316],{"class":283},[240,492,424],{"class":287},[494,495,496,497,500,501,504,505,401],"p",{},"The app gives this stylesheet to the run: ",[237,498,499],{},"override def stylesheet = CounterStyles.colors"," in its ",[237,502,503],{},"TuiApp",". An element names a colour with ",[237,506,507],{},"Style.Color.variable(\"frame\")",[509,510,512],"h2",{"id":511},"custom-properties","Custom properties",[494,514,515,516,519,520,523,524,527,528,531,532,535,536,539,540,543,544,547,548,547,551,547,554,557,558,561],{},"kyo-ui declares a custom property only in a ",[237,517,518],{},"Stylesheet",": ",[237,521,522],{},"vars"," for the root, ",[237,525,526],{},"scopedVars"," for a class, an id or a data attribute. The run takes the stylesheet from ",[237,529,530],{},"TuiApp.stylesheet",", from ",[237,533,534],{},"Tui.run(options, sheet)",", or from the ",[237,537,538],{},"stylesheet"," of ",[237,541,542],{},"Headless.start",". A value is ",[237,545,546],{},"#hex",", ",[237,549,550],{},"rgb()",[237,552,553],{},"rgba()",[237,555,556],{},"transparent"," or ",[237,559,560],{},"var(--other, fallback)",". A name with no value gives no colour, and the log of the run has one warning for that name.",[509,563,565],{"id":564},"looks","Looks",[494,567,568,569,572,573,576,577,291],{},"A look (",[237,570,571],{},"tui4s.widgets.Theme",") is one value for the terminal and the web: the colours of the widgets, and the font, the corners and the spacing of the web. Two looks are built in, ",[237,574,575],{},"Theme.terminal"," and ",[237,578,579],{},"Theme.web",[229,581,584],{"className":231,"code":582,"filename":583,"language":234,"meta":235,"style":235},"    \u002F** The native web look: the system font of the browser, light colours, the\n      * dark colours under `prefers-color-scheme: dark`, and round corners.\n      *\u002F\n    val web: Theme = Theme(\n      name = \"web\",\n      colors = Palette(\n        accent = \"#2563eb\",\n        muted = \"#6b7280\",\n        border = \"#d1d5db\",\n        surface = \"#ffffff\",\n        selection = \"#dbeafe\",\n        success = \"#15803d\",\n        warning = \"#b45309\",\n        danger = \"#dc2626\",\n        background = \"#f8fafc\",\n        text = \"#111827\",\n      ),\n      dark = Present(\n        Palette(\n          accent = \"#60a5fa\",\n          muted = \"#9ca3af\",\n          border = \"#374151\",\n          surface = \"#1f2937\",\n          selection = \"#1e3a8a\",\n          success = \"#4ade80\",\n          warning = \"#fbbf24\",\n          danger = \"#f87171\",\n          background = \"#111827\",\n          text = \"#f3f4f6\",\n        ),\n      ),\n      font = Font(\n        \"system-ui, -apple-system, \\\"Segoe UI\\\", Roboto, sans-serif\",\n        16,\n      ),\n      corners = Corners.Rounded(6),\n      spacing = 0.5,\n    )\n","Theme.scala",[237,585,586,591,596,600,619,636,648,664,680,696,712,728,744,760,776,792,809,815,828,836,853,870,887,904,921,938,955,972,988,1005,1011,1016,1029,1053,1062,1067,1092,1105],{"__ignoreMap":235},[240,587,588],{"class":242,"line":243},[240,589,590],{"class":246},"    \u002F** The native web look: the system font of the browser, light colours, the\n",[240,592,593],{"class":242,"line":250},[240,594,595],{"class":246},"      * dark colours under `prefers-color-scheme: dark`, and round corners.\n",[240,597,598],{"class":242,"line":256},[240,599,277],{"class":246},[240,601,602,604,607,609,612,614,616],{"class":242,"line":262},[240,603,284],{"class":283},[240,605,606],{"class":287}," web",[240,608,291],{"class":283},[240,610,611],{"class":294}," Theme",[240,613,298],{"class":283},[240,615,611],{"class":294},[240,617,618],{"class":287},"(\n",[240,620,621,624,627,629,632,634],{"class":242,"line":268},[240,622,623],{"class":287},"      name ",[240,625,626],{"class":283},"=",[240,628,322],{"class":283},[240,630,631],{"class":312},"web",[240,633,316],{"class":283},[240,635,330],{"class":287},[240,637,638,641,643,646],{"class":242,"line":274},[240,639,640],{"class":287},"      colors ",[240,642,626],{"class":283},[240,644,645],{"class":294}," Palette",[240,647,618],{"class":287},[240,649,650,653,655,657,660,662],{"class":242,"line":280},[240,651,652],{"class":287},"        accent ",[240,654,626],{"class":283},[240,656,322],{"class":283},[240,658,659],{"class":312},"#2563eb",[240,661,316],{"class":283},[240,663,330],{"class":287},[240,665,666,669,671,673,676,678],{"class":242,"line":306},[240,667,668],{"class":287},"        muted ",[240,670,626],{"class":283},[240,672,322],{"class":283},[240,674,675],{"class":312},"#6b7280",[240,677,316],{"class":283},[240,679,330],{"class":287},[240,681,682,685,687,689,692,694],{"class":242,"line":333},[240,683,684],{"class":287},"        border ",[240,686,626],{"class":283},[240,688,322],{"class":283},[240,690,691],{"class":312},"#d1d5db",[240,693,316],{"class":283},[240,695,330],{"class":287},[240,697,698,701,703,705,708,710],{"class":242,"line":354},[240,699,700],{"class":287},"        surface ",[240,702,626],{"class":283},[240,704,322],{"class":283},[240,706,707],{"class":312},"#ffffff",[240,709,316],{"class":283},[240,711,330],{"class":287},[240,713,714,717,719,721,724,726],{"class":242,"line":375},[240,715,716],{"class":287},"        selection ",[240,718,626],{"class":283},[240,720,322],{"class":283},[240,722,723],{"class":312},"#dbeafe",[240,725,316],{"class":283},[240,727,330],{"class":287},[240,729,730,733,735,737,740,742],{"class":242,"line":381},[240,731,732],{"class":287},"        success ",[240,734,626],{"class":283},[240,736,322],{"class":283},[240,738,739],{"class":312},"#15803d",[240,741,316],{"class":283},[240,743,330],{"class":287},[240,745,746,749,751,753,756,758],{"class":242,"line":388},[240,747,748],{"class":287},"        warning ",[240,750,626],{"class":283},[240,752,322],{"class":283},[240,754,755],{"class":312},"#b45309",[240,757,316],{"class":283},[240,759,330],{"class":287},[240,761,762,765,767,769,772,774],{"class":242,"line":427},[240,763,764],{"class":287},"        danger ",[240,766,626],{"class":283},[240,768,322],{"class":283},[240,770,771],{"class":312},"#dc2626",[240,773,316],{"class":283},[240,775,330],{"class":287},[240,777,778,781,783,785,788,790],{"class":242,"line":461},[240,779,780],{"class":287},"        background ",[240,782,626],{"class":283},[240,784,322],{"class":283},[240,786,787],{"class":312},"#f8fafc",[240,789,316],{"class":283},[240,791,330],{"class":287},[240,793,795,798,800,802,805,807],{"class":242,"line":794},16,[240,796,797],{"class":287},"        text ",[240,799,626],{"class":283},[240,801,322],{"class":283},[240,803,804],{"class":312},"#111827",[240,806,316],{"class":283},[240,808,330],{"class":287},[240,810,812],{"class":242,"line":811},17,[240,813,814],{"class":287},"      ),\n",[240,816,818,821,823,826],{"class":242,"line":817},18,[240,819,820],{"class":287},"      dark ",[240,822,626],{"class":283},[240,824,825],{"class":294}," Present",[240,827,618],{"class":287},[240,829,831,834],{"class":242,"line":830},19,[240,832,833],{"class":294},"        Palette",[240,835,618],{"class":287},[240,837,839,842,844,846,849,851],{"class":242,"line":838},20,[240,840,841],{"class":287},"          accent ",[240,843,626],{"class":283},[240,845,322],{"class":283},[240,847,848],{"class":312},"#60a5fa",[240,850,316],{"class":283},[240,852,330],{"class":287},[240,854,856,859,861,863,866,868],{"class":242,"line":855},21,[240,857,858],{"class":287},"          muted ",[240,860,626],{"class":283},[240,862,322],{"class":283},[240,864,865],{"class":312},"#9ca3af",[240,867,316],{"class":283},[240,869,330],{"class":287},[240,871,873,876,878,880,883,885],{"class":242,"line":872},22,[240,874,875],{"class":287},"          border ",[240,877,626],{"class":283},[240,879,322],{"class":283},[240,881,882],{"class":312},"#374151",[240,884,316],{"class":283},[240,886,330],{"class":287},[240,888,890,893,895,897,900,902],{"class":242,"line":889},23,[240,891,892],{"class":287},"          surface ",[240,894,626],{"class":283},[240,896,322],{"class":283},[240,898,899],{"class":312},"#1f2937",[240,901,316],{"class":283},[240,903,330],{"class":287},[240,905,907,910,912,914,917,919],{"class":242,"line":906},24,[240,908,909],{"class":287},"          selection ",[240,911,626],{"class":283},[240,913,322],{"class":283},[240,915,916],{"class":312},"#1e3a8a",[240,918,316],{"class":283},[240,920,330],{"class":287},[240,922,924,927,929,931,934,936],{"class":242,"line":923},25,[240,925,926],{"class":287},"          success ",[240,928,626],{"class":283},[240,930,322],{"class":283},[240,932,933],{"class":312},"#4ade80",[240,935,316],{"class":283},[240,937,330],{"class":287},[240,939,941,944,946,948,951,953],{"class":242,"line":940},26,[240,942,943],{"class":287},"          warning ",[240,945,626],{"class":283},[240,947,322],{"class":283},[240,949,950],{"class":312},"#fbbf24",[240,952,316],{"class":283},[240,954,330],{"class":287},[240,956,958,961,963,965,968,970],{"class":242,"line":957},27,[240,959,960],{"class":287},"          danger ",[240,962,626],{"class":283},[240,964,322],{"class":283},[240,966,967],{"class":312},"#f87171",[240,969,316],{"class":283},[240,971,330],{"class":287},[240,973,975,978,980,982,984,986],{"class":242,"line":974},28,[240,976,977],{"class":287},"          background ",[240,979,626],{"class":283},[240,981,322],{"class":283},[240,983,804],{"class":312},[240,985,316],{"class":283},[240,987,330],{"class":287},[240,989,991,994,996,998,1001,1003],{"class":242,"line":990},29,[240,992,993],{"class":287},"          text ",[240,995,626],{"class":283},[240,997,322],{"class":283},[240,999,1000],{"class":312},"#f3f4f6",[240,1002,316],{"class":283},[240,1004,330],{"class":287},[240,1006,1008],{"class":242,"line":1007},30,[240,1009,1010],{"class":287},"        ),\n",[240,1012,1014],{"class":242,"line":1013},31,[240,1015,814],{"class":287},[240,1017,1019,1022,1024,1027],{"class":242,"line":1018},32,[240,1020,1021],{"class":287},"      font ",[240,1023,626],{"class":283},[240,1025,1026],{"class":294}," Font",[240,1028,618],{"class":287},[240,1030,1032,1035,1038,1041,1044,1046,1049,1051],{"class":242,"line":1031},33,[240,1033,1034],{"class":283},"        \"",[240,1036,1037],{"class":312},"system-ui, -apple-system, ",[240,1039,1040],{"class":287},"\\\"",[240,1042,1043],{"class":312},"Segoe UI",[240,1045,1040],{"class":287},[240,1047,1048],{"class":312},", Roboto, sans-serif",[240,1050,316],{"class":283},[240,1052,330],{"class":287},[240,1054,1056,1060],{"class":242,"line":1055},34,[240,1057,1059],{"class":1058},"sbssI","        16",[240,1061,330],{"class":287},[240,1063,1065],{"class":242,"line":1064},35,[240,1066,814],{"class":287},[240,1068,1070,1073,1075,1078,1080,1083,1086,1089],{"class":242,"line":1069},36,[240,1071,1072],{"class":287},"      corners ",[240,1074,626],{"class":283},[240,1076,1077],{"class":294}," Corners",[240,1079,401],{"class":287},[240,1081,1082],{"class":294},"Rounded",[240,1084,1085],{"class":287},"(",[240,1087,1088],{"class":1058},"6",[240,1090,1091],{"class":287},"),\n",[240,1093,1095,1098,1100,1103],{"class":242,"line":1094},37,[240,1096,1097],{"class":287},"      spacing ",[240,1099,626],{"class":283},[240,1101,1102],{"class":1058}," 0.5",[240,1104,330],{"class":287},[240,1106,1108],{"class":242,"line":1107},38,[240,1109,378],{"class":287},[494,1111,1112,1115,1116,1119,1120,1123,1124,547,1127,547,1130,547,1133,547,1136,547,1139,547,1142,547,1145,1148,1149,1152],{},[237,1113,1114],{},"Theme.palette"," gives the colours that a terminal reads. ",[237,1117,1118],{},"Theme.stylesheet"," gives all of the look to a web page. The widgets read the ",[237,1121,1122],{},"--tui4s-*"," properties (",[237,1125,1126],{},"--tui4s-accent",[237,1128,1129],{},"--tui4s-muted",[237,1131,1132],{},"--tui4s-border",[237,1134,1135],{},"--tui4s-surface",[237,1137,1138],{},"--tui4s-selection",[237,1140,1141],{},"--tui4s-success",[237,1143,1144],{},"--tui4s-warning",[237,1146,1147],{},"--tui4s-danger","). ",[237,1150,1151],{},"Colors.defaults"," has a value for each one.",[509,1154,1156],{"id":1155},"what-the-terminal-shows","What the terminal shows",[494,1158,1159,1160,547,1163,547,1166,1169,1170,1173],{},"A terminal cell has a character, a foreground colour, a background colour and a few text styles. A style property that the terminal does not show (",[237,1161,1162],{},"fontSize",[237,1164,1165],{},"hover",[237,1167,1168],{},"shadow",", ...) gives one warning in the log of the run, once for each name. In a test, ",[237,1171,1172],{},"Headless.awaitLog"," gives the lines.",[494,1175,1176,1177,1180,1181,1184],{},"The package Scaladoc of ",[237,1178,1179],{},"tui4s"," lists the honored and the ignored properties. A test (",[237,1182,1183],{},"StyleTableTest",") keeps that list correct.",[1186,1187,1188],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":235,"searchDepth":250,"depth":250,"links":1190},[1191,1192,1193],{"id":511,"depth":250,"text":512},{"id":564,"depth":250,"text":565},{"id":1155,"depth":250,"text":1156},"kyo-ui styles in the terminal, custom colour properties and the two built-in looks.","md",null,{},{"icon":56},{"title":53,"description":1194},"az0GeGSPTvqgBUX-IHN_KNk0UqgYeDc-Vwg9Xv35WTQ",[1202,1204],{"title":48,"path":49,"stem":50,"description":1203,"icon":51,"children":-1},"Positioned elements, modals with a focus trap, toasts, and the size of the terminal.",{"title":58,"path":59,"stem":60,"description":1205,"icon":61,"children":-1},"tui4s-use, plain functions over Kyo signals for the JVM and Scala.js; first, what needs no composable.",1792528754800]