ImageLabel.defaultProps={BackgroundTransparency=1,BorderSizePixel=0,Size=UDim2.new(1,0,1,0);Image=""}function ImageLabel.render(J)local k=Support.CloneTable(J.props)local d=J.state if k.AspectRatio then local J=new("\085\073\065\115\112\101\099\116\082\097\116\105\111\067\111\110\115\116\114\097\105\110\116",{AspectRatio=k.AspectRatio})k[Roact.Children]=Support.Merge({AspectRatio=J},k[Roact.Children]or{})end if k.Layout=="\076\105\115\116"then local d=new("\085\073\076\105\115\116\076\097\121\111\117\116",{FillDirection=k.LayoutDirection;Padding=k.LayoutPadding,HorizontalAlignment=k.HorizontalAlignment,VerticalAlignment=k.VerticalAlignment,SortOrder=k.SortOrder or"\076\097\121\111\117\116\079\114\100\101\114";[Roact.Ref]=function(k)J:UpdateContentSize(k)end;[Roact.Change.AbsoluteContentSize]=function(k)J:UpdateContentSize(k)end})k.Size=J:GetSize()k[Roact.Children]=Support.Merge({Layout=d},k[Roact.Children])end if type(k.ImageColor)=="\115\116\114\105\110\103"then local J,d,n=(k.ImageColor:lower()):match("\035\063\040\046\046\041\040\046\046\041\040\046\046\041")k.ImageColor3=Color3.fromRGB(tonumber(J,16),tonumber(d,16),tonumber(n,16))end k.AspectRatio=nil k.Layout=nil k.LayoutDirection=nil k.LayoutPadding=nil k.HorizontalAlignment=nil k.VerticalAlignment=nil k.HorizontalPadding=nil k.VerticalPadding=nil k.SortOrder=nil k.Width=nil k.Height=nil k.ImageColor=nil return new("\073\109\097\103\101\076\097\098\101\108",k)end function ImageLabel.GetSize(k,J)local d=k.props local n=d.Size=="\087\082\065\080\095\067\079\078\084\069\078\084"or d.Width=="\087\082\065\080\095\067\079\078\084\069\078\084"local A=d.Size=="\087\082\065\080\095\067\079\078\084\069\078\084"or d.Height=="\087\082\065\080\095\067\079\078\084\069\078\084"local Q=n or A local u=UDim2.new(0,d.HorizontalPadding or 0,0,d.VerticalPadding or 0)return u+UDim2.new((J and n)and UDim.new(0,J.X)or typeof(d.Width)=="\085\068\105\109"and d.Width or d.Size.X,(J and A)and UDim.new(0,J.Y)or typeof(d.Height)=="\085\068\105\109"and d.Height or d.Size.Y)end function ImageLabel.UpdateContentSize(k,J)if not(J and J.Parent)then return end J.Parent.Size=k:GetSize(J.AbsoluteContentSize)end return ImageLabel

ImageLabel.defaultProps = {
    BackgroundTransparency = 1,
    BorderSizePixel = 0,
    Size = UDim2.new(1, 0, 1, 0),
    Image = ''
}

function ImageLabel:render()
    local props = Support.CloneTable(self.props)
    local state = self.state

    -- Include aspect ratio constraint if specified
    if props.AspectRatio then
        local Constraint = new('UIAspectRatioConstraint', {
            AspectRatio = props.AspectRatio
        })

        -- Insert constraint into children
        props[Roact.Children] = Support.Merge(
            { AspectRatio = Constraint },
            props[Roact.Children] or {}
        )
    end

    -- Include list layout if specified
    if props.Layout == 'List' then
        local Layout = new('UIListLayout', {
            FillDirection = props.LayoutDirection,
            Padding = props.LayoutPadding,
            HorizontalAlignment = props.HorizontalAlignment,
            VerticalAlignment = props.VerticalAlignment,
            SortOrder = props.SortOrder or 'LayoutOrder',
            [Roact.Ref] = function (rbx)
                self:UpdateContentSize(rbx)
            end,
            [Roact.Change.AbsoluteContentSize] = function (rbx)
                self:UpdateContentSize(rbx)
            end
        })

        -- Update size
        props.Size = self:GetSize()

        -- Insert layout into children
        props[Roact.Children] = Support.Merge(
            { Layout = Layout },
            props[Roact.Children]
        )
    end

    -- Parse hex colors
    if type(props.ImageColor) == 'string' then
        local R, G, B = props.ImageColor:lower():match('#?(..)(..)(..)')
        props.ImageColor3 = Color3.fromRGB(tonumber(R, 16), tonumber(G, 16), tonumber(B, 16))
    end

    -- Filter out custom properties
    props.AspectRatio = nil
    props.Layout = nil
    props.LayoutDirection = nil
    props.LayoutPadding = nil
    props.HorizontalAlignment = nil
    props.VerticalAlignment = nil
    props.HorizontalPadding = nil
    props.VerticalPadding = nil
    props.SortOrder = nil
    props.Width = nil
    props.Height = nil
    props.ImageColor = nil

    -- Display component in wrapper
    return new('ImageLabel', props)

end

function ImageLabel:GetSize(ContentSize)
    local props = self.props
    
    -- Determine dynamic dimensions
    local DynamicWidth = props.Size == 'WRAP_CONTENT' or
        props.Width == 'WRAP_CONTENT'
    local DynamicHeight = props.Size == 'WRAP_CONTENT' or
        props.Height == 'WRAP_CONTENT'
    local DynamicSize = DynamicWidth or DynamicHeight

    -- Get padding from props
    local Padding = UDim2.new(
        0, props.HorizontalPadding or 0,
        0, props.VerticalPadding or 0
    )
    
    -- Calculate size based on content if dynamic
    return Padding + UDim2.new(
        (ContentSize and DynamicWidth) and UDim.new(0, ContentSize.X) or
            (typeof(props.Width) == 'UDim' and props.Width or props.Size.X),
        (ContentSize and DynamicHeight) and UDim.new(0, ContentSize.Y) or
            (typeof(props.Height) == 'UDim' and props.Height or props.Size.Y)
    )
end

function ImageLabel:UpdateContentSize(Layout)
    if not (Layout and Layout.Parent) then
        return
    end

    -- Set container size based on content
    Layout.Parent.Size = self:GetSize(Layout.AbsoluteContentSize)
end

return ImageLabel
