[{"data":1,"prerenderedAt":6187},["ShallowReactive",2],{"content-\u002Fen\u002Fcomponents\u002Fapp-window":3,"content-en-fallback-\u002Fen\u002Fcomponents\u002Fapp-window":3289},{"id":4,"title":5,"body":6,"description":3277,"extension":3278,"meta":3279,"nav":3280,"navigation":3281,"path":3282,"seo":3283,"stem":3287,"__hash__":3288},"content_en\u002Fen\u002Fcomponents\u002Fapp-window.md","App Window",{"type":7,"value":8,"toc":3261},"minimark",[9,13,30,47,130,135,227,246,250,376,386,562,569,573,599,672,676,710,779,926,931,944,996,1003,1177,1199,1295,1329,1332,1423,1445,1449,1460,1523,1594,1747,1770,1774,1902,2002,2052,2056,2061,2396,2500,2595,2600,2737,2801,2828,2832,2838,3068,3072,3258],[10,11,5],"h1",{"id":12},"app-window",[14,15,16,20,21,25,26,29],"p",{},[17,18,19],"code",{},"FluereAppWindow"," provides the ",[22,23,24],"strong",{},"chrome of a window",": corner radius, border and shadow, the title bar (icon, title, subtitle, left header, center content, right header, back and pane-toggle buttons), the caption buttons in the top-right corner, and a content area that only owns the ",[22,27,28],{},"visible region",".",[14,31,32,33,38,39,42,43,46],{},"It maps to WinUI 3 \u002F Windows App SDK's ",[22,34,35],{},[17,36,37],{},"Microsoft.UI.Xaml.Controls.TitleBar"," (",[17,40,41],{},"microsoft-ui-xaml",") — a ",[22,44,45],{},"composite control"," — so the template, states and metrics follow it item by item:",[48,49,50,60,92,109],"ul",{},[51,52,53,56,57,29],"li",{},[22,54,55],{},"12-column template",": ",[17,58,59],{},"2 | Auto(back) | Auto(pane toggle) | Auto(left header) | 14(left header spacing) | Auto(icon) | Auto(title) | Auto(subtitle) | *(content) | Auto(right header) | 48(min drag region) | Auto(caption area)",[51,61,62,65,66,69,70,69,73,76,77,38,80,83,84,87,88,91],{},[22,63,64],{},"Two heights",": 32 only when ",[17,67,68],{},"Content"," \u002F ",[17,71,72],{},"LeftHeader",[17,74,75],{},"RightHeader"," are ",[22,78,79],{},"all empty",[17,81,82],{},"TitleBarCompactHeight","); otherwise 48 (",[17,85,86],{},"TitleBarExpandedHeight",", ",[17,89,90],{},"TitleBar.cpp#UpdateHeight",").",[51,93,94,97,98,101,102,69,105,108],{},[22,95,96],{},"Zero-duration state changes",": the source calls ",[17,99,100],{},"GoToState(..., false)"," and has no ",[17,103,104],{},"Storyboard",[17,106,107],{},"VisualTransition"," at all, so title-bar internals never animate.",[51,110,111,114,115,118,119,122,123,125,126,129],{},[22,112,113],{},"Dragging = non-client area plus punched holes",": the whole title bar is non-client, interactive elements become ",[17,116,117],{},"NonClientRegionKind::Passthrough"," holes, and the ",[17,120,121],{},"Icon"," uses its own ",[17,124,121],{}," region — it is ",[22,127,128],{},"not"," in the passthrough list, so the icon area stays draggable.",[131,132,134],"h2",{"id":133},"version-and-evidence-baseline","Version and evidence baseline",[136,137,138,151],"table",{},[139,140,141],"thead",{},[142,143,144,148],"tr",{},[145,146,147],"th",{},"Item",[145,149,150],{},"Value",[152,153,154,175,217],"tbody",{},[142,155,156,160],{},[157,158,159],"td",{},"Behavior baseline",[157,161,162,163,166,167,170,171,174],{},"tag ",[17,164,165],{},"winui3\u002Frelease\u002F2.0.1"," (commit ",[17,168,169],{},"978ab63",") — the ",[17,172,173],{},"WindowsAppSdkPackageVersion=2.0.1"," pinned by WinUI3 Gallery v2.9.3",[142,176,177,180],{},[157,178,179],{},"Template \u002F brushes",[157,181,182,166,185,188,189,192,193,196,197,69,200,76,203,206,207,210,211,76,214],{},[17,183,184],{},"winui3\u002Frelease\u002F2.5.1",[17,186,187],{},"ba3a8d5",") — the directory ",[22,190,191],{},"drifts"," between tags (",[17,194,195],{},"TitleBar.cpp"," +382 lines, ",[17,198,199],{},"AutoRefreshDragRegions",[17,201,202],{},"IsDragRegion",[17,204,205],{},"MUX_PUBLIC_V11","), but ",[17,208,209],{},"TitleBar.xaml"," and ",[17,212,213],{},"TitleBar_themeresources.xaml",[22,215,216],{},"byte-identical",[142,218,219,222],{},[157,220,221],{},"Key files",[157,223,224],{},[17,225,226],{},"src\u002Fcontrols\u002Fdev\u002FTitleBar\u002F{TitleBar.xaml,TitleBar_themeresources.xaml,TitleBar.idl,TitleBar.h,TitleBar.cpp,TitleBarAutomationPeer.cpp}",[228,229,230],"blockquote",{},[14,231,232,56,238,241,242,245],{},[22,233,234,237],{},[17,235,236],{},"perf2026"," is not adopted",[17,239,240],{},"TitleBar_themeresources_perf2026.xaml"," (new in 2.5.1) contains two real bugs (a renamed resource key whose reference was not updated, and the pane-toggle ",[17,243,244],{},"Disabled"," state painting the background onto the 16×16 icon instead of the button). This component follows the base file.",[131,247,249],{"id":248},"title-bar-six-slots-and-three-buttons","Title bar: six slots and three buttons",[136,251,252,265],{},[139,253,254],{},[142,255,256,259,262],{},[145,257,258],{},"Slot",[145,260,261],{},"WinUI equivalent",[145,263,264],{},"Notes",[152,266,267,289,303,324,338,355],{},[142,268,269,274,279],{},[157,270,271],{},[17,272,273],{},"#icon",[157,275,276],{},[17,277,278],{},"IconSource",[157,280,281,282,38,285,288],{},"Lives in a 16×16 ",[17,283,284],{},"Viewbox",[17,286,287],{},"TitleBarIconMaxWidth\u002FHeight",")",[142,290,291,296,300],{},[157,292,293],{},[17,294,295],{},"#left-header",[157,297,298],{},[17,299,72],{},[157,301,302],{},"Counts towards the 32 → 48 height switch; not a drag region",[142,304,305,310,314],{},[157,306,307],{},[17,308,309],{},"#titlebar-content",[157,311,312],{},[17,313,68],{},[157,315,316,319,320,323],{},[22,317,318],{},"Title-bar center"," (star column, centered by default); ",[17,321,322],{},"Compact"," switches it to left + 16 end margin",[142,325,326,331,335],{},[157,327,328],{},[17,329,330],{},"#right-header",[157,332,333],{},[17,334,75],{},[157,336,337],{},"Right-aligned; not a drag region",[142,339,340,345,348],{},[157,341,342],{},[17,343,344],{},"#titlebar",[157,346,347],{},"none (escape hatch)",[157,349,350,351,354],{},"Replaces the whole title bar; caption buttons are still rendered here (",[17,352,353],{},"showCaptionButtons"," can turn them off)",[142,356,357,366,369],{},[157,358,359,362,363,288],{},[17,360,361],{},"#content"," (alias ",[17,364,365],{},"#default",[157,367,368],{},"none (window body)",[157,370,371,372,375],{},"Application content: only the viewport (",[17,373,374],{},"overflow: clip","), scrolling belongs to the consumer",[14,377,378,379,382,383,91],{},"Any of the latter four pushes the title bar to 48. When ",[22,380,381],{},"exactly one"," of back \u002F pane-toggle is visible, the left-header spacing drops from 14 to 2 (",[17,384,385],{},"NegativeInsetSpacing",[387,388,390,397],"demo-block",{"title":389},"Header slots + back \u002F pane-toggle buttons",[391,392,394],"template",{"v-slot:preview":393},"",[395,396],"app-window-header-demo",{},[391,398,399],{"v-slot:code":393},[400,401,405],"pre",{"className":402,"code":403,"language":404,"meta":393,"style":393},"language-vue shiki shiki-themes github-light github-dark","\u003CFluereAppWindow\n  title=\"Header slots\"\n  :is-back-button-visible=\"true\"\n  :is-pane-toggle-button-visible=\"true\"\n  @back-requested=\"…\"\n  @pane-toggle-requested=\"…\"\n>\n  \u003Ctemplate #titlebar-content>\n    \u003CFluereInput placeholder=\"Find a setting\" aria-label=\"Find a setting\" class=\"w-[220px]\" \u002F>\n  \u003C\u002Ftemplate>\n  \u003Ctemplate #right-header>\n    \u003CFluereButton appearance=\"subtle\" icon-only :icon=\"FluentIconPerson24Regular\" aria-label=\"Account\" \u002F>\n  \u003C\u002Ftemplate>\n  \u003Ctemplate #content>…\u003C\u002Ftemplate>\n\u003C\u002FFluereAppWindow>\n","vue",[17,406,407,420,434,455,471,489,505,511,517,523,529,535,541,546,552],{"__ignoreMap":393},[408,409,412,416],"span",{"class":410,"line":411},"line",1,[408,413,415],{"class":414},"sVt8B","\u003C",[408,417,419],{"class":418},"s9eBZ","FluereAppWindow\n",[408,421,423,427,430],{"class":410,"line":422},2,[408,424,426],{"class":425},"sScJk","  title",[408,428,429],{"class":414},"=",[408,431,433],{"class":432},"sZZnC","\"Header slots\"\n",[408,435,437,440,443,445,448,452],{"class":410,"line":436},3,[408,438,439],{"class":414},"  :",[408,441,442],{"class":425},"is-back-button-visible",[408,444,429],{"class":414},[408,446,447],{"class":432},"\"",[408,449,451],{"class":450},"sj4cs","true",[408,453,454],{"class":432},"\"\n",[408,456,458,460,463,465,467,469],{"class":410,"line":457},4,[408,459,439],{"class":414},[408,461,462],{"class":425},"is-pane-toggle-button-visible",[408,464,429],{"class":414},[408,466,447],{"class":432},[408,468,451],{"class":450},[408,470,454],{"class":432},[408,472,474,477,480,482,484,487],{"class":410,"line":473},5,[408,475,476],{"class":414},"  @",[408,478,479],{"class":425},"back-requested",[408,481,429],{"class":414},[408,483,447],{"class":432},[408,485,486],{"class":414},"…",[408,488,454],{"class":432},[408,490,492,494,497,499,501,503],{"class":410,"line":491},6,[408,493,476],{"class":414},[408,495,496],{"class":425},"pane-toggle-requested",[408,498,429],{"class":414},[408,500,447],{"class":432},[408,502,486],{"class":414},[408,504,454],{"class":432},[408,506,508],{"class":410,"line":507},7,[408,509,510],{"class":414},">\n",[408,512,514],{"class":410,"line":513},8,[408,515,516],{"class":414},"  \u003Ctemplate #titlebar-content>\n",[408,518,520],{"class":410,"line":519},9,[408,521,522],{"class":414},"    \u003CFluereInput placeholder=\"Find a setting\" aria-label=\"Find a setting\" class=\"w-[220px]\" \u002F>\n",[408,524,526],{"class":410,"line":525},10,[408,527,528],{"class":414},"  \u003C\u002Ftemplate>\n",[408,530,532],{"class":410,"line":531},11,[408,533,534],{"class":414},"  \u003Ctemplate #right-header>\n",[408,536,538],{"class":410,"line":537},12,[408,539,540],{"class":414},"    \u003CFluereButton appearance=\"subtle\" icon-only :icon=\"FluentIconPerson24Regular\" aria-label=\"Account\" \u002F>\n",[408,542,544],{"class":410,"line":543},13,[408,545,528],{"class":414},[408,547,549],{"class":410,"line":548},14,[408,550,551],{"class":414},"  \u003Ctemplate #content>…\u003C\u002Ftemplate>\n",[408,553,555,558,560],{"class":410,"line":554},15,[408,556,557],{"class":414},"\u003C\u002F",[408,559,19],{"class":418},[408,561,510],{"class":414},[14,563,564,565,568],{},"Inputs and buttons placed in the title bar are ",[22,566,567],{},"not drag regions"," — pressing them never starts a window drag (the equivalent of WinUI punching that area into the passthrough list).",[131,570,572],{"id":571},"content-area-viewport-only","Content area: viewport only",[14,574,575,576,210,578,581,582,585,586,589,590,69,593,69,596,29],{},"The content area is \"window height minus title-bar height\" with ",[17,577,374],{},[17,579,580],{},"min-block-size: 0",": it ",[22,583,584],{},"only defines the visible boundary","; scrolling is up to the consumer (put a ",[17,587,588],{},"FluereScrollView",", or your own scroller, inside). Sizing is up to the consumer too — the component never writes ",[17,591,592],{},"position",[17,594,595],{},"inset",[17,597,598],{},"transform",[387,600,602,607],{"title":601},"Basic: icon + title + subtitle + content",[391,603,604],{"v-slot:preview":393},[605,606],"app-window-basic-demo",{},[391,608,609],{"v-slot:code":393},[400,610,612],{"className":402,"code":611,"language":404,"meta":393,"style":393},"\u003CFluereAppWindow class=\"h-[300px] w-full max-w-[560px]\" title=\"Settings\" subtitle=\"21RU0000CD\">\n  \u003Ctemplate #icon>\n    \u003CFluentIconCloudArrowUp24Regular :size=\"16\" \u002F>\n  \u003C\u002Ftemplate>\n  \u003Ctemplate #content>…\u003C\u002Ftemplate>\n\u003C\u002FFluereAppWindow>\n",[17,613,614,646,651,656,660,664],{"__ignoreMap":393},[408,615,616,618,620,623,625,628,631,633,636,639,641,644],{"class":410,"line":411},[408,617,415],{"class":414},[408,619,19],{"class":418},[408,621,622],{"class":425}," class",[408,624,429],{"class":414},[408,626,627],{"class":432},"\"h-[300px] w-full max-w-[560px]\"",[408,629,630],{"class":425}," title",[408,632,429],{"class":414},[408,634,635],{"class":432},"\"Settings\"",[408,637,638],{"class":425}," subtitle",[408,640,429],{"class":414},[408,642,643],{"class":432},"\"21RU0000CD\"",[408,645,510],{"class":414},[408,647,648],{"class":410,"line":422},[408,649,650],{"class":414},"  \u003Ctemplate #icon>\n",[408,652,653],{"class":410,"line":436},[408,654,655],{"class":414},"    \u003CFluentIconCloudArrowUp24Regular :size=\"16\" \u002F>\n",[408,657,658],{"class":410,"line":457},[408,659,528],{"class":414},[408,661,662],{"class":410,"line":473},[408,663,551],{"class":414},[408,665,666,668,670],{"class":410,"line":491},[408,667,557],{"class":414},[408,669,19],{"class":418},[408,671,510],{"class":414},[131,673,675],{"id":674},"caption-buttons-pure-logic-proxying","Caption buttons: pure logic proxying",[14,677,678,681,682,685,686,56,689,69,692,69,695,69,698,701,702,705,706,709],{},[17,679,680],{},"FluereCaptionButtons"," renders three native ",[17,683,684],{},"\u003Cbutton>","s (minimize, maximize\u002Frestore, close) and ",[22,687,688],{},"only emits",[17,690,691],{},"minimize",[17,693,694],{},"maximize",[17,696,697],{},"restore",[17,699,700],{},"close",", plus ",[17,703,704],{},"v-model:maximized"," to hand the \"maximize ⇄ restore\" intent back. The component itself ",[22,707,708],{},"never changes any window state"," — that is exactly the 0.5.2 \"logic proxy\" contract.",[136,711,712,725],{},[139,713,714],{},[142,715,716,719,722],{},[145,717,718],{},"Capability flag",[145,720,721],{},"Behavior",[145,723,724],{},"Basis",[152,726,727,746,761],{},[142,728,729,734,740],{},[157,730,731],{},[17,732,733],{},"isMinimizable",[157,735,736,737],{},"false ⇒ button ",[22,738,739],{},"hidden",[157,741,742,743],{},"No A-level source for the system behavior; recorded as an ",[22,744,745],{},"assumption",[142,747,748,753,758],{},[157,749,750],{},[17,751,752],{},"isMaximizable",[157,754,736,755,757],{},[22,756,739],{},", glyph no longer swaps",[157,759,760],{},"same",[142,762,763,768,777],{},[157,764,765],{},[17,766,767],{},"isClosable",[157,769,736,770,773,774,288],{},[22,771,772],{},"kept but disabled"," (native ",[17,775,776],{},"disabled",[157,778,760],{},[387,780,782,787],{"title":781},"Caption buttons + capability flags + event log",[391,783,784],{"v-slot:preview":393},[785,786],"app-window-caption-demo",{},[391,788,789],{"v-slot:code":393},[400,790,792],{"className":402,"code":791,"language":404,"meta":393,"style":393},"\u003CFluereCaptionButtons\n  v-model:maximized=\"maximized\"\n  :is-minimizable=\"isMinimizable\"\n  :is-maximizable=\"isMaximizable\"\n  :is-closable=\"isClosable\"\n  @minimize=\"…\"\n  @maximize=\"…\"\n  @restore=\"…\"\n  @close=\"…\"\n\u002F>\n",[17,793,794,801,820,835,850,865,879,893,907,921],{"__ignoreMap":393},[408,795,796,798],{"class":410,"line":411},[408,797,415],{"class":414},[408,799,800],{"class":418},"FluereCaptionButtons\n",[408,802,803,806,809,812,814,816,818],{"class":410,"line":422},[408,804,805],{"class":425},"  v-model",[408,807,808],{"class":414},":",[408,810,811],{"class":425},"maximized",[408,813,429],{"class":414},[408,815,447],{"class":432},[408,817,811],{"class":414},[408,819,454],{"class":432},[408,821,822,824,827,829,831,833],{"class":410,"line":436},[408,823,439],{"class":414},[408,825,826],{"class":425},"is-minimizable",[408,828,429],{"class":414},[408,830,447],{"class":432},[408,832,733],{"class":414},[408,834,454],{"class":432},[408,836,837,839,842,844,846,848],{"class":410,"line":457},[408,838,439],{"class":414},[408,840,841],{"class":425},"is-maximizable",[408,843,429],{"class":414},[408,845,447],{"class":432},[408,847,752],{"class":414},[408,849,454],{"class":432},[408,851,852,854,857,859,861,863],{"class":410,"line":473},[408,853,439],{"class":414},[408,855,856],{"class":425},"is-closable",[408,858,429],{"class":414},[408,860,447],{"class":432},[408,862,767],{"class":414},[408,864,454],{"class":432},[408,866,867,869,871,873,875,877],{"class":410,"line":491},[408,868,476],{"class":414},[408,870,691],{"class":425},[408,872,429],{"class":414},[408,874,447],{"class":432},[408,876,486],{"class":414},[408,878,454],{"class":432},[408,880,881,883,885,887,889,891],{"class":410,"line":507},[408,882,476],{"class":414},[408,884,694],{"class":425},[408,886,429],{"class":414},[408,888,447],{"class":432},[408,890,486],{"class":414},[408,892,454],{"class":432},[408,894,895,897,899,901,903,905],{"class":410,"line":513},[408,896,476],{"class":414},[408,898,697],{"class":425},[408,900,429],{"class":414},[408,902,447],{"class":432},[408,904,486],{"class":414},[408,906,454],{"class":432},[408,908,909,911,913,915,917,919],{"class":410,"line":519},[408,910,476],{"class":414},[408,912,700],{"class":425},[408,914,429],{"class":414},[408,916,447],{"class":432},[408,918,486],{"class":414},[408,920,454],{"class":432},[408,922,923],{"class":410,"line":525},[408,924,925],{"class":414},"\u002F>\n",[927,928,930],"h3",{"id":929},"caption-button-evidence-gaps","Caption-button evidence gaps",[14,932,933,934,937,938,941,942,808],{},"WinUI 3's ",[17,935,936],{},"TitleBar"," ",[22,939,940],{},"has no caption buttons in its template"," (all 12 columns read; no minimize \u002F maximize \u002F close). They are drawn by the system (DWM) and have no XAML implementation in ",[17,943,41],{},[48,945,946,964,971],{},[51,947,948,951,952,955,956,959,960,963],{},[17,949,950],{},"CWindowChrome.cpp"," only makes the button background fully transparent and maintains the caption-region hit-test rectangles — ",[22,953,954],{},"no drawing code","; ",[17,957,958],{},"enum class CaptionButtonState"," in ",[17,961,962],{},"CWindowChrome.h"," has no usage anywhere.",[51,965,966,967,970],{},"Microsoft's own ",[17,968,969],{},"specs\u002FTitleBar\u002Ftitlebar-functional-spec.md:47-48"," states \"WinUI TitleBar does not handle Caption Buttons … handled by the AppWindow TitleBar\".",[51,972,973,974,977,978,981,982,985,986,937,989,992,993,29],{},"The only caption visual in the tree is the legacy system-chrome ",[17,975,976],{},"x:Key=\"WindowCaptionButton\""," style (",[17,979,980],{},"src\u002Fdxaml\u002Fxcp\u002Fdxaml\u002Fthemes\u002Fgeneric.xaml:15697-15786",", a 40×28 button, a 9×9 stroked ",[17,983,984],{},"Path",", and the two ",[17,987,988],{},"WindowStateNormal\u002FMaximized",[17,990,991],{},"Path.Data"," strings). This component ",[22,994,995],{},"only reuses its glyph geometry",[14,997,998,999,1002],{},"Everything below is therefore a ",[22,1000,1001],{},"system metric",", cross-checked against 1:1 Windows 11 screenshots and exposed as overridable component-local variables:",[136,1004,1005,1017],{},[139,1006,1007],{},[142,1008,1009,1012,1014],{},[145,1010,1011],{},"Quantity",[145,1013,150],{},[145,1015,1016],{},"Source and verification",[152,1018,1019,1043,1057,1101,1114,1133,1163],{},[142,1020,1021,1024,1029],{},[157,1022,1023],{},"Button width × height",[157,1025,1026],{},[22,1027,1028],{},"46 × 32",[157,1030,1031,1034,1035,1038,1039,1042],{},[17,1032,1033],{},"TitleBarRightPaddingWidth"," is overridden at runtime by ",[17,1036,1037],{},"AppWindowTitleBar.RightInset()"," (A-level lead); measured glyph-center pitch ",[22,1040,1041],{},"46.0 \u002F 46.0"," in the reference screenshot",[142,1044,1045,1048,1054],{},[157,1046,1047],{},"Glyph box \u002F line width",[157,1049,1050,1053],{},[22,1051,1052],{},"10 \u002F 1px"," (close cross 1.1px)",[157,1055,1056],{},"Measured: minimize = 10×1 bar, maximize = 10×10 stroked square, close = 10×10 cross; the 1.1px close value is justified in \"Glyph calibration\" below",[142,1058,1059,1062,1073],{},[157,1060,1061],{},"Glyph ink",[157,1063,1064,1072],{},[22,1065,1066,69,1069],{},[17,1067,1068],{},"#000000",[17,1070,1071],{},"#FFFFFF"," (light \u002F dark)",[157,1074,1075,1076,1079,1080,1079,1083,38,1086,1089,1090,1093,1094,1097,1098],{},"Legacy ",[17,1077,1078],{},"WindowCaptionForeground"," → ",[17,1081,1082],{},"SystemControlForegroundBaseHighBrush",[17,1084,1085],{},"SystemBaseHighColor",[17,1087,1088],{},"generic.xaml:263"," + ",[17,1091,1092],{},":4132","); no matching token (",[17,1095,1096],{},"colorNeutralForeground1"," is #242424 in light), so it becomes ",[17,1099,1100],{},"--fui-caption-buttons-glyph-color",[142,1102,1103,1106,1111],{},[157,1104,1105],{},"Vertical placement",[157,1107,1108],{},[22,1109,1110],{},"top-aligned",[157,1112,1113],{},"With a 48-high title bar the back-arrow ink center is y≈23.5 (= 48\u002F2) while the caption glyph center is y≈15.5 (= 32\u002F2) ⇒ the buttons occupy only the top 32",[142,1115,1116,1119,1127],{},[157,1117,1118],{},"Hover \u002F pressed fill",[157,1120,1121,69,1124],{},[17,1122,1123],{},"colorSubtleBackgroundHover",[17,1125,1126],{},"…Pressed",[157,1128,1129,1130,288],{},"The same A-level brush family as the title-bar buttons (",[17,1131,1132],{},"SubtleFillColorSecondary\u002FTertiary",[142,1134,1135,1138,1145],{},[157,1136,1137],{},"Close hover red",[157,1139,1140],{},[22,1141,1142],{},[17,1143,1144],{},"#C42B1C",[157,1146,1147,1148,38,1151,1154,1155,1158,1159,1162],{},"WinUI system color ",[17,1149,1150],{},"SystemFillColorCritical",[17,1152,1153],{},"Common_themeresources_any.xaml:282","), identical to Windows 11; the legacy ",[17,1156,1157],{},"#e81123"," is ",[22,1160,1161],{},"defined but never referenced"," and cannot be used as evidence",[142,1164,1165,1168,1174],{},[157,1166,1167],{},"Close pressed red",[157,1169,1170,1173],{},[17,1171,1172],{},"colorStatusDangerBackground3Hover"," (#B10E1C)",[157,1175,1176],{},"No source at all; nearest semantic token",[14,1178,1179,1180,1183,1184,1089,1187,1190,1191,1194,1195,1198],{},"Glyph calibration (1:1 frozen frames vs. the Windows 11 reference screenshot, scored by per-pixel ",[22,1181,1182],{},"mean absolute ink difference Δ",", lower = closer; scripts ",[17,1185,1186],{},"temp\u002Fglyph-lab.mjs",[17,1188,1189],{},"temp\u002Fglyph-lab-compare.py"," stay in ",[17,1192,1193],{},"temp\u002F",", the conclusions live in ",[17,1196,1197],{},"packages\u002Fui\u002Fsrc\u002Fapp-window\u002Fconstants.ts"," and the component comments):",[136,1200,1201,1217],{},[139,1202,1203],{},[142,1204,1205,1208,1211,1214],{},[145,1206,1207],{},"Glyph",[145,1209,1210],{},"Settled value",[145,1212,1213],{},"Δ",[145,1215,1216],{},"Rejected candidates",[152,1218,1219,1244,1269],{},[142,1220,1221,1224,1233,1238],{},[157,1222,1223],{},"Minimize",[157,1225,1226,38,1229,1232],{},[17,1227,1228],{},"M0 5.5H10",[17,1230,1231],{},"butt","; ink lands on the 6th pixel row, 0.5px below center)",[157,1234,1235],{},[22,1236,1237],{},"0.00",[157,1239,1240,1243],{},[17,1241,1242],{},"M0.5 5H9.5"," → 16.11",[142,1245,1246,1249,1257,1262],{},[157,1247,1248],{},"Maximize",[157,1250,1251,1252,38,1255,288],{},"10×10 box, centerline inset 0.5, corner ",[17,1253,1254],{},"r0.25",[17,1256,1231],{},[157,1258,1259],{},[22,1260,1261],{},"2.51",[157,1263,1264,1265,1268],{},"square corners → 3.38; legacy ",[17,1266,1267],{},"r≈1.67px"," → 9.72",[142,1270,1271,1274,1287,1292],{},[157,1272,1273],{},"Close",[157,1275,1276,1277,1280,1281,87,1284],{},"endpoints ",[17,1278,1279],{},"±0.55"," (= width÷2 so the round cap fills the box), width ",[22,1282,1283],{},"1.1",[17,1285,1286],{},"round",[157,1288,1289],{},[22,1290,1291],{},"3.19",[157,1293,1294],{},"width 1.0 → 15.74; width 1.2 → 11.08",[14,1296,1297,1298,1304,1305,1312,1313,1089,1316,1318,1319,1089,1322,1324,1325,1328],{},"Two systematic fixes (the root cause of the former \"clunky \u002F broken\" look): ① ",[22,1299,1300,1301],{},"dropping ",[17,1302,1303],{},"shape-rendering: crispEdges"," — it disables anti-aliasing, turning 45° strokes into hard stair-steps and quantizing the rounded corners into blocks (Δ15.7 vs Δ3.2); ② ",[22,1306,1307,1308,1311],{},"moving line width and line cap onto the per-glyph ",[17,1309,1310],{},"path"," presentation attributes"," (minimize \u002F maximize ",[17,1314,1315],{},"1px",[17,1317,1231],{},", close ",[17,1320,1321],{},"1.1px",[17,1323,1286],{},") — CSS rules outrank presentation attributes, so keeping them in ",[17,1326,1327],{},"\u003Cstyle scoped>"," would silently override the per-glyph values.",[14,1330,1331],{},"To match a real machine exactly, override these local variables:",[400,1333,1337],{"className":1334,"code":1335,"language":1336,"meta":393,"style":393},"language-css shiki shiki-themes github-light github-dark",".my-caption-buttons {\n  --fui-caption-buttons-button-width: 46px;\n  --fui-caption-buttons-glyph-size: 10px;\n  --fui-caption-buttons-glyph-color: #000000; \u002F* #ffffff in dark *\u002F\n  --fui-caption-buttons-close-hover: #c42b1c;\n  --fui-caption-buttons-close-pressed: #b22b26;\n}\n","css",[17,1338,1339,1347,1365,1379,1394,1406,1418],{"__ignoreMap":393},[408,1340,1341,1344],{"class":410,"line":411},[408,1342,1343],{"class":425},".my-caption-buttons",[408,1345,1346],{"class":414}," {\n",[408,1348,1349,1353,1355,1358,1362],{"class":410,"line":422},[408,1350,1352],{"class":1351},"s4XuR","  --fui-caption-buttons-button-width",[408,1354,56],{"class":414},[408,1356,1357],{"class":450},"46",[408,1359,1361],{"class":1360},"szBVR","px",[408,1363,1364],{"class":414},";\n",[408,1366,1367,1370,1372,1375,1377],{"class":410,"line":436},[408,1368,1369],{"class":1351},"  --fui-caption-buttons-glyph-size",[408,1371,56],{"class":414},[408,1373,1374],{"class":450},"10",[408,1376,1361],{"class":1360},[408,1378,1364],{"class":414},[408,1380,1381,1384,1386,1388,1390],{"class":410,"line":457},[408,1382,1383],{"class":1351},"  --fui-caption-buttons-glyph-color",[408,1385,56],{"class":414},[408,1387,1068],{"class":450},[408,1389,955],{"class":414},[408,1391,1393],{"class":1392},"sJ8bj","\u002F* #ffffff in dark *\u002F\n",[408,1395,1396,1399,1401,1404],{"class":410,"line":473},[408,1397,1398],{"class":1351},"  --fui-caption-buttons-close-hover",[408,1400,56],{"class":414},[408,1402,1403],{"class":450},"#c42b1c",[408,1405,1364],{"class":414},[408,1407,1408,1411,1413,1416],{"class":410,"line":491},[408,1409,1410],{"class":1351},"  --fui-caption-buttons-close-pressed",[408,1412,56],{"class":414},[408,1414,1415],{"class":450},"#b22b26",[408,1417,1364],{"class":414},[408,1419,1420],{"class":410,"line":507},[408,1421,1422],{"class":414},"}\n",[228,1424,1425],{},[14,1426,1427,1428,1431,1432,69,1435,69,1438,69,1441,1444],{},"Glyph ",[22,1429,1430],{},"line width \u002F line cap \u002F path"," are deliberately not local variables: they interlock with the path geometry (endpoint = width ÷ 2) and differ per glyph, so overriding one of them breaks the box alignment — use the ",[17,1433,1434],{},"minimize-icon",[17,1436,1437],{},"maximize-icon",[17,1439,1440],{},"restore-icon",[17,1442,1443],{},"close-icon"," slots to swap glyphs instead.",[131,1446,1448],{"id":1447},"dragging-events-only","Dragging: events only",[14,1450,1451,1452,1455,1456,1459],{},"With ",[17,1453,1454],{},"draggable"," (default true), pressing the title bar ",[22,1457,1458],{},"outside interactive regions"," emits:",[136,1461,1462,1472],{},[139,1463,1464],{},[142,1465,1466,1469],{},[145,1467,1468],{},"Event",[145,1470,1471],{},"Payload",[152,1473,1474,1486,1498,1510],{},[142,1475,1476,1481],{},[157,1477,1478],{},[17,1479,1480],{},"dragStart",[157,1482,1483],{},[17,1484,1485],{},"{ pointerId, clientX, clientY }",[142,1487,1488,1493],{},[157,1489,1490],{},[17,1491,1492],{},"dragMove",[157,1494,1495],{},[17,1496,1497],{},"{ pointerId, clientX, clientY, deltaX, deltaY, totalDeltaX, totalDeltaY }",[142,1499,1500,1505],{},[157,1501,1502],{},[17,1503,1504],{},"dragEnd",[157,1506,1507],{},[17,1508,1509],{},"{ pointerId, clientX, clientY, totalDeltaX, totalDeltaY, canceled }",[142,1511,1512,1517],{},[157,1513,1514],{},[17,1515,1516],{},"titlebarDoubleClick",[157,1518,1519,1522],{},[17,1520,1521],{},"{ clientX, clientY }"," (the system behavior is toggling maximize; the component does not change state)",[48,1524,1525,1541,1553,1563,1570],{},[51,1526,1527,38,1530,1533,1534,38,1537,1540],{},[22,1528,1529],{},"Per-event deltas",[17,1531,1532],{},"deltaX\u002FdeltaY",") suit incremental updates; ",[22,1535,1536],{},"totals",[17,1538,1539],{},"totalDeltaX\u002FtotalDeltaY",") can be applied straight to the drag origin.",[51,1542,1543,69,1546,1549,1550,29],{},[17,1544,1545],{},"Esc",[17,1547,1548],{},"pointercancel"," \u002F losing pointer capture ⇒ ",[17,1551,1552],{},"dragEnd.canceled = true",[51,1554,1555,1556,1559,1560,29],{},"Pressing inside left header \u002F center \u002F right header \u002F back \u002F pane toggle \u002F caption buttons \u002F any native interactive element, or inside an element carrying ",[17,1557,1558],{},"data-fui-app-window-drag-exempt"," ⇒ ",[22,1561,1562],{},"no drag starts",[51,1564,1565,1566,1569],{},"Title-bar text is ",[22,1567,1568],{},"not selectable"," while dragging (it is a non-client area in WinUI).",[51,1571,1451,1572,1575,1576,69,1578,937,1580,1582,1583,1586,1587,1590,1591,29],{},[17,1573,1574],{},"roundToInteger"," (default false), ",[17,1577,1492],{},[17,1579,1504],{},[22,1581,1536],{}," round to whole numbers and ",[17,1584,1585],{},"delta"," is the difference between two consecutive rounded totals — so an outer CSS ",[17,1588,1589],{},"translate"," stays integer (no sub-pixel blur) with ",[22,1592,1593],{},"no accumulated rounding error",[387,1595,1597,1602],{"title":1596},"Position owned by the shell (component only emits), carried by translate",[391,1598,1599],{"v-slot:preview":393},[1600,1601],"app-window-drag-demo",{},[391,1603,1604],{"v-slot:code":393},[400,1605,1607],{"className":402,"code":1606,"language":404,"meta":393,"style":393},"\u003CFluereAppWindow\n  class=\"absolute h-[200px] w-[380px] transition-[translate,border-radius] duration-150\"\n  :style=\"{ translate: `${x}px ${y}px` }\"\n  :maximized=\"maximized\"\n  :round-to-integer=\"true\"\n  @drag-start=\"onDragStart\"\n  @drag-move=\"onDragMove\"\n  @titlebar-double-click=\"maximized = !maximized\"\n\u002F>\n",[17,1608,1609,1615,1625,1659,1673,1688,1704,1720,1743],{"__ignoreMap":393},[408,1610,1611,1613],{"class":410,"line":411},[408,1612,415],{"class":414},[408,1614,419],{"class":418},[408,1616,1617,1620,1622],{"class":410,"line":422},[408,1618,1619],{"class":425},"  class",[408,1621,429],{"class":414},[408,1623,1624],{"class":432},"\"absolute h-[200px] w-[380px] transition-[translate,border-radius] duration-150\"\n",[408,1626,1627,1629,1632,1634,1636,1639,1642,1645,1648,1651,1654,1657],{"class":410,"line":436},[408,1628,439],{"class":414},[408,1630,1631],{"class":425},"style",[408,1633,429],{"class":414},[408,1635,447],{"class":432},[408,1637,1638],{"class":414},"{ translate: ",[408,1640,1641],{"class":432},"`${",[408,1643,1644],{"class":414},"x",[408,1646,1647],{"class":432},"}px ${",[408,1649,1650],{"class":414},"y",[408,1652,1653],{"class":432},"}px`",[408,1655,1656],{"class":414}," }",[408,1658,454],{"class":432},[408,1660,1661,1663,1665,1667,1669,1671],{"class":410,"line":457},[408,1662,439],{"class":414},[408,1664,811],{"class":425},[408,1666,429],{"class":414},[408,1668,447],{"class":432},[408,1670,811],{"class":414},[408,1672,454],{"class":432},[408,1674,1675,1677,1680,1682,1684,1686],{"class":410,"line":473},[408,1676,439],{"class":414},[408,1678,1679],{"class":425},"round-to-integer",[408,1681,429],{"class":414},[408,1683,447],{"class":432},[408,1685,451],{"class":450},[408,1687,454],{"class":432},[408,1689,1690,1692,1695,1697,1699,1702],{"class":410,"line":491},[408,1691,476],{"class":414},[408,1693,1694],{"class":425},"drag-start",[408,1696,429],{"class":414},[408,1698,447],{"class":432},[408,1700,1701],{"class":414},"onDragStart",[408,1703,454],{"class":432},[408,1705,1706,1708,1711,1713,1715,1718],{"class":410,"line":507},[408,1707,476],{"class":414},[408,1709,1710],{"class":425},"drag-move",[408,1712,429],{"class":414},[408,1714,447],{"class":432},[408,1716,1717],{"class":414},"onDragMove",[408,1719,454],{"class":432},[408,1721,1722,1724,1727,1729,1731,1734,1736,1739,1741],{"class":410,"line":513},[408,1723,476],{"class":414},[408,1725,1726],{"class":425},"titlebar-double-click",[408,1728,429],{"class":414},[408,1730,447],{"class":432},[408,1732,1733],{"class":414},"maximized ",[408,1735,429],{"class":1360},[408,1737,1738],{"class":1360}," !",[408,1740,811],{"class":414},[408,1742,454],{"class":432},[408,1744,1745],{"class":410,"line":519},[408,1746,925],{"class":414},[228,1748,1749],{},[14,1750,1751,56,1763,1765,1766,1769],{},[22,1752,1753,1754,1756,1757,69,1760],{},"Why ",[17,1755,1589],{}," instead of ",[17,1758,1759],{},"left",[17,1761,1762],{},"top",[17,1764,1589],{}," runs on the compositor and does not trigger reflow \u002F repaint, keeping the drag smooth; with ",[17,1767,1768],{},":round-to-integer=\"true\""," the offset stays a whole number, so there is no blur or jitter from sub-pixel values.",[131,1771,1773],{"id":1772},"states-and-integrated-styling","States and integrated styling",[136,1775,1776,1789],{},[139,1777,1778],{},[142,1779,1780,1783,1786],{},[145,1781,1782],{},"State",[145,1784,1785],{},"Expressed by",[145,1787,1788],{},"Implementation",[152,1790,1791,1812,1838,1857,1883],{},[142,1792,1793,1796,1799],{},[157,1794,1795],{},"rest \u002F hover \u002F pressed",[157,1797,1798],{},"back, pane toggle, caption buttons",[157,1800,1801,69,1804,69,1807,38,1809,288],{},[17,1802,1803],{},"colorSubtleBackground",[17,1805,1806],{},"…Hover",[17,1808,1126],{},[17,1810,1811],{},"SubtleFillColor*",[142,1813,1814,1816,1824],{},[157,1815,776],{},[157,1817,1818,69,1821],{},[17,1819,1820],{},"isBackButtonEnabled=false",[17,1822,1823],{},"isClosable=false",[157,1825,1826,1089,1829,38,1832,69,1835,288],{},[17,1827,1828],{},"colorNeutralBackgroundDisabled",[17,1830,1831],{},"colorNeutralForegroundDisabled",[17,1833,1834],{},"ControlFillColorDisabledBrush",[17,1836,1837],{},"TextFillColorDisabledBrush",[142,1839,1840,1843,1846],{},[157,1841,1842],{},"focus",[157,1844,1845],{},"Tab onto a button",[157,1847,1848,1849,1852,1853,1856],{},"WinUI double-layer focus rectangle: 2px ",[17,1850,1851],{},"colorStrokeFocus2"," outside, 1px ",[17,1854,1855],{},"colorStrokeFocus1"," inside",[142,1858,1859,1862,1867],{},[157,1860,1861],{},"inactive",[157,1863,1864],{},[17,1865,1866],{},"active=false",[157,1868,1869,1870,38,1873,1876,1877,38,1880,288],{},"title \u002F subtitle switch to ",[17,1871,1872],{},"colorNeutralForeground3",[17,1874,1875],{},"TitleBarDeactivatedForegroundBrush","); icon \u002F left header \u002F center \u002F right header get ",[17,1878,1879],{},"Opacity=0.5",[17,1881,1882],{},"TitleBarDeactivatedOpacity",[142,1884,1885,1887,1892],{},[157,1886,811],{},[157,1888,1889],{},[17,1890,1891],{},"maximized=true",[157,1893,1894,1895,1079,1898,1901],{},"radius ",[17,1896,1897],{},"borderRadiusXLarge",[17,1899,1900],{},"borderRadiusNone",", shadow removed, caption glyph switches to \"restore\"",[387,1903,1905,1910],{"title":1904},"Inactive \u002F maximized \u002F zero-duration states + focus",[391,1906,1907],{"v-slot:preview":393},[1908,1909],"app-window-states-demo",{},[391,1911,1912],{"v-slot:code":393},[400,1913,1915],{"className":402,"code":1914,"language":404,"meta":393,"style":393},"\u003CFluereAppWindow :active=\"active\" :maximized=\"maximized\" title=\"Active \u002F inactive\" \u002F>\n\u003CFluereAppWindow\n  motion=\"none\"\n  title=\"Zero-duration states + focus\"\n  :is-back-button-visible=\"true\"\n\u002F>\n",[17,1916,1917,1959,1965,1975,1984,1998],{"__ignoreMap":393},[408,1918,1919,1921,1923,1926,1929,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1956],{"class":410,"line":411},[408,1920,415],{"class":414},[408,1922,19],{"class":418},[408,1924,1925],{"class":414}," :",[408,1927,1928],{"class":425},"active",[408,1930,429],{"class":414},[408,1932,447],{"class":432},[408,1934,1928],{"class":414},[408,1936,447],{"class":432},[408,1938,1925],{"class":414},[408,1940,811],{"class":425},[408,1942,429],{"class":414},[408,1944,447],{"class":432},[408,1946,811],{"class":414},[408,1948,447],{"class":432},[408,1950,630],{"class":425},[408,1952,429],{"class":414},[408,1954,1955],{"class":432},"\"Active \u002F inactive\"",[408,1957,1958],{"class":414}," \u002F>\n",[408,1960,1961,1963],{"class":410,"line":422},[408,1962,415],{"class":414},[408,1964,419],{"class":418},[408,1966,1967,1970,1972],{"class":410,"line":436},[408,1968,1969],{"class":425},"  motion",[408,1971,429],{"class":414},[408,1973,1974],{"class":432},"\"none\"\n",[408,1976,1977,1979,1981],{"class":410,"line":457},[408,1978,426],{"class":425},[408,1980,429],{"class":414},[408,1982,1983],{"class":432},"\"Zero-duration states + focus\"\n",[408,1985,1986,1988,1990,1992,1994,1996],{"class":410,"line":473},[408,1987,439],{"class":414},[408,1989,442],{"class":425},[408,1991,429],{"class":414},[408,1993,447],{"class":432},[408,1995,451],{"class":450},[408,1997,454],{"class":432},[408,1999,2000],{"class":410,"line":491},[408,2001,925],{"class":414},[228,2003,2004,2024],{},[14,2005,2006,2009,2010,2016,2017,2020,2021,91],{},[22,2007,2008],{},"Stacking stays outside",": the component writes ",[22,2011,2012,2013],{},"no ",[17,2014,2015],{},"z-index"," at all. The window layer is the shell's decision (existing docs tiers: ContentDialog \u002F Combobox popups ",[17,2018,2019],{},"1000",", Tooltip ",[17,2022,2023],{},"1100",[14,2025,2026,2029,2030,2033,2034,2036,2037,2040,2041,1089,2044,2047,2048,2051],{},[22,2027,2028],{},"Maximize \u002F minimize animation",": DWM's window open, minimize and maximize animations have ",[22,2031,2032],{},"no readable keyframes"," (they are not in ",[17,2035,41],{},"), so this library makes no frame-accurate claim. The component only offers controllable hooks: with ",[17,2038,2039],{},"motion=\"auto\""," the window frame transitions radius \u002F shadow \u002F background with design tokens (",[17,2042,2043],{},"--durationNormal",[17,2045,2046],{},"--curveDecelerateMid",", honoring ",[17,2049,2050],{},"prefers-reduced-motion","); geometry animation is up to the shell using the same tokens (see the drag demo above).",[131,2053,2055],{"id":2054},"api","API",[927,2057,2059],{"id":2058},"fluereappwindow",[17,2060,19],{},[136,2062,2063,2079],{},[139,2064,2065],{},[142,2066,2067,2070,2073,2076],{},[145,2068,2069],{},"Prop",[145,2071,2072],{},"Type",[145,2074,2075],{},"Default",[145,2077,2078],{},"Mapping \u002F notes",[152,2080,2081,2104,2125,2147,2168,2188,2205,2226,2245,2265,2282,2302,2330,2356,2375],{},[142,2082,2083,2088,2093,2098],{},[157,2084,2085],{},[17,2086,2087],{},"title",[157,2089,2090],{},[17,2091,2092],{},"string",[157,2094,2095],{},[17,2096,2097],{},"''",[157,2099,2100,2103],{},[17,2101,2102],{},"Title",": 12px \u002F Normal; an empty string collapses the block",[142,2105,2106,2111,2115,2119],{},[157,2107,2108],{},[17,2109,2110],{},"subtitle",[157,2112,2113],{},[17,2114,2092],{},[157,2116,2117],{},[17,2118,2097],{},[157,2120,2121,2124],{},[17,2122,2123],{},"Subtitle",": 12px \u002F Normal, weaker foreground than the title",[142,2126,2127,2132,2137,2142],{},[157,2128,2129],{},[17,2130,2131],{},"isBackButtonVisible",[157,2133,2134],{},[17,2135,2136],{},"boolean",[157,2138,2139],{},[17,2140,2141],{},"false",[157,2143,2144],{},[17,2145,2146],{},"IsBackButtonVisible",[142,2148,2149,2154,2158,2162],{},[157,2150,2151],{},[17,2152,2153],{},"isBackButtonEnabled",[157,2155,2156],{},[17,2157,2136],{},[157,2159,2160],{},[17,2161,451],{},[157,2163,2164,2167],{},[17,2165,2166],{},"IsBackButtonEnabled"," (really disables the button and removes it from the interactive set)",[142,2169,2170,2175,2179,2183],{},[157,2171,2172],{},[17,2173,2174],{},"isPaneToggleButtonVisible",[157,2176,2177],{},[17,2178,2136],{},[157,2180,2181],{},[17,2182,2141],{},[157,2184,2185],{},[17,2186,2187],{},"IsPaneToggleButtonVisible",[142,2189,2190,2194,2198,2202],{},[157,2191,2192],{},[17,2193,353],{},[157,2195,2196],{},[17,2197,2136],{},[157,2199,2200],{},[17,2201,451],{},[157,2203,2204],{},"Library extension: WinUI draws caption buttons in the system",[142,2206,2207,2215,2219,2223],{},[157,2208,2209,69,2211,69,2213],{},[17,2210,733],{},[17,2212,752],{},[17,2214,767],{},[157,2216,2217],{},[17,2218,2136],{},[157,2220,2221],{},[17,2222,451],{},[157,2224,2225],{},"Forwarded to the caption buttons",[142,2227,2228,2232,2236,2240],{},[157,2229,2230],{},[17,2231,811],{},[157,2233,2234],{},[17,2235,2136],{},[157,2237,2238],{},[17,2239,2141],{},[157,2241,2242,2244],{},[17,2243,704],{},"; affects radius \u002F shadow \u002F glyph only, never geometry",[142,2246,2247,2251,2255,2259],{},[157,2248,2249],{},[17,2250,1928],{},[157,2252,2253],{},[17,2254,2136],{},[157,2256,2257],{},[17,2258,451],{},[157,2260,2261,2262,288],{},"Active state; false renders the deactivated look (WinUI reads ",[17,2263,2264],{},"InputActivationListener",[142,2266,2267,2271,2275,2279],{},[157,2268,2269],{},[17,2270,1454],{},[157,2272,2273],{},[17,2274,2136],{},[157,2276,2277],{},[17,2278,451],{},[157,2280,2281],{},"Whether the title bar drags (only gates the drag events)",[142,2283,2284,2288,2292,2296],{},[157,2285,2286],{},[17,2287,1574],{},[157,2289,2290],{},[17,2291,2136],{},[157,2293,2294],{},[17,2295,2141],{},[157,2297,2298,2299,2301],{},"Round deltas via consecutive rounded totals so a ",[17,2300,1589],{}," stays integer (see Dragging above)",[142,2303,2304,2309,2313,2318],{},[157,2305,2306],{},[17,2307,2308],{},"label",[157,2310,2311],{},[17,2312,2092],{},[157,2314,2315],{},[17,2316,2317],{},"—",[157,2319,2320,2323,2324,2326,2327,288],{},[17,2321,2322],{},"AutomationProperties.Name",", falls back to ",[17,2325,2087],{}," (peer ",[17,2328,2329],{},"GetNameCore",[142,2331,2332,2337,2342,2347],{},[157,2333,2334],{},[17,2335,2336],{},"motion",[157,2338,2339],{},[17,2340,2341],{},"'auto' | 'none'",[157,2343,2344],{},[17,2345,2346],{},"'auto'",[157,2348,2349,2350,2353,2354,288],{},"Component-owned transitions (",[17,2351,2352],{},"auto"," honors ",[17,2355,2050],{},[142,2357,2358,2363,2368,2372],{},[157,2359,2360],{},[17,2361,2362],{},"labels",[157,2364,2365],{},[17,2366,2367],{},"Partial\u003CCaptionLabels>",[157,2369,2370],{},[17,2371,2317],{},[157,2373,2374],{},"Overrides caption-button accessible names",[142,2376,2377,2382,2386,2390],{},[157,2378,2379],{},[17,2380,2381],{},"locale",[157,2383,2384],{},[17,2385,2092],{},[157,2387,2388],{},[17,2389,2317],{},[157,2391,2392,2393],{},"Built-in copy locale (Back \u002F Toggle Navigation), beats ",[17,2394,2395],{},"FluereConfigProvider",[136,2397,2398,2409],{},[139,2399,2400],{},[142,2401,2402,2405,2407],{},[145,2403,2404],{},"Emit",[145,2406,1471],{},[145,2408,264],{},[152,2410,2411,2426,2440,2454,2471,2487],{},[142,2412,2413,2418,2420],{},[157,2414,2415],{},[17,2416,2417],{},"backRequested",[157,2419,2317],{},[157,2421,2422,2423],{},"Matches WinUI ",[17,2424,2425],{},"BackRequested",[142,2427,2428,2433,2435],{},[157,2429,2430],{},[17,2431,2432],{},"paneToggleRequested",[157,2434,2317],{},[157,2436,2422,2437],{},[17,2438,2439],{},"PaneToggleRequested",[142,2441,2442,2447,2451],{},[157,2443,2444],{},[17,2445,2446],{},"update:maximized",[157,2448,2449],{},[17,2450,2136],{},[157,2452,2453],{},"Caption maximize \u002F restore intent",[142,2455,2456,2466,2468],{},[157,2457,2458,69,2460,69,2462,69,2464],{},[17,2459,691],{},[17,2461,694],{},[17,2463,697],{},[17,2465,700],{},[157,2467,2317],{},[157,2469,2470],{},"Caption semantic events (no window state touched)",[142,2472,2473,2481,2484],{},[157,2474,2475,69,2477,69,2479],{},[17,2476,1480],{},[17,2478,1492],{},[17,2480,1504],{},[157,2482,2483],{},"see above",[157,2485,2486],{},"Title-bar dragging (events only)",[142,2488,2489,2493,2497],{},[157,2490,2491],{},[17,2492,1516],{},[157,2494,2495],{},[17,2496,1521],{},[157,2498,2499],{},"Double click (system behavior: toggle maximize)",[136,2501,2502,2510],{},[139,2503,2504],{},[142,2505,2506,2508],{},[145,2507,258],{},[145,2509,264],{},[152,2511,2512,2524,2536,2548,2559,2569,2582],{},[142,2513,2514,2519],{},[157,2515,2516],{},[17,2517,2518],{},"icon",[157,2520,2521,2523],{},[17,2522,278],{},"; 16×16 box",[142,2525,2526,2531],{},[157,2527,2528],{},[17,2529,2530],{},"left-header",[157,2532,2533,2535],{},[17,2534,72],{},"; participates in height",[142,2537,2538,2543],{},[157,2539,2540],{},[17,2541,2542],{},"titlebar-content",[157,2544,2545,2547],{},[17,2546,68],{}," (title-bar center)",[142,2549,2550,2555],{},[157,2551,2552],{},[17,2553,2554],{},"right-header",[157,2556,2557],{},[17,2558,75],{},[142,2560,2561,2566],{},[157,2562,2563],{},[17,2564,2565],{},"titlebar",[157,2567,2568],{},"Replaces the whole title bar (escape hatch)",[142,2570,2571,2579],{},[157,2572,2573,69,2576],{},[17,2574,2575],{},"content",[17,2577,2578],{},"default",[157,2580,2581],{},"Content area (viewport only)",[142,2583,2584,2592],{},[157,2585,2586,69,2589],{},[17,2587,2588],{},"back-icon",[17,2590,2591],{},"pane-toggle-icon",[157,2593,2594],{},"Replace the back \u002F pane-toggle glyphs",[927,2596,2598],{"id":2597},"fluerecaptionbuttons",[17,2599,680],{},[136,2601,2602,2614],{},[139,2603,2604],{},[142,2605,2606,2608,2610,2612],{},[145,2607,2069],{},[145,2609,2072],{},[145,2611,2075],{},[145,2613,264],{},[152,2615,2616,2635,2652,2669,2686,2703,2720],{},[142,2617,2618,2622,2626,2630],{},[157,2619,2620],{},[17,2621,811],{},[157,2623,2624],{},[17,2625,2136],{},[157,2627,2628],{},[17,2629,2141],{},[157,2631,2632,2634],{},[17,2633,704],{},"; drives glyph and name",[142,2636,2637,2641,2645,2649],{},[157,2638,2639],{},[17,2640,733],{},[157,2642,2643],{},[17,2644,2136],{},[157,2646,2647],{},[17,2648,451],{},[157,2650,2651],{},"false ⇒ minimize button hidden",[142,2653,2654,2658,2662,2666],{},[157,2655,2656],{},[17,2657,752],{},[157,2659,2660],{},[17,2661,2136],{},[157,2663,2664],{},[17,2665,451],{},[157,2667,2668],{},"false ⇒ maximize \u002F restore button hidden",[142,2670,2671,2675,2679,2683],{},[157,2672,2673],{},[17,2674,767],{},[157,2676,2677],{},[17,2678,2136],{},[157,2680,2681],{},[17,2682,451],{},[157,2684,2685],{},"false ⇒ close button kept but disabled",[142,2687,2688,2692,2696,2700],{},[157,2689,2690],{},[17,2691,1928],{},[157,2693,2694],{},[17,2695,2136],{},[157,2697,2698],{},[17,2699,451],{},[157,2701,2702],{},"false ⇒ dimmed glyph (inactive)",[142,2704,2705,2709,2713,2717],{},[157,2706,2707],{},[17,2708,2362],{},[157,2710,2711],{},[17,2712,2367],{},[157,2714,2715],{},[17,2716,2317],{},[157,2718,2719],{},"Overrides accessible names (beats locale)",[142,2721,2722,2726,2730,2734],{},[157,2723,2724],{},[17,2725,2381],{},[157,2727,2728],{},[17,2729,2092],{},[157,2731,2732],{},[17,2733,2317],{},[157,2735,2736],{},"Built-in copy locale",[136,2738,2739,2749],{},[139,2740,2741],{},[142,2742,2743,2745,2747],{},[145,2744,2404],{},[145,2746,1471],{},[145,2748,264],{},[152,2750,2751,2764,2775,2790],{},[142,2752,2753,2757,2761],{},[157,2754,2755],{},[17,2756,2446],{},[157,2758,2759],{},[17,2760,2136],{},[157,2762,2763],{},"Toggle intent",[142,2765,2766,2770,2772],{},[157,2767,2768],{},[17,2769,691],{},[157,2771,2317],{},[157,2773,2774],{},"Minimize intent",[142,2776,2777,2783,2785],{},[157,2778,2779,69,2781],{},[17,2780,694],{},[17,2782,697],{},[157,2784,2317],{},[157,2786,2787,2788],{},"Picked from the current ",[17,2789,811],{},[142,2791,2792,2796,2798],{},[157,2793,2794],{},[17,2795,700],{},[157,2797,2317],{},[157,2799,2800],{},"Close intent",[136,2802,2803,2811],{},[139,2804,2805],{},[142,2806,2807,2809],{},[145,2808,258],{},[145,2810,264],{},[152,2812,2813],{},[142,2814,2815,2825],{},[157,2816,2817,69,2819,69,2821,69,2823],{},[17,2818,1434],{},[17,2820,1437],{},[17,2822,1440],{},[17,2824,1443],{},[157,2826,2827],{},"Replace the built-in glyphs",[131,2829,2831],{"id":2830},"measured-in-a-real-browser-reproducible","Measured in a real browser (reproducible)",[14,2833,2834,2835,2837],{},"Computed styles measured with Playwright + system Chrome (1280×900 \u002F DPR 1) on this very page (the script and screenshots are process artifacts under ",[17,2836,1193],{},"; the conclusions are below):",[136,2839,2840,2849],{},[139,2841,2842],{},[142,2843,2844,2846],{},[145,2845,1011],{},[145,2847,2848],{},"Measured",[152,2850,2851,2866,2880,2894,2913,2927,2956,2976,2990,3000,3010,3023,3042],{},[142,2852,2853,2856],{},[157,2854,2855],{},"Title-bar height",[157,2857,2858,2861,2862,2865],{},[17,2859,2860],{},"32"," (no header slots) \u002F ",[17,2863,2864],{},"48"," (with header slots)",[142,2867,2868,2871],{},[157,2869,2870],{},"Window radius \u002F border \u002F content",[157,2872,2873,69,2876,69,2878],{},[17,2874,2875],{},"8px",[17,2877,1315],{},[17,2879,374],{},[142,2881,2882,2885],{},[157,2883,2884],{},"Title \u002F subtitle",[157,2886,2887,2890,2891],{},[17,2888,2889],{},"font-size: 12px"," \u002F foreground ",[17,2892,2893],{},"rgb(66, 66, 66)",[142,2895,2896,2899],{},[157,2897,2898],{},"Back button",[157,2900,2901,2904,2905,2908,2909,2912],{},[17,2902,2903],{},"40 × 44",", radius ",[17,2906,2907],{},"4px",", left offset ",[17,2910,2911],{},"5"," (1 border + 2 padding + 2 margin)",[142,2914,2915,2918],{},[157,2916,2917],{},"Caption button \u002F area \u002F pitch",[157,2919,2920,69,2922,69,2925],{},[17,2921,1028],{},[17,2923,2924],{},"138",[17,2926,1357],{},[142,2928,2929,2932],{},[157,2930,2931],{},"Caption glyph",[157,2933,2934,2937,2938,2941,2942,2945,2946,2948,2949,2952,2953,288],{},[17,2935,2936],{},"10 × 10",", centered, ",[17,2939,2940],{},"stroke-width"," attribute ",[17,2943,2944],{},"1"," (close cross ",[17,2947,1283],{},"), ",[17,2950,2951],{},"shape-rendering: auto",", top-aligned in a 48-high bar (",[17,2954,2955],{},"offsetTop: 0",[142,2957,2958,2961],{},[157,2959,2960],{},"Caption ink \u002F fidelity",[157,2962,2963,2964,2967,2968,2971,2972,2975],{},"light ",[17,2965,2966],{},"rgb(0, 0, 0)"," \u002F dark ",[17,2969,2970],{},"rgb(255, 255, 255)","; per-pixel mean ink difference vs. the Windows 11 reference ",[22,2973,2974],{},"2.09\u002F255"," (minimize 0.00 \u002F maximize 2.73 \u002F close 3.59)",[142,2977,2978,2981],{},[157,2979,2980],{},"Minimize hover \u002F close hover",[157,2982,2983,69,2986,2989],{},[17,2984,2985],{},"rgb(245, 245, 245)",[17,2987,2988],{},"rgb(196, 43, 28)"," (= #C42B1C) + white glyph",[142,2991,2992,2995],{},[157,2993,2994],{},"Focus rectangle",[157,2996,2997],{},[17,2998,2999],{},"inset 0 0 0 2px rgb(0,0,0), inset 0 0 0 3px rgb(255,255,255)",[142,3001,3002,3005],{},[157,3003,3004],{},"Inactive title",[157,3006,3007],{},[17,3008,3009],{},"rgb(97, 97, 97)",[142,3011,3012,3015],{},[157,3013,3014],{},"Maximized",[157,3016,1894,3017,3020,3021],{},[17,3018,3019],{},"0px",", no shadow, caption glyph ",[17,3022,697],{},[142,3024,3025,3029],{},[157,3026,3027],{},[17,3028,2336],{},[157,3030,3031,1559,3034,955,3037,1559,3039],{},[17,3032,3033],{},"none",[17,3035,3036],{},"transition-duration: 0s",[17,3038,2352],{},[17,3040,3041],{},"border-radius, box-shadow, background-color",[142,3043,3044,3047],{},[157,3045,3046],{},"Dragging (real pointer)",[157,3048,3049,3050,3052,3053,3056,3057,3060,3061,3063,3064,3067],{},"carried by CSS ",[17,3051,1589],{},"; a ",[17,3054,3055],{},"+60 \u002F +40 px"," drag yields ",[17,3058,3059],{},"translate: 60px 40px"," (integer with ",[17,3062,1574],{},"); ",[17,3065,3066],{},"data-dragging=true"," while dragging",[131,3069,3071],{"id":3070},"implementation-notes","Implementation notes",[48,3073,3074,3095,3116,3149,3175,3200,3247],{},[51,3075,3076,3082,3083,69,3085,69,3087,3089,3090,69,3092,3094],{},[22,3077,3078,3079],{},"Height logic mirrors ",[17,3080,3081],{},"UpdateHeight()",": only ",[17,3084,72],{},[17,3086,68],{},[17,3088,75],{}," count; ",[17,3091,2102],{},[17,3093,2123],{}," do not affect the height tier.",[51,3096,3097,3100,3101,3103,3104,3106,3107,3110,3111,1079,3113,3115],{},[22,3098,3099],{},"Three deliberate departures from the legacy system chrome for the caption glyphs (calibrated 2026-10-16)",": ① dropping ",[17,3102,1303],{}," (it disables anti-aliasing, turning 45° strokes into hard stair-steps); ② moving line width \u002F line cap onto the per-glyph ",[17,3105,1310],{}," presentation attributes (CSS outranks presentation attributes, so keeping them in the style block would silently override the per-glyph values); ③ switching the ink to the local variable ",[17,3108,3109],{},"light-dark(#000000, #ffffff)"," (= ",[17,3112,1078],{},[17,3114,1085],{},"; no token matches it). The geometry candidate scan is in \"Caption buttons: the evidence gap\" above.",[51,3117,3118,3121,3122,210,3125,3128,3129,3132,3133,3135,3136,3139,3140,1089,3143,1089,3146,91],{},[22,3119,3120],{},"Compact folding is \"last declared group wins\"",": both ",[17,3123,3124],{},"TitleTextGroup",[17,3126,3127],{},"DisplayModeGroup"," write ",[17,3130,3131],{},"PART_TitleText.Visibility",", and the latter is declared later ⇒ ",[17,3134,322],{}," hides title \u002F subtitle and moves the center content from centered to left with a 16 end margin. The criterion is not a breakpoint but \"desired width of the center ≥ its available width\" (",[17,3137,3138],{},"contentArea.DesiredSize().Width >= contentAreaGrid.ActualWidth()","), with the threshold remembered from the moment folding started; the Web side measures desired width through a hidden mirror (",[17,3141,3142],{},"visibility: hidden",[17,3144,3145],{},"aria-hidden",[17,3147,3148],{},"inert",[51,3150,3151,56,3154,3157,3158,3161,3162,3165,3166,3168,3169,3171,3172,29],{},[22,3152,3153],{},"Web equivalent of punching passthrough holes",[17,3155,3156],{},"pointerdown"," does not start a drag when it lands in ",[17,3159,3160],{},"[data-fui-app-window-nodrag]",", a native interactive element, or ",[17,3163,3164],{},"[data-fui-app-window-drag-exempt]",". ",[17,3167,1545],{}," cancels; ",[17,3170,1548],{}," and lost capture end as ",[17,3173,3174],{},"canceled=true",[51,3176,3177,3180,3181,69,3184,3187,3188,3191,3192,3195,3196,3199],{},[22,3178,3179],{},"Back \u002F pane-toggle buttons skip the AnimatedIcon animation for now",": WinUI uses ",[17,3182,3183],{},"AnimatedBackVisualSource",[17,3185,3186],{},"AnimatedGlobalNavigationButtonVisualSource"," (LottieGen output, ",[17,3189,3190],{},"c_durationTicks"," = 13333333 ≈ 1.3333 s, 48×48 canvas, 12 markers, ",[17,3193,3194],{},"Foreground"," theme property). This library ships static glyphs for now; the animation lands with 0.5.4 ",[17,3197,3198],{},"NavigationView"," (the slots are already in place).",[51,3201,3202,3205,3206,69,3209,3212,3213,69,3216,69,3219,3222,3223,959,3226,206,3229,3232,3233,3236,3237,3240,3241,3246],{},[22,3203,3204],{},"Known gaps",": high-contrast is not implemented (WinUI HC switches the title bar to ",[17,3207,3208],{},"SystemControl*",[17,3210,3211],{},"SystemColor*","); the material tokens landed in 0.4.4 (",[17,3214,3215],{},"micaBackgroundFillColorBase",[17,3217,3218],{},"acrylicInAppFillColorDefault",[17,3220,3221],{},"layerFillColorDefault"," and friends — see ",[17,3224,3225],{},"sources.materials",[17,3227,3228],{},"packages\u002Fdesigns\u002Fdata\u002Frepo-tokens.json",[22,3230,3231],{},"material composition"," (gradient + translucent layers + noise) belongs to 0.9.1 \u002F 0.9.2, so the window surface still uses ",[17,3234,3235],{},"colorNeutralBackground2"," (reusing the existing ",[17,3238,3239],{},"SolidBackgroundFillColorBase"," mapping) and ",[22,3242,2012,3243],{},[17,3244,3245],{},"backdrop-filter"," is written.",[51,3248,3249,3257],{},[22,3250,3251,3253,3254],{},[17,3252,2102],{}," never writes ",[17,3255,3256],{},"document.title",": WinUI really renames the window and restores the default title when cleared; the Web side leaves the document title alone (no docs-site or SSR pollution).",[1631,3259,3260],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":393,"searchDepth":422,"depth":422,"links":3262},[3263,3264,3265,3266,3269,3270,3271,3275,3276],{"id":133,"depth":422,"text":134},{"id":248,"depth":422,"text":249},{"id":571,"depth":422,"text":572},{"id":674,"depth":422,"text":675,"children":3267},[3268],{"id":929,"depth":436,"text":930},{"id":1447,"depth":422,"text":1448},{"id":1772,"depth":422,"text":1773},{"id":2054,"depth":422,"text":2055,"children":3272},[3273,3274],{"id":2058,"depth":436,"text":19},{"id":2597,"depth":436,"text":680},{"id":2830,"depth":422,"text":2831},{"id":3070,"depth":422,"text":3071},"[object Object]","md",{},null,true,"\u002Fen\u002Fcomponents\u002Fapp-window",{"title":5,"description":3284},{"A window-chrome container":3285,"nav":3286},"title-bar slots, drag regions, caption-button event proxying and the content viewport. Position, size and stacking stay outside.",{"title":5},"en\u002Fcomponents\u002Fapp-window","tWLs9nBT0HRJkMTTgjA5nsG2AqoLUJHaiU9VWlYNC2A",{"id":3290,"title":3291,"body":3292,"description":6180,"extension":3278,"meta":6181,"nav":6182,"navigation":3281,"path":6183,"seo":6184,"stem":6185,"__hash__":6186},"content\u002Fcomponents\u002Fapp-window.md","App Window 应用窗口",{"type":7,"value":3293,"toc":6164},[3294,3297,3306,3321,3393,3396,3472,3492,3496,3610,3625,3752,3759,3763,3783,3848,3852,3879,3945,4082,4086,4098,4145,4152,4301,4316,4399,4428,4431,4503,4520,4524,4533,4588,4652,4785,4805,4808,4915,5003,5046,5048,5052,5360,5459,5546,5550,5687,5752,5779,5783,5789,5991,5994,6162],[10,3295,3291],{"id":3296},"app-window-应用窗口",[14,3298,3299,3301,3302,3305],{},[17,3300,19],{}," 提供",[22,3303,3304],{},"窗口外框的样式与结构","：圆角 \u002F 描边 \u002F 阴影、标题栏（图标、标题、副标题、左头、中段、右头、返回与导航按钮）、右上角 caption 按钮、以及只负责「可视区域」的内容区。",[14,3307,3308,3309,3313,3314,3316,3317,3320],{},"它对位的是 WinUI 3 \u002F Windows App SDK 的 ",[22,3310,3311],{},[17,3312,37],{},"（",[17,3315,41],{},"）—— 这是一个",[22,3318,3319],{},"组合控件","，所以本组件的模板结构、状态与数值逐条对齐它：",[48,3322,3323,3333,3357,3374],{},[51,3324,3325,3328,3329,3332],{},[22,3326,3327],{},"模板 12 列","：",[17,3330,3331],{},"2 | Auto(返回) | Auto(导航) | Auto(左头) | 14(左头间距) | Auto(图标) | Auto(标题) | Auto(副标题) | *(中段) | Auto(右头) | 48(最小拖拽区) | Auto(caption 区)","。",[51,3334,3335,3328,3338,69,3340,69,3342,3344,3345,3313,3348,3350,3351,3353,3354,3356],{},[22,3336,3337],{},"高度两档",[17,3339,68],{},[17,3341,72],{},[17,3343,75],{}," 三者",[22,3346,3347],{},"全空才 32",[17,3349,82],{},"），任一非空则 48（",[17,3352,86],{},"，",[17,3355,90],{},"）。",[51,3358,3359,3362,3363,3365,3366,69,3368,3370,3371,3332],{},[22,3360,3361],{},"状态切换零时长","：源码里 ",[17,3364,100],{},"，没有任何 ",[17,3367,104],{},[17,3369,107],{},"，所以标题栏内部切换",[22,3372,3373],{},"不加过渡",[51,3375,3376,3379,3380,3382,3383,3385,3386,3388,3389,3392],{},[22,3377,3378],{},"拖拽 = 非客户区 + 打洞","：整条标题栏属非客户区，可交互元素被设成 ",[17,3381,117],{}," 抠洞；",[17,3384,121],{}," 走独立的 ",[17,3387,121],{}," region，",[22,3390,3391],{},"不在"," passthrough 清单里 ⇒ 图标区仍可拖拽。",[131,3394,3395],{"id":3395},"版本与证据口径",[136,3397,3398,3408],{},[139,3399,3400],{},[142,3401,3402,3405],{},[145,3403,3404],{},"项",[145,3406,3407],{},"值",[152,3409,3410,3429,3463],{},[142,3411,3412,3415],{},[157,3413,3414],{},"行为基准 tag",[157,3416,3417,3419,3420,3422,3423,3426,3427],{},[17,3418,165],{},"（commit ",[17,3421,169],{},"）—— 最新 WinUI3 Gallery 发行版 v2.9.3 的 ",[17,3424,3425],{},"standalone.props"," 里 ",[17,3428,173],{},[142,3430,3431,3434],{},[157,3432,3433],{},"模板 \u002F 画刷来源",[157,3435,3436,3419,3438,3440,3441,3313,3444,3446,3447,69,3449,3451,3452,3454,3455,3457,3458,937,3460],{},[17,3437,184],{},[17,3439,187],{},"）—— 该控件目录两 tag ",[22,3442,3443],{},"有漂移",[17,3445,195],{}," +382 行、idl 新增 ",[17,3448,199],{},[17,3450,202],{}," 等 ",[17,3453,205],{},"），但 ",[17,3456,209],{}," 与 ",[17,3459,213],{},[22,3461,3462],{},"逐字节一致",[142,3464,3465,3468],{},[157,3466,3467],{},"关键文件",[157,3469,3470],{},[17,3471,226],{},[228,3473,3474],{},[14,3475,3476,3481,3482,3484,3485,3488,3489,3491],{},[22,3477,3478,3480],{},[17,3479,236],{}," 不采纳","：2.5.1 新增的 ",[17,3483,240],{}," 有两处真 bug（",[17,3486,3487],{},"TitleBarPaneToggleButtonForegroundDisabled"," 改名后引用没跟着改；PaneToggle 的 ",[17,3490,244],{}," 态把背景设到了 16×16 图标上而非按钮底），本组件以 base 版为准。",[131,3493,3495],{"id":3494},"标题栏六个插槽与三个按钮","标题栏：六个插槽与三个按钮",[136,3497,3498,3511],{},[139,3499,3500],{},[142,3501,3502,3505,3508],{},[145,3503,3504],{},"插槽",[145,3506,3507],{},"对应 WinUI",[145,3509,3510],{},"说明",[152,3512,3513,3532,3545,3564,3577,3592],{},[142,3514,3515,3519,3523],{},[157,3516,3517],{},[17,3518,273],{},[157,3520,3521],{},[17,3522,278],{},[157,3524,3525,3526,3528,3529,3531],{},"落在 16×16 的 ",[17,3527,284],{}," 语义盒里（",[17,3530,287],{},"）",[142,3533,3534,3538,3542],{},[157,3535,3536],{},[17,3537,295],{},[157,3539,3540],{},[17,3541,72],{},[157,3543,3544],{},"参与 32 → 48 的高度判定；属非拖拽区",[142,3546,3547,3551,3555],{},[157,3548,3549],{},[17,3550,309],{},[157,3552,3553],{},[17,3554,68],{},[157,3556,3557,3560,3561,3563],{},[22,3558,3559],{},"标题栏中段","（星号列、默认居中）；",[17,3562,322],{}," 时改左对齐 + 右移 16",[142,3565,3566,3570,3574],{},[157,3567,3568],{},[17,3569,330],{},[157,3571,3572],{},[17,3573,75],{},[157,3575,3576],{},"右对齐；属非拖拽区",[142,3578,3579,3583,3586],{},[157,3580,3581],{},[17,3582,344],{},[157,3584,3585],{},"无（本库逃生舱）",[157,3587,3588,3589,3591],{},"整条标题栏替换；caption 按钮仍由本组件渲染（",[17,3590,353],{}," 可关）",[142,3593,3594,3601,3604],{},[157,3595,3596,3598,3599,3531],{},[17,3597,361],{},"（别名 ",[17,3600,365],{},[157,3602,3603],{},"无（窗口内容）",[157,3605,3606,3607,3609],{},"应用内容区：只控制可视区域（",[17,3608,374],{},"），滚动交给消费方",[14,3611,3612,3614,3615,3618,3619,3622,3623,3356],{},[17,3613,273],{}," 之外的四件套都会把标题栏撑到 48 高；",[22,3616,3617],{},"恰好只有一个","返回 \u002F 导航按钮可见时，左头间距从 14 压到 2（",[17,3620,3621],{},"LeftHeaderSpacingGroup"," 的 ",[17,3624,385],{},[387,3626,3628,3632],{"title":3627},"头部四件套 + 返回 \u002F 导航按钮",[391,3629,3630],{"v-slot:preview":393},[395,3631],{},[391,3633,3634],{"v-slot:code":393},[400,3635,3637],{"className":402,"code":3636,"language":404,"meta":393,"style":393},"\u003CFluereAppWindow\n  title=\"标题栏四件套\"\n  :is-back-button-visible=\"true\"\n  :is-pane-toggle-button-visible=\"true\"\n  @back-requested=\"…\"\n  @pane-toggle-requested=\"…\"\n>\n  \u003Ctemplate #titlebar-content>\n    \u003CFluereInput placeholder=\"查找设置\" aria-label=\"查找设置\" class=\"w-[220px]\" \u002F>\n  \u003C\u002Ftemplate>\n  \u003Ctemplate #right-header>\n    \u003CFluereButton appearance=\"subtle\" icon-only :icon=\"FluentIconPerson24Regular\" aria-label=\"账户\" \u002F>\n  \u003C\u002Ftemplate>\n  \u003Ctemplate #content>…\u003C\u002Ftemplate>\n\u003C\u002FFluereAppWindow>\n",[17,3638,3639,3645,3654,3668,3682,3696,3710,3714,3718,3723,3727,3731,3736,3740,3744],{"__ignoreMap":393},[408,3640,3641,3643],{"class":410,"line":411},[408,3642,415],{"class":414},[408,3644,419],{"class":418},[408,3646,3647,3649,3651],{"class":410,"line":422},[408,3648,426],{"class":425},[408,3650,429],{"class":414},[408,3652,3653],{"class":432},"\"标题栏四件套\"\n",[408,3655,3656,3658,3660,3662,3664,3666],{"class":410,"line":436},[408,3657,439],{"class":414},[408,3659,442],{"class":425},[408,3661,429],{"class":414},[408,3663,447],{"class":432},[408,3665,451],{"class":450},[408,3667,454],{"class":432},[408,3669,3670,3672,3674,3676,3678,3680],{"class":410,"line":457},[408,3671,439],{"class":414},[408,3673,462],{"class":425},[408,3675,429],{"class":414},[408,3677,447],{"class":432},[408,3679,451],{"class":450},[408,3681,454],{"class":432},[408,3683,3684,3686,3688,3690,3692,3694],{"class":410,"line":473},[408,3685,476],{"class":414},[408,3687,479],{"class":425},[408,3689,429],{"class":414},[408,3691,447],{"class":432},[408,3693,486],{"class":414},[408,3695,454],{"class":432},[408,3697,3698,3700,3702,3704,3706,3708],{"class":410,"line":491},[408,3699,476],{"class":414},[408,3701,496],{"class":425},[408,3703,429],{"class":414},[408,3705,447],{"class":432},[408,3707,486],{"class":414},[408,3709,454],{"class":432},[408,3711,3712],{"class":410,"line":507},[408,3713,510],{"class":414},[408,3715,3716],{"class":410,"line":513},[408,3717,516],{"class":414},[408,3719,3720],{"class":410,"line":519},[408,3721,3722],{"class":414},"    \u003CFluereInput placeholder=\"查找设置\" aria-label=\"查找设置\" class=\"w-[220px]\" \u002F>\n",[408,3724,3725],{"class":410,"line":525},[408,3726,528],{"class":414},[408,3728,3729],{"class":410,"line":531},[408,3730,534],{"class":414},[408,3732,3733],{"class":410,"line":537},[408,3734,3735],{"class":414},"    \u003CFluereButton appearance=\"subtle\" icon-only :icon=\"FluentIconPerson24Regular\" aria-label=\"账户\" \u002F>\n",[408,3737,3738],{"class":410,"line":543},[408,3739,528],{"class":414},[408,3741,3742],{"class":410,"line":548},[408,3743,551],{"class":414},[408,3745,3746,3748,3750],{"class":410,"line":554},[408,3747,557],{"class":414},[408,3749,19],{"class":418},[408,3751,510],{"class":414},[14,3753,3754,3755,3758],{},"标题栏里的输入框 \u002F 按钮都是",[22,3756,3757],{},"非拖拽区","，不会误触发窗口拖动（等价于 WinUI 把那块区域抠成 passthrough）。",[131,3760,3762],{"id":3761},"内容区只控制可视区域","内容区：只控制可视区域",[14,3764,3765,3766,1089,3768,3328,3770,3773,3774,3776,3777,69,3779,69,3781,3332],{},"内容区的高度是「窗口高 − 标题栏高」，并且 ",[17,3767,374],{},[17,3769,580],{},[22,3771,3772],{},"它只决定内容的可视边界","，滚动由消费方决定（放 ",[17,3775,588],{},"，或自己的滚动容器）。窗口尺寸同样由消费方给 —— 组件不写 ",[17,3778,592],{},[17,3780,595],{},[17,3782,598],{},[387,3784,3786,3790],{"title":3785},"基础形态：图标 + 标题 + 副标题 + 内容",[391,3787,3788],{"v-slot:preview":393},[605,3789],{},[391,3791,3792],{"v-slot:code":393},[400,3793,3795],{"className":402,"code":3794,"language":404,"meta":393,"style":393},"\u003CFluereAppWindow class=\"h-[300px] w-full max-w-[560px]\" title=\"设置\" subtitle=\"21RU0000CD\">\n  \u003Ctemplate #icon>\n    \u003CFluentIconCloudArrowUp24Regular :size=\"16\" \u002F>\n  \u003C\u002Ftemplate>\n  \u003Ctemplate #content>…\u003C\u002Ftemplate>\n\u003C\u002FFluereAppWindow>\n",[17,3796,3797,3824,3828,3832,3836,3840],{"__ignoreMap":393},[408,3798,3799,3801,3803,3805,3807,3809,3811,3813,3816,3818,3820,3822],{"class":410,"line":411},[408,3800,415],{"class":414},[408,3802,19],{"class":418},[408,3804,622],{"class":425},[408,3806,429],{"class":414},[408,3808,627],{"class":432},[408,3810,630],{"class":425},[408,3812,429],{"class":414},[408,3814,3815],{"class":432},"\"设置\"",[408,3817,638],{"class":425},[408,3819,429],{"class":414},[408,3821,643],{"class":432},[408,3823,510],{"class":414},[408,3825,3826],{"class":410,"line":422},[408,3827,650],{"class":414},[408,3829,3830],{"class":410,"line":436},[408,3831,655],{"class":414},[408,3833,3834],{"class":410,"line":457},[408,3835,528],{"class":414},[408,3837,3838],{"class":410,"line":473},[408,3839,551],{"class":414},[408,3841,3842,3844,3846],{"class":410,"line":491},[408,3843,557],{"class":414},[408,3845,19],{"class":418},[408,3847,510],{"class":414},[131,3849,3851],{"id":3850},"caption-按钮只做逻辑代理","Caption 按钮：只做逻辑代理",[14,3853,3854,3856,3857,3859,3860,3328,3863,69,3865,69,3867,69,3869,3871,3872,3874,3875,3878],{},[17,3855,680],{}," 渲染最小化 \u002F 最大化（还原）\u002F 关闭三个原生 ",[17,3858,684],{},"，点击",[22,3861,3862],{},"只抛事件",[17,3864,691],{},[17,3866,694],{},[17,3868,697],{},[17,3870,700],{},"，并用 ",[17,3873,704],{}," 把「最大化 ⇄ 还原」的意图交回消费方 —— 组件本身",[22,3876,3877],{},"不改变任何窗口状态","，这正是 0.5.2「逻辑代理」的口径。",[136,3880,3881,3894],{},[139,3882,3883],{},[142,3884,3885,3888,3891],{},[145,3886,3887],{},"能力开关",[145,3889,3890],{},"表现",[145,3892,3893],{},"依据",[152,3895,3896,3916,3930],{},[142,3897,3898,3902,3909],{},[157,3899,3900],{},[17,3901,733],{},[157,3903,3904,3905,3908],{},"false ⇒ ",[22,3906,3907],{},"隐藏","按钮",[157,3910,3911,3912,3915],{},"系统表现无 A 级源码，属",[22,3913,3914],{},"假设","（见下）",[142,3917,3918,3922,3927],{},[157,3919,3920],{},[17,3921,752],{},[157,3923,3904,3924,3926],{},[22,3925,3907],{},"按钮，字形不再切换",[157,3928,3929],{},"同上",[142,3931,3932,3936,3943],{},[157,3933,3934],{},[17,3935,767],{},[157,3937,3938,3939,3942],{},"false ⇒ 保留按钮但",[22,3940,3941],{},"禁用","（原生 disabled）",[157,3944,3929],{},[387,3946,3948,3952],{"title":3947},"caption 按钮 + 能力开关 + 事件日志",[391,3949,3950],{"v-slot:preview":393},[785,3951],{},[391,3953,3954],{"v-slot:code":393},[400,3955,3956],{"className":402,"code":791,"language":404,"meta":393,"style":393},[17,3957,3958,3964,3980,3994,4008,4022,4036,4050,4064,4078],{"__ignoreMap":393},[408,3959,3960,3962],{"class":410,"line":411},[408,3961,415],{"class":414},[408,3963,800],{"class":418},[408,3965,3966,3968,3970,3972,3974,3976,3978],{"class":410,"line":422},[408,3967,805],{"class":425},[408,3969,808],{"class":414},[408,3971,811],{"class":425},[408,3973,429],{"class":414},[408,3975,447],{"class":432},[408,3977,811],{"class":414},[408,3979,454],{"class":432},[408,3981,3982,3984,3986,3988,3990,3992],{"class":410,"line":436},[408,3983,439],{"class":414},[408,3985,826],{"class":425},[408,3987,429],{"class":414},[408,3989,447],{"class":432},[408,3991,733],{"class":414},[408,3993,454],{"class":432},[408,3995,3996,3998,4000,4002,4004,4006],{"class":410,"line":457},[408,3997,439],{"class":414},[408,3999,841],{"class":425},[408,4001,429],{"class":414},[408,4003,447],{"class":432},[408,4005,752],{"class":414},[408,4007,454],{"class":432},[408,4009,4010,4012,4014,4016,4018,4020],{"class":410,"line":473},[408,4011,439],{"class":414},[408,4013,856],{"class":425},[408,4015,429],{"class":414},[408,4017,447],{"class":432},[408,4019,767],{"class":414},[408,4021,454],{"class":432},[408,4023,4024,4026,4028,4030,4032,4034],{"class":410,"line":491},[408,4025,476],{"class":414},[408,4027,691],{"class":425},[408,4029,429],{"class":414},[408,4031,447],{"class":432},[408,4033,486],{"class":414},[408,4035,454],{"class":432},[408,4037,4038,4040,4042,4044,4046,4048],{"class":410,"line":507},[408,4039,476],{"class":414},[408,4041,694],{"class":425},[408,4043,429],{"class":414},[408,4045,447],{"class":432},[408,4047,486],{"class":414},[408,4049,454],{"class":432},[408,4051,4052,4054,4056,4058,4060,4062],{"class":410,"line":513},[408,4053,476],{"class":414},[408,4055,697],{"class":425},[408,4057,429],{"class":414},[408,4059,447],{"class":432},[408,4061,486],{"class":414},[408,4063,454],{"class":432},[408,4065,4066,4068,4070,4072,4074,4076],{"class":410,"line":519},[408,4067,476],{"class":414},[408,4069,700],{"class":425},[408,4071,429],{"class":414},[408,4073,447],{"class":432},[408,4075,486],{"class":414},[408,4077,454],{"class":432},[408,4079,4080],{"class":410,"line":525},[408,4081,925],{"class":414},[927,4083,4085],{"id":4084},"caption-按钮的证据缺口必须知道","caption 按钮的证据缺口（必须知道）",[14,4087,4088,4089,937,4091,4094,4095,4097],{},"WinUI 3 的 ",[17,4090,936],{},[22,4092,4093],{},"模板里没有 caption 按钮","（12 列读完，无最小化 \u002F 最大化 \u002F 关闭）。它们由系统 DWM 绘制，",[17,4096,41],{}," 里没有对应的 XAML 实现：",[48,4099,4100,4115,4121],{},[51,4101,4102,4104,4105,4108,4109,4111,4112,4114],{},[17,4103,950],{}," 只把按钮底色设成全透明白、并维护 caption 区的 hit-test 矩形，",[22,4106,4107],{},"没有绘制代码","；",[17,4110,962],{}," 里的 ",[17,4113,958],{}," 全仓无使用点。",[51,4116,4117,4118,4120],{},"Microsoft 自己的 ",[17,4119,969],{}," 写明 \"WinUI TitleBar does not handle Caption Buttons … handled by the AppWindow TitleBar\"。",[51,4122,4123,4124,3622,4127,4129,4130,4132,4133,4135,4136,4138,4139,4141,4142,3332],{},"仓库里唯一存在的 caption 视觉是",[22,4125,4126],{},"旧系统 chrome",[17,4128,976],{}," 样式（",[17,4131,980],{},"，40×28 按钮、9×9 描边 ",[17,4134,984],{},"、",[17,4137,988],{}," 两段 ",[17,4140,991],{},"）—— 本组件",[22,4143,4144],{},"只用它的字形几何",[14,4146,4147,4148,4151],{},"因此下面的量都是「",[22,4149,4150],{},"系统度量","」，用 Windows 11 参考截图 1:1 交叉验证，并全部落成可覆盖的组件局部变量：",[136,4153,4154,4167],{},[139,4155,4156],{},[142,4157,4158,4161,4164],{},[145,4159,4160],{},"量",[145,4162,4163],{},"取值",[145,4165,4166],{},"来源与验证",[152,4168,4169,4188,4201,4234,4247,4263,4288],{},[142,4170,4171,4174,4178],{},[157,4172,4173],{},"单键宽 × 高",[157,4175,4176],{},[22,4177,1028],{},[157,4179,4180,4182,4183,4185,4186],{},[17,4181,1033],{}," 运行期被 ",[17,4184,1037],{}," 覆盖（A 级线索）；参考图实测三键字形中心间距 ",[22,4187,1041],{},[142,4189,4190,4193,4198],{},[157,4191,4192],{},"字形外框 \u002F 线宽",[157,4194,4195,4197],{},[22,4196,1052],{},"（关闭叉 1.1px）",[157,4199,4200],{},"参考图实测（最小化 10×1 横条、最大化 10×10 描边方框、关闭 10×10 叉）；关闭叉取 1.1 的像素依据见下「字形定值过程」",[142,4202,4203,4206,4215],{},[157,4204,4205],{},"字形墨色",[157,4207,4208,4214],{},[22,4209,4210,69,4212],{},[17,4211,1068],{},[17,4213,1071],{},"（浅 \u002F 深主题）",[157,4216,4217,4218,1079,4220,1079,4222,3313,4224,1089,4226,4228,4229,4231,4232],{},"遗留样式 ",[17,4219,1078],{},[17,4221,1082],{},[17,4223,1085],{},[17,4225,1088],{},[17,4227,1092],{},"）；token 表无同值档（",[17,4230,1096],{}," 浅色是 #242424），落成 ",[17,4233,1100],{},[142,4235,4236,4239,4244],{},[157,4237,4238],{},"caption 区竖直位置",[157,4240,4241],{},[22,4242,4243],{},"顶端对齐",[157,4245,4246],{},"标题栏 48 高时，返回箭头墨迹中心 y≈23.5（= 48\u002F2）而 caption 字形中心 y≈15.5（= 32\u002F2）⇒ 按钮只占顶部 32",[142,4248,4249,4252,4258],{},[157,4250,4251],{},"hover \u002F pressed 底",[157,4253,4254,69,4256],{},[17,4255,1123],{},[17,4257,1126],{},[157,4259,4260,4261,3531],{},"标题栏按钮同族的 A 级画刷（",[17,4262,1132],{},[142,4264,4265,4268,4274],{},[157,4266,4267],{},"关闭键 hover 红",[157,4269,4270],{},[22,4271,4272],{},[17,4273,1144],{},[157,4275,4276,4277,3313,4279,4281,4282,937,4284,4287],{},"WinUI 系统色 ",[17,4278,1150],{},[17,4280,1153],{},"）与 Windows 11 关闭键红逐字节一致；旧 chrome 里的 ",[17,4283,1157],{},[22,4285,4286],{},"只有定义行、零引用行","，不能当依据",[142,4289,4290,4293,4298],{},[157,4291,4292],{},"关闭键 pressed 红",[157,4294,4295,4297],{},[17,4296,1172],{},"（#B10E1C）",[157,4299,4300],{},"无任何来源，取语义位最近的 token",[14,4302,4303,4304,4307,4308,1089,4310,4312,4313,4315],{},"字形形状的定值过程（1:1 冻结帧 ↔ Windows 11 参考图逐像素",[22,4305,4306],{},"平均绝对差 Δ"," 候选扫描，越小越像；脚本 ",[17,4309,1186],{},[17,4311,1189],{},"，属过程产物不进仓库，结论已落到 ",[17,4314,1197],{}," 与组件注释）：",[136,4317,4318,4333],{},[139,4319,4320],{},[142,4321,4322,4325,4328,4330],{},[145,4323,4324],{},"字形",[145,4326,4327],{},"定值",[145,4329,1213],{},[145,4331,4332],{},"淘汰的备选",[152,4334,4335,4355,4377],{},[142,4336,4337,4340,4347,4351],{},[157,4338,4339],{},"最小化",[157,4341,4342,3313,4344,4346],{},[17,4343,1228],{},[17,4345,1231],{},"；墨迹落在第 6 像素行，比几何中心低 0.5px）",[157,4348,4349],{},[22,4350,1237],{},[157,4352,4353,1243],{},[17,4354,1242],{},[142,4356,4357,4360,4367,4371],{},[157,4358,4359],{},"最大化",[157,4361,4362,4363,3313,4365,3531],{},"10×10 方框，中线内缩 0.5、圆角 ",[17,4364,1254],{},[17,4366,1231],{},[157,4368,4369],{},[22,4370,1261],{},[157,4372,4373,4374,4376],{},"直角 → 3.38；遗留样式 ",[17,4375,1267],{}," 大圆角 → 9.72",[142,4378,4379,4382,4392,4396],{},[157,4380,4381],{},"关闭",[157,4383,4384,4385,4387,4388,4135,4390],{},"端点 ",[17,4386,1279],{},"（= 线宽÷2，圆头外缘贴满外框）、线宽 ",[22,4389,1283],{},[17,4391,1286],{},[157,4393,4394],{},[22,4395,1291],{},[157,4397,4398],{},"线宽 1.0 → 15.74；线宽 1.2 → 11.08",[14,4400,4401,4402,4407,4408,4414,4415,1089,4417,4419,4420,1089,4422,4424,4425,4427],{},"两处系统性修正（原先「粗笨 \u002F 断线」的根因）：① ",[22,4403,4404,4405],{},"移除 ",[17,4406,1303],{}," —— 它关掉抗锯齿后，45° 笔画退化成硬边阶梯、方框圆角被量化成块（Δ 15.7 vs 3.2）；② ",[22,4409,4410,4411,4413],{},"线宽与端头改由 ",[17,4412,1310],{}," 的呈现属性逐字形输出","（最小化 \u002F 最大化 ",[17,4416,1315],{},[17,4418,1231],{},"、关闭叉 ",[17,4421,1321],{},[17,4423,1286],{},"）—— CSS 规则的优先级高于呈现属性，若继续写在 ",[17,4426,1327],{}," 里会把逐字形值整个盖掉。",[14,4429,4430],{},"需要严格对齐实机时，覆盖这些局部变量即可：",[400,4432,4434],{"className":1334,"code":4433,"language":1336,"meta":393,"style":393},".my-caption-buttons {\n  --fui-caption-buttons-button-width: 46px;\n  --fui-caption-buttons-glyph-size: 10px;\n  --fui-caption-buttons-glyph-color: #000000; \u002F* 深色主题下是 #ffffff *\u002F\n  --fui-caption-buttons-close-hover: #c42b1c;\n  --fui-caption-buttons-close-pressed: #b22b26;\n}\n",[17,4435,4436,4442,4454,4466,4479,4489,4499],{"__ignoreMap":393},[408,4437,4438,4440],{"class":410,"line":411},[408,4439,1343],{"class":425},[408,4441,1346],{"class":414},[408,4443,4444,4446,4448,4450,4452],{"class":410,"line":422},[408,4445,1352],{"class":1351},[408,4447,56],{"class":414},[408,4449,1357],{"class":450},[408,4451,1361],{"class":1360},[408,4453,1364],{"class":414},[408,4455,4456,4458,4460,4462,4464],{"class":410,"line":436},[408,4457,1369],{"class":1351},[408,4459,56],{"class":414},[408,4461,1374],{"class":450},[408,4463,1361],{"class":1360},[408,4465,1364],{"class":414},[408,4467,4468,4470,4472,4474,4476],{"class":410,"line":457},[408,4469,1383],{"class":1351},[408,4471,56],{"class":414},[408,4473,1068],{"class":450},[408,4475,955],{"class":414},[408,4477,4478],{"class":1392},"\u002F* 深色主题下是 #ffffff *\u002F\n",[408,4480,4481,4483,4485,4487],{"class":410,"line":473},[408,4482,1398],{"class":1351},[408,4484,56],{"class":414},[408,4486,1403],{"class":450},[408,4488,1364],{"class":414},[408,4490,4491,4493,4495,4497],{"class":410,"line":491},[408,4492,1410],{"class":1351},[408,4494,56],{"class":414},[408,4496,1415],{"class":450},[408,4498,1364],{"class":414},[408,4500,4501],{"class":410,"line":507},[408,4502,1422],{"class":414},[228,4504,4505],{},[14,4506,4324,4507,4510,4511,69,4513,69,4515,69,4517,4519],{},[22,4508,4509],{},"线宽 \u002F 端头 \u002F 路径","不做成局部变量：它们与路径几何互相咬合（端点位置 = 线宽 ÷ 2），逐字形不同，覆盖其中一项就会破坏外框对齐 —— 要换字形请用 ",[17,4512,1434],{},[17,4514,1437],{},[17,4516,1440],{},[17,4518,1443],{}," 四个插槽。",[131,4521,4523],{"id":4522},"拖拽只抛事件","拖拽：只抛事件",[14,4525,4526,4528,4529,4532],{},[17,4527,1454],{},"（缺省 true）时，在标题栏",[22,4530,4531],{},"非可交互区","按下会依次抛出：",[136,4534,4535,4545],{},[139,4536,4537],{},[142,4538,4539,4542],{},[145,4540,4541],{},"事件",[145,4543,4544],{},"载荷",[152,4546,4547,4557,4567,4577],{},[142,4548,4549,4553],{},[157,4550,4551],{},[17,4552,1480],{},[157,4554,4555],{},[17,4556,1485],{},[142,4558,4559,4563],{},[157,4560,4561],{},[17,4562,1492],{},[157,4564,4565],{},[17,4566,1497],{},[142,4568,4569,4573],{},[157,4570,4571],{},[17,4572,1504],{},[157,4574,4575],{},[17,4576,1509],{},[142,4578,4579,4583],{},[157,4580,4581],{},[17,4582,1516],{},[157,4584,4585,4587],{},[17,4586,1521],{},"（系统行为是切换最大化；组件不改状态）",[48,4589,4590,4604,4613,4623,4630],{},[51,4591,4592,937,4595,4597,4598,937,4601,4603],{},[22,4593,4594],{},"逐次位移",[17,4596,1532],{}," 方便增量更新，",[22,4599,4600],{},"累计位移",[17,4602,1539],{}," 方便直接叠在起点上。",[51,4605,4606,69,4608,4610,4611,3332],{},[17,4607,1545],{},[17,4609,1548],{}," \u002F 失去指针捕获 ⇒ ",[17,4612,1552],{},[51,4614,4615,4616,4618,4619,4622],{},"起点落在左头 \u002F 中段 \u002F 右头 \u002F 返回 \u002F 导航 \u002F caption 按钮 \u002F 任何原生可交互元素，或落在带 ",[17,4617,1558],{}," 的元素里 ⇒ ",[22,4620,4621],{},"不启动","拖拽。",[51,4624,4625,4626,4629],{},"拖拽期间标题栏",[22,4627,4628],{},"文本不可选中","（WinUI 里它属非客户区）。",[51,4631,4632,4634,4635,69,4637,4639,4640,4642,4643,4645,4646,4648,4649,3332],{},[17,4633,1574],{},"（缺省 false）时，",[17,4636,1492],{},[17,4638,1504],{}," 的",[22,4641,4600],{},"四舍五入成整数、",[17,4644,1585],{}," 取两次累计之差 —— 外层用 CSS ",[17,4647,1589],{}," 承载位移时可保证 translate 值恒为整数（无亚像素模糊），且",[22,4650,4651],{},"不累积取整误差",[387,4653,4655,4659],{"title":4654},"由外壳实现位移（组件只抛事件，用 translate 承载）",[391,4656,4657],{"v-slot:preview":393},[1600,4658],{},[391,4660,4661],{"v-slot:code":393},[400,4662,4663],{"className":402,"code":1606,"language":404,"meta":393,"style":393},[17,4664,4665,4671,4679,4705,4719,4733,4747,4761,4781],{"__ignoreMap":393},[408,4666,4667,4669],{"class":410,"line":411},[408,4668,415],{"class":414},[408,4670,419],{"class":418},[408,4672,4673,4675,4677],{"class":410,"line":422},[408,4674,1619],{"class":425},[408,4676,429],{"class":414},[408,4678,1624],{"class":432},[408,4680,4681,4683,4685,4687,4689,4691,4693,4695,4697,4699,4701,4703],{"class":410,"line":436},[408,4682,439],{"class":414},[408,4684,1631],{"class":425},[408,4686,429],{"class":414},[408,4688,447],{"class":432},[408,4690,1638],{"class":414},[408,4692,1641],{"class":432},[408,4694,1644],{"class":414},[408,4696,1647],{"class":432},[408,4698,1650],{"class":414},[408,4700,1653],{"class":432},[408,4702,1656],{"class":414},[408,4704,454],{"class":432},[408,4706,4707,4709,4711,4713,4715,4717],{"class":410,"line":457},[408,4708,439],{"class":414},[408,4710,811],{"class":425},[408,4712,429],{"class":414},[408,4714,447],{"class":432},[408,4716,811],{"class":414},[408,4718,454],{"class":432},[408,4720,4721,4723,4725,4727,4729,4731],{"class":410,"line":473},[408,4722,439],{"class":414},[408,4724,1679],{"class":425},[408,4726,429],{"class":414},[408,4728,447],{"class":432},[408,4730,451],{"class":450},[408,4732,454],{"class":432},[408,4734,4735,4737,4739,4741,4743,4745],{"class":410,"line":491},[408,4736,476],{"class":414},[408,4738,1694],{"class":425},[408,4740,429],{"class":414},[408,4742,447],{"class":432},[408,4744,1701],{"class":414},[408,4746,454],{"class":432},[408,4748,4749,4751,4753,4755,4757,4759],{"class":410,"line":507},[408,4750,476],{"class":414},[408,4752,1710],{"class":425},[408,4754,429],{"class":414},[408,4756,447],{"class":432},[408,4758,1717],{"class":414},[408,4760,454],{"class":432},[408,4762,4763,4765,4767,4769,4771,4773,4775,4777,4779],{"class":410,"line":513},[408,4764,476],{"class":414},[408,4766,1726],{"class":425},[408,4768,429],{"class":414},[408,4770,447],{"class":432},[408,4772,1733],{"class":414},[408,4774,429],{"class":1360},[408,4776,1738],{"class":1360},[408,4778,811],{"class":414},[408,4780,454],{"class":432},[408,4782,4783],{"class":410,"line":519},[408,4784,925],{"class":414},[228,4786,4787],{},[14,4788,4789,3328,4799,4801,4802,4804],{},[22,4790,4791,4792,4794,4795,69,4797],{},"为什么用 ",[17,4793,1589],{}," 而不是 ",[17,4796,1759],{},[17,4798,1762],{},[17,4800,1589],{}," 走合成层、不触发重排 \u002F 重绘，拖拽更顺滑；配合 ",[17,4803,1768],{},"，位移值恒为整数，不会因为亚像素值产生模糊或抖动。",[131,4806,4807],{"id":4807},"状态与集成样式",[136,4809,4810,4823],{},[139,4811,4812],{},[142,4813,4814,4817,4820],{},[145,4815,4816],{},"状态",[145,4818,4819],{},"表达",[145,4821,4822],{},"实现",[152,4824,4825,4843,4863,4878,4899],{},[142,4826,4827,4829,4832],{},[157,4828,1795],{},[157,4830,4831],{},"返回、导航、caption 按钮",[157,4833,4834,69,4836,69,4838,4840,4841,3531],{},[17,4835,1803],{},[17,4837,1806],{},[17,4839,1126],{},"（对应 ",[17,4842,1811],{},[142,4844,4845,4847,4853],{},[157,4846,776],{},[157,4848,4849,69,4851],{},[17,4850,1820],{},[17,4852,1823],{},[157,4854,4855,1089,4857,3313,4859,69,4861,3531],{},[17,4856,1828],{},[17,4858,1831],{},[17,4860,1834],{},[17,4862,1837],{},[142,4864,4865,4867,4870],{},[157,4866,1842],{},[157,4868,4869],{},"键盘 Tab 到按钮",[157,4871,4872,4873,4875,4876],{},"WinUI 双层焦点矩形：外 2px ",[17,4874,1851],{}," + 内 1px ",[17,4877,1855],{},[142,4879,4880,4883,4887],{},[157,4881,4882],{},"失活（非前台）",[157,4884,4885],{},[17,4886,1866],{},[157,4888,4889,4890,3313,4892,4894,4895,3313,4897,3531],{},"标题 \u002F 副标题换 ",[17,4891,1872],{},[17,4893,1875],{},"）；图标 \u002F 左头 \u002F 中段 \u002F 右头 ",[17,4896,1879],{},[17,4898,1882],{},[142,4900,4901,4903,4907],{},[157,4902,4359],{},[157,4904,4905],{},[17,4906,1891],{},[157,4908,4909,4910,1079,4912,4914],{},"圆角 ",[17,4911,1897],{},[17,4913,1900],{},"、阴影移除、caption 字形切「还原」",[387,4916,4918,4922],{"title":4917},"失活 \u002F 最大化 \u002F 零时长动效 + 焦点",[391,4919,4920],{"v-slot:preview":393},[1908,4921],{},[391,4923,4924],{"v-slot:code":393},[400,4925,4927],{"className":402,"code":4926,"language":404,"meta":393,"style":393},"\u003CFluereAppWindow :active=\"active\" :maximized=\"maximized\" title=\"前台 \u002F 失活\" \u002F>\n\u003CFluereAppWindow motion=\"none\" title=\"零时长动效 + 焦点\" :is-back-button-visible=\"true\" \u002F>\n",[17,4928,4929,4968],{"__ignoreMap":393},[408,4930,4931,4933,4935,4937,4939,4941,4943,4945,4947,4949,4951,4953,4955,4957,4959,4961,4963,4966],{"class":410,"line":411},[408,4932,415],{"class":414},[408,4934,19],{"class":418},[408,4936,1925],{"class":414},[408,4938,1928],{"class":425},[408,4940,429],{"class":414},[408,4942,447],{"class":432},[408,4944,1928],{"class":414},[408,4946,447],{"class":432},[408,4948,1925],{"class":414},[408,4950,811],{"class":425},[408,4952,429],{"class":414},[408,4954,447],{"class":432},[408,4956,811],{"class":414},[408,4958,447],{"class":432},[408,4960,630],{"class":425},[408,4962,429],{"class":414},[408,4964,4965],{"class":432},"\"前台 \u002F 失活\"",[408,4967,1958],{"class":414},[408,4969,4970,4972,4974,4977,4979,4982,4984,4986,4989,4991,4993,4995,4997,4999,5001],{"class":410,"line":422},[408,4971,415],{"class":414},[408,4973,19],{"class":418},[408,4975,4976],{"class":425}," motion",[408,4978,429],{"class":414},[408,4980,4981],{"class":432},"\"none\"",[408,4983,630],{"class":425},[408,4985,429],{"class":414},[408,4987,4988],{"class":432},"\"零时长动效 + 焦点\"",[408,4990,1925],{"class":414},[408,4992,442],{"class":425},[408,4994,429],{"class":414},[408,4996,447],{"class":432},[408,4998,451],{"class":450},[408,5000,447],{"class":432},[408,5002,1958],{"class":414},[228,5004,5005,5022],{},[14,5006,5007,5010,5011,5016,5017,5019,5020,3356],{},[22,5008,5009],{},"层级由外部控制","：组件",[22,5012,5013,5014],{},"不写任何 ",[17,5015,2015],{},"。窗口层由外壳决定（文档站现有档位：ContentDialog \u002F Combobox 下拉 ",[17,5018,2019],{},"、Tooltip ",[17,5021,2023],{},[14,5023,5024,5027,5028,5031,5032,5034,5035,5037,5038,1089,5040,5042,5043,5045],{},[22,5025,5026],{},"最大 \u002F 最小化动画","：DWM 的窗口打开、最小化、最大化动画",[22,5029,5030],{},"没有任何关键帧可读","（不在 ",[17,5033,41],{}," 里），本库不做逐帧还原。组件只提供「可控过渡钩子」：",[17,5036,2039],{}," 时给窗口框体的圆角 \u002F 阴影 \u002F 底色挂 token 化过渡（",[17,5039,2043],{},[17,5041,2046],{},"，尊重 ",[17,5044,2050],{},"），几何动画由外壳用同一批 token 自行实现（见上面拖拽示例）。",[131,5047,2055],{"id":2054},[927,5049,5050],{"id":2058},[17,5051,19],{},[136,5053,5054,5070],{},[139,5055,5056],{},[142,5057,5058,5061,5064,5067],{},[145,5059,5060],{},"属性（Props）",[145,5062,5063],{},"类型",[145,5065,5066],{},"默认",[145,5068,5069],{},"对应 \u002F 说明",[152,5071,5072,5091,5110,5128,5147,5165,5182,5203,5225,5244,5261,5278,5302,5324,5341],{},[142,5073,5074,5078,5082,5086],{},[157,5075,5076],{},[17,5077,2087],{},[157,5079,5080],{},[17,5081,2092],{},[157,5083,5084],{},[17,5085,2097],{},[157,5087,5088,5090],{},[17,5089,2102],{},"：12px \u002F Normal，空串时整块折叠",[142,5092,5093,5097,5101,5105],{},[157,5094,5095],{},[17,5096,2110],{},[157,5098,5099],{},[17,5100,2092],{},[157,5102,5103],{},[17,5104,2097],{},[157,5106,5107,5109],{},[17,5108,2123],{},"：12px \u002F Normal，前景比标题弱一档",[142,5111,5112,5116,5120,5124],{},[157,5113,5114],{},[17,5115,2131],{},[157,5117,5118],{},[17,5119,2136],{},[157,5121,5122],{},[17,5123,2141],{},[157,5125,5126],{},[17,5127,2146],{},[142,5129,5130,5134,5138,5142],{},[157,5131,5132],{},[17,5133,2153],{},[157,5135,5136],{},[17,5137,2136],{},[157,5139,5140],{},[17,5141,451],{},[157,5143,5144,5146],{},[17,5145,2166],{},"（真正禁用按钮，且不再算可交互区）",[142,5148,5149,5153,5157,5161],{},[157,5150,5151],{},[17,5152,2174],{},[157,5154,5155],{},[17,5156,2136],{},[157,5158,5159],{},[17,5160,2141],{},[157,5162,5163],{},[17,5164,2187],{},[142,5166,5167,5171,5175,5179],{},[157,5168,5169],{},[17,5170,353],{},[157,5172,5173],{},[17,5174,2136],{},[157,5176,5177],{},[17,5178,451],{},[157,5180,5181],{},"本库扩展：WinUI 的 caption 按钮由系统绘制",[142,5183,5184,5192,5196,5200],{},[157,5185,5186,69,5188,69,5190],{},[17,5187,733],{},[17,5189,752],{},[17,5191,767],{},[157,5193,5194],{},[17,5195,2136],{},[157,5197,5198],{},[17,5199,451],{},[157,5201,5202],{},"透传 caption 按钮的能力开关",[142,5204,5205,5209,5213,5217],{},[157,5206,5207],{},[17,5208,811],{},[157,5210,5211],{},[17,5212,2136],{},[157,5214,5215],{},[17,5216,2141],{},[157,5218,5219,5221,5222],{},[17,5220,704],{},"；只影响圆角 \u002F 阴影 \u002F 字形，",[22,5223,5224],{},"不改几何",[142,5226,5227,5231,5235,5239],{},[157,5228,5229],{},[17,5230,1928],{},[157,5232,5233],{},[17,5234,2136],{},[157,5236,5237],{},[17,5238,451],{},[157,5240,5241,5242,3531],{},"前台态，false 走失活表现（WinUI 来自 ",[17,5243,2264],{},[142,5245,5246,5250,5254,5258],{},[157,5247,5248],{},[17,5249,1454],{},[157,5251,5252],{},[17,5253,2136],{},[157,5255,5256],{},[17,5257,451],{},[157,5259,5260],{},"标题栏是否可拖拽（只影响是否抛 drag 事件）",[142,5262,5263,5267,5271,5275],{},[157,5264,5265],{},[17,5266,1574],{},[157,5268,5269],{},[17,5270,2136],{},[157,5272,5273],{},[17,5274,2141],{},[157,5276,5277],{},"位移取整：累计位移按差值取整，translate 值恒为整数（见上文拖拽节）",[142,5279,5280,5284,5288,5292],{},[157,5281,5282],{},[17,5283,2308],{},[157,5285,5286],{},[17,5287,2092],{},[157,5289,5290],{},[17,5291,2317],{},[157,5293,5294,5296,5297,5299,5300,3531],{},[17,5295,2322],{},"，缺省回退 ",[17,5298,2087],{},"（对齐 peer 的 ",[17,5301,2329],{},[142,5303,5304,5308,5312,5316],{},[157,5305,5306],{},[17,5307,2336],{},[157,5309,5310],{},[17,5311,2341],{},[157,5313,5314],{},[17,5315,2346],{},[157,5317,5318,5319,5321,5322,3531],{},"组件自有过渡开关（",[17,5320,2352],{}," 尊重 ",[17,5323,2050],{},[142,5325,5326,5330,5334,5338],{},[157,5327,5328],{},[17,5329,2362],{},[157,5331,5332],{},[17,5333,2367],{},[157,5335,5336],{},[17,5337,2317],{},[157,5339,5340],{},"覆盖 caption 按钮可访问名",[142,5342,5343,5347,5351,5355],{},[157,5344,5345],{},[17,5346,2381],{},[157,5348,5349],{},[17,5350,2092],{},[157,5352,5353],{},[17,5354,2317],{},[157,5356,5357,5358],{},"内建文案 locale（Back \u002F Toggle Navigation），优先于 ",[17,5359,2395],{},[136,5361,5362,5373],{},[139,5363,5364],{},[142,5365,5366,5369,5371],{},[145,5367,5368],{},"事件（Emits）",[145,5370,4544],{},[145,5372,3510],{},[152,5374,5375,5388,5400,5413,5430,5446],{},[142,5376,5377,5381,5383],{},[157,5378,5379],{},[17,5380,2417],{},[157,5382,2317],{},[157,5384,5385,5386],{},"对齐 WinUI ",[17,5387,2425],{},[142,5389,5390,5394,5396],{},[157,5391,5392],{},[17,5393,2432],{},[157,5395,2317],{},[157,5397,5385,5398],{},[17,5399,2439],{},[142,5401,5402,5406,5410],{},[157,5403,5404],{},[17,5405,2446],{},[157,5407,5408],{},[17,5409,2136],{},[157,5411,5412],{},"caption 的最大化 \u002F 还原意图",[142,5414,5415,5425,5427],{},[157,5416,5417,69,5419,69,5421,69,5423],{},[17,5418,691],{},[17,5420,694],{},[17,5422,697],{},[17,5424,700],{},[157,5426,2317],{},[157,5428,5429],{},"caption 的语义事件（组件不改窗口状态）",[142,5431,5432,5440,5443],{},[157,5433,5434,69,5436,69,5438],{},[17,5435,1480],{},[17,5437,1492],{},[17,5439,1504],{},[157,5441,5442],{},"见上表",[157,5444,5445],{},"标题栏拖拽（只抛事件）",[142,5447,5448,5452,5456],{},[157,5449,5450],{},[17,5451,1516],{},[157,5453,5454],{},[17,5455,1521],{},[157,5457,5458],{},"标题栏双击（系统行为：切换最大化）",[136,5460,5461,5470],{},[139,5462,5463],{},[142,5464,5465,5468],{},[145,5466,5467],{},"插槽（Slots）",[145,5469,3510],{},[152,5471,5472,5483,5494,5505,5515,5524,5535],{},[142,5473,5474,5478],{},[157,5475,5476],{},[17,5477,2518],{},[157,5479,5480,5482],{},[17,5481,278],{},"；16×16 盒子",[142,5484,5485,5489],{},[157,5486,5487],{},[17,5488,2530],{},[157,5490,5491,5493],{},[17,5492,72],{},"；参与高度判定",[142,5495,5496,5500],{},[157,5497,5498],{},[17,5499,2542],{},[157,5501,5502,5504],{},[17,5503,68],{},"（标题栏中段）",[142,5506,5507,5511],{},[157,5508,5509],{},[17,5510,2554],{},[157,5512,5513],{},[17,5514,75],{},[142,5516,5517,5521],{},[157,5518,5519],{},[17,5520,2565],{},[157,5522,5523],{},"整条标题栏替换（逃生舱）",[142,5525,5526,5532],{},[157,5527,5528,69,5530],{},[17,5529,2575],{},[17,5531,2578],{},[157,5533,5534],{},"内容区（只控制可视区域）",[142,5536,5537,5543],{},[157,5538,5539,69,5541],{},[17,5540,2588],{},[17,5542,2591],{},[157,5544,5545],{},"替换返回 \u002F 导航按钮字形",[927,5547,5548],{"id":2597},[17,5549,680],{},[136,5551,5552,5564],{},[139,5553,5554],{},[142,5555,5556,5558,5560,5562],{},[145,5557,5060],{},[145,5559,5063],{},[145,5561,5066],{},[145,5563,3510],{},[152,5565,5566,5585,5602,5619,5636,5653,5670],{},[142,5567,5568,5572,5576,5580],{},[157,5569,5570],{},[17,5571,811],{},[157,5573,5574],{},[17,5575,2136],{},[157,5577,5578],{},[17,5579,2141],{},[157,5581,5582,5584],{},[17,5583,704],{},"；决定字形与可访问名",[142,5586,5587,5591,5595,5599],{},[157,5588,5589],{},[17,5590,733],{},[157,5592,5593],{},[17,5594,2136],{},[157,5596,5597],{},[17,5598,451],{},[157,5600,5601],{},"false ⇒ 隐藏最小化按钮",[142,5603,5604,5608,5612,5616],{},[157,5605,5606],{},[17,5607,752],{},[157,5609,5610],{},[17,5611,2136],{},[157,5613,5614],{},[17,5615,451],{},[157,5617,5618],{},"false ⇒ 隐藏最大化 \u002F 还原按钮",[142,5620,5621,5625,5629,5633],{},[157,5622,5623],{},[17,5624,767],{},[157,5626,5627],{},[17,5628,2136],{},[157,5630,5631],{},[17,5632,451],{},[157,5634,5635],{},"false ⇒ 关闭按钮保留但禁用",[142,5637,5638,5642,5646,5650],{},[157,5639,5640],{},[17,5641,1928],{},[157,5643,5644],{},[17,5645,2136],{},[157,5647,5648],{},[17,5649,451],{},[157,5651,5652],{},"false ⇒ 字形转弱（失活）",[142,5654,5655,5659,5663,5667],{},[157,5656,5657],{},[17,5658,2362],{},[157,5660,5661],{},[17,5662,2367],{},[157,5664,5665],{},[17,5666,2317],{},[157,5668,5669],{},"覆盖可访问名（优先于 locale）",[142,5671,5672,5676,5680,5684],{},[157,5673,5674],{},[17,5675,2381],{},[157,5677,5678],{},[17,5679,2092],{},[157,5681,5682],{},[17,5683,2317],{},[157,5685,5686],{},"内建文案 locale",[136,5688,5689,5699],{},[139,5690,5691],{},[142,5692,5693,5695,5697],{},[145,5694,5368],{},[145,5696,4544],{},[145,5698,3510],{},[152,5700,5701,5714,5725,5741],{},[142,5702,5703,5707,5711],{},[157,5704,5705],{},[17,5706,2446],{},[157,5708,5709],{},[17,5710,2136],{},[157,5712,5713],{},"切换意图",[142,5715,5716,5720,5722],{},[157,5717,5718],{},[17,5719,691],{},[157,5721,2317],{},[157,5723,5724],{},"最小化意图",[142,5726,5727,5733,5735],{},[157,5728,5729,69,5731],{},[17,5730,694],{},[17,5732,697],{},[157,5734,2317],{},[157,5736,5737,5738,5740],{},"由当前 ",[17,5739,811],{}," 决定抛哪一个",[142,5742,5743,5747,5749],{},[157,5744,5745],{},[17,5746,700],{},[157,5748,2317],{},[157,5750,5751],{},"关闭意图",[136,5753,5754,5762],{},[139,5755,5756],{},[142,5757,5758,5760],{},[145,5759,5467],{},[145,5761,3510],{},[152,5763,5764],{},[142,5765,5766,5776],{},[157,5767,5768,69,5770,69,5772,69,5774],{},[17,5769,1434],{},[17,5771,1437],{},[17,5773,1440],{},[17,5775,1443],{},[157,5777,5778],{},"替换内建字形",[131,5780,5782],{"id":5781},"浏览器实测可复现","浏览器实测（可复现）",[14,5784,5785,5786,5788],{},"Playwright + 系统 Chrome（1280×900 \u002F DPR 1）在文档站本页实测的计算样式（脚本与截图属过程产物，只留在 ",[17,5787,1193],{},"；结论如下）：",[136,5790,5791,5800],{},[139,5792,5793],{},[142,5794,5795,5797],{},[145,5796,4160],{},[145,5798,5799],{},"实测",[152,5801,5802,5815,5828,5840,5856,5869,5893,5914,5926,5935,5944,5955,5971],{},[142,5803,5804,5807],{},[157,5805,5806],{},"标题栏高度",[157,5808,5809,5811,5812,5814],{},[17,5810,2860],{},"（无头部插槽）\u002F ",[17,5813,2864],{},"（有）",[142,5816,5817,5820],{},[157,5818,5819],{},"窗口圆角 \u002F 描边 \u002F 内容区",[157,5821,5822,69,5824,69,5826],{},[17,5823,2875],{},[17,5825,1315],{},[17,5827,374],{},[142,5829,5830,5833],{},[157,5831,5832],{},"标题 \u002F 副标题",[157,5834,5835,5837,5838],{},[17,5836,2889],{}," \u002F 前景 ",[17,5839,2893],{},[142,5841,5842,5845],{},[157,5843,5844],{},"返回按钮",[157,5846,5847,5849,5850,5852,5853,5855],{},[17,5848,2903],{},"、圆角 ",[17,5851,2907],{},"、左缘偏移 ",[17,5854,2911],{},"（1 描边 + 2 内边距 + 2 Margin）",[142,5857,5858,5861],{},[157,5859,5860],{},"caption 单键 \u002F 区宽 \u002F 键心间距",[157,5862,5863,69,5865,69,5867],{},[17,5864,1028],{},[17,5866,2924],{},[17,5868,1357],{},[142,5870,5871,5874],{},[157,5872,5873],{},"caption 字形",[157,5875,5876,5878,5879,5881,5882,5884,5885,5887,5888,5890,5891,3531],{},[17,5877,2936],{},"、居中、",[17,5880,2940],{}," 属性 ",[17,5883,2944],{},"（关闭叉 ",[17,5886,1283],{},"）、",[17,5889,2951],{},"、48 高时顶端对齐（",[17,5892,2955],{},[142,5894,5895,5898],{},[157,5896,5897],{},"caption 字形墨色 \u002F 保真度",[157,5899,5900,5901,5903,5904,5906,5907,5910,5911,5913],{},"浅色 ",[17,5902,2966],{}," \u002F 深色 ",[17,5905,2970],{},"；与 Windows 11 参考图 1:1 逐像素",[22,5908,5909],{},"墨量","平均差 ",[22,5912,2974],{},"（最小化 0.00 \u002F 最大化 2.73 \u002F 关闭 3.59）",[142,5915,5916,5919],{},[157,5917,5918],{},"最小化 hover \u002F 关闭键 hover",[157,5920,5921,69,5923,5925],{},[17,5922,2985],{},[17,5924,2988],{},"（= #C42B1C）+ 白字形",[142,5927,5928,5931],{},[157,5929,5930],{},"焦点矩形",[157,5932,5933],{},[17,5934,2999],{},[142,5936,5937,5940],{},[157,5938,5939],{},"失活标题",[157,5941,5942],{},[17,5943,3009],{},[142,5945,5946,5948],{},[157,5947,4359],{},[157,5949,4909,5950,5952,5953],{},[17,5951,3019],{},"、无阴影、caption 字形 ",[17,5954,697],{},[142,5956,5957,5961],{},[157,5958,5959],{},[17,5960,2336],{},[157,5962,5963,1559,5965,4108,5967,1559,5969],{},[17,5964,3033],{},[17,5966,3036],{},[17,5968,2352],{},[17,5970,3041],{},[142,5972,5973,5976],{},[157,5974,5975],{},"拖拽（真实指针）",[157,5977,5978,5979,5981,5982,5984,5985,5988,5989],{},"外壳用 CSS ",[17,5980,1589],{}," 承载：拖动 ",[17,5983,3055],{}," 后 ",[17,5986,5987],{},"translate:60px 40px","（roundToInteger 下为整数）；拖动中 ",[17,5990,3066],{},[131,5992,5993],{"id":5993},"实现要点",[48,5995,5996,6016,6036,6065,6088,6108,6152],{},[51,5997,5998,6003,6004,69,6006,69,6008,6010,6011,69,6013,6015],{},[22,5999,6000,6001],{},"高度判定照抄 ",[17,6002,3081],{},"：只有 ",[17,6005,72],{},[17,6007,68],{},[17,6009,75],{}," 参与，",[17,6012,2102],{},[17,6014,2123],{}," 不影响高度档位。",[51,6017,6018,6021,6022,6024,6025,6027,6028,6030,6031,1079,6033,6035],{},[22,6019,6020],{},"caption 字形与原系统 chrome 的三处偏离（2026-10-16 校准）","：① 去掉 ",[17,6023,1303],{},"（它关掉抗锯齿，45° 笔画退化成硬边阶梯）；② 线宽 \u002F 端头改由 ",[17,6026,1310],{}," 的呈现属性逐字形输出（CSS 优先级高于呈现属性，留在样式块里会把逐字形值盖掉）；③ 墨色改用局部变量 ",[17,6029,3109],{},"（= ",[17,6032,1078],{},[17,6034,1085],{},"，token 表无同值档）。字形几何的候选 Δ 扫描见上文《caption 按钮的证据缺口》。",[51,6037,6038,3328,6041,3457,6043,6045,6046,6048,6049,6051,6052,6054,6055,6058,6059,1089,6061,1089,6063,3356],{},[22,6039,6040],{},"Compact 折叠是「后声明组胜出」",[17,6042,3124],{},[17,6044,3127],{}," 都会写 ",[17,6047,3131],{},"，后者声明在后 ⇒ ",[17,6050,322],{}," 生效时标题 \u002F 副标题折叠、中段由居中改左对齐并右移 16。判据不是断点，而是「中段期望宽 ≥ 中段可用宽」（",[17,6053,3138],{},"），阈值是",[22,6056,6057],{},"进入折叠那一刻的标题栏宽度","；Web 侧用一层隐藏镜像量期望宽（",[17,6060,3142],{},[17,6062,3145],{},[17,6064,3148],{},[51,6066,6067,3328,6070,6072,6073,6075,6076,6078,6079,6081,6082,6084,6085,6087],{},[22,6068,6069],{},"拖拽打洞的 Web 等价物",[17,6071,3156],{}," 命中 ",[17,6074,3160],{},"、原生可交互元素或 ",[17,6077,3164],{}," 时不启动拖拽 —— 对应 WinUI 的 passthrough 矩形。",[17,6080,1545],{}," 取消、",[17,6083,1548],{}," \u002F 失去捕获同样以 ",[17,6086,3174],{}," 收尾。",[51,6089,6090,6093,6094,69,6096,6098,6099,6101,6102,6104,6105,6107],{},[22,6091,6092],{},"返回 \u002F 导航按钮暂不做 AnimatedIcon 动画","：WinUI 用 ",[17,6095,3183],{},[17,6097,3186],{},"（LottieGen 产物，",[17,6100,3190],{}," = 13333333 ≈ 1.3333 s、画布 48×48、12 个 marker、主题属性 ",[17,6103,3194],{},"），本库先用静态字形，动画随 0.5.4 ",[17,6106,3198],{}," 落地（插槽已留出）。",[51,6109,6110,6113,6114,6116,6117,69,6119,6121,6122,3313,6125,69,6127,69,6129,6131,6132,3622,6134,6136,6137,6140,6141,6143,6144,6146,6147,3332],{},[22,6111,6112],{},"未知缺口","：高对比度主题未实现（WinUI HC 下 ",[17,6115,936],{}," 走 ",[17,6118,3208],{},[17,6120,3211],{},"）；材质令牌已由 0.4.4 落进 ",[17,6123,6124],{},"@fluere-vue\u002Fdesigns",[17,6126,3215],{},[17,6128,3218],{},[17,6130,3221],{}," 等，见 ",[17,6133,3228],{},[17,6135,3225],{},"），但",[22,6138,6139],{},"材质合成","（渐变 + 半透明层 + 噪点）属 0.9.1 \u002F 0.9.2，本轮窗口底色仍用 ",[17,6142,3235],{},"（沿用 ",[17,6145,3239],{}," 的既有映射），",[22,6148,6149,6150],{},"不写 ",[17,6151,3245],{},[51,6153,6154,6161],{},[22,6155,6156,6158,6159],{},[17,6157,2102],{}," 不写 ",[17,6160,3256],{},"：WinUI 会真的改窗口标题并在清空时恢复默认标题，Web 侧不碰文档标题（避免污染文档站与 SSR）。",[1631,6163,3260],{},{"title":393,"searchDepth":422,"depth":422,"links":6165},[6166,6167,6168,6169,6172,6173,6174,6178,6179],{"id":3395,"depth":422,"text":3395},{"id":3494,"depth":422,"text":3495},{"id":3761,"depth":422,"text":3762},{"id":3850,"depth":422,"text":3851,"children":6170},[6171],{"id":4084,"depth":436,"text":4085},{"id":4522,"depth":422,"text":4523},{"id":4807,"depth":422,"text":4807},{"id":2054,"depth":422,"text":2055,"children":6175},[6176,6177],{"id":2058,"depth":436,"text":19},{"id":2597,"depth":436,"text":680},{"id":5781,"depth":422,"text":5782},{"id":5993,"depth":422,"text":5993},"窗口外框样式容器：标题栏插槽、可拖拽区、caption 按钮事件代理与内容可视区域；位置、尺寸与层级由外壳控制。",{},{"title":3291},"\u002Fcomponents\u002Fapp-window",{"title":3291,"description":6180},"components\u002Fapp-window","qqaUcHl7hSWjWdTcKsWJ0bYHn5iAd29wOpFQ6UYPm2w",1792150931495]