--!strict
-- this script was generated by the build system, please do not make manual edits
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))

local React = require(_Packages:WaitForChild("React"))
local ReactRoblox = require(_Packages:WaitForChild("ReactRoblox"))

-- Modules
local Types = require(_Package:WaitForChild("Types"))
local Style = require(_Package:WaitForChild("Style"))

local Source = require(script.Parent:WaitForChild("ColdFusion"))

-- Types
type Maid = Maid.Maid
type Style = Style.Style
type FontData = Types.FontData
type OptionData = Types.OptionData
type ButtonData = Types.ButtonData
type ImageData = Types.ImageData
type CanBeState<V> = ColdFusion.CanBeState<V>
-- Constants
local DEFAULTS = require(script.Parent:WaitForChild("Defaults"))
-- Variables
-- References
-- Private Functions
-- Class
local Interface = {}

do
	local NewButtonChipAssist = React.Component:extend("NewButtonChipAssist")
	NewButtonChipAssist.defaultProps = {
		onClick = DEFAULTS.NEW.ON_CLICK,
		text = DEFAULTS.NEW.TEXT,
		icon = DEFAULTS.NEW.ICON,
		textColor = DEFAULTS.NEW.TEXT_COLOR,
		disabledTextColor = DEFAULTS.NEW.DISABLED_TEXT_COLOR,
		isEnabled = DEFAULTS.NEW.IS_ENABLED,
		elevation = DEFAULTS.NEW.ELEVATION,
		schemeType = DEFAULTS.NEW.SCHEME_TYPE,
		fontData = DEFAULTS.NEW.FONT_DATA,
		scale = DEFAULTS.NEW.SCALE,
	}
	function NewButtonChipAssist:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			icon = _Value(self.defaultProps.icon),
			textColor = _Value(self.defaultProps.textColor),
			disabledTextColor = _Value(self.defaultProps.disabledTextColor),
			isEnabled = _Value(self.defaultProps.isEnabled),
			elevation = _Value(self.defaultProps.elevation),
			schemeType = _Value(self.defaultProps.schemeType),
			fontData = _Value(self.defaultProps.fontData),
			scale = _Value(self.defaultProps.scale),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.new(
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.icon,
			self._internalStates.textColor,
			self._internalStates.disabledTextColor,
			self._internalStates.isEnabled,
			self._internalStates.elevation,
			self._internalStates.schemeType,
			self._internalStates.fontData,
			self._internalStates.scale
		)
	end

	function NewButtonChipAssist:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return React.createElement(ReactRoblox.createPortal, props)
	end
	function NewButtonChipAssist:componentDidMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function NewButtonChipAssist:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.New = NewButtonChipAssist
end

do
	local PrimaryButtonChipAssist = React.Component:extend("PrimaryButtonChipAssist")
	PrimaryButtonChipAssist.defaultProps = {
		style = DEFAULTS.PRIMARY.STYLE,
		onClick = DEFAULTS.PRIMARY.ON_CLICK,
		text = DEFAULTS.PRIMARY.TEXT,
		icon = DEFAULTS.PRIMARY.ICON,
		elevation = DEFAULTS.PRIMARY.ELEVATION,
		isEnabled = DEFAULTS.PRIMARY.IS_ENABLED,
	}
	function PrimaryButtonChipAssist:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			icon = _Value(self.defaultProps.icon),
			elevation = _Value(self.defaultProps.elevation),
			isEnabled = _Value(self.defaultProps.isEnabled),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.primary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.icon,
			self._internalStates.elevation,
			self._internalStates.isEnabled
		)
	end

	function PrimaryButtonChipAssist:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return React.createElement(ReactRoblox.createPortal, props)
	end
	function PrimaryButtonChipAssist:componentDidMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function PrimaryButtonChipAssist:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Primary = PrimaryButtonChipAssist
end

do
	local SecondaryButtonChipAssist = React.Component:extend("SecondaryButtonChipAssist")
	SecondaryButtonChipAssist.defaultProps = {
		style = DEFAULTS.SECONDARY.STYLE,
		onClick = DEFAULTS.SECONDARY.ON_CLICK,
		text = DEFAULTS.SECONDARY.TEXT,
		icon = DEFAULTS.SECONDARY.ICON,
		elevation = DEFAULTS.SECONDARY.ELEVATION,
		isEnabled = DEFAULTS.SECONDARY.IS_ENABLED,
	}
	function SecondaryButtonChipAssist:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			icon = _Value(self.defaultProps.icon),
			elevation = _Value(self.defaultProps.elevation),
			isEnabled = _Value(self.defaultProps.isEnabled),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.secondary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.icon,
			self._internalStates.elevation,
			self._internalStates.isEnabled
		)
	end

	function SecondaryButtonChipAssist:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return React.createElement(ReactRoblox.createPortal, props)
	end
	function SecondaryButtonChipAssist:componentDidMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function SecondaryButtonChipAssist:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Secondary = SecondaryButtonChipAssist
end

do
	local TertiaryButtonChipAssist = React.Component:extend("TertiaryButtonChipAssist")
	TertiaryButtonChipAssist.defaultProps = {
		style = DEFAULTS.TERTIARY.STYLE,
		onClick = DEFAULTS.TERTIARY.ON_CLICK,
		text = DEFAULTS.TERTIARY.TEXT,
		icon = DEFAULTS.TERTIARY.ICON,
		elevation = DEFAULTS.TERTIARY.ELEVATION,
		isEnabled = DEFAULTS.TERTIARY.IS_ENABLED,
	}
	function TertiaryButtonChipAssist:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			icon = _Value(self.defaultProps.icon),
			elevation = _Value(self.defaultProps.elevation),
			isEnabled = _Value(self.defaultProps.isEnabled),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.tertiary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.icon,
			self._internalStates.elevation,
			self._internalStates.isEnabled
		)
	end

	function TertiaryButtonChipAssist:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return React.createElement(ReactRoblox.createPortal, props)
	end
	function TertiaryButtonChipAssist:componentDidMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function TertiaryButtonChipAssist:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Tertiary = TertiaryButtonChipAssist
end

return Interface


--!strict
-- this script was generated by the build system, please do not make manual edits
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))
local Roact = require(_Packages:WaitForChild("Roact"))

-- Modules
local Types = require(_Package:WaitForChild("Types"))
local Style = require(_Package:WaitForChild("Style"))

local Source = require(script.Parent:WaitForChild("ColdFusion"))

-- Types
type Maid = Maid.Maid
type Style = Style.Style
type FontData = Types.FontData
type OptionData = Types.OptionData
type ButtonData = Types.ButtonData
type ImageData = Types.ImageData
type CanBeState<V> = ColdFusion.CanBeState<V>
-- Constants
local DEFAULTS = require(script.Parent:WaitForChild("Defaults"))
-- Variables
-- References
-- Private Functions
-- Class
local Interface = {}

do
	local NewButtonChipAssist = Roact.Component:extend("NewButtonChipAssist")
	NewButtonChipAssist.defaultProps = {
		onClick = DEFAULTS.NEW.ON_CLICK,
		text = DEFAULTS.NEW.TEXT,
		icon = DEFAULTS.NEW.ICON,
		textColor = DEFAULTS.NEW.TEXT_COLOR,
		disabledTextColor = DEFAULTS.NEW.DISABLED_TEXT_COLOR,
		isEnabled = DEFAULTS.NEW.IS_ENABLED,
		elevation = DEFAULTS.NEW.ELEVATION,
		schemeType = DEFAULTS.NEW.SCHEME_TYPE,
		fontData = DEFAULTS.NEW.FONT_DATA,
		scale = DEFAULTS.NEW.SCALE,
	}
	function NewButtonChipAssist:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			icon = _Value(self.defaultProps.icon),
			textColor = _Value(self.defaultProps.textColor),
			disabledTextColor = _Value(self.defaultProps.disabledTextColor),
			isEnabled = _Value(self.defaultProps.isEnabled),
			elevation = _Value(self.defaultProps.elevation),
			schemeType = _Value(self.defaultProps.schemeType),
			fontData = _Value(self.defaultProps.fontData),
			scale = _Value(self.defaultProps.scale),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.new(
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.icon,
			self._internalStates.textColor,
			self._internalStates.disabledTextColor,
			self._internalStates.isEnabled,
			self._internalStates.elevation,
			self._internalStates.schemeType,
			self._internalStates.fontData,
			self._internalStates.scale
		)
	end

	function NewButtonChipAssist:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return Roact.createElement(Roact.Portal, props)
	end
	function NewButtonChipAssist:didMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function NewButtonChipAssist:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.New = NewButtonChipAssist
end

do
	local PrimaryButtonChipAssist = Roact.Component:extend("PrimaryButtonChipAssist")
	PrimaryButtonChipAssist.defaultProps = {
		style = DEFAULTS.PRIMARY.STYLE,
		onClick = DEFAULTS.PRIMARY.ON_CLICK,
		text = DEFAULTS.PRIMARY.TEXT,
		icon = DEFAULTS.PRIMARY.ICON,
		elevation = DEFAULTS.PRIMARY.ELEVATION,
		isEnabled = DEFAULTS.PRIMARY.IS_ENABLED,
	}
	function PrimaryButtonChipAssist:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			icon = _Value(self.defaultProps.icon),
			elevation = _Value(self.defaultProps.elevation),
			isEnabled = _Value(self.defaultProps.isEnabled),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.primary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.icon,
			self._internalStates.elevation,
			self._internalStates.isEnabled
		)
	end

	function PrimaryButtonChipAssist:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return Roact.createElement(Roact.Portal, props)
	end
	function PrimaryButtonChipAssist:didMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function PrimaryButtonChipAssist:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Primary = PrimaryButtonChipAssist
end

do
	local SecondaryButtonChipAssist = Roact.Component:extend("SecondaryButtonChipAssist")
	SecondaryButtonChipAssist.defaultProps = {
		style = DEFAULTS.SECONDARY.STYLE,
		onClick = DEFAULTS.SECONDARY.ON_CLICK,
		text = DEFAULTS.SECONDARY.TEXT,
		icon = DEFAULTS.SECONDARY.ICON,
		elevation = DEFAULTS.SECONDARY.ELEVATION,
		isEnabled = DEFAULTS.SECONDARY.IS_ENABLED,
	}
	function SecondaryButtonChipAssist:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			icon = _Value(self.defaultProps.icon),
			elevation = _Value(self.defaultProps.elevation),
			isEnabled = _Value(self.defaultProps.isEnabled),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.secondary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.icon,
			self._internalStates.elevation,
			self._internalStates.isEnabled
		)
	end

	function SecondaryButtonChipAssist:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return Roact.createElement(Roact.Portal, props)
	end
	function SecondaryButtonChipAssist:didMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function SecondaryButtonChipAssist:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Secondary = SecondaryButtonChipAssist
end

do
	local TertiaryButtonChipAssist = Roact.Component:extend("TertiaryButtonChipAssist")
	TertiaryButtonChipAssist.defaultProps = {
		style = DEFAULTS.TERTIARY.STYLE,
		onClick = DEFAULTS.TERTIARY.ON_CLICK,
		text = DEFAULTS.TERTIARY.TEXT,
		icon = DEFAULTS.TERTIARY.ICON,
		elevation = DEFAULTS.TERTIARY.ELEVATION,
		isEnabled = DEFAULTS.TERTIARY.IS_ENABLED,
	}
	function TertiaryButtonChipAssist:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			icon = _Value(self.defaultProps.icon),
			elevation = _Value(self.defaultProps.elevation),
			isEnabled = _Value(self.defaultProps.isEnabled),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.tertiary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.icon,
			self._internalStates.elevation,
			self._internalStates.isEnabled
		)
	end

	function TertiaryButtonChipAssist:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return Roact.createElement(Roact.Portal, props)
	end
	function TertiaryButtonChipAssist:didMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function TertiaryButtonChipAssist:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Tertiary = TertiaryButtonChipAssist
end

return Interface


--!strict
-- this script was generated by the build system, please do not make manual edits
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))

-- Modules
local Types = require(_Package:WaitForChild("Types"))
local Style = require(_Package:WaitForChild("Style"))
local Enums = require(_Package:WaitForChild("Enums"))

local Translators = require(_Package:WaitForChild("Translators"))

local Source = require(script.Parent:WaitForChild("ColdFusion"))

-- Types
type Maid = Maid.Maid
type Style = Style.Style
type FontData = Types.FontData
type OptionData = Types.OptionData
type ButtonData = Types.ButtonData
type ImageData = Types.ImageData
type CanBeState<V> = ColdFusion.CanBeState<V>
type Wrapper<BaseInstance, Definition, ClassName> = Translators.Wrapper<BaseInstance, Definition, ClassName>

export type AssistWrapperDefinition = {
	OnClick: () -> (),
	Text: string,
	Icon: ImageData?,
	TextColor: Color3,
	DisabledTextColor: Color3,
	IsEnabled: boolean,
	Elevation: number,
	SchemeType: Enums.SchemeType,
	FontData: FontData,
	Scale: number,
}
export type AssistWrapper = Wrapper<GuiObject, AssistWrapperDefinition, "Assist">

export type StyledAssistWrapperDefinition = {
	Style: Style,
	OnClick: () -> (),
	Text: string,
	Icon: ImageData?,
	Elevation: number?,
	IsEnabled: boolean?,
}
export type StyledAssistWrapper = Wrapper<GuiObject, StyledAssistWrapperDefinition, "StyledAssist">
-- Constants
local DEFAULTS = require(script.Parent:WaitForChild("Defaults"))
-- Variables
-- References
-- Private Functions
-- Interface
local Interface = {}

function Interface.new(): StyledAssistWrapper
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local _Value = _fuse.Value
	local definition = {
		OnClick = _Value(function() end),
		Text = _Value("Chip"),
		Icon = _Value(nil),
		TextColor = _Value(Color3.new()),
		DisabledTextColor = _Value(Color3.new()),
		IsEnabled = _Value(true),
		Elevation = _Value(0),
		SchemeType = _Value(Enums.SchemeType.Light),
		FontData = _Value(Types.FontData.new(Font.fromEnum(Enum.Font.SourceSans), 14)),
		Scale = _Value(1),
	}
	local defaults: { [string]: unknown? } = {
		onClick = DEFAULTS.NEW.ON_CLICK,
		text = DEFAULTS.NEW.TEXT,
		icon = DEFAULTS.NEW.ICON,
		textColor = DEFAULTS.NEW.TEXT_COLOR,
		disabledTextColor = DEFAULTS.NEW.DISABLED_TEXT_COLOR,
		isEnabled = DEFAULTS.NEW.IS_ENABLED,
		elevation = DEFAULTS.NEW.ELEVATION,
		schemeType = DEFAULTS.NEW.SCHEME_TYPE,
		fontData = DEFAULTS.NEW.FONT_DATA,
		scale = DEFAULTS.NEW.SCALE,
	}
	local inst: GuiObject = Source.new(
		definition.OnClick,
		definition.Text,
		definition.Icon,
		definition.TextColor,
		definition.DisabledTextColor,
		definition.IsEnabled,
		definition.Elevation,
		definition.SchemeType,
		definition.FontData,
		definition.Scale
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledAssist", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.primary(): StyledAssistWrapper
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local _Value = _fuse.Value
	local definition = {
		Style = _Value(Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7))),
		OnClick = _Value(function() end),
		Text = _Value("Chip"),
		Icon = _Value(nil),
		Elevation = _Value(0),
		IsEnabled = _Value(true),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.PRIMARY.STYLE,
		onClick = DEFAULTS.PRIMARY.ON_CLICK,
		text = DEFAULTS.PRIMARY.TEXT,
		icon = DEFAULTS.PRIMARY.ICON,
		elevation = DEFAULTS.PRIMARY.ELEVATION,
		isEnabled = DEFAULTS.PRIMARY.IS_ENABLED,
	}
	local inst: GuiObject = Source.primary(
		definition.Style,
		definition.OnClick,
		definition.Text,
		definition.Icon,
		definition.Elevation,
		definition.IsEnabled
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledAssist", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.secondary(): StyledAssistWrapper
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local _Value = _fuse.Value
	local definition = {
		Style = _Value(Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7))),
		OnClick = _Value(function() end),
		Text = _Value("Chip"),
		Icon = _Value(nil),
		Elevation = _Value(0),
		IsEnabled = _Value(true),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.SECONDARY.STYLE,
		onClick = DEFAULTS.SECONDARY.ON_CLICK,
		text = DEFAULTS.SECONDARY.TEXT,
		icon = DEFAULTS.SECONDARY.ICON,
		elevation = DEFAULTS.SECONDARY.ELEVATION,
		isEnabled = DEFAULTS.SECONDARY.IS_ENABLED,
	}
	local inst: GuiObject = Source.secondary(
		definition.Style,
		definition.OnClick,
		definition.Text,
		definition.Icon,
		definition.Elevation,
		definition.IsEnabled
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledAssist", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.tertiary(): StyledAssistWrapper
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local _Value = _fuse.Value
	local definition = {
		Style = _Value(Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7))),
		OnClick = _Value(function() end),
		Text = _Value("Chip"),
		Icon = _Value(nil),
		Elevation = _Value(0),
		IsEnabled = _Value(true),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.TERTIARY.STYLE,
		onClick = DEFAULTS.TERTIARY.ON_CLICK,
		text = DEFAULTS.TERTIARY.TEXT,
		icon = DEFAULTS.TERTIARY.ICON,
		elevation = DEFAULTS.TERTIARY.ELEVATION,
		isEnabled = DEFAULTS.TERTIARY.IS_ENABLED,
	}
	local inst: GuiObject = Source.tertiary(
		definition.Style,
		definition.OnClick,
		definition.Text,
		definition.Icon,
		definition.Elevation,
		definition.IsEnabled
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledAssist", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

return Interface


--!strict
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local Icons = require(_Packages:WaitForChild("MaterialIcons"))

-- Modules
local Style = require(_Package:WaitForChild("Style"))
local Enums = require(_Package:WaitForChild("Enums"))

-- Types
-- Constants
-- Variables
-- References

-- Class
return function(frame: Frame)
	local maid = Maid.new()
	task.spawn(function()
		local function makeHalfFrame(isDarkMode: boolean, color: Color3): Frame
			local style = Style.new(
				1.5,
				Enum.Font.SourceSans,
				if isDarkMode then Enums.SchemeType.Dark else Enums.SchemeType.Light,
				color
			)

			local halfFrame = maid:GiveTask(Instance.new("Frame"))
			halfFrame.BackgroundColor3 = style:GetColor(Enums.ColorRoleType.Surface)
			halfFrame.BorderSizePixel = 0
			local listLayout = maid:GiveTask(Instance.new("UIListLayout"))
			listLayout.FillDirection = Enum.FillDirection.Vertical
			listLayout.Padding = UDim.new(0, 10)
			listLayout.VerticalAlignment = Enum.VerticalAlignment.Center
			listLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
			listLayout.Parent = halfFrame

			local Module = require(script.Parent:WaitForChild("ColdFusion"))

			do
				local button = maid:GiveTask(
					Module.new(
						function()
							print(`click 1`)
						end,
						"Assist Chip",
						Icons.umbrella,
						style:GetColor(Enums.ColorRoleType.Primary),
						style:GetColor(Enums.ColorRoleType.OnSurface),
						true,
						0,
						style.SchemeType,
						style:GetFontData(Enums.FontType.LabelLarge),
						style.Scale
					)
				)
				button.Parent = halfFrame
			end

			do
				local button = maid:GiveTask(
					Module.new(
						function()
							print(`click 2`)
						end,
						"Disabled",
						Icons.umbrella,
						style:GetColor(Enums.ColorRoleType.Primary),
						style:GetColor(Enums.ColorRoleType.OnSurface),
						false,
						0,
						style.SchemeType,
						style:GetFontData(Enums.FontType.LabelLarge),
						style.Scale
					)
				)
				button.Parent = halfFrame
			end

			return halfFrame
		end

		local COLORS: { [number]: Color3 } = {
			Color3.fromHSV(0, 0.9, 0.8),
			-- Color3.fromHSV(0, 0.25, 0.8),
			-- Color3.fromHSV(0, 0.9, 0.5),
			Color3.fromHSV(0.6, 0.9, 0.7),
			Color3.fromHSV(0.35, 0.9, 0.7),
			-- Color3.fromHSV(0.1, 0.9, 0.7),
		}

		for i, color in ipairs(COLORS) do
			local x = (i - 1) / #COLORS
			local width = 1 / #COLORS
			local dark = makeHalfFrame(true, color)

			dark.Size = UDim2.fromScale(width, 0.5)
			dark.Position = UDim2.fromScale(x, 0.5)
			dark.Parent = frame

			local bright = makeHalfFrame(false, color)
			bright.Size = UDim2.fromScale(width, 0.5)
			bright.Position = UDim2.fromScale(x, 0)
			bright.Parent = frame
		end
	end)
	return function()
		maid:Destroy()
	end
end


--!strict
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))

-- Modules
local Style = require(_Package:WaitForChild("Style"))
local Enums = require(_Package:WaitForChild("Enums"))

-- Types
-- Constants
-- Variables
-- References

-- Class
return function(frame: Frame)
	local maid = Maid.new()
	task.spawn(function()
		local function makeHalfFrame(isDarkMode: boolean, color: Color3): Frame
			local style = Style.new(
				1.5,
				Enum.Font.SourceSans,
				if isDarkMode then Enums.SchemeType.Dark else Enums.SchemeType.Light,
				color
			)

			local halfFrame = maid:GiveTask(Instance.new("Frame"))
			halfFrame.BackgroundColor3 = style:GetColor(Enums.ColorRoleType.Surface)
			halfFrame.BorderSizePixel = 0

			local listLayout = maid:GiveTask(Instance.new("UIListLayout"))
			listLayout.FillDirection = Enum.FillDirection.Vertical
			listLayout.Padding = UDim.new(0, 10)
			listLayout.VerticalAlignment = Enum.VerticalAlignment.Center
			listLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
			listLayout.Parent = halfFrame

			local Module = require(script.Parent:WaitForChild("ColdFusion"))

			do
				local button = maid:GiveTask(Module.primary(style, function()
					print("click")
				end, "primary"))
				button.Parent = halfFrame
			end

			do
				local button = maid:GiveTask(Module.secondary(style, function()
					print("click")
				end, "secondary"))
				button.Parent = halfFrame
			end

			do
				local button = maid:GiveTask(Module.tertiary(style, function()
					print("click")
				end, "tertiary"))
				button.Parent = halfFrame
			end

			return halfFrame
		end

		local COLORS: { [number]: Color3 } = {
			Color3.fromHSV(0, 0.9, 0.8),
			-- Color3.fromHSV(0, 0.25, 0.8),
			-- Color3.fromHSV(0, 0.9, 0.5),
			Color3.fromHSV(0.6, 0.9, 0.7),
			Color3.fromHSV(0.35, 0.9, 0.7),
			-- Color3.fromHSV(0.1, 0.9, 0.7),
		}

		for i, color in ipairs(COLORS) do
			local x = (i - 1) / #COLORS
			local width = 1 / #COLORS
			local dark = makeHalfFrame(true, color)

			dark.Size = UDim2.fromScale(width, 0.5)
			dark.Position = UDim2.fromScale(x, 0.5)
			dark.Parent = frame

			local bright = makeHalfFrame(false, color)
			bright.Size = UDim2.fromScale(width, 0.5)
			bright.Position = UDim2.fromScale(x, 0)
			bright.Parent = frame
		end
	end)
	return function()
		maid:Destroy()
	end
end


--!strict
local _Package = script.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services

-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))

-- Modules
local Types = require(_Package:WaitForChild("Types"))
local Style = require(_Package:WaitForChild("Style"))
local Enums = require(_Package:WaitForChild("Enums"))
local Base = require(_Package:WaitForChild("Component"):WaitForChild("Button"):WaitForChild("Base"))
local Sounds = require(_Package:WaitForChild("Sounds"))
local Theme = require(_Package:WaitForChild("Theme"))

-- Types
type Maid = Maid.Maid
type State<V> = ColdFusion.State<V>
type ValueState<V> = ColdFusion.ValueState<V>
type CanBeState<V> = ColdFusion.CanBeState<V>
type RenderData = Types.RenderData
type ImageData = Types.ImageData
type ButtonData = Types.ButtonData
type FontData = Types.FontData
type Style = Style.Style

-- Constants
local INVIS = 0.99
-- Variables
-- References
-- Private Functions
-- Class
local Interface = {}

function Interface.new(
	onClick: CanBeState<(isSelected: boolean) -> ()>,
	isInitiallySelected: CanBeState<boolean>,
	text: CanBeState<string>,
	icon: CanBeState<ImageData?>,
	scale: CanBeState<number>,
	fontData: CanBeState<FontData>,
	schemeType: CanBeState<Enums.SchemeType>,
	textColor: CanBeState<Color3>,
	disabledTextColor: CanBeState<Color3>,
	fillTextColor: CanBeState<Color3>,
	disabledFillTextColor: CanBeState<Color3>,
	fillColor: CanBeState<Color3>,
	disabledFillColor: CanBeState<Color3>,
	isEnabled: CanBeState<boolean>,
	elevation: CanBeState<number>,
	isButton: CanBeState<boolean>?
): GuiObject
	local maid = Maid.new()

	local _fuse = ColdFusion.fuse(maid)

	local _new = _fuse.new
	local _bind = _fuse.bind
	local _clone = _fuse.clone
	local _import = _fuse.import

	local _Value = _fuse.Value
	local _Computed = _fuse.Computed

	local scaleState: State<number> = _import(scale, 1)
	local fontDataState: State<FontData> = _import(fontData, nil :: any)
	local schemeTypeState: State<Enums.SchemeType> = _import(schemeType, Enums.SchemeType.Light)
	local elevationState: State<number> = _import(elevation, 0)
	local textColorState: State<Color3> = _import(textColor, Color3.new(1, 1, 1))
	local fillTextColorState: State<Color3> = _import(fillTextColor, Color3.new(1, 1, 1))
	local disabledFillTextColorState: State<Color3> = _import(disabledFillTextColor, Color3.new(1, 1, 1))
	local isButtonState: State<boolean> = _import(isButton, false)

	local fillColorState: State<Color3> = _import(fillColor, Color3.new(1, 1, 1))
	local disabledFillColorState: State<Color3> = _import(disabledFillColor, Color3.new(1, 1, 1))

	local hoverColorState: State<Color3> = _import(textColor, Color3.new(1, 1, 1))
	local disabledTextColorState: State<Color3> = _import(disabledTextColor, Color3.new(1, 1, 1))

	local onClickState = _import(onClick, function(isSel: boolean) end)

	local isInitiallySelectedState = _import(isInitiallySelected, false)

	local iconState: State<ImageData?> = _import(icon, nil :: ImageData?)

	local clickCountState = _Value(0)
	isInitiallySelectedState:Connect(function()
		clickCountState:Set(0)
	end)

	local isSelectedState = _Computed(function(i: boolean, c: number): boolean
		if i then
			return c % 2 == 0
		else
			return c % 2 == 1
		end
	end, isInitiallySelectedState, clickCountState)

	local outlineRenderDatasState = _Computed(
		function(
			sc: number,
			f: FontData,
			st: Enums.SchemeType,
			e: number,
			hC: Color3,
			tC: Color3,
			dC: Color3,
			i: ImageData?
		): { [Enums.ButtonStateType]: RenderData }
			e += 1
			return {
				[Enums.ButtonStateType.Enabled] = Types._RenderData.new(
					sc,
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e, st), 0),
					Types._AppearanceData.new(Theme.getElevatedColor(hC, e, st), INVIS),
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e, st), 0),
					f,
					i,
					nil,
					nil
				),
				[Enums.ButtonStateType.Disabled] = Types._RenderData.new(
					sc,
					Types._AppearanceData.new(Theme.getElevatedColor(dC, e, st), 1 - 0.38),
					Types._AppearanceData.new(Theme.getElevatedColor(hC, e, st), INVIS),
					Types._AppearanceData.new(Theme.getElevatedColor(dC, e, st), 1 - 0.38),
					f,
					i,
					nil,
					nil
				),
				[Enums.ButtonStateType.Hovered] = Types._RenderData.new(
					sc,
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e + 1, st), 0),
					Types._AppearanceData.new(Theme.getElevatedColor(hC, e + 1, st), 1 - 0.08),
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e + 1, st), 0),
					f,
					i,
					nil,
					nil
				),
				[Enums.ButtonStateType.Focused] = Types._RenderData.new(
					sc,
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e, st), 0),
					Types._AppearanceData.new(Theme.getElevatedColor(hC, e, st), 1 - 0.1),
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e, st), 0),
					f,
					i,
					nil,
					nil
				),
				[Enums.ButtonStateType.Pressed] = Types._RenderData.new(
					sc,
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e - 1, st), 0),
					Types._AppearanceData.new(Theme.getElevatedColor(hC, e - 1, st), 1 - 0.1),
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e - 1, st), 0),
					f,
					i,
					Types._SoundData.new(Sounds.Library[Enums.SoundType.ui_tap_variant_01], 1),
					nil
				),
			}
		end,
		scaleState,
		fontDataState,
		schemeTypeState,
		elevationState,
		hoverColorState,
		textColorState,
		disabledTextColorState,
		iconState
	)

	local filledRenderDatasState = _Computed(
		function(
			sc: number,
			f: FontData,
			st: Enums.SchemeType,
			e: number,
			tC: Color3,
			sC: Color3,
			dTC: Color3,
			dSC: Color3,
			i: ImageData?
		): { [Enums.ButtonStateType]: RenderData }
			e += 1
			return {
				[Enums.ButtonStateType.Enabled] = Types._RenderData.new(
					sc,
					Types._AppearanceData.new(Theme.getElevatedColor(sC, e, st), INVIS),
					Types._AppearanceData.new(Theme.getElevatedColor(sC, e, st), 0),
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e, st), 0),
					f,
					i,
					nil,
					nil
				),
				[Enums.ButtonStateType.Disabled] = Types._RenderData.new(
					sc,
					Types._AppearanceData.new(Theme.getElevatedColor(dSC, e, st), INVIS),
					Types._AppearanceData.new(Theme.getElevatedColor(dSC, e, st), 0.12),
					Types._AppearanceData.new(Theme.getElevatedColor(dTC, e, st), 0.12),
					f,
					i,
					nil,
					nil
				),
				[Enums.ButtonStateType.Hovered] = Types._RenderData.new(
					sc,
					Types._AppearanceData.new(Theme.getElevatedColor(sC, e, st), INVIS),
					Types._AppearanceData.new(Theme.getElevatedColor(sC, e + 1, st), 0.08),
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e + 1, st), 0.08),
					f,
					i,
					nil,
					nil
				),
				[Enums.ButtonStateType.Focused] = Types._RenderData.new(
					sc,
					Types._AppearanceData.new(Theme.getElevatedColor(sC, e, st), INVIS),
					Types._AppearanceData.new(Theme.getElevatedColor(sC, e, st), 0.1),
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e, st), 0.1),
					f,
					i,
					nil,
					nil
				),
				[Enums.ButtonStateType.Pressed] = Types._RenderData.new(
					sc,
					Types._AppearanceData.new(Theme.getElevatedColor(sC, e, st), INVIS),
					Types._AppearanceData.new(Theme.getElevatedColor(sC, e - 1, st), 0.1),
					Types._AppearanceData.new(Theme.getElevatedColor(tC, e - 1, st), 0.1),
					f,
					i,
					Types._SoundData.new(Sounds.Library[Enums.SoundType.ui_tap_variant_01], 0),
					nil
				),
			}
		end,
		scaleState,
		fontDataState,
		schemeTypeState,
		elevationState,
		fillTextColorState,
		fillColorState,
		disabledFillTextColorState,
		disabledFillColorState,
		iconState
	)

	local button = Base.new(
		maid,
		function()
			clickCountState:Set(clickCountState:Get() + 1)
			onClickState:Get()(isSelectedState:Get())
		end,
		text,
		if isEnabled == nil then true else isEnabled,
		_Computed(
			function(
				isSel: boolean,
				isB: boolean,
				fDatas: { [Enums.ButtonStateType]: RenderData },
				oDatas: { [Enums.ButtonStateType]: RenderData }
			): { [Enums.ButtonStateType]: RenderData }
				return if isSel and not isB then fDatas else oDatas
			end,
			isSelectedState,
			isButtonState,
			filledRenderDatasState,
			outlineRenderDatasState
		),
		nil,
		_Computed(function(sc: number): number
			return sc * 8
		end, scaleState),
		0.75,
		true,
		0.8
	)
	maid:GiveTask(button.Destroying:Connect(function()
		maid:Destroy()
	end))

	return button
end

return Interface


--!strict
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services

-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))
local Icons = require(_Packages:WaitForChild("MaterialIcons"))

-- Modules
local Types = require(_Package:WaitForChild("Types"))
local Base = require(script.Parent.Parent:WaitForChild("Base"))
local Style = require(_Package:WaitForChild("Style"))
local Enums = require(_Package:WaitForChild("Enums"))

-- Types
type Maid = Maid.Maid
type State<V> = ColdFusion.State<V>
type ValueState<V> = ColdFusion.ValueState<V>
type CanBeState<V> = ColdFusion.CanBeState<V>
type RenderData = Types.RenderData
type Style = Style.Style
type ImageData = Types.ImageData
type FontData = Types.FontData

-- Constants
local DEFAULTS = require(script.Parent:WaitForChild("Defaults"))
-- Variables
-- References

-- Private Functions

-- Class
local Interface = {}
Interface = {}

function newThemedComponent(
	themeDefaults: typeof(DEFAULTS.PRIMARY),
	style: CanBeState<Style>,
	textColor: Enums.ColorRoleType,
	disabledTextColor: Enums.ColorRoleType,
	fillTextColor: Enums.ColorRoleType,
	disabledFillTextColor: Enums.ColorRoleType,
	disabledFillColor: Enums.ColorRoleType,
	onClick: CanBeState<(isSelected: boolean) -> ()>,
	isInitiallySelected: CanBeState<boolean>,
	text: CanBeState<string>,
	isEnabled: CanBeState<boolean?>,
	elevation: CanBeState<number?>
): GuiObject
	local maid = Maid.new()

	local _fuse = ColdFusion.fuse(maid)

	local _new = _fuse.new
	local _bind = _fuse.bind
	local _clone = _fuse.clone
	local _import = _fuse.import

	local _Value = _fuse.Value
	local _Computed = _fuse.Computed

	local styleState: State<Style> = _import(style, themeDefaults.STYLE)

	local out = Interface.new(
		_import(onClick, themeDefaults.ON_CLICK),
		_import(isInitiallySelected, themeDefaults.IS_INITIALLY_SELECTED),
		_import(text, themeDefaults.TEXT),
		_Computed(function(s: Style): Color3
			return s:GetColor(textColor)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(disabledTextColor)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(fillTextColor)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(disabledFillTextColor)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(disabledFillColor)
		end, styleState),
		_import(isEnabled, themeDefaults.IS_ENABLED),
		_import(elevation, themeDefaults.ELEVATION),
		_Computed(function(s: Style): any
			return s.SchemeType
		end, styleState),
		_Computed(function(s: Style): FontData
			return s:GetFontData(Enums.FontType.LabelLarge)
		end, styleState),
		_Computed(function(s: Style): number
			return s.Scale
		end, styleState)
	)

	maid:GiveTask(out.Destroying:Connect(function()
		maid:Destroy()
	end))

	return out
end

function Interface.primary(
	style: CanBeState<Style>,
	onClick: CanBeState<(isSelected: boolean) -> ()>,
	text: CanBeState<string>,
	isInitiallySelected: CanBeState<boolean>,
	isEnabled: CanBeState<boolean?>,
	elevation: CanBeState<number?>
): GuiObject
	return newThemedComponent(
		DEFAULTS.PRIMARY,
		style,
		Enums.ColorRoleType.Primary,
		Enums.ColorRoleType.OnSurface,
		Enums.ColorRoleType.OnPrimary,
		Enums.ColorRoleType.OnSurfaceVariant,
		Enums.ColorRoleType.SurfaceVariant,
		onClick,
		isInitiallySelected,
		text,
		isEnabled,
		elevation
	)
end

function Interface.secondary(
	style: CanBeState<Style>,
	onClick: CanBeState<(isSelected: boolean) -> ()>,
	text: CanBeState<string>,
	isInitiallySelected: CanBeState<boolean>,
	isEnabled: CanBeState<boolean?>,
	elevation: CanBeState<number?>
): GuiObject
	return newThemedComponent(
		DEFAULTS.SECONDARY,
		style,
		Enums.ColorRoleType.Secondary,
		Enums.ColorRoleType.OnSurface,
		Enums.ColorRoleType.OnSecondary,
		Enums.ColorRoleType.OnSurfaceVariant,
		Enums.ColorRoleType.SurfaceVariant,
		onClick,
		isInitiallySelected,
		text,
		isEnabled,
		elevation
	)
end

function Interface.tertiary(
	style: CanBeState<Style>,
	onClick: CanBeState<(isSelected: boolean) -> ()>,
	text: CanBeState<string>,
	isInitiallySelected: CanBeState<boolean>,
	isEnabled: CanBeState<boolean?>,
	elevation: CanBeState<number?>
): GuiObject
	return newThemedComponent(
		DEFAULTS.TERTIARY,
		style,
		Enums.ColorRoleType.Tertiary,
		Enums.ColorRoleType.OnSurface,
		Enums.ColorRoleType.OnTertiary,
		Enums.ColorRoleType.OnSurfaceVariant,
		Enums.ColorRoleType.SurfaceVariant,
		onClick,
		isInitiallySelected,
		text,
		isEnabled,
		elevation
	)
end

function Interface.new(
	onClick: CanBeState<(isSelected: boolean) -> ()>,
	isInitiallySelected: CanBeState<boolean>,
	text: CanBeState<string>,
	textColor: CanBeState<Color3>,
	disabledTextColor: CanBeState<Color3>,
	fillTextColor: CanBeState<Color3>,
	disabledFillTextColor: CanBeState<Color3>,
	disabledFillColor: CanBeState<Color3>,
	isEnabled: CanBeState<boolean>,
	elevation: CanBeState<number>,
	schemeType: CanBeState<Enums.SchemeType>,
	fontData: CanBeState<FontData>,
	scale: CanBeState<number>
): GuiObject
	local maid = Maid.new()

	local _fuse = ColdFusion.fuse(maid)

	local _new = _fuse.new
	local _bind = _fuse.bind
	local _clone = _fuse.clone
	local _import = _fuse.import

	local _Value = _fuse.Value
	local _Computed = _fuse.Computed

	local isInitiallySelectedState = _import(isInitiallySelected, DEFAULTS.NEW.IS_INITIALLY_SELECTED)
	local isSelectedState = _Value(isInitiallySelectedState:Get())
	local onClickState = _import(onClick, DEFAULTS.NEW.ON_CLICK)
	local button = Base.new(
		function(isSelected: boolean)
			local click = onClickState:Get()
			isSelectedState:Set(isSelected)
			click(isSelected)
		end,
		isInitiallySelectedState,
		_import(text, DEFAULTS.NEW.TEXT),
		_Computed(function(isSel: boolean): ImageData?
			return if isSel then Icons.check else nil
		end, isSelectedState),
		_import(scale, DEFAULTS.NEW.SCALE),
		_import(fontData, DEFAULTS.NEW.FONT_DATA),
		_import(schemeType, DEFAULTS.NEW.SCHEME_TYPE),
		_import(textColor, DEFAULTS.NEW.TEXT_COLOR),
		_import(disabledTextColor, DEFAULTS.NEW.DISABLED_TEXT_COLOR),
		_import(fillTextColor, DEFAULTS.NEW.FILL_TEXT_COLOR),
		_import(disabledFillTextColor, DEFAULTS.NEW.DISABLED_FILL_TEXT_COLOR),
		_import(textColor, DEFAULTS.NEW.TEXT_COLOR),
		_import(disabledFillColor, DEFAULTS.NEW.DISABLED_FILL_COLOR),
		_import(isEnabled, DEFAULTS.NEW.IS_ENABLED),
		_import(elevation, DEFAULTS.NEW.ELEVATION)
	)

	maid:GiveTask(button.Destroying:Connect(function()
		maid:Destroy()
	end))

	return button
end

return Interface


--!strict
-- this script was generated by the build system, please do not make manual edits
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))

-- Modules
local Types = require(_Package:WaitForChild("Types"))
local Style = require(_Package:WaitForChild("Style"))
local Enums = require(_Package:WaitForChild("Enums"))

-- Types
type Maid = Maid.Maid
type Style = Style.Style
type FontData = Types.FontData
type OptionData = Types.OptionData
type ButtonData = Types.ButtonData
type ImageData = Types.ImageData
type CanBeState<V> = ColdFusion.CanBeState<V>

return {
	NEW = {
		ON_CLICK = function(isSelected: boolean) end,
		IS_INITIALLY_SELECTED = false,
		TEXT = "Filter",
		TEXT_COLOR = Color3.new(),
		DISABLED_TEXT_COLOR = Color3.new(),
		FILL_TEXT_COLOR = Color3.new(),
		DISABLED_FILL_TEXT_COLOR = Color3.new(),
		DISABLED_FILL_COLOR = Color3.new(),
		IS_ENABLED = true,
		ELEVATION = 0,
		SCHEME_TYPE = Enums.SchemeType.Light,
		FONT_DATA = Types.FontData.new(Font.fromEnum(Enum.Font.SourceSans), 14),
		SCALE = 1,
	},
	PRIMARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_CLICK = function(isSelected: boolean) end,
		TEXT = "Filter",
		IS_INITIALLY_SELECTED = false,
		IS_ENABLED = true,
		ELEVATION = 0,
	},
	SECONDARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_CLICK = function(isSelected: boolean) end,
		TEXT = "Filter",
		IS_INITIALLY_SELECTED = false,
		IS_ENABLED = true,
		ELEVATION = 0,
	},
	TERTIARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_CLICK = function(isSelected: boolean) end,
		TEXT = "Filter",
		IS_INITIALLY_SELECTED = false,
		IS_ENABLED = true,
		ELEVATION = 0,
	},
}


--!strict
-- this script was generated by the build system, please do not make manual edits
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))

-- Modules
local Types = require(_Package:WaitForChild("Types"))
local Style = require(_Package:WaitForChild("Style"))
local Enums = require(_Package:WaitForChild("Enums"))

local Translators = require(_Package:WaitForChild("Translators"))

local Source = require(script.Parent:WaitForChild("ColdFusion"))

-- Types
type Maid = Maid.Maid
type Style = Style.Style
type FontData = Types.FontData
type OptionData = Types.OptionData
type ButtonData = Types.ButtonData
type ImageData = Types.ImageData
type CanBeState<V> = ColdFusion.CanBeState<V>
type FusionCanBeState<V> = Translators.FusionCanBeState<V>

-- Constants
local DEFAULTS = require(script.Parent:WaitForChild("Defaults"))
-- Variables
-- References
-- Private Functions
-- Class
local Interface = {}

function Interface.new(
	onClick: FusionCanBeState<(isSelected: boolean) -> ()>,
	isInitiallySelected: FusionCanBeState<boolean>,
	text: FusionCanBeState<string>,
	textColor: FusionCanBeState<Color3>,
	disabledTextColor: FusionCanBeState<Color3>,
	fillTextColor: FusionCanBeState<Color3>,
	disabledFillTextColor: FusionCanBeState<Color3>,
	disabledFillColor: FusionCanBeState<Color3>,
	isEnabled: FusionCanBeState<boolean>,
	elevation: FusionCanBeState<number>,
	schemeType: FusionCanBeState<Enums.SchemeType>,
	fontData: FusionCanBeState<FontData>,
	scale: FusionCanBeState<number>
): GuiObject
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local function convert<V>(value: FusionCanBeState<V>, default: V): CanBeState<V>
		return Translators.Fusion.toColdFusion(maid, _fuse, value, default)
	end
	local inst = Source.new(
		convert(onClick, DEFAULTS.NEW.ON_CLICK),
		convert(isInitiallySelected, DEFAULTS.NEW.IS_INITIALLY_SELECTED),
		convert(text, DEFAULTS.NEW.TEXT),
		convert(textColor, DEFAULTS.NEW.TEXT_COLOR),
		convert(disabledTextColor, DEFAULTS.NEW.DISABLED_TEXT_COLOR),
		convert(fillTextColor, DEFAULTS.NEW.FILL_TEXT_COLOR),
		convert(disabledFillTextColor, DEFAULTS.NEW.DISABLED_FILL_TEXT_COLOR),
		convert(disabledFillColor, DEFAULTS.NEW.DISABLED_FILL_COLOR),
		convert(isEnabled, DEFAULTS.NEW.IS_ENABLED),
		convert(elevation, DEFAULTS.NEW.ELEVATION),
		convert(schemeType, DEFAULTS.NEW.SCHEME_TYPE),
		convert(fontData, DEFAULTS.NEW.FONT_DATA),
		convert(scale, DEFAULTS.NEW.SCALE)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.primary(
	style: FusionCanBeState<Style>,
	onClick: FusionCanBeState<(isSelected: boolean) -> ()>,
	text: FusionCanBeState<string>,
	isInitiallySelected: FusionCanBeState<boolean>,
	isEnabled: FusionCanBeState<boolean?>,
	elevation: FusionCanBeState<number?>
): GuiObject
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local function convert<V>(value: FusionCanBeState<V>, default: V): CanBeState<V>
		return Translators.Fusion.toColdFusion(maid, _fuse, value, default)
	end
	local inst = Source.primary(
		convert(style, DEFAULTS.PRIMARY.STYLE),
		convert(onClick, DEFAULTS.PRIMARY.ON_CLICK),
		convert(text, DEFAULTS.PRIMARY.TEXT),
		convert(isInitiallySelected, DEFAULTS.PRIMARY.IS_INITIALLY_SELECTED),
		convert(isEnabled, DEFAULTS.PRIMARY.IS_ENABLED),
		convert(elevation, DEFAULTS.PRIMARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.secondary(
	style: FusionCanBeState<Style>,
	onClick: FusionCanBeState<(isSelected: boolean) -> ()>,
	text: FusionCanBeState<string>,
	isInitiallySelected: FusionCanBeState<boolean>,
	isEnabled: FusionCanBeState<boolean?>,
	elevation: FusionCanBeState<number?>
): GuiObject
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local function convert<V>(value: FusionCanBeState<V>, default: V): CanBeState<V>
		return Translators.Fusion.toColdFusion(maid, _fuse, value, default)
	end
	local inst = Source.secondary(
		convert(style, DEFAULTS.SECONDARY.STYLE),
		convert(onClick, DEFAULTS.SECONDARY.ON_CLICK),
		convert(text, DEFAULTS.SECONDARY.TEXT),
		convert(isInitiallySelected, DEFAULTS.SECONDARY.IS_INITIALLY_SELECTED),
		convert(isEnabled, DEFAULTS.SECONDARY.IS_ENABLED),
		convert(elevation, DEFAULTS.SECONDARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.tertiary(
	style: FusionCanBeState<Style>,
	onClick: FusionCanBeState<(isSelected: boolean) -> ()>,
	text: FusionCanBeState<string>,
	isInitiallySelected: FusionCanBeState<boolean>,
	isEnabled: FusionCanBeState<boolean?>,
	elevation: FusionCanBeState<number?>
): GuiObject
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local function convert<V>(value: FusionCanBeState<V>, default: V): CanBeState<V>
		return Translators.Fusion.toColdFusion(maid, _fuse, value, default)
	end
	local inst = Source.tertiary(
		convert(style, DEFAULTS.TERTIARY.STYLE),
		convert(onClick, DEFAULTS.TERTIARY.ON_CLICK),
		convert(text, DEFAULTS.TERTIARY.TEXT),
		convert(isInitiallySelected, DEFAULTS.TERTIARY.IS_INITIALLY_SELECTED),
		convert(isEnabled, DEFAULTS.TERTIARY.IS_ENABLED),
		convert(elevation, DEFAULTS.TERTIARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

return Interface


--!strict
-- this script was generated by the build system, please do not make manual edits
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))

local React = require(_Packages:WaitForChild("React"))
local ReactRoblox = require(_Packages:WaitForChild("ReactRoblox"))

-- Modules
local Types = require(_Package:WaitForChild("Types"))
local Style = require(_Package:WaitForChild("Style"))

local Source = require(script.Parent:WaitForChild("ColdFusion"))

-- Types
type Maid = Maid.Maid
type Style = Style.Style
type FontData = Types.FontData
type OptionData = Types.OptionData
type ButtonData = Types.ButtonData
type ImageData = Types.ImageData
type CanBeState<V> = ColdFusion.CanBeState<V>
-- Constants
local DEFAULTS = require(script.Parent:WaitForChild("Defaults"))
-- Variables
-- References
-- Private Functions
-- Class
local Interface = {}

do
	local NewButtonChipFilter = React.Component:extend("NewButtonChipFilter")
	NewButtonChipFilter.defaultProps = {
		onClick = DEFAULTS.NEW.ON_CLICK,
		isInitiallySelected = DEFAULTS.NEW.IS_INITIALLY_SELECTED,
		text = DEFAULTS.NEW.TEXT,
		textColor = DEFAULTS.NEW.TEXT_COLOR,
		disabledTextColor = DEFAULTS.NEW.DISABLED_TEXT_COLOR,
		fillTextColor = DEFAULTS.NEW.FILL_TEXT_COLOR,
		disabledFillTextColor = DEFAULTS.NEW.DISABLED_FILL_TEXT_COLOR,
		disabledFillColor = DEFAULTS.NEW.DISABLED_FILL_COLOR,
		isEnabled = DEFAULTS.NEW.IS_ENABLED,
		elevation = DEFAULTS.NEW.ELEVATION,
		schemeType = DEFAULTS.NEW.SCHEME_TYPE,
		fontData = DEFAULTS.NEW.FONT_DATA,
		scale = DEFAULTS.NEW.SCALE,
	}
	function NewButtonChipFilter:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			onClick = _Value(self.defaultProps.onClick),
			isInitiallySelected = _Value(self.defaultProps.isInitiallySelected),
			text = _Value(self.defaultProps.text),
			textColor = _Value(self.defaultProps.textColor),
			disabledTextColor = _Value(self.defaultProps.disabledTextColor),
			fillTextColor = _Value(self.defaultProps.fillTextColor),
			disabledFillTextColor = _Value(self.defaultProps.disabledFillTextColor),
			disabledFillColor = _Value(self.defaultProps.disabledFillColor),
			isEnabled = _Value(self.defaultProps.isEnabled),
			elevation = _Value(self.defaultProps.elevation),
			schemeType = _Value(self.defaultProps.schemeType),
			fontData = _Value(self.defaultProps.fontData),
			scale = _Value(self.defaultProps.scale),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.new(
			self._internalStates.onClick,
			self._internalStates.isInitiallySelected,
			self._internalStates.text,
			self._internalStates.textColor,
			self._internalStates.disabledTextColor,
			self._internalStates.fillTextColor,
			self._internalStates.disabledFillTextColor,
			self._internalStates.disabledFillColor,
			self._internalStates.isEnabled,
			self._internalStates.elevation,
			self._internalStates.schemeType,
			self._internalStates.fontData,
			self._internalStates.scale
		)
	end

	function NewButtonChipFilter:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return React.createElement(ReactRoblox.createPortal, props)
	end
	function NewButtonChipFilter:componentDidMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function NewButtonChipFilter:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.New = NewButtonChipFilter
end

do
	local PrimaryButtonChipFilter = React.Component:extend("PrimaryButtonChipFilter")
	PrimaryButtonChipFilter.defaultProps = {
		style = DEFAULTS.PRIMARY.STYLE,
		onClick = DEFAULTS.PRIMARY.ON_CLICK,
		text = DEFAULTS.PRIMARY.TEXT,
		isInitiallySelected = DEFAULTS.PRIMARY.IS_INITIALLY_SELECTED,
		isEnabled = DEFAULTS.PRIMARY.IS_ENABLED,
		elevation = DEFAULTS.PRIMARY.ELEVATION,
	}
	function PrimaryButtonChipFilter:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			isInitiallySelected = _Value(self.defaultProps.isInitiallySelected),
			isEnabled = _Value(self.defaultProps.isEnabled),
			elevation = _Value(self.defaultProps.elevation),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.primary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.isInitiallySelected,
			self._internalStates.isEnabled,
			self._internalStates.elevation
		)
	end

	function PrimaryButtonChipFilter:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return React.createElement(ReactRoblox.createPortal, props)
	end
	function PrimaryButtonChipFilter:componentDidMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function PrimaryButtonChipFilter:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Primary = PrimaryButtonChipFilter
end

do
	local SecondaryButtonChipFilter = React.Component:extend("SecondaryButtonChipFilter")
	SecondaryButtonChipFilter.defaultProps = {
		style = DEFAULTS.SECONDARY.STYLE,
		onClick = DEFAULTS.SECONDARY.ON_CLICK,
		text = DEFAULTS.SECONDARY.TEXT,
		isInitiallySelected = DEFAULTS.SECONDARY.IS_INITIALLY_SELECTED,
		isEnabled = DEFAULTS.SECONDARY.IS_ENABLED,
		elevation = DEFAULTS.SECONDARY.ELEVATION,
	}
	function SecondaryButtonChipFilter:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			isInitiallySelected = _Value(self.defaultProps.isInitiallySelected),
			isEnabled = _Value(self.defaultProps.isEnabled),
			elevation = _Value(self.defaultProps.elevation),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.secondary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.isInitiallySelected,
			self._internalStates.isEnabled,
			self._internalStates.elevation
		)
	end

	function SecondaryButtonChipFilter:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return React.createElement(ReactRoblox.createPortal, props)
	end
	function SecondaryButtonChipFilter:componentDidMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function SecondaryButtonChipFilter:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Secondary = SecondaryButtonChipFilter
end

do
	local TertiaryButtonChipFilter = React.Component:extend("TertiaryButtonChipFilter")
	TertiaryButtonChipFilter.defaultProps = {
		style = DEFAULTS.TERTIARY.STYLE,
		onClick = DEFAULTS.TERTIARY.ON_CLICK,
		text = DEFAULTS.TERTIARY.TEXT,
		isInitiallySelected = DEFAULTS.TERTIARY.IS_INITIALLY_SELECTED,
		isEnabled = DEFAULTS.TERTIARY.IS_ENABLED,
		elevation = DEFAULTS.TERTIARY.ELEVATION,
	}
	function TertiaryButtonChipFilter:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			isInitiallySelected = _Value(self.defaultProps.isInitiallySelected),
			isEnabled = _Value(self.defaultProps.isEnabled),
			elevation = _Value(self.defaultProps.elevation),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.tertiary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.isInitiallySelected,
			self._internalStates.isEnabled,
			self._internalStates.elevation
		)
	end

	function TertiaryButtonChipFilter:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return React.createElement(ReactRoblox.createPortal, props)
	end
	function TertiaryButtonChipFilter:componentDidMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function TertiaryButtonChipFilter:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Tertiary = TertiaryButtonChipFilter
end

return Interface


--!strict
-- this script was generated by the build system, please do not make manual edits
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))
local Roact = require(_Packages:WaitForChild("Roact"))

-- Modules
local Types = require(_Package:WaitForChild("Types"))
local Style = require(_Package:WaitForChild("Style"))

local Source = require(script.Parent:WaitForChild("ColdFusion"))

-- Types
type Maid = Maid.Maid
type Style = Style.Style
type FontData = Types.FontData
type OptionData = Types.OptionData
type ButtonData = Types.ButtonData
type ImageData = Types.ImageData
type CanBeState<V> = ColdFusion.CanBeState<V>
-- Constants
local DEFAULTS = require(script.Parent:WaitForChild("Defaults"))
-- Variables
-- References
-- Private Functions
-- Class
local Interface = {}

do
	local NewButtonChipFilter = Roact.Component:extend("NewButtonChipFilter")
	NewButtonChipFilter.defaultProps = {
		onClick = DEFAULTS.NEW.ON_CLICK,
		isInitiallySelected = DEFAULTS.NEW.IS_INITIALLY_SELECTED,
		text = DEFAULTS.NEW.TEXT,
		textColor = DEFAULTS.NEW.TEXT_COLOR,
		disabledTextColor = DEFAULTS.NEW.DISABLED_TEXT_COLOR,
		fillTextColor = DEFAULTS.NEW.FILL_TEXT_COLOR,
		disabledFillTextColor = DEFAULTS.NEW.DISABLED_FILL_TEXT_COLOR,
		disabledFillColor = DEFAULTS.NEW.DISABLED_FILL_COLOR,
		isEnabled = DEFAULTS.NEW.IS_ENABLED,
		elevation = DEFAULTS.NEW.ELEVATION,
		schemeType = DEFAULTS.NEW.SCHEME_TYPE,
		fontData = DEFAULTS.NEW.FONT_DATA,
		scale = DEFAULTS.NEW.SCALE,
	}
	function NewButtonChipFilter:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			onClick = _Value(self.defaultProps.onClick),
			isInitiallySelected = _Value(self.defaultProps.isInitiallySelected),
			text = _Value(self.defaultProps.text),
			textColor = _Value(self.defaultProps.textColor),
			disabledTextColor = _Value(self.defaultProps.disabledTextColor),
			fillTextColor = _Value(self.defaultProps.fillTextColor),
			disabledFillTextColor = _Value(self.defaultProps.disabledFillTextColor),
			disabledFillColor = _Value(self.defaultProps.disabledFillColor),
			isEnabled = _Value(self.defaultProps.isEnabled),
			elevation = _Value(self.defaultProps.elevation),
			schemeType = _Value(self.defaultProps.schemeType),
			fontData = _Value(self.defaultProps.fontData),
			scale = _Value(self.defaultProps.scale),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.new(
			self._internalStates.onClick,
			self._internalStates.isInitiallySelected,
			self._internalStates.text,
			self._internalStates.textColor,
			self._internalStates.disabledTextColor,
			self._internalStates.fillTextColor,
			self._internalStates.disabledFillTextColor,
			self._internalStates.disabledFillColor,
			self._internalStates.isEnabled,
			self._internalStates.elevation,
			self._internalStates.schemeType,
			self._internalStates.fontData,
			self._internalStates.scale
		)
	end

	function NewButtonChipFilter:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return Roact.createElement(Roact.Portal, props)
	end
	function NewButtonChipFilter:didMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function NewButtonChipFilter:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.New = NewButtonChipFilter
end

do
	local PrimaryButtonChipFilter = Roact.Component:extend("PrimaryButtonChipFilter")
	PrimaryButtonChipFilter.defaultProps = {
		style = DEFAULTS.PRIMARY.STYLE,
		onClick = DEFAULTS.PRIMARY.ON_CLICK,
		text = DEFAULTS.PRIMARY.TEXT,
		isInitiallySelected = DEFAULTS.PRIMARY.IS_INITIALLY_SELECTED,
		isEnabled = DEFAULTS.PRIMARY.IS_ENABLED,
		elevation = DEFAULTS.PRIMARY.ELEVATION,
	}
	function PrimaryButtonChipFilter:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			isInitiallySelected = _Value(self.defaultProps.isInitiallySelected),
			isEnabled = _Value(self.defaultProps.isEnabled),
			elevation = _Value(self.defaultProps.elevation),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.primary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.isInitiallySelected,
			self._internalStates.isEnabled,
			self._internalStates.elevation
		)
	end

	function PrimaryButtonChipFilter:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return Roact.createElement(Roact.Portal, props)
	end
	function PrimaryButtonChipFilter:didMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function PrimaryButtonChipFilter:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Primary = PrimaryButtonChipFilter
end

do
	local SecondaryButtonChipFilter = Roact.Component:extend("SecondaryButtonChipFilter")
	SecondaryButtonChipFilter.defaultProps = {
		style = DEFAULTS.SECONDARY.STYLE,
		onClick = DEFAULTS.SECONDARY.ON_CLICK,
		text = DEFAULTS.SECONDARY.TEXT,
		isInitiallySelected = DEFAULTS.SECONDARY.IS_INITIALLY_SELECTED,
		isEnabled = DEFAULTS.SECONDARY.IS_ENABLED,
		elevation = DEFAULTS.SECONDARY.ELEVATION,
	}
	function SecondaryButtonChipFilter:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			isInitiallySelected = _Value(self.defaultProps.isInitiallySelected),
			isEnabled = _Value(self.defaultProps.isEnabled),
			elevation = _Value(self.defaultProps.elevation),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.secondary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.isInitiallySelected,
			self._internalStates.isEnabled,
			self._internalStates.elevation
		)
	end

	function SecondaryButtonChipFilter:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return Roact.createElement(Roact.Portal, props)
	end
	function SecondaryButtonChipFilter:didMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function SecondaryButtonChipFilter:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Secondary = SecondaryButtonChipFilter
end

do
	local TertiaryButtonChipFilter = Roact.Component:extend("TertiaryButtonChipFilter")
	TertiaryButtonChipFilter.defaultProps = {
		style = DEFAULTS.TERTIARY.STYLE,
		onClick = DEFAULTS.TERTIARY.ON_CLICK,
		text = DEFAULTS.TERTIARY.TEXT,
		isInitiallySelected = DEFAULTS.TERTIARY.IS_INITIALLY_SELECTED,
		isEnabled = DEFAULTS.TERTIARY.IS_ENABLED,
		elevation = DEFAULTS.TERTIARY.ELEVATION,
	}
	function TertiaryButtonChipFilter:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			style = _Value(self.defaultProps.style),
			onClick = _Value(self.defaultProps.onClick),
			text = _Value(self.defaultProps.text),
			isInitiallySelected = _Value(self.defaultProps.isInitiallySelected),
			isEnabled = _Value(self.defaultProps.isEnabled),
			elevation = _Value(self.defaultProps.elevation),
		}
		table.freeze(self._internalStates)
		for k, v in pairs(initialProps) do
			if self._internalStates[k] then
				self._internalStates[k]:Set(v)
			end
		end
		self._instance = Source.tertiary(
			self._internalStates.style,
			self._internalStates.onClick,
			self._internalStates.text,
			self._internalStates.isInitiallySelected,
			self._internalStates.isEnabled,
			self._internalStates.elevation
		)
	end

	function TertiaryButtonChipFilter:render()
		local props = {
			target = self._instance,
		}
		for k, v in pairs(self.props) do
			if self.props[k] ~= v then
				if self._internalStates[k] then
					if v == nil then
						v = self.defaultProps[k]
					end
					self._internalStates[k]:Set(v)
				else
					props[k] = v
				end
			end
		end
		return Roact.createElement(Roact.Portal, props)
	end
	function TertiaryButtonChipFilter:didMount()
		for k, v in pairs(self) do
			if typeof(v) == "table" then
				if v["virtualNode"] then
					if self._instance.Parent ~= v["virtualNode"]["hostParent"] then
						self._instance.Parent = v["virtualNode"]["hostParent"]
					end
					break
				end
			end
		end
	end
	function TertiaryButtonChipFilter:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Tertiary = TertiaryButtonChipFilter
end

return Interface


--!strict
-- this script was generated by the build system, please do not make manual edits
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))

-- Modules
local Types = require(_Package:WaitForChild("Types"))
local Style = require(_Package:WaitForChild("Style"))
local Enums = require(_Package:WaitForChild("Enums"))

local Translators = require(_Package:WaitForChild("Translators"))

local Source = require(script.Parent:WaitForChild("ColdFusion"))

-- Types
type Maid = Maid.Maid
type Style = Style.Style
type FontData = Types.FontData
type OptionData = Types.OptionData
type ButtonData = Types.ButtonData
type ImageData = Types.ImageData
type CanBeState<V> = ColdFusion.CanBeState<V>
type Wrapper<BaseInstance, Definition, ClassName> = Translators.Wrapper<BaseInstance, Definition, ClassName>

export type FilterWrapperDefinition = {
	OnClick: (isSelected: boolean) -> (),
	IsInitiallySelected: boolean,
	Text: string,
	TextColor: Color3,
	DisabledTextColor: Color3,
	FillTextColor: Color3,
	DisabledFillTextColor: Color3,
	DisabledFillColor: Color3,
	IsEnabled: boolean,
	Elevation: number,
	SchemeType: Enums.SchemeType,
	FontData: FontData,
	Scale: number,
}
export type FilterWrapper = Wrapper<GuiObject, FilterWrapperDefinition, "Filter">

export type StyledFilterWrapperDefinition = {
	Style: Style,
	OnClick: (isSelected: boolean) -> (),
	Text: string,
	IsInitiallySelected: boolean,
	IsEnabled: boolean?,
	Elevation: number?,
}
export type StyledFilterWrapper = Wrapper<GuiObject, StyledFilterWrapperDefinition, "StyledFilter">
-- Constants
local DEFAULTS = require(script.Parent:WaitForChild("Defaults"))
-- Variables
-- References
-- Private Functions
-- Interface
local Interface = {}

function Interface.new(): StyledFilterWrapper
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local _Value = _fuse.Value
	local definition = {
		OnClick = _Value(function(isSelected: boolean) end),
		IsInitiallySelected = _Value(false),
		Text = _Value("Filter"),
		TextColor = _Value(Color3.new()),
		DisabledTextColor = _Value(Color3.new()),
		FillTextColor = _Value(Color3.new()),
		DisabledFillTextColor = _Value(Color3.new()),
		DisabledFillColor = _Value(Color3.new()),
		IsEnabled = _Value(true),
		Elevation = _Value(0),
		SchemeType = _Value(Enums.SchemeType.Light),
		FontData = _Value(Types.FontData.new(Font.fromEnum(Enum.Font.SourceSans), 14)),
		Scale = _Value(1),
	}
	local defaults: { [string]: unknown? } = {
		onClick = DEFAULTS.NEW.ON_CLICK,
		isInitiallySelected = DEFAULTS.NEW.IS_INITIALLY_SELECTED,
		text = DEFAULTS.NEW.TEXT,
		textColor = DEFAULTS.NEW.TEXT_COLOR,
		disabledTextColor = DEFAULTS.NEW.DISABLED_TEXT_COLOR,
		fillTextColor = DEFAULTS.NEW.FILL_TEXT_COLOR,
		disabledFillTextColor = DEFAULTS.NEW.DISABLED_FILL_TEXT_COLOR,
		disabledFillColor = DEFAULTS.NEW.DISABLED_FILL_COLOR,
		isEnabled = DEFAULTS.NEW.IS_ENABLED,
		elevation = DEFAULTS.NEW.ELEVATION,
		schemeType = DEFAULTS.NEW.SCHEME_TYPE,
		fontData = DEFAULTS.NEW.FONT_DATA,
		scale = DEFAULTS.NEW.SCALE,
	}
	local inst: GuiObject = Source.new(
		definition.OnClick,
		definition.IsInitiallySelected,
		definition.Text,
		definition.TextColor,
		definition.DisabledTextColor,
		definition.FillTextColor,
		definition.DisabledFillTextColor,
		definition.DisabledFillColor,
		definition.IsEnabled,
		definition.Elevation,
		definition.SchemeType,
		definition.FontData,
		definition.Scale
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledFilter", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.primary(): StyledFilterWrapper
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local _Value = _fuse.Value
	local definition = {
		Style = _Value(Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7))),
		OnClick = _Value(function(isSelected: boolean) end),
		Text = _Value("Filter"),
		IsInitiallySelected = _Value(false),
		IsEnabled = _Value(true),
		Elevation = _Value(0),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.PRIMARY.STYLE,
		onClick = DEFAULTS.PRIMARY.ON_CLICK,
		text = DEFAULTS.PRIMARY.TEXT,
		isInitiallySelected = DEFAULTS.PRIMARY.IS_INITIALLY_SELECTED,
		isEnabled = DEFAULTS.PRIMARY.IS_ENABLED,
		elevation = DEFAULTS.PRIMARY.ELEVATION,
	}
	local inst: GuiObject = Source.primary(
		definition.Style,
		definition.OnClick,
		definition.Text,
		definition.IsInitiallySelected,
		definition.IsEnabled,
		definition.Elevation
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledFilter", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.secondary(): StyledFilterWrapper
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local _Value = _fuse.Value
	local definition = {
		Style = _Value(Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7))),
		OnClick = _Value(function(isSelected: boolean) end),
		Text = _Value("Filter"),
		IsInitiallySelected = _Value(false),
		IsEnabled = _Value(true),
		Elevation = _Value(0),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.SECONDARY.STYLE,
		onClick = DEFAULTS.SECONDARY.ON_CLICK,
		text = DEFAULTS.SECONDARY.TEXT,
		isInitiallySelected = DEFAULTS.SECONDARY.IS_INITIALLY_SELECTED,
		isEnabled = DEFAULTS.SECONDARY.IS_ENABLED,
		elevation = DEFAULTS.SECONDARY.ELEVATION,
	}
	local inst: GuiObject = Source.secondary(
		definition.Style,
		definition.OnClick,
		definition.Text,
		definition.IsInitiallySelected,
		definition.IsEnabled,
		definition.Elevation
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledFilter", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.tertiary(): StyledFilterWrapper
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local _Value = _fuse.Value
	local definition = {
		Style = _Value(Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7))),
		OnClick = _Value(function(isSelected: boolean) end),
		Text = _Value("Filter"),
		IsInitiallySelected = _Value(false),
		IsEnabled = _Value(true),
		Elevation = _Value(0),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.TERTIARY.STYLE,
		onClick = DEFAULTS.TERTIARY.ON_CLICK,
		text = DEFAULTS.TERTIARY.TEXT,
		isInitiallySelected = DEFAULTS.TERTIARY.IS_INITIALLY_SELECTED,
		isEnabled = DEFAULTS.TERTIARY.IS_ENABLED,
		elevation = DEFAULTS.TERTIARY.ELEVATION,
	}
	local inst: GuiObject = Source.tertiary(
		definition.Style,
		definition.OnClick,
		definition.Text,
		definition.IsInitiallySelected,
		definition.IsEnabled,
		definition.Elevation
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledFilter", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

return Interface


--!strict
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))

-- Modules
local Style = require(_Package:WaitForChild("Style"))
local Enums = require(_Package:WaitForChild("Enums"))

-- Types
-- Constants
-- Variables
-- References

-- Class
return function(frame: Frame)
	local maid = Maid.new()
	task.spawn(function()
		local function makeHalfFrame(isDarkMode: boolean, color: Color3): Frame
			local style = Style.new(
				1.5,
				Enum.Font.SourceSans,
				if isDarkMode then Enums.SchemeType.Dark else Enums.SchemeType.Light,
				color
			)

			local halfFrame = maid:GiveTask(Instance.new("Frame"))
			halfFrame.BackgroundColor3 = style:GetColor(Enums.ColorRoleType.Surface)
			halfFrame.BorderSizePixel = 0
			local listLayout = maid:GiveTask(Instance.new("UIListLayout"))
			listLayout.FillDirection = Enum.FillDirection.Vertical
			listLayout.Padding = UDim.new(0, 10)
			listLayout.VerticalAlignment = Enum.VerticalAlignment.Center
			listLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
			listLayout.Parent = halfFrame

			local Module = require(script.Parent:WaitForChild("ColdFusion"))

			do
				local button = maid:GiveTask(
					Module.new(
						function(isSel: boolean)
							print(`is selected 1: {isSel}`)
						end,
						false,
						"Filter chip",
						style:GetColor(Enums.ColorRoleType.Primary),
						style:GetColor(Enums.ColorRoleType.OnSurface),
						style:GetColor(Enums.ColorRoleType.OnPrimary),
						style:GetColor(Enums.ColorRoleType.OnSurfaceVariant),
						style:GetColor(Enums.ColorRoleType.SurfaceVariant),
						true,
						0,
						style.SchemeType,
						style:GetFontData(Enums.FontType.LabelLarge),
						style.Scale
					)
				)
				button.Parent = halfFrame
			end

			do
				local button = maid:GiveTask(
					Module.new(
						function(isSel: boolean)
							print(`is selected 2: {isSel}`)
						end,
						false,
						"Disabled chip",
						style:GetColor(Enums.ColorRoleType.Primary),
						style:GetColor(Enums.ColorRoleType.OnSurface),
						style:GetColor(Enums.ColorRoleType.OnPrimary),
						style:GetColor(Enums.ColorRoleType.OnSurfaceVariant),
						style:GetColor(Enums.ColorRoleType.SurfaceVariant),
						false,
						0,
						style.SchemeType,
						style:GetFontData(Enums.FontType.LabelLarge),
						style.Scale
					)
				)
				button.Parent = halfFrame
			end

			do
				local button = maid:GiveTask(
					Module.new(
						function(isSel: boolean)
							print(`is selected 3: {isSel}`)
						end,
						true,
						"Disabled chip",
						style:GetColor(Enums.ColorRoleType.Primary),
						style:GetColor(Enums.ColorRoleType.OnSurface),
						style:GetColor(Enums.ColorRoleType.OnPrimary),
						style:GetColor(Enums.ColorRoleType.OnSurfaceVariant),
						style:GetColor(Enums.ColorRoleType.SurfaceVariant),
						false,
						0,
						style.SchemeType,
						style:GetFontData(Enums.FontType.LabelLarge),
						style.Scale
					)
				)
				button.Parent = halfFrame
			end

			return halfFrame
		end

		local COLORS: { [number]: Color3 } = {
			Color3.fromHSV(0, 0.9, 0.8),
			-- Color3.fromHSV(0, 0.25, 0.8),
			-- Color3.fromHSV(0, 0.9, 0.5),
			Color3.fromHSV(0.6, 0.9, 0.7),
			Color3.fromHSV(0.35, 0.9, 0.7),
			-- Color3.fromHSV(0.1, 0.9, 0.7),
		}

		for i, color in ipairs(COLORS) do
			local x = (i - 1) / #COLORS
			local width = 1 / #COLORS
			local dark = makeHalfFrame(true, color)

			dark.Size = UDim2.fromScale(width, 0.5)
			dark.Position = UDim2.fromScale(x, 0.5)
			dark.Parent = frame

			local bright = makeHalfFrame(false, color)
			bright.Size = UDim2.fromScale(width, 0.5)
			bright.Position = UDim2.fromScale(x, 0)
			bright.Parent = frame
		end
	end)
	return function()
		maid:Destroy()
	end
end


--!strict
local _Package = script.Parent.Parent.Parent.Parent.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))

-- Modules
local Style = require(_Package:WaitForChild("Style"))
local Enums = require(_Package:WaitForChild("Enums"))

-- Types
-- Constants
-- Variables
-- References

-- Class
return function(frame: Frame)
	local maid = Maid.new()
	task.spawn(function()
		local function makeHalfFrame(isDarkMode: boolean, color: Color3): Frame
			local style = Style.new(
				1.5,
				Enum.Font.SourceSans,
				if isDarkMode then Enums.SchemeType.Dark else Enums.SchemeType.Light,
				color
			)

			local halfFrame = maid:GiveTask(Instance.new("Frame"))
			halfFrame.BackgroundColor3 = style:GetColor(Enums.ColorRoleType.Surface)
			halfFrame.BorderSizePixel = 0

			local listLayout = maid:GiveTask(Instance.new("UIListLayout"))
			listLayout.FillDirection = Enum.FillDirection.Vertical
			listLayout.Padding = UDim.new(0, 10)
			listLayout.VerticalAlignment = Enum.VerticalAlignment.Center
			listLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
			listLayout.Parent = halfFrame

			local Module = require(script.Parent:WaitForChild("ColdFusion"))

			do
				local button = maid:GiveTask(Module.primary(style, function()
					print("click")
				end, "primary", false))
				button.Parent = halfFrame
			end

			do
				local button = maid:GiveTask(Module.secondary(style, function()
					print("click")
				end, "secondary", false))
				button.Parent = halfFrame
			end

			do
				local button = maid:GiveTask(Module.tertiary(style, function()
					print("click")
				end, "tertiary", false))
				button.Parent = halfFrame
			end

			return halfFrame
		end

		local COLORS: { [number]: Color3 } = {
			Color3.fromHSV(0, 0.9, 0.8),
			-- Color3.fromHSV(0, 0.25, 0.8),
			-- Color3.fromHSV(0, 0.9, 0.5),
			Color3.fromHSV(0.6, 0.9, 0.7),
			Color3.fromHSV(0.35, 0.9, 0.7),
			-- Color3.fromHSV(0.1, 0.9, 0.7),
		}

		for i, color in ipairs(COLORS) do
			local x = (i - 1) / #COLORS
			local width = 1 / #COLORS
			local dark = makeHalfFrame(true, color)

			dark.Size = UDim2.fromScale(width, 0.5)
			dark.Position = UDim2.fromScale(x, 0.5)
			dark.Parent = frame

			local bright = makeHalfFrame(false, color)
			bright.Size = UDim2.fromScale(width, 0.5)
			bright.Position = UDim2.fromScale(x, 0)
			bright.Parent = frame
		end
	end)
	return function()
		maid:Destroy()
	end
end