diff --git a/dist/main.lua b/dist/main.lua index 5e2b722e..b4b3eff5 100644 --- a/dist/main.lua +++ b/dist/main.lua @@ -4,7 +4,7 @@ | |/ |/ / / _ \/ _ / /_/ // / |__/|__/_/_//_/\_,_/\____/___/ - v1.6.65 | 2026-07-01 | Roblox UI Library for scripts + v1.6.65 | 2026-07-11 | Roblox UI Library for scripts To view the source code, see the `src/` folder on the official GitHub repository. @@ -25,7 +25,7 @@ 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 a={cache={}::any}do do local function __modImpl() local b @@ -247,7 +247,7 @@ end) return r,m end -return d end function a.b() +return d end function a.a():typeof(__modImpl())local b=a.cache.a if not b then b={c=__modImpl()}a.cache.a=b end return b.c end end do local function __modImpl() local b=(cloneref or clonereference or function(b)return b end) @@ -472,7 +472,7 @@ end return g end -return d end function a.c() +return d end function a.b():typeof(__modImpl())local b=a.cache.b if not b then b={c=__modImpl()}a.cache.b=b end return b.c end end do local function __modImpl() return function(b) return{ @@ -602,7 +602,7 @@ LabelBackgroundTransparency=0.95, ViewportBackground="ElementBackground", ViewportBackgroundTransparency="ElementBackgroundTransparency", } -end end function a.d() +end end function a.c():typeof(__modImpl())local b=a.cache.c if not b then b={c=__modImpl()}a.cache.c=b end return b.c end end do local function __modImpl() local b=(cloneref or clonereference or function(b) return b @@ -614,7 +614,7 @@ 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= +local i=a.a()local j= d.Heartbeat @@ -622,7 +622,7 @@ 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' +m=a.b() else m=loadstring( game.HttpGet and game:HttpGet(l)or h:GetAsync(l) @@ -742,7 +742,7 @@ ThemeChangeCallbacks={}, function r.Init(u) p=u -r.ThemeFallbacks=a.load'c'(r) +r.ThemeFallbacks=a.c()(r) r.UIScale=u.UIScale @@ -1613,7 +1613,7 @@ end return nil,4 end -return r end function a.e() +return r end function a.d():typeof(__modImpl())local b=a.cache.d if not b then b={c=__modImpl()}a.cache.d=b end return b.c end end do local function __modImpl() local b={} @@ -1638,8 +1638,8 @@ end -return b end function a.f() -local b=a.load'd' +return b end function a.e():typeof(__modImpl())local b=a.cache.e if not b then b={c=__modImpl()}a.cache.e=b end return b.c end end do local function __modImpl() +local b=a.d() local d=b.New local e=b.Tween @@ -1958,7 +1958,7 @@ end return h end -return f end function a.g() +return f end function a.f():typeof(__modImpl())local b=a.cache.f if not b then b={c=__modImpl()}a.cache.f=b end return b.c end end do local function __modImpl() @@ -2241,7 +2241,7 @@ Copy=au, end -return X end function a.h() +return X end function a.g():typeof(__modImpl())local aa=a.cache.g if not aa then aa={c=__modImpl()}a.cache.g=aa end return aa.c end end do local function __modImpl() @@ -2327,7 +2327,7 @@ Copy=CopyLink, } end -return ac end function a.i() +return ac end function a.h():typeof(__modImpl())local aa=a.cache.h if not aa then aa={c=__modImpl()}a.cache.h=aa end return aa.c end end do local function __modImpl() @@ -2370,7 +2370,7 @@ Copy=CopyLink, } end -return aa end function a.j() +return aa end function a.i():typeof(__modImpl())local aa=a.cache.i if not aa then aa={c=__modImpl()}a.cache.i=aa end return aa.c end end do local function __modImpl() @@ -2432,7 +2432,7 @@ Copy=copyLink } end -return aa end function a.k() +return aa end function a.j():typeof(__modImpl())local aa=a.cache.j if not aa then aa={c=__modImpl()}a.cache.j=aa end return aa.c end end do local function __modImpl() @@ -2442,32 +2442,32 @@ Name="Platoboost", Icon="rbxassetid://75920162824531", Args={"ServiceId","Secret"}, -New=a.load'g'.New +New=a.g().New }, pandadevelopment={ Name="Panda Development", Icon="panda", Args={"ServiceId"}, -New=a.load'h'.New +New=a.h().New }, luarmor={ Name="Luarmor", Icon="rbxassetid://130918283130165", Args={"ScriptId","Discord"}, -New=a.load'i'.New +New=a.i().New }, junkiedevelopment={ Name="Junkie Development", Icon="rbxassetid://106310347705078", Args={"ServiceId","ApiKey","Provider"}, -New=a.load'j'.New +New=a.j().New }, -}end function a.l() +}end function a.k():typeof(__modImpl())local aa=a.cache.k if not aa then aa={c=__modImpl()}a.cache.k=aa end return aa.c end end do local function __modImpl() @@ -2502,11 +2502,11 @@ return[[ "concurrently": "^9.2.0" } } -]]end function a.m() +]]end function a.l():typeof(__modImpl())local aa=a.cache.l if not aa then aa={c=__modImpl()}a.cache.l=aa end return aa.c end end do local function __modImpl() local aa={} -local ab=a.load'd' +local ab=a.d() local ac=ab.New local ad=ab.Tween @@ -2649,11 +2649,11 @@ end) return ao end -return aa end function a.n() +return aa end function a.m():typeof(__modImpl())local aa=a.cache.m if not aa then aa={c=__modImpl()}a.cache.m=aa end return aa.c end end do local function __modImpl() local aa={} -local ab=a.load'd' +local ab=a.d() local ac=ab.New local ad= ab.Tween @@ -2774,9 +2774,9 @@ end return ar end -return aa end function a.o() +return aa end function a.n():typeof(__modImpl())local aa=a.cache.n if not aa then aa={c=__modImpl()}a.cache.n=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd' +local aa=a.d() local ab=aa.New local ac=aa.Tween @@ -2955,19 +2955,19 @@ end return aj end -return ad end function a.p() +return ad end function a.o():typeof(__modImpl())local aa=a.cache.o if not aa then aa={c=__modImpl()}a.cache.o=aa end return aa.c end end do local function __modImpl() local aa={} -local ab=a.load'd' +local ab=a.d() local ac=ab.New local ad=ab.Tween -local ae=a.load'm'.New -local af=a.load'n'.New +local ae=a.m().New +local af=a.n().New function aa.new(ag,ah,ai,aj) -local ak=a.load'o' +local ak=a.o() local al=ak.Create(true,"Popup",ag.Window,ag.WindUI,ag.WindUI.ScreenGui.KeySystem) local am={} @@ -3463,7 +3463,7 @@ aA.Position=UDim2.new(1,0,0.5,0) al:Open() end -return aa end function a.q() +return aa end function a.p():typeof(__modImpl())local aa=a.cache.p if not aa then aa={c=__modImpl()}a.cache.p=aa end return aa.c end end do local function __modImpl() @@ -3485,18 +3485,18 @@ local ab=aa(game:GetService"Workspace").CurrentCamera.ViewportSize.Y return map(ab,0,2560,8,56) end -return{viewportPointToWorld,getOffset}end function a.r() +return{viewportPointToWorld,getOffset}end function a.q():typeof(__modImpl())local aa=a.cache.q if not aa then aa={c=__modImpl()}a.cache.q=aa end return aa.c end end do local function __modImpl() local aa=(cloneref or clonereference or function(aa)return aa end) -local ab=a.load'd' +local ab=a.d() local ac=ab.New -local ad,ae=unpack(a.load'q') +local ad,ae=unpack(a.q()) local af=Instance.new("Folder",aa(game:GetService"Workspace").CurrentCamera) @@ -3632,11 +3632,11 @@ ah.Frame=ak ah.Model=aj return ah -end end function a.s() +end end function a.r():typeof(__modImpl())local aa=a.cache.r if not aa then aa={c=__modImpl()}a.cache.r=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd' -local ab=a.load'r' +local aa=a.d() +local ab=a.r() local ac=aa.New @@ -3756,7 +3756,7 @@ ae.SetVisibility=af.SetVisibility end return ae,af -end end function a.t() +end end function a.s():typeof(__modImpl())local aa=a.cache.s if not aa then aa={c=__modImpl()}a.cache.s=aa end return aa.c end end do local function __modImpl() @@ -3764,9 +3764,9 @@ local aa=(cloneref or clonereference or function(aa)return aa end) local ab={ -AcrylicBlur=a.load'r', +AcrylicBlur=a.r(), -AcrylicPaint=a.load's', +AcrylicPaint=a.s(), } function ab.init() @@ -3813,11 +3813,11 @@ registerDefaults() ab.Enable() end -return ab end function a.u() +return ab end function a.t():typeof(__modImpl())local aa=a.cache.t if not aa then aa={c=__modImpl()}a.cache.t=aa end return aa.c end end do local function __modImpl() local aa={} -local ab=a.load'd' +local ab=a.d() local ac=ab.New local ad= ab.Tween @@ -3834,7 +3834,7 @@ Buttons=ae.Buttons, IconSize=22, } -local ah=a.load'o' +local ah=a.o() local ai=ah.Create(true,"Popup",ae.WindUI.Window,ae.WindUI,af) local aj=200 @@ -3995,7 +3995,7 @@ PaddingBottom=UDim.new(0,16), }), }) -local as=a.load'm'.New +local as=a.m().New for at,au in next,ag.Buttons do as(au.Title,au.Icon,au.Callback,au.Variant,aq,ai) @@ -4007,7 +4007,7 @@ ai:Open() return ag end -return aa end function a.v() +return aa end function a.u():typeof(__modImpl())local aa=a.cache.u if not aa then aa={c=__modImpl()}a.cache.u=aa end return aa.c end end do local function __modImpl() return function(aa,ab) return{ Dark={ @@ -4387,11 +4387,11 @@ Button=aa:Gradient({ Icon=Color3.fromHex"#ffffff", }, } -end end function a.w() +end end function a.v():typeof(__modImpl())local aa=a.cache.v if not aa then aa={c=__modImpl()}a.cache.v=aa end return aa.c end end do local function __modImpl() local aa={} -local ab=a.load'd' +local ab=a.d() local ac=ab.New local ad= ab.Tween @@ -4478,7 +4478,7 @@ am, return an end -return aa end function a.x() +return aa end function a.w():typeof(__modImpl())local aa=a.cache.w if not aa then aa={c=__modImpl()}a.cache.w=aa end return aa.c end end do local function __modImpl() local aa={} @@ -4487,7 +4487,7 @@ return ab end local ac=ab(game:GetService"UserInputService") -local ad=a.load'd' +local ad=a.d() local ae=ad.New function aa.New(af,ag,ah,ai,aj) @@ -4627,11 +4627,11 @@ UpdateVisuals() return ak end -return aa end function a.y() +return aa end function a.x():typeof(__modImpl())local aa=a.cache.x if not aa then aa={c=__modImpl()}a.cache.x=aa end return aa.c end end do local function __modImpl() local aa={} -local ab=a.load'd' +local ab=a.d() local ac=ab.New local ad=ab.Tween @@ -4795,7 +4795,7 @@ end) return ah end -return aa end function a.z() +return aa end function a.y():typeof(__modImpl())local aa=a.cache.y if not aa then aa={c=__modImpl()}a.cache.y=aa end return aa.c end end do local function __modImpl() local aa=(cloneref or clonereference or function(aa)return aa end) @@ -5176,10 +5176,10 @@ function ae.GetConfig(af,ag) return ae.Configs[ag] end -return ae end function a.A() +return ae end function a.z():typeof(__modImpl())local aa=a.cache.z if not aa then aa={c=__modImpl()}a.cache.z=aa end return aa.c end end do local function __modImpl() local aa={} -local ab=a.load'd' +local ab=a.d() local ac=ab.New local ad=ab.Tween @@ -5461,10 +5461,10 @@ end -return aa end function a.B() +return aa end function a.A():typeof(__modImpl())local aa=a.cache.A if not aa then aa={c=__modImpl()}a.cache.A=aa end return aa.c end end do local function __modImpl() local aa={} -local ab=a.load'd' +local ab=a.d() local ac=ab.New local ad=ab.Tween @@ -5623,9 +5623,9 @@ end -return aa end function a.C() +return aa end function a.B():typeof(__modImpl())local aa=a.cache.B if not aa then aa={c=__modImpl()}a.cache.B=aa end return aa.c end end do local function __modImpl() game:GetService"ReplicatedStorage" -local aa=a.load'd' +local aa=a.d() local ab=aa.New local ac=aa.NewRoundFrame local ad=aa.Tween @@ -5636,7 +5636,7 @@ end) ae(game:GetService"UserInputService") -local af=a.load'y' +local af=a.y() local function Color3ToHSB(ag) local ah,ai,aj=ag.R,ag.G,ag.B @@ -6340,14 +6340,14 @@ end return ah -end end function a.D() +end end function a.C():typeof(__modImpl())local aa=a.cache.C if not aa then aa={c=__modImpl()}a.cache.C=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd' +local aa=a.d() local ab=aa.New local ac={} -local ad=a.load'm'.New +local ad=a.m().New function ac.New(ae,af) af.Hover=false @@ -6362,7 +6362,7 @@ Desc=af.Desc or nil, Locked=af.Locked or false, } -local ah=a.load'C'(af) +local ah=a.C()(af) ag.ParagraphFrame=ah if af.Buttons and#af.Buttons>0 then @@ -6397,9 +6397,9 @@ end return ag.__type,ag end -return ac end function a.E() +return ac end function a.D():typeof(__modImpl())local aa=a.cache.D if not aa then aa={c=__modImpl()}a.cache.D=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd'local ab= +local aa=a.d()local ab= aa.New local ac={} @@ -6423,7 +6423,7 @@ UIElements={}, local ag=true -af.ButtonFrame=a.load'C'{ +af.ButtonFrame=a.C(){ Title=af.Title, Desc=af.Desc, Parent=ae.Parent, @@ -6506,11 +6506,11 @@ end) return af.__type,af end -return ac end function a.F() +return ac end function a.E():typeof(__modImpl())local aa=a.cache.E if not aa then aa={c=__modImpl()}a.cache.E=aa end return aa.c end end do local function __modImpl() local aa={} -local ab=a.load'd' +local ab=a.d() local ac=ab.New local ad=ab.Tween @@ -6914,11 +6914,11 @@ end return ap,am end -return aa end function a.G() +return aa end function a.F():typeof(__modImpl())local aa=a.cache.F if not aa then aa={c=__modImpl()}a.cache.F=aa end return aa.c end end do local function __modImpl() local aa={} -local ab=a.load'd'local ac= +local ab=a.d()local ac= ab.New local ad=ab.Tween @@ -7015,13 +7015,13 @@ return an,ak end -return aa end function a.H() -local aa=a.load'd'local ab= +return aa end function a.G():typeof(__modImpl())local aa=a.cache.G if not aa then aa={c=__modImpl()}a.cache.G=aa end return aa.c end end do local function __modImpl() +local aa=a.d()local ab= aa.New local ac= aa.Tween -local ad=a.load'F'.New -local ae=a.load'G'.New +local ad=a.F().New +local ae=a.G().New local af={} @@ -7039,7 +7039,7 @@ Type=ah.Type or"Toggle", Callback=ah.Callback or function()end, UIElements={}, } -ai.ToggleFrame=a.load'C'{ +ai.ToggleFrame=a.C(){ Title=ai.Title, Desc=ai.Desc, @@ -7158,7 +7158,187 @@ end return ai.__type,ai end -return af end function a.I() +return af end function a.H():typeof(__modImpl())local aa=a.cache.H if not aa then aa={c=__modImpl()}a.cache.H=aa end return aa.c end end do local function __modImpl() + +local aa=game:GetService"TweenService" + +local ac=a.d() +local ad=ac.New +local ae=ac.NewRoundFrame + +local af={} + +local ag=TweenInfo.new(0.28,Enum.EasingStyle.Quint,Enum.EasingDirection.Out) + +function af.New(ah,ai) +print"[TabBox DEBUG] guncel dosya calisiyor - v3" +ai.ParentConfig=ai +ai.TextOffset=0 + +local aj={ +__type="TabBox", +} + +local ak=a.C()(ai) + +ak.UIElements.Main.ImageTransparency=1 + +local al=ai.Window.ElementConfig.UICorner + +local am=ad("Frame",{ +Size=UDim2.new(1,0,0,34), +BackgroundTransparency=1, +Parent=ak.UIElements.Container, +},{ +ad("UIListLayout",{ +FillDirection="Horizontal", +Padding=UDim.new(0,8), +SortOrder="LayoutOrder", +}), +}) + +local an={} + +local function AddIcon(ao,ap) +if not ap then +return +end + +local aq=typeof(ap)=="string"and ap:match"^rbxassetid://"~=nil + +if aq then +ad("ImageLabel",{ +Image=ap, +BackgroundTransparency=1, +Size=UDim2.new(0,16,0,16), +LayoutOrder=1, +Parent=ao, +ThemeTag={ +ImageColor3="Text", +}, +}) +else +local ar=ac.Image(ap,ap,0,ai.Window.Folder,"Button",true,false) +ar.Size=UDim2.new(0,16,0,16) +ar.LayoutOrder=1 +ar.Parent=ao +end +end + +local function CreateBox(ao,ap,aq) +local ar=ae(al,"Squircle",{ +Size=UDim2.new(0.5,-4,0,34), +LayoutOrder=ao, +ClipsDescendants=true, +ThemeTag={ +ImageColor3="ElementBackground", +ImageTransparency="ElementBackgroundTransparency", +}, +Parent=am, +},{ +ad("UIPadding",{ +PaddingLeft=UDim.new(0,8), +PaddingRight=UDim.new(0,8), +}), +ad("UIListLayout",{ +FillDirection="Horizontal", +VerticalAlignment="Center", +Padding=UDim.new(0,6), +SortOrder="LayoutOrder", +}), +},true,true) + +local as=ae(al,"Squircle",{ +Size=UDim2.new(1,0,1,0), +ImageColor3=Color3.new(1,1,1), +ImageTransparency=1, +Active=false, +Parent=ar, +},{},nil,true) + +AddIcon(ar,aq) + +ad("TextLabel",{ +Text=ap, +BackgroundTransparency=1, +FontFace=Font.new(ac.Font,Enum.FontWeight.Medium), +TextSize=13, +AutomaticSize="X", +Size=UDim2.new(0,0,1,0), +LayoutOrder=2, +ThemeTag={ +TextColor3="Text", +}, +Parent=ar, +}) + +local at=ad("Frame",{ +Size=UDim2.new(1,0,0,0), +AutomaticSize="Y", +BackgroundTransparency=1, +Visible=false, +LayoutOrder=ao, +Parent=ak.UIElements.Container, +},{ +ad("UIListLayout",{ +Padding=UDim.new(0,8), +FillDirection="Vertical", +SortOrder="LayoutOrder", +}), +}) + +an[ao]={Button=ar,Overlay=as,Content=at} + +local au={} +for av,aw in ipairs(ar:GetChildren())do +table.insert(au,aw.ClassName..":"..aw.Name) +end +print("[TabBox DEBUG] Box#"..ao.." ("..ap..") children -> "..table.concat(au,", ")) +print("[TabBox DEBUG] Content#"..ao.." Visible="..tostring(at.Visible).." Parent="..tostring(at.Parent)) + +return ar,at +end + +local ao + +local function SetActive(ap) +if ao==ap then +return +end +ao=ap + +for aq,ar in next,an do +local as=(aq==ap) + +aa:Create(ar.Overlay,ag,{ +ImageTransparency=as and 0.85 or 1, +}):Play() + +ar.Content.Visible=as +end +end + +local ap,aq=CreateBox(1,ai.LeftTitle or"Left",ai.LeftIcon) +local ar,as=CreateBox(2,ai.RightTitle or"Right",ai.RightIcon) + +print("[TabBox DEBUG] LeftContent="..tostring(aq).." RightContent="..tostring(as)) + +ac.AddSignal(ap.MouseButton1Click,function() +SetActive(1) +end) + +ac.AddSignal(ar.MouseButton1Click,function() +SetActive(2) +end) + +aj.Left=aq +aj.Right=as + +return aj.__type,aj +end + +return af end function a.I():typeof(__modImpl())local aa=a.cache.I if not aa then aa={c=__modImpl()}a.cache.I=aa end return aa.c end end do local function __modImpl() + local aa=(cloneref or clonereference or function(aa) return aa @@ -7167,7 +7347,7 @@ end) local ac=aa(game:GetService"UserInputService") local ad=aa(game:GetService"RunService") -local ae=a.load'd' +local ae=a.d() local af=ae.New local ag=ae.Tween @@ -7266,7 +7446,7 @@ av.Size=UDim2.new(0,al.IconSize,0,al.IconSize) aw=aw+al.IconSize-2 end end -al.SliderFrame=a.load'C'{ +al.SliderFrame=a.C(){ Title=al.Title, Desc=al.Desc, Parent=ak.Parent, @@ -7360,7 +7540,7 @@ Visible=al.IsTextbox, local ax if al.IsTooltip then -ax=a.load'B'.New( +ax=a.B().New( ap, al.UIElements.SliderIcon.Frame.Thumb, true, @@ -7583,9 +7763,9 @@ end) return al.__type,al end -return ah end function a.J() +return ah end function a.J():typeof(__modImpl())local aa=a.cache.J if not aa then aa={c=__modImpl()}a.cache.J=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd' +local aa=a.d() local ac=aa.New local ad=aa.Tween @@ -7689,7 +7869,7 @@ end return tostring(math.floor(ar+0.5)).."%" end -ao.ProgressBarFrame=a.load'C'{ +ao.ProgressBarFrame=a.C(){ Title=ao.Title, Desc=ao.Desc, Parent=ag.Parent, @@ -7862,7 +8042,7 @@ Update(ao.Value.Default,true) return ao.__type,ao end -return ae end function a.K() +return ae end function a.K():typeof(__modImpl())local aa=a.cache.K if not aa then aa={c=__modImpl()}a.cache.K=aa end return aa.c end end do local function __modImpl() local aa=(cloneref or clonereference or function(aa) return aa @@ -7870,7 +8050,7 @@ end) local ac=aa(game:GetService"UserInputService") -local ad=a.load'd' +local ad=a.d() local ae=ad.New local af= ad.Tween @@ -7879,7 +8059,7 @@ UICorner=6, UIPadding=8, } -local ah=a.load'w'.New +local ah=a.w().New function ag.New(ai,aj) local function NormalizeKeyCode(ak) @@ -7915,7 +8095,7 @@ table.insert(al,Enum.KeyCode[NormalizeKeyCode"Escape"]) local am=true -ak.KeybindFrame=a.load'C'{ +ak.KeybindFrame=a.C(){ Title=ak.Title, Desc=ak.Desc, Parent=aj.Parent, @@ -8062,19 +8242,19 @@ end) return ak.__type,ak end -return ag end function a.L() +return ag end function a.L():typeof(__modImpl())local aa=a.cache.L if not aa then aa={c=__modImpl()}a.cache.L=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd'local ac= +local aa=a.d()local ac= aa.New local ad= aa.Tween local ae={ UICorner=8, UIPadding=8, -}local af=a.load'm' +}local af=a.m() .New -local ag=a.load'n'.New +local ag=a.n().New function ae.New(ah,ai) local aj={ @@ -8096,7 +8276,7 @@ Width=150, local ak=true -aj.InputFrame=a.load'C'{ +aj.InputFrame=a.C(){ Title=aj.Title, Desc=aj.Desc, Parent=ai.Parent, @@ -8172,9 +8352,9 @@ end return aj.__type,aj end -return ae end function a.M() +return ae end function a.M():typeof(__modImpl())local aa=a.cache.M if not aa then aa={c=__modImpl()}a.cache.M=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd' +local aa=a.d() local ae=aa.New local af={} @@ -8200,7 +8380,7 @@ ai return"Divider",{__type="Divider",ElementFrame=aj} end -return af end function a.N() +return af end function a.N():typeof(__modImpl())local aa=a.cache.N if not aa then aa={c=__modImpl()}a.cache.N=aa end return aa.c end end do local function __modImpl() local aa={} local ae=(cloneref or clonereference or function(ae) @@ -8213,9 +8393,9 @@ local ah=ae(game:GetService"Workspace").CurrentCamera local ai= workspace.CurrentCamera -local aj=a.load'n'.New +local aj=a.n().New -local ak=a.load'd' +local ak=a.d() local al=ak.New local am=ak.Tween @@ -8749,7 +8929,7 @@ end RecalculateCanvasSize() RecalculateListSize() -else a.load'M' +else a.N() :New{Parent=ap.UIElements.Menu.Frame.ScrollingFrame} end end @@ -8882,7 +9062,7 @@ UpdatePosition return as end -return aa end function a.O() +return aa end function a.O():typeof(__modImpl())local aa=a.cache.O if not aa then aa={c=__modImpl()}a.cache.O=aa end return aa.c end end do local function __modImpl() local aa=(cloneref or clonereference or function(aa) return aa @@ -8892,13 +9072,13 @@ aa(game:GetService"UserInputService") aa(game:GetService"Players").LocalPlayer:GetMouse()local ae= aa(game:GetService"Workspace").CurrentCamera -local af=a.load'd' +local af=a.d() local ag=af.New local ah= af.Tween -local ai=a.load'w'.New local aj=a.load'n' +local ai=a.w().New local aj=a.n() .New -local ak=a.load'N'.New local al= +local ak=a.O().New local al= workspace.CurrentCamera @@ -8942,7 +9122,7 @@ if ap.Values and typeof(ap.Value)=="number"then ap.Value=ap.Values[ap.Value] end -ap.DropdownFrame=a.load'C'{ +ap.DropdownFrame=a.C(){ Title=ap.Title, Desc=ap.Desc, Parent=ao.Parent, @@ -9015,7 +9195,7 @@ end return ap.__type,ap end -return am end function a.P() +return am end function a.P():typeof(__modImpl())local aa=a.cache.P if not aa then aa={c=__modImpl()}a.cache.P=aa end return aa.c end end do local function __modImpl() @@ -9264,15 +9444,15 @@ end return table.concat(at) end -return aa end function a.Q() +return aa end function a.Q():typeof(__modImpl())local aa=a.cache.Q if not aa then aa={c=__modImpl()}a.cache.Q=aa end return aa.c end end do local function __modImpl() local aa={} -local af=a.load'd' +local af=a.d() local ag=af.New local ai=af.Tween -local ak=a.load'P' +local ak=a.Q() function aa.New(al,am,an,ao,ap) local aq={ @@ -9503,13 +9683,13 @@ end return aq end -return aa end function a.R() +return aa end function a.R():typeof(__modImpl())local aa=a.cache.R if not aa then aa={c=__modImpl()}a.cache.R=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd'local af= +local aa=a.d()local af= aa.New -local ag=a.load'Q' +local ag=a.R() local ai={} @@ -9605,9 +9785,9 @@ am.ElementFrame=ao.CodeFrame return am.__type,am end -return ai end function a.S() +return ai end function a.S():typeof(__modImpl())local aa=a.cache.S if not aa then aa={c=__modImpl()}a.cache.S=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd' +local aa=a.d() local af=aa.New local ag= aa.Tween @@ -9624,8 +9804,8 @@ al.RenderStepped local ao=am.LocalPlayer local ap=ao:GetMouse() -local aq=a.load'm'.New -local ar=a.load'n'.New +local aq=a.m().New +local ar=a.n().New local as={ UICorner=9, @@ -9659,7 +9839,7 @@ end az:SetHSVFromRGB(az.Default) -local b=a.load'o' +local b=a.o() local d=b.Create(nil,"Dialog",aw,ax,aw.UIElements.Main.Main) az.ColorpickerFrame=d @@ -10402,7 +10582,7 @@ local ax=true -aw.ColorpickerFrame=a.load'C'{ +aw.ColorpickerFrame=a.C(){ Title=aw.Title, Desc=aw.Desc, Parent=av.Parent, @@ -10480,9 +10660,9 @@ end) return aw.__type,aw end -return as end function a.T() +return as end function a.T():typeof(__modImpl())local aa=a.cache.T if not aa then aa={c=__modImpl()}a.cache.T=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd' +local aa=a.d() local af=aa.New local ai=aa.Tween @@ -10859,9 +11039,9 @@ end) return an.__type,an end -return ak end function a.U() +return ak end function a.U():typeof(__modImpl())local aa=a.cache.U if not aa then aa={c=__modImpl()}a.cache.U=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd' +local aa=a.d() local af=aa.New local ai={} @@ -10876,8 +11056,8 @@ BackgroundTransparency=1, return"Space",{__type="Space",ElementFrame=am} end -return ai end function a.V() -local aa=a.load'd' +return ai end function a.V():typeof(__modImpl())local aa=a.cache.V if not aa then aa={c=__modImpl()}a.cache.V=aa end return aa.c end end do local function __modImpl() +local aa=a.d() local af=aa.New local ai={} @@ -10945,8 +11125,8 @@ end return am.__type,am end -return ai end function a.W() -local aa=a.load'd' +return ai end function a.W():typeof(__modImpl())local aa=a.cache.W if not aa then aa={c=__modImpl()}a.cache.W=aa end return aa.c end end do local function __modImpl() +local aa=a.d() local af=aa.New local ai={} @@ -11030,8 +11210,8 @@ al.Tab return am.__type,am end -return ai end function a.X() -local aa=a.load'd' +return ai end function a.X():typeof(__modImpl())local aa=a.cache.X if not aa then aa={c=__modImpl()}a.cache.X=aa end return aa.c end end do local function __modImpl() +local aa=a.d() local af=aa.New local ai={} @@ -11130,9 +11310,9 @@ end return am.__type,am end -return ai end function a.Y() +return ai end function a.Y():typeof(__modImpl())local aa=a.cache.Y if not aa then aa={c=__modImpl()}a.cache.Y=aa end return aa.c end end do local function __modImpl() -local aa=a.load'd' +local aa=a.d() local af=aa.New local ai={} @@ -11217,14 +11397,14 @@ al.Tab return am.__type,am end -return ai end function a.Z() +return ai end function a.Z():typeof(__modImpl())local aa=a.cache.Z if not aa then aa={c=__modImpl()}a.cache.Z=aa end return aa.c end end do local function __modImpl() local aa=(cloneref or clonereference or function(aa) return aa end) local af=aa(game:GetService"UserInputService") -local ai=a.load'd' +local ai=a.d() local ak=ai.New local al={} @@ -11453,28 +11633,29 @@ ao.Main=at return ao.__type,ao end -return al end function a._() +return al end function a._():typeof(__modImpl())local aa=a.cache._ if not aa then aa={c=__modImpl()}a.cache._=aa end return aa.c end end do local function __modImpl() 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', +Paragraph=a.D(), +Button=a.E(), +Toggle=a.H(), +TabBox=a.I(), +Slider=a.J(), +ProgressBar=a.K(), +Keybind=a.L(), +Input=a.M(), +Dropdown=a.P(), +Code=a.S(), +Colorpicker=a.T(), +Section=a.U(), +Divider=a.N(), +Space=a.V(), +Image=a.W(), +Group=a.X(), +HStack=a.Y(), +VStack=a.Z(), +Viewport=a._(), }, Load=function(aa,af,ai,ak,al,am,an,ao,ap) @@ -11603,7 +11784,7 @@ end end end end, -}end function a.aa() +}end function a.aa():typeof(__modImpl())local aa=a.cache.aa if not aa then aa={c=__modImpl()}a.cache.aa=aa end return aa.c end end do local function __modImpl() local aa=(cloneref or clonereference or function(aa) return aa @@ -11614,11 +11795,11 @@ local af=game:GetService"Players" aa(game:GetService"UserInputService") local ai=af.LocalPlayer:GetMouse() -local ak=a.load'd' +local ak=a.d() local al=ak.New -local am=a.load'B'.New -local an=a.load'x'.New +local am=a.B().New +local an=a.x().New @@ -12057,7 +12238,7 @@ end -local aA=a.load'_' +local aA=a.aa() aA.Load( ar, @@ -12251,16 +12432,16 @@ ao.OnChangeFunc(aq) end end -return ao end function a.ab() +return ao end function a.ab():typeof(__modImpl())local aa=a.cache.ab if not aa then aa={c=__modImpl()}a.cache.ab=aa end return aa.c end end do local function __modImpl() local aa={} -local af=a.load'd' +local af=a.d() local ai=af.New local ak=af.Tween -local al=a.load'aa' +local al=a.ab() function aa.New(am,an,ao,ap,aq) local ar={ @@ -12429,7 +12610,7 @@ return ar end -return aa end function a.ac() +return aa end function a.ac():typeof(__modImpl())local aa=a.cache.ac if not aa then aa={c=__modImpl()}a.cache.ac=aa end return aa.c end end do local function __modImpl() return{ Tab="table-of-contents", Paragraph="type", @@ -12441,7 +12622,7 @@ Input="text-cursor-input", Dropdown="chevrons-up-down", Code="terminal", Colorpicker="palette", -}end function a.ad() +}end function a.ad():typeof(__modImpl())local aa=a.cache.ad if not aa then aa={c=__modImpl()}a.cache.ad=aa end return aa.c end end do local function __modImpl() local aa=(cloneref or clonereference or function(aa) return aa end) @@ -12453,7 +12634,7 @@ Margin=8, Padding=9, } -local ai=a.load'd' +local ai=a.d() local ak=ai.New local al=ai.Tween @@ -12465,7 +12646,7 @@ Radius=22, Width=400, MaxHeight=380, -Icons=a.load'ac', +Icons=a.ad(), } local aq=ak("TextBox",{ @@ -12980,7 +13161,7 @@ end) return ap end -return af end function a.ae() +return af end function a.ae():typeof(__modImpl())local aa=a.cache.ae if not aa then aa={c=__modImpl()}a.cache.ae=aa end return aa.c end end do local function __modImpl() @@ -12994,19 +13175,19 @@ local ak=aa(game:GetService"Players") local al=workspace.CurrentCamera -local am=a.load't' +local am=a.t() -local an=a.load'd' +local an=a.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 aq=a.w().New +local ar=a.m().New +local as=a.x().New +local at=a.y() -local au=a.load'z' +local au=a.z() @@ -14092,7 +14273,7 @@ end -aw.OpenButtonMain=a.load'A'.New(aw) +aw.OpenButtonMain=a.A().New(aw) task.spawn(function() if aw.Icon then @@ -14656,8 +14837,8 @@ 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 C=a.ab() +local F=a.ac() local G=C.Init(aw,av.WindUI,av.WindUI.TooltipGui) G:OnChange(function(H) aw.CurrentTab=H @@ -14731,7 +14912,7 @@ J, return L end -local H=a.load'o' +local H=a.o() function aw.Dialog(J,L) local M={ Title=L.Title or"Dialog", @@ -15114,7 +15295,7 @@ end) if not aw.HideSearchBar then -local Q=a.load'ad' +local Q=a.ae() local R=false @@ -15203,14 +15384,14 @@ end return aw -end end end +end end function a.af():typeof(__modImpl())local aa=a.cache.af if not aa then aa={c=__modImpl()}a.cache.af=aa end return aa.c end end end local aa={ Window=nil, Theme=nil, -Creator=a.load'd', -LocalizationModule=a.load'e', -NotificationModule=a.load'f', +Creator=a.d(), +LocalizationModule=a.e(), +NotificationModule=a.f(), Themes=nil, Transparent=false, @@ -15221,7 +15402,7 @@ UIScale=1, ConfigManager=nil, Version="0.0.0", -Services=a.load'k', +Services=a.k(), OnThemeChangeFunction=nil, @@ -15283,12 +15464,12 @@ end) local ap=ak.LocalPlayer or nil -local aq=ai:JSONDecode(a.load'l') +local aq=ai:JSONDecode(a.l()) if aq then aa.Version=aq.version end -local ar=a.load'p' +local ar=a.p() local as=aa.Creator @@ -15297,7 +15478,7 @@ local at=as.New -local au=a.load't' +local au=a.t() local av=protectgui or(syn and syn.protect_gui)or function()end @@ -15499,10 +15680,10 @@ end function aa.Popup(az,aA) aA.WindUI=aa -return a.load'u'.new(aA,aa.ScreenGui.Popups) +return a.u().new(aA,aa.ScreenGui.Popups) end -aa.Themes=a.load'v'(aa,as) +aa.Themes=a.v()(aa,as) as.Themes=aa.Themes @@ -15510,7 +15691,7 @@ aa:SetTheme"Dark" aa:SetLanguage(as.Language) function aa.CreateWindow(az,aA) -local aB=a.load'ae' +local aB=a.af() if not am:IsStudio()and writefile then if not isfolder"WindUI"then diff --git a/package-lock.json b/package-lock.json index 18ef15a1..dabb8b72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "windui", - "version": "1.6.64", + "version": "1.6.65", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windui", - "version": "1.6.64", + "version": "1.6.65", "license": "MIT", "devDependencies": { "chokidar-cli": "^3.0.0", diff --git a/src/elements/Init.lua b/src/elements/Init.lua index 0eb59c74..58ffce31 100644 --- a/src/elements/Init.lua +++ b/src/elements/Init.lua @@ -3,6 +3,7 @@ return { Paragraph = require("./Paragraph"), Button = require("./Button"), Toggle = require("./Toggle"), + TabBox = require("./TabBox"), Slider = require("./Slider"), ProgressBar = require("./ProgressBar"), Keybind = require("./Keybind"), diff --git a/src/elements/TabBox.lua b/src/elements/TabBox.lua new file mode 100644 index 00000000..036aa886 --- /dev/null +++ b/src/elements/TabBox.lua @@ -0,0 +1,179 @@ +local TweenService = game:GetService("TweenService") + +local Creator = require("../modules/Creator") +local New = Creator.New +local NewRoundFrame = Creator.NewRoundFrame + +local Element = {} + +local FadeInfo = TweenInfo.new(0.28, Enum.EasingStyle.Quint, Enum.EasingDirection.Out) + +function Element:New(ElementConfig) + print("[TabBox DEBUG] guncel dosya calisiyor - v3") + ElementConfig.ParentConfig = ElementConfig + ElementConfig.TextOffset = 0 + + local TabBoxModule = { + __type = "TabBox", + } + + local TabBoxFrame = require("../components/window/Element")(ElementConfig) + + TabBoxFrame.UIElements.Main.ImageTransparency = 1 + + local UICorner = ElementConfig.Window.ElementConfig.UICorner + + local BoxesHolder = New("Frame", { + Size = UDim2.new(1, 0, 0, 34), + BackgroundTransparency = 1, + Parent = TabBoxFrame.UIElements.Container, + }, { + New("UIListLayout", { + FillDirection = "Horizontal", + Padding = UDim.new(0, 8), + SortOrder = "LayoutOrder", + }), + }) + + local Boxes = {} + + local function AddIcon(Parent, Icon) + if not Icon then + return + end + + local IsAssetId = typeof(Icon) == "string" and Icon:match("^rbxassetid://") ~= nil + + if IsAssetId then + New("ImageLabel", { + Image = Icon, + BackgroundTransparency = 1, + Size = UDim2.new(0, 16, 0, 16), + LayoutOrder = 1, + Parent = Parent, + ThemeTag = { + ImageColor3 = "Text", + }, + }) + else + local IconObject = Creator.Image(Icon, Icon, 0, ElementConfig.Window.Folder, "Button", true, false) + IconObject.Size = UDim2.new(0, 16, 0, 16) + IconObject.LayoutOrder = 1 + IconObject.Parent = Parent + end + end + + local function CreateBox(Index, Title, Icon) + local Box = NewRoundFrame(UICorner, "Squircle", { + Size = UDim2.new(0.5, -4, 0, 34), + LayoutOrder = Index, + ClipsDescendants = true, + ThemeTag = { + ImageColor3 = "ElementBackground", + ImageTransparency = "ElementBackgroundTransparency", + }, + Parent = BoxesHolder, + }, { + New("UIPadding", { + PaddingLeft = UDim.new(0, 8), + PaddingRight = UDim.new(0, 8), + }), + New("UIListLayout", { + FillDirection = "Horizontal", + VerticalAlignment = "Center", + Padding = UDim.new(0, 6), + SortOrder = "LayoutOrder", + }), + }, true, true) + + local Overlay = NewRoundFrame(UICorner, "Squircle", { + Size = UDim2.new(1, 0, 1, 0), + ImageColor3 = Color3.new(1, 1, 1), + ImageTransparency = 1, + Active = false, + Parent = Box, + }, {}, nil, true) + + AddIcon(Box, Icon) + + New("TextLabel", { + Text = Title, + BackgroundTransparency = 1, + FontFace = Font.new(Creator.Font, Enum.FontWeight.Medium), + TextSize = 13, + AutomaticSize = "X", + Size = UDim2.new(0, 0, 1, 0), + LayoutOrder = 2, + ThemeTag = { + TextColor3 = "Text", + }, + Parent = Box, + }) + + local Content = New("Frame", { + Size = UDim2.new(1, 0, 0, 0), + AutomaticSize = "Y", + BackgroundTransparency = 1, + Visible = false, + LayoutOrder = Index, + Parent = TabBoxFrame.UIElements.Container, + }, { + New("UIListLayout", { + Padding = UDim.new(0, 8), + FillDirection = "Vertical", + SortOrder = "LayoutOrder", + }), + }) + + Boxes[Index] = { Button = Box, Overlay = Overlay, Content = Content } + + local childNames = {} + for _, child in ipairs(Box:GetChildren()) do + table.insert(childNames, child.ClassName .. ":" .. child.Name) + end + print("[TabBox DEBUG] Box#" .. Index .. " (" .. Title .. ") children -> " .. table.concat(childNames, ", ")) + print("[TabBox DEBUG] Content#" .. Index .. " Visible=" .. tostring(Content.Visible) .. " Parent=" .. tostring(Content.Parent)) + + return Box, Content + end + + local ActiveIndex = nil + + local function SetActive(Index) + if ActiveIndex == Index then + return + end + ActiveIndex = Index + + for i, Data in next, Boxes do + local IsActive = (i == Index) + + TweenService:Create(Data.Overlay, FadeInfo, { + ImageTransparency = IsActive and 0.85 or 1, + }):Play() + + Data.Content.Visible = IsActive + end + end + + local LeftButton, LeftContent = CreateBox(1, ElementConfig.LeftTitle or "Left", ElementConfig.LeftIcon) + local RightButton, RightContent = CreateBox(2, ElementConfig.RightTitle or "Right", ElementConfig.RightIcon) + + print("[TabBox DEBUG] LeftContent=" .. tostring(LeftContent) .. " RightContent=" .. tostring(RightContent)) + + Creator.AddSignal(LeftButton.MouseButton1Click, function() + SetActive(1) + end) + + Creator.AddSignal(RightButton.MouseButton1Click, function() + SetActive(2) + end) + + TabBoxModule.Left = LeftContent + TabBoxModule.Right = RightContent + + return TabBoxModule.__type, TabBoxModule +end + +return Element +