[{"data":1,"prerenderedAt":2664},["ShallowReactive",2],{"navigation":3,"changelog":313},[4,24,41,48,293,298,303,308],{"title":5,"path":6,"stem":7,"children":8,"package":11,"icon":23},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,13,18],{"title":10,"path":6,"stem":7,"package":11,"icon":12},"Introduction",null,"i-lucide-house",{"title":14,"path":15,"stem":16,"package":11,"icon":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":19,"path":20,"stem":21,"package":11,"icon":22},"Icons","\u002Fgetting-started\u002Ficons","1.getting-started\u002F3.icons","i-lucide-sparkles","i-lucide-rocket",{"title":25,"package":11,"icon":26,"path":27,"stem":28,"children":29,"page":40},"Packages","i-lucide-package","\u002Fpackages","2.packages",[30,35],{"title":31,"path":32,"stem":33,"package":11,"icon":34},"@vyui\u002Fcore","\u002Fpackages\u002Fcore","2.packages\u002F1.core","i-lucide-box",{"title":36,"path":37,"stem":38,"package":11,"icon":39},"@vyui\u002Fkit","\u002Fpackages\u002Fkit","2.packages\u002F2.kit","i-lucide-layers",false,{"title":42,"path":43,"stem":44,"children":45,"package":11,"icon":47},"CLI","\u002Fcli","3.cli\u002F1.index",[46],{"title":42,"path":43,"stem":44,"package":11,"icon":47},"i-lucide-terminal",{"title":49,"package":11,"icon":50,"path":51,"stem":52,"children":53},"Components","i-lucide-layout-grid","\u002Fcomponents","3.components",[54,56,62,67,72,77,82,87,92,97,102,107,112,117,122,127,132,136,141,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,234,238,243,248,253,258,263,268,272,276,280,284,288],{"title":49,"path":51,"stem":55,"package":11,"icon":50},"3.components\u002Findex",{"title":57,"path":58,"stem":59,"package":60,"icon":61},"Accordion","\u002Fcomponents\u002Faccordion","3.components\u002Faccordion","kit","i-lucide-list-collapse",{"title":63,"path":64,"stem":65,"package":60,"icon":66},"Action Sheet","\u002Fcomponents\u002Faction-sheet","3.components\u002Faction-sheet","i-lucide-panel-bottom",{"title":68,"path":69,"stem":70,"package":60,"icon":71},"Alert","\u002Fcomponents\u002Falert","3.components\u002Falert","i-lucide-triangle-alert",{"title":73,"path":74,"stem":75,"package":76,"icon":71},"Alert Dialog","\u002Fcomponents\u002Falert-dialog","3.components\u002Falert-dialog","core",{"title":78,"path":79,"stem":80,"package":60,"icon":81},"Aspect Ratio","\u002Fcomponents\u002Faspect-ratio","3.components\u002Faspect-ratio","i-lucide-ratio",{"title":83,"path":84,"stem":85,"package":60,"icon":86},"Avatar","\u002Fcomponents\u002Favatar","3.components\u002Favatar","i-lucide-circle-user-round",{"title":88,"path":89,"stem":90,"package":60,"icon":91},"Avatar Group","\u002Fcomponents\u002Favatar-group","3.components\u002Favatar-group","i-lucide-users-round",{"title":93,"path":94,"stem":95,"package":60,"icon":96},"Button","\u002Fcomponents\u002Fbutton","3.components\u002Fbutton","i-lucide-square-mouse-pointer",{"title":98,"path":99,"stem":100,"package":60,"icon":101},"Calendar","\u002Fcomponents\u002Fcalendar","3.components\u002Fcalendar","i-lucide-calendar-days",{"title":103,"path":104,"stem":105,"package":60,"icon":106},"Card","\u002Fcomponents\u002Fcard","3.components\u002Fcard","i-lucide-square",{"title":108,"path":109,"stem":110,"package":60,"icon":111},"Checkbox","\u002Fcomponents\u002Fcheckbox","3.components\u002Fcheckbox","i-lucide-square-check",{"title":113,"path":114,"stem":115,"package":76,"icon":116},"Collapsible","\u002Fcomponents\u002Fcollapsible","3.components\u002Fcollapsible","i-lucide-chevrons-down-up",{"title":118,"path":119,"stem":120,"package":76,"icon":121},"Dialog","\u002Fcomponents\u002Fdialog","3.components\u002Fdialog","i-lucide-app-window",{"title":123,"path":124,"stem":125,"package":76,"icon":126},"Draggable","\u002Fcomponents\u002Fdraggable","3.components\u002Fdraggable","i-lucide-move",{"title":128,"path":129,"stem":130,"package":60,"icon":131},"Form","\u002Fcomponents\u002Fform","3.components\u002Fform","i-lucide-clipboard-list",{"title":133,"path":134,"stem":135,"package":76,"icon":22},"Icon","\u002Fcomponents\u002Ficon","3.components\u002Ficon",{"title":137,"path":138,"stem":139,"package":60,"icon":140},"Input","\u002Fcomponents\u002Finput","3.components\u002Finput","i-lucide-text-cursor-input",{"title":142,"path":143,"stem":144,"package":60,"icon":66},"Island","\u002Fcomponents\u002Fisland","3.components\u002Fisland",{"title":146,"path":147,"stem":148,"package":60,"icon":149},"Island Button","\u002Fcomponents\u002Fisland-button","3.components\u002Fisland-button","i-lucide-circle-ellipsis",{"title":151,"path":152,"stem":153,"package":60,"icon":154},"Island Group","\u002Fcomponents\u002Fisland-group","3.components\u002Fisland-group","i-lucide-panels-top-left",{"title":156,"path":157,"stem":158,"package":60,"icon":159},"KeyboardAware","\u002Fcomponents\u002Fkeyboard-aware","3.components\u002Fkeyboard-aware","i-lucide-keyboard",{"title":161,"path":162,"stem":163,"package":60,"icon":164},"Label","\u002Fcomponents\u002Flabel","3.components\u002Flabel","i-lucide-tag",{"title":166,"path":167,"stem":168,"package":60,"icon":169},"Modal","\u002Fcomponents\u002Fmodal","3.components\u002Fmodal","i-lucide-gallery-vertical-end",{"title":171,"path":172,"stem":173,"package":76,"icon":174},"Navigation","\u002Fcomponents\u002Fnavigation","3.components\u002Fnavigation","i-lucide-route",{"title":176,"path":177,"stem":178,"package":60,"icon":179},"Number Field","\u002Fcomponents\u002Fnumber-field","3.components\u002Fnumber-field","i-lucide-list-plus",{"title":181,"path":182,"stem":183,"package":76,"icon":184},"Pagination","\u002Fcomponents\u002Fpagination","3.components\u002Fpagination","i-lucide-ellipsis",{"title":186,"path":187,"stem":188,"package":60,"icon":189},"Pin Input","\u002Fcomponents\u002Fpin-input","3.components\u002Fpin-input","i-lucide-key-round",{"title":191,"path":192,"stem":193,"package":60,"icon":194},"Placeholder","\u002Fcomponents\u002Fplaceholder","3.components\u002Fplaceholder","i-lucide-square-dashed",{"title":196,"path":197,"stem":198,"package":60,"icon":199},"Popover","\u002Fcomponents\u002Fpopover","3.components\u002Fpopover","i-lucide-message-square-more",{"title":201,"path":202,"stem":203,"package":60,"icon":204},"Progress","\u002Fcomponents\u002Fprogress","3.components\u002Fprogress","i-lucide-chart-no-axes-column-increasing",{"title":206,"path":207,"stem":208,"package":60,"icon":209},"Radio Group","\u002Fcomponents\u002Fradio-group","3.components\u002Fradio-group","i-lucide-circle-dot",{"title":211,"path":212,"stem":213,"package":60,"icon":214},"Rating","\u002Fcomponents\u002Frating","3.components\u002Frating","i-lucide-star",{"title":216,"path":217,"stem":218,"package":76,"icon":219},"Scroll View","\u002Fcomponents\u002Fscroll-view","3.components\u002Fscroll-view","i-lucide-scroll",{"title":221,"path":222,"stem":223,"package":60,"icon":224},"Select","\u002Fcomponents\u002Fselect","3.components\u002Fselect","i-lucide-list-check",{"title":226,"path":227,"stem":228,"package":60,"icon":229},"Separator","\u002Fcomponents\u002Fseparator","3.components\u002Fseparator","i-lucide-separator-horizontal",{"title":231,"path":232,"stem":233,"package":76,"icon":66},"Sheet","\u002Fcomponents\u002Fsheet","3.components\u002Fsheet",{"title":235,"path":236,"stem":237,"package":60,"icon":154},"Skeleton","\u002Fcomponents\u002Fskeleton","3.components\u002Fskeleton",{"title":239,"path":240,"stem":241,"package":60,"icon":242},"Slider","\u002Fcomponents\u002Fslider","3.components\u002Fslider","i-lucide-sliders-horizontal",{"title":244,"path":245,"stem":246,"package":60,"icon":247},"Sortable","\u002Fcomponents\u002Fsortable","3.components\u002Fsortable","i-lucide-list-restart",{"title":249,"path":250,"stem":251,"package":60,"icon":252},"Stepper","\u002Fcomponents\u002Fstepper","3.components\u002Fstepper","i-lucide-list-ordered",{"title":254,"path":255,"stem":256,"package":60,"icon":257},"Swipe Action","\u002Fcomponents\u002Fswipe-action","3.components\u002Fswipe-action","i-lucide-move-horizontal",{"title":259,"path":260,"stem":261,"package":60,"icon":262},"Swiper","\u002Fcomponents\u002Fswiper","3.components\u002Fswiper","i-lucide-gallery-horizontal-end",{"title":264,"path":265,"stem":266,"package":60,"icon":267},"Switch","\u002Fcomponents\u002Fswitch","3.components\u002Fswitch","i-lucide-toggle-right",{"title":269,"path":270,"stem":271,"package":60,"icon":154},"Tabs","\u002Fcomponents\u002Ftabs","3.components\u002Ftabs",{"title":273,"path":274,"stem":275,"package":60,"icon":140},"Textarea","\u002Fcomponents\u002Ftextarea","3.components\u002Ftextarea",{"title":277,"path":278,"stem":279,"package":60,"icon":199},"Toast","\u002Fcomponents\u002Ftoast","3.components\u002Ftoast",{"title":281,"path":282,"stem":283,"package":60,"icon":267},"Toggle","\u002Fcomponents\u002Ftoggle","3.components\u002Ftoggle",{"title":285,"path":286,"stem":287,"package":60,"icon":154},"Toggle Group","\u002Fcomponents\u002Ftoggle-group","3.components\u002Ftoggle-group",{"title":289,"path":290,"stem":291,"package":60,"icon":292},"Tray","\u002Fcomponents\u002Ftray","3.components\u002Ftray","i-lucide-square-dashed-bottom",{"title":294,"path":295,"stem":296,"package":11,"icon":297},"Theming","\u002Ftheming","4.theming","i-lucide-palette",{"title":299,"path":300,"stem":301,"package":11,"icon":302},"Accessibility","\u002Faccessibility","5.accessibility","i-lucide-accessibility",{"title":304,"path":305,"stem":306,"package":11,"icon":307},"i18n","\u002Fi18n","6.i18n","i-lucide-languages",{"title":309,"path":310,"stem":311,"package":11,"icon":312},"Roadmap","\u002Froadmap","7.roadmap","i-lucide-map",[314,345,366,392,515,687,892,1106,1205,1229,1385,1521,1807,1913,2270,2346,2375,2452,2611,2633],{"id":315,"title":316,"body":317,"changelogOrder":11,"date":335,"description":336,"extension":337,"meta":338,"navigation":339,"package":76,"path":340,"seo":341,"stem":342,"version":343,"__hash__":344},"changelog\u002Fchangelog\u002Fcore-0.0.1.md","First release",{"type":318,"value":319,"toc":330},"minimark",[320],[321,322,323,326,327,329],"p",{},[324,325,31],"code",{}," publishes its first primitives: behavioural, accessible building blocks that run natively on Lynx and on the web from a single Vue codebase. Zero styling — compose them yourself or reach for ",[324,328,36],{},".",{"title":331,"searchDepth":332,"depth":333,"links":334},"",1,2,[],"2026-05-28","The first headless, accessible primitives land on npm — behaviour only, bring your own styles.","md",{},true,"\u002Fchangelog\u002Fcore-0.0.1",{"title":316,"description":336},"changelog\u002Fcore-0.0.1","v0.0.1","Q_t9O8yr_5su_uRuwOE7iPpXuH53v1YK8Co_xxGWlD8",{"id":346,"title":347,"body":348,"changelogOrder":11,"date":358,"description":359,"extension":337,"meta":360,"navigation":339,"package":76,"path":361,"seo":362,"stem":363,"version":364,"__hash__":365},"changelog\u002Fchangelog\u002Fcore-0.0.2.md","Performance & packaging",{"type":318,"value":349,"toc":356},[350],[321,351,352,353,355],{},"Icon resolution is memoized across instances to cut repeated work, with dependency pruning and packaging hardening to keep ",[324,354,31],{}," lean and safe to install.",{"title":331,"searchDepth":332,"depth":333,"links":357},[],"2026-05-29","Faster icon resolution and a leaner, hardened package ahead of wider testing.",{},"\u002Fchangelog\u002Fcore-0.0.2",{"title":347,"description":359},"changelog\u002Fcore-0.0.2","v0.0.2","qmHAuP2a9lAKeZcCuIvGgL1zLD_AVGQq2xso4EhcsZg",{"id":367,"title":368,"body":369,"changelogOrder":11,"date":384,"description":385,"extension":337,"meta":386,"navigation":339,"package":76,"path":387,"seo":388,"stem":389,"version":390,"__hash__":391},"changelog\u002Fchangelog\u002Fcore-0.0.3.md","Lynx-native a11y & shared gestures",{"type":318,"value":370,"toc":382},[371],[321,372,373,374,377,378,381],{},"Accessibility is wired through Lynx-native APIs instead of DOM assumptions, and the Swiper's gesture physics is extracted into a shared engine behind ",[324,375,376],{},"useDragGesture"," with a generic ",[324,379,380],{},"pickSnap"," helper — ready to power any swipe-driven primitive.",{"title":331,"searchDepth":332,"depth":333,"links":383},[],"2026-05-30","Accessibility now resolves through Lynx-native APIs, and gesture physics moves into one shared engine.",{},"\u002Fchangelog\u002Fcore-0.0.3",{"title":368,"description":385},"changelog\u002Fcore-0.0.3","v0.0.3","s3fDzHLL-Sc509FK2kd0oIVGAPqqm5ahXrCi21WOolY",{"id":393,"title":394,"body":395,"changelogOrder":11,"date":507,"description":508,"extension":337,"meta":509,"navigation":339,"package":76,"path":510,"seo":511,"stem":512,"version":513,"__hash__":514},"changelog\u002Fchangelog\u002Fcore-0.0.4.md","@vyui\u002Fcore v0.0.4",{"type":318,"value":396,"toc":503},[397,402],[398,399,401],"h3",{"id":400},"patch-changes","Patch Changes",[403,404,405],"ul",{},[406,407,408,409,411,412,415,416,415,419,415,422,425,426,429,430,432,433,440,441,444,445,447,448,451,452,455,456,459,460,462,463,466,467,470,471,473,474,477,478,481,482,484,485,487,488,490,491,494,495,498,499,502],"li",{},"Add NumberField — headless ",[324,410,31],{}," primitive (",[324,413,414],{},"NumberFieldRoot"," \u002F ",[324,417,418],{},"NumberFieldInput",[324,420,421],{},"NumberFieldIncrement",[324,423,424],{},"NumberFieldDecrement",") with min\u002Fmax\u002Fstep, clamp\u002Fsnap and decimal-precision handling, plus a styled ",[324,427,428],{},"VyNumberField"," in ",[324,431,36],{},". (",[434,435,439],"a",{"href":436,"rel":437},"https:\u002F\u002Fgithub.com\u002FKealanAU\u002Fvyui\u002Fpull\u002F44",[438],"nofollow","#44",")",[442,443],"br",{},"Fix ",[324,446,137],{}," not reflecting programmatic value changes on native Lynx — controlled updates that don't originate from typing are now pushed through the imperative ",[324,449,450],{},"setValue"," path (the reactive ",[324,453,454],{},"value"," binding is initial-only on a native ",[324,457,458],{},"\u003Cinput>","). This makes NumberField's increment\u002Fdecrement buttons update the field on iOS\u002FAndroid, not just web.",[442,461],{},"Avatar now falls back to initials\u002Ficon when its image fails to load (wires the Lynx ",[324,464,465],{},"\u003Cimage>"," ",[324,468,469],{},"binderror"," event).",[442,472],{},"Document ",[324,475,476],{},"VyCombobox"," as the autocomplete pattern — ",[324,479,480],{},"searchable"," filtering over a fixed set covers the use case, so there is no separate Autocomplete component.",[442,483],{},"Widen ",[324,486,36],{},"'s ",[324,489,31],{}," peer-dependency range from ",[324,492,493],{},"^"," to ",[324,496,497],{},"~"," so it tracks ",[324,500,501],{},"0.0.x"," core patches without forcing a major bump.",{"title":331,"searchDepth":332,"depth":333,"links":504},[505],{"id":400,"depth":506,"text":401},3,"2026-06-01","Add NumberField — headless @vyui\u002Fcore primitive (NumberFieldRoot \u002F NumberFieldInput \u002F NumberFieldIncrement \u002F NumberFieldDecrement) with min\u002Fmax\u002Fstep, clamp\u002Fs…",{},"\u002Fchangelog\u002Fcore-0.0.4",{"title":394,"description":508},"changelog\u002Fcore-0.0.4","v0.0.4","CM2B6vpfYBWZ1HchBr38avHQASkBrlvgT_0BVq1Nb_0",{"id":516,"title":517,"body":518,"changelogOrder":11,"date":679,"description":680,"extension":337,"meta":681,"navigation":339,"package":76,"path":682,"seo":683,"stem":684,"version":685,"__hash__":686},"changelog\u002Fchangelog\u002Fcore-0.0.5.md","@vyui\u002Fcore v0.0.5",{"type":318,"value":519,"toc":676},[520,522],[398,521,401],{"id":400},[403,523,524,564,623],{},[406,525,526,527,411,529,532,533,536,537,539,540,543,544,547,548,440,553,555,556,559,560,563],{},"Add AspectRatio — headless ",[324,528,31],{},[324,530,531],{},"AspectRatioRoot",", exported as both ",[324,534,535],{},"AspectRatio"," and ",[324,538,531],{},") that constrains its default slot to a given ",[324,541,542],{},"ratio"," (number, default ",[324,545,546],{},"1","). (",[434,549,552],{"href":550,"rel":551},"https:\u002F\u002Fgithub.com\u002FKealanAU\u002Fvyui\u002Fpull\u002F46",[438],"#46",[442,554],{},"Built for the Lynx render layer: it renders a single ",[324,557,558],{},"\u003Cview>"," using the native CSS ",[324,561,562],{},"aspect-ratio"," property (supported by Lynx's Starlight layout engine), with no absolutely-positioned padding wrapper.",[406,565,566,567,569,570,415,573,415,576,579,580,582,583,585,586,588,589,591,592,595,596,598,599,602,603,440,606,608,609,487,611,614,615,618,619,622],{},"Add Avatar — Lynx-native ",[324,568,31],{}," primitives (",[324,571,572],{},"AvatarRoot",[324,574,575],{},"AvatarImage",[324,577,578],{},"AvatarFallback","). ",[324,581,572],{}," provides image load-status context; ",[324,584,575],{}," renders a Lynx ",[324,587,465],{}," and downgrades to the error state on ",[324,590,469],{}," (",[324,593,594],{},"@error","); ",[324,597,578],{}," shows when no image is loaded, with a ",[324,600,601],{},"delayMs"," flash-avoidance delay. (",[434,604,552],{"href":550,"rel":605},[438],[442,607],{},"Refactor ",[324,610,36],{},[324,612,613],{},"VyAvatar"," to compose the new core primitives for behaviour (load-status + fallback) while keeping its public ",[324,616,617],{},"AvatarProps"," API, initials derivation, chip overlay, theming, and ",[324,620,621],{},"AvatarGroup"," size\u002Fcolor inheritance unchanged.",[406,624,625,626,440,631,633,635,636,667,669,635,671],{},"Fixes from #67, #68 and #70. (",[434,627,630],{"href":628,"rel":629},"https:\u002F\u002Fgithub.com\u002FKealanAU\u002Fvyui\u002Fpull\u002F71",[438],"#71",[442,632],{},[324,634,31],{},":",[403,637,638,645,657],{},[406,639,640,641,644],{},"Icon: reject ",[324,642,643],{},"color"," values that could inject SVG markup when resolving icon sources (#67).",[406,646,647,648,651,652,536,654,656],{},"Sheet: multi-snap drag now settles to the nearest snap point, with main-thread usage fixes across ",[324,649,650],{},"SheetContentImpl",", ",[324,653,123],{},[324,655,376],{}," (#68).",[406,658,659,660,663,664,666],{},"Primitive: treat ",[324,661,662],{},"image"," as a self-closing leaf — Vue's empty-slot fragment\u002Fcomment anchors were materialized as real children by vue-lynx, and a native ",[324,665,465],{}," with any child fails to render (native-only breakage; lynx-web tolerated it) (#70).",[442,668],{},[324,670,36],{},[403,672,673],{},[406,674,675],{},"Forward icon classes\u002Fprops through ActionSheet, Alert, Button, Tabs, Toast, ToggleGroup and DropdownMenu items, and fix Drawer\u002Ftheme slot classes so drawer animations work again (#70).",{"title":331,"searchDepth":332,"depth":333,"links":677},[678],{"id":400,"depth":506,"text":401},"2026-06-11","Add AspectRatio — headless @vyui\u002Fcore primitive (AspectRatioRoot, exported as both AspectRatio and AspectRatioRoot) that constrains its default slot to a giv…",{},"\u002Fchangelog\u002Fcore-0.0.5",{"title":517,"description":680},"changelog\u002Fcore-0.0.5","v0.0.5","vJGTL_ZF7T-mR5aykkgruJd9yfj4Z_LRTDw7oxnfg_4",{"id":688,"title":689,"body":690,"changelogOrder":11,"date":884,"description":885,"extension":337,"meta":886,"navigation":339,"package":76,"path":887,"seo":888,"stem":889,"version":890,"__hash__":891},"changelog\u002Fchangelog\u002Fcore-0.0.6.md","Gesture & scroll motion overhaul",{"type":318,"value":691,"toc":882},[692,695,765,799,840,854],[321,693,694],{},"A motion-focused release: the scroll and gesture primitives gain the physics they were missing on native Lynx.",[321,696,697,701,702,705,706,709,710,713,714,651,717,651,720,415,723,726,727,730,731,595,734,737,738,741,742,745,746,749,750,753,754,415,757,760,761,764],{},[698,699,700],"strong",{},"FeedList"," gets a full pull-to-refresh + paging surface. Pull-to-refresh is a custom rubber-band driven by ",[324,703,704],{},":main-thread-bindtouch*"," worklets on a bare ",[324,707,708],{},"\u003Clist>"," — it only engages at the top edge, so normal scrolling and load-more are untouched. New: ",[324,711,712],{},"enableRefresh"," + ",[324,715,716],{},"v-model:refreshing",[324,718,719],{},"refreshThreshold",[324,721,722],{},"refresh",[324,724,725],{},"refreshStateChange"," emits and a ",[324,728,729],{},"refreshHeader"," slot (",[324,732,733],{},"{ state, progress }",[324,735,736],{},"enableBounce"," rubber-band overscroll at both edges; ",[324,739,740],{},"itemSnap"," native ",[324,743,744],{},"item-snap"," paging with a ",[324,747,748],{},"snap"," emit; and debounced load-more on ",[324,751,752],{},"scrolltolower"," with ",[324,755,756],{},"loadMoreFooter",[324,758,759],{},"noMoreDataFooter"," slots. The legacy native ",[324,762,763],{},"\u003Crefresh>"," path (unregistered in the OSS Lynx runtime) is removed.",[321,766,767,770,771,651,774,651,777,780,781,651,784,415,787,790,791,794,795,798],{},[698,768,769],{},"ScrollView"," adds a main-thread custom bounce\u002Foverscroll system mirroring lynx-ui: ",[324,772,773],{},"enableBounces",[324,775,776],{},"singleSidedBounce",[324,778,779],{},"alwaysBouncing",", trigger-distance and estimated-size props, ",[324,782,783],{},"enableRTL",[324,785,786],{},"upperBounceItem",[324,788,789],{},"lowerBounceItem"," slots, and an ",[324,792,793],{},"onScrollToBounces"," event — driven by the new ",[324,796,797],{},"useBounce"," composable.",[321,800,801,803,804,807,808,651,811,651,814,713,817,820,821,651,824,651,827,713,830,651,833,836,837,329],{},[698,802,259],{}," loop is now truly seamless — edge slides are cloned and the transform rebases invisibly across the first↔last seam under both drag-release and autoplay. Adds ",[324,805,806],{},"loop","\u002F",[324,809,810],{},"circular",[324,812,813],{},"axisLock",[324,815,816],{},"autoplay",[324,818,819],{},"interval",", plus lynx-ui prop parity: ",[324,822,823],{},"spaceBetween",[324,825,826],{},"mode",[324,828,829],{},"align",[324,831,832],{},"containerWidth",[324,834,835],{},"offsetLimit",", and ",[324,838,839],{},"rtl",[321,841,842,845,846,849,850,853],{},[698,843,844],{},"Sortable, Draggable & SwipeAction"," tighten on-device gesture fidelity: velocity-aware release (fling\u002Fmomentum), axis locking, autoscroll near Sortable list edges, and bounds clamping, via shared helpers in ",[324,847,848],{},"shared\u002Fgesture\u002Fphysics.ts",". Fixes two regressions — Sortable long-press now arms entirely on the main thread (the BG round-trip was being dropped on-device), and SwipeAction cancels its in-flight ",[324,851,852],{},"fill: 'forwards'"," snap on touchstart so a follow-up slow drag isn't masked.",[321,855,856,858,859,862,863,866,867,536,870,873,874,877,878,881],{},[698,857,277],{}," internals are prepped for stacking: ",[324,860,861],{},"ToastRoot"," binds its own ",[324,864,865],{},"@layoutchange"," to feed fan-out geometry, exposes ",[324,868,869],{},"duration",[324,871,872],{},"progress"," slot values, and ships a new ",[324,875,876],{},"ToastSwipe"," main-thread swipe-to-dismiss layer (exporting the unit-tested ",[324,879,880],{},"decideDismiss"," policy).",{"title":331,"searchDepth":332,"depth":333,"links":883},[],"2026-06-16","Custom pull-to-refresh and overscroll bounce, a seamless Swiper loop, sharper drag physics, and Sonner-ready Toast internals.",{},"\u002Fchangelog\u002Fcore-0.0.6",{"title":689,"description":885},"changelog\u002Fcore-0.0.6","v0.0.6","5sKdzA9a3IqMTIKU8BZxvG8c3imTaNhMwDiqKKMgJHM",{"id":893,"title":894,"body":895,"changelogOrder":1097,"date":1098,"description":1099,"extension":337,"meta":1100,"navigation":339,"package":76,"path":1101,"seo":1102,"stem":1103,"version":1104,"__hash__":1105},"changelog\u002Fchangelog\u002Fcore-0.1.0.md","@vyui\u002Fcore v0.1.0",{"type":318,"value":896,"toc":1093},[897,901,974,976],[398,898,900],{"id":899},"minor-changes","Minor Changes",[403,902,903],{},[406,904,905,906,909,910],{},"0610d70: Input\u002FTextarea: surface the on-screen keyboard via a normalized ",[324,907,908],{},"keyboard"," event.",[403,911,912,940,953],{},[406,913,914,536,916,918,919,807,922,925,926,753,928,931,932,935,936,939],{},[324,915,137],{},[324,917,273],{}," (core) and ",[324,920,921],{},"VyInput",[324,923,924],{},"VyTextarea"," (kit) now emit ",[324,927,908],{},[324,929,930],{},"{ visible: boolean, height: number, safeAreaBottom: number }",", normalized from Lynx's raw element payload ",[324,933,934],{},"{ show, keyBoardHeight, safeAreaBottom }"," (note the capital B in ",[324,937,938],{},"keyBoardHeight",").",[406,941,942,943,466,946,949,950,329],{},"This is the reliable keyboard signal under vue-lynx: the global ",[324,944,945],{},"GlobalEventEmitter",[324,947,948],{},"keyboardstatuschanged"," event is emitted natively but is not delivered to the vue-lynx background runtime, so the per-element event is what consumers (and keyboard-aware lifts) should use. See ",[324,951,952],{},"docs\u002Fupstream\u002Fvue-lynx-keyboard.md",[406,954,955,957,958,807,961,807,964,967,968,971,972,329],{},[324,956,924],{}," also now forwards ",[324,959,960],{},"confirm",[324,962,963],{},"focus",[324,965,966],{},"blur"," (previously only ",[324,969,970],{},"update:modelValue","), matching ",[324,973,921],{},[398,975,401],{"id":400},[403,977,978,1015,1030,1090],{},[406,979,980,981,984,985,987,988,990,991,993,994,997,998,1001,1002,1004,1005,1007,1008,1010,1011,1014],{},"0610d70: FeedList: honour a ",[324,982,983],{},"noMoreData"," prop so the end-of-list footer no longer shows while more pages remain.",[442,986],{},"Previously the core ",[324,989,700],{}," rendered the ",[324,992,759],{}," slot whenever ",[324,995,996],{},"loadingMore"," was false, so \"no more items\" appeared immediately even with pages still loadable (the kit ",[324,999,1000],{},"VyFeedList"," already forwarded ",[324,1003,983],{},", but core ignored it). The footer row now only renders while ",[324,1006,996],{}," (load-more spinner) or once ",[324,1009,983],{}," is ",[324,1012,1013],{},"true"," (end-of-list); otherwise no footer renders.",[406,1016,1017,1018,1021,1022,1025,1026,494,1028,329],{},"baf0692: Fix drawer\u002Fsheet not opening fully: Lynx native drops the ",[324,1019,1020],{},"dvh"," unit, collapsing the panel to its content height. Size the sheet panel with ",[324,1023,1024],{},"vh"," and switch all viewport-height classes in the kit themes (drawer, modal, select, combobox, popover, dropdownMenu, island, actionSheet) from ",[324,1027,1020],{},[324,1029,1024],{},[406,1031,1032,1033,1087,1089],{},"0610d70: Fix Sortable drag-to-reorder doing nothing on device\u002Fweb:",[403,1034,1035,1060],{},[406,1036,1037,1040,1041,466,1044,1047,1048,1051,1052,1055,1056,1059],{},[698,1038,1039],{},"Registry was empty on the main thread."," Items registered their handle via a background-thread write to the ",[324,1042,1043],{},"itemHandlesMT",[324,1045,1046],{},"MainThreadRef",", which vue-lynx 0.4.0 silently drops. The lifted row never moved, siblings never shifted, and the drop saw ",[324,1049,1050],{},"count === 0"," so no reorder committed. Registration (element + index) now runs on the main thread, bound to ",[324,1053,1054],{},"main-thread-binduiappear",", with MT teardown on unmount and ",[324,1057,1058],{},"runOnMainThread"," setter worklets for index\u002Fdisabled sync.",[406,1061,1062,1068,1069,807,1071,1074,1075,1078,1079,1082,1083,1086],{},[698,1063,1064,1065,329],{},"Long-press used MT ",[324,1066,1067],{},"setTimeout"," The main-thread worklet runtime does not expose ",[324,1070,1067],{},[324,1072,1073],{},"clearTimeout"," (internal in ",[324,1076,1077],{},"@lynx-js\u002Ftypes","), so the long-press timer threw and the row never lifted for any ",[324,1080,1081],{},"longPressMs > 0",". The hold is now timed by polling ",[324,1084,1085],{},"requestAnimationFrame"," on the main thread.",[442,1088],{},"Public props\u002Femits\u002Fslots unchanged.",[406,1091,1092],{},"300e34f: Keep sheet snap and drag geometry synchronized with dynamic viewport changes, and make kit swipers fill their measured container when no explicit item width is provided.",{"title":331,"searchDepth":332,"depth":333,"links":1094},[1095,1096],{"id":899,"depth":506,"text":900},{"id":400,"depth":506,"text":401},1000,"2026-06-25","0610d70: Input\u002FTextarea: surface the on-screen keyboard via a normalized keyboard event.",{},"\u002Fchangelog\u002Fcore-0.1.0",{"title":894,"description":1099},"changelog\u002Fcore-0.1.0","v0.1.0","Qj7pVlbVelBfF_XNbNkTs0tvgXYzDVbctUb2U8p9M0E",{"id":1107,"title":1108,"body":1109,"changelogOrder":1196,"date":1197,"description":1198,"extension":337,"meta":1199,"navigation":339,"package":76,"path":1200,"seo":1201,"stem":1202,"version":1203,"__hash__":1204},"changelog\u002Fchangelog\u002Fcore-0.1.1.md","@vyui\u002Fcore v0.1.1",{"type":318,"value":1110,"toc":1193},[1111,1113],[398,1112,401],{"id":400},[403,1114,1115,1167],{},[406,1116,1117,1118,1121,1122,1124,1125,1128,1129,415,1132,1135,1136,1139,1140,1143,1144,1147,1148,1150,466,1152,1155,1156,1159,1160,1163,1164,1166],{},"bb4d208: Add ",[324,1119,1120],{},"VyTray"," — a morphing, multi-view bottom sheet built on the core ",[324,1123,231],{}," primitives. Views (",[324,1126,1127],{},"VyTrayView",") are measured per screen and the panel animates its height to fit whichever is showing (\"grows into place\"), with a back stack (",[324,1130,1131],{},"useTray().goBack",[324,1133,1134],{},"canGoBack","), a persistent ",[324,1137,1138],{},"#footer"," slot, and ",[324,1141,1142],{},"floating"," (detached card) vs ",[324,1145,1146],{},"flush"," (edge-anchored) variants.",[442,1149],{},[324,1151,31],{},[324,1153,1154],{},"SheetContent"," gains a ",[324,1157,1158],{},"fitContent"," prop that sizes the panel to its natural content height instead of a ",[324,1161,1162],{},"snapPoints × viewport"," fraction — the drag\u002Fslide\u002Fbackdrop physics reuse the measured height, so nothing else changes. This is the mode ",[324,1165,1120],{}," builds on.",[406,1168,1169,1170,1173,1174,1177,1178,1181,1182,1184,1185,1188,1189,1192],{},"31c2202: Add side-aware sheet and drawer motion. ",[324,1171,1172],{},"SheetRoot"," now accepts ",[324,1175,1176],{},"side"," for top, right, bottom, and left edge placement with matching slide animations and drag-to-dismiss physics. ",[324,1179,1180],{},"VyDrawer"," forwards its side to the core sheet, and sheet-backed kit components can opt into alternate edges.",[442,1183],{},"Edge placement and the enter\u002Fleave slide keyframes key off a ",[324,1186,1187],{},"vyui-sheet__content--{side}"," class rather than a ",[324,1190,1191],{},"[data-side]"," attribute selector, so they apply on Lynx native (which does not match attribute selectors in CSS) — restoring the open\u002Fclose animation on device.",{"title":331,"searchDepth":332,"depth":333,"links":1194},[1195],{"id":400,"depth":506,"text":401},1001,"2026-07-04","bb4d208: Add VyTray — a morphing, multi-view bottom sheet built on the core Sheet primitives.",{},"\u002Fchangelog\u002Fcore-0.1.1",{"title":1108,"description":1198},"changelog\u002Fcore-0.1.1","v0.1.1","Q3orlifP3NYpUWiXvi3oYWqCUDTtxB0FxZy--N0leiA",{"id":1206,"title":1207,"body":1208,"changelogOrder":1220,"date":1221,"description":1222,"extension":337,"meta":1223,"navigation":339,"package":76,"path":1224,"seo":1225,"stem":1226,"version":1227,"__hash__":1228},"changelog\u002Fchangelog\u002Fcore-0.1.2.md","@vyui\u002Fcore v0.1.2",{"type":318,"value":1209,"toc":1217},[1210,1212],[398,1211,401],{"id":400},[403,1213,1214],{},[406,1215,1216],{},"cbbbcbf: Ensure tray, drawer, and action sheet content renders above the sheet backdrop by default, and disable automatic capitalization and correction for kit email and password inputs.",{"title":331,"searchDepth":332,"depth":333,"links":1218},[1219],{"id":400,"depth":506,"text":401},1002,"2026-07-05","cbbbcbf: Ensure tray, drawer, and action sheet content renders above the sheet backdrop by default, and disable automatic capitalization and correction for k…",{},"\u002Fchangelog\u002Fcore-0.1.2",{"title":1207,"description":1222},"changelog\u002Fcore-0.1.2","v0.1.2","a64Fm9fx61_MJaot3Gz118FM9eqKcc6K4gJ5zsdBWEc",{"id":1230,"title":1231,"body":1232,"changelogOrder":1376,"date":1377,"description":1378,"extension":337,"meta":1379,"navigation":339,"package":76,"path":1380,"seo":1381,"stem":1382,"version":1383,"__hash__":1384},"changelog\u002Fchangelog\u002Fcore-0.2.0.md","@vyui\u002Fcore v0.2.0",{"type":318,"value":1233,"toc":1373},[1234,1236],[398,1235,900],{"id":899},[403,1237,1238,1307],{},[406,1239,1240,1241,1243,1244,651,1247,1250,1251,1254,1255,1258,1259,1263,1264,1266,1267,1269,1270,1272,1273,1276,1277,1279,1280,1283,1284,1287,1288,1290,1291,487,1293,1296,1297,1299,1300,1303,1304,1306],{},"c344b72: Per-component subpath entries for tree-shakeable consumption. ",[324,1242,36],{}," now exposes every component as its own entry point (",[324,1245,1246],{},"@vyui\u002Fkit\u002Fbutton",[324,1248,1249],{},"@vyui\u002Fkit\u002Ftray",", …) with the same canonical ",[324,1252,1253],{},"Vy*"," bindings as the barrel, so migrating is a specifier swap. Because the vue-lynx main-thread worklet pipeline prunes by ",[324,1256,1257],{},"sideEffects"," globs over whatever is ",[1260,1261,1262],"em",{},"reached"," (bare side-effect imports erase export usage), deep entries are the only way to ship less: importing ",[324,1265,1246],{}," now reaches ~37 modules \u002F 26 worklet registrations instead of the barrel's ~294 \u002F 118.",[442,1268],{},"To make this work end-to-end, kit's build rewrites its own ",[324,1271,31],{}," barrel imports to per-file deep specifiers (",[324,1274,1275],{},"@vyui\u002Fcore\u002Fdist\u002Fcomponents\u002F….vue.js","), and ",[324,1278,31],{}," exposes a ",[324,1281,1282],{},".\u002Fdist\u002F*.js"," wildcard export to resolve them. Barrel imports (",[324,1285,1286],{},"import { VyButton } from '@vyui\u002Fkit'",") keep working unchanged — they just keep the everything-ships behavior.",[442,1289],{},"Also fixes ",[324,1292,36],{},[324,1294,1295],{},"sideEffects: false",", which let bundlers drop the package entirely from the vue-lynx main-thread worklet slice (entered via a bare side-effect import that uses no exports), so every transitively-imported ",[324,1298,31],{}," worklet went unregistered and consumers crashed with ",[324,1301,1302],{},"bind of undefined",". Kit now declares the same ",[324,1305,1257],{}," globs as core.",[406,1308,1309,1310,1313,1314],{},"c344b72: Ship per-file, source-shaped ESM dist (Vite lib + Rollup ",[324,1311,1312],{},"preserveModules",") instead of an rslib bundle.",[403,1315,1316,1327,1355,1362],{},[406,1317,1318,1319,1322,1323,1326],{},"Fixes the ",[324,1320,1321],{},"__WEBPACK_EXTERNAL_MODULE_vue_lynx_* is not defined"," main-thread crash for npm consumers of worklet-driven components (VyTray, VyDrawer, Slider, …): worklet modules now keep direct named ",[324,1324,1325],{},"vue-lynx"," imports the consumer's MT toolchain can follow.",[406,1328,1329,1330,1333,1334,1337,1338,1341,1342,1345,1346,1349,1350,487,1352,1354],{},"Fixes the follow-on ",[324,1331,1332],{},"cannot read property 'bind' of undefined"," main-thread crash: each pre-compiled worklet module retains a ",[324,1335,1336],{},"\"main thread\""," marker so the consumer's ",[324,1339,1340],{},"worklet-loader-mt"," extracts its ",[324,1343,1344],{},"registerWorkletInternal"," calls (with ",[324,1347,1348],{},"_wkltId","s matching the background bundle) instead of dropping them. ",[324,1351,36],{},[324,1353,1257],{}," is widened to keep the transitive-core-worklet MT imports from being tree-shaken.",[406,1356,1357,1358,1361],{},"SFC ",[324,1359,1360],{},"\u003Cstyle>"," CSS is now published and auto-imported per module — the old bundle stubbed it, so consumers silently lost component styles.",[406,1363,1364,1365,1368,1369,1372],{},"Each SFC ships as a single ",[324,1366,1367],{},"X.vue.js","; a ",[324,1370,1371],{},"check-dist-shape"," guard fails the build on any bundle fingerprint or a worklet module missing its marker.",{"title":331,"searchDepth":332,"depth":333,"links":1374},[1375],{"id":899,"depth":506,"text":900},2000,"2026-07-06","c344b72: Per-component subpath entries for tree-shakeable consumption.",{},"\u002Fchangelog\u002Fcore-0.2.0",{"title":1231,"description":1378},"changelog\u002Fcore-0.2.0","v0.2.0","C0u9Cfkqq8lopknOYz6MNPz_OM1p5NhMXwUQVorWTYg",{"id":1386,"title":1387,"body":1388,"changelogOrder":11,"date":507,"description":1515,"extension":337,"meta":1516,"navigation":339,"package":60,"path":1517,"seo":1518,"stem":1519,"version":364,"__hash__":1520},"changelog\u002Fchangelog\u002Fkit-0.0.2.md","NumberField, Island DX & polish",{"type":318,"value":1389,"toc":1513},[1390,1396,1416,1468,1473],[321,1391,1392,1395],{},[324,1393,1394],{},"@vyui\u002Fkit@0.0.2"," adds a component, sharpens an existing one, and fixes a handful of native-Lynx rough edges.",[321,1397,1398,1401,1402,411,1404,415,1406,415,1408,415,1410,425,1412,429,1414,329],{},[698,1399,1400],{},"NumberField"," — a new headless ",[324,1403,31],{},[324,1405,414],{},[324,1407,418],{},[324,1409,421],{},[324,1411,424],{},[324,1413,428],{},[324,1415,36],{},[321,1417,1418,1420,1421,1424,1425,415,1428,415,1431,1434,1435,1438,1439,415,1442,1445,1446,1448,1449,1452,1453,1456,1457,1459,1460,536,1462,494,1465,1467],{},[698,1419,142],{}," gets a clearer API and better defaults. A new ",[324,1422,1423],{},"layer"," prop (",[324,1426,1427],{},"overlay",[324,1429,1430],{},"base",[324,1432,1433],{},"inline",") splits stacking from placement: ",[324,1436,1437],{},"position"," now only picks the viewport edge (",[324,1440,1441],{},"top",[324,1443,1444],{},"bottom","), while ",[324,1447,1423],{}," decides whether the island floats over content, sits on a low layer beneath modals and drawers, or drops into normal flow for a parent to place. Floating is applied via an inline ",[324,1450,1451],{},"style",", so a lone ",[324,1454,1455],{},"\u003CVyIsland>"," hovers with no wrapper on Lynx. Out of the box ",[324,1458,142],{}," defaults to ",[324,1461,1427],{},[324,1463,1464],{},"IslandGroup",[324,1466,1444],{},", so both float sensibly with zero config.",[321,1469,1470],{},[698,1471,1472],{},"Fixes & docs",[403,1474,1475,1483,1492,1500],{},[406,1476,1477,1479,1480,1482],{},[324,1478,137],{}," now reflects programmatic value changes on native Lynx — controlled updates that don't come from typing are pushed through the imperative ",[324,1481,450],{}," path, so NumberField's increment\u002Fdecrement work on iOS and Android, not just web.",[406,1484,1485,1487,1488,466,1490,909],{},[324,1486,83],{}," falls back to initials\u002Ficon when its image fails to load, wiring the Lynx ",[324,1489,465],{},[324,1491,469],{},[406,1493,1494,1496,1497,1499],{},[324,1495,476],{}," is documented as the autocomplete pattern — ",[324,1498,480],{}," filtering covers the use case, so there's no separate Autocomplete component.",[406,1501,1502,1503,1505,1506,494,1508,1510,1511,502],{},"The ",[324,1504,31],{}," peer-dependency range widens from ",[324,1507,493],{},[324,1509,497],{},", so kit tracks ",[324,1512,501],{},{"title":331,"searchDepth":332,"depth":333,"links":1514},[],"A new NumberField primitive, a cleaner Island API with sensible floating defaults, and a round of native-Lynx fixes.",{},"\u002Fchangelog\u002Fkit-0.0.2",{"title":1387,"description":1515},"changelog\u002Fkit-0.0.2","4NBYYz4fPAzYYf4dNih7Th2pMUbSqL-4t0euelogF7c",{"id":1522,"title":1523,"body":1524,"changelogOrder":11,"date":679,"description":1801,"extension":337,"meta":1802,"navigation":339,"package":60,"path":1803,"seo":1804,"stem":1805,"version":390,"__hash__":1806},"changelog\u002Fchangelog\u002Fkit-0.0.3.md","@vyui\u002Fkit v0.0.3",{"type":318,"value":1525,"toc":1798},[1526,1528],[398,1527,401],{"id":400},[403,1529,1530,1567,1664,1701,1770],{},[406,1531,566,1532,569,1534,415,1536,415,1538,579,1540,582,1542,585,1544,588,1546,591,1548,595,1550,598,1552,602,1554,440,1557,608,1559,487,1561,614,1563,618,1565,622],{},[324,1533,31],{},[324,1535,572],{},[324,1537,575],{},[324,1539,578],{},[324,1541,572],{},[324,1543,575],{},[324,1545,465],{},[324,1547,469],{},[324,1549,594],{},[324,1551,578],{},[324,1553,601],{},[434,1555,552],{"href":550,"rel":1556},[438],[442,1558],{},[324,1560,36],{},[324,1562,613],{},[324,1564,617],{},[324,1566,621],{},[406,1568,1569,1570,440,1575,1652,1654,1655,1657,1658,1660,1661,939],{},"Configurable semantic colors (nuxt\u002Fui-style), defined once and extensible. (",[434,1571,1574],{"href":1572,"rel":1573},"https:\u002F\u002Fgithub.com\u002FKealanAU\u002Fvyui\u002Fpull\u002F48",[438],"#48",[403,1576,1577,1592,1607,1617,1635],{},[406,1578,1579,1580,1583,1584,1587,1588,1591],{},"Single source of truth ",[324,1581,1582],{},"theme\u002Fcolor-constants.js"," (shared by themes + Tailwind preset); ",[324,1585,1586],{},"neutral"," split out of the configurable ",[324,1589,1590],{},"COLORS"," list and appended automatically (nuxt\u002Fui parity).",[406,1593,1594,1595,1598,1599,1602,1603,1606],{},"Theme files are now builder functions ",[324,1596,1597],{},"(colors) => themeObject","; ",[324,1600,1601],{},"useStyledComponent"," invokes them with the resolved list so ",[324,1604,1605],{},"appConfig.ui.colors"," configures the set at runtime.",[406,1608,1609,1612,1613,1616],{},[324,1610,1611],{},"@vyui\u002Fkit\u002Ftailwind"," adds a ",[324,1614,1615],{},"createVyuiPreset({ colors })"," factory; the default export is unchanged.",[406,1618,1619,1620,1623,1624,1627,1628,1630,1631,1634],{},"True type parity via the augmentable ",[324,1621,1622],{},"VyuiColorRegistry"," interface — ",[324,1625,1626],{},"declare module '@vyui\u002Fkit' { interface VyuiColorRegistry { tertiary: true } }"," makes custom colors autocomplete + typo-check on every component ",[324,1629,643],{}," prop, no build plugin needed. ",[324,1632,1633],{},"scripts\u002Fgen-colors.mjs"," generates the registry augmentation + CSS-var block.",[406,1636,1637,1638,1641,1642,1644,1645,1648,1649,1651],{},"Fixes a latent ",[324,1639,1640],{},"ThemeTV"," widening that typed ",[324,1643,643],{}," (and other variants) as ",[324,1646,1647],{},"PropertyKey"," on ",[324,1650,1601],{},"-based components.",[442,1653],{},"Breaking: theme default exports changed from objects to builder functions; ",[324,1656,1590],{}," no longer includes ",[324,1659,1586],{}," (use ",[324,1662,1663],{},"ALL_COLORS",[406,1665,625,1666,440,1669,1671,635,1673,1693,1695,635,1697],{},[434,1667,630],{"href":628,"rel":1668},[438],[442,1670],{},[324,1672,31],{},[403,1674,1675,1679,1687],{},[406,1676,640,1677,644],{},[324,1678,643],{},[406,1680,647,1681,651,1683,536,1685,656],{},[324,1682,650],{},[324,1684,123],{},[324,1686,376],{},[406,1688,659,1689,663,1691,666],{},[324,1690,662],{},[324,1692,465],{},[442,1694],{},[324,1696,36],{},[403,1698,1699],{},[406,1700,675],{},[406,1702,1703,1704,1707,1708,1710,1711,440,1716,1718,1719,1722,1723,651,1726,651,1729,651,1732,651,1735,651,1738,651,1741,651,1744,651,1747,651,1750,651,1753,651,1756,651,1759,651,1762,1765,1766,1769],{},"Fix stranded foreground colors on Lynx (",[324,1705,1706],{},"enableCSSInheritance: false","). Color set on a wrapping ",[324,1709,558],{}," slot never reached the nested text\u002Ficon, so it rendered in the default color — invisible on dark\u002Fcolored surfaces (e.g. a neutral-solid button or solid card). (",[434,1712,1715],{"href":1713,"rel":1714},"https:\u002F\u002Fgithub.com\u002FKealanAU\u002Fvyui\u002Fpull\u002F52",[438],"#52",[442,1717],{},"Foreground ",[324,1720,1721],{},"text-*"," now lands on the text-bearing slots (label \u002F title \u002F description \u002F icon \u002F input value) across ",[324,1724,1725],{},"input",[324,1727,1728],{},"textarea",[324,1730,1731],{},"numberField",[324,1733,1734],{},"select",[324,1736,1737],{},"combobox",[324,1739,1740],{},"toggle",[324,1742,1743],{},"toggleGroup",[324,1745,1746],{},"chip",[324,1748,1749],{},"islandButton",[324,1751,1752],{},"card",[324,1754,1755],{},"accordion",[324,1757,1758],{},"dropdownMenu",[324,1760,1761],{},"tabs",[324,1763,1764],{},"stepper",". State-driven colors on child elements use the ",[324,1767,1768],{},"group-data-[state=…]"," form, and the Tailwind preset safelist is widened to cover those variants so they aren't purged.",[406,1771,1772,1773,651,1780,651,1785,1792,1793],{},"Updated dependencies [",[434,1774,1777],{"href":1775,"rel":1776},"https:\u002F\u002Fgithub.com\u002FKealanAU\u002Fvyui\u002Fcommit\u002F1b0d3bc1f6932e668a1830ea031dc046888c0711",[438],[324,1778,1779],{},"1b0d3bc",[434,1781,1783],{"href":1775,"rel":1782},[438],[324,1784,1779],{},[434,1786,1789],{"href":1787,"rel":1788},"https:\u002F\u002Fgithub.com\u002FKealanAU\u002Fvyui\u002Fcommit\u002F9a0241cdad8a594e49f9e8965c10fdc70b3bee0c",[438],[324,1790,1791],{},"9a0241c","]:",[403,1794,1795],{},[406,1796,1797],{},"@vyui\u002Fcore@0.0.5",{"title":331,"searchDepth":332,"depth":333,"links":1799},[1800],{"id":400,"depth":506,"text":401},"Add Avatar — Lynx-native @vyui\u002Fcore primitives (AvatarRoot \u002F AvatarImage \u002F AvatarFallback).",{},"\u002Fchangelog\u002Fkit-0.0.3",{"title":1523,"description":1801},"changelog\u002Fkit-0.0.3","3er91xlxQ-x36d2y7j1hciegYUdemK3QxlQkkCpjrr0",{"id":1808,"title":1809,"body":1810,"changelogOrder":11,"date":884,"description":1907,"extension":337,"meta":1908,"navigation":339,"package":60,"path":1909,"seo":1910,"stem":1911,"version":513,"__hash__":1912},"changelog\u002Fchangelog\u002Fkit-0.0.4.md","Stacked toasts & FeedList gestures",{"type":318,"value":1811,"toc":1905},[1812,1818,1823,1865,1872],[321,1813,1814,1817],{},[324,1815,1816],{},"@vyui\u002Fkit@0.0.4"," brings the new core gesture surface to the styled components.",[321,1819,1820,1822],{},[698,1821,277],{}," gains Sonner-style behaviour, all off by default:",[403,1824,1825,1844,1857],{},[406,1826,1827,1830,1831,591,1834,1836,1837,1839,1840,1843],{},[324,1828,1829],{},"stacked"," — collapses toasts into an overlapping pile (front toast fully visible, the rest peeking scaled-down behind it) and fans them out when expanded; tap to toggle. Pair ",[324,1832,1833],{},"stackFrom",[324,1835,1441],{}," | ",[324,1838,1444],{},") with the ",[324,1841,1842],{},"ToastViewport"," position.",[406,1845,1846,1849,1850,1853,1854,1856],{},[324,1847,1848],{},"swipe"," (+ ",[324,1851,1852],{},"swipeDirection",") — fling a toast sideways to dismiss. The card rides an inner ",[324,1855,876],{}," layer so the swipe transform never collides with the stacking transform.",[406,1858,1859,1861,1862,939],{},[324,1860,872],{}," — a thin countdown bar that drains with the auto-dismiss timer (pauses while expanded, hidden when ",[324,1863,1864],{},"duration: 0",[321,1866,1867,1868,1871],{},"A plain ",[324,1869,1870],{},"VyToast"," still renders as a single gapped-column card.",[321,1873,1874,1876,1877,651,1879,651,1881,651,1883,1885,1886,415,1888,1890,1891,730,1893,1895,1896,1898,1899,1901,1902,1904],{},[698,1875,700],{}," wrapper now forwards the full pull-to-refresh surface to core — ",[324,1878,712],{},[324,1880,716],{},[324,1882,719],{},[324,1884,736],{},", the ",[324,1887,722],{},[324,1889,725],{}," emits, and the ",[324,1892,729],{},[324,1894,733],{},") — plus the new ",[324,1897,740],{}," prop and ",[324,1900,748],{}," emit. The ",[324,1903,756],{}," slot is aligned with core's new no-arg signature (the footer renders only while loading).",{"title":331,"searchDepth":332,"depth":333,"links":1906},[],"Sonner-style stacked, swipeable toasts with a countdown bar, and a FeedList wrapper that forwards the new pull-to-refresh, bounce and snap surface.",{},"\u002Fchangelog\u002Fkit-0.0.4",{"title":1809,"description":1907},"changelog\u002Fkit-0.0.4","Q-ltKOMEkPqFP6WeafeDiWyyCV9_va7-AhE7idw0jxE",{"id":1914,"title":1915,"body":1916,"changelogOrder":1097,"date":1098,"description":1099,"extension":337,"meta":2265,"navigation":339,"package":60,"path":2266,"seo":2267,"stem":2268,"version":1104,"__hash__":2269},"changelog\u002Fchangelog\u002Fkit-0.1.0.md","@vyui\u002Fkit v0.1.0",{"type":318,"value":1917,"toc":2261},[1918,1920,1968,1970],[398,1919,900],{"id":899},[403,1921,1922],{},[406,1923,905,1924,909,1926],{},[324,1925,908],{},[403,1927,1928,1946,1954],{},[406,1929,1930,536,1932,918,1934,807,1936,925,1938,753,1940,931,1942,935,1944,939],{},[324,1931,137],{},[324,1933,273],{},[324,1935,921],{},[324,1937,924],{},[324,1939,908],{},[324,1941,930],{},[324,1943,934],{},[324,1945,938],{},[406,1947,942,1948,466,1950,949,1952,329],{},[324,1949,945],{},[324,1951,948],{},[324,1953,952],{},[406,1955,1956,957,1958,807,1960,807,1962,967,1964,971,1966,329],{},[324,1957,924],{},[324,1959,960],{},[324,1961,963],{},[324,1963,966],{},[324,1965,970],{},[324,1967,921],{},[398,1969,401],{"id":400},[403,1971,1972,1975,2006,2068,2135,2145,2147,2220,2231,2238,2242,2247,2251],{},[406,1973,1974],{},"300e34f: Add small horizontal (landscape) mode support — the work that gets the kit-demo running on mobile in landscape. Compact, viewport-safe layouts for overlays, sheets, menus, tabs, steppers, islands, cards, alerts, and toasts. Select and Combobox sheet structure is now fully themeable for responsive overrides.",[406,1976,1977,1978,536,1981,1984,1985],{},"0610d70: Input: forward ",[324,1979,1980],{},"@focus",[324,1982,1983],{},"@blur"," events.",[403,1986,1987],{},[406,1988,1989,1990,1992,1993,807,1995,1997,1998,2000,2001,536,2003,2005],{},"The core ",[324,1991,137],{}," emits ",[324,1994,963],{},[324,1996,966],{}," (with the current value), but the ",[324,1999,921],{}," wrapper only re-emitted ",[324,2002,970],{},[324,2004,960],{},", so consumers couldn't react to focus changes (e.g. to drive a keyboard-aware lift). It now forwards both.",[406,2007,2008,2009],{},"0610d70: IslandButton: bake the icon color so the theme's foreground actually applies.",[403,2010,2011,2037],{},[406,2012,2013,2016,2017,2020,2021,2024,2025,2028,2029,2032,2033,2036],{},[324,2014,2015],{},"IslandButton"," rendered its glyph through Lynx's ",[324,2018,2019],{},"\u003Csvg>",", which rasterizes the XML and can't inherit ",[324,2022,2023],{},"currentColor"," — so the ",[324,2026,2027],{},"text-slate-*"," utility on the ",[324,2030,2031],{},"leadingIcon"," slot (and the darker ",[324,2034,2035],{},"text-slate-900"," active shade) never reached the icon, leaving it stuck on its default fill (invisible on dark\u002Factive pills).",[406,2038,2039,2040,2042,2043,2046,2047,2050,2051,651,2053,651,2055,836,2057,2060,2061,2064,2065,2067],{},"It now resolves the foreground utility off the merged ",[324,2041,2031],{}," class — honoring the active state and any consumer ",[324,2044,2045],{},"ui.leadingIcon"," override — and passes it to ",[324,2048,2049],{},"\u003CVyIcon :color>",", matching the pattern already used by ",[324,2052,93],{},[324,2054,137],{},[324,2056,68],{},[324,2058,2059],{},"Combobox",". Non-palette colors (e.g. arbitrary ",[324,2062,2063],{},"text-[#abc]",") fall back to the icon's ",[324,2066,2023],{}," default.",[406,2069,2070,2071],{},"491db6a: Default input chrome to neutral: form controls no longer paint a primary border or icon by default.",[403,2072,2073,2101,2121],{},[406,2074,2075,2076,651,2078,651,2080,651,2082,651,2084,536,2086,2089,2090,2093,2094,2096,2097,2100],{},"Resting border on ",[324,2077,137],{},[324,2079,273],{},[324,2081,221],{},[324,2083,2059],{},[324,2085,1400],{},[324,2087,2088],{},"PinInput"," is now neutral (",[324,2091,2092],{},"border-neutral-200",") regardless of ",[324,2095,643],{}," — matching the no-focus-state reality on Lynx. The colored border stays available as opt-in via the ",[324,2098,2099],{},"highlight"," prop.",[406,2102,2103,2104,2106,2107,2109,2110,2113,2114,415,2117,2120],{},"Leading\u002Ftrailing icons (and ",[324,2105,1400],{}," steppers) now default to neutral (dimmed) instead of the ",[324,2108,643],{}," palette; override per-icon with your own ",[324,2111,2112],{},":color"," via the ",[324,2115,2116],{},"leading",[324,2118,2119],{},"trailing"," slots.",[406,2122,2123,2126,2127,2130,2131,2134],{},[324,2124,2125],{},"RadioGroup",": space the control from its label with ",[324,2128,2129],{},"gap-2"," on the item instead of ",[324,2132,2133],{},"ms-2"," on the wrapper — Lynx ignores logical inline margins, which collapsed the dot and text together.",[406,2136,1017,2137,1021,2139,1025,2141,494,2143,329],{},[324,2138,1020],{},[324,2140,1024],{},[324,2142,1020],{},[324,2144,1024],{},[406,2146,1092],{},[406,2148,2149,2150,2153,2154,2156,2157,2205,2207,2208,2211,2212,2215,2216,2219],{},"14e0722: Add ",[324,2151,2152],{},"@vyui\u002Fcli",", a shadcn-style CLI that copies ",[324,2155,36],{}," components (and their dependencies) into a project from a style-namespaced registry, rewriting imports to the consumer's aliases.",[403,2158,2159,2171,2174,2192,2195,2202],{},[406,2160,2161,415,2164,415,2167,2170],{},[324,2162,2163],{},"init",[324,2165,2166],{},"add",[324,2168,2169],{},"styles"," commands; tsconfig\u002Fjsconfig alias + package-manager detection.",[406,2172,2173],{},"Shadcn-style project preflight and automatic, idempotent app-entry\u002FTailwind wiring.",[406,2175,2176,651,2179,651,2182,2185,2186,836,2188,2191],{},[324,2177,2178],{},"list",[324,2180,2181],{},"view",[324,2183,2184],{},"info",", interactive ",[324,2187,2166],{},[324,2189,2190],{},"--dry-run"," discovery\u002Fpreview workflows.",[406,2193,2194],{},"Safe upgrades: explicit components may be overwritten while shared files and transitive dependencies remain user-owned.",[406,2196,2197,2198,2201],{},"Registry targets are contained to the project root (rejects ",[324,2199,2200],{},"..\u002F"," \u002F absolute \u002F null-byte paths).",[406,2203,2204],{},"Cyclic registry dependency graphs resolve instead of deadlocking.",[442,2206],{},"kit: drive the switch thumb with flex justification instead of ",[324,2209,2210],{},"translate-x-*"," (Lynx drops ",[324,2213,2214],{},"transform"," painting), and reset the native ",[324,2217,2218],{},"\u003Ctextarea>"," user-agent border.",[406,2221,2222,2223,2226,2227,2230],{},"300e34f: Make vertical tabs reserve a navigation rail and let their content fill the remaining width. Vertical triggers no longer inherit the horizontal ",[324,2224,2225],{},"pill"," variant's ",[324,2228,2229],{},"flex-1"," stretch — they keep their natural height and left-align their icon\u002Flabel so the rail reads as a sidebar list.",[406,2232,2233,2234],{},"Updated dependencies ",[2235,2236,2237],"span",{},"0610d70",[406,2239,2233,2240],{},[2235,2241,2237],{},[406,2243,2233,2244],{},[2235,2245,2246],{},"baf0692",[406,2248,2233,2249],{},[2235,2250,2237],{},[406,2252,2233,2253,2256],{},[2235,2254,2255],{},"300e34f",[403,2257,2258],{},[406,2259,2260],{},"@vyui\u002Fcore@0.1.0",{"title":331,"searchDepth":332,"depth":333,"links":2262},[2263,2264],{"id":899,"depth":506,"text":900},{"id":400,"depth":506,"text":401},{},"\u002Fchangelog\u002Fkit-0.1.0",{"title":1915,"description":1099},"changelog\u002Fkit-0.1.0","bxuy3lyu8hsJVghc8Av0jWjrpL4zS0_i-J5JVnGnSNY",{"id":2271,"title":2272,"body":2273,"changelogOrder":1196,"date":1197,"description":1198,"extension":337,"meta":2341,"navigation":339,"package":60,"path":2342,"seo":2343,"stem":2344,"version":1203,"__hash__":2345},"changelog\u002Fchangelog\u002Fkit-0.1.1.md","@vyui\u002Fkit v0.1.1",{"type":318,"value":2274,"toc":2338},[2275,2277],[398,2276,401],{"id":400},[403,2278,2279,2309,2323,2328],{},[406,2280,1117,2281,1121,2283,1124,2285,1128,2287,415,2289,1135,2291,1139,2293,1143,2295,1147,2297,2299,466,2301,1155,2303,1159,2305,1163,2307,1166],{},[324,2282,1120],{},[324,2284,231],{},[324,2286,1127],{},[324,2288,1131],{},[324,2290,1134],{},[324,2292,1138],{},[324,2294,1142],{},[324,2296,1146],{},[442,2298],{},[324,2300,31],{},[324,2302,1154],{},[324,2304,1158],{},[324,2306,1162],{},[324,2308,1120],{},[406,2310,1169,2311,1173,2313,1177,2315,1181,2317,1184,2319,1188,2321,1192],{},[324,2312,1172],{},[324,2314,1176],{},[324,2316,1180],{},[442,2318],{},[324,2320,1187],{},[324,2322,1191],{},[406,2324,2233,2325],{},[2235,2326,2327],{},"bb4d208",[406,2329,2233,2330,2333],{},[2235,2331,2332],{},"31c2202",[403,2334,2335],{},[406,2336,2337],{},"@vyui\u002Fcore@0.1.1",{"title":331,"searchDepth":332,"depth":333,"links":2339},[2340],{"id":400,"depth":506,"text":401},{},"\u002Fchangelog\u002Fkit-0.1.1",{"title":2272,"description":1198},"changelog\u002Fkit-0.1.1","ZaOvogLY63Q564OJ8OqRIazLf91b_jTtZQNiZLBo4mI",{"id":2347,"title":2348,"body":2349,"changelogOrder":1220,"date":1221,"description":1222,"extension":337,"meta":2370,"navigation":339,"package":60,"path":2371,"seo":2372,"stem":2373,"version":1227,"__hash__":2374},"changelog\u002Fchangelog\u002Fkit-0.1.2.md","@vyui\u002Fkit v0.1.2",{"type":318,"value":2350,"toc":2367},[2351,2353],[398,2352,401],{"id":400},[403,2354,2355,2357],{},[406,2356,1216],{},[406,2358,2233,2359,2362],{},[2235,2360,2361],{},"cbbbcbf",[403,2363,2364],{},[406,2365,2366],{},"@vyui\u002Fcore@0.1.2",{"title":331,"searchDepth":332,"depth":333,"links":2368},[2369],{"id":400,"depth":506,"text":401},{},"\u002Fchangelog\u002Fkit-0.1.2",{"title":2348,"description":1222},"changelog\u002Fkit-0.1.2","hwVs_ANbq3dHPgzVvD-UTEPOy31mxdSmoJsBNWFGkBI",{"id":2376,"title":2377,"body":2378,"changelogOrder":1376,"date":1221,"description":2446,"extension":337,"meta":2447,"navigation":339,"package":60,"path":2448,"seo":2449,"stem":2450,"version":1383,"__hash__":2451},"changelog\u002Fchangelog\u002Fkit-0.2.0.md","@vyui\u002Fkit v0.2.0",{"type":318,"value":2379,"toc":2443},[2380,2382],[398,2381,900],{"id":899},[403,2383,2384],{},[406,2385,2386,2387,2390,2391,2394,2395,807,2398,2401,2402,2405,2406],{},"5109043: Add ",[324,2388,2389],{},"defineVyuiConfig"," (new ",[324,2392,2393],{},"@vyui\u002Fkit\u002Fconfig"," entry) so a project's theme is authored once and fed to both the Tailwind preset (build) and ",[324,2396,2397],{},"provideVyUI",[324,2399,2400],{},"app.use(VyUI)"," (runtime), removing the hand-synced ",[324,2403,2404],{},"colors"," duplication between the two planes.",[403,2407,2408,2425,2434],{},[406,2409,2410,2413,2414,2416,2417,2420,2421,2424],{},[324,2411,2412],{},"createVyuiPreset"," now accepts a ",[324,2415,2389],{}," result (",[324,2418,2419],{},"{ ui: { colors } }",") alongside the flat ",[324,2422,2423],{},"{ colors, neutral, shades }"," form",[406,2426,2427,2429,2430,2433],{},[324,2428,2412],{}," dev-warns when a semantic color can't be backed by a ",[324,2431,2432],{},"--ui-color-*"," var (no more silent \"class resolves to nothing\")",[406,2435,2436,2438,2439,2442],{},[324,2437,2393],{}," is a light, jiti-safe entry — importing it in ",[324,2440,2441],{},"tailwind.config.ts"," never pulls component code into the build path",{"title":331,"searchDepth":332,"depth":333,"links":2444},[2445],{"id":899,"depth":506,"text":900},"5109043: Add defineVyuiConfig (new @vyui\u002Fkit\u002Fconfig entry) so a project's theme is authored once and fed to both the Tailwind preset (build) and provideVyUI\u002F…",{},"\u002Fchangelog\u002Fkit-0.2.0",{"title":2377,"description":2446},"changelog\u002Fkit-0.2.0","omoUWZWtCbAuJ5OaT2QgOVsVyj7MN-nrtiEyRfkGlhQ",{"id":2453,"title":2454,"body":2455,"changelogOrder":2604,"date":1377,"description":1378,"extension":337,"meta":2605,"navigation":339,"package":60,"path":2606,"seo":2607,"stem":2608,"version":2609,"__hash__":2610},"changelog\u002Fchangelog\u002Fkit-0.3.0.md","@vyui\u002Fkit v0.3.0",{"type":318,"value":2456,"toc":2600},[2457,2459,2539,2541],[398,2458,900],{"id":899},[403,2460,2461,2501],{},[406,2462,1240,2463,1243,2465,651,2467,1250,2469,1254,2471,1258,2473,1263,2475,1266,2477,1269,2479,1272,2481,1276,2483,1279,2485,1283,2487,1287,2489,1290,2491,487,2493,1296,2495,1299,2497,1303,2499,1306],{},[324,2464,36],{},[324,2466,1246],{},[324,2468,1249],{},[324,2470,1253],{},[324,2472,1257],{},[1260,2474,1262],{},[324,2476,1246],{},[442,2478],{},[324,2480,31],{},[324,2482,1275],{},[324,2484,31],{},[324,2486,1282],{},[324,2488,1286],{},[442,2490],{},[324,2492,36],{},[324,2494,1295],{},[324,2496,31],{},[324,2498,1302],{},[324,2500,1257],{},[406,2502,1309,2503,1313,2505],{},[324,2504,1312],{},[403,2506,2507,2513,2529,2533],{},[406,2508,1318,2509,1322,2511,1326],{},[324,2510,1321],{},[324,2512,1325],{},[406,2514,1329,2515,1333,2517,1337,2519,1341,2521,1345,2523,1349,2525,487,2527,1354],{},[324,2516,1332],{},[324,2518,1336],{},[324,2520,1340],{},[324,2522,1344],{},[324,2524,1348],{},[324,2526,36],{},[324,2528,1257],{},[406,2530,1357,2531,1361],{},[324,2532,1360],{},[406,2534,1364,2535,1368,2537,1372],{},[324,2536,1367],{},[324,2538,1371],{},[398,2540,401],{"id":400},[403,2542,2543,2550,2586,2591],{},[406,2544,2545,2546,2549],{},"a2696c9: Add an experimental ",[324,2547,2548],{},"VyCalendar"," component with ISO-string date selection and a built-in Lynx date-runtime caveat.",[406,2551,2552,2553,2556,2557,2559,2560,651,2562,651,2564,651,2566,2568,2569,2572,2573,494,2576,2578,2579,807,2581,2583,2584,329],{},"a2696c9: ",[698,2554,2555],{},"Breaking:"," components are now exported under a single canonical ",[324,2558,1253],{}," name only. The bare aliases (",[324,2561,93],{},[324,2563,103],{},[324,2565,133],{},[324,2567,535],{},", …) have been removed so there is one name per component — the same one the ",[324,2570,2571],{},"VyUI"," plugin registers globally. Update imports from ",[324,2574,2575],{},"import { Button } from '@vyui\u002Fkit'",[324,2577,1286],{},". The unprefixed ",[324,2580,133],{},[324,2582,535],{}," primitives remain available from ",[324,2585,31],{},[406,2587,2233,2588],{},[2235,2589,2590],{},"c344b72",[406,2592,2233,2593,2595],{},[2235,2594,2590],{},[403,2596,2597],{},[406,2598,2599],{},"@vyui\u002Fcore@0.2.0",{"title":331,"searchDepth":332,"depth":333,"links":2601},[2602,2603],{"id":899,"depth":506,"text":900},{"id":400,"depth":506,"text":401},3000,{},"\u002Fchangelog\u002Fkit-0.3.0",{"title":2454,"description":1378},"changelog\u002Fkit-0.3.0","v0.3.0","8bITypOemdWKZ-030SNHehx-qTucC7HzXYIEobFurVE",{"id":2612,"title":2613,"body":2614,"changelogOrder":11,"date":335,"description":2626,"extension":337,"meta":2627,"navigation":339,"package":60,"path":2628,"seo":2629,"stem":2630,"version":2631,"__hash__":2632},"changelog\u002Fchangelog\u002Fkit-scaffold.md","Kit scaffolded",{"type":318,"value":2615,"toc":2624},[2616],[321,2617,2618,2620,2621,2623],{},[324,2619,36],{}," is scaffolded as part of the monorepo, sitting alongside ",[324,2622,31],{}," and the documentation site — the home for opinionated, themed components.",{"title":331,"searchDepth":332,"depth":333,"links":2625},[],"The styled-component package joins the monorepo alongside core and the docs site.",{},"\u002Fchangelog\u002Fkit-scaffold",{"title":2613,"description":2626},"changelog\u002Fkit-scaffold","Initial","7cEQisROCLM6kbYPmYRb6460XnaeGk6czt8eMTNYOFM",{"id":2634,"title":2635,"body":2636,"changelogOrder":11,"date":384,"description":2658,"extension":337,"meta":2659,"navigation":339,"package":60,"path":2660,"seo":2661,"stem":2662,"version":343,"__hash__":2663},"changelog\u002Fchangelog\u002Fkit-styled.md","Styled Button, Switch & Tabs",{"type":318,"value":2637,"toc":2656},[2638],[321,2639,2640,2642,2643,651,2645,836,2647,2649,2650,2652,2653,329],{},[324,2641,36],{}," publishes its first styled components — ",[698,2644,93],{},[698,2646,264],{},[698,2648,269],{}," — composed on top of ",[324,2651,31],{}," primitives. Available now on npm as ",[324,2654,2655],{},"@vyui\u002Fkit@0.0.1",{"title":331,"searchDepth":332,"depth":333,"links":2657},[],"The first styled components land on npm — composed on core primitives, themed and ready to drop in.",{},"\u002Fchangelog\u002Fkit-styled",{"title":2635,"description":2658},"changelog\u002Fkit-styled","rp-Opx518UBbFwsQQNX6tDHhHaQKPzJnYuOa_Fvg0uc",1783464064465]