--[[ _ ___ ____ ______ | | /| / (_)__ ___/ / / / / _/ | |/ |/ / / _ \/ _ / /_/ // / |__/|__/_/_//_/\_,_/\____/___/ v1.6.65 | 2026-07-01 | Roblox UI Library for scripts To view the source code, see the `src/` folder on the official GitHub repository. Author: Footagesus (Footages, .ftgs, oftgs) Github: https://github.com/Footagesus/WindUI Discord: https://discord.gg/ftgs-development-hub-1300692552005189632 License: MIT ]] type ConfigType__DARKLUA_TYPE_a={ Object:Instance, Camera:Instance?, Interactive:boolean?, Height:number?, Focused:boolean, Window:any, WindUI:any, Tab:any, Parent:Instance, }local a a={cache={}, load=function(b)if not a.cache[b]then a.cache[b]={c=a[b]()}end return a.cache[b].c end}do function a.a() local b local d={ New=nil, Init=nil, Shapes={ Circle={ Image="rbxassetid://111665032676235", Rect=Rect.new(512,512,512,512), Radius=512, }, CircleOutline={ Image="rbxassetid://108556680453287", Rect=Rect.new(512,512,512,512), Radius=512, }, CircleGlass={ Image="rbxassetid://95600044758841", Rect=Rect.new(512,512,512,512), Radius=512, }, SquircleH={ Image="rbxassetid://125083578015333", Rect=Rect.new(512,325,512,325), Radius=325, }, SquircleHOutline={ Image="rbxassetid://107043713170567", Rect=Rect.new(512,325,512,325), Radius=325, }, SquircleHGlass={ Image="rbxassetid://84819521201001", Rect=Rect.new(512,325,512,325), Radius=325, }, ["SquircleH-TL-TR"]={ Image="rbxassetid://90680657206619", Rect=Rect.new(807,512,807,512), Radius=325, AutoChange=false, }, ["SquircleH-BL-BR"]={ Image="rbxassetid://99216342056719", Rect=Rect.new(0,512,0,512), Radius=325, AutoChange=false, }, SquircleV={ Image="rbxassetid://124965260437653", Rect=Rect.new(325,512,325,512), Radius=325, }, SquircleVOutline={ Image="rbxassetid://88808835404198", Rect=Rect.new(325,512,325,512), Radius=325, }, SquircleVGlass={ Image="rbxassetid://124982801466667", Rect=Rect.new(325,512,325,512), Radius=325, }, Squircle={ Image="rbxassetid://89641024074289", Rect=Rect.new(460,460,460,460), Radius=310, }, SquircleOutline={ Image="rbxassetid://74029063732681", Rect=Rect.new(512,512,512,512), Radius=310, }, SquircleGlass={ Image="rbxassetid://131126436897551", Rect=Rect.new(512,512,512,512), Radius=310, }, ["Squircle-TL-TR"]={ Image="rbxassetid://75712142040725", Rect=Rect.new(512,512,512,512), Radius=310, AutoChange=false, }, ["Squircle-BL-BR"]={ Image="rbxassetid://83676684425544", Rect=Rect.new(512,0,512,0), Radius=310, AutoChange=false, },Square= { Image="rbxassetid://82909646051652", Rect=Rect.new(512,512,512,512), Radius=512, AutoChange=false, }, }, } function d.Init(e,f) b=f return e.New end function d.New(e,f,g,h,i,j,l) local m={ Radius=f or 0, Type=g or"Circle", GetRadius=nil, GetType=nil, SetRadius=nil, SetType=nil, } local p={ ["Glass-0.7"]="SquircleGlass", ["Glass-1"]="SquircleGlass", ["Glass-1.4"]="SquircleGlass", ["Squircle-Outline"]="SquircleOutline", } local function GetShape(r) return d.Shapes[p[r]or r]or d.Shapes.Circle end local r=b.New(j and"ImageButton"or"ImageLabel",{ Image="", ScaleType=l~=false and"Slice"or nil, SliceCenter=m.Type~="Squircle"and Rect.new(512,512,512,512)or nil, SliceScale=1, ThemeTag=h and h.ThemeTag or nil, BackgroundTransparency=1, },i) for u,v in next,h do if not table.find({"ThemeTag"},u)then r[u]=v end end function m.SetRadius(u,v) m.Radius=v r.SliceScale=math.max(v/GetShape(m.Type).Radius,0.0001) return m end function m.SetType(u,v) m.Type=v local x=GetShape(v) r.Image=x.Image r.SliceCenter=x.Rect m:SetRadius(m.Radius) return m end function m.GetRadius(u) return m.Radius end function m.GetType(u) return m.Type end m:SetRadius(f) m:SetType(g) b.AddSignal(r:GetPropertyChangedSignal"AbsoluteSize",function() local u=GetShape(m.Type) if u.AutoChange==false then return end if string.find(m.Type,"Squircle")then local v=string.find(m.Type,"Glass")and"Glass"or nil local x=string.find(m.Type,"Outline")and"Outline"or nil local z=math.round(r.AbsoluteSize.X/b.UIScale) local A=math.round(r.AbsoluteSize.Y/b.UIScale) local B=m.Radius~=0 and m.Radius or math.min(z,A)/2 local C=d.Shapes.Squircle.Radius/1024 local F=B/math.min(z,A) local G if z>A then if F>=C then G="SquircleH"..(x or v or"") else G="Squircle"..(x or v or"") end elseif z=C then G="SquircleV"..(x or v or"") else G="Squircle"..(x or v or"") end else if F>=C then G="Circle"..(x or v or"") else G="Squircle"..(x or v or"") end end if G~=m:GetType()then m:SetType(G) end end end) return r,m end return d end function a.b() local b=(cloneref or clonereference or function(b)return b end) local d=b(game:GetService"ReplicatedStorage":WaitForChild("GetIcons",99999):InvokeServer()) local function parseIconString(e) if type(e)=="string"then local f=e:find":" if f then local g=e:sub(1,f-1) local h=e:sub(f+1) return g,h end end return nil,e end function d.AddIcons(e,f) if type(e)~="string"or type(f)~="table"then error"AddIcons: packName must be string, iconsData must be table" return end if not d.Icons[e]then d.Icons[e]={ Icons={}, Spritesheets={} } end for g,h in pairs(f)do if type(h)=="number"or(type(h)=="string"and h:match"^rbxassetid://")then local i=h if type(h)=="number"then i="rbxassetid://"..tostring(h) end d.Icons[e].Icons[g]={ Image=i, ImageRectSize=Vector2.new(0,0), ImageRectPosition=Vector2.new(0,0), Parts=nil } d.Icons[e].Spritesheets[i]=i elseif type(h)=="table"then if h.Image and h.ImageRectSize and h.ImageRectPosition then local i=h.Image if type(i)=="number"then i="rbxassetid://"..tostring(i) end d.Icons[e].Icons[g]={ Image=i, ImageRectSize=h.ImageRectSize, ImageRectPosition=h.ImageRectPosition, Parts=h.Parts } if not d.Icons[e].Spritesheets[i]then d.Icons[e].Spritesheets[i]=i end else warn("AddIcons: Invalid spritesheet data format for icon '"..g.."'") end else warn("AddIcons: Unsupported data type for icon '"..g.."': "..type(h)) end end end function d.SetIconsType(e) d.IconsType=e end local e function d.Init(f,g) d.New=f d.IconThemeTag=g e=f return d end function d.Icon(f,g,h) h=h~=false local i,j=parseIconString(f) local l=i or g or d.IconsType local m=j local p=d.Icons[l] if p and p.Icons and p.Icons[m]then return{ p.Spritesheets[tostring(p.Icons[m].Image)], p.Icons[m], } elseif p and p[m]and string.find(p[m],"rbxassetid://")then return h and{ p[m], {ImageRectSize=Vector2.new(0,0),ImageRectPosition=Vector2.new(0,0)} }or p[m] end return nil end function d.GetIcon(f,g) return d.Icon(f,g,false) end function d.Icon2(f,g,h) return d.Icon(f,g,true) end function d.Image(f) local g={ Icon=f.Icon or nil, Type=f.Type, Colors=f.Colors or{(d.IconThemeTag or Color3.new(1,1,1)),Color3.new(1,1,1)}, Transparency=f.Transparency or{0,0}, Size=f.Size or UDim2.new(0,24,0,24), IconFrame=nil, } local h={} local i={} for j,l in next,g.Colors do h[j]={ ThemeTag=typeof(l)=="string"and l, Color=typeof(l)=="Color3"and l, } end for j,l in next,g.Transparency do i[j]={ ThemeTag=typeof(l)=="string"and l, Value=typeof(l)=="number"and l, } end local j=d.Icon2(g.Icon,g.Type) local l=typeof(j)=="string"and string.find(j,'rbxassetid://') if d.New then local m=e or d.New local p=m("ImageLabel",{ Size=g.Size, BackgroundTransparency=1, ImageColor3=h[1].Color or nil, ImageTransparency=i[1].Value or nil, ThemeTag=h[1].ThemeTag and{ ImageColor3=h[1].ThemeTag, ImageTransparency=i[1].ThemeTag, }, Image=l and j or j[1], ImageRectSize=l and nil or j[2].ImageRectSize, ImageRectOffset=l and nil or j[2].ImageRectPosition, }) if not l and j[2].Parts then for r,u in next,j[2].Parts do local v=d.Icon(u,g.Type) m("ImageLabel",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, ImageColor3=h[1+r].Color or nil, ImageTransparency=i[1+r].Value or nil, ThemeTag=h[1+r].ThemeTag and{ ImageColor3=h[1+r].ThemeTag, ImageTransparency=i[1+r].ThemeTag, }, Image=v[1], ImageRectSize=v[2].ImageRectSize, ImageRectOffset=v[2].ImageRectPosition, Parent=p, }) end end g.IconFrame=p else local m=Instance.new"ImageLabel" m.Size=g.Size m.BackgroundTransparency=1 m.ImageColor3=h[1].Color m.ImageTransparency=i[1].Value or nil m.Image=l and j or j[1] m.ImageRectSize=l and nil or j[2].ImageRectSize m.ImageRectOffset=l and nil or j[2].ImageRectPosition if not l and j[2].Parts then for p,r in next,j[2].Parts do local u=d.Icon(r,g.Type) local v=Instance.New"ImageLabel" v.Size=UDim2.new(1,0,1,0) v.BackgroundTransparency=1 v.ImageColor3=h[1+p].Color v.ImageTransparency=i[1+p].Value or nil v.Image=u[1] v.ImageRectSize=u[2].ImageRectSize v.ImageRectOffset=u[2].ImageRectPosition v.Parent=m end end g.IconFrame=m end return g end return d end function a.c() return function(b) return{ Primary="Icon", White=Color3.new(1,1,1), Black=Color3.new(0,0,0), Dialog="Accent", Background="Accent", BackgroundTransparency=0, Hover="Text", PanelBackground="White", PanelBackgroundTransparency=0.95, WindowBackground="Background", WindowShadow="Black", WindowTopbarTitle="Text", WindowTopbarAuthor="Text", WindowTopbarIcon="Icon", WindowTopbarButtonIcon="Icon", WindowSearchBarBackground="Dialog", TabBackground="Hover", TabBackgroundHover="Hover", TabBackgroundHoverTransparency=0.97, TabBackgroundActive="Hover", TabBackgroundActiveTransparency=0.93, TabText="Text", TabTextTransparency=0.3, TabTextTransparencyActive=0, TabTitle="Text", TabIcon="Icon", TabIconTransparency=0.4, TabIconTransparencyActive=0.1, TabBorderTransparency=1, TabBorderTransparencyActive=0.75, TabBorder="White", ElementBackground="Text", ElementBackgroundTransparency=0.93, ElementBackgroundHover=b:AddColor("ElementBackground","#ffffff",0.1), ElementTitle="Text", ElementDesc="Text", ElementIcon="Icon", PopupBackground="Background", PopupBackgroundTransparency="BackgroundTransparency", PopupTitle="Text", PopupContent="Text", PopupIcon="Icon", DialogBackground="Dialog", DialogBackgroundTransparency="BackgroundTransparency", DialogTitle="Text", DialogContent="Text", DialogIcon="Icon", Toggle="Button", ToggleBar="White", Checkbox="Primary", CheckboxIcon="White", CheckboxBorder="White", CheckboxBorderTransparency=0.75, SliderIcon="Icon", Slider="Primary", SliderThumb="White", SliderIconFrom="SliderIcon", SliderIconTo="SliderIcon", ProgressBar="Primary", ProgressBarTrack="Text", ProgressBarTrackTransparency=0.9, ProgressBarText="Text", Tooltip=Color3.fromHex"4C4C4C", TooltipText="White", TooltipSecondary="Primary", TooltipSecondaryText="White", TabSectionIcon="Icon", SectionIcon="Icon", SectionExpandIcon="Icon", SectionExpandIconTransparency=0.4, SectionBox="Text", SectionBoxTransparency=0.95, SectionBoxBorder="White", SectionBoxBorderTransparency=0.75, SectionBoxBackground="Text", SectionBoxBackgroundTransparency=0.97, SearchBarBorder="White", SearchBarBorderTransparency=0.75, Notification="Background", Notification2="White", Notification2Transparency=0.92, NotificationTitle="Text", NotificationTitleTransparency=0, NotificationContent="Text", NotificationContentTransparency=0.4, NotificationDuration="White", NotificationDurationTransparency=0.95, NotificationBorder="White", NotificationBorderTransparency=0.75, DropdownTabBorder="White", DropdownTabBackground="ElementBackground", DropdownBackground="Background", LabelBackground="White", LabelBackgroundTransparency=0.95, ViewportBackground="ElementBackground", ViewportBackgroundTransparency="ElementBackgroundTransparency", } end end function a.d() local b=(cloneref or clonereference or function(b) return b end) local d=b(game:GetService"RunService") local e=b(game:GetService"UserInputService") local f=b(game:GetService"TweenService") local g=b(game:GetService"LocalizationService") local h=b(game:GetService"HttpService") local i=a.load'a'local j= d.Heartbeat local l="https://raw.githubusercontent.com/Footagesus/Icons/main/Main-v2.lua" local m if d:IsStudio()or not writefile then m=a.load'b' else m=loadstring( game.HttpGet and game:HttpGet(l)or h:GetAsync(l) )() end m.SetIconsType"lucide" local p local r r={ Font="rbxassetid://12187365364", Localization=nil, CanDraggable=true, Theme=nil, Themes=nil, Icons=m, Signals={}, Objects={}, LocalizationObjects={}, UIScale=1, FontObjects={}, Language=string.match(g.SystemLocaleId,"^[a-z]+"), Request=http_request or(syn and syn.request)or request, DefaultProperties={ ScreenGui={ ResetOnSpawn=false, ZIndexBehavior="Sibling", }, CanvasGroup={ BorderSizePixel=0, BackgroundColor3=Color3.new(1,1,1), }, Frame={ BorderSizePixel=0, BackgroundColor3=Color3.new(1,1,1), }, TextLabel={ BackgroundColor3=Color3.new(1,1,1), BorderSizePixel=0, Text="", RichText=true, TextColor3=Color3.new(1,1,1), TextSize=14, }, TextButton={ BackgroundColor3=Color3.new(1,1,1), BorderSizePixel=0, Text="", AutoButtonColor=false, TextColor3=Color3.new(1,1,1), TextSize=14, }, TextBox={ BackgroundColor3=Color3.new(1,1,1), BorderColor3=Color3.new(0,0,0), ClearTextOnFocus=false, Text="", TextColor3=Color3.new(0,0,0), TextSize=14, }, ImageLabel={ BackgroundTransparency=1, BackgroundColor3=Color3.new(1,1,1), BorderSizePixel=0, }, ImageButton={ BackgroundColor3=Color3.new(1,1,1), BorderSizePixel=0, AutoButtonColor=false, }, UIListLayout={ SortOrder="LayoutOrder", }, ScrollingFrame={ ScrollBarImageTransparency=1, BorderSizePixel=0, }, VideoFrame={ BorderSizePixel=0, }, }, Colors={ Red="#e53935", Orange="#f57c00", Green="#43a047", Blue="#039be5", White="#ffffff", Grey="#484848", }, ThemeFallbacks=nil, ThemeChangeCallbacks={}, } function r.Init(u) p=u r.ThemeFallbacks=a.load'c'(r) r.UIScale=u.UIScale i:Init(r) end function r.AddSignal(u,v) local x=u:Connect(v) table.insert(r.Signals,x) return x end function r.DisconnectAll() for u,v in next,r.Signals do local x=table.remove(r.Signals,u) x:Disconnect() end end function r.SafeCallback(u,...) if not u then return end local v,x=pcall(u,...) if not v then if p and p.Window and p.Window.Debug then local z, A=x:find":%d+: " warn("[ WindUI: DEBUG Mode ] "..x) return p:Notify{ Title="DEBUG Mode: Error", Content=not A and x or x:sub(A+1), Duration=8, } end end end function r.Gradient(u,v) if p and p.Gradient then return p:Gradient(u,v) end local x={} local z={} for A,B in next,u do local C=tonumber(A) if C then C=math.clamp(C/100,0,1) table.insert(x,ColorSequenceKeypoint.new(C,B.Color)) table.insert(z,NumberSequenceKeypoint.new(C,B.Transparency or 0)) end end table.sort(x,function(A,B) return A.Time50 then z=z:sub(1,50) end return z end function r.Image(x,z,A,B,C,F,G,H) B=B or"Temp" z=r.SanitizeFilename(z) local J=u("Frame",{ Size=UDim2.new(0,0,0,0), BackgroundTransparency=1, },{ u("ImageLabel",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, ScaleType="Crop", ThemeTag=(r.Icon(x)or G)and{ ImageColor3=F and(H or"Icon")or nil, }or nil, },{ u("UICorner",{ CornerRadius=UDim.new(0,A), }), }), }) if r.Icon(x)then J.ImageLabel:Destroy() local L=m.Image{ Icon=x, Size=UDim2.new(1,0,1,0), Colors={ (F and(H or"Icon")or false), "Button", }, }.IconFrame L.Parent=J elseif string.find(x,"http")and not string.find(x,"roblox.com")then local L="WindUI/"..B.."/assets/."..C.."-"..z..".png" local M,N=pcall(function() task.spawn(function() local M=r.Request and r.Request{ Url=x, Method="GET", }.Body or{} if not d:IsStudio()and writefile then writefile(L,M) end local N,O=pcall(getcustomasset,L) if N then J.ImageLabel.Image=O else warn( string.format( "[ WindUI.Creator ] Failed to load custom asset '%s': %s", L, tostring(O) ) ) J:Destroy() return end end) end) if not M then warn( "[ WindUI.Creator ] '"..identifyexecutor() or"Studio".."' doesnt support the URL Images. Error: "..N ) J:Destroy() end elseif x==""then J.Visible=false else J.ImageLabel.Image=x end return J end function r.Color3ToHSB(x) local z,A,B=x.R,x.G,x.B local C=math.max(z,A,B) local F=math.min(z,A,B) local G=C-F local H=0 if G~=0 then if C==z then H=(A-B)/G%6 elseif C==A then H=(B-z)/G+2 else H=(z-A)/G+4 end H=H*60 else H=0 end local J=(C==0)and 0 or(G/C) local L=C return{ h=math.floor(H+0.5), s=J, b=L, } end function r.GetPerceivedBrightness(x) local z=x.R local A=x.G local B=x.B return 0.299*z+0.587*A+0.114*B end function r.GetTextColorForHSB(x,z) local A=r.Color3ToHSB(x)local B, C, F=A.h, A.s, A.b if r.GetPerceivedBrightness(x)>(z or 0.5)then return Color3.fromHSV(B/360,0,0.05) else return Color3.fromHSV(B/360,0,0.98) end end function r.GetAverageColor(x) local z,A,B=0,0,0 local C=x.Color.Keypoints for F,G in ipairs(C)do z=z+G.Value.R A=A+G.Value.G B=B+G.Value.B end local F=#C return Color3.new(z/F,A/F,B/F) end function r.GenerateUniqueID(x) return h:GenerateGUID(false) end function r.OnThemeChange(x,z) if typeof(z)~="function"then return end local A=h:GenerateGUID(false) r.ThemeChangeCallbacks[A]=z return{ Disconnect=function() r.ThemeChangeCallbacks[A]=nil end, } end function r.AddColor(x,z,A,B) B=math.clamp(B or 1,0,1) if typeof(A)=="string"then A=Color3.fromHex(A) end return function(C) local F if typeof(z)=="string"and string.sub(z,1,1)~="#"then F=r.GetThemeProperty(z,C) elseif typeof(z)=="string"then F=Color3.fromHex(z) else F=z end if not F or typeof(F)~="Color3"then return nil end return Color3.new( math.clamp(F.R+A.R*B,0,1), math.clamp(F.G+A.G*B,0,1), math.clamp(F.B+A.B*B,0,1) ) end end function r.GetElementPosition(x,z,A,B) if type(A)~="number"or A~=math.floor(A)then return nil,1 end local C=#z if C==0 or A<1 or A>C then return nil,2 end local function isDelimiter(F) if F==nil then return true end local G=F.__type return G=="Divider"or G=="Space"or G=="Section" end if isDelimiter(z[A])then return nil,3 end local function calculate(F,G) if G==1 then return"Squircle" end if F==1 then return B and"SquircleH-TL-TR"or"Squircle-TL-TR" end if F==G then return B and"SquircleH-BL-BR"or"Squircle-BL-BR" end return"Square" end local F=1 local G=0 for H=1,C do local J=z[H] if isDelimiter(J)then if A>=F and A<=H-1 then local L=A-F+1 return calculate(L,G) end F=H+1 G=0 else G=G+1 end end if A>=F and A<=C then local H=A-F+1 return calculate(H,G) end return nil,4 end return r end function a.e() local b={} function b.New(d,e,f) local g={ Enabled=e.Enabled or false, Translations=e.Translations or{}, Prefix=e.Prefix or"loc:", DefaultLanguage=e.DefaultLanguage or"en" } f.Localization=g return g end return b end function a.f() local b=a.load'd' local d=b.New local e=b.Tween local f={ Size=UDim2.new(0,300,1,-156), SizeLower=UDim2.new(0,300,1,-56), UICorner=18, UIPadding=14, Holder=nil, NotificationIndex=0, Notifications={}, } function f.Init(g) local h={ Lower=false, } function h.SetLower(i) h.Lower=i h.Frame.Size=i and f.SizeLower or f.Size end h.Frame=d("Frame",{ Position=UDim2.new(1,-29,0,56), AnchorPoint=Vector2.new(1,0), Size=f.Size, Parent=g, BackgroundTransparency=1, },{ d("UIListLayout",{ HorizontalAlignment="Center", SortOrder="LayoutOrder", VerticalAlignment="Bottom", Padding=UDim.new(0,8), }), d("UIPadding",{ PaddingBottom=UDim.new(0,29), }), }) return h end function f.New(g) local h={ Title=g.Title or"Notification", Content=g.Content or nil, Icon=g.Icon or nil, IconThemed=g.IconThemed, Background=g.Background, BackgroundImageTransparency=g.BackgroundImageTransparency, Duration=g.Duration or 5, Buttons=g.Buttons or{}, CanClose=g.CanClose~=false, UIElements={}, Closed=false, } f.NotificationIndex=f.NotificationIndex+1 f.Notifications[f.NotificationIndex]=h local i if h.Icon then i=b.Image( h.Icon, h.Title..":"..h.Icon, 0, g.Window, "Notification", h.IconThemed ) i.Size=UDim2.new(0,26,0,26) i.Position=UDim2.new(0,f.UIPadding,0,f.UIPadding) end local l if h.CanClose then l=d("ImageButton",{ Image=b.Icon"x"[1], ImageRectSize=b.Icon"x"[2].ImageRectSize, ImageRectOffset=b.Icon"x"[2].ImageRectPosition, BackgroundTransparency=1, Size=UDim2.new(0,16,0,16), Position=UDim2.new(1,-f.UIPadding,0,f.UIPadding), AnchorPoint=Vector2.new(1,0), ThemeTag={ ImageColor3="Text", }, ImageTransparency=0.4, },{ d("TextButton",{ Size=UDim2.new(1,8,1,8), BackgroundTransparency=1, AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), Text="", }), }) end local m=b.NewRoundFrame(f.UICorner,"Squircle",{ Size=UDim2.new(0,0,1,0), ThemeTag={ ImageTransparency="NotificationDurationTransparency", ImageColor3="NotificationDuration", }, }) local p=d("Frame",{ Size=UDim2.new(1,h.Icon and-28-f.UIPadding or 0,1,0), Position=UDim2.new(1,0,0,0), AnchorPoint=Vector2.new(1,0), BackgroundTransparency=1, AutomaticSize="Y", },{ d("UIPadding",{ PaddingTop=UDim.new(0,f.UIPadding), PaddingLeft=UDim.new(0,f.UIPadding), PaddingRight=UDim.new(0,f.UIPadding), PaddingBottom=UDim.new(0,f.UIPadding), }), d("TextLabel",{ AutomaticSize="Y", Size=UDim2.new(1,-30-f.UIPadding,0,0), TextWrapped=true, TextXAlignment="Left", RichText=true, BackgroundTransparency=1, TextSize=18, ThemeTag={ TextColor3="NotificationTitle", TextTransparency="NotificationTitleTransparency", }, Text=h.Title, FontFace=Font.new(b.Font,Enum.FontWeight.SemiBold), }), d("UIListLayout",{ Padding=UDim.new(0,f.UIPadding/3), }), }) if h.Content then d("TextLabel",{ AutomaticSize="Y", Size=UDim2.new(1,0,0,0), TextWrapped=true, TextXAlignment="Left", RichText=true, BackgroundTransparency=1, TextSize=15, ThemeTag={ TextColor3="NotificationContent", TextTransparency="NotificationContentTransparency", }, Text=h.Content, FontFace=Font.new(b.Font,Enum.FontWeight.Medium), Parent=p, }) end local r=b.NewRoundFrame(f.UICorner,"Squircle",{ Size=UDim2.new(1,0,0,0), Position=UDim2.new(2,0,1,0), AnchorPoint=Vector2.new(0,1), AutomaticSize="Y", ImageTransparency=0.05, ThemeTag={ ImageColor3="Notification", }, },{ b.NewRoundFrame(f.UICorner,"Squircle",{ Size=UDim2.new(1,0,1,0), ThemeTag={ ImageColor3="Notification2", ImageTransparency="Notification2Transparency", }, }), d("Frame",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Name="DurationFrame", },{ d("Frame",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, ClipsDescendants=true, },{ m, }), }), d("ImageLabel",{ Name="Background", Image=h.Background, BackgroundTransparency=1, Size=UDim2.new(1,0,1,0), ScaleType="Crop", ImageTransparency=h.BackgroundImageTransparency, },{ d("UICorner",{ CornerRadius=UDim.new(0,f.UICorner), }), }), p, i, l, }) local u=d("Frame",{ BackgroundTransparency=1, Size=UDim2.new(1,0,0,0), Parent=g.Holder, },{ r, }) function h.Close(v) if not h.Closed then h.Closed=true e( u, 0.45, {Size=UDim2.new(1,0,0,-8)}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() e(r,0.55,{Position=UDim2.new(2,0,1,0)},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() task.wait(0.45) u:Destroy() end end task.spawn(function() task.wait() e( u, 0.45, {Size=UDim2.new(1,0,0,r.AbsoluteSize.Y)}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() e(r,0.45,{Position=UDim2.new(0,0,1,0)},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() if h.Duration then m.Size=UDim2.new(0,r.DurationFrame.AbsoluteSize.X,1,0) e( r.DurationFrame.Frame, h.Duration, {Size=UDim2.new(0,0,1,0)}, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut ):Play() task.wait(h.Duration) h:Close() end end) if l then b.AddSignal(l.TextButton.MouseButton1Click,function() h:Close() end) end return h end return f end function a.g() local b=4294967296;local d=b-1;local function c(e,f)local g,h=0,1;while e~=0 or f~=0 do local i,l=e%2,f%2;local m=(i+l)%2;g=g+m*h;e=math.floor(e/2)f=math.floor(f/2)h=h*2 end;return g%b end;local function k(e,f,g,...)local h;if f then e=e%b;f=f%b;h=c(e,f)if g then h=k(h,g,...)end;return h elseif e then return e%b else return 0 end end;local function n(e,f,g,...)local h;if f then e=e%b;f=f%b;h=(e+f-c(e,f))/2;if g then h=n(h,g,...)end;return h elseif e then return e%b else return d end end;local function o(e)return d-e end;local function q(e,f)if f<0 then return lshift(e,-f)end;return math.floor(e%4294967296/2^f)end;local function s(e,f)if f>31 or f<-31 then return 0 end;return q(e%b,f)end;local function lshift(e,f)if f<0 then return s(e,-f)end;return e*2^f%4294967296 end;local function t(e,f)e=e%b;f=f%32;local g=n(e,2^f-1)return s(e,f)+lshift(g,32-f)end;local e={0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2}local function w(f)return string.gsub(f,".",function(g)return string.format("%02x",string.byte(g))end)end;local function y(f,g)local h=""for i=1,g do local l=f%256;h=string.char(l)..h;f=(f-l)/256 end;return h end;local function D(f,g)local h=0;for i=g,g+3 do h=h*256+string.byte(f,i)end;return h end;local function E(f,g)local h=64-(g+9)%64;g=y(8*g,8)f=f.."\128"..string.rep("\0",h)..g;assert(#f%64==0)return f end;local function I(f)f[1]=0x6a09e667;f[2]=0xbb67ae85;f[3]=0x3c6ef372;f[4]=0xa54ff53a;f[5]=0x510e527f;f[6]=0x9b05688c;f[7]=0x1f83d9ab;f[8]=0x5be0cd19;return f end;local function K(f,g,h)local i={}for l=1,16 do i[l]=D(f,g+(l-1)*4)end;for l=17,64 do local m=i[l-15]local p=k(t(m,7),t(m,18),s(m,3))m=i[l-2]i[l]=(i[l-16]+p+i[l-7]+k(t(m,17),t(m,19),s(m,10)))%b end;local l,m,p,r,u,v,x,z=h[1],h[2],h[3],h[4],h[5],h[6],h[7],h[8]for A=1,64 do local B=k(t(l,2),t(l,13),t(l,22))local C=k(n(l,m),n(l,p),n(m,p))local F=(B+C)%b;local G=k(t(u,6),t(u,11),t(u,25))local H=k(n(u,v),n(o(u),x))local J=(z+G+H+e[A]+i[A])%b;z=x;x=v;v=u;u=(r+J)%b;r=p;p=m;m=l;l=(J+F)%b end;h[1]=(h[1]+l)%b;h[2]=(h[2]+m)%b;h[3]=(h[3]+p)%b;h[4]=(h[4]+r)%b;h[5]=(h[5]+u)%b;h[6]=(h[6]+v)%b;h[7]=(h[7]+x)%b;h[8]=(h[8]+z)%b end;local function Z(f)f=E(f,#f)local g=I{}for h=1,#f,64 do K(f,h,g)end;return w(y(g[1],4)..y(g[2],4)..y(g[3],4)..y(g[4],4)..y(g[5],4)..y(g[6],4)..y(g[7],4)..y(g[8],4))end;local f;local g={["\\"]="\\",["\""]="\"",["\b"]="b",["\f"]="f",["\n"]="n",["\r"]="r",["\t"]="t"}local h={["/"]="/"}for i,l in pairs(g)do h[l]=i end;local i=function(i)return"\\"..(g[i]or string.format("u%04x",i:byte()))end;local l=function(l)return"null"end;local m=function(m,p)local r={}p=p or{}if p[m]then error"circular reference"end;p[m]=true;if rawget(m,1)~=nil or next(m)==nil then local u=0;for v in pairs(m)do if type(v)~="number"then error"invalid table: mixed or invalid key types"end;u=u+1 end;if u~=#m then error"invalid table: sparse array"end;for v,x in ipairs(m)do table.insert(r,f(x,p))end;p[m]=nil;return"["..table.concat(r,",").."]"else for u,v in pairs(m)do if type(u)~="string"then error"invalid table: mixed or invalid key types"end;table.insert(r,f(u,p)..":"..f(v,p))end;p[m]=nil;return"{"..table.concat(r,",").."}"end end;local p=function(p)return'"'..p:gsub('[%z\1-\31\\"]',i)..'"'end;local r=function(r)if r~=r or r<=-math.huge or r>=math.huge then error("unexpected number value '"..tostring(r).."'")end;return string.format("%.14g",r)end;local u={["nil"]=l,table=m,string=p,number=r,boolean=tostring}f=function(v,x)local z=type(v)local A=u[z]if A then return A(v,x)end;error("unexpected type '"..z.."'")end;local v=function(v)return f(v)end;local x;local z=function(...)local z={}for A=1,select("#",...)do z[select(A,...)]=true end;return z end;local A=z(" ","\t","\r","\n")local B=z(" ","\t","\r","\n","]","}",",")local C=z("\\","/",'"',"b","f","n","r","t","u")local F=z("true","false","null")local G={["true"]=true,["false"]=false,null=nil}local H=function(H,J,L,M)for N=J,#H do if L[H:sub(N,N)]~=M then return N end end;return#H+1 end;local J=function(J,L,M)local N=1;local O=1;for P=1,L-1 do O=O+1;if J:sub(P,P)=="\n"then N=N+1;O=1 end end;error(string.format("%s at line %d col %d",M,N,O))end;local L=function(L)local M=math.floor;if L<=0x7f then return string.char(L)elseif L<=0x7ff then return string.char(M(L/64)+192,L%64+128)elseif L<=0xffff then return string.char(M(L/4096)+224,M(L%4096/64)+128,L%64+128)elseif L<=0x10ffff then return string.char(M(L/262144)+240,M(L%262144/4096)+128,M(L%4096/64)+128,L%64+128)end;error(string.format("invalid unicode codepoint '%x'",L))end;local M=function(M)local N=tonumber(M:sub(1,4),16)local O=tonumber(M:sub(7,10),16)if O then return L((N-0xd800)*0x400+O-0xdc00+0x10000)else return L(N)end end;local N=function(N,O)local P=""local Q=O+1;local R=Q;while Q<=#N do local S=N:byte(Q)if S<32 then J(N,Q,"control character in string")elseif S==92 then P=P..N:sub(R,Q-1)Q=Q+1;local T=N:sub(Q,Q)if T=="u"then local U=N:match("^[dD][89aAbB]%x%x\\u%x%x%x%x",Q+1)or N:match("^%x%x%x%x",Q+1)or J(N,Q-1,"invalid unicode escape in string")P=P..M(U)Q=Q+#U else if not C[T]then J(N,Q-1,"invalid escape char '"..T.."' in string")end;P=P..h[T]end;R=Q+1 elseif S==34 then P=P..N:sub(R,Q-1)return P,Q+1 end;Q=Q+1 end;J(N,O,"expected closing quote for string")end;local O=function(O,P)local Q=H(O,P,B)local R=O:sub(P,Q-1)local S=tonumber(R)if not S then J(O,P,"invalid number '"..R.."'")end;return S,Q end;local P=function(P,Q)local R=H(P,Q,B)local S=P:sub(Q,R-1)if not F[S]then J(P,Q,"invalid literal '"..S.."'")end;return G[S],R end;local Q=function(Q,R)local S={}local T=1;R=R+1;while 1 do local U;R=H(Q,R,A,true)if Q:sub(R,R)=="]"then R=R+1;break end;U,R=x(Q,R)S[T]=U;T=T+1;R=H(Q,R,A,true)local V=Q:sub(R,R)R=R+1;if V=="]"then break end;if V~=","then J(Q,R,"expected ']' or ','")end end;return S,R end;local R=function(R,S)local T={}S=S+1;while 1 do local U,V;S=H(R,S,A,true)if R:sub(S,S)=="}"then S=S+1;break end;if R:sub(S,S)~='"'then J(R,S,"expected string for key")end;U,S=x(R,S)S=H(R,S,A,true)if R:sub(S,S)~=":"then J(R,S,"expected ':' after key")end;S=H(R,S+1,A,true)V,S=x(R,S)T[U]=V;S=H(R,S,A,true)local W=R:sub(S,S)S=S+1;if W=="}"then break end;if W~=","then J(R,S,"expected '}' or ','")end end;return T,S end;local S={['"']=N,["0"]=O,["1"]=O,["2"]=O,["3"]=O,["4"]=O,["5"]=O,["6"]=O,["7"]=O,["8"]=O,["9"]=O,["-"]=O,t=P,f=P,n=P,["["]=Q,["{"]=R}x=function(T,U)local V=T:sub(U,U)local W=S[V]if W then return W(T,U)end;J(T,U,"unexpected character '"..V.."'")end;local T=function(T)if type(T)~="string"then error("expected argument of type string, got "..type(T))end;local U,V=x(T,H(T,1,A,true))V=H(T,V,A,true)if V<=#T then J(T,V,"trailing garbage")end;return U end; local U,V,W=v,T,Z; local X={} local Y=(cloneref or clonereference or function(Y)return Y end) function X.New(_,aa) local ab=_; local ac=aa; local ad=true; local ae=function(ae)end; repeat task.wait(1)until game:IsLoaded(); local af=false; local ag,ah,ai,aj,ak,al,am,an,ao=setclipboard or toclipboard,request or http_request or syn_request,string.char,tostring,string.sub,os.time,math.random,math.floor,gethwid or function()return Y(game:GetService"Players").LocalPlayer.UserId end local ap,aq="",0; local ar="https://api.platoboost.app"; local as=ah{ Url=ar.."/public/connectivity", Method="GET" }; if as.StatusCode~=200 and as.StatusCode~=429 then ar="https://api.platoboost.net"; end function cacheLink() if aq+(600)0 then local aw=af.CanvasPosition.Y/au al.Position=UDim2.new(0,0,math.clamp(aw*av,0,av),0) else al.Position=UDim2.new(0,0,0,0) end end local function StopDrag() if aj.CurrentInput==an then aj.CurrentInput=nil end ao=false af.ScrollingEnabled=true if ap then ap:Disconnect() end if aq then aq:Disconnect() end end ad.AddSignal(am.InputBegan,function(ar) if ar.UserInputType~=Enum.UserInputType.MouseButton1 and ar.UserInputType~=Enum.UserInputType.Touch then return end if ao then return end if aj.CurrentInput and aj.CurrentInput~=an then return end aj.CurrentInput=an ao=true af.ScrollingEnabled=false local as=ar.Position.Y local at=af.CanvasPosition.Y ap=ac.InputChanged:Connect(function(au) if au.UserInputType==Enum.UserInputType.MouseMovement or au.UserInputType==Enum.UserInputType.Touch then local av=au.Position.Y-as local aw=af.AbsoluteCanvasSize.Y local ax=af.AbsoluteWindowSize.Y local ay=math.max(aw-ax,0) local az=ak.AbsoluteSize.Y local aA=al.AbsoluteSize.Y local aB=math.max(az-aA,1) local b=av*(ay/aB) af.CanvasPosition= Vector2.new(af.CanvasPosition.X,math.clamp(at+b,0,ay)) end end) aq=ac.InputEnded:Connect(function(au) if au.UserInputType==ar.UserInputType then if aj.CurrentInput and aj.CurrentInput~=an then return end aj.CurrentInput=nil StopDrag() end end) end) ad.AddSignal(af:GetPropertyChangedSignal"AbsoluteWindowSize",UpdateVisuals) ad.AddSignal(af:GetPropertyChangedSignal"AbsoluteCanvasSize",UpdateVisuals) ad.AddSignal(af:GetPropertyChangedSignal"CanvasPosition",UpdateVisuals) UpdateVisuals() return ak end return aa end function a.y() local aa={} local ab=a.load'd' local ac=ab.New local ad=ab.Tween function aa.New(ae,af,ag) local ah={ Title=af.Title or"Tag", Icon=af.Icon, Color=af.Color or Color3.fromHex"#315dff", Radius=af.Radius or 999, Border=af.Border or false, TagFrame=nil, Height=26, Padding=10, TextSize=14, IconSize=16, } local ai if ah.Icon then ai=ab.Image(ah.Icon,ah.Icon,0,af.Window,"Tag",false) ai.Size=UDim2.new(0,ah.IconSize,0,ah.IconSize) ai.ImageLabel.ImageColor3=typeof(ah.Color)=="Color3" and ab.GetTextColorForHSB(ah.Color) or typeof(ah.Color)=="string" and(ab.GetTextColorForHSB(ab.GetThemeProperty(ah.Color,ab.Theme))) end local aj=ac("TextLabel",{ BackgroundTransparency=1, AutomaticSize="XY", TextSize=ah.TextSize, FontFace=Font.new(ab.Font,Enum.FontWeight.SemiBold), Text=ah.Title, TextColor3=typeof(ah.Color)=="Color3"and ab.GetTextColorForHSB(ah.Color)or typeof( ah.Color )=="string"and(ab.GetTextColorForHSB(ab.GetThemeProperty(ah.Color,ab.Theme))), }) local ak if typeof(ah.Color)=="table"then ak=ac"UIGradient" for al,am in next,ah.Color do ak[al]=am end aj.TextColor3=ab.GetTextColorForHSB(ab.GetAverageColor(ak)) if ai then ai.ImageLabel.ImageColor3=ab.GetTextColorForHSB(ab.GetAverageColor(ak)) end end local al=ab.NewRoundFrame(ah.Radius,"Squircle",{ AutomaticSize="X", Size=UDim2.new(0,0,0,ah.Height), Parent=ag, ImageColor3=typeof(ah.Color)=="Color3"and ah.Color or typeof(ah.Color)=="table"and Color3.new(1,1,1) or nil, ThemeTag=typeof(ah.Color)=="string"and{ ImageColor3=ah.Color, }, },{ ak, ab.NewRoundFrame(ah.Radius+1,"SquircleGlass",{ Size=UDim2.new(1,1,1,1), AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), ThemeTag={ ImageColor3="White", }, ImageTransparency=0.75, }), ac("Frame",{ Size=UDim2.new(0,0,1,0), AutomaticSize="X", Name="Content", BackgroundTransparency=1, },{ ai, aj, ac("UIPadding",{ PaddingLeft=UDim.new(0,ah.Padding), PaddingRight=UDim.new(0,ah.Padding), }), ac("UIListLayout",{ FillDirection="Horizontal", VerticalAlignment="Center", Padding=UDim.new(0,ah.Padding/1.5), }), }), }) function ah.SetTitle(am,an) ah.Title=an aj.Text=an return ah end function ah.SetColor(am,an) ah.Color=an if typeof(an)=="table"then local ao=ab.GetAverageColor(an) ad(aj,0.06,{TextColor3=ab.GetTextColorForHSB(ao)}):Play() local ap=al:FindFirstChildOfClass"UIGradient"or ac("UIGradient",{Parent=al}) for aq,ar in next,an do ap[aq]=ar end ad(al,0.06,{ImageColor3=Color3.new(1,1,1)}):Play() else if ak then ak:Destroy() end ad(aj,0.06,{TextColor3=ab.GetTextColorForHSB(an)}):Play() if ai then ad(ai.ImageLabel,0.06,{ImageColor3=ab.GetTextColorForHSB(an)}):Play() end ad(al,0.06,{ImageColor3=an}):Play() end return ah end function ah.SetIcon(am,an) ah.Icon=an if an then ai=ab.Image(an,an,0,af.Window,"Tag",false) ai.Size=UDim2.new(0,ah.IconSize,0,ah.IconSize) ai.Parent=al if typeof(ah.Color)=="Color3"then ai.ImageLabel.ImageColor3=ab.GetTextColorForHSB(ah.Color) elseif typeof(ah.Color)=="table"then ai.ImageLabel.ImageColor3=ab.GetTextColorForHSB(ab.GetAverageColor(ak)) end else if ai then ai:Destroy() ai=nil end end return ah end function ah.Destroy(am) al:Destroy() return ah end ab:OnThemeChange(function(am,an) aj.TextColor3=ab.GetTextColorForHSB(ab.GetThemeProperty(ah.Color,ab.Theme)) ai.ImageLabel.ImageColor3= ab.GetTextColorForHSB(ab.GetThemeProperty(ah.Color,ab.Theme)) end) return ah end return aa end function a.z() local aa=(cloneref or clonereference or function(aa)return aa end) local ab=aa(game:GetService"RunService") local ac=aa(game:GetService"HttpService") local ad local ae ae={ Folder=nil, Path=nil, Configs={}, Parser={ Colorpicker={ Save=function(af) return{ __type=af.__type, value=af.Default:ToHex(), transparency=af.Transparency or nil, } end, Load=function(af,ag) if af and af.Update then af:Update(Color3.fromHex(ag.value),ag.transparency or nil) end end }, Dropdown={ Save=function(af) return{ __type=af.__type, value=af.Value, } end, Load=function(af,ag) if af and af.Select then af:Select(ag.value) end end }, Input={ Save=function(af) return{ __type=af.__type, value=af.Value, } end, Load=function(af,ag) if af and af.Set then af:Set(ag.value) end end }, Keybind={ Save=function(af) return{ __type=af.__type, value=af.Value, } end, Load=function(af,ag) if af and af.Set then af:Set(ag.value) end end }, Slider={ Save=function(af) return{ __type=af.__type, value=af.Value.Default, } end, Load=function(af,ag) if af and af.Set then af:Set(tonumber(ag.value)) end end }, Toggle={ Save=function(af) return{ __type=af.__type, value=af.Value, } end, Load=function(af,ag) if af and af.Set then af:Set(ag.value) end end }, } } function ae.Init(af,ag) if not ag.Folder then warn"[ WindUI.ConfigManager ] Window.Folder is not specified." return false end if ab:IsStudio()or not writefile then warn"[ WindUI.ConfigManager ] The config system doesn't work in the studio." return false end ad=ag ae.Folder=ad.Folder ae.Path="WindUI/"..tostring(ae.Folder).."/config/" if not isfolder(ae.Path)then makefolder(ae.Path) end local ah=ae:AllConfigs() for ai,aj in next,ah do if isfile and readfile and isfile(aj..".json")then ae.Configs[aj]=readfile(aj..".json") end end return ae end function ae.SetPath(af,ag) if not ag then warn"[ WindUI.ConfigManager ] Custom path is not specified." return false end ae.Path=ag if not ag:match"/$"then ae.Path=ag.."/" end if not isfolder(ae.Path)then makefolder(ae.Path) end return true end function ae.CreateConfig(af,ag,ah) local ai={ Path=ae.Path..ag..".json", Elements={}, CustomData={}, AutoLoad=ah or false, Version=1.2, } if not ag then return false,"No config file is selected" end function ai.SetAsCurrent(aj) ad:SetCurrentConfig(ai) end function ai.Register(aj,ak,al) ai.Elements[ak]=al end function ai.Set(aj,ak,al) ai.CustomData[ak]=al end function ai.Get(aj,ak) return ai.CustomData[ak] end function ai.SetAutoLoad(aj,ak) ai.AutoLoad=ak end function ai.Save(aj) if ad.PendingFlags then for ak,al in next,ad.PendingFlags do ai:Register(ak,al) end end local ak={ __version=ai.Version, __elements={}, __autoload=ai.AutoLoad, __custom=ai.CustomData } for al,am in next,ai.Elements do if ae.Parser[am.__type]then ak.__elements[tostring(al)]=ae.Parser[am.__type].Save(am) end end local al=ac:JSONEncode(ak) if writefile then writefile(ai.Path,al) end return ak end function ai.Load(aj) if isfile and not isfile(ai.Path)then return false,"Config file does not exist" end local ak,al=pcall(function() local ak=readfile or function() warn"[ WindUI.ConfigManager ] The config system doesn't work in the studio." return nil end return ac:JSONDecode(ak(ai.Path)) end) if not ak then return false,"Failed to parse config file" end if not al.__version then local am={ __version=ai.Version, __elements=al, __custom={} } al=am end if ad.PendingFlags then for am,an in next,ad.PendingFlags do ai:Register(am,an) end end for am,an in next,(al.__elements or{})do if ai.Elements[am]and ae.Parser[an.__type]then task.spawn(function() ae.Parser[an.__type].Load(ai.Elements[am],an) end) end end ai.CustomData=al.__custom or{} return ai.CustomData end function ai.Delete(aj) if not delfile then return false,"delfile function is not available" end if not isfile(ai.Path)then return false,"Config file does not exist" end local ak,al=pcall(function() delfile(ai.Path) end) if not ak then return false,"Failed to delete config file: "..tostring(al) end ae.Configs[ag]=nil if ad.CurrentConfig==ai then ad.CurrentConfig=nil end return true,"Config deleted successfully" end function ai.GetData(aj) return{ elements=ai.Elements, custom=ai.CustomData, autoload=ai.AutoLoad } end if isfile(ai.Path)then local aj,ak=pcall(function() return ac:JSONDecode(readfile(ai.Path)) end) if aj and ak and ak.__autoload then ai.AutoLoad=true task.spawn(function() task.wait(0.5) local al,am=pcall(function() return ai:Load() end) if al then if ad.Debug then print("[ WindUI.ConfigManager ] AutoLoaded config: "..ag)end else warn("[ WindUI.ConfigManager ] Failed to AutoLoad config: "..ag.." - "..tostring(am)) end end) end end ai:SetAsCurrent() ae.Configs[ag]=ai return ai end function ae.Config(af,ag,ah) return ae:CreateConfig(ag,ah) end function ae.GetAutoLoadConfigs(af) local ag={} for ah,ai in pairs(ae.Configs)do if ai.AutoLoad then table.insert(ag,ah) end end return ag end function ae.DeleteConfig(af,ag) if not delfile then return false,"delfile function is not available" end local ah=ae.Path..ag..".json" if not isfile(ah)then return false,"Config file does not exist" end local ai,aj=pcall(function() delfile(ah) end) if not ai then return false,"Failed to delete config file: "..tostring(aj) end ae.Configs[ag]=nil if ad.CurrentConfig and ad.CurrentConfig.Path==ah then ad.CurrentConfig=nil end return true,"Config deleted successfully" end function ae.AllConfigs(af) if not listfiles then return{}end local ag={} if not isfolder(ae.Path)then makefolder(ae.Path) return ag end for ah,ai in next,listfiles(ae.Path)do local aj=ai:match"([^\\/]+)%.json$" if aj then table.insert(ag,aj) end end return ag end function ae.GetConfig(af,ag) return ae.Configs[ag] end return ae end function a.A() local aa={} local ab=a.load'd' local ac=ab.New local ad=ab.Tween local ae=(cloneref or clonereference or function(ae)return ae end) ae(game:GetService"UserInputService") function aa.New(af) local ag={ Button=nil } local ah local ai=ac("TextLabel",{ Text=af.Title, TextSize=17, FontFace=Font.new(ab.Font,Enum.FontWeight.Medium), BackgroundTransparency=1, AutomaticSize="XY", }) local aj=ac("Frame",{ Size=UDim2.new(0,36,0,36), BackgroundTransparency=1, Name="Drag", },{ ac("ImageLabel",{ Image=ab.Icon"move"[1], ImageRectOffset=ab.Icon"move"[2].ImageRectPosition, ImageRectSize=ab.Icon"move"[2].ImageRectSize, Size=UDim2.new(0,18,0,18), BackgroundTransparency=1, Position=UDim2.new(0.5,0,0.5,0), AnchorPoint=Vector2.new(0.5,0.5), ThemeTag={ ImageColor3="Icon", }, ImageTransparency=.3, }) }) local ak=ac("Frame",{ Size=UDim2.new(0,1,1,0), Position=UDim2.new(0,36,0.5,0), AnchorPoint=Vector2.new(0,0.5), BackgroundColor3=Color3.new(1,1,1), BackgroundTransparency=.9, }) local al=ac("Frame",{ Size=UDim2.new(0,0,0,0), Position=UDim2.new(0.5,0,0,28), AnchorPoint=Vector2.new(0.5,0.5), Parent=af.Parent, BackgroundTransparency=1, Active=true, Visible=false, }) local am=ac("UIScale",{ Scale=1, }) local an=ac("Frame",{ Size=UDim2.new(0,0,0,44), AutomaticSize="X", Parent=al, Active=false, BackgroundTransparency=.25, ZIndex=99, BackgroundColor3=Color3.new(0,0,0), },{ am, ac("UICorner",{ CornerRadius=UDim.new(1,0) }), ac("UIStroke",{ Thickness=1, ApplyStrokeMode="Border", Color=Color3.new(1,1,1), Transparency=0, },{ ac("UIGradient",{ Color=ColorSequence.new(Color3.fromHex"40c9ff",Color3.fromHex"e81cff") }) }), aj, ak, ac("UIListLayout",{ Padding=UDim.new(0,4), FillDirection="Horizontal", VerticalAlignment="Center", }), ac("TextButton",{ AutomaticSize="XY", Active=true, BackgroundTransparency=1, Size=UDim2.new(0,0,0,36), BackgroundColor3=Color3.new(1,1,1), },{ ac("UICorner",{ CornerRadius=UDim.new(1,-4) }), ah, ac("UIListLayout",{ Padding=UDim.new(0,af.UIPadding), FillDirection="Horizontal", VerticalAlignment="Center", }), ai, ac("UIPadding",{ PaddingLeft=UDim.new(0,11), PaddingRight=UDim.new(0,11), }), }), ac("UIPadding",{ PaddingLeft=UDim.new(0,4), PaddingRight=UDim.new(0,4), }) }) ag.Button=an function ag.SetIcon(ao,ap) if ah then ah:Destroy() end if ap then ah=ab.Image( ap, af.Title, 0, af.Folder, "OpenButton", true, af.IconThemed ) ah.Size=UDim2.new(0,22,0,22) ah.LayoutOrder=-1 ah.Parent=ag.Button.TextButton end end if af.Icon then ag:SetIcon(af.Icon) end ab.AddSignal(an:GetPropertyChangedSignal"AbsoluteSize",function() al.Size=UDim2.new( 0,an.AbsoluteSize.X, 0,an.AbsoluteSize.Y ) end) ab.AddSignal(an.TextButton.MouseEnter,function() ad(an.TextButton,.1,{BackgroundTransparency=.93}):Play() end) ab.AddSignal(an.TextButton.MouseLeave,function() ad(an.TextButton,.1,{BackgroundTransparency=1}):Play() end) local ao=ab.Drag(al) function ag.Visible(ap,aq) al.Visible=aq end function ag.SetScale(ap,aq) am.Scale=aq end function ag.Edit(ap,aq) local ar={ Title=aq.Title, Icon=aq.Icon, Enabled=aq.Enabled, Position=aq.Position, OnlyIcon=aq.OnlyIcon or false, Draggable=aq.Draggable or nil, OnlyMobile=aq.OnlyMobile, CornerRadius=aq.CornerRadius or UDim.new(1,0), StrokeThickness=aq.StrokeThickness or 2, Scale=aq.Scale or 1, Color=aq.Color or ColorSequence.new(Color3.fromHex"40c9ff",Color3.fromHex"e81cff"), } if ar.Enabled==false then af.IsOpenButtonEnabled=false end if ar.OnlyMobile~=false then ar.OnlyMobile=true else af.IsPC=false end if ar.Draggable==false and aj and ak then aj.Visible=ar.Draggable ak.Visible=ar.Draggable if ao then ao:Set(ar.Draggable) end end if ar.Position and al then al.Position=ar.Position end if ar.OnlyIcon==true and ai then ai.Visible=false an.TextButton.UIPadding.PaddingLeft=UDim.new(0,7) an.TextButton.UIPadding.PaddingRight=UDim.new(0,7) elseif ar.OnlyIcon==false then ai.Visible=true an.TextButton.UIPadding.PaddingLeft=UDim.new(0,11) an.TextButton.UIPadding.PaddingRight=UDim.new(0,11) end if ai then if ar.Title then ai.Text=ar.Title ab:ChangeTranslationKey(ai,ar.Title) elseif ar.Title==nil then end end if ar.Icon then ag:SetIcon(ar.Icon) end an.UIStroke.UIGradient.Color=ar.Color if Glow then Glow.UIGradient.Color=ar.Color end an.UICorner.CornerRadius=ar.CornerRadius an.TextButton.UICorner.CornerRadius=UDim.new(ar.CornerRadius.Scale,ar.CornerRadius.Offset-4) an.UIStroke.Thickness=ar.StrokeThickness ag:SetScale(ar.Scale) end return ag end return aa end function a.B() local aa={} local ab=a.load'd' local ac=ab.New local ad=ab.Tween function aa.New(ae,af,ag,ah,ai,aj) local ak={ Container=nil, TooltipSize=16, TooltipArrowSizeX=ai=="Small"and 16 or 24, TooltipArrowSizeY=ai=="Small"and 6 or 9, PaddingX=ai=="Small"and 12 or 14, PaddingY=ai=="Small"and 7 or 9, Radius=999, TitleFrame=nil, } ah=ah or"" aj=aj~=false local al=ac("TextLabel",{ AutomaticSize="XY", TextWrapped=aj, BackgroundTransparency=1, FontFace=Font.new(ab.Font,Enum.FontWeight.Medium), Text=ae, TextSize=ai=="Small"and 15 or 17, TextTransparency=1, ThemeTag={ TextColor3="Tooltip"..ah.."Text", } }) ak.TitleFrame=al local am=ac("UIScale",{ Scale=.9 }) local an=ac("Frame",{ AnchorPoint=Vector2.new(0.5,0), AutomaticSize="XY", BackgroundTransparency=1, Parent=af, Visible=false },{ ac("UISizeConstraint",{ MaxSize=Vector2.new(400,math.huge) }), ac("Frame",{ AutomaticSize="XY", BackgroundTransparency=1, LayoutOrder=99, Visible=ag, Name="Arrow", },{ ac("ImageLabel",{ Size=UDim2.new(0,ak.TooltipArrowSizeX,0,ak.TooltipArrowSizeY), BackgroundTransparency=1, Image="rbxassetid://105854070513330", ThemeTag={ ImageColor3="Tooltip"..ah, }, },{ }), }), ab.NewRoundFrame(ak.Radius,"Squircle",{ AutomaticSize="XY", ThemeTag={ ImageColor3="Tooltip"..ah, }, ImageTransparency=1, Name="Background", },{ ac("Frame",{ AutomaticSize="XY", BackgroundTransparency=1, },{ ac("UICorner",{ CornerRadius=UDim.new(0,16), }), ac("UIListLayout",{ Padding=UDim.new(0,12), FillDirection="Horizontal", VerticalAlignment="Center" }), al, ac("UIPadding",{ PaddingTop=UDim.new(0,ak.PaddingY), PaddingLeft=UDim.new(0,ak.PaddingX), PaddingRight=UDim.new(0,ak.PaddingX), PaddingBottom=UDim.new(0,ak.PaddingY), }), }) }), am, ac("UIListLayout",{ Padding=UDim.new(0,0), FillDirection="Vertical", VerticalAlignment="Center", HorizontalAlignment="Center", }), }) ak.Container=an function ak.Open(ao) an.Visible=true ad(an.Background,.2,{ImageTransparency=0},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ad(an.Arrow.ImageLabel,.2,{ImageTransparency=0},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ad(al,.2,{TextTransparency=0},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ad(am,.22,{Scale=1},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end function ak.Close(ao,ap) ad(an.Background,.3,{ImageTransparency=1},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ad(an.Arrow.ImageLabel,.2,{ImageTransparency=1},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ad(al,.3,{TextTransparency=1},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ad(am,.35,{Scale=.9},Enum.EasingStyle.Quint,Enum.EasingDirection.In):Play() ap=ap~=false if ap then task.wait(.35) an.Visible=false an:Destroy() end end return ak end return aa end function a.C() game:GetService"ReplicatedStorage" local aa=a.load'd' local ab=aa.New local ac=aa.NewRoundFrame local ad=aa.Tween local ae=(cloneref or clonereference or function(ae) return ae end) ae(game:GetService"UserInputService") local af=a.load'y' local function Color3ToHSB(ag) local ah,ai,aj=ag.R,ag.G,ag.B local ak=math.max(ah,ai,aj) local al=math.min(ah,ai,aj) local am=ak-al local an=0 if am~=0 then if ak==ah then an=(ai-aj)/am%6 elseif ak==ai then an=(aj-ah)/am+2 else an=(ah-ai)/am+4 end an=an*60 else an=0 end local ao=(ak==0)and 0 or(am/ak) local ap=ak return{ h=math.floor(an+0.5), s=ao, b=ap, } end local function GetPerceivedBrightness(ag) local ah=ag.R local ai=ag.G local aj=ag.B return 0.299*ah+0.587*ai+0.114*aj end local function GetTextColorForHSB(ag) local ah=Color3ToHSB(ag)local ai, aj, ak=ah.h, ah.s, ah.b if GetPerceivedBrightness(ag)>0.5 then return Color3.fromHSV(ai/360,0,0.05) else return Color3.fromHSV(ai/360,0,0.98) end end return function(ag) local ah={ Title=ag.Title, Desc=ag.Desc or nil, Hover=ag.Hover, Thumbnail=ag.Thumbnail, ThumbnailSize=ag.ThumbnailSize or 80, Image=ag.Image, IconThemed=ag.IconThemed or false, ImageSize=ag.ImageSize or 30, Color=ag.Color, Scalable=ag.Scalable, Parent=ag.Parent, Justify=ag.Justify or"Between", UIPadding=ag.Window.ElementConfig.UIPadding, UICorner=ag.Window.ElementConfig.UICorner, Size=ag.Size or"Default", Tags=ag.Tags or{}, UIElements={}, Index=ag.Index, } local ai=ah.Size=="Small"and-4 or ah.Size=="Large"and 4 or 0 local aj=ah.Size=="Small"and-4 or ah.Size=="Large"and 4 or 0 local ak=ah.ImageSize local al=ah.ThumbnailSize local am=true local an=0 local ao local ap if ah.Thumbnail then ao=aa.Image( ah.Thumbnail, ah.Title, ag.Window.NewElements and ah.UICorner-11 or(ah.UICorner-4), ag.Window.Folder, "Thumbnail", false, ah.IconThemed ) ao.Size=UDim2.new(1,0,0,al) end if ah.Image then ap=aa.Image( ah.Image, ah.Title, ag.Window.NewElements and ah.UICorner-11 or(ah.UICorner-4), ag.Window.Folder, "Image", ah.IconThemed, not ah.Color and true or false, "ElementIcon" ) if typeof(ah.Color)=="string"and not string.find(ah.Image,"rbxthumb")then ap.ImageLabel.ImageColor3=GetTextColorForHSB(Color3.fromHex(aa.Colors[ah.Color])) elseif typeof(ah.Color)=="Color3"and not string.find(ah.Image,"rbxthumb")then ap.ImageLabel.ImageColor3=GetTextColorForHSB(ah.Color) end ap.Size=UDim2.new(0,ak,0,ak) an=ak end local function CreateText(aq,ar) local as=typeof(ah.Color)=="string" and GetTextColorForHSB(Color3.fromHex(aa.Colors[ah.Color])) or typeof(ah.Color)=="Color3"and GetTextColorForHSB(ah.Color) return ab("TextLabel",{ BackgroundTransparency=1, Text=aq or"", TextSize=ar=="Desc"and 15 or 17, TextXAlignment="Left", ThemeTag={ TextColor3=not ah.Color and("Element"..ar)or nil, }, TextColor3=ah.Color and as or nil, TextTransparency=ar=="Desc"and 0.3 or 0, TextWrapped=true, Size=UDim2.new(ah.Justify=="Between"and 1 or 0,0,0,0), AutomaticSize=ah.Justify=="Between"and"Y"or"XY", FontFace=Font.new(aa.Font,ar=="Desc"and Enum.FontWeight.Medium or Enum.FontWeight.SemiBold), }) end local aq=CreateText(ah.Title,"Title") local ar=CreateText(ah.Desc,"Desc") if not ah.Title or ah.Title==""then ar.Visible=false end if not ah.Desc or ah.Desc==""then ar.Visible=false end ah.UIElements.Title=aq ah.UIElements.Desc=ar ah.UIElements.Container=ab("Frame",{ Size=UDim2.new(1,0,1,0), AutomaticSize="Y", BackgroundTransparency=1, },{ ab("UIListLayout",{ Padding=UDim.new(0,ah.UIPadding), FillDirection="Vertical", VerticalAlignment="Center", HorizontalAlignment=ah.Justify=="Between"and"Left"or"Center", }), ao, ab("Frame",{ Size=UDim2.new( ah.Justify=="Between"and 1 or 0, ah.Justify=="Between"and-ag.TextOffset or 0, 0, 0 ), AutomaticSize=ah.Justify=="Between"and"Y"or"XY", BackgroundTransparency=1, Name="TitleFrame", },{ ab("UIListLayout",{ Padding=UDim.new(0,ah.UIPadding), FillDirection="Horizontal", VerticalAlignment=ag.Window.NewElements and(ah.Justify=="Between"and"Top"or"Center") or"Center", HorizontalAlignment=ah.Justify~="Between"and ah.Justify or"Center", }), ap, ab("Frame",{ BackgroundTransparency=1, AutomaticSize=ah.Justify=="Between"and"Y"or"XY", Size=UDim2.new( ah.Justify=="Between"and 1 or 0, ah.Justify=="Between"and(ap and-an-ah.UIPadding or-an) or 0, 1, 0 ), Name="TitleFrame", },{ ab("UIPadding",{ PaddingTop=UDim.new(0,(ag.Window.NewElements and ah.UIPadding/2 or 0)+aj), PaddingLeft=UDim.new(0,(ag.Window.NewElements and ah.UIPadding/2 or 0)+ai), PaddingRight=UDim.new( 0, (ag.Window.NewElements and ah.UIPadding/2 or 0)+ai ), PaddingBottom=UDim.new( 0, (ag.Window.NewElements and ah.UIPadding/2 or 0)+aj ), }), ab("UIListLayout",{ Padding=UDim.new(0,6), FillDirection="Vertical", VerticalAlignment="Center", HorizontalAlignment="Left", }), ab("ScrollingFrame",{ Size=UDim2.new(1,0,0,0), AutomaticSize="Y", LayoutOrder=-99, BackgroundTransparency=1, ScrollingDirection="X", CanvasSize=UDim2.new(0,0,0,0), ScrollBarThickness=0, Visible=false, },{ ab("UIListLayout",{ FillDirection="Horizontal", VerticalAlignment="Center", HorizontalAlignment="Left", Padding=UDim.new(0,ag.Window.UIPadding/2), }), }), ab("Frame",{ Name="Space", Size=UDim2.new(1,0,0,0), BackgroundTransparency=1, Visible=false, }), aq, ar, }), }), }) for as,at in next,ag.Tags or{}do if not ah.UIElements.Container.TitleFrame.TitleFrame.ScrollingFrame.Visible then ah.UIElements.Container.TitleFrame.TitleFrame.ScrollingFrame.Visible=true ah.UIElements.Container.TitleFrame.TitleFrame.Space.Visible=true end af:New(at,ah.UIElements.Container.TitleFrame.TitleFrame.ScrollingFrame) end aa.AddSignal( ah.UIElements.Container.TitleFrame.TitleFrame.ScrollingFrame.UIListLayout:GetPropertyChangedSignal "AbsoluteContentSize" , function() ah.UIElements.Container.TitleFrame.TitleFrame.ScrollingFrame.Size=UDim2.new( 1, 0, 0, ah.UIElements.Container.TitleFrame.TitleFrame.ScrollingFrame.UIListLayout.AbsoluteContentSize.Y /ag.ParentConfig.UIScale ) end ) local as=aa.Image("lock","lock",0,ag.Window.Folder,"Lock",false) as.Size=UDim2.new(0,20,0,20) as.ImageLabel.ImageColor3=Color3.new(1,1,1) as.ImageLabel.ImageTransparency=0.4 local at=ab("TextLabel",{ Text="Locked", TextSize=18, FontFace=Font.new(aa.Font,Enum.FontWeight.Medium), AutomaticSize="XY", BackgroundTransparency=1, TextColor3=Color3.new(1,1,1), TextTransparency=0.05, }) local au=ab("Frame",{ Size=UDim2.new(1,ah.UIPadding*2,1,ah.UIPadding*2), BackgroundTransparency=1, AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), ZIndex=9999999, }) local av,aw=ac(ah.UICorner,"Squircle",{ Size=UDim2.new(1,0,1,0), ImageTransparency=0.25, ImageColor3=Color3.new(0,0,0), Visible=false, Active=false, Parent=au, },{ ab("UIListLayout",{ FillDirection="Horizontal", VerticalAlignment="Center", HorizontalAlignment="Center", Padding=UDim.new(0,8), }), as, at, },nil,true)local ax=ac(ah.UICorner,"Squircle-Outline",{ Size=UDim2.new(1,0,1,0), ImageTransparency=1, Active=false, ThemeTag={ ImageColor3="Text", }, Parent=au, },{ ab("UIListLayout",{ FillDirection="Horizontal", VerticalAlignment="Center", HorizontalAlignment="Center", Padding=UDim.new(0,8), }), },nil,true) local ay,az=ac(ah.UICorner,"Squircle",{ Size=UDim2.new(1,0,1,0), ImageTransparency=1, Active=false, ThemeTag={ ImageColor3="Text", }, Parent=au, },{ ab("UIListLayout",{ FillDirection="Horizontal", VerticalAlignment="Center", HorizontalAlignment="Center", Padding=UDim.new(0,8), }), },nil,true)local aA=ac(ah.UICorner,"Squircle-Outline",{ Size=UDim2.new(1,0,1,0), ImageTransparency=1, Visible=false, Active=false, ThemeTag={ ImageColor3="Text", }, Parent=au, },{ ab("UIListLayout",{ FillDirection="Horizontal", VerticalAlignment="Center", HorizontalAlignment="Center", Padding=UDim.new(0,8), }), ab("UIGradient",{ Name="HoverGradient", Color=ColorSequence.new{ ColorSequenceKeypoint.new(0,Color3.new(1,1,1)), ColorSequenceKeypoint.new(0.5,Color3.new(1,1,1)), ColorSequenceKeypoint.new(1,Color3.new(1,1,1)), }, Transparency=NumberSequence.new{ NumberSequenceKeypoint.new(0,1), NumberSequenceKeypoint.new(0.25,0.9), NumberSequenceKeypoint.new(0.5,0.3), NumberSequenceKeypoint.new(0.75,0.9), NumberSequenceKeypoint.new(1,1), }, }), },nil,true) local aB,b=ac(ah.UICorner,"Squircle",{ Size=UDim2.new(1,0,1,0), ImageTransparency=1, Active=false, ThemeTag={ ImageColor3="Text", }, Parent=au, },{ ab("UIGradient",{ Name="HoverGradient", Color=ColorSequence.new{ ColorSequenceKeypoint.new(0,Color3.new(1,1,1)), ColorSequenceKeypoint.new(0.5,Color3.new(1,1,1)), ColorSequenceKeypoint.new(1,Color3.new(1,1,1)), }, Transparency=NumberSequence.new{ NumberSequenceKeypoint.new(0,1), NumberSequenceKeypoint.new(0.25,0.9), NumberSequenceKeypoint.new(0.5,0.3), NumberSequenceKeypoint.new(0.75,0.9), NumberSequenceKeypoint.new(1,1), }, }), ab("UIListLayout",{ FillDirection="Horizontal", VerticalAlignment="Center", HorizontalAlignment="Center", Padding=UDim.new(0,8), }), },nil,true) local d,f=ac(ah.UICorner,"Squircle",{ Size=UDim2.new(1,0,0,0), AutomaticSize="Y", ImageTransparency=ah.Color and 0.05 or(not ag.Window.NewElements and 0.93 or nil), Parent=ag.Parent, ThemeTag={ ImageColor3=not ah.Color and(ag.Window.NewElements and"ElementBackground"or"Text")or nil, ImageTransparency=not ah.Color and(ag.Window.NewElements and"ElementBackgroundTransparency"or nil) or nil, }, ImageColor3=ah.Color and(typeof(ah.Color)=="string"and Color3.fromHex( aa.Colors[ah.Color] )or typeof(ah.Color)=="Color3"and ah.Color)or nil, },{ ah.UIElements.Container, au, ab("UIPadding",{ PaddingTop=UDim.new(0,ah.UIPadding), PaddingLeft=UDim.new(0,ah.UIPadding), PaddingRight=UDim.new(0,ah.UIPadding), PaddingBottom=UDim.new(0,ah.UIPadding), }), },true,true) ah.UIElements.Main=d ah.UIElements.Locked=av if ah.Hover then aa.AddSignal(d.MouseEnter,function() if am then ad(aB,0.12,{ImageTransparency=0.9}):Play() ad(aA,0.12,{ImageTransparency=0.8}):Play() aa.AddSignal(d.MouseMoved,function(g,h) aB.HoverGradient.Offset= Vector2.new(((g-d.AbsolutePosition.X)/d.AbsoluteSize.X)-0.5,0) aA.HoverGradient.Offset= Vector2.new(((g-d.AbsolutePosition.X)/d.AbsoluteSize.X)-0.5,0) end) end end) aa.AddSignal(d.InputEnded,function() if am then ad(aB,0.12,{ImageTransparency=1}):Play() ad(aA,0.12,{ImageTransparency=1}):Play() end end) end function ah.SetTitle(g,h) ah.Title=h aq.Text=h end function ah.SetDesc(g,h) ah.Desc=h ar.Text=h or"" if not h then ar.Visible=false elseif not ar.Visible then ar.Visible=true end end function ah.Colorize(g,h,i) if ah.Color then h[i]=typeof(ah.Color)=="string" and GetTextColorForHSB(Color3.fromHex(aa.Colors[ah.Color])) or typeof(ah.Color)=="Color3"and GetTextColorForHSB(ah.Color) or nil end end if ag.ElementTable then aa.AddSignal(aq:GetPropertyChangedSignal"Text",function() if ah.Title~=aq.Text then ah:SetTitle(aq.Text) ag.ElementTable.Title=aq.Text end end) aa.AddSignal(ar:GetPropertyChangedSignal"Text",function() if ah.Desc~=ar.Text then ah:SetDesc(ar.Text) ag.ElementTable.Desc=ar.Text end end) end function ah.SetThumbnail(g,h,i) ah.Thumbnail=h if i then ah.ThumbnailSize=i al=i end if ao then if h then ao:Destroy() ao=aa.Image( h, ah.Title, ah.UICorner-3, ag.Window.Folder, "Thumbnail", false, ah.IconThemed ) if ao then ao.Size=UDim2.new(1,0,0,al) ao.Parent=ah.UIElements.Container local l=ah.UIElements.Container:FindFirstChild"UIListLayout" if l then ao.LayoutOrder=-1 end end else ao.Visible=false end else if h then ao=aa.Image( h, ah.Title, ah.UICorner-3, ag.Window.Folder, "Thumbnail", false, ah.IconThemed ) if ao then ao.Size=UDim2.new(1,0,0,al) ao.Parent=ah.UIElements.Container local l=ah.UIElements.Container:FindFirstChild"UIListLayout" if l then ao.LayoutOrder=-1 end end end end end function ah.SetImage(g,h,i) ah.Image=h if i then ah.ImageSize=i ak=i end if h then local l=ap and ap.Parent or ah.UIElements.Container.TitleFrame if ap then ap:Destroy() end ap=aa.Image( h, h, ah.UICorner-3, ag.Window.Folder, "Image", not ah.Color and true or false ) if ap then if typeof(ah.Color)=="string"and not string.find(ah.Image,"rbxthumb")then ap.ImageLabel.ImageColor3= GetTextColorForHSB(Color3.fromHex(aa.Colors[ah.Color])) elseif typeof(ah.Color)=="Color3"and not string.find(ah.Image,"rbxthumb")then ap.ImageLabel.ImageColor3=GetTextColorForHSB(ah.Color) end ap.Visible=true ap.Parent=l ap.LayoutOrder=-99 ap.Size=UDim2.new(0,ak,0,ak) an=ah.ImageSize+ah.UIPadding end else if ap then ap.Visible=true end an=0 end ah.UIElements.Container.TitleFrame.TitleFrame.Size=UDim2.new(1,-an,1,0) end function ah.Destroy(g) d:Destroy() end function ah.Lock(g,h) am=false av.Active=true av.Visible=true at.Text=h or"Locked" end function ah.Unlock(g) am=true av.Active=false av.Visible=false end function ah.Highlight(g) local h=ab("UIGradient",{ Color=ColorSequence.new{ ColorSequenceKeypoint.new(0,Color3.new(1,1,1)), ColorSequenceKeypoint.new(0.5,Color3.new(1,1,1)), ColorSequenceKeypoint.new(1,Color3.new(1,1,1)), }, Transparency=NumberSequence.new{ NumberSequenceKeypoint.new(0,1), NumberSequenceKeypoint.new(0.1,0.9), NumberSequenceKeypoint.new(0.5,0.3), NumberSequenceKeypoint.new(0.9,0.9), NumberSequenceKeypoint.new(1,1), }, Rotation=0, Offset=Vector2.new(-1,0), Parent=ax, }) local i=ab("UIGradient",{ Color=ColorSequence.new{ ColorSequenceKeypoint.new(0,Color3.new(1,1,1)), ColorSequenceKeypoint.new(0.5,Color3.new(1,1,1)), ColorSequenceKeypoint.new(1,Color3.new(1,1,1)), }, Transparency=NumberSequence.new{ NumberSequenceKeypoint.new(0,1), NumberSequenceKeypoint.new(0.15,0.8), NumberSequenceKeypoint.new(0.5,0.1), NumberSequenceKeypoint.new(0.85,0.8), NumberSequenceKeypoint.new(1,1), }, Rotation=0, Offset=Vector2.new(-1,0), Parent=ay, }) ax.ImageTransparency=0.65 ay.ImageTransparency=0.88 ad(h,0.75,{ Offset=Vector2.new(1,0), }):Play() ad(i,0.75,{ Offset=Vector2.new(1,0), }):Play() task.spawn(function() task.wait(0.75) ax.ImageTransparency=1 ay.ImageTransparency=1 h:Destroy() i:Destroy() end) end function ah.UpdateShape(g) if ag.Window.NewElements then local h=aa:GetElementPosition( g.Elements, ah.Index, ag.ParentConfig.ParentTable.__type=="HStack"or ag.ParentConfig.ParentTable.__type=="Group" ) if h and d then f:SetType(h) aw:SetType(h) az:SetType(h) b:SetType(h) end end end return ah end end function a.D() local aa=a.load'd' local ab=aa.New local ac={} local ad=a.load'm'.New function ac.New(ae,af) af.Hover=false af.TextOffset=0 af.ParentConfig=af af.IsButtons=af.Buttons and#af.Buttons>0 and true or false local ag={ __type="Paragraph", Title=af.Title or"Paragraph", Desc=af.Desc or nil, Locked=af.Locked or false, } local ah=a.load'C'(af) ag.ParagraphFrame=ah if af.Buttons and#af.Buttons>0 then local ai=ab("Frame",{ Size=UDim2.new(1,0,0,38), BackgroundTransparency=1, AutomaticSize="Y", Parent=ah.UIElements.Container, },{ ab("UIListLayout",{ Padding=UDim.new(0,10), FillDirection="Vertical", }), }) for aj,ak in next,af.Buttons do local al=ad( ak.Title, ak.Icon, ak.Callback, ak.Variant or"White", ai, nil, nil, af.Window.NewElements and 999 or 10 ) al.Size=UDim2.new(1,0,0,38) end end return ag.__type,ag end return ac end function a.E() local aa=a.load'd'local ab= aa.New local ac={} function ac.New(ad,ae) local af={ __type="Button", Title=ae.Title or"Button", Desc=ae.Desc or nil, Icon=ae.Icon or"mouse-pointer-click", IconThemed=ae.IconThemed or false, IconColor=ae.IconColor or nil, Color=ae.Color, Justify=ae.Justify or"Between", IconAlign=ae.IconAlign or"Right", Locked=ae.Locked or false, LockedTitle=ae.LockedTitle, Callback=ae.Callback or function()end, UIElements={}, } local ag=true af.ButtonFrame=a.load'C'{ Title=af.Title, Desc=af.Desc, Parent=ae.Parent, Window=ae.Window, Color=af.Color, Justify=af.Justify, TextOffset=20, Hover=true, Scalable=true, Tab=ae.Tab, Index=ae.Index, ElementTable=af, ParentConfig=ae, Size=ae.Size, Tags=ae.Tags, } af.UIElements.ButtonIcon=aa.Image( af.Icon, af.Icon, 0, ae.Window.Folder, "Button", not(af.Color or af.IconColor)and true or nil, af.IconThemed ) if af.IconColor then af.UIElements.ButtonIcon.ImageLabel.ImageColor3=af.IconColor end af.UIElements.ButtonIcon.Size=UDim2.new(0,20,0,20) af.UIElements.ButtonIcon.Parent=af.Justify=="Between"and af.ButtonFrame.UIElements.Main or af.ButtonFrame.UIElements.Container.TitleFrame af.UIElements.ButtonIcon.LayoutOrder=af.IconAlign=="Left"and-99999 or 99999 af.UIElements.ButtonIcon.AnchorPoint=Vector2.new(1,0.5) af.UIElements.ButtonIcon.Position=UDim2.new(1,0,0.5,0) af.ButtonFrame:Colorize(af.UIElements.ButtonIcon.ImageLabel,"ImageColor3") function af.Lock(ah) af.Locked=true ag=false return af.ButtonFrame:Lock(af.LockedTitle) end function af.Unlock(ah) af.Locked=false ag=true return af.ButtonFrame:Unlock() end if af.Locked then af:Lock() end aa.AddSignal(af.ButtonFrame.UIElements.Main.MouseButton1Click,function() if ag then task.spawn(function() aa.SafeCallback(af.Callback) end) end end) return af.__type,af end return ac end function a.F() local aa={} local ab=a.load'd' local ac=ab.New local ad=ab.Tween local ae=game:GetService"UserInputService" function aa.New(af,ag,ah,ai,aj,ak,al) local am={ GlassSpritesheet={ Id="rbxassetid://77297718671545", MirroredId="rbxassetid://92258969882244", Size=Vector2.new(102,128), Total=80, Cols=10, }, } function am.GetGlassFrame(an,ao:number):(string,Vector2,Vector2) local ap=am.GlassSpritesheet local aq:number if ao<=0.4 then aq=math.floor((ao/0.4)*(ap.Total-1)) elseif ao<0.6 then aq=ap.Total-1 else aq=math.floor(((ao-0.6)/0.4)*(ap.Total-1)) end aq=math.clamp(aq,0,ap.Total-1) local ar=ao>=0.6 if ar then aq=(ap.Total-1)-aq end local as=ar and ap.MirroredId or ap.Id return as,ap.Size,Vector2.new((aq%ap.Cols)*ap.Size.X,math.floor(aq/ap.Cols)*ap.Size.Y) end local an=12 local ao if ag and ag~=""then ao=ac("ImageLabel",{ Size=UDim2.new(0,13,0,13), BackgroundTransparency=1, AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), Image=ab.Icon(ag)[1], ImageRectOffset=ab.Icon(ag)[2].ImageRectPosition, ImageRectSize=ab.Icon(ag)[2].ImageRectSize, ImageTransparency=1, ImageColor3=Color3.new(0,0,0), }) end local ap=ac("Frame",{ Size=UDim2.new(0,2,0,26), BackgroundTransparency=1, Parent=ai, }) local aq=ab.NewRoundFrame(an,"Squircle",{ ImageTransparency=0.85, ThemeTag={ ImageColor3="Text", }, Parent=ap, Size=UDim2.new(0,ak and(52)or(40.8),0,24), AnchorPoint=Vector2.new(1,0.5), Position=UDim2.new(0,0,0.5,0), Name="ToggleFrame", },{ ab.NewRoundFrame(an,"Squircle",{ Size=UDim2.new(1,0,1,0), Name="Layer", ThemeTag={ ImageColor3="Toggle", }, ImageTransparency=1, }), ab.NewRoundFrame(an,"SquircleOutline",{ Size=UDim2.new(1,0,1,0), Name="Stroke", ImageColor3=Color3.new(1,1,1), ImageTransparency=1, },{ ac("UIGradient",{ Rotation=90, Transparency=NumberSequence.new{ NumberSequenceKeypoint.new(0,0), NumberSequenceKeypoint.new(1,1), }, }), }), ab.NewRoundFrame(an,"Squircle",{ Size=UDim2.new(0,ak and 30 or 20,0,20), Position=UDim2.new(0,2,0.5,0), AnchorPoint=Vector2.new(0,0.5), ImageTransparency=1, Name="Frame", },{ ab.NewRoundFrame(an,"Squircle",{ Size=UDim2.new(1,0,1,0), ImageTransparency=0, AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), Name="Bar", },{ ab.New("Frame",{ Size=UDim2.new(1,0,1,0), BackgroundColor3=Color3.new(1,1,1), Name="Highlight", BackgroundTransparency=1, },{ ab.NewRoundFrame(9999,"SquircleGlass",{ Size=UDim2.new(1,1,1,1), ImageColor3=Color3.new(1,1,1), Name="SquircleGlass", ImageTransparency=0.5, AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), }), ab.NewRoundFrame(an,"Squircle",{ Size=UDim2.new(1,0,1,0), Name="GlassBackground", ImageTransparency=0, ThemeTag={ ImageColor3="ElementBackground", }, ZIndex=-1, }), ac("ImageLabel",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Name="Glass", ImageTransparency=0, },{ ac("UICorner",{ CornerRadius=UDim.new(1,0), }), }), ab.NewRoundFrame(an,"Squircle",{ Size=UDim2.new(1,0,1,0), Name="BarOverlay", ThemeTag={ ImageColor3="ToggleBar", }, ZIndex=999, }), }), ao, ac("UIScale",{ Scale=1, }), }), }), ac("TextButton",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Position=UDim2.new(0.5,0,0.5,0), AnchorPoint=Vector2.new(0.5,0.5), Name="Hitbox", Text="", }), }) local ar local as local at=ak and 30 or 20 local au=aq.Size.X.Offset function am.Set(av,aw,ax,ay) if not ay then if aw then ad(aq.Frame,0.35,{ Position=UDim2.new(0,au-at-2,0.5,0), },Enum.EasingStyle.Back,Enum.EasingDirection.Out):Play() ab.SetThemeTag(aq.Frame.Bar.Highlight.Glass,{ImageColor3="Toggle"},0.15) ad( aq.Frame.Bar.Highlight.Glass, 0.15, {ImageTransparency=0}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() else ad(aq.Frame,0.35,{ Position=UDim2.new(0,2,0.5,0), },Enum.EasingStyle.Back,Enum.EasingDirection.Out):Play() ab.SetThemeTag(aq.Frame.Bar.Highlight.Glass,{ImageColor3="Text"},0.15) ad( aq.Frame.Bar.Highlight.Glass, 0.15, {ImageTransparency=0.85}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() end else if aw then aq.Frame.Position=UDim2.new(0,au-at-2,0.5,0) else aq.Frame.Position=UDim2.new(0,2,0.5,0) end end if aw then ad(aq.Layer,0.1,{ ImageTransparency=0, }):Play() ab.SetThemeTag(aq.Frame.Bar.Highlight.Glass,{ImageColor3="Toggle"},0.1) ad( aq.Frame.Bar.Highlight.Glass, 0.1, {ImageTransparency=0}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() if ao then ad(ao,0.1,{ ImageTransparency=0, }):Play() end local az,aA,aB=am:GetGlassFrame(1) aq.Frame.Bar.Highlight.Glass.Image=az aq.Frame.Bar.Highlight.Glass.ImageRectSize=aA aq.Frame.Bar.Highlight.Glass.ImageRectOffset=aB else ad(aq.Layer,0.1,{ ImageTransparency=1, }):Play() ab.SetThemeTag(aq.Frame.Bar.Highlight.Glass,{ImageColor3="Text"},0.1) ad( aq.Frame.Bar.Highlight.Glass, 0.1, {ImageTransparency=0.85}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() if ao then ad(ao,0.1,{ ImageTransparency=1, }):Play() end local az,aA,aB=am:GetGlassFrame(0) aq.Frame.Bar.Highlight.Glass.Image=az aq.Frame.Bar.Highlight.Glass.ImageRectSize=aA aq.Frame.Bar.Highlight.Glass.ImageRectOffset=aB end ax=ax~=false task.spawn(function() if aj and ax then ab.SafeCallback(aj,aw) end end) end function am.Animate(av,aw,ax) if not al.Window.IsToggleDragging then al.Window.IsToggleDragging=true local ay=aw.Position.X local az=aw.Position.Y local aA=aq.Frame.Position.X.Offset local aB=false local b=false ad( aq.Frame.Bar.UIScale, 0.28, {Scale=1.5}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() ad( aq.Frame.Bar.Highlight.BarOverlay, 0.28, {ImageTransparency=0.86}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() if ar then ar:Disconnect() end ar=ae.InputChanged:Connect(function(d) if not al.Window.IsToggleDragging then return end if d.UserInputType~=Enum.UserInputType.MouseMovement and d.UserInputType~=Enum.UserInputType.Touch then return end if aB then return end local f=math.abs(d.Position.X-ay) math.abs(d.Position.Y-az) if not b and f>8 then b=true end local g=d.Position.X-ay local h=math.max(2,math.min(aA+g,au-at-2)) local i=math.clamp((h-2)/(au-at-4),0,1) local l,m,p=am:GetGlassFrame(i) aq.Frame.Bar.Highlight.Glass.Image=l aq.Frame.Bar.Highlight.Glass.ImageRectSize=m aq.Frame.Bar.Highlight.Glass.ImageRectOffset=p ad(aq.Frame,0.12,{ Position=UDim2.new(0,h,0.5,0), },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end) if as then as:Disconnect() end as=ae.InputEnded:Connect(function(d) if not al.Window.IsToggleDragging then return end if d.UserInputType~=Enum.UserInputType.MouseButton1 and d.UserInputType~=Enum.UserInputType.Touch then return end al.Window.IsToggleDragging=false if ar then ar:Disconnect() ar=nil end if as then as:Disconnect() as=nil end al.WindUI.CurrentInput=nil if aB then return end if not b then ax:Set(not ax.Value,true,false) else local f=aq.Frame.Position.X.Offset local g=f+at/2 local h=g>au/2 ax:Set(h,true,false) end ad( aq.Frame.Bar.UIScale, 0.23, {Scale=1}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() ad( aq.Frame.Bar.Highlight.BarOverlay, 0.23, {ImageTransparency=0}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() end) end end return ap,am end return aa end function a.G() local aa={} local ab=a.load'd'local ac= ab.New local ad=ab.Tween function aa.New(ae,af,ag,ah,ai,aj) local ak={} af=af or"sfsymbols:checkmark" local al=9 local am=ab.Image( af, af, 0, (aj and aj.Window.Folder or"Temp"), "Checkbox", true, false, "CheckboxIcon" ) am.Size=UDim2.new(1,-26+ag,1,-26+ag) am.AnchorPoint=Vector2.new(0.5,0.5) am.Position=UDim2.new(0.5,0,0.5,0) local an=ab.NewRoundFrame(al,"Squircle",{ ImageTransparency=.85, ThemeTag={ ImageColor3="Text" }, Parent=ah, Size=UDim2.new(0,26,0,26), },{ ab.NewRoundFrame(al,"Squircle",{ Size=UDim2.new(1,0,1,0), Name="Layer", ThemeTag={ ImageColor3="Checkbox", }, ImageTransparency=1, }), ab.NewRoundFrame(al,"Glass-1.4",{ Size=UDim2.new(1,0,1,0), Name="Stroke", ThemeTag={ ImageColor3="CheckboxBorder", ImageTransparency="CheckboxBorderTransparency", }, },{ }), am, },true) function ak.Set(ao,ap) if ap then ad(an.Layer,0.06,{ ImageTransparency=0, }):Play() ad(am.ImageLabel,0.06,{ ImageTransparency=0, }):Play() else ad(an.Layer,0.05,{ ImageTransparency=1, }):Play() ad(am.ImageLabel,0.06,{ ImageTransparency=1, }):Play() end task.spawn(function() if ai then ab.SafeCallback(ai,ap) end end) end return an,ak end return aa end function a.H() local aa=a.load'd'local ab= aa.New local ac= aa.Tween local ad=a.load'F'.New local ae=a.load'G'.New local af={} function af.New(ag,ah) local ai={ __type="Toggle", Title=ah.Title or"Toggle", Desc=ah.Desc or nil, Locked=ah.Locked or false, LockedTitle=ah.LockedTitle, Value=ah.Value, Icon=ah.Icon or nil, IconSize=ah.IconSize or 23, Type=ah.Type or"Toggle", Callback=ah.Callback or function()end, UIElements={}, } ai.ToggleFrame=a.load'C'{ Title=ai.Title, Desc=ai.Desc, Window=ah.Window, Parent=ah.Parent, TextOffset=(52), Hover=false, Tab=ah.Tab, Index=ah.Index, ElementTable=ai, ParentConfig=ah, Tags=ah.Tags, } local aj=true if ai.Value==nil then ai.Value=false end function ai.Lock(ak) ai.Locked=true aj=false return ai.ToggleFrame:Lock(ai.LockedTitle) end function ai.Unlock(ak) ai.Locked=false aj=true return ai.ToggleFrame:Unlock() end if ai.Locked then ai:Lock() end local ak=ai.Value local al,am if ai.Type=="Toggle"then al,am=ad( ak, ai.Icon, ai.IconSize, ai.ToggleFrame.UIElements.Main, ai.Callback, ah.Window.NewElements, ah ) elseif ai.Type=="Checkbox"then al,am=ae( ak, ai.Icon, ai.IconSize, ai.ToggleFrame.UIElements.Main, ai.Callback, ah ) else error("Unknown Toggle Type: "..tostring(ai.Type)) end al.AnchorPoint=Vector2.new(1,ah.Window.NewElements and 0 or 0.5) al.Position=UDim2.new(1,0,ah.Window.NewElements and 0 or 0.5,0) function ai.Set(an,ao,ap,aq) if aj then am:Set(ao,ap,aq or false) ak=ao ai.Value=ao end end ai:Set(ak,false,ah.Window.NewElements) local an=ah.WindUI.GenerateGUID() if ah.Window.NewElements and am.Animate then if ai.Type=="Toggle"then aa.AddSignal(al.ToggleFrame.Hitbox.InputBegan,function(ao) if not ah.Window.IsToggleDragging and( ao.UserInputType==Enum.UserInputType.MouseButton1 or ao.UserInputType==Enum.UserInputType.Touch ) then if ah.WindUI.CurrentInput and ah.WindUI.CurrentInput~=an then return end ah.WindUI.CurrentInput=an am:Animate(ao,ai) end end) end else if ai.Type=="Toggle"then aa.AddSignal(al.ToggleFrame.Hitbox.MouseButton1Click,function() ai:Set(not ai.Value,nil,ah.Window.NewElements) end) elseif ai.Type=="Checkbox"then aa.AddSignal(al.MouseButton1Click,function() ai:Set(not ai.Value,nil,ah.Window.NewElements) end) end end return ai.__type,ai end return af end function a.I() local aa=(cloneref or clonereference or function(aa) return aa end) local ac=aa(game:GetService"UserInputService") local ad=aa(game:GetService"RunService") local ae=a.load'd' local af=ae.New local ag=ae.Tween local ah={} local ai=false function ah.New(aj,ak) local al={ __type="Slider", Title=ak.Title or nil, Desc=ak.Desc or nil, Locked=ak.Locked or nil, LockedTitle=ak.LockedTitle, Value=ak.Value or{}, Icons=ak.Icons or nil, IsTooltip=ak.IsTooltip or false, IsTextbox=ak.IsTextbox, Step=ak.Step or 1, Callback=ak.Callback or function()end, UIElements={}, IsFocusing=false, Width=ak.Width or 130, TextBoxWidth=ak.Window.NewElements and 40 or 30, ThumbSize=13, IconSize=26, } if al.Icons=={}then al.Icons={ From="sfsymbols:sunMinFill", To="sfsymbols:sunMaxFill", } end if al.IsTextbox==nil and al.Title==nil then al.IsTextbox=false else al.IsTextbox=al.IsTextbox~=false end local am local an local ao local ap=al.Value.Default or al.Value.Min or 0 local aq=ap local ar=(ap-(al.Value.Min or 0))/((al.Value.Max or 100)-(al.Value.Min or 0)) local as=true local at=al.Step%1~=0 local function FormatValue(au) if at then return tonumber(string.format("%.2f",au)) end return math.floor(au+0.5) end local function CalculateValue(au) if at then return math.floor(au/al.Step+0.5)*al.Step else return math.floor(au/al.Step+0.5)*al.Step end end local au,av local aw=32 if al.Icons then if al.Icons.From then au=ae.Image( al.Icons.From, al.Icons.From, 0, ak.Window.Folder, "SliderIconFrom", true, true, "SliderIconFrom" ) au.Size=UDim2.new(0,al.IconSize,0,al.IconSize) aw=aw+al.IconSize-2 end if al.Icons.To then av=ae.Image( al.Icons.To, al.Icons.To, 0, ak.Window.Folder, "SliderIconTo", true, true, "SliderIconTo" ) av.Size=UDim2.new(0,al.IconSize,0,al.IconSize) aw=aw+al.IconSize-2 end end al.SliderFrame=a.load'C'{ Title=al.Title, Desc=al.Desc, Parent=ak.Parent, TextOffset=al.Width, Hover=false, Tab=ak.Tab, Index=ak.Index, Window=ak.Window, ElementTable=al, ParentConfig=ak, Tags=ak.Tags, } al.UIElements.SliderIcon=ae.NewRoundFrame(99,"Squircle",{ ImageTransparency=0.95, Size=UDim2.new(1,not al.IsTextbox and-aw or(-al.TextBoxWidth-8),0,4), AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), Name="Frame", ThemeTag={ ImageColor3="Text", }, },{ ae.NewRoundFrame(99,"Squircle",{ Name="Frame", Size=UDim2.new(ar,0,1,0), ImageTransparency=0.1, ThemeTag={ ImageColor3="Slider", }, },{ ae.NewRoundFrame(99,"Squircle",{ Size=UDim2.new( 0, ak.Window.NewElements and(al.ThumbSize*2)or(al.ThumbSize+2), 0, ak.Window.NewElements and(al.ThumbSize+4)or(al.ThumbSize+2) ), Position=UDim2.new(1,0,0.5,0), AnchorPoint=Vector2.new(0.5,0.5), ThemeTag={ ImageColor3="SliderThumb", }, Name="Thumb", },{ ae.NewRoundFrame(999,"SquircleGlass",{ Size=UDim2.new(1,0,1,0), ImageColor3=Color3.new(1,1,1), Name="Highlight", ImageTransparency=0.5, }), }), }), }) al.UIElements.SliderContainer=af("Frame",{ Size=UDim2.new(al.Title==nil and 1 or 0,al.Title==nil and 0 or al.Width,0,0), AutomaticSize="Y", Position=UDim2.new(1,al.IsTextbox and(ak.Window.NewElements and-16 or 0)or 0,0.5,0), AnchorPoint=Vector2.new(1,0.5), BackgroundTransparency=1, Parent=al.SliderFrame.UIElements.Main, },{ af("UIListLayout",{ Padding=UDim.new(0,al.Title~=nil and 8 or 12), FillDirection="Horizontal", VerticalAlignment="Center", HorizontalAlignment=al.Icons and(al.Icons.From and(al.Icons.To and"Center"or"Left")or al.Icons.To and"Right") or"Center", }), au, al.UIElements.SliderIcon, av, af("TextBox",{ Size=UDim2.new(0,al.TextBoxWidth,0,0), TextXAlignment="Left", Text=FormatValue(ap), ThemeTag={ TextColor3="Text", }, TextTransparency=0.4, AutomaticSize="Y", TextSize=15, FontFace=Font.new(ae.Font,Enum.FontWeight.Medium), BackgroundTransparency=1, LayoutOrder=-1, Visible=al.IsTextbox, }), }) local ax if al.IsTooltip then ax=a.load'B'.New( ap, al.UIElements.SliderIcon.Frame.Thumb, true, "Secondary", "Small", false ) ax.Container.AnchorPoint=Vector2.new(0.5,1) ax.Container.Position=UDim2.new(0.5,0,0,-8) end function al.Lock(ay) al.Locked=true as=false return al.SliderFrame:Lock(al.LockedTitle) end function al.Unlock(ay) al.Locked=false as=true return al.SliderFrame:Unlock() end if al.Locked then al:Lock() end local ay=ak.Tab.UIElements.ContainerFrame function al.Set(az,aA,aB) if as then if not al.IsFocusing and not ai and( not aB or( aB.UserInputType==Enum.UserInputType.MouseButton1 or aB.UserInputType==Enum.UserInputType.Touch ) ) then if aB then am=(aB.UserInputType==Enum.UserInputType.Touch) ay.ScrollingEnabled=false ai=true local b=am and aB.Position.X or ac:GetMouseLocation().X local d=math.clamp( (b-al.UIElements.SliderIcon.AbsolutePosition.X) /al.UIElements.SliderIcon.AbsoluteSize.X, 0, 1 ) aA=CalculateValue(al.Value.Min+d*(al.Value.Max-al.Value.Min)) aA=math.clamp(aA,al.Value.Min or 0,al.Value.Max or 100) if aA~=aq then ag(al.UIElements.SliderIcon.Frame,0.05,{Size=UDim2.new(d,0,1,0)}):Play() al.UIElements.SliderContainer.TextBox.Text=FormatValue(aA) if ax then ax.TitleFrame.Text=FormatValue(aA) end al.Value.Default=FormatValue(aA) aq=aA ae.SafeCallback(al.Callback,FormatValue(aA)) end an=ad.RenderStepped:Connect(function() local f=am and aB.Position.X or ac:GetMouseLocation().X local g=math.clamp( (f-al.UIElements.SliderIcon.AbsolutePosition.X) /al.UIElements.SliderIcon.AbsoluteSize.X, 0, 1 ) aA=CalculateValue(al.Value.Min+g*(al.Value.Max-al.Value.Min)) if aA~=aq then ag(al.UIElements.SliderIcon.Frame,0.05,{Size=UDim2.new(g,0,1,0)}):Play() al.UIElements.SliderContainer.TextBox.Text=FormatValue(aA) if ax then ax.TitleFrame.Text=FormatValue(aA) end al.Value.Default=FormatValue(aA) aq=aA ae.SafeCallback(al.Callback,FormatValue(aA)) end end) ao=ac.InputEnded:Connect(function(f) if ( f.UserInputType==Enum.UserInputType.MouseButton1 or f.UserInputType==Enum.UserInputType.Touch )and aB==f then an:Disconnect() ao:Disconnect() ai=false ay.ScrollingEnabled=true ak.WindUI.CurrentInput=nil if ak.Window.NewElements then ag(al.UIElements.SliderIcon.Frame.Thumb,0.2,{ ImageTransparency=0, Size=UDim2.new( 0, ak.Window.NewElements and(al.ThumbSize*2)or(al.ThumbSize+2), 0, ak.Window.NewElements and(al.ThumbSize+4)or(al.ThumbSize+2) ), },Enum.EasingStyle.Quint,Enum.EasingDirection.InOut):Play() end if ax then ax:Close(false) end end end) else aA=math.clamp(aA,al.Value.Min or 0,al.Value.Max or 100) local b=math.clamp( (aA-(al.Value.Min or 0))/((al.Value.Max or 100)-(al.Value.Min or 0)), 0, 1 ) aA=CalculateValue(al.Value.Min+b*(al.Value.Max-al.Value.Min)) if aA~=aq then ag(al.UIElements.SliderIcon.Frame,0.05,{Size=UDim2.new(b,0,1,0)}):Play() al.UIElements.SliderContainer.TextBox.Text=FormatValue(aA) if ax then ax.TitleFrame.Text=FormatValue(aA) end al.Value.Default=FormatValue(aA) aq=aA ae.SafeCallback(al.Callback,FormatValue(aA)) end end end end end function al.SetMax(az,aA) al.Value.Max=aA local aB=tonumber(al.Value.Default)or aq if aB>aA then al:Set(aA) else local b= math.clamp((aB-(al.Value.Min or 0))/(aA-(al.Value.Min or 0)),0,1) ag(al.UIElements.SliderIcon.Frame,0.1,{Size=UDim2.new(b,0,1,0)}):Play() end end function al.SetMin(az,aA) al.Value.Min=aA local aB=tonumber(al.Value.Default)or aq if aBaj then ai,aj=aj,ai end local ak=typeof(ag.Value)=="number"and ag.Value or ToFiniteNumber(ah.Default) or ToFiniteNumber(ag.Default) or ai ak=ToFiniteNumber(ak)or ai local al=ag.Indeterminate==true local am=ag.ShowValue if am==nil then am=not al end local an=math.max(ToFiniteNumber(ag.ValueWidth)or 44,0) local ao={ __type="ProgressBar", Title=ag.Title or"Progress", Desc=ag.Desc or nil, Value={ Min=ai, Max=aj, Default=math.clamp(ak,ai,aj), }, ShowValue=am, DisplayMode=ag.DisplayMode or"Percent", Format=ag.Format, Animate=ag.Animate~=false, AnimationDuration=math.max(ToFiniteNumber(ag.AnimationDuration)or 0.15,0), Indeterminate=al, IndeterminateText=ag.IndeterminateText or"", Speed=math.max(ToFiniteNumber(ag.Speed)or 1,0.01), ControlGap=math.max(ToFiniteNumber(ag.ControlGap)or 16,0), UIElements={}, Width=math.max(ToFiniteNumber(ag.Width)or 160,0), ValueWidth=an, } local function GetRatio(ap) if ao.Value.Max==ao.Value.Min then return ap>=ao.Value.Max and 1 or 0 end return math.clamp((ap-ao.Value.Min)/(ao.Value.Max-ao.Value.Min),0,1) end local function GetValueText(ap,aq) if ao.Indeterminate then return tostring(ao.IndeterminateText) end local ar=aq*100 if typeof(ao.Format)=="function"then local as,at= pcall(ao.Format,ap,ar,ao.Value.Min,ao.Value.Max) if as and at~=nil then return tostring(at) end end if ao.DisplayMode=="Value"then return FormatNumber(ap) elseif ao.DisplayMode=="Fraction"then return FormatNumber(ap).."/"..FormatNumber(ao.Value.Max) end return tostring(math.floor(ar+0.5)).."%" end ao.ProgressBarFrame=a.load'C'{ Title=ao.Title, Desc=ao.Desc, Parent=ag.Parent, TextOffset=ao.Width+ao.ControlGap, Hover=false, Tab=ag.Tab, Index=ag.Index, Window=ag.Window, ElementTable=ao, ParentConfig=ag, Tags=ag.Tags, } ao.UIElements.Fill=aa.NewRoundFrame(99,"Squircle",{ Name="Fill", Size=ao.Indeterminate and UDim2.new(0.3,0,1,0) or UDim2.new(GetRatio(ao.Value.Default),0,1,0), Position=ao.Indeterminate and UDim2.new(-0.3,0,0,0)or UDim2.new(0,0,0,0), ThemeTag={ ImageColor3="ProgressBar", }, }) ao.UIElements.Bar=aa.NewRoundFrame(99,"Squircle",{ Name="Bar", Size=UDim2.new(1,ao.ShowValue and-(ao.ValueWidth+8)or 0,0,6), ClipsDescendants=true, ImageTransparency=0.9, ThemeTag={ ImageColor3="ProgressBarTrack", ImageTransparency="ProgressBarTrackTransparency", }, },{ ao.UIElements.Fill, }) ao.UIElements.Value=ac("TextLabel",{ Name="Value", Size=UDim2.new(0,ao.ValueWidth,0,20), BackgroundTransparency=1, FontFace=Font.new(aa.Font,Enum.FontWeight.Medium), Text=GetValueText(ao.Value.Default,GetRatio(ao.Value.Default)), TextSize=14, TextTransparency=0.25, TextTruncate="AtEnd", TextXAlignment="Right", Visible=ao.ShowValue, ThemeTag={ TextColor3="ProgressBarText", }, }) ao.UIElements.Container=ac("Frame",{ Name="ProgressBarContainer", Size=UDim2.new(0,ao.Width,0,36), Position=UDim2.new(1,0,ag.Window.NewElements and 0 or 0.5,0), AnchorPoint=Vector2.new(1,ag.Window.NewElements and 0 or 0.5), BackgroundTransparency=1, Parent=ao.ProgressBarFrame.UIElements.Main, },{ ac("UIListLayout",{ Padding=UDim.new(0,8), FillDirection="Horizontal", HorizontalAlignment="Right", VerticalAlignment="Center", }), ao.UIElements.Bar, ao.UIElements.Value, }) if ao.Indeterminate then local ap=ad( ao.UIElements.Fill, 1/ao.Speed, {Position=UDim2.new(1,0,0,0)}, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut,-1 ) aa.AddSignal(ao.UIElements.Bar.Destroying,function() ap:Cancel() end) ap:Play() end local function Update(ap,aq) local ar=ToFiniteNumber(ap) if ar==nil then return ao.Value.Default end ar=math.clamp(ar,ao.Value.Min,ao.Value.Max) ao.Value.Default=ar local as=GetRatio(ar) local at=UDim2.new(as,0,1,0) if ao.UIElements.Fill and not ao.Indeterminate then if aq or not ao.Animate or ao.AnimationDuration<=0 then ao.UIElements.Fill.Size=at else ad( ao.UIElements.Fill, ao.AnimationDuration, {Size=at}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() end end ao.UIElements.Value.Text=GetValueText(ar,as) return ar end function ao.Set(ap,aq) return Update(aq,false) end function ao.Get(ap) return ao.Value.Default end function ao.GetPercentage(ap) return GetRatio(ao.Value.Default)*100 end function ao.SetRange(ap,aq,ar) aq=ToFiniteNumber(aq) ar=ToFiniteNumber(ar) if aq==nil or ar==nil then return ao.Value.Min,ao.Value.Max end if aq>ar then aq,ar=ar,aq end ao.Value.Min=aq ao.Value.Max=ar Update(ao.Value.Default,false) return aq,ar end function ao.SetMin(ap,aq) aq=ToFiniteNumber(aq) if aq==nil then return ao.Value.Min end ao:SetRange(aq,math.max(aq,ao.Value.Max)) return ao.Value.Min end function ao.SetMax(ap,aq) aq=ToFiniteNumber(aq) if aq==nil then return ao.Value.Max end ao:SetRange(math.min(ao.Value.Min,aq),aq) return ao.Value.Max end Update(ao.Value.Default,true) return ao.__type,ao end return ae end function a.K() local aa=(cloneref or clonereference or function(aa) return aa end) local ac=aa(game:GetService"UserInputService") local ad=a.load'd' local ae=ad.New local af= ad.Tween local ag={ UICorner=6, UIPadding=8, } local ah=a.load'w'.New function ag.New(ai,aj) local function NormalizeKeyCode(ak) if typeof(ak)=="EnumItem"then return ak.Name elseif type(ak)=="string"then return ak else return"F" end end local ak={ __type="Keybind", Title=aj.Title or"Keybind", Desc=aj.Desc or nil, Locked=aj.Locked or false, LockedTitle=aj.LockedTitle, Value=NormalizeKeyCode(aj.Value)or"F", Callback=aj.Callback or function()end, CanChange=aj.CanChange~=false, Blacklist=aj.Blacklist or{}, Picking=false, UIElements={}, } local al={} for am,an in next,ak.Blacklist do table.insert(al,Enum.KeyCode[NormalizeKeyCode(an)]) end table.insert(al,Enum.KeyCode[NormalizeKeyCode"Escape"]) local am=true ak.KeybindFrame=a.load'C'{ Title=ak.Title, Desc=ak.Desc, Parent=aj.Parent, TextOffset=85, Hover=ak.CanChange, Tab=aj.Tab, Index=aj.Index, Window=aj.Window, ElementTable=ak, ParentConfig=aj, Tags=aj.Tags, } ak.UIElements.Keybind=ah( ak.Value, nil, ak.KeybindFrame.UIElements.Main, nil, aj.Window.NewElements and 12 or 10 ) ak.UIElements.Keybind.Size= UDim2.new(0,24+ak.UIElements.Keybind.Frame.Frame.TextLabel.TextBounds.X,0,42) ak.UIElements.Keybind.AnchorPoint=Vector2.new(1,0.5) ak.UIElements.Keybind.Position=UDim2.new(1,0,0.5,0) ak.UIElements.Keybind.Interactable=false ae("UIScale",{ Parent=ak.UIElements.Keybind, Scale=0.85, }) ad.AddSignal( ak.UIElements.Keybind.Frame.Frame.TextLabel:GetPropertyChangedSignal"TextBounds", function() ak.UIElements.Keybind.Size= UDim2.new(0,24+ak.UIElements.Keybind.Frame.Frame.TextLabel.TextBounds.X,0,42) end ) function ak.Lock(an) ak.Locked=true am=false return ak.KeybindFrame:Lock(ak.LockedTitle) end function ak.Unlock(an) ak.Locked=false am=true return ak.KeybindFrame:Unlock() end function ak.Set(an,ao) local ap=NormalizeKeyCode(ao) ak.Value=ap ak.UIElements.Keybind.Frame.Frame.TextLabel.Text=ap end if ak.Locked then ak:Lock() end local an ad.AddSignal(ak.KeybindFrame.UIElements.Main.MouseButton1Click,function() if am then if ak.CanChange then ak.Picking=true ak.UIElements.Keybind.Frame.Frame.TextLabel.Text="..." local ao ao=ac.InputBegan:Connect(function(ap) local aq if ap.UserInputType==Enum.UserInputType.Keyboard then if table.find(al,ap.KeyCode)then aq=nil return else aq=ap.KeyCode.Name end elseif ap.UserInputType==Enum.UserInputType.MouseButton1 and not table.find(al,"MouseLeftButton") then aq="MouseLeftButton" elseif ap.UserInputType==Enum.UserInputType.MouseButton2 and not table.find(al,"MouseRightButton") then aq="MouseRightButton" end if an then an:Disconnect() end an=ac.InputEnded:Connect(function(ar) if aq and( ar.KeyCode.Name==aq or aq=="MouseLeft"and ar.UserInputType==Enum.UserInputType.MouseButton1 or aq=="MouseRight"and ar.UserInputType==Enum.UserInputType.MouseButton2 ) then ak.Picking=false ak.UIElements.Keybind.Frame.Frame.TextLabel.Text=aq ak.Value=aq ao:Disconnect() an:Disconnect() end end) end) end end end) ad.AddSignal(ac.InputBegan,function(ao,ap) if ac:GetFocusedTextBox()then return end if not am then return end if ak.Picking then return end if ao.UserInputType==Enum.UserInputType.Keyboard then if ao.KeyCode.Name==ak.Value then ad.SafeCallback(ak.Callback,ao.KeyCode.Name) end elseif ao.UserInputType==Enum.UserInputType.MouseButton1 and ak.Value=="MouseLeft"then ad.SafeCallback(ak.Callback,"MouseLeft") elseif ao.UserInputType==Enum.UserInputType.MouseButton2 and ak.Value=="MouseRight"then ad.SafeCallback(ak.Callback,"MouseRight") end end) return ak.__type,ak end return ag end function a.L() local aa=a.load'd'local ac= aa.New local ad= aa.Tween local ae={ UICorner=8, UIPadding=8, }local af=a.load'm' .New local ag=a.load'n'.New function ae.New(ah,ai) local aj={ __type="Input", Title=ai.Title or"Input", Desc=ai.Desc or nil, Type=ai.Type or"Input", Locked=ai.Locked or false, LockedTitle=ai.LockedTitle, InputIcon=ai.InputIcon or false, Placeholder=ai.Placeholder or"Enter Text...", Value=ai.Value or"", Callback=ai.Callback or function()end, ClearTextOnFocus=ai.ClearTextOnFocus or false, UIElements={}, Width=150, } local ak=true aj.InputFrame=a.load'C'{ Title=aj.Title, Desc=aj.Desc, Parent=ai.Parent, TextOffset=aj.Width, Hover=false, Tab=ai.Tab, Index=ai.Index, Window=ai.Window, ElementTable=aj, ParentConfig=ai, Tags=ai.Tags, } local al=ag( aj.Placeholder, aj.InputIcon, aj.Type=="Textarea"and aj.InputFrame.UIElements.Container or aj.InputFrame.UIElements.Main, aj.Type, function(al) aj:Set(al,true) end, nil, ai.Window.NewElements and 12 or 10, aj.ClearTextOnFocus ) if aj.Type~="Textarea"then al.Size=UDim2.new(0,aj.Width,0,36) al.Position=UDim2.new(1,0,ai.Window.NewElements and 0 or 0.5,0) al.AnchorPoint=Vector2.new(1,ai.Window.NewElements and 0 or 0.5) else al.Size=UDim2.new(1,0,0,148) end function aj.Lock(am) aj.Locked=true ak=false return aj.InputFrame:Lock(aj.LockedTitle) end function aj.Unlock(am) aj.Locked=false ak=true return aj.InputFrame:Unlock() end function aj.Set(am,an,ao) if ak then aj.Value=an aa.SafeCallback(aj.Callback,an) if not ao then al.Frame.Frame.TextBox.Text=an end end end function aj.SetPlaceholder(am,an) al.Frame.Frame.TextBox.PlaceholderText=an aj.Placeholder=an end aj:Set(aj.Value) if aj.Locked then aj:Lock() end return aj.__type,aj end return ae end function a.M() local aa=a.load'd' local ae=aa.New local af={} function af.New(ag,ah) local ai=ae("Frame",{ Size=ah.ParentType~="Group"and UDim2.new(1,0,0,1)or UDim2.new(0,1,1,0), Position=UDim2.new(0.5,0,0.5,0), AnchorPoint=Vector2.new(0.5,0.5), BackgroundTransparency=.9, ThemeTag={ BackgroundColor3="Text" } }) local aj=ae("Frame",{ Parent=ah.Parent, Size=ah.ParentType~="Group"and UDim2.new(1,-7,0,7)or UDim2.new(0,7,1,-7), BackgroundTransparency=1, },{ ai }) return"Divider",{__type="Divider",ElementFrame=aj} end return af end function a.N() local aa={} local ae=(cloneref or clonereference or function(ae) return ae end) local af=ae(game:GetService"UserInputService") local ag=ae(game:GetService"Players").LocalPlayer:GetMouse() local ah=ae(game:GetService"Workspace").CurrentCamera local ai= workspace.CurrentCamera local aj=a.load'n'.New local ak=a.load'd' local al=ak.New local am=ak.Tween local an=0.67 function aa.New(ao,ap,aq,ar) local as={} if not ap.Callback then ar="Menu" end ap.UIElements.UIListLayout=al("UIListLayout",{ Padding=UDim.new(0,aq.MenuPadding/1.5), FillDirection="Vertical", HorizontalAlignment="Center", }) ap.UIElements.Menu=ak.NewRoundFrame(aq.MenuCorner,"Squircle",{ ThemeTag={ ImageColor3="DropdownBackground", }, ImageTransparency=1, Size=UDim2.new(1,0,1,0), AnchorPoint=Vector2.new(1,0), Position=UDim2.new(1,0,0,0), },{ al("UIPadding",{ PaddingTop=UDim.new(0,aq.MenuPadding), PaddingLeft=UDim.new(0,aq.MenuPadding), PaddingRight=UDim.new(0,aq.MenuPadding), PaddingBottom=UDim.new(0,aq.MenuPadding), }), al("UIListLayout",{ FillDirection="Vertical", Padding=UDim.new(0,aq.MenuPadding), }), al("Frame",{ BackgroundTransparency=1, Size=UDim2.new(1,0,1,ap.SearchBarEnabled and-aq.MenuPadding-aq.SearchBarHeight), ClipsDescendants=true, LayoutOrder=999, Name="Frame", },{ al("UICorner",{ CornerRadius=UDim.new(0,aq.MenuCorner-aq.MenuPadding), }), al("ScrollingFrame",{ Size=UDim2.new(1,0,1,0), ScrollBarThickness=0, ScrollingDirection="Y", AutomaticCanvasSize="Y", CanvasSize=UDim2.new(0,0,0,0), BackgroundTransparency=1, ScrollBarImageTransparency=1, },{ ap.UIElements.UIListLayout, }), }), }) ap.UIElements.MenuCanvas=al("Frame",{ Size=UDim2.new(0,ap.MenuWidth,0,300), BackgroundTransparency=1, Position=UDim2.new(-10,0,-10,0), Visible=false, Active=false, Parent=ao.WindUI.DropdownGui, AnchorPoint=Vector2.new(1,0), },{ ap.UIElements.Menu, al("UISizeConstraint",{ MinSize=Vector2.new(170,0), MaxSize=Vector2.new(300,400), }), }) local function RecalculateCanvasSize() ap.UIElements.Menu.Frame.ScrollingFrame.CanvasSize= UDim2.fromOffset(0,ap.UIElements.UIListLayout.AbsoluteContentSize.Y) end local function RecalculateListSize() local at=ao.WindUI.DropdownGui.AbsoluteSize.Y local au=ap.UIElements.UIListLayout.AbsoluteContentSize.Y/ao.UIScale local av=ap.SearchBarEnabled and(aq.SearchBarHeight+(aq.MenuPadding*3)) or(aq.MenuPadding*2) local aw=au+av if aw>at then ap.UIElements.MenuCanvas.Size= UDim2.fromOffset(ap.UIElements.MenuCanvas.AbsoluteSize.X,at) else ap.UIElements.MenuCanvas.Size= UDim2.fromOffset(ap.UIElements.MenuCanvas.AbsoluteSize.X,aw) end end function UpdatePosition() local at=ap.UIElements.Dropdown or ap.DropdownFrame.UIElements.Main local au=ap.UIElements.MenuCanvas local av=ah.ViewportSize.Y -(at.AbsolutePosition.Y+at.AbsoluteSize.Y) -aq.MenuPadding -54 local aw=au.AbsoluteSize.Y+aq.MenuPadding local ax=-54 if av0 then aw=aw:sub(1,#aw-2) end else aw=typeof(ap.Value)=="table"and(ap.Value.Title or ap.Value[1]) or ap.Value or"" end if ap.UIElements.Dropdown then ap.UIElements.Dropdown.Frame.Frame.TextLabel.Text=(aw==""and"--"or aw) end end local function Callback(au) as:Display() if ap.Locked then return end if ap.Callback then task.spawn(function() if ap.Locked then return end ak.SafeCallback(ap.Callback,ap.Value) end) else task.spawn(function() if ap.Locked then return end ak.SafeCallback(au) end) end end function as.LockValues(au,av) if not av then return end for aw,ax in next,ap.Tabs do if ax and ax.UIElements and ax.UIElements.TabItem then local ay=ax.Name local az=false for aA,aB in next,av do if ay==aB then az=true break end end if az then am(ax.UIElements.TabItem,0.1,{ImageTransparency=1}):Play() am(ax.UIElements.TabItem.Frame.Title.TextLabel,0.1,{TextTransparency=0.6}):Play() if ax.UIElements.TabIcon then am(ax.UIElements.TabIcon.ImageLabel,0.1,{ImageTransparency=0.6}):Play() end ax.UIElements.TabItem.Active=false ax.Locked=true else if ax.Selected then am(ax.UIElements.TabItem,0.1,{ImageTransparency=an}):Play() am(ax.UIElements.TabItem.Frame.Title.TextLabel,0.1,{TextTransparency=0}):Play() if ax.UIElements.TabIcon then am(ax.UIElements.TabIcon.ImageLabel,0.1,{ImageTransparency=0}):Play() end else am(ax.UIElements.TabItem,0.1,{ImageTransparency=1}):Play() am( ax.UIElements.TabItem.Frame.Title.TextLabel, 0.1, {TextTransparency=ar=="Dropdown"and 0.4 or 0.05} ):Play() if ax.UIElements.TabIcon then am( ax.UIElements.TabIcon.ImageLabel, 0.1, {ImageTransparency=ar=="Dropdown"and 0.2 or 0} ):Play() end end ax.UIElements.TabItem.Active=true ax.Locked=false end end end end function as.Refresh(au,av) if ao.Window.Destroyed then return end for aw,ax in next,ap.UIElements.Menu.Frame.ScrollingFrame:GetChildren()do if not ax:IsA"UIListLayout"then ax:Destroy() end end ap.Tabs={} if ap.SearchBarEnabled then if not at then at=aj("Search...","search",ap.UIElements.Menu,nil,function(aw) for ax,ay in next,ap.Tabs do if string.find(string.lower(ay.Name),string.lower(aw),1,true)then ay.UIElements.TabItem.Visible=true else ay.UIElements.TabItem.Visible=false end RecalculateListSize() RecalculateCanvasSize() end end,true) at.Size=UDim2.new(1,0,0,aq.SearchBarHeight) at.Position=UDim2.new(0,0,0,0) at.Name="SearchBar" end end for aw,ax in next,av do if ax.Type~="Divider"then local ay={ Name=typeof(ax)=="table"and ax.Title or ax, Desc=typeof(ax)=="table"and ax.Desc or nil, Icon=typeof(ax)=="table"and ax.Icon or nil, IconSize=typeof(ax)=="table"and ax.IconSize or nil, Original=ax, Selected=false, Locked=typeof(ax)=="table"and ax.Locked or false, UIElements={}, } local az if ay.Icon then az=ak.Image(ay.Icon,ay.Icon,0,ao.Window.Folder,"Dropdown",true) az.Size= UDim2.new(0,ay.IconSize or aq.TabIcon,0,ay.IconSize or aq.TabIcon) az.ImageLabel.ImageTransparency=ar=="Dropdown"and 0.2 or 0 ay.UIElements.TabIcon=az end ay.UIElements.TabItem=ak.NewRoundFrame( aq.MenuCorner-aq.MenuPadding, "Squircle", { Size=UDim2.new(1,0,0,36), AutomaticSize=ay.Desc and"Y", ImageTransparency=1, Parent=ap.UIElements.Menu.Frame.ScrollingFrame, ThemeTag={ ImageColor3="DropdownTabBackground", }, Active=not ay.Locked, }, { ak.NewRoundFrame(aq.MenuCorner-aq.MenuPadding,"Glass-1.4",{ Size=UDim2.new(1,0,1,0), ThemeTag={ ImageColor3="DropdownTabBorder", }, ImageTransparency=1, Name="Highlight", },{ }), al("Frame",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, },{ al("UIListLayout",{ Padding=UDim.new(0,aq.TabPadding), FillDirection="Horizontal", VerticalAlignment="Center", }), al("UIPadding",{ PaddingTop=UDim.new(0,aq.TabPadding), PaddingLeft=UDim.new(0,aq.TabPadding), PaddingRight=UDim.new(0,aq.TabPadding), PaddingBottom=UDim.new(0,aq.TabPadding), }), al("UICorner",{ CornerRadius=UDim.new(0,aq.MenuCorner-aq.MenuPadding), }), az, al("Frame",{ Size=UDim2.new(1,az and-aq.TabPadding-aq.TabIcon or 0,0,0), BackgroundTransparency=1, AutomaticSize="Y", Name="Title", },{ al("TextLabel",{ Text=ay.Name, TextXAlignment="Left", FontFace=Font.new(ak.Font,Enum.FontWeight.Medium), ThemeTag={ TextColor3="Text", BackgroundColor3="Text", }, TextSize=15, BackgroundTransparency=1, TextTransparency=ar=="Dropdown"and 0.4 or 0.05, LayoutOrder=999, AutomaticSize="Y", Size=UDim2.new(1,0,0,0), }), al("TextLabel",{ Text=ay.Desc or"", TextXAlignment="Left", FontFace=Font.new(ak.Font,Enum.FontWeight.Regular), ThemeTag={ TextColor3="Text", BackgroundColor3="Text", }, TextSize=15, BackgroundTransparency=1, TextTransparency=ar=="Dropdown"and 0.6 or 0.35, LayoutOrder=999, AutomaticSize="Y", TextWrapped=true, Size=UDim2.new(1,0,0,0), Visible=ay.Desc and true or false, Name="Desc", }), al("UIListLayout",{ Padding=UDim.new(0,aq.TabPadding/3), FillDirection="Vertical", }), }), }), }, true ) if ay.Locked then ay.UIElements.TabItem.Frame.Title.TextLabel.TextTransparency=0.6 if ay.UIElements.TabIcon then ay.UIElements.TabIcon.ImageLabel.ImageTransparency=0.6 end end if ap.Multi and typeof(ap.Value)=="string"then for aA,aB in next,ap.Values do if typeof(aB)=="table"then if aB.Title==ap.Value then ap.Value={aB} end else if aB==ap.Value then ap.Value={ap.Value} end end end end if ap.Multi then local aA=false if typeof(ap.Value)=="table"then for aB,b in ipairs(ap.Value)do local d=typeof(b)=="table"and b.Title or b if d==ay.Name then aA=true break end end end ay.Selected=aA else local aA=typeof(ap.Value)=="table"and ap.Value.Title or ap.Value ay.Selected=aA==ay.Name end if ay.Selected and not ay.Locked then ay.UIElements.TabItem.ImageTransparency=an ay.UIElements.TabItem.Frame.Title.TextLabel.TextTransparency=0 if ay.UIElements.TabIcon then ay.UIElements.TabIcon.ImageLabel.ImageTransparency=0 end end ap.Tabs[aw]=ay as:Display() if ar=="Dropdown"then ak.AddSignal(ay.UIElements.TabItem.MouseButton1Click,function() if ap.Locked or ay.Locked then return end if ap.Multi then if not ay.Selected then ay.Selected=true am( ay.UIElements.TabItem, 0.1, {ImageTransparency=an} ):Play() am(ay.UIElements.TabItem.Frame.Title.TextLabel,0.1,{TextTransparency=0}):Play() if ay.UIElements.TabIcon then am(ay.UIElements.TabIcon.ImageLabel,0.1,{ImageTransparency=0}):Play() end table.insert(ap.Value,ay.Original) else if not ap.AllowNone and#ap.Value==1 then return end ay.Selected=false am(ay.UIElements.TabItem,0.1,{ImageTransparency=1}):Play() am(ay.UIElements.TabItem.Frame.Title.TextLabel,0.1,{TextTransparency=0.4}):Play() if ay.UIElements.TabIcon then am(ay.UIElements.TabIcon.ImageLabel,0.1,{ImageTransparency=0.2}):Play() end for aA,aB in next,ap.Value do if typeof(aB)=="table"and(aB.Title==ay.Name)or(aB==ay.Name)then table.remove(ap.Value,aA) break end end end else for aA,aB in next,ap.Tabs do am(aB.UIElements.TabItem,0.1,{ImageTransparency=1}):Play() am( aB.UIElements.TabItem.Frame.Title.TextLabel, 0.1, {TextTransparency=0.4} ):Play() if aB.UIElements.TabIcon then am(aB.UIElements.TabIcon.ImageLabel,0.1,{ImageTransparency=0.2}):Play() end aB.Selected=false end ay.Selected=true am(ay.UIElements.TabItem,0.1,{ImageTransparency=an}):Play() am(ay.UIElements.TabItem.Frame.Title.TextLabel,0.1,{TextTransparency=0}):Play() if ay.UIElements.TabIcon then am(ay.UIElements.TabIcon.ImageLabel,0.1,{ImageTransparency=0}):Play() end ap.Value=ay.Original end Callback() end) elseif ar=="Menu"then if not ay.Locked then ak.AddSignal(ay.UIElements.TabItem.MouseEnter,function() am(ay.UIElements.TabItem,0.08,{ImageTransparency=an}):Play() end) ak.AddSignal(ay.UIElements.TabItem.InputEnded,function() am(ay.UIElements.TabItem,0.08,{ImageTransparency=1}):Play() end) end ak.AddSignal(ay.UIElements.TabItem.MouseButton1Click,function() if ap.Locked or ay.Locked then return end Callback(ax.Callback or function()end) end) end RecalculateCanvasSize() RecalculateListSize() else a.load'M' :New{Parent=ap.UIElements.Menu.Frame.ScrollingFrame} end end ap.UIElements.MenuCanvas.Size=UDim2.new( 0, ap.MenuWidth+6+6+5+5+18+6+6, ap.UIElements.MenuCanvas.Size.Y.Scale, ap.UIElements.MenuCanvas.Size.Y.Offset ) Callback() ap.Values=av end as:Refresh(ap.Values) function as.Select(au,av) if av then ap.Value=av else if ap.Multi then ap.Value={} else ap.Value=nil end end as:Refresh(ap.Values) end RecalculateListSize() RecalculateCanvasSize() function as.Open(au) if not ap.Locked then ap.UIElements.Menu.Visible=true ap.UIElements.MenuCanvas.Visible=true ap.UIElements.MenuCanvas.Active=true ap.UIElements.Menu.Size=UDim2.new(1,0,0,0) am(ap.UIElements.Menu,0.1,{ Size=UDim2.new(1,0,1,0), ImageTransparency=0, },Enum.EasingStyle.Quart,Enum.EasingDirection.Out):Play() task.spawn(function() task.wait(0.1) if ap.Locked then return end ap.Opened=true end) UpdatePosition() end end function as.Close(au) ap.Opened=false am(ap.UIElements.Menu,0.25,{ Size=UDim2.new(1,0,0,0), ImageTransparency=1, },Enum.EasingStyle.Quart,Enum.EasingDirection.Out):Play() task.spawn(function() task.wait(0.1) ap.UIElements.Menu.Visible=false end) task.spawn(function() task.wait(0.25) ap.UIElements.MenuCanvas.Visible=false ap.UIElements.MenuCanvas.Active=false end) end ak.AddSignal( ( ap.UIElements.Dropdown and ap.UIElements.Dropdown.MouseButton1Click or ap.DropdownFrame.UIElements.Main.MouseButton1Click ), function() as:Open() end ) ak.AddSignal(af.InputBegan,function(au) if au.UserInputType==Enum.UserInputType.MouseButton1 or au.UserInputType==Enum.UserInputType.Touch then local av=ap.UIElements.MenuCanvas local aw,ax=av.AbsolutePosition,av.AbsoluteSize local ay=ap.UIElements.Dropdown or ap.DropdownFrame.UIElements.Main local az=ay.AbsolutePosition local aA=ay.AbsoluteSize local aB=ag.X>=az.X and ag.X<=az.X+aA.X and ag.Y>=az.Y and ag.Y<=az.Y+aA.Y local b=ag.X>=aw.X and ag.X<=aw.X+ax.X and ag.Y>=aw.Y and ag.Y<=aw.Y+ax.Y if ao.Window.CanDropdown and ap.Opened and not aB and not b then as:Close() end end end) ak.AddSignal( ap.UIElements.Dropdown and ap.UIElements.Dropdown:GetPropertyChangedSignal"AbsolutePosition" or ap.DropdownFrame.UIElements.Main:GetPropertyChangedSignal"AbsolutePosition", UpdatePosition ) return as end return aa end function a.O() local aa=(cloneref or clonereference or function(aa) return aa end) aa(game:GetService"UserInputService") aa(game:GetService"Players").LocalPlayer:GetMouse()local ae= aa(game:GetService"Workspace").CurrentCamera local af=a.load'd' local ag=af.New local ah= af.Tween local ai=a.load'w'.New local aj=a.load'n' .New local ak=a.load'N'.New local al= workspace.CurrentCamera local am={ UICorner=10, UIPadding=12, MenuCorner=15, MenuPadding=5, TabPadding=10, SearchBarHeight=39, TabIcon=18, } function am.New(an,ao) local ap={ __type="Dropdown", Title=ao.Title or"Dropdown", Desc=ao.Desc or nil, Locked=ao.Locked or false, LockedTitle=ao.LockedTitle, Values=ao.Values or{}, MenuWidth=ao.MenuWidth or 180, Value=ao.Value, AllowNone=ao.AllowNone, SearchBarEnabled=ao.SearchBarEnabled or false, Multi=ao.Multi, Callback=ao.Callback or nil, UIElements={}, Opened=false, Tabs={}, Width=150, } if ap.Multi and not ap.Value then ap.Value={} end if ap.Values and typeof(ap.Value)=="number"then ap.Value=ap.Values[ap.Value] end ap.DropdownFrame=a.load'C'{ Title=ap.Title, Desc=ap.Desc, Parent=ao.Parent, TextOffset=ap.Callback and ap.Width or 20, Hover=not ap.Callback and true or false, Tab=ao.Tab, Index=ao.Index, Window=ao.Window, ElementTable=ap, ParentConfig=ao, Tags=ao.Tags, } if ap.Callback then ap.UIElements.Dropdown= ai("",nil,ap.DropdownFrame.UIElements.Main,nil,ao.Window.NewElements and 12 or 10) ap.UIElements.Dropdown.Frame.Frame.TextLabel.TextTruncate="AtEnd" ap.UIElements.Dropdown.Frame.Frame.TextLabel.Size= UDim2.new(1,ap.UIElements.Dropdown.Frame.Frame.TextLabel.Size.X.Offset-18-12-12,0,0) ap.UIElements.Dropdown.Size=UDim2.new(0,ap.Width,0,36) ap.UIElements.Dropdown.Position=UDim2.new(1,0,ao.Window.NewElements and 0 or 0.5,0) ap.UIElements.Dropdown.AnchorPoint=Vector2.new(1,ao.Window.NewElements and 0 or 0.5) end ap.DropdownMenu=ak(ao,ap,am,"Dropdown") ap.Display=ap.DropdownMenu.Display ap.Refresh=ap.DropdownMenu.Refresh ap.Select=ap.DropdownMenu.Select ap.Open=ap.DropdownMenu.Open ap.Close=ap.DropdownMenu.Close ag("ImageLabel",{ Image=af.Icon"chevrons-up-down"[1], ImageRectOffset=af.Icon"chevrons-up-down"[2].ImageRectPosition, ImageRectSize=af.Icon"chevrons-up-down"[2].ImageRectSize, Size=UDim2.new(0,18,0,18), Position=UDim2.new(1,ap.UIElements.Dropdown and-12 or 0,0.5,0), ThemeTag={ ImageColor3="Icon", }, AnchorPoint=Vector2.new(1,0.5), Parent=ap.UIElements.Dropdown and ap.UIElements.Dropdown.Frame or ap.DropdownFrame.UIElements.Main, }) function ap.Lock(aq) ap.Locked=true if ap.Opened or ap.UIElements.MenuCanvas.Visible then ap:Close() end return ap.DropdownFrame:Lock(ap.LockedTitle) end function ap.Unlock(aq) ap.Locked=false return ap.DropdownFrame:Unlock() end if ap.Locked then ap:Lock() end return ap.__type,ap end return am end function a.P() local aa={} local af={ lua={ "and", "break", "or", "else", "elseif", "if", "then", "until", "repeat", "while", "do", "for", "in", "end", "local", "return", "function", "export", }, rbx={ "game", "workspace", "script", "math", "string", "table", "task", "wait", "select", "next", "Enum", "tick", "assert", "shared", "loadstring", "tonumber", "tostring", "type", "typeof", "unpack", "Instance", "CFrame", "Vector3", "Vector2", "Color3", "UDim", "UDim2", "Ray", "BrickColor", "OverlapParams", "RaycastParams", "Axes", "Random", "Region3", "Rect", "TweenInfo", "collectgarbage", "not", "utf8", "pcall", "xpcall", "_G", "setmetatable", "getmetatable", "os", "pairs", "ipairs", }, operators={ "#", "+", "-", "*", "%", "/", "^", "=", "~", "=", "<", ">", }, } local ag={ numbers=Color3.fromHex"#FAB387", boolean=Color3.fromHex"#FAB387", operator=Color3.fromHex"#94E2D5", lua=Color3.fromHex"#CBA6F7", rbx=Color3.fromHex"#F38BA8", str=Color3.fromHex"#A6E3A1", comment=Color3.fromHex"#9399B2", null=Color3.fromHex"#F38BA8", call=Color3.fromHex"#89B4FA", self_call=Color3.fromHex"#89B4FA", local_property=Color3.fromHex"#CBA6F7", } local function createKeywordSet(ai) local ak={} for al,am in ipairs(ai)do ak[am]=true end return ak end local ai=createKeywordSet(af.lua) local ak=createKeywordSet(af.rbx) local al=createKeywordSet(af.operators) local function getHighlight(am,an) local ao=am[an] if ag[ao.."_color"]then return ag[ao.."_color"] end if tonumber(ao)then return ag.numbers elseif ao=="nil"then return ag.null elseif ao:sub(1,2)=="--"then return ag.comment elseif al[ao]then return ag.operator elseif ai[ao]then return ag.lua elseif ak[ao]then return ag.rbx elseif ao:sub(1,1)=='"'or ao:sub(1,1)=="'"then return ag.str elseif ao=="true"or ao=="false"then return ag.boolean end if am[an+1]=="("then if am[an-1]==":"then return ag.self_call end return ag.call end if am[an-1]=="."then if am[an-2]=="Enum"then return ag.rbx end return ag.local_property end end function aa.run(am,an) if an~=nil then for ao,ap in next,an do ag[ao]=ap end end local ao={} local ap="" local aq=false local ar=false local as=false for at=1,#am do local au=am:sub(at,at) if ar then if au=="\n"and not as then table.insert(ao,ap) table.insert(ao,au) ap="" ar=false elseif am:sub(at-1,at)=="]]"and as then ap=ap.."]" table.insert(ao,ap) ap="" ar=false as=false else ap=ap..au end elseif aq then if au==aq and am:sub(at-1,at-1)~="\\"or au=="\n"then ap=ap..au aq=false else ap=ap..au end else if am:sub(at,at+1)=="--"then table.insert(ao,ap) ap="-" ar=true as=am:sub(at+2,at+3)=="[[" elseif au=='"'or au=="'"then table.insert(ao,ap) ap=au aq=au elseif al[au]then table.insert(ao,ap) table.insert(ao,au) ap="" elseif au:match"[%w_]"then ap=ap..au else table.insert(ao,ap) table.insert(ao,au) ap="" end end end table.insert(ao,ap) local at={} for au,av in ipairs(ao)do local aw=getHighlight(ao,au) if aw then local ax=string.format( '%s', aw:ToHex(), av:gsub("<","<"):gsub(">",">") ) table.insert(at,ax) else table.insert(at,av) end end return table.concat(at) end return aa end function a.Q() local aa={} local af=a.load'd' local ag=af.New local ai=af.Tween local ak=a.load'P' function aa.New(al,am,an,ao,ap) local aq={ Radius=am.ElementConfig.UICorner, Padding=am.NewElements and am.ElementConfig.UIPadding+4 or am.ElementConfig.UIPadding, CodeFrame=nil, } local ar=ag("TextLabel",{ Text="", TextColor3=Color3.fromHex"#CDD6F4", TextTransparency=0, TextSize=al.CodeSize, TextWrapped=false, LineHeight=1.15, RichText=true, TextXAlignment="Left", Size=UDim2.new(0,0,0,0), BackgroundTransparency=1, AutomaticSize="XY", },{ ag("UIPadding",{ PaddingTop=UDim.new(0,aq.Padding+3), PaddingLeft=UDim.new(0,aq.Padding+3), PaddingRight=UDim.new(0,aq.Padding+3), PaddingBottom=UDim.new(0,aq.Padding+3), }), }) ar.Font="Code" local as=ag("ScrollingFrame",{ Size=UDim2.new(1,0,0,0), BackgroundTransparency=1, AutomaticCanvasSize=al.Height~=nil and"XY"or"X", ScrollingDirection=al.Height~=nil and"XY"or"X", ElasticBehavior="Never", CanvasSize=UDim2.new(0,0,0,0), ScrollBarThickness=0, },{ ar, }) local at=al.CanCopied and ag("TextButton",{ BackgroundTransparency=1, Size=UDim2.new(0,35,0,35), Position=UDim2.new(1,-aq.Padding/2,0,aq.Padding/2), AnchorPoint=Vector2.new(1,0), Visible=ao and true or false, },{ af.NewRoundFrame(aq.Radius-4,"Squircle",{ ImageColor3=Color3.fromHex"#ffffff", ImageTransparency=1, Size=UDim2.new(1,0,1,0), AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), Name="Button", },{ ag("UIScale",{ Scale=1, }), ag("ImageLabel",{ Image=af.Icon"copy"[1], ImageRectSize=af.Icon"copy"[2].ImageRectSize, ImageRectOffset=af.Icon"copy"[2].ImageRectPosition, BackgroundTransparency=1, AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), Size=UDim2.new(0,12,0,12), ImageColor3=Color3.fromHex"#ffffff", ImageTransparency=0.1, }), }), }) or nil local au,av=af.NewRoundFrame(aq.Radius,"SquircleOutline",{ Size=UDim2.new(1,0,1,0), ImageColor3=Color3.fromHex"#ffffff", ImageTransparency=0.955, Visible=false, }) local aw,ax=af.NewRoundFrame(aq.Radius,"Squircle-TL-TR",{ ImageColor3=Color3.fromHex"#ffffff", ImageTransparency=0.96, Size=UDim2.new(1,0,0,20+(aq.Padding*2)), Visible=al.Title and true or false, },{ ag("TextLabel",{ Text=al.Title, TextColor3=Color3.fromHex"#ffffff", TextTransparency=0.2, TextSize=18, AutomaticSize="Y", FontFace=Font.new(af.Font,Enum.FontWeight.Medium), TextXAlignment="Left", BackgroundTransparency=1, TextTruncate="AtEnd", Size=UDim2.new(1,at and-20-(aq.Padding*2),0,0), }), ag("UIPadding",{ PaddingLeft=UDim.new(0,aq.Padding+3), PaddingRight=UDim.new(0,aq.Padding+3), }), ag("UIListLayout",{ Padding=UDim.new(0,aq.Padding), FillDirection="Horizontal", VerticalAlignment="Center", }), }) local ay,az=af.NewRoundFrame(aq.Radius,"Squircle",{ ImageColor3=Color3.fromHex"#212121", ImageTransparency=0.035, Size=al.Height~=nil and UDim2.new(1,0,al.Height.Scale,al.Height.Offset==0 and-40 or al.Height.Offset) or UDim2.new(1,0,0,20+(aq.Padding*2)), AutomaticSize=al.Height~=nil and"None"or"Y", Parent=an, },{ au, ag("Frame",{ BackgroundTransparency=1, Size=UDim2.new(1,0,al.Height~=nil and 1 or 0,0), AutomaticSize=al.Height~=nil and"None"or"Y", },{ aw, as, ag("UIListLayout",{ Padding=UDim.new(0,0), FillDirection="Vertical", }), }), at, },nil,true) aq.CodeFrame=ay aq.CodeFrameModule=az aq.OutlineFrame=au aq.OutlineFrameModule=av aq.TopbarFrame=aw aq.TopbarFrameModule=ax af.AddSignal(ar:GetPropertyChangedSignal"TextBounds",function() if al.Height~=nil then as.Size=UDim2.new(1,0,1,al.Title~=nil and-(20+(aq.Padding*2))or nil) else as.Size= UDim2.new(1,0,0,(ar.TextBounds.Y/(ap or 1))+((aq.Padding+3)*2)) end end) function aq.Set(aA) ar.Text=ak.run(aA,al.CodeTheme) end function aq.Destroy() ay:Destroy() aq=nil end aq.Set(al.Code) if at then af.AddSignal(at.InputBegan,function(aA:InputObject) if aA.UserInputType==Enum.UserInputType.MouseButton1 or aA.UserInputType==Enum.UserInputType.Touch then ai(at.Button,0.05,{ImageTransparency=0.95}):Play() ai(at.Button.UIScale,0.05,{Scale=0.9}):Play() end end) af.AddSignal(at.InputEnded,function() ai(at.Button,0.08,{ImageTransparency=1}):Play() ai(at.Button.UIScale,0.08,{Scale=1}):Play() end) af.AddSignal(at.MouseButton1Click,function() if ao then ao() local aA=af.Icon"check" at.Button.ImageLabel.Image=aA[1] at.Button.ImageLabel.ImageRectSize=aA[2].ImageRectSize at.Button.ImageLabel.ImageRectOffset=aA[2].ImageRectPosition task.delay(1,function() local aB=af.Icon"copy" at.Button.ImageLabel.Image=aB[1] at.Button.ImageLabel.ImageRectSize=aB[2].ImageRectSize at.Button.ImageLabel.ImageRectOffset=aB[2].ImageRectPosition end) end end) end return aq end return aa end function a.R() local aa=a.load'd'local af= aa.New local ag=a.load'Q' local ai={} function ai.New(ak,al) local am={ __type="Code", Title=al.Title, Code=al.Code, CodeSize=al.CodeSize or 18, Height=al.Height, CodeTheme=al.CodeTheme, Locked=false, CanCopied=al.CanCopied~=false, OnCopy=al.OnCopy, Index=al.Index, } local an=not am.Locked local ao=ag.New(am,al.Window,al.Parent,function() if an then local ao=am.Title or"code" local ap,aq=pcall(function() if toclipboard then toclipboard(am.Code) end if setclipboard then setclipboard(am.Code) end if am.OnCopy then am.OnCopy() end end) if not ap then al.WindUI:Notify{ Title="Error", Content="The "..ao.." is not copied. Error: "..aq, Icon="x", Duration=5, } end end end,al.WindUI.UIScale) function am.SetCode(ap,aq) ao.Set(aq) am.Code=aq end function am.Set(ap,aq) return am.SetCode(aq) end function am.Destroy(ap) ao.Destroy() am=nil end function am.UpdateShape(ap) if al.Window.NewElements then local aq=aa:GetElementPosition( ap.Elements, am.Index, al.ParentType=="HStack"or al.ParentType=="Group" ) if aq and ao.CodeFrameModule then ao.CodeFrameModule:SetType(aq) print(aq) ao.TopbarFrameModule:SetType( table.find({"Squircle-BL-BR","SquircleH-BL-BR"},aq)~=nil and"Square"or aq ) end end end am.UIElements={Main=ao.CodeFrame} am.ElementFrame=ao.CodeFrame return am.__type,am end return ai end function a.S() local aa=a.load'd' local af=aa.New local ag= aa.Tween local ai=(cloneref or clonereference or function(ai) return ai end) local ak=ai(game:GetService"UserInputService") ai(game:GetService"TouchInputService") local al=ai(game:GetService"RunService") local am=ai(game:GetService"Players")local an= al.RenderStepped local ao=am.LocalPlayer local ap=ao:GetMouse() local aq=a.load'm'.New local ar=a.load'n'.New local as={ UICorner=9, } local at function as.Colorpicker(au,av,aw,ax,ay) local az={ __type="Colorpicker", Title=av.Title, Desc=av.Desc, Default=av.Value or av.Default, Callback=av.Callback, Transparency=av.Transparency, UIElements=av.UIElements, TextPadding=10, } local aA={} local aB=az.Transparency~=nil function az.SetHSVFromRGB(b,d) local f,g,h=Color3.toHSV(d) az.Hue=f az.Sat=g az.Vib=h end az:SetHSVFromRGB(az.Default) local b=a.load'o' local d=b.Create(nil,"Dialog",aw,ax,aw.UIElements.Main.Main) az.ColorpickerFrame=d d.UIElements.Main.Size=UDim2.new(1,0,0,0) local f,g,h=az.Hue,az.Sat,az.Vib az.UIElements.Title=af("TextLabel",{ Text=az.Title, TextSize=20, FontFace=Font.new(aa.Font,Enum.FontWeight.SemiBold), TextXAlignment="Left", Size=UDim2.new(0,0,0,0), AutomaticSize="Y", ThemeTag={ TextColor3="Text", }, BackgroundTransparency=1, Parent=d.UIElements.Main, },{ af("UIPadding",{ PaddingTop=UDim.new(0,az.TextPadding/2), PaddingLeft=UDim.new(0,az.TextPadding/2), PaddingRight=UDim.new(0,az.TextPadding/2), PaddingBottom=UDim.new(0,az.TextPadding/2), }), }) local i=af("Frame",{ Size=UDim2.new(1,0,1,0), Position=UDim2.new(0,0,0,0), BackgroundTransparency=1, }) local l=af("Frame",{ Size=UDim2.new(0,14,0,14), AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0,0), Parent=i, BackgroundColor3=az.Default, },{ af("UIStroke",{ Thickness=2, Transparency=0.1, ThemeTag={ Color="Text", }, }), af("UICorner",{ CornerRadius=UDim.new(1,0), }), }) az.UIElements.SatVibMap=af("ImageLabel",{ Size=UDim2.fromOffset(160,158), Position=UDim2.fromOffset(0,40+az.TextPadding), Image="rbxassetid://4155801252", BackgroundColor3=Color3.fromHSV(f,1,1), BackgroundTransparency=0, Parent=d.UIElements.Main, },{ af("UICorner",{ CornerRadius=UDim.new(0,8), }), aa.NewRoundFrame(8,"SquircleOutline",{ ThemeTag={ ImageColor3="Outline", }, Size=UDim2.new(1,0,1,0), ImageTransparency=0.85, ZIndex=99999, },{ af("UIGradient",{ Rotation=45, Color=ColorSequence.new{ ColorSequenceKeypoint.new(0.0,Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(0.5,Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(1.0,Color3.fromRGB(255,255,255)), }, Transparency=NumberSequence.new{ NumberSequenceKeypoint.new(0.0,0.1), NumberSequenceKeypoint.new(0.5,1), NumberSequenceKeypoint.new(1.0,0.1), }, }), }), l, }) az.UIElements.Inputs=af("Frame",{ AutomaticSize="XY", Size=UDim2.new(0,0,0,0), Position=UDim2.fromOffset( aB and 240 or 210, 40+az.TextPadding ), BackgroundTransparency=1, Parent=d.UIElements.Main, },{ af("UIListLayout",{ Padding=UDim.new(0,4), FillDirection="Vertical", }), }) local m=af("Frame",{ BackgroundColor3=az.Default, Size=UDim2.fromScale(1,1), BackgroundTransparency=az.Transparency, },{ af("UICorner",{ CornerRadius=UDim.new(0,8), }), }) af("ImageLabel",{ Image="http://www.roblox.com/asset/?id=14204231522", ImageTransparency=0.45, ScaleType=Enum.ScaleType.Tile, TileSize=UDim2.fromOffset(40,40), BackgroundTransparency=1, Position=UDim2.fromOffset(85,208+az.TextPadding), Size=UDim2.fromOffset(75,24), Parent=d.UIElements.Main, },{ af("UICorner",{ CornerRadius=UDim.new(0,8), }), aa.NewRoundFrame(8,"SquircleOutline",{ ThemeTag={ ImageColor3="Outline", }, Size=UDim2.new(1,0,1,0), ImageTransparency=0.85, ZIndex=99999, },{ af("UIGradient",{ Rotation=60, Color=ColorSequence.new{ ColorSequenceKeypoint.new(0.0,Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(0.5,Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(1.0,Color3.fromRGB(255,255,255)), }, Transparency=NumberSequence.new{ NumberSequenceKeypoint.new(0.0,0.1), NumberSequenceKeypoint.new(0.5,1), NumberSequenceKeypoint.new(1.0,0.1), }, }), }), m, }) local p=af("Frame",{ BackgroundColor3=az.Default, Size=UDim2.fromScale(1,1), BackgroundTransparency=0, ZIndex=9, },{ af("UICorner",{ CornerRadius=UDim.new(0,8), }), }) af("ImageLabel",{ Image="http://www.roblox.com/asset/?id=14204231522", ImageTransparency=0.45, ScaleType=Enum.ScaleType.Tile, TileSize=UDim2.fromOffset(40,40), BackgroundTransparency=1, Position=UDim2.fromOffset(0,208+az.TextPadding), Size=UDim2.fromOffset(75,24), Parent=d.UIElements.Main, },{ af("UICorner",{ CornerRadius=UDim.new(0,8), }), aa.NewRoundFrame(8,"SquircleOutline",{ ThemeTag={ ImageColor3="Outline", }, Size=UDim2.new(1,0,1,0), ImageTransparency=0.85, ZIndex=99999, },{ af("UIGradient",{ Rotation=60, Color=ColorSequence.new{ ColorSequenceKeypoint.new(0.0,Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(0.5,Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(1.0,Color3.fromRGB(255,255,255)), }, Transparency=NumberSequence.new{ NumberSequenceKeypoint.new(0.0,0.1), NumberSequenceKeypoint.new(0.5,1), NumberSequenceKeypoint.new(1.0,0.1), }, }), }), p, }) local r={} for u=0,1,0.1 do table.insert(r,ColorSequenceKeypoint.new(u,Color3.fromHSV(u,1,1))) end local u=af("UIGradient",{ Color=ColorSequence.new(r), Rotation=90, }) local v=af("Frame",{ Size=UDim2.new(0,14,0,14), AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0,0), Parent=i, BackgroundColor3=az.Default, },{ af("UIStroke",{ Thickness=2, Transparency=0.1, ThemeTag={ Color="Text", }, }), af("UICorner",{ CornerRadius=UDim.new(1,0), }), }) local x=af("Frame",{ Size=UDim2.fromOffset(6,192), Position=UDim2.fromOffset(180,40+az.TextPadding), Parent=d.UIElements.Main, },{ af("UICorner",{ CornerRadius=UDim.new(1,0), }), u, i, }) local function CreateNewInput(z,A) local B=ar(z,nil,az.UIElements.Inputs,nil,nil,nil,nil,nil,true) af("TextLabel",{ BackgroundTransparency=1, TextTransparency=0.4, TextSize=17, FontFace=Font.new(aa.Font,Enum.FontWeight.Regular), AutomaticSize="XY", ThemeTag={ TextColor3="Placeholder", }, AnchorPoint=Vector2.new(1,0.5), Position=UDim2.new(1,-12,0.5,0), Parent=B.Frame, Text=z, }) af("UIScale",{ Parent=B, Scale=0.85, }) B.Frame.Frame.TextBox.Text=A B.Size=UDim2.new(0,150,0,42) return B end local function ToRGB(z) return{ R=math.floor(z.R*255), G=math.floor(z.G*255), B=math.floor(z.B*255), } end local z=CreateNewInput("Hex","#"..az.Default:ToHex()) local A=CreateNewInput("Red",ToRGB(az.Default).R) local B=CreateNewInput("Green",ToRGB(az.Default).G) local C=CreateNewInput("Blue",ToRGB(az.Default).B) local F if aB then F=CreateNewInput("Alpha",((1-az.Transparency)*100).."%") end local G=af("Frame",{ Size=UDim2.new(0,0,0,40), AutomaticSize="Y", Position=UDim2.new(0,0,0,254+az.TextPadding), BackgroundTransparency=1, Parent=d.UIElements.Main, LayoutOrder=4, },{ af("UIListLayout",{ Padding=UDim.new(0,6), FillDirection="Horizontal", HorizontalAlignment="Right", }), }) aa.AddSignal(d.UIElements.Main:GetPropertyChangedSignal"AbsoluteSize",function() az.UIElements.Title.Size=UDim2.new( 0, d.UIElements.Main.AbsoluteSize.X/av.UIScale-(d.UIPadding*2), 0, 0 ) G.Size=UDim2.new( 0, d.UIElements.Main.AbsoluteSize.X/av.UIScale-d.UIPadding*2, 0, 40 ) end) local H={ { Title="Cancel", Variant="Secondary", Callback=function() av.IsShowed=false for H,J in next,aA do J:Disconnect() end aA={} end, }, { Title="Apply", Variant="Primary", Callback=function() av.IsShowed=false for H,J in next,aA do J:Disconnect() end aA={} ay(Color3.fromHSV(az.Hue,az.Sat,az.Vib),az.Transparency) end, }, } for J,L in next,H do local M=aq( L.Title, L.Icon, L.Callback, L.Variant, G, d, true ) M.Size=UDim2.new(0.5,-3,0,40) M.AutomaticSize="None" end local J,L,M if aB then local N=af("Frame",{ Size=UDim2.new(1,0,1,0), Position=UDim2.fromOffset(0,0), BackgroundTransparency=1, }) L=af("ImageLabel",{ Size=UDim2.new(0,14,0,14), AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0,0), ThemeTag={ BackgroundColor3="Text", }, Parent=N, },{ af("UIStroke",{ Thickness=2, Transparency=0.1, ThemeTag={ Color="Text", }, }), af("UICorner",{ CornerRadius=UDim.new(1,0), }), }) M=af("Frame",{ Size=UDim2.fromScale(1,1), },{ af("UIGradient",{ Transparency=NumberSequence.new{ NumberSequenceKeypoint.new(0,0), NumberSequenceKeypoint.new(1,1), }, Rotation=270, }), af("UICorner",{ CornerRadius=UDim.new(0,6), }), }) J=af("Frame",{ Size=UDim2.fromOffset(6,192), Position=UDim2.fromOffset(210,40+az.TextPadding), Parent=d.UIElements.Main, BackgroundTransparency=1, },{ af("UICorner",{ CornerRadius=UDim.new(1,0), }), af("ImageLabel",{ Image="rbxassetid://14204231522", ImageTransparency=0.45, ScaleType=Enum.ScaleType.Tile, TileSize=UDim2.fromOffset(40,40), BackgroundTransparency=1, Size=UDim2.fromScale(1,1), },{ af("UICorner",{ CornerRadius=UDim.new(1,0), }), }), M, N, }) end function az.Round(N,O,P) if P==0 then return math.floor(O) end O=tostring(O) return O:find"%."and tonumber(O:sub(1,O:find"%."+P))or O end function az.Update(N,O,P) if O then f,g,h=Color3.toHSV(O) else f,g,h=az.Hue,az.Sat,az.Vib end az.UIElements.SatVibMap.BackgroundColor3=Color3.fromHSV(f,1,1) l.Position=UDim2.new(g,0,1-h,0) l.BackgroundColor3=Color3.fromHSV(f,g,h) p.BackgroundColor3=Color3.fromHSV(f,g,h) v.BackgroundColor3=Color3.fromHSV(f,1,1) v.Position=UDim2.new(0.5,0,f,0) z.Frame.Frame.TextBox.Text="#"..Color3.fromHSV(f,g,h):ToHex() A.Frame.Frame.TextBox.Text=ToRGB(Color3.fromHSV(f,g,h)).R B.Frame.Frame.TextBox.Text=ToRGB(Color3.fromHSV(f,g,h)).G C.Frame.Frame.TextBox.Text=ToRGB(Color3.fromHSV(f,g,h)).B if P or aB then p.BackgroundTransparency=az.Transparency or P M.BackgroundColor3=Color3.fromHSV(f,g,h) L.BackgroundColor3=Color3.fromHSV(f,g,h) L.BackgroundTransparency=az.Transparency or P L.Position=UDim2.new(0.5,0,1-az.Transparency or P,0) F.Frame.Frame.TextBox.Text=az:Round( (1-az.Transparency or P)*100, 0 ).."%" end end az:Update(az.Default,az.Transparency) local function GetRGB() local N=Color3.fromHSV(az.Hue,az.Sat,az.Vib) return{R=math.floor(N.r*255),G=math.floor(N.g*255),B=math.floor(N.b*255)} end local function clamp(N,O,P) return math.clamp(tonumber(N)or 0,O,P) end table.insert( aA, aa.AddSignal(z.Frame.Frame.TextBox.FocusLost,function(N) if N then local O=z.Frame.Frame.TextBox.Text:gsub("#","") local P,Q=pcall(Color3.fromHex,O) if P and typeof(Q)=="Color3"then az.Hue,az.Sat,az.Vib=Color3.toHSV(Q) az:Update() az.Default=Q end end end) ) local function updateColorFromInput(N,O) aa.AddSignal(N.Frame.Frame.TextBox.FocusLost,function(P) if P then local Q=N.Frame.Frame.TextBox local R=GetRGB() local S=clamp(Q.Text,0,255) Q.Text=tostring(S) R[O]=S local T=Color3.fromRGB(R.R,R.G,R.B) az.Hue,az.Sat,az.Vib=Color3.toHSV(T) az:Update() end end) end updateColorFromInput(A,"R") updateColorFromInput(B,"G") updateColorFromInput(C,"B") if aB then aa.AddSignal(F.Frame.Frame.TextBox.FocusLost,function(N) if N then local O=F.Frame.Frame.TextBox local P=clamp(O.Text,0,100) O.Text=tostring(P) az.Transparency=1-P*0.01 az:Update(nil,az.Transparency) end end) end local function UpdateSatVib(N,O) local P=N.AbsolutePosition.X local Q=P+N.AbsoluteSize.X local R=N.AbsolutePosition.Y local S=R+N.AbsoluteSize.Y local T=math.clamp(ap.X,P,Q) local U=math.clamp(ap.Y,R,S) O.Sat=(T-P)/(Q-P) O.Vib=1-((U-R)/(S-R)) O:Update() end local function UpdateHue(N,O) local P=N.AbsolutePosition.Y local Q=P+N.AbsoluteSize.Y local R=math.clamp(ap.Y,P,Q) O.Hue=(R-P)/(Q-P) O:Update() end local function UpdateTransparency(N,O) local P=N.AbsolutePosition.Y local Q=P+N.AbsoluteSize.Y local R=math.clamp(ap.Y,P,Q) O.Transparency=1-((R-P)/(Q-P)) O:Update() end local N=ax.GenerateGUID() table.insert( aA, ak.InputChanged:Connect(function(O) if O.UserInputType~=Enum.UserInputType.MouseMovement and O.UserInputType~=Enum.UserInputType.Touch then return end if at=="SatVib"then UpdateSatVib(az.UIElements.SatVibMap,az) elseif at=="Hue"then UpdateHue(x,az) elseif at=="Transparency"then UpdateTransparency(J,az) end end) ) table.insert( aA, az.UIElements.SatVibMap.InputBegan:Connect(function(O) if O.UserInputType~=Enum.UserInputType.MouseButton1 and O.UserInputType~=Enum.UserInputType.Touch then return end if ax.CurrentInput and ax.CurrentInput~=N then return end ax.CurrentInput=N if at and at~="SatVib"then return end at="SatVib" UpdateSatVib(az.UIElements.SatVibMap,az) end) ) table.insert( aA, x.InputBegan:Connect(function(O) if O.UserInputType~=Enum.UserInputType.MouseButton1 and O.UserInputType~=Enum.UserInputType.Touch then return end if ax.CurrentInput and ax.CurrentInput~=N then return end ax.CurrentInput=N if at and at~="Hue"then return end at="Hue" UpdateHue(x,az) end) ) if J then table.insert( aA, J.InputBegan:Connect(function(O) if O.UserInputType~=Enum.UserInputType.MouseButton1 and O.UserInputType~=Enum.UserInputType.Touch then return end if ax.CurrentInput and ax.CurrentInput~=N then return end ax.CurrentInput=N if at and at~="Transparency"then return end at="Transparency" UpdateTransparency(J,az) end) ) end table.insert( aA, ak.InputEnded:Connect(function(O) at=nil if ax.CurrentInput and ax.CurrentInput~=N then return end ax.CurrentInput=nil end) ) return az end function as.New(au,av) local aw={ __type="Colorpicker", Title=av.Title or"Colorpicker", Desc=av.Desc or nil, Locked=av.Locked or false, LockedTitle=av.LockedTitle, Default=av.Default or Color3.new(1,1,1), Callback=av.Callback or function()end, UIScale=av.UIScale, Transparency=av.Transparency, UIElements={}, IsShowed=false, } local ax=true aw.ColorpickerFrame=a.load'C'{ Title=aw.Title, Desc=aw.Desc, Parent=av.Parent, TextOffset=40, Hover=false, Tab=av.Tab, Index=av.Index, Window=av.Window, ElementTable=aw, ParentConfig=av, Tags=av.Tags, } aw.UIElements.Colorpicker=aa.NewRoundFrame(as.UICorner,"Squircle",{ ImageTransparency=0, Active=true, ImageColor3=aw.Default, Parent=aw.ColorpickerFrame.UIElements.Main, Size=UDim2.new(0,26,0,26), AnchorPoint=Vector2.new(1,0), Position=UDim2.new(1,0,0,0), ZIndex=2, },{ aa.NewRoundFrame(as.UICorner,"SquircleGlass",{ Size=UDim2.new(1,0,1,0), ThemeTag={ ImageColor3="Outline", }, ImageTransparency=0.55, }), },true) function aw.Lock(ay) aw.Locked=true ax=false return aw.ColorpickerFrame:Lock(aw.LockedTitle) end function aw.Unlock(ay) aw.Locked=false ax=true return aw.ColorpickerFrame:Unlock() end if aw.Locked then aw:Lock() end function aw.Update(ay,az,aA) aw.UIElements.Colorpicker.ImageTransparency=aA or 0 aw.UIElements.Colorpicker.ImageColor3=az aw.Default=az if aA then aw.Transparency=aA end end function aw.Set(ay,az,aA) return aw:Update(az,aA) end aa.AddSignal(aw.UIElements.Colorpicker.MouseButton1Click,function() if ax and not aw.IsShowed then aw.IsShowed=true as:Colorpicker(aw,av.Window,av.WindUI,function(ay,az) aw:Update(ay,az) aw.Default=ay aw.Transparency=az aa.SafeCallback(aw.Callback,ay,az) end).ColorpickerFrame :Open() end end) return aw.__type,aw end return as end function a.T() local aa=a.load'd' local af=aa.New local ai=aa.Tween local ak={} function ak.New(al,am) local an={ __type="Section", Title=am.Title or"Section", Desc=am.Desc, Icon=am.Icon, IconThemed=am.IconThemed, TextXAlignment=am.TextXAlignment or"Left", TextSize=am.TextSize or 19, DescTextSize=am.DescTextSize or 16, Box=am.Box or false, BoxBorder=am.BoxBorder or false, FontWeight=am.FontWeight or Enum.FontWeight.SemiBold, DescFontWeight=am.DescFontWeight or Enum.FontWeight.Medium, TextTransparency=am.TextTransparency or 0.05, DescTextTransparency=am.DescTextTransparency or 0.4, Opened=am.Opened or false, UIElements={}, HeaderSize=48, IconSize=20, Padding=10, Elements={}, Expandable=false, } local ao function an.SetIcon(ap,aq) an.Icon=aq or nil if ao then ao:Destroy() end if aq then ao=aa.Image( aq, aq..":"..an.Title, 0, am.Window.Folder, an.__type, true, an.IconThemed, "SectionIcon" ) ao.Size=UDim2.new(0,an.IconSize,0,an.IconSize) end end local ap=af("Frame",{ Size=UDim2.new(0,an.IconSize,0,an.IconSize), BackgroundTransparency=1, Visible=false, },{ af("ImageLabel",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Image=aa.Icon"chevron-down"[1], ImageRectSize=aa.Icon"chevron-down"[2].ImageRectSize, ImageRectOffset=aa.Icon"chevron-down"[2].ImageRectPosition, ThemeTag={ ImageTransparency="SectionExpandIconTransparency", ImageColor3="SectionExpandIcon", }, }), }) if an.Icon then an:SetIcon(an.Icon) end local aq=af("Frame",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, },{ af("UIListLayout",{ FillDirection="Vertical", HorizontalAlignment=an.TextXAlignment, VerticalAlignment="Center", Padding=UDim.new(0,4), }), }) local ar,as local function createTitle(at,au) return af("TextLabel",{ BackgroundTransparency=1, TextXAlignment=an.TextXAlignment, AutomaticSize="Y", TextSize=au=="Title"and an.TextSize or an.DescTextSize, TextTransparency=au=="Title"and an.TextTransparency or an.DescTextTransparency, ThemeTag={ TextColor3="Text", }, FontFace=Font.new(aa.Font,au=="Title"and an.FontWeight or an.DescFontWeight), Text=at, Size=UDim2.new(1,0,0,0), TextWrapped=true, Parent=aq, }) end ar=createTitle(an.Title,"Title") if an.Desc then as=createTitle(an.Desc,"Desc") end local function UpdateTitleSize() local at=0 if ao then at=at-(an.IconSize+8) end if ap.Visible then at=at-(an.IconSize+8) end aq.Size=UDim2.new(1,at,0,0) end local at=aa.NewRoundFrame(am.Window.ElementConfig.UICorner,"Squircle",{ Size=UDim2.new(1,0,0,0), BackgroundTransparency=1, Parent=am.Parent, AutomaticSize="Y", ThemeTag={ ImageTransparency=an.Box and"SectionBoxBackgroundTransparency"or nil, ImageColor3="SectionBoxBackground", }, ImageTransparency=not an.Box and 1 or nil, },{ aa.NewRoundFrame(am.Window.ElementConfig.UICorner-1,"SquircleOutline",{ Size=UDim2.new(1,0,1,0), ThemeTag={ ImageColor3="SectionBoxBorder", }, ImageTransparency=an.Box and an.BoxBorder and 0.92 or 1, Name="Outline", ClipsDescendants=true, },{ af("TextButton",{ Size=UDim2.new(1,0,0,an.Expandable and 0 or(not as and an.HeaderSize or 0)), BackgroundTransparency=1, AutomaticSize=(not an.Expandable or as)and"Y"or nil, Text="", Name="Top", },{ an.Box and af("UIPadding",{ PaddingTop=UDim.new( 0, am.Window.ElementConfig.UIPadding+(am.Window.NewElements and 4 or 0) ), PaddingLeft=UDim.new( 0, am.Window.ElementConfig.UIPadding+(am.Window.NewElements and 4 or 0) ), PaddingRight=UDim.new( 0, am.Window.ElementConfig.UIPadding+(am.Window.NewElements and 4 or 0) ), PaddingBottom=UDim.new( 0, am.Window.ElementConfig.UIPadding+(am.Window.NewElements and 4 or 0) ), })or nil, ao, aq, af("UIListLayout",{ Padding=UDim.new(0,8), FillDirection="Horizontal", VerticalAlignment="Center", HorizontalAlignment="Left", }), ap, }), af("Frame",{ BackgroundTransparency=1, Size=UDim2.new(1,0,0,0), AutomaticSize="Y", Name="Content", Visible=false, Position=UDim2.new(0,0,0,an.HeaderSize+10), },{ an.Box and af("UIPadding",{ PaddingLeft=UDim.new(0,am.Window.ElementConfig.UIPadding/1.5), PaddingRight=UDim.new(0,am.Window.ElementConfig.UIPadding/1.5), PaddingBottom=UDim.new(0,am.Window.ElementConfig.UIPadding/1.5), })or nil, af("UIListLayout",{ FillDirection="Vertical", Padding=UDim.new(0,am.Tab.Gap), VerticalAlignment="Top", }), }), }), }) an.ElementFrame=at at.Outline.Top:GetPropertyChangedSignal"AbsoluteSize":Connect(function() at.Outline.Content.Position=UDim2.new(0,0,0,(at.Outline.Top.AbsoluteSize.Y/am.UIScale)+10) if an.Opened then an:Open(true) else an.Close(true) end end) local au=am.ElementsModule au.Load(an,at.Outline.Content,au.Elements,am.Window,am.WindUI,function() if not an.Expandable then an.Expandable=true ap.Visible=true UpdateTitleSize() end end,au,am.UIScale,am.Tab) UpdateTitleSize() function an.SetTitle(av,aw) an.Title=aw ar.Text=aw end function an.SetDesc(av,aw) an.Desc=aw if not as then as=createTitle(aw,"Desc") end as.Text=aw end function an.Destroy(av) for aw,ax in next,an.Elements do ax:Destroy() end at:Destroy() end function an.Open(av,aw) if an.Expandable then an.Opened=true if aw then at.Size=UDim2.new( at.Size.X.Scale, at.Size.X.Offset, 0, at.Outline.Top.AbsoluteSize.Y/am.UIScale +(at.Outline.Content.AbsoluteSize.Y/am.UIScale) +10 ) ap.ImageLabel.Rotation=180 else ai(at,0.33,{ Size=UDim2.new( at.Size.X.Scale, at.Size.X.Offset, 0, at.Outline.Top.AbsoluteSize.Y/am.UIScale +(at.Outline.Content.AbsoluteSize.Y/am.UIScale) +10 ), },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ai( ap.ImageLabel, 0.2, {Rotation=180}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() end end end function an.Close(av,aw) if an.Expandable then an.Opened=false if aw then at.Size=UDim2.new( at.Size.X.Scale, at.Size.X.Offset, 0, (at.Outline.Top.AbsoluteSize.Y/am.UIScale) ) ap.ImageLabel.Rotation=0 else ai(at,0.26,{ Size=UDim2.new( at.Size.X.Scale, at.Size.X.Offset, 0, (at.Outline.Top.AbsoluteSize.Y/am.UIScale) ), },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ai( ap.ImageLabel, 0.2, {Rotation=0}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() end end end aa.AddSignal(at.Outline.Top.MouseButton1Click,function() if an.Expandable then if an.Opened then an:Close() else an:Open() end end end) aa.AddSignal(at.Outline.Content.UIListLayout:GetPropertyChangedSignal"AbsoluteContentSize",function() if an.Opened then an:Open(true) else an:Close(true) end end) task.defer(function() if an.Expandable then at.Size= UDim2.new(at.Size.X.Scale,at.Size.X.Offset,0,at.Outline.Top.AbsoluteSize.Y/am.UIScale) at.AutomaticSize="None" at.Outline.Top.Size=UDim2.new(1,0,0,(not as and an.HeaderSize or 0)) at.Outline.Top.AutomaticSize=(not an.Expandable or as)and"Y"or"None" at.Outline.Content.Visible=true end if an.Opened then an:Open() else an:Close(true) end end) return an.__type,an end return ak end function a.U() local aa=a.load'd' local af=aa.New local ai={} function ai.New(ak,al) local am=af("Frame",{ Parent=al.Parent, Size=not table.find({"Group","HStack"},al.ParentType)and UDim2.new(1,-7,0,7*(al.Columns or 1))or UDim2.new(0,7*(al.Columns or 1),0,0), BackgroundTransparency=1, }) return"Space",{__type="Space",ElementFrame=am} end return ai end function a.V() local aa=a.load'd' local af=aa.New local ai={} local function ParseAspectRatio(ak) if type(ak)=="string"then local al,am=ak:match"(%d+):(%d+)" if al and am then return tonumber(al)/tonumber(am) end elseif type(ak)=="number"then return ak end return nil end function ai.New(ak,al) local am={ __type="Image", Image=al.Image or"", AspectRatio=al.AspectRatio or"16:9", Radius=al.Radius or al.Window.ElementConfig.UICorner, } local an=aa.Image( am.Image, am.Image, am.Radius, al.Window.Folder, "Image", false ) if an and an.Parent then an.Parent=al.Parent an.Size=UDim2.new(1,0,0,0) an.BackgroundTransparency=1 local ao=ParseAspectRatio(am.AspectRatio) local ap if ao then ap=af("UIAspectRatioConstraint",{ Parent=an, AspectRatio=ao, AspectType="ScaleWithParentSize", DominantAxis="Width" }) end function am.Destroy(aq) an:Destroy() end end return am.__type,am end return ai end function a.W() local aa=a.load'd' local af=aa.New local ai={} function ai.New(ak,al) local am={ __type="Group", Elements={}, ElementFrame=nil, } local an=af("Frame",{ Size=UDim2.new(1,0,0,0), BackgroundTransparency=1, AutomaticSize="Y", Parent=al.Parent, },{ af("UIListLayout",{ FillDirection="Horizontal", HorizontalAlignment="Center", Padding=UDim.new(0,al.Tab and al.Tab.Gap or(al.Window.NewElements and 1 or 6)) }), }) am.ElementFrame=an local ao=al.ElementsModule ao.Load( am, an, ao.Elements, al.Window, al.WindUI, function(ap,aq) local ar=al.Tab and al.Tab.Gap or(al.Window.NewElements and 1 or 6) local as={} local at=0 for au,av in next,aq do if av.__type=="Space"then at=at+(av.ElementFrame.Size.X.Offset or 6) elseif av.__type=="Divider"then at=at+(av.ElementFrame.Size.X.Offset or 1) else table.insert(as,av) end end local au=#as if au==0 then return end local av=1/au local aw=ar*(au-1) local ax=-(aw+at) local ay=math.floor(ax/au) local az=ax-(ay*au) for aA,aB in next,as do local b=ay if aA<=math.abs(az)then b=b-1 end if aB.ElementFrame then aB.ElementFrame.Size=UDim2.new(av,b,1,0) end end end, ao, al.UIScale, al.Tab ) return am.__type,am end return ai end function a.X() local aa=a.load'd' local af=aa.New local ai={} function ai.New(ak,al) local am={ __type="HStack", AutoSpace=al.AutoSpace or false, Elements={}, ElementFrame=nil, } local an=af("Frame",{ Size=UDim2.new(1,0,0,0), BackgroundTransparency=1, AutomaticSize="Y", Parent=al.Parent, },{ af("UIListLayout",{ FillDirection="Horizontal", HorizontalAlignment="Center", Padding=UDim.new(0,al.Tab and al.Tab.Gap or(al.Window.NewElements and 1 or 6)), }), }) am.ElementFrame=an local ao=al.ElementsModule ao.Load( am, an, ao.Elements, al.Window, al.WindUI, function(ap,aq) local ar=al.Tab and al.Tab.Gap or(al.Window.NewElements and 1 or 6) local as={} local at=0 for au,av in next,aq do if av.__type=="Space"then at=at+(av.ElementFrame.Size.X.Offset or 6) elseif av.__type=="Divider"then at=at+(av.ElementFrame.Size.X.Offset or 1) else table.insert(as,av) end end local au=#as if au==0 then return end local av=1/au local aw=ar*(au-1) local ax=-(aw+at) local ay=math.floor(ax/au) local az=ax-(ay*au) for aA,aB in next,as do local b=ay if aA<=math.abs(az)then b=b-1 end if aB.ElementFrame then aB.ElementFrame.Size=UDim2.new(av,b,1,0) end end end, ao, al.UIScale, al.Tab ) if am.AutoSpace then for ap in next,ao.Elements do if ap~="Space"and ap~="Divider"then local aq=am[ap] am[ap]=function(ar,as) if#am.Elements>0 then am:Space() end return aq(ar,as) end end end end return am.__type,am end return ai end function a.Y() local aa=a.load'd' local af=aa.New local ai={} function ai.New(ak,al) local am={ __type="VStack", Elements={}, ElementFrame=nil, } local an=af("Frame",{ Size=UDim2.new(1,0,0,0), BackgroundTransparency=1, AutomaticSize="Y", Parent=al.Parent, },{ af("UIListLayout",{ FillDirection="Vertical", HorizontalAlignment="Center", Padding=UDim.new(0,al.Tab and al.Tab.Gap or(al.Window.NewElements and 1 or 6)) }), }) am.ElementFrame=an local ao=al.ElementsModule ao.Load( am, an, ao.Elements, al.Window, al.WindUI, nil, ao, al.UIScale, al.Tab ) return am.__type,am end return ai end function a.Z() local aa=(cloneref or clonereference or function(aa) return aa end) local af=aa(game:GetService"UserInputService") local ai=a.load'd' local ak=ai.New local al={} function al.New(am,an:ConfigType__DARKLUA_TYPE_a) local ao={ __type="Viewport", Object=an.Object, Camera=an.Camera or Instance.new"Camera", Interactive=an.Interactive or false, Height=an.Height or 200, Focused=an.Focused~=false, } local ap=false local aq=false local ar,as=0 local at=ai.NewRoundFrame(an.Window.ElementConfig.UICorner,"Squircle",{ Size=UDim2.new(1,0,0,ao.Height), Parent=an.Parent, ThemeTag={ ImageColor3="ViewportBackground", ImageTransparency="ViewportBackgroundTransparency", }, },{ ak("CanvasGroup",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, },{ ak("UICorner",{ CornerRadius=UDim.new(0,an.Window.ElementConfig.UICorner), }), ak("ViewportFrame",{ Name="Viewport", Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, CurrentCamera=ao.Camera, Active=ao.Interactive, },{ ao.Object, }), }), }) local function IsTouchInsideViewport(au) local av=at.CanvasGroup.Viewport.AbsolutePosition local aw=at.CanvasGroup.Viewport.AbsoluteSize return au.X>=av.X and au.X<=av.X+aw.X and au.Y>=av.Y and au.Y<=av.Y+aw.Y end local au=an.WindUI.GenerateGUID() ai.AddSignal(at.CanvasGroup.Viewport.MouseEnter,function() if ao.Interactive then an.Tab.UIElements.ContainerFrame.ScrollingEnabled=false end end) ai.AddSignal(at.CanvasGroup.Viewport.InputEnded,function(av) if av.UserInputType==Enum.UserInputType.MouseMovement or av.UserInputType==Enum.UserInputType.Touch then an.Tab.UIElements.ContainerFrame.ScrollingEnabled=true end end) ai.AddSignal(at.CanvasGroup.Viewport.InputBegan,function(av) if ao.Interactive then if (av.UserInputType==Enum.UserInputType.MouseButton1) or(av.UserInputType==Enum.UserInputType.Touch and not aq) then if an.WindUI.CurrentInput and an.WindUI.CurrentInput~=au then return end an.WindUI.CurrentInput=au ap=true as=av.Position end end end) ai.AddSignal(af.InputEnded,function(av) if ao.Interactive then if av.UserInputType==Enum.UserInputType.MouseButton1 or av.UserInputType==Enum.UserInputType.Touch then if an.WindUI.CurrentInput and an.WindUI.CurrentInput~=au then return end an.WindUI.CurrentInput=nil ap=false end end end) ai.AddSignal(af.InputChanged,function(av) if ao.Interactive and ap and not aq then if av.UserInputType==Enum.UserInputType.MouseMovement or av.UserInputType==Enum.UserInputType.Touch then local aw=av.Position-as as=av.Position local ax=ao.Object:GetPivot().Position local ay=ao.Camera local az=CFrame.fromAxisAngle(Vector3.new(0,1,0),-aw.X*0.02) ay.CFrame=CFrame.new(ax)*az*CFrame.new(-ax)*ay.CFrame local aA=CFrame.fromAxisAngle(ay.CFrame.RightVector,-aw.Y*0.02) local aB=CFrame.new(ax)*aA*CFrame.new(-ax)*ay.CFrame if aB.UpVector.Y>0.1 then ay.CFrame=aB end end end end) ai.AddSignal(at.CanvasGroup.Viewport.InputChanged,function(av) if ao.Interactive then if av.UserInputType==Enum.UserInputType.MouseWheel then local aw=av.Position.Z*2 ao.Camera.CFrame+=ao.Camera.CFrame.LookVector*aw end end end) ai.AddSignal(af.TouchPinch,function(av,aw,ax,ay) if not IsTouchInsideViewport(av[1])or not IsTouchInsideViewport(av[2])then return end if ao.Interactive then if ay==Enum.UserInputState.Begin then aq=true ap=false ar=(av[1]-av[2]).Magnitude elseif ay==Enum.UserInputState.Change then if aq then local az=(av[1]-av[2]).Magnitude local aA=(az-ar)*0.03 ar=az ao.Camera.CFrame+=ao.Camera.CFrame.LookVector*aA end elseif ay==Enum.UserInputState.End or ay==Enum.UserInputState.Cancel then aq=false end end end) local function FocusCamera() local av=ao.Object:IsA"BasePart"and ao.Object.Size or select(2,ao.Object:GetBoundingBox(0)) local aw=math.max(av.X,av.Y,av.Z) local ax=aw*2 local ay=ao.Object:GetPivot().Position ao.Camera.CFrame= CFrame.new(ay+Vector3.new(0,aw/2,ax),ay) end if ao.Focused then FocusCamera() end function ao.SetObject(av,aw,ax) if ax then aw=aw:Clone() end if ao.Object then ao.Object:Destroy() end ao.Object=aw ao.Object.Parent=at.CanvasGroup.Viewport end function ao.SetHeight(av,aw) at.Size=UDim2.new(1,0,0,aw) end function ao.Focus(av) if ao.Object then FocusCamera() end end function ao.SetCamera(av,aw) ao.Camera=aw at.CanvasGroup.Viewport.CurrentCamera=aw end function ao.SetInteractive(av,aw) ao.Interactive=aw at.CanvasGroup.Viewport.Active=aw end ao.Main=at return ao.__type,ao end return al end function a._() return{ Elements={ Paragraph=a.load'D', Button=a.load'E', Toggle=a.load'H', Slider=a.load'I', ProgressBar=a.load'J', Keybind=a.load'K', Input=a.load'L', Dropdown=a.load'O', Code=a.load'R', Colorpicker=a.load'S', Section=a.load'T', Divider=a.load'M', Space=a.load'U', Image=a.load'V', Group=a.load'W', HStack=a.load'X', VStack=a.load'Y', Viewport=a.load'Z', }, Load=function(aa,af,ai,ak,al,am,an,ao,ap) for aq,ar in next,ai do aa[aq]=function(as,at) at=at or{} at.Tab=ap or aa at.ParentType=aa.__type at.ParentTable=aa at.Index=#aa.Elements+1 at.GlobalIndex=#ak.AllElements+1 at.Parent=af at.Window=ak at.WindUI=al at.UIScale=ao at.ElementsModule=an local au, av=ar:New(at) if at.Flag and typeof(at.Flag)=="string"then if ak.CurrentConfig then ak.CurrentConfig:Register(at.Flag,av) if ak.PendingConfigData and ak.PendingConfigData[at.Flag]then local aw=ak.PendingConfigData[at.Flag] local ax=ak.ConfigManager if ax.Parser[aw.__type]then task.defer(function() local ay,az=pcall(function() ax.Parser[aw.__type].Load(av,aw) end) if ay then ak.PendingConfigData[at.Flag]=nil else warn( "[ WindUI ] Failed to apply pending config for '" ..at.Flag .."': " ..tostring(az) ) end end) end end else ak.PendingFlags=ak.PendingFlags or{} ak.PendingFlags[at.Flag]=av end end local aw for ax,ay in next,av do if typeof(ay)=="table"and ax~="ElementFrame"and ax:match"Frame$"then aw=ay break end end if aw then av.ElementFrame=aw.UIElements.Main function av.SetTitle(ax,ay) return aw.SetTitle and aw:SetTitle(ay) end function av.SetDesc(ax,ay) return aw.SetDesc and aw:SetDesc(ay) end function av.SetImage(ax,ay,az) return aw.SetImage and aw:SetImage(ay,az) end function av.SetThumbnail(ax,ay,az) return aw.SetThumbnail and aw:SetThumbnail(ay,az) end function av.Highlight(ax) aw:Highlight() end function av.Destroy(ax) aw:Destroy() table.remove(ak.AllElements,at.GlobalIndex) table.remove(aa.Elements,at.Index) table.remove(ap.Elements,at.Index) aa:UpdateAllElementShapes(aa) end end ak.AllElements[at.Index]=av aa.Elements[at.Index]=av if ap then ap.Elements[at.Index]=av end if ak.NewElements then aa:UpdateAllElementShapes(aa) end if am then am(av,aa.Elements) end return av end end function aa.UpdateAllElementShapes(aq,ar) for as,at in next,ar.Elements do local au for av,aw in pairs(at)do if typeof(aw)=="table"and av:match"Frame$"then au=aw break end end if not au and at.UpdateShape then au=at end if au then au.Index=as if au.UpdateShape then au.UpdateShape(ar) end end end end end, }end function a.aa() local aa=(cloneref or clonereference or function(aa) return aa end) local af=game:GetService"Players" aa(game:GetService"UserInputService") local ai=af.LocalPlayer:GetMouse() local ak=a.load'd' local al=ak.New local am=a.load'B'.New local an=a.load'x'.New local ao={ Tabs={}, Containers={}, SelectedTab=nil, TabCount=0, ToolTipParent=nil, TabHighlight=nil, OnChangeFunc=function(ao)end, } function ao.Init(ap,aq,ar,as) Window=ap WindUI=aq ao.ToolTipParent=ar ao.TabHighlight=as return ao end function ao.New(ap,aq) local ar={ __type="Tab", Title=ap.Title or"Tab", Desc=ap.Desc, Icon=ap.Icon, IconColor=ap.IconColor, IconShape=ap.IconShape, IconThemed=ap.IconThemed, Locked=ap.Locked, ShowTabTitle=ap.ShowTabTitle, TabTitleAlign=ap.TabTitleAlign or"Left", CustomEmptyPage=(ap.CustomEmptyPage and next(ap.CustomEmptyPage)~=nil)and ap.CustomEmptyPage or{Icon="lucide:frown",IconSize=48,Title="This tab is Empty",Desc=nil}, Border=ap.Border, Selected=false, Index=nil, Parent=ap.Parent, UIElements={}, Elements={}, ContainerFrame=nil, UICorner=Window.UICorner-(Window.UIPadding/2), Gap=Window.NewElements and 1 or 6, TabPaddingX=4+(Window.UIPadding/2), TabPaddingY=3+(Window.UIPadding/2), TitlePaddingY=0, } if ar.IconShape then ar.TabPaddingX=2+(Window.UIPadding/4) ar.TabPaddingY=2+(Window.UIPadding/4) ar.TitlePaddingY=2+(Window.UIPadding/4) end ao.TabCount=ao.TabCount+1 local as=ao.TabCount ar.Index=as ar.UIElements.Main=ak.NewRoundFrame(ar.UICorner,"Squircle",{ BackgroundTransparency=1, Size=UDim2.new(1,-7,0,0), AutomaticSize="Y", Parent=ap.Parent, ThemeTag={ ImageColor3="TabBackground", }, ImageTransparency=1, },{ ak.NewRoundFrame(ar.UICorner-1,"Glass-1.4",{ Size=UDim2.new(1,1,1,1), ThemeTag={ ImageColor3="TabBorder", }, AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), ImageTransparency=1, Name="Outline", },{ }), ak.NewRoundFrame(ar.UICorner,"Squircle",{ Size=UDim2.new(1,0,0,0), AutomaticSize="Y", ThemeTag={ ImageColor3="Text", }, ImageTransparency=1, Name="Frame", },{ al("UIListLayout",{ SortOrder="LayoutOrder", Padding=UDim.new(0,2+(Window.UIPadding/2)), FillDirection="Horizontal", VerticalAlignment="Center", }), al("TextLabel",{ Text=ar.Title, ThemeTag={ TextColor3="TabTitle", }, TextTransparency=not ar.Locked and 0.4 or 0.7, TextSize=15, Size=UDim2.new(1,0,0,0), FontFace=Font.new(ak.Font,Enum.FontWeight.Medium), TextWrapped=true, RichText=true, AutomaticSize="Y", LayoutOrder=2, TextXAlignment="Left", BackgroundTransparency=1, },{ al("UIPadding",{ PaddingTop=UDim.new(0,ar.TitlePaddingY), PaddingBottom=UDim.new(0,ar.TitlePaddingY), }), }), al("UIPadding",{ PaddingTop=UDim.new(0,ar.TabPaddingY), PaddingLeft=UDim.new(0,ar.TabPaddingX), PaddingRight=UDim.new(0,ar.TabPaddingX), PaddingBottom=UDim.new(0,ar.TabPaddingY), }), }), },true) local at=0 local au local av if ar.Icon then au=ak.Image( ar.Icon, ar.Icon..":"..ar.Title, 0, Window.Folder, ar.__type, ar.IconColor and false or true, ar.IconThemed, "TabIcon" ) au.Size=UDim2.new(0,16,0,16) if ar.IconColor then au.ImageLabel.ImageColor3=ar.IconColor end if not ar.IconShape then au.Parent=ar.UIElements.Main.Frame ar.UIElements.Icon=au au.ImageLabel.ImageTransparency=not ar.Locked and 0 or 0.7 at=-18-(Window.UIPadding/2) ar.UIElements.Main.Frame.TextLabel.Size=UDim2.new(1,at,0,0) elseif ar.IconColor then ak.NewRoundFrame( ar.IconShape~="Circle"and(ar.UICorner+5-(2+(Window.UIPadding/4)))or 9999, "Squircle", { Size=UDim2.new(0,26,0,26), ImageColor3=ar.IconColor, Parent=ar.UIElements.Main.Frame, }, { au, ak.NewRoundFrame( ar.IconShape~="Circle"and(ar.UICorner+5-(2+(Window.UIPadding/4)))or 9999, "Glass-1.4", { Size=UDim2.new(1,0,1,0), ThemeTag={ ImageColor3="White", }, ImageTransparency=0, Name="Outline", }, { } ), } ) au.AnchorPoint=Vector2.new(0.5,0.5) au.Position=UDim2.new(0.5,0,0.5,0) au.ImageLabel.ImageTransparency=0 au.ImageLabel.ImageColor3=ak.GetTextColorForHSB(ar.IconColor,0.68) at=-28-(Window.UIPadding/2) ar.UIElements.Main.Frame.TextLabel.Size=UDim2.new(1,at,0,0) end av= ak.Image(ar.Icon,ar.Icon..":"..ar.Title,0,Window.Folder,ar.__type,true,ar.IconThemed) av.Size=UDim2.new(0,16,0,16) av.ImageLabel.ImageTransparency=not ar.Locked and 0 or 0.7 at=-30 end ar.UIElements.ContainerFrame=al("ScrollingFrame",{ Size=UDim2.new(1,0,1,ar.ShowTabTitle and-((Window.UIPadding*2.4)+12)or 0), BackgroundTransparency=1, ScrollBarThickness=0, ElasticBehavior="Never", CanvasSize=UDim2.new(0,0,0,0), AnchorPoint=Vector2.new(0,1), Position=UDim2.new(0,0,1,0), AutomaticCanvasSize="Y", ScrollingDirection="Y", },{ al("UIPadding",{ PaddingTop=UDim.new(0,not Window.HidePanelBackground and 20 or 10), PaddingLeft=UDim.new(0,not Window.HidePanelBackground and 20 or 10), PaddingRight=UDim.new(0,not Window.HidePanelBackground and 20 or 10), PaddingBottom=UDim.new(0,not Window.HidePanelBackground and 20 or 10), }), al("UIListLayout",{ SortOrder="LayoutOrder", Padding=UDim.new(0,ar.Gap), HorizontalAlignment="Center", }), }) ar.UIElements.ContainerFrameCanvas=al("Frame",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Visible=false, Parent=Window.UIElements.MainBar, ZIndex=5, },{ ar.UIElements.ContainerFrame, al("Frame",{ Size=UDim2.new(1,-14,1,-14), Position=UDim2.new(0.5,0,0.5,0), AnchorPoint=Vector2.new(0.5,0.5), BackgroundTransparency=1, Name="ScrollSliderHolder", }), al("Frame",{ Size=UDim2.new(1,0,0,((Window.UIPadding*2.4)+12)), BackgroundTransparency=1, Visible=ar.ShowTabTitle or false, Name="TabTitle", },{ av, al("TextLabel",{ Text=ar.Title, ThemeTag={ TextColor3="Text", }, TextSize=20, TextTransparency=0.1, Size=UDim2.new(0,0,1,0), FontFace=Font.new(ak.Font,Enum.FontWeight.SemiBold), RichText=true, LayoutOrder=2, TextXAlignment="Left", BackgroundTransparency=1, AutomaticSize="X", }), al("UIPadding",{ PaddingTop=UDim.new(0,20), PaddingLeft=UDim.new(0,20), PaddingRight=UDim.new(0,20), PaddingBottom=UDim.new(0,20), }), al("UIListLayout",{ SortOrder="LayoutOrder", Padding=UDim.new(0,10), FillDirection="Horizontal", VerticalAlignment="Center", HorizontalAlignment=ar.TabTitleAlign, }), }), al("Frame",{ Size=UDim2.new(1,0,0,1), BackgroundTransparency=0.9, ThemeTag={ BackgroundColor3="Text", }, Position=UDim2.new(0,0,0,((Window.UIPadding*2.4)+12)), Visible=ar.ShowTabTitle or false, }), }) ao.Containers[as]=ar.UIElements.ContainerFrameCanvas ao.Tabs[as]=ar ar.ContainerFrame=ar.UIElements.ContainerFrameCanvas ak.AddSignal(ar.UIElements.Main.MouseButton1Click,function() if not ar.Locked then ao:SelectTab(as) end end) if Window.ScrollBarEnabled then an( ar.UIElements.ContainerFrame, ar.UIElements.ContainerFrameCanvas.ScrollSliderHolder, Window, 4, WindUI ) end local aw local ax local ay local az=false if ar.Desc then ak.AddSignal(ar.UIElements.Main.InputBegan,function() az=true ax=task.spawn(function() task.wait(0.35) if az and not aw then aw=am(ar.Desc,ao.ToolTipParent,true) aw.Container.AnchorPoint=Vector2.new(0.5,0.5) local function updatePosition() if aw then aw.Container.Position=UDim2.new(0,ai.X,0,ai.Y-4) end end updatePosition() ay=ai.Move:Connect(updatePosition) aw:Open() end end) end) end ak.AddSignal(ar.UIElements.Main.MouseEnter,function() if not ar.Locked then ak.SetThemeTag(ar.UIElements.Main.Frame,{ ImageTransparency="TabBackgroundHoverTransparency", ImageColor3="TabBackgroundHover", },0.1) end end) ak.AddSignal(ar.UIElements.Main.InputEnded,function() if ar.Desc then az=false if ax then task.cancel(ax) ax=nil end if ay then ay:Disconnect() ay=nil end if aw then aw:Close() aw=nil end end if not ar.Locked then ak.SetThemeTag(ar.UIElements.Main.Frame,{ ImageTransparency="TabBorderTransparency", },0.1) end end) function ar.ScrollToTheElement(aA,aB) ar.UIElements.ContainerFrame.ScrollingEnabled=false ak.Tween(ar.UIElements.ContainerFrame,0.45,{ CanvasPosition=Vector2.new( 0, ar.Elements[aB].ElementFrame.AbsolutePosition.Y -ar.UIElements.ContainerFrame.AbsolutePosition.Y -ar.UIElements.ContainerFrame.UIPadding.PaddingTop.Offset ), },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() task.spawn(function() task.wait(0.48) if ar.Elements[aB].Highlight then ar.Elements[aB]:Highlight() end ar.UIElements.ContainerFrame.ScrollingEnabled=true end) return ar end local aA=a.load'_' aA.Load( ar, ar.UIElements.ContainerFrame, aA.Elements, Window, WindUI, nil, aA, aq, ar ) function ar.LockAll(aB) for b,d in next,Window.AllElements do if d.Tab and d.Tab.Index and d.Tab.Index==ar.Index and d.Lock then d:Lock() end end end function ar.UnlockAll(aB) for b,d in next,Window.AllElements do if d.Tab and d.Tab.Index and d.Tab.Index==ar.Index and d.Unlock then d:Unlock() end end end function ar.GetLocked(aB) local b={} for d,f in next,Window.AllElements do if f.Tab and f.Tab.Index and f.Tab.Index==ar.Index and f.Locked==true then table.insert(b,f) end end return b end function ar.GetUnlocked(aB) local b={} for d,f in next,Window.AllElements do if f.Tab and f.Tab.Index and f.Tab.Index==ar.Index and f.Locked==false then table.insert(b,f) end end return b end function ar.Select(aB) return ao:SelectTab(ar.Index) end task.spawn(function() local aB if ar.CustomEmptyPage.Icon then aB= ak.Image(ar.CustomEmptyPage.Icon,ar.CustomEmptyPage.Icon,0,"Temp","EmptyPage",true) aB.Size= UDim2.fromOffset(ar.CustomEmptyPage.IconSize or 48,ar.CustomEmptyPage.IconSize or 48) end local b=al("Frame",{ BackgroundTransparency=1, Size=UDim2.new(1,0,1,-Window.UIElements.Main.Main.Topbar.AbsoluteSize.Y), Parent=ar.UIElements.ContainerFrame, },{ al("UIListLayout",{ Padding=UDim.new(0,8), SortOrder="LayoutOrder", VerticalAlignment="Center", HorizontalAlignment="Center", FillDirection="Vertical", }), aB, ar.CustomEmptyPage.Title and al("TextLabel",{ AutomaticSize="XY", Text=ar.CustomEmptyPage.Title, ThemeTag={ TextColor3="Text", }, TextSize=18, TextTransparency=0.5, BackgroundTransparency=1, FontFace=Font.new(ak.Font,Enum.FontWeight.Medium), })or nil, ar.CustomEmptyPage.Desc and al("TextLabel",{ AutomaticSize="XY", Text=ar.CustomEmptyPage.Desc, ThemeTag={ TextColor3="Text", }, TextSize=15, TextTransparency=0.65, BackgroundTransparency=1, FontFace=Font.new(ak.Font,Enum.FontWeight.Regular), })or nil, }) local d d=ak.AddSignal(ar.UIElements.ContainerFrame.ChildAdded,function() b.Visible=false d:Disconnect() end) end) return ar end function ao.OnChange(ap,aq) ao.OnChangeFunc=aq end function ao.SelectTab(ap,aq) if not ao.Tabs[aq].Locked then ao.SelectedTab=aq for ar,as in next,ao.Tabs do if not as.Locked then ak.SetThemeTag(as.UIElements.Main,{ ImageTransparency="TabBorderTransparency", },0.15) if as.Border then ak.SetThemeTag(as.UIElements.Main.Outline,{ ImageTransparency="TabBorderTransparency", },0.15) end ak.SetThemeTag(as.UIElements.Main.Frame.TextLabel,{ TextTransparency="TabTextTransparency", },0.15) if as.UIElements.Icon and not as.IconColor then ak.SetThemeTag(as.UIElements.Icon.ImageLabel,{ ImageTransparency="TabIconTransparency", },0.15) end as.Selected=false end end ak.SetThemeTag(ao.Tabs[aq].UIElements.Main,{ ImageColor3="TabBackgroundActive", ImageTransparency="TabBackgroundActiveTransparency", },0.15) if ao.Tabs[aq].Border then ak.SetThemeTag(ao.Tabs[aq].UIElements.Main.Outline,{ ImageTransparency="TabBorderTransparencyActive", },0.15) end ak.SetThemeTag(ao.Tabs[aq].UIElements.Main.Frame.TextLabel,{ TextTransparency="TabTextTransparencyActive", },0.15) if ao.Tabs[aq].UIElements.Icon and not ao.Tabs[aq].IconColor then ak.SetThemeTag(ao.Tabs[aq].UIElements.Icon.ImageLabel,{ ImageTransparency="TabIconTransparencyActive", },0.15) end ao.Tabs[aq].Selected=true task.spawn(function() for ar,as in next,ao.Containers do as.AnchorPoint=Vector2.new(0,0.05) as.Visible=false end ao.Containers[aq].Visible=true local ar=game:GetService"TweenService" local as=TweenInfo.new(0.15,Enum.EasingStyle.Quart,Enum.EasingDirection.Out) local at=ar:Create(ao.Containers[aq],as,{ AnchorPoint=Vector2.new(0,0), }) at:Play() end) ao.OnChangeFunc(aq) end end return ao end function a.ab() local aa={} local af=a.load'd' local ai=af.New local ak=af.Tween local al=a.load'aa' function aa.New(am,an,ao,ap,aq) local ar={ Title=am.Title or"Section", Icon=am.Icon, IconThemed=am.IconThemed, Opened=am.Opened or false, HeaderSize=42, IconSize=18, Expandable=false, } local as if ar.Icon then as=af.Image( ar.Icon, ar.Icon, 0, ao, "Section", true, ar.IconThemed, "TabSectionIcon" ) as.Size=UDim2.new(0,ar.IconSize,0,ar.IconSize) as.ImageLabel.ImageTransparency=.25 end local at=ai("Frame",{ Size=UDim2.new(0,ar.IconSize,0,ar.IconSize), BackgroundTransparency=1, Visible=false },{ ai("ImageLabel",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Image=af.Icon"chevron-down"[1], ImageRectSize=af.Icon"chevron-down"[2].ImageRectSize, ImageRectOffset=af.Icon"chevron-down"[2].ImageRectPosition, ThemeTag={ ImageColor3="Icon", }, ImageTransparency=.7, }) }) local au=ai("Frame",{ Size=UDim2.new(1,0,0,ar.HeaderSize), BackgroundTransparency=1, Parent=an, ClipsDescendants=true, },{ ai("TextButton",{ Size=UDim2.new(1,0,0,ar.HeaderSize), BackgroundTransparency=1, Text="", },{ as, ai("TextLabel",{ Text=ar.Title, TextXAlignment="Left", Size=UDim2.new( 1, as and(-ar.IconSize-10)*2 or(-ar.IconSize-10), 1, 0 ), ThemeTag={ TextColor3="Text", }, FontFace=Font.new(af.Font,Enum.FontWeight.SemiBold), TextSize=14, BackgroundTransparency=1, TextTransparency=.7, TextWrapped=true }), ai("UIListLayout",{ FillDirection="Horizontal", VerticalAlignment="Center", Padding=UDim.new(0,10) }), at, ai("UIPadding",{ PaddingLeft=UDim.new(0,11), PaddingRight=UDim.new(0,11), }) }), ai("Frame",{ BackgroundTransparency=1, Size=UDim2.new(1,0,0,0), AutomaticSize="Y", Name="Content", Visible=true, Position=UDim2.new(0,0,0,ar.HeaderSize) },{ ai("UIListLayout",{ FillDirection="Vertical", Padding=UDim.new(0,aq.Gap), VerticalAlignment="Bottom", }), }) }) function ar.Tab(av,aw) if not ar.Expandable then ar.Expandable=true at.Visible=true end aw.Parent=au.Content return al.New(aw,ap) end function ar.Open(av) if ar.Expandable then ar.Opened=true ak(au,0.33,{ Size=UDim2.new(1,0,0,ar.HeaderSize+(au.Content.AbsoluteSize.Y/ap)) },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ak(at.ImageLabel,0.1,{Rotation=180},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end end function ar.Close(av) if ar.Expandable then ar.Opened=false ak(au,0.26,{ Size=UDim2.new(1,0,0,ar.HeaderSize) },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ak(at.ImageLabel,0.1,{Rotation=0},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end end af.AddSignal(au.TextButton.MouseButton1Click,function() if ar.Expandable then if ar.Opened then ar:Close() else ar:Open() end end end) af.AddSignal(au.Content.UIListLayout:GetPropertyChangedSignal"AbsoluteContentSize",function() if ar.Opened then ar:Open() end end) if ar.Opened then task.spawn(function() task.wait() ar:Open() end) end return ar end return aa end function a.ac() return{ Tab="table-of-contents", Paragraph="type", Button="square-mouse-pointer", Toggle="toggle-right", Slider="sliders-horizontal", Keybind="command", Input="text-cursor-input", Dropdown="chevrons-up-down", Code="terminal", Colorpicker="palette", }end function a.ad() local aa=(cloneref or clonereference or function(aa) return aa end) aa(game:GetService"UserInputService") local af={ Margin=8, Padding=9, } local ai=a.load'd' local ak=ai.New local al=ai.Tween function af.new(am,an,ao) local ap={ IconSize=18, Padding=14, Radius=22, Width=400, MaxHeight=380, Icons=a.load'ac', } local aq=ak("TextBox",{ Text="", PlaceholderText="Search...", ThemeTag={ PlaceholderColor3="Placeholder", TextColor3="Text", }, Size=UDim2.new(1,-((ap.IconSize*2)+(ap.Padding*2)),0,0), AutomaticSize="Y", ClipsDescendants=true, ClearTextOnFocus=false, BackgroundTransparency=1, TextXAlignment="Left", FontFace=Font.new(ai.Font,Enum.FontWeight.Regular), TextSize=18, }) local ar=ak("ImageLabel",{ Image=ai.Icon"x"[1], ImageRectSize=ai.Icon"x"[2].ImageRectSize, ImageRectOffset=ai.Icon"x"[2].ImageRectPosition, BackgroundTransparency=1, ThemeTag={ ImageColor3="Icon", }, ImageTransparency=0.1, Size=UDim2.new(0,ap.IconSize,0,ap.IconSize), },{ ak("TextButton",{ Size=UDim2.new(1,8,1,8), BackgroundTransparency=1, Active=true, ZIndex=999999999, AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), Text="", }), }) local as=ak("ScrollingFrame",{ Size=UDim2.new(1,0,0,0), AutomaticCanvasSize="Y", ScrollingDirection="Y", ElasticBehavior="Never", ScrollBarThickness=0, CanvasSize=UDim2.new(0,0,0,0), BackgroundTransparency=1, Visible=false, },{ ak("UIListLayout",{ Padding=UDim.new(0,0), FillDirection="Vertical", }), ak("UIPadding",{ PaddingTop=UDim.new(0,ap.Padding), PaddingLeft=UDim.new(0,ap.Padding), PaddingRight=UDim.new(0,ap.Padding), PaddingBottom=UDim.new(0,ap.Padding), }), }) local at=ai.NewRoundFrame(ap.Radius,"Squircle",{ Size=UDim2.new(1,0,1,0), ThemeTag={ ImageColor3="WindowSearchBarBackground", }, ImageTransparency=0, },{ ai.NewRoundFrame(ap.Radius,"Squircle",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Visible=false, ThemeTag={ ImageColor3="White", }, ImageTransparency=1, Name="Frame", },{ ak("Frame",{ Size=UDim2.new(1,0,0,46), BackgroundTransparency=1, },{ ak("Frame",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, },{ ak("ImageLabel",{ Image=ai.Icon"search"[1], ImageRectSize=ai.Icon"search"[2].ImageRectSize, ImageRectOffset=ai.Icon"search"[2].ImageRectPosition, BackgroundTransparency=1, ThemeTag={ ImageColor3="Icon", }, ImageTransparency=0.1, Size=UDim2.new(0,ap.IconSize,0,ap.IconSize), }), aq, ar, ak("UIListLayout",{ Padding=UDim.new(0,ap.Padding), FillDirection="Horizontal", VerticalAlignment="Center", }), ak("UIPadding",{ PaddingLeft=UDim.new(0,ap.Padding), PaddingRight=UDim.new(0,ap.Padding), }), }), }), ak("Frame",{ BackgroundTransparency=1, AutomaticSize="Y", Size=UDim2.new(1,0,0,0), Name="Results", },{ ak("Frame",{ Size=UDim2.new(1,0,0,1), ThemeTag={ BackgroundColor3="Outline", }, BackgroundTransparency=0.9, Visible=false, }), as, ak("UISizeConstraint",{ MaxSize=Vector2.new(ap.Width,ap.MaxHeight), }), }), ak("UIListLayout",{ Padding=UDim.new(0,0), FillDirection="Vertical", }), }), }) local au=ak("Frame",{ Size=UDim2.new(0,ap.Width,0,0), AutomaticSize="Y", Parent=an, BackgroundTransparency=1, Position=UDim2.new(0.5,0,0.5,0), AnchorPoint=Vector2.new(0.5,0.5), Visible=false, ZIndex=99999999, },{ ak("UIScale",{ Scale=0.9, }), at, }) local function CreateSearchTab(av,aw,ax,ay,az,aA) local aB=ak("TextButton",{ Size=UDim2.new(1,0,0,0), AutomaticSize="Y", BackgroundTransparency=1, Parent=ay or nil, },{ ai.NewRoundFrame(ap.Radius-11,"Squircle",{ Size=UDim2.new(1,0,0,0), Position=UDim2.new(0.5,0,0.5,0), AnchorPoint=Vector2.new(0.5,0.5), ThemeTag={ ImageColor3="Text", }, ImageTransparency=1, Name="Main", },{ ai.NewRoundFrame(ap.Radius-11,"Glass-1",{ Size=UDim2.new(1,0,1,0), Position=UDim2.new(0.5,0,0.5,0), AnchorPoint=Vector2.new(0.5,0.5), ThemeTag={ ImageColor3="White", }, ImageTransparency=1, Name="Outline", },{ ak("UIPadding",{ PaddingTop=UDim.new(0,ap.Padding-2), PaddingLeft=UDim.new(0,ap.Padding), PaddingRight=UDim.new(0,ap.Padding), PaddingBottom=UDim.new(0,ap.Padding-2), }), ak("ImageLabel",{ Image=ai.Icon(ax)[1], ImageRectSize=ai.Icon(ax)[2].ImageRectSize, ImageRectOffset=ai.Icon(ax)[2].ImageRectPosition, BackgroundTransparency=1, ThemeTag={ ImageColor3="Icon", }, ImageTransparency=0.1, Size=UDim2.new(0,ap.IconSize,0,ap.IconSize), }), ak("Frame",{ Size=UDim2.new(1,-ap.IconSize-ap.Padding,0,0), BackgroundTransparency=1, },{ ak("TextLabel",{ Text=av, ThemeTag={ TextColor3="Text", }, TextSize=17, BackgroundTransparency=1, TextXAlignment="Left", FontFace=Font.new(ai.Font,Enum.FontWeight.Medium), Size=UDim2.new(1,0,0,0), TextTruncate="AtEnd", AutomaticSize="Y", Name="Title", }), ak("TextLabel",{ Text=aw or"", Visible=aw and true or false, ThemeTag={ TextColor3="Text", }, TextSize=15, TextTransparency=0.3, BackgroundTransparency=1, TextXAlignment="Left", FontFace=Font.new(ai.Font,Enum.FontWeight.Medium), Size=UDim2.new(1,0,0,0), TextTruncate="AtEnd", AutomaticSize="Y", Name="Desc", })or nil, ak("UIListLayout",{ Padding=UDim.new(0,6), FillDirection="Vertical", }), }), ak("UIListLayout",{ Padding=UDim.new(0,ap.Padding), FillDirection="Horizontal", }), }), },true), ak("Frame",{ Name="ParentContainer", Size=UDim2.new(1,-ap.Padding,0,0), AutomaticSize="Y", BackgroundTransparency=1, Visible=az, },{ ai.NewRoundFrame(99,"Squircle",{ Size=UDim2.new(0,2,1,0), BackgroundTransparency=1, ThemeTag={ ImageColor3="Text", }, ImageTransparency=0.9, }), ak("Frame",{ Size=UDim2.new(1,-ap.Padding-2,0,0), Position=UDim2.new(0,ap.Padding+2,0,0), BackgroundTransparency=1, },{ ak("UIListLayout",{ Padding=UDim.new(0,0), FillDirection="Vertical", }), }), }), ak("UIListLayout",{ Padding=UDim.new(0,0), FillDirection="Vertical", HorizontalAlignment="Right", }), }) aB.Main.Size=UDim2.new( 1, 0, 0, aB.Main.Outline.Frame.Desc.Visible and(((ap.Padding-2)*2)+aB.Main.Outline.Frame.Title.TextBounds.Y+6+aB.Main.Outline.Frame.Desc.TextBounds.Y) or(((ap.Padding-2)*2)+aB.Main.Outline.Frame.Title.TextBounds.Y) ) ai.AddSignal(aB.Main.MouseEnter,function() al(aB.Main,0.04,{ImageTransparency=0.95}):Play() end) ai.AddSignal(aB.Main.InputEnded,function() al(aB.Main,0.08,{ImageTransparency=1}):Play() end) ai.AddSignal(aB.Main.MouseButton1Click,function() if aA then aA() end end) return aB end local function ContainsText(av,aw) if not aw or aw==""then return false end if not av or av==""then return false end local ax=string.lower(av) local ay=string.lower(aw) return string.find(ax,ay,1,true)~=nil end local function Search(av) if not av or av==""then return{} end local aw={} for ax,ay in next,am.Tabs do local az=ContainsText(ay.Title or"",av) local aA={} for aB,b in next,ay.Elements do if b.__type~="Section"then local d=ContainsText(b.Title or"",av) local f=ContainsText(b.Desc or"",av) if d or f then aA[aB]={ Title=b.Title, Desc=b.Desc, Original=b, __type=b.__type, Index=aB, } end end end if az or next(aA)~=nil then aw[ax]={ Tab=ay, Title=ay.Title, Icon=ay.Icon, Elements=aA, } end end return aw end ai.AddSignal(as.UIListLayout:GetPropertyChangedSignal"AbsoluteContentSize",function() al(as,0.06,{ Size=UDim2.new( 1, 0, 0, math.clamp( as.UIListLayout.AbsoluteContentSize.Y+(ap.Padding*2), 0, ap.MaxHeight ) ), },Enum.EasingStyle.Quint,Enum.EasingDirection.InOut):Play() end) function ap.Open(av) task.spawn(function() at.Frame.Visible=true au.Visible=true al(au.UIScale,0.12,{Scale=1},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end) end function ap.Close(av,aw) task.spawn(function() ao() at.Frame.Visible=false al(au.UIScale,0.12,{Scale=1},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() task.wait(0.12) au.Visible=false if aw then au:Destroy() end end) end ai.AddSignal(ar.TextButton.MouseButton1Click,function() ap:Close(true) end) ap:Open() function ap.Search(av,aw) aw=aw or"" local ax=Search(aw) as.Visible=true at.Frame.Results.Frame.Visible=true for ay,az in next,as:GetChildren()do if az.ClassName~="UIListLayout"and az.ClassName~="UIPadding"then az:Destroy() end end if ax and next(ax)~=nil then for ay,az in next,ax do local aA=ap.Icons.Tab local aB=CreateSearchTab(az.Title,nil,aA,as,true,function() ap:Close() am:SelectTab(ay) end) if az.Elements and next(az.Elements)~=nil then for b,d in next,az.Elements do local f=ap.Icons[d.__type] CreateSearchTab( d.Title, d.Desc, f, aB:FindFirstChild"ParentContainer"and aB.ParentContainer.Frame or nil, false, function() ap:Close() am:SelectTab(ay) if az.Tab.ScrollToTheElement then az.Tab:ScrollToTheElement(d.Index) end end ) end end end elseif aw~=""then ak("TextLabel",{ Size=UDim2.new(1,0,0,70), Text="No results found", TextSize=16, ThemeTag={ TextColor3="Text", }, TextTransparency=0.2, BackgroundTransparency=1, FontFace=Font.new(ai.Font,Enum.FontWeight.Medium), Parent=as, Name="NotFound", }) else as.Visible=false at.Frame.Results.Frame.Visible=false end end ai.AddSignal(aq:GetPropertyChangedSignal"Text",function() ap:Search(aq.Text) end) return ap end return af end function a.ae() local aa=(cloneref or clonereference or function(aa) return aa end) local af=aa(game:GetService"UserInputService") local ai=aa(game:GetService"RunService") local ak=aa(game:GetService"Players") local al=workspace.CurrentCamera local am=a.load't' local an=a.load'd' local ao=an.New local ap=an.Tween local aq=a.load'w'.New local ar=a.load'm'.New local as=a.load'x'.New local at=a.load'y' local au=a.load'z' return function(av) local aw={ Title=av.Title or"UI Library", Author=av.Author, Icon=av.Icon, IconSize=av.IconSize or 22, IconThemed=av.IconThemed, IconRadius=av.IconRadius or 0, Folder=av.Folder, Resizable=av.Resizable~=false, Background=av.Background, BackgroundImageTransparency=av.BackgroundImageTransparency or 0, ShadowTransparency=av.ShadowTransparency or 0.6, User=av.User or{}, Footer=av.Footer or{}, Topbar=av.Topbar or{Height=52,ButtonsType="Default"}, Size=av.Size, MinSize=av.MinSize or Vector2.new(560,350), MaxSize=av.MaxSize or Vector2.new(850,560), TopBarButtonIconSize=av.TopBarButtonIconSize, ToggleKey=av.ToggleKey, ElementsRadius=av.ElementsRadius, Radius=av.Radius or 16, Transparent=av.Transparent or false, HideSearchBar=av.HideSearchBar~=false, ScrollBarEnabled=av.ScrollBarEnabled or false, SideBarWidth=av.SideBarWidth or 200, Acrylic=av.Acrylic or false, NewElements=av.NewElements or false, IgnoreAlerts=av.IgnoreAlerts or false, HidePanelBackground=av.HidePanelBackground or false, AutoScale=av.AutoScale~=false, OpenButton=av.OpenButton, DragFrameSize=160, Position=UDim2.new(0.5,0,0.5,0), UICorner=16, UIPadding=14, UIElements={}, CanDropdown=true, Closed=false, Parent=av.Parent, Destroyed=false, IsFullscreen=false, CanResize=av.Resizable~=false, IsOpenButtonEnabled=true, CurrentConfig=nil, ConfigManager=nil, AcrylicPaint=nil, CurrentTab=nil, TabModule=nil, OnOpenCallback=nil, OnCloseCallback=nil, OnDestroyCallback=nil, IsPC=false, Gap=5, TopBarButtons={}, AllElements={}, ElementConfig={}, PendingFlags={}, IsToggleDragging=false, } aw.UICorner=aw.Radius aw.TopBarButtonIconSize=aw.TopBarButtonIconSize or(aw.Topbar.ButtonsType=="Mac"and 11 or 16) aw.ElementConfig={ UIPadding=(aw.NewElements and 10 or 13), UICorner=aw.ElementsRadius or(aw.NewElements and 23 or 16), } local ax=aw.Size or UDim2.new(0,580,0,460) aw.Size=UDim2.new( ax.X.Scale, math.clamp(ax.X.Offset,aw.MinSize.X,aw.MaxSize.X), ax.Y.Scale, math.clamp(ax.Y.Offset,aw.MinSize.Y,aw.MaxSize.Y) ) if aw.Topbar=={}then aw.Topbar={Height=52,ButtonsType="Default"} end if not ai:IsStudio()and aw.Folder and writefile then if not isfolder("WindUI/"..aw.Folder)then makefolder("WindUI/"..aw.Folder) end if not isfolder("WindUI/"..aw.Folder.."/assets")then makefolder("WindUI/"..aw.Folder.."/assets") end if not isfolder(aw.Folder)then makefolder(aw.Folder) end if not isfolder(aw.Folder.."/assets")then makefolder(aw.Folder.."/assets") end end local ay=ao("UICorner",{ CornerRadius=UDim.new(0,aw.UICorner), }) if aw.Folder then aw.ConfigManager=au:Init(aw) end if aw.Acrylic then local az=am.AcrylicPaint{UseAcrylic=aw.Acrylic} aw.AcrylicPaint=az end local az=ao("Frame",{ Size=UDim2.new(0,32,0,32), Position=UDim2.new(1,0,1,0), AnchorPoint=Vector2.new(0.5,0.5), BackgroundTransparency=1, ZIndex=99, Active=true, },{ ao("ImageLabel",{ Size=UDim2.new(0,96,0,96), BackgroundTransparency=1, Image="rbxassetid://120997033468887", Position=UDim2.new(0.5,-16,0.5,-16), AnchorPoint=Vector2.new(0.5,0.5), ImageTransparency=1, }), }) local aA=an.NewRoundFrame(aw.UICorner,"Squircle",{ Size=UDim2.new(1,0,1,0), ImageTransparency=1, ImageColor3=Color3.new(0,0,0), ZIndex=98, Active=false, },{ ao("ImageLabel",{ Size=UDim2.new(0,70,0,70), Image=an.Icon"expand"[1], ImageRectOffset=an.Icon"expand"[2].ImageRectPosition, ImageRectSize=an.Icon"expand"[2].ImageRectSize, BackgroundTransparency=1, Position=UDim2.new(0.5,0,0.5,0), AnchorPoint=Vector2.new(0.5,0.5), ImageTransparency=1, }), }) local aB=an.NewRoundFrame(aw.UICorner,"Squircle",{ Size=UDim2.new(1,0,1,0), ImageTransparency=1, ImageColor3=Color3.new(0,0,0), ZIndex=999, Active=false, }) aw.UIElements.SideBar=ao("ScrollingFrame",{ Size=UDim2.new( 1, aw.ScrollBarEnabled and-3-(aw.UIPadding/2)or 0, 1, not aw.HideSearchBar and-45 or 0 ), Position=UDim2.new(0,0,1,0), AnchorPoint=Vector2.new(0,1), BackgroundTransparency=1, ScrollBarThickness=0, ElasticBehavior="Never", CanvasSize=UDim2.new(0,0,0,0), AutomaticCanvasSize="Y", ScrollingDirection="Y", ClipsDescendants=true, VerticalScrollBarPosition="Left", },{ ao("Frame",{ BackgroundTransparency=1, AutomaticSize="Y", Size=UDim2.new(1,0,0,0), Name="Frame", },{ ao("UIPadding",{ PaddingBottom=UDim.new(0,aw.UIPadding/2), }), ao("UIListLayout",{ SortOrder="LayoutOrder", Padding=UDim.new(0,aw.Gap), }), }), ao("UIPadding",{ PaddingLeft=UDim.new(0,aw.UIPadding/2), PaddingRight=UDim.new(0,aw.UIPadding/2), PaddingBottom=UDim.new(0,aw.UIPadding/2), }), }) aw.UIElements.SideBarContainer=ao("Frame",{ Size=UDim2.new( 0, aw.SideBarWidth, 1, aw.User.Enabled and-aw.Topbar.Height-42-(aw.UIPadding*2)or-aw.Topbar.Height ), Position=UDim2.new(0,0,0,aw.Topbar.Height), BackgroundTransparency=1, Visible=true, },{ ao("Frame",{ Name="Content", BackgroundTransparency=1, Size=UDim2.new(1,0,1,not aw.HideSearchBar and-45-aw.UIPadding or-aw.UIPadding/2), Position=UDim2.new(0,0,1,-aw.UIPadding/2), AnchorPoint=Vector2.new(0,1), }), aw.UIElements.SideBar, }) if aw.ScrollBarEnabled then as( aw.UIElements.SideBar, aw.UIElements.SideBarContainer.Content, aw, 3, av.WindUI ) end aw.UIElements.MainBar=ao("Frame",{ Size=UDim2.new(1,-aw.UIElements.SideBarContainer.AbsoluteSize.X,1,-aw.Topbar.Height), Position=UDim2.new(1,0,1,0), AnchorPoint=Vector2.new(1,1), BackgroundTransparency=1, },{ an.NewRoundFrame(aw.UICorner-(aw.UIPadding/2),"Squircle",{ Size=UDim2.new(1,0,1,0), ThemeTag={ ImageColor3="PanelBackground", ImageTransparency="PanelBackgroundTransparency", }, ZIndex=3, Name="Background", Visible=not aw.HidePanelBackground, }), ao("UIPadding",{ PaddingLeft=UDim.new(0,aw.UIPadding/2), PaddingRight=UDim.new(0,aw.UIPadding/2), PaddingBottom=UDim.new(0,aw.UIPadding/2), }), }) local b=ao("ImageLabel",{ Image="rbxassetid://8992230677", ThemeTag={ ImageColor3="WindowShadow", }, ImageTransparency=1, Size=UDim2.new(1,100,1,100), Position=UDim2.new(0,-50,0,-50), ScaleType="Slice", SliceCenter=Rect.new(99,99,99,99), BackgroundTransparency=1, ZIndex=-999999999999999, Name="Blur", }) if af.TouchEnabled and not af.KeyboardEnabled then aw.IsPC=false elseif af.KeyboardEnabled then aw.IsPC=true else aw.IsPC=nil end local d if aw.User then local function GetUserThumb()local f=ak:GetUserThumbnailAsync( aw.User.Anonymous and 1 or ak.LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420 ) return f end d=ao("TextButton",{ Size=UDim2.new( 0, aw.UIElements.SideBarContainer.AbsoluteSize.X-(aw.UIPadding/2), 0, 42+aw.UIPadding ), Position=UDim2.new(0,aw.UIPadding/2,1,-(aw.UIPadding/2)), AnchorPoint=Vector2.new(0,1), BackgroundTransparency=1, Visible=aw.User.Enabled or false, },{ an.NewRoundFrame(aw.UICorner-(aw.UIPadding/2),"SquircleOutline",{ Size=UDim2.new(1,0,1,0), ThemeTag={ ImageColor3="Text", }, ImageTransparency=1, Name="Outline", },{ ao("UIGradient",{ Rotation=78, Color=ColorSequence.new{ ColorSequenceKeypoint.new(0.0,Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(0.5,Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(1.0,Color3.fromRGB(255,255,255)), }, Transparency=NumberSequence.new{ NumberSequenceKeypoint.new(0.0,0.1), NumberSequenceKeypoint.new(0.5,1), NumberSequenceKeypoint.new(1.0,0.1), }, }), }), an.NewRoundFrame(aw.UICorner-(aw.UIPadding/2),"Squircle",{ Size=UDim2.new(1,0,1,0), ThemeTag={ ImageColor3="Text", }, ImageTransparency=1, Name="UserIcon", },{ ao("ImageLabel",{ Image=GetUserThumb(), BackgroundTransparency=1, Size=UDim2.new(0,42,0,42), ThemeTag={ BackgroundColor3="Text", }, BackgroundTransparency=0.93, },{ ao("UICorner",{ CornerRadius=UDim.new(1,0), }), }), ao("Frame",{ AutomaticSize="XY", BackgroundTransparency=1, },{ ao("TextLabel",{ Text=aw.User.Anonymous and"Anonymous"or ak.LocalPlayer.DisplayName, TextSize=17, ThemeTag={ TextColor3="Text", }, FontFace=Font.new(an.Font,Enum.FontWeight.SemiBold), AutomaticSize="Y", BackgroundTransparency=1, Size=UDim2.new(1,-27,0,0), TextTruncate="AtEnd", TextXAlignment="Left", Name="DisplayName", }), ao("TextLabel",{ Text=aw.User.Anonymous and"anonymous"or ak.LocalPlayer.Name, TextSize=15, TextTransparency=0.6, ThemeTag={ TextColor3="Text", }, FontFace=Font.new(an.Font,Enum.FontWeight.Medium), AutomaticSize="Y", BackgroundTransparency=1, Size=UDim2.new(1,-27,0,0), TextTruncate="AtEnd", TextXAlignment="Left", Name="UserName", }), ao("UIListLayout",{ Padding=UDim.new(0,4), HorizontalAlignment="Left", }), }), ao("UIListLayout",{ Padding=UDim.new(0,aw.UIPadding), FillDirection="Horizontal", VerticalAlignment="Center", }), ao("UIPadding",{ PaddingLeft=UDim.new(0,aw.UIPadding/2), PaddingRight=UDim.new(0,aw.UIPadding/2), }), }), }) function aw.User.Enable(f) aw.User.Enabled=true ap( aw.UIElements.SideBarContainer, 0.25, {Size=UDim2.new(0,aw.SideBarWidth,1,-aw.Topbar.Height-42-(aw.UIPadding*2))}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() d.Visible=true end function aw.User.Disable(f) aw.User.Enabled=false ap( aw.UIElements.SideBarContainer, 0.25, {Size=UDim2.new(0,aw.SideBarWidth,1,-aw.Topbar.Height)}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() d.Visible=false end function aw.User.SetAnonymous(f,g) if g~=false then g=true end aw.User.Anonymous=g d.UserIcon.ImageLabel.Image=GetUserThumb() d.UserIcon.Frame.DisplayName.Text=g and"Anonymous"or ak.LocalPlayer.DisplayName d.UserIcon.Frame.UserName.Text=g and"anonymous"or ak.LocalPlayer.Name end if aw.User.Enabled then aw.User:Enable() else aw.User:Disable() end if aw.User.Callback then an.AddSignal(d.MouseButton1Click,function() aw.User.Callback() end) an.AddSignal(d.MouseEnter,function() ap(d.UserIcon,0.04,{ImageTransparency=0.95}):Play() ap(d.Outline,0.04,{ImageTransparency=0.85}):Play() end) an.AddSignal(d.InputEnded,function() ap(d.UserIcon,0.04,{ImageTransparency=1}):Play() ap(d.Outline,0.04,{ImageTransparency=1}):Play() end) end end local f local g local h=false local i local l=typeof(aw.Background)=="string"and string.match(aw.Background,"^video:(.+)")or nil local m=typeof(aw.Background)=="string" and not l and string.match(aw.Background,"^https?://.+") or nil local p=typeof(aw.Background)=="string" and not l and string.match(aw.Background,"^rbxassetid://%d+") or nil local function GetImageExtension(r) if not r or typeof(r)~="string"then return".png" end local u=r:match"^([^?#]+)"or r local v=u:match"%.(%w+)$" if v then v=v:lower() if v=="jpg"or v=="jpeg"or v=="png"or v=="webp"then return"."..v end end return".png" end if typeof(aw.Background)=="string"and l then h=true if string.find(l,"http")then local r=(aw.Folder or"Temp").."/assets/."..an.SanitizeFilename(l)..".webm" if not isfile(r)then local u,v=pcall(function() local u=game.HttpGet and game:HttpGet(l) or an.Request{ Url=l, Method="GET", Headers={["User-Agent"]="Roblox/Exploit"}, }.Body writefile(r,u) end) if not u then warn("[ WindUI.Window.Background ] Failed to download video: "..tostring(v)) end end local u,v=pcall(function() return getcustomasset(r) end) if not u then warn("[ WindUI.Window.Background ] Failed to load custom asset: "..tostring(v)) end warn"[ WindUI.Window.Background ] VideoFrame may not work with custom video" l=v end i=ao("VideoFrame",{ BackgroundTransparency=1, Size=UDim2.new(1,0,1,0), Video=l, Looped=true, Volume=0, },{ ao("UICorner",{ CornerRadius=UDim.new(0,aw.UICorner), }), }) i:Play() elseif m then local r=(aw.Folder or"Temp") .."/assets/." ..an.SanitizeFilename(m) ..GetImageExtension(m) if isfile and not isfile(r)then local u,v=pcall(function() local u=game.HttpGet and game:HttpGet(m) or an.Request{ Url=m, Method="GET", Headers={["User-Agent"]="Roblox/Exploit"}, }.Body writefile(r,u) end) if not u then warn("[ Window.Background ] Failed to download image: "..tostring(v)) end end local u,v=pcall(function() return getcustomasset(r) end) if not u then warn("[ Window.Background ] Failed to load custom asset: "..tostring(v)) end i=ao("ImageLabel",{ BackgroundTransparency=1, Size=UDim2.new(1,0,1,0), Image=v, ImageTransparency=0, ScaleType="Crop", },{ ao("UICorner",{ CornerRadius=UDim.new(0,aw.UICorner), }), }) elseif p then i=ao("ImageLabel",{ BackgroundTransparency=1, Size=UDim2.new(1,0,1,0), Image=p, ImageTransparency=0, ScaleType="Crop", },{ ao("UICorner",{ CornerRadius=UDim.new(0,aw.UICorner), }), }) elseif aw.Background then i=ao("ImageLabel",{ BackgroundTransparency=1, Size=UDim2.new(1,0,1,0), Image=typeof(aw.Background)=="string"and aw.Background or"", ImageTransparency=1, ScaleType="Crop", },{ ao("UICorner",{ CornerRadius=UDim.new(0,aw.UICorner), }), }) end local r=an.NewRoundFrame(99,"Squircle",{ ImageTransparency=0.8, ImageColor3=Color3.new(1,1,1), Size=UDim2.new(0,0,0,4), Position=UDim2.new(0.5,0,1,4), AnchorPoint=Vector2.new(0.5,0), },{ ao("TextButton",{ Size=UDim2.new(1,12,1,12), BackgroundTransparency=1, Position=UDim2.new(0.5,0,0.5,0), AnchorPoint=Vector2.new(0.5,0.5), Active=true, ZIndex=99, Name="Frame", }), }) function createAuthor(u) return ao("TextLabel",{ Text=u, FontFace=Font.new(an.Font,Enum.FontWeight.Medium), BackgroundTransparency=1, TextTransparency=0.35, AutomaticSize="XY", Parent=aw.UIElements.Main and aw.UIElements.Main.Main.Topbar.Left.Title, TextXAlignment="Left", TextSize=13, LayoutOrder=2, ThemeTag={ TextColor3="WindowTopbarAuthor", }, Name="Author", }) end local u local v if aw.Author then u=createAuthor(aw.Author) end local x=ao("TextLabel",{ Text=aw.Title, FontFace=Font.new(an.Font,Enum.FontWeight.SemiBold), BackgroundTransparency=1, AutomaticSize="XY", Name="Title", TextXAlignment="Left", TextSize=16, ThemeTag={ TextColor3="WindowTopbarTitle", }, }) aw.UIElements.Main=ao("Frame",{ Size=UDim2.new(aw.Size.X.Scale,aw.Size.X.Offset,0,0), Position=aw.Position, BackgroundTransparency=1, Parent=av.Parent, AnchorPoint=Vector2.new(0.5,0.5), Active=true, },{ av.WindUI.UIScaleObj, aw.AcrylicPaint and aw.AcrylicPaint.Frame or nil, b, an.NewRoundFrame(aw.UICorner,"Squircle",{ ImageTransparency=1, Size=UDim2.new(1,0,1,0), AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), Name="Background", ThemeTag={ ImageColor3="WindowBackground", }, },{ i, r, az, }), ay, aA, aB, ao("Frame",{ Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Name="Main", Visible=false, ZIndex=97, },{ ao("UICorner",{ CornerRadius=UDim.new(0,aw.UICorner), }), aw.UIElements.SideBarContainer, aw.UIElements.MainBar, d, g, ao("Frame",{ Size=UDim2.new(1,0,0,aw.Topbar.Height), BackgroundTransparency=1, BackgroundColor3=Color3.fromRGB(50,50,50), Name="Topbar", },{ f, ao("Frame",{ AutomaticSize="X", Size=UDim2.new(0,0,1,0), BackgroundTransparency=1, Name="Left", },{ ao("UIListLayout",{ Padding=UDim.new(0,aw.UIPadding+4), SortOrder="LayoutOrder", FillDirection="Horizontal", VerticalAlignment="Center", }), ao("Frame",{ AutomaticSize="XY", BackgroundTransparency=1, Name="Title", Size=UDim2.new(0,0,1,0), LayoutOrder=2, },{ ao("UIListLayout",{ Padding=UDim.new(0,0), SortOrder="LayoutOrder", FillDirection="Vertical", VerticalAlignment="Center", }), x, u, }), ao("UIPadding",{ PaddingLeft=UDim.new(0,4), }), }), ao("CanvasGroup",{ Size=UDim2.new(0,0,1,0), BackgroundTransparency=1, Name="Center", AnchorPoint=Vector2.new(0,0.5), Position=UDim2.new(0,0,0.5,0), AutomaticSize="Y", Visible=false, },{ ao("ScrollingFrame",{ Name="Holder", BackgroundTransparency=1, AutomaticSize="Y", ScrollBarThickness=0, ScrollingDirection="X", AutomaticCanvasSize="X", CanvasSize=UDim2.new(0,0,0,0), Size=UDim2.new(1,0,1,0), },{ ao("UIListLayout",{ FillDirection="Horizontal", VerticalAlignment="Center", HorizontalAlignment="Left", Padding=UDim.new(0,aw.UIPadding/2), }), }), }), ao("Frame",{ AutomaticSize="XY", BackgroundTransparency=1, Position=UDim2.new(aw.Topbar.ButtonsType=="Default"and 1 or 0,0,0.5,0), AnchorPoint=Vector2.new(aw.Topbar.ButtonsType=="Default"and 1 or 0,0.5), Name="Right", },{ ao("UIListLayout",{ Padding=UDim.new(0,aw.Topbar.ButtonsType=="Default"and 9 or 0), FillDirection="Horizontal", SortOrder="LayoutOrder", }), }), ao("UIPadding",{ PaddingTop=UDim.new(0,aw.UIPadding), PaddingLeft=UDim.new( 0, aw.Topbar.ButtonsType=="Default"and aw.UIPadding or aw.UIPadding-2 ), PaddingRight=UDim.new(0,8), PaddingBottom=UDim.new(0,aw.UIPadding), }), }), }), }) an.AddSignal(aw.UIElements.Main.Main.Topbar.Left:GetPropertyChangedSignal"AbsoluteSize",function() local z=0 local A=aw.UIElements.Main.Main.Topbar.Right.UIListLayout.AbsoluteContentSize.X /av.WindUI.UIScale z=aw.UIElements.Main.Main.Topbar.Left.AbsoluteSize.X/av.WindUI.UIScale if aw.Topbar.ButtonsType~="Default"then z=z+A+aw.UIPadding-4 end aw.UIElements.Main.Main.Topbar.Center.Position= UDim2.new(0,z+(aw.UIPadding/av.WindUI.UIScale),0.5,0) aw.UIElements.Main.Main.Topbar.Center.Size=UDim2.new( 1, -z -(aw.UIPadding/av.WindUI.UIScale) -(aw.Topbar.ButtonsType=="Default"and A+aw.UIPadding or 0), 1, 0 ) end) if aw.Topbar.ButtonsType~="Default"then an.AddSignal(aw.UIElements.Main.Main.Topbar.Right:GetPropertyChangedSignal"AbsoluteSize",function() aw.UIElements.Main.Main.Topbar.Left.Position=UDim2.new( 0, (aw.UIElements.Main.Main.Topbar.Right.AbsoluteSize.X/av.WindUI.UIScale)+aw.UIPadding-4, 0, 0 ) end) end function aw.CreateTopbarButton(z,A,B,C,F,G,H,J) local L=an.Image( B, B, 0, aw.Folder, "WindowTopbarIcon", aw.Topbar.ButtonsType=="Default"and true or false, G, "WindowTopbarButtonIcon" ) L.Size=aw.Topbar.ButtonsType=="Default" and UDim2.new(0,J or aw.TopBarButtonIconSize,0,J or aw.TopBarButtonIconSize) or UDim2.new(0,0,0,0) L.AnchorPoint=Vector2.new(0.5,0.5) L.Position=UDim2.new(0.5,0,0.5,0) L.ImageLabel.ImageTransparency=aw.Topbar.ButtonsType=="Default"and 0 or 1 if aw.Topbar.ButtonsType~="Default"then L.ImageLabel.ImageColor3=an.GetTextColorForHSB(H) end local M=an.NewRoundFrame( aw.Topbar.ButtonsType=="Default"and aw.UICorner-(aw.UIPadding/2)or 999, "Squircle", { Size=aw.Topbar.ButtonsType=="Default" and UDim2.new(0,aw.Topbar.Height-16,0,aw.Topbar.Height-16) or UDim2.new(0,14,0,14), LayoutOrder=F or 999, ZIndex=9999, AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(0.5,0,0.5,0), ImageColor3=aw.Topbar.ButtonsType~="Default"and(H or Color3.fromHex"#ff3030")or nil, ThemeTag=aw.Topbar.ButtonsType=="Default"and{ ImageColor3="Text", }or nil, ImageTransparency=aw.Topbar.ButtonsType=="Default"and 1 or 0, }, { L, ao("UIScale",{ Scale=1, }), }, true ) local N=ao("Frame",{ Size=aw.Topbar.ButtonsType~="Default"and UDim2.new(0,24,0,24) or UDim2.new(0,aw.Topbar.Height-16,0,aw.Topbar.Height-16), BackgroundTransparency=1, Parent=aw.UIElements.Main.Main.Topbar.Right, LayoutOrder=F or 999, },{ M, }) aw.TopBarButtons[100-F]={ Name=A, Object=N, } an.AddSignal(M.MouseButton1Click,function() if C then C() end end) an.AddSignal(M.MouseEnter,function() if aw.Topbar.ButtonsType=="Default"then ap(M,0.15,{ImageTransparency=0.93}):Play() else ap( L.ImageLabel, 0.1, {ImageTransparency=0}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() ap(L,0.1,{ Size=UDim2.new( 0, J or aw.TopBarButtonIconSize, 0, J or aw.TopBarButtonIconSize ), },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end end) an.AddSignal(M.MouseButton1Down,function() ap(M.UIScale,0.2,{Scale=0.9},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end) an.AddSignal(M.MouseLeave,function() if aw.Topbar.ButtonsType=="Default"then ap(M,0.1,{ImageTransparency=1}):Play() else ap( L.ImageLabel, 0.1, {ImageTransparency=1}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() ap( L, 0.1, {Size=UDim2.new(0,0,0,0)}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() end end) an.AddSignal(M.InputEnded,function() ap(M.UIScale,0.2,{Scale=1},Enum.EasingStyle.Quint,Enum.EasingDirection.InOut):Play() end) return M end function aw.Topbar.Button(z,A:{ Name:string, Icon:string, Callback:any, LayoutOrder:number, IconThemed:boolean, Color:Color3, IconSize:number, }) return aw:CreateTopbarButton( A.Name, A.Icon, A.Callback, A.LayoutOrder or 0, A.IconThemed, A.Color, A.IconSize ) end local z=an.Drag( aw.UIElements.Main, {aw.UIElements.Main.Main.Topbar,r.Frame}, function(z,A) if not aw.Closed then if z and A==r.Frame then ap(r,0.1,{ImageTransparency=0.35}):Play() else ap(r,0.2,{ImageTransparency=0.8}):Play() end aw.Position=aw.UIElements.Main.Position aw.Dragging=z end end ) if not h and aw.Background and typeof(aw.Background)=="table"then local A=ao"UIGradient" for B,C in next,aw.Background do A[B]=C end aw.UIElements.BackgroundGradient=an.NewRoundFrame(aw.UICorner,"Squircle",{ Size=UDim2.new(1,0,1,0), Parent=aw.UIElements.Main.Background, ImageTransparency=aw.Transparent and av.WindUI.TransparencyValue or 0, },{ A, }) end aw.OpenButtonMain=a.load'A'.New(aw) task.spawn(function() if aw.Icon then local A=ao("Frame",{ Size=UDim2.new(0,22,0,22), BackgroundTransparency=1, Parent=aw.UIElements.Main.Main.Topbar.Left, }) v=an.Image( aw.Icon, aw.Title, aw.IconRadius, aw.Folder, "Window", true, aw.IconThemed, "WindowTopbarIcon" ) v.Parent=A v.Size=UDim2.new(0,aw.IconSize,0,aw.IconSize) v.Position=UDim2.new(0.5,0,0.5,0) v.AnchorPoint=Vector2.new(0.5,0.5) aw.OpenButtonMain:SetIcon(aw.Icon) else aw.OpenButtonMain:SetIcon(aw.Icon) end end) function aw.SetToggleKey(A,B) aw.ToggleKey=B end function aw.SetTitle(A,B) aw.Title=B x.Text=B end function aw.SetAuthor(A,B) aw.Author=B if not u then u=createAuthor(aw.Author) end u.Text=B end function aw.SetSize(A,B) if typeof(B)=="UDim2"then aw.Size=B ap(aw.UIElements.Main,0.08,{Size=B},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end end function aw.SetBackgroundImage(A,B) aw.UIElements.Main.Background.ImageLabel.Image=B end function aw.SetBackgroundImageTransparency(A,B) if i and i:IsA"ImageLabel"then i.ImageTransparency=math.floor(B*10+0.5)/10 end aw.BackgroundImageTransparency=math.floor(B*10+0.5)/10 end function aw.SetBackgroundTransparency(A,B) local C=math.floor(tonumber(B)*10+0.5)/10 av.WindUI.TransparencyValue=C aw:ToggleTransparency(C>0) end local A local B an.Icon"minimize" an.Icon"maximize" aw:CreateTopbarButton( "Fullscreen", aw.Topbar.ButtonsType=="Mac"and"rbxassetid://127426072704909"or"maximize", function() aw:ToggleFullscreen() end, (aw.Topbar.ButtonsType=="Default"and 998 or 999), true, Color3.fromHex"#60C762", aw.Topbar.ButtonsType=="Mac"and 9 or nil ) local function SetSize(C) ap(aw.UIElements.Main,0.45,{ Size=not aw.IsFullscreen and B or UDim2.new( 0, (av.WindUI.ScreenGui.AbsoluteSize.X-20)/av.WindUI.UIScale, 0, (av.WindUI.ScreenGui.AbsoluteSize.Y-20-52)/av.WindUI.UIScale ), },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ap( aw.UIElements.Main, 0.45, {Position=not aw.IsFullscreen and A or UDim2.new(0.5,0,0.5,26)}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() end function aw.ToggleFullscreen(C) local F=aw.IsFullscreen z:Set(F) if not F then A=aw.UIElements.Main.Position B=aw.UIElements.Main.Size aw.CanResize=false else if aw.Resizable then aw.CanResize=true end end aw.IsFullscreen=not F SetSize(true) end an.AddSignal(av.WindUI.ScreenGui:GetPropertyChangedSignal"AbsoluteSize",function() if aw.IsFullscreen then SetSize() end end) aw:CreateTopbarButton("Minimize","minus",function() if aw.Close then aw:Close() end end,(aw.Topbar.ButtonsType=="Default"and 997 or 998),nil,Color3.fromHex"#F4C948") function aw.OnOpen(C,F) aw.OnOpenCallback=F end function aw.OnClose(C,F) aw.OnCloseCallback=F end function aw.OnDestroy(C,F) aw.OnDestroyCallback=F end if av.WindUI.UseAcrylic then aw.AcrylicPaint.AddParent(aw.UIElements.Main) end function aw.SetIconSize(C,F) local G if typeof(F)=="number"then G=UDim2.new(0,F,0,F) aw.IconSize=F elseif typeof(F)=="UDim2"then G=F aw.IconSize=F.X.Offset end if v then v.Size=G end end function aw.Open(C) if aw.Destroyed then return end task.spawn(function() if aw.OnOpenCallback then task.spawn(function() an.SafeCallback(aw.OnOpenCallback) end) end task.wait(0.06) aw.Closed=false aw.UIElements.Main.Size=UDim2.new(aw.Size.X.Scale,aw.Size.X.Offset,0,100) ap(aw.UIElements.Main,0.8,{ Size=aw.Size, },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() if aw.UIElements.BackgroundGradient then ap(aw.UIElements.BackgroundGradient,0.2,{ ImageTransparency=0, },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end aw.UIElements.Main.Background.ImageTransparency=1 ap(aw.UIElements.Main.Background,0.4,{ ImageTransparency=aw.Transparent and av.WindUI.TransparencyValue or 0, },Enum.EasingStyle.Exponential,Enum.EasingDirection.Out):Play() if i then if i:IsA"VideoFrame"then i.Visible=true else ap(i,0.2,{ ImageTransparency=aw.BackgroundImageTransparency, },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end end if aw.OpenButtonMain and aw.IsOpenButtonEnabled then aw.OpenButtonMain:Visible(false) end ap( b, 0.25, {ImageTransparency=aw.ShadowTransparency}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() ap( r, 0.45, {Size=UDim2.new(0,aw.DragFrameSize,0,4),ImageTransparency=0.8}, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out ):Play() z:Set(true) if aw.Resizable then ap( az.ImageLabel, 0.45, {ImageTransparency=0.8}, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out ):Play() aw.CanResize=true end aw.CanDropdown=true aw.UIElements.Main.Visible=true aw.UIElements.Main:WaitForChild"Main".Visible=true av.WindUI:ToggleAcrylic(true) end) end function aw.Close(C) if aw.Destroyed then return end local F={} if aw.OnCloseCallback then task.spawn(function() an.SafeCallback(aw.OnCloseCallback) end) end av.WindUI:ToggleAcrylic(false) if aw.UIElements.Main and aw.UIElements.Main:WaitForChild"Main"then aw.UIElements.Main.Main.Visible=false end aw.CanDropdown=false aw.Closed=true ap(aw.UIElements.Main,0.9,{ Size=UDim2.new(aw.Size.X.Scale,aw.Size.X.Offset,0,0), },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() if aw.UIElements.BackgroundGradient then ap(aw.UIElements.BackgroundGradient,0.2,{ ImageTransparency=1, },Enum.EasingStyle.Quint,Enum.EasingDirection.InOut):Play() end ap(aw.UIElements.Main.Background,0.3,{ ImageTransparency=1, },Enum.EasingStyle.Exponential,Enum.EasingDirection.InOut):Play() if i then if i:IsA"VideoFrame"then i.Visible=false else ap(i,0.3,{ ImageTransparency=1, },Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() end end ap(b,0.25,{ImageTransparency=1},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() ap( r, 0.3, {Size=UDim2.new(0,0,0,4),ImageTransparency=1}, Enum.EasingStyle.Exponential, Enum.EasingDirection.InOut ):Play() ap( az.ImageLabel, 0.3, {ImageTransparency=1}, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out ):Play() z:Set(false) aw.CanResize=false task.spawn(function() task.wait(0.4) if not aw.Closed then return end aw.UIElements.Main.Visible=false if aw.OpenButtonMain and not aw.Destroyed and not aw.IsPC and aw.IsOpenButtonEnabled then aw.OpenButtonMain:Visible(true) end end) function F.Destroy(G) task.spawn(function() if aw.OnDestroyCallback then task.spawn(function() an.SafeCallback(aw.OnDestroyCallback) end) end if aw.AcrylicPaint and aw.AcrylicPaint.Model then aw.AcrylicPaint.Model:Destroy() end aw.Destroyed=true task.wait(0.4) av.WindUI.ScreenGui:Destroy() av.WindUI.NotificationGui:Destroy() av.WindUI.DropdownGui:Destroy() av.WindUI.TooltipGui:Destroy() an.DisconnectAll() return end) end return F end function aw.Destroy(C) return aw:Close():Destroy() end function aw.Toggle(C) if aw.Closed then aw:Open() else aw:Close() end end function aw.ToggleTransparency(C,F) aw.Transparent=F av.WindUI.Transparent=F aw.UIElements.Main.Background.ImageTransparency=F and av.WindUI.TransparencyValue or 0 end function aw.LockAll(C) for F,G in next,aw.AllElements do if G.Lock then G:Lock() end end end function aw.UnlockAll(C) for F,G in next,aw.AllElements do if G.Unlock then G:Unlock() end end end function aw.GetLocked(C) local F={} for G,H in next,aw.AllElements do if H.Locked then table.insert(F,H) end end return F end function aw.GetUnlocked(C) local F={} for G,H in next,aw.AllElements do if H.Locked==false then table.insert(F,H) end end return F end function aw.GetUIScale(C,F) return av.WindUI.UIScale end function aw.SetUIScale(C,F) av.WindUI.UIScale=F ap(av.WindUI.UIScaleObj,0.2,{Scale=F},Enum.EasingStyle.Quint,Enum.EasingDirection.Out):Play() return aw end function aw.SetToTheCenter(C) ap( aw.UIElements.Main, 0.45, {Position=UDim2.new(0.5,0,0.5,0)}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ):Play() return aw end function aw.SetCurrentConfig(C,F) aw.CurrentConfig=F end do local C=40 local F=al.ViewportSize local G=Vector2.new(aw.Size.X.Offset,aw.Size.Y.Offset) if not aw.IsFullscreen and aw.AutoScale then local H=F.X-(C*2) local J=F.Y-(C*2) local L=H/G.X local M=J/G.Y local N=math.min(L,M) local O=0.3 local P=1.0 local Q=math.clamp(N,O,P) local R=aw:GetUIScale()or 1 local S=0.05 if math.abs(Q-R)>S then aw:SetUIScale(Q) end end end if aw.OpenButtonMain and aw.OpenButtonMain.Button then an.AddSignal(aw.OpenButtonMain.Button.TextButton.MouseButton1Click,function() aw:Open() end) end an.AddSignal(af.InputBegan,function(C,F) if F then return end if aw.ToggleKey then if C.KeyCode==aw.ToggleKey then aw:Toggle() end end end) task.spawn(function() aw:Open() end) function aw.EditOpenButton(C,F) return aw.OpenButtonMain:Edit(F) end if aw.OpenButton and typeof(aw.OpenButton)=="table"then aw:EditOpenButton(aw.OpenButton) end local C=a.load'aa' local F=a.load'ab' local G=C.Init(aw,av.WindUI,av.WindUI.TooltipGui) G:OnChange(function(H) aw.CurrentTab=H end) aw.TabModule=G function aw.Tab(H,J) J.Parent=aw.UIElements.SideBar.Frame return G.New(J,av.WindUI.UIScale) end function aw.SelectTab(H,J) G:SelectTab(J) end function aw.Section(H,J) return F.New( J, aw.UIElements.SideBar.Frame, aw.Folder, av.WindUI.UIScale, aw ) end function aw.IsResizable(H,J) aw.Resizable=J aw.CanResize=J end function aw.SetPanelBackground(H,J) if typeof(J)=="boolean"then aw.HidePanelBackground=J aw.UIElements.MainBar.Background.Visible=J if G then for L,M in next,G.Containers do M.ScrollingFrame.UIPadding.PaddingTop=UDim.new(0,aw.HidePanelBackground and 20 or 10) M.ScrollingFrame.UIPadding.PaddingLeft= UDim.new(0,aw.HidePanelBackground and 20 or 10) M.ScrollingFrame.UIPadding.PaddingRight= UDim.new(0,aw.HidePanelBackground and 20 or 10) M.ScrollingFrame.UIPadding.PaddingBottom= UDim.new(0,aw.HidePanelBackground and 20 or 10) end end end end function aw.Divider(H) local J=ao("Frame",{ Size=UDim2.new(1,0,0,1), Position=UDim2.new(0.5,0,0,0), AnchorPoint=Vector2.new(0.5,0), BackgroundTransparency=0.9, ThemeTag={ BackgroundColor3="Text", }, }) local L=ao("Frame",{ Parent=aw.UIElements.SideBar.Frame, Size=UDim2.new(1,-7,0,5), BackgroundTransparency=1, },{ J, }) return L end local H=a.load'o' function aw.Dialog(J,L) local M={ Title=L.Title or"Dialog", Width=L.Width or 320, Content=L.Content, Buttons=L.Buttons or{}, TextPadding=14, } local N=H.Create(false,"Dialog",aw,av.WindUI,aw.UIElements.Main.Main) N.UIElements.Main.Size=UDim2.new(0,M.Width,0,0) local O=ao("Frame",{ Size=UDim2.new(1,0,1,0), AutomaticSize="Y", BackgroundTransparency=1, Parent=N.UIElements.Main, },{ ao("UIListLayout",{ FillDirection="Vertical", Padding=UDim.new(0,N.UIPadding), }), }) local P=ao("Frame",{ Size=UDim2.new(1,0,0,0), AutomaticSize="Y", BackgroundTransparency=1, Parent=O, },{ ao("UIListLayout",{ FillDirection="Horizontal", Padding=UDim.new(0,N.UIPadding), VerticalAlignment="Center", }), ao("UIPadding",{ PaddingTop=UDim.new(0,M.TextPadding/2), PaddingLeft=UDim.new(0,M.TextPadding/2), PaddingRight=UDim.new(0,M.TextPadding/2), }), }) local Q if L.Icon then Q=an.Image( L.Icon, M.Title..":"..L.Icon, 0, aw, "Dialog", true, L.IconThemed ) Q.Size=UDim2.new(0,22,0,22) Q.Parent=P end N.UIElements.UIListLayout=ao("UIListLayout",{ Padding=UDim.new(0,12), FillDirection="Vertical", HorizontalAlignment="Left", VerticalFlex="SpaceBetween", Parent=N.UIElements.Main, }) ao("UISizeConstraint",{ MinSize=Vector2.new(180,20), MaxSize=Vector2.new(400,math.huge), Parent=N.UIElements.Main, }) N.UIElements.Title=ao("TextLabel",{ Text=M.Title, TextSize=20, FontFace=Font.new(an.Font,Enum.FontWeight.SemiBold), TextXAlignment="Left", TextWrapped=true, RichText=true, Size=UDim2.new(1,Q and-26-N.UIPadding or 0,0,0), AutomaticSize="Y", ThemeTag={ TextColor3="Text", }, BackgroundTransparency=1, Parent=P, }) if M.Content then ao("TextLabel",{ Text=M.Content, TextSize=18, TextTransparency=0.4, TextWrapped=true, RichText=true, FontFace=Font.new(an.Font,Enum.FontWeight.Medium), TextXAlignment="Left", Size=UDim2.new(1,0,0,0), AutomaticSize="Y", LayoutOrder=2, ThemeTag={ TextColor3="Text", }, BackgroundTransparency=1, Parent=O, },{ ao("UIPadding",{ PaddingLeft=UDim.new(0,M.TextPadding/2), PaddingRight=UDim.new(0,M.TextPadding/2), PaddingBottom=UDim.new(0,M.TextPadding/2), }), }) end local R=ao("UIListLayout",{ Padding=UDim.new(0,6), FillDirection="Horizontal", HorizontalAlignment="Center", HorizontalFlex="Fill", }) local S=ao("Frame",{ Size=UDim2.new(1,0,0,36), AutomaticSize="None", BackgroundTransparency=1, Parent=N.UIElements.Main, LayoutOrder=4, },{ R, }) local T={} for U,V in next,M.Buttons do local W= ar(V.Title,V.Icon,V.Callback,V.Variant,S,N,true) table.insert(T,W) W.Size=UDim2.new(1,0,1,0) end N:Open() return N end local J=false aw:CreateTopbarButton("Close","x",function() if not J then if not aw.IgnoreAlerts then J=true aw:Dialog{ Title="Close Window", Content="Do you want to close this window? You will not be able to open it again.", Buttons={ { Title="Cancel", Callback=function() J=false end, Variant="Secondary", }, { Title="Close Window", Callback=function() J=false aw:Destroy() end, Variant="Primary", }, }, } else aw:Destroy() end end end,(aw.Topbar.ButtonsType=="Default"and 999 or 997),nil,Color3.fromHex"#F4695F") function aw.Tag(L,M) if aw.UIElements.Main.Main.Topbar.Center.Visible==false then aw.UIElements.Main.Main.Topbar.Center.Visible=true end M.Window=aw return at:New(M,aw.UIElements.Main.Main.Topbar.Center.Holder) end local L=av.WindUI.GenerateGUID() local function startResizing(M) if aw.CanResize then isResizing=true aA.Active=true initialSize=aw.UIElements.Main.Size initialInputPosition=M.Position ap(az.ImageLabel,0.1,{ImageTransparency=0.35}):Play() an.AddSignal(M.Changed,function() if M.UserInputState==Enum.UserInputState.End then if av.WindUI.CurrentInput and av.WindUI.CurrentInput~=L then return end av.WindUI.CurrentInput=nil isResizing=false aA.Active=false ap(az.ImageLabel,0.17,{ImageTransparency=0.8}):Play() end end) end end an.AddSignal(az.InputBegan,function(M) if M.UserInputType==Enum.UserInputType.MouseButton1 or M.UserInputType==Enum.UserInputType.Touch then if av.WindUI.CurrentInput and av.WindUI.CurrentInput~=L then return end av.WindUI.CurrentInput=L if aw.CanResize then startResizing(M) end end end) an.AddSignal(af.InputChanged,function(M) if M.UserInputType==Enum.UserInputType.MouseMovement or M.UserInputType==Enum.UserInputType.Touch then if isResizing and aw.CanResize then local N=M.Position-initialInputPosition local O=UDim2.new(0,initialSize.X.Offset+N.X*2,0,initialSize.Y.Offset+N.Y*2) O=UDim2.new( O.X.Scale, math.clamp(O.X.Offset,aw.MinSize.X,aw.MaxSize.X), O.Y.Scale, math.clamp(O.Y.Offset,aw.MinSize.Y,aw.MaxSize.Y) ) ap(aw.UIElements.Main,0.08,{ Size=O, },Enum.EasingStyle.Quad,Enum.EasingDirection.Out):Play() aw.Size=O end end end) an.AddSignal(az.MouseEnter,function() if av.WindUI.CurrentInput and av.WindUI.CurrentInput~=L then return end if not isResizing then ap(az.ImageLabel,0.1,{ImageTransparency=0.35}):Play() end end) an.AddSignal(az.MouseLeave,function() if av.WindUI.CurrentInput and av.WindUI.CurrentInput~=L then return end if not isResizing then ap(az.ImageLabel,0.17,{ImageTransparency=0.8}):Play() end end) local M=0 local N=0.4 local O local P=0 function onDoubleClick() aw:SetToTheCenter() end an.AddSignal(r.Frame.MouseButton1Up,function() local Q=tick() local R=aw.Position P=P+1 if P==1 then M=Q O=R task.spawn(function() task.wait(N) if P==1 then P=0 O=nil end end) elseif P==2 then if Q-M<=N and R==O then onDoubleClick() end P=0 O=nil M=0 else P=1 M=Q O=R end end) if not aw.HideSearchBar then local Q=a.load'ad' local R=false local S=aq("Search","search",aw.UIElements.SideBarContainer,true) S.Size=UDim2.new(1,-aw.UIPadding/2,0,39) S.Position=UDim2.new(0,aw.UIPadding/2,0,0) an.AddSignal(S.MouseButton1Click,function() if R then return end Q.new(aw.TabModule,aw.UIElements.Main,function() R=false if aw.Resizable then aw.CanResize=true end ap(aB,0.1,{ImageTransparency=1}):Play() aB.Active=false end) ap(aB,0.1,{ImageTransparency=0.65}):Play() aB.Active=true R=true aw.CanResize=false end) end function aw.DisableTopbarButtons(Q,R) for S,T in next,R do for U,V in next,aw.TopBarButtons do if V.Name==T then V.Object.Visible=false end end end end return aw end end end local aa={ Window=nil, Theme=nil, Creator=a.load'd', LocalizationModule=a.load'e', NotificationModule=a.load'f', Themes=nil, Transparent=false, TransparencyValue=0.15, UIScale=1, ConfigManager=nil, Version="0.0.0", Services=a.load'k', OnThemeChangeFunction=nil, cloneref=nil, UIScaleObj=nil, CreateWindow=nil, CurrentInput=nil, } local af=(cloneref or clonereference or function(af) return af end) aa.cloneref=af local ai=af(game:GetService"HttpService") local ak=af(game:GetService"Players") local al=af(game:GetService"CoreGui") local am=af(game:GetService"RunService") local an=af(game:GetService"UserInputService") function aa.GenerateGUID() return ai:GenerateGUID(false) end local ao=aa.GenerateGUID() an.InputBegan:Connect(function(ap,aq) task.defer(function() if ap.UserInputType==Enum.UserInputType.MouseButton1 or ap.UserInputType==Enum.UserInputType.Touch then if aa.CurrentInput and aa.CurrentInput~=ao then return end aa.CurrentInput=ao end end) end) an.InputEnded:Connect(function(ap,aq) if ap.UserInputType==Enum.UserInputType.MouseButton1 or ap.UserInputType==Enum.UserInputType.Touch then if aa.CurrentInput and aa.CurrentInput~=ao then return end aa.CurrentInput=nil end end) local ap=ak.LocalPlayer or nil local aq=ai:JSONDecode(a.load'l') if aq then aa.Version=aq.version end local ar=a.load'p' local as=aa.Creator local at=as.New local au=a.load't' local av=protectgui or(syn and syn.protect_gui)or function()end local aw=gethui and gethui()or(al or ap:WaitForChild"PlayerGui") local ax=at("UIScale",{ Scale=aa.UIScale, }) aa.UIScaleObj=ax aa.ScreenGui=at("ScreenGui",{ Name="WindUI", Parent=aw, IgnoreGuiInset=true, ScreenInsets="None", DisplayOrder=-99999, },{ at("Folder",{ Name="Window", }), at("Folder",{ Name="KeySystem", }), at("Folder",{ Name="Popups", }), at("Folder",{ Name="ToolTips", }), }) aa.NotificationGui=at("ScreenGui",{ Name="WindUI/Notifications", Parent=aw, IgnoreGuiInset=true, }) aa.DropdownGui=at("ScreenGui",{ Name="WindUI/Dropdowns", Parent=aw, IgnoreGuiInset=true, }) aa.TooltipGui=at("ScreenGui",{ Name="WindUI/Tooltips", Parent=aw, IgnoreGuiInset=true, }) av(aa.ScreenGui) av(aa.NotificationGui) av(aa.DropdownGui) av(aa.TooltipGui) as.Init(aa) function aa.SetParent(ay,az) if aa.ScreenGui then aa.ScreenGui.Parent=az end if aa.NotificationGui then aa.NotificationGui.Parent=az end if aa.DropdownGui then aa.DropdownGui.Parent=az end if aa.TooltipGui then aa.TooltipGui.Parent=az end end math.clamp(aa.TransparencyValue,0,1) local ay=aa.NotificationModule.Init(aa.NotificationGui) function aa.Notify(az,aA) aA.Holder=ay.Frame aA.Window=aa.Window return aa.NotificationModule.New(aA) end function aa.SetNotificationLower(az,aA) ay.SetLower(aA) end function aa.SetFont(az,aA) as.UpdateFont(aA) end function aa.OnThemeChange(az,aA) aa.OnThemeChangeFunction=aA end function aa.AddTheme(az,aA) aa.Themes[aA.Name]=aA return aA end function aa.SetTheme(az,aA) if aa.Themes[aA]then aa.Theme=aa.Themes[aA] as.SetTheme(aa.Themes[aA]) if aa.OnThemeChangeFunction then aa.OnThemeChangeFunction(aA) end return aa.Themes[aA] end return nil end function aa.GetThemes(az) return aa.Themes end function aa.GetCurrentTheme(az) return aa.Theme.Name end function aa.GetTransparency(az) return aa.Transparent or false end function aa.GetWindowSize(az) return aa.Window.UIElements.Main.Size end function aa.Localization(az,aA) return aa.LocalizationModule:New(aA,as) end function aa.SetLanguage(az,aA) if as.Localization then return as.SetLanguage(aA) end return false end function aa.ToggleAcrylic(az,aA) if aa.Window and aa.Window.AcrylicPaint and aa.Window.AcrylicPaint.Model then aa.Window.Acrylic=aA aa.Window.AcrylicPaint.Model.Transparency=aA and 0.98 or 1 if aA then au.Enable() else au.Disable() end end end function aa.Gradient(az,aA,aB) local b={} local d={} for f,g in next,aA do local h=tonumber(f) if h then h=math.clamp(h/100,0,1) local i=g.Color if typeof(i)=="string"and string.sub(i,1,1)=="#"then i=Color3.fromHex(i) end local l=g.Transparency or 0 table.insert(b,ColorSequenceKeypoint.new(h,i)) table.insert(d,NumberSequenceKeypoint.new(h,l)) end end table.sort(b,function(f,g) return f.Time