--!strict
-- this script was generated by the build system, please do not make manual edits
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"))
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 NewSearchText = Roact.Component:extend("NewSearchText")
	NewSearchText.defaultProps = {
		onInputEntered = DEFAULTS.NEW.ON_INPUT_ENTERED,
		label = DEFAULTS.NEW.LABEL,
		optionSolver = DEFAULTS.NEW.OPTION_SOLVER,
		optionConstructor = DEFAULTS.NEW.OPTION_CONSTRUCTOR,
		textColor = DEFAULTS.NEW.TEXT_COLOR,
		backgroundColor = DEFAULTS.NEW.BACKGROUND_COLOR,
		elevation = DEFAULTS.NEW.ELEVATION,
		schemeType = DEFAULTS.NEW.SCHEME_TYPE,
		fontData = DEFAULTS.NEW.FONT_DATA,
		scale = DEFAULTS.NEW.SCALE,
	}
	function NewSearchText:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			onInputEntered = _Value(self.defaultProps.onInputEntered),
			label = _Value(self.defaultProps.label),
			optionSolver = _Value(self.defaultProps.optionSolver),
			optionConstructor = _Value(self.defaultProps.optionConstructor),
			textColor = _Value(self.defaultProps.textColor),
			backgroundColor = _Value(self.defaultProps.backgroundColor),
			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.onInputEntered,
			self._internalStates.label,
			self._internalStates.optionSolver,
			self._internalStates.optionConstructor,
			self._internalStates.textColor,
			self._internalStates.backgroundColor,
			self._internalStates.elevation,
			self._internalStates.schemeType,
			self._internalStates.fontData,
			self._internalStates.scale
		)
	end

	function NewSearchText: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 NewSearchText: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 NewSearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.New = NewSearchText
end

do
	local OnPrimarySearchText = Roact.Component:extend("OnPrimarySearchText")
	OnPrimarySearchText.defaultProps = {
		style = DEFAULTS.ON_PRIMARY.STYLE,
		onInputEntered = DEFAULTS.ON_PRIMARY.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_PRIMARY.LABEL,
		optionSolver = DEFAULTS.ON_PRIMARY.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_PRIMARY.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_PRIMARY.ELEVATION,
	}
	function OnPrimarySearchText: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),
			onInputEntered = _Value(self.defaultProps.onInputEntered),
			label = _Value(self.defaultProps.label),
			optionSolver = _Value(self.defaultProps.optionSolver),
			optionConstructor = _Value(self.defaultProps.optionConstructor),
			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.onPrimary(
			self._internalStates.style,
			self._internalStates.onInputEntered,
			self._internalStates.label,
			self._internalStates.optionSolver,
			self._internalStates.optionConstructor,
			self._internalStates.elevation
		)
	end

	function OnPrimarySearchText: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 OnPrimarySearchText: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 OnPrimarySearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnPrimary = OnPrimarySearchText
end

do
	local OnSecondarySearchText = Roact.Component:extend("OnSecondarySearchText")
	OnSecondarySearchText.defaultProps = {
		style = DEFAULTS.ON_SECONDARY.STYLE,
		onInputEntered = DEFAULTS.ON_SECONDARY.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_SECONDARY.LABEL,
		optionSolver = DEFAULTS.ON_SECONDARY.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_SECONDARY.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_SECONDARY.ELEVATION,
	}
	function OnSecondarySearchText: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),
			onInputEntered = _Value(self.defaultProps.onInputEntered),
			label = _Value(self.defaultProps.label),
			optionSolver = _Value(self.defaultProps.optionSolver),
			optionConstructor = _Value(self.defaultProps.optionConstructor),
			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.onSecondary(
			self._internalStates.style,
			self._internalStates.onInputEntered,
			self._internalStates.label,
			self._internalStates.optionSolver,
			self._internalStates.optionConstructor,
			self._internalStates.elevation
		)
	end

	function OnSecondarySearchText: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 OnSecondarySearchText: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 OnSecondarySearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnSecondary = OnSecondarySearchText
end

do
	local OnTertiarySearchText = Roact.Component:extend("OnTertiarySearchText")
	OnTertiarySearchText.defaultProps = {
		style = DEFAULTS.ON_TERTIARY.STYLE,
		onInputEntered = DEFAULTS.ON_TERTIARY.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_TERTIARY.LABEL,
		optionSolver = DEFAULTS.ON_TERTIARY.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_TERTIARY.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_TERTIARY.ELEVATION,
	}
	function OnTertiarySearchText: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),
			onInputEntered = _Value(self.defaultProps.onInputEntered),
			label = _Value(self.defaultProps.label),
			optionSolver = _Value(self.defaultProps.optionSolver),
			optionConstructor = _Value(self.defaultProps.optionConstructor),
			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.onTertiary(
			self._internalStates.style,
			self._internalStates.onInputEntered,
			self._internalStates.label,
			self._internalStates.optionSolver,
			self._internalStates.optionConstructor,
			self._internalStates.elevation
		)
	end

	function OnTertiarySearchText: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 OnTertiarySearchText: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 OnTertiarySearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnTertiary = OnTertiarySearchText
end

do
	local OnPrimaryContainerSearchText = Roact.Component:extend("OnPrimaryContainerSearchText")
	OnPrimaryContainerSearchText.defaultProps = {
		style = DEFAULTS.ON_PRIMARY_CONTAINER.STYLE,
		onInputEntered = DEFAULTS.ON_PRIMARY_CONTAINER.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_PRIMARY_CONTAINER.LABEL,
		optionSolver = DEFAULTS.ON_PRIMARY_CONTAINER.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_PRIMARY_CONTAINER.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_PRIMARY_CONTAINER.ELEVATION,
	}
	function OnPrimaryContainerSearchText: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),
			onInputEntered = _Value(self.defaultProps.onInputEntered),
			label = _Value(self.defaultProps.label),
			optionSolver = _Value(self.defaultProps.optionSolver),
			optionConstructor = _Value(self.defaultProps.optionConstructor),
			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.onPrimaryContainer(
			self._internalStates.style,
			self._internalStates.onInputEntered,
			self._internalStates.label,
			self._internalStates.optionSolver,
			self._internalStates.optionConstructor,
			self._internalStates.elevation
		)
	end

	function OnPrimaryContainerSearchText: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 OnPrimaryContainerSearchText: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 OnPrimaryContainerSearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnPrimaryContainer = OnPrimaryContainerSearchText
end

do
	local OnSecondaryContainerSearchText = Roact.Component:extend("OnSecondaryContainerSearchText")
	OnSecondaryContainerSearchText.defaultProps = {
		style = DEFAULTS.ON_SECONDARY_CONTAINER.STYLE,
		onInputEntered = DEFAULTS.ON_SECONDARY_CONTAINER.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_SECONDARY_CONTAINER.LABEL,
		optionSolver = DEFAULTS.ON_SECONDARY_CONTAINER.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_SECONDARY_CONTAINER.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_SECONDARY_CONTAINER.ELEVATION,
	}
	function OnSecondaryContainerSearchText: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),
			onInputEntered = _Value(self.defaultProps.onInputEntered),
			label = _Value(self.defaultProps.label),
			optionSolver = _Value(self.defaultProps.optionSolver),
			optionConstructor = _Value(self.defaultProps.optionConstructor),
			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.onSecondaryContainer(
			self._internalStates.style,
			self._internalStates.onInputEntered,
			self._internalStates.label,
			self._internalStates.optionSolver,
			self._internalStates.optionConstructor,
			self._internalStates.elevation
		)
	end

	function OnSecondaryContainerSearchText: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 OnSecondaryContainerSearchText: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 OnSecondaryContainerSearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnSecondaryContainer = OnSecondaryContainerSearchText
end

do
	local OnTertiaryContainerSearchText = Roact.Component:extend("OnTertiaryContainerSearchText")
	OnTertiaryContainerSearchText.defaultProps = {
		style = DEFAULTS.ON_TERTIARY_CONTAINER.STYLE,
		onInputEntered = DEFAULTS.ON_TERTIARY_CONTAINER.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_TERTIARY_CONTAINER.LABEL,
		optionSolver = DEFAULTS.ON_TERTIARY_CONTAINER.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_TERTIARY_CONTAINER.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_TERTIARY_CONTAINER.ELEVATION,
	}
	function OnTertiaryContainerSearchText: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),
			onInputEntered = _Value(self.defaultProps.onInputEntered),
			label = _Value(self.defaultProps.label),
			optionSolver = _Value(self.defaultProps.optionSolver),
			optionConstructor = _Value(self.defaultProps.optionConstructor),
			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.onTertiaryContainer(
			self._internalStates.style,
			self._internalStates.onInputEntered,
			self._internalStates.label,
			self._internalStates.optionSolver,
			self._internalStates.optionConstructor,
			self._internalStates.elevation
		)
	end

	function OnTertiaryContainerSearchText: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 OnTertiaryContainerSearchText: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 OnTertiaryContainerSearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnTertiaryContainer = OnTertiaryContainerSearchText
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
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 TextWrapperDefinition = {
	OnInputEntered: (input: string) -> string,
	Label: string?,
	OptionSolver: (input: string) -> { string },
	OptionConstructor: ((key: string, onClick: (key: string) -> ()) -> GuiObject)?,
	TextColor: Color3,
	BackgroundColor: Color3,
	Elevation: number,
	SchemeType: Enums.SchemeType,
	FontData: FontData,
	Scale: number,
}
export type TextWrapper = Wrapper<GuiObject, TextWrapperDefinition, "Text">

export type StyledTextWrapperDefinition = {
	Style: Style,
	OnInputEntered: (input: string) -> string,
	Label: string?,
	OptionSolver: (input: string) -> { string },
	OptionConstructor: ((key: string, onClick: (key: string) -> ()) -> GuiObject)?,
	Elevation: number?,
}
export type StyledTextWrapper = Wrapper<GuiObject, StyledTextWrapperDefinition, "StyledText">
-- Constants
local DEFAULTS = require(script.Parent:WaitForChild("Defaults"))
-- Variables
-- References
-- Private Functions
-- Interface
local Interface = {}

function Interface.new(): StyledTextWrapper
	local maid = Maid.new()
	local _fuse = ColdFusion.fuse(maid)
	local _Value = _fuse.Value
	local definition = {
		OnInputEntered = _Value(function(input: string)
			return input
		end),
		Label = _Value(""),
		OptionSolver = _Value(function(input: string)
			return {}
		end),
		OptionConstructor = _Value(nil),
		TextColor = _Value(Color3.new()),
		BackgroundColor = _Value(Color3.new()),
		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? } = {
		onInputEntered = DEFAULTS.NEW.ON_INPUT_ENTERED,
		label = DEFAULTS.NEW.LABEL,
		optionSolver = DEFAULTS.NEW.OPTION_SOLVER,
		optionConstructor = DEFAULTS.NEW.OPTION_CONSTRUCTOR,
		textColor = DEFAULTS.NEW.TEXT_COLOR,
		backgroundColor = DEFAULTS.NEW.BACKGROUND_COLOR,
		elevation = DEFAULTS.NEW.ELEVATION,
		schemeType = DEFAULTS.NEW.SCHEME_TYPE,
		fontData = DEFAULTS.NEW.FONT_DATA,
		scale = DEFAULTS.NEW.SCALE,
	}
	local inst: GuiObject = Source.new(
		definition.OnInputEntered,
		definition.Label,
		definition.OptionSolver,
		definition.OptionConstructor,
		definition.TextColor,
		definition.BackgroundColor,
		definition.Elevation,
		definition.SchemeType,
		definition.FontData,
		definition.Scale
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledText", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.onPrimary(): StyledTextWrapper
	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))),
		OnInputEntered = _Value(function(input: string)
			return input
		end),
		Label = _Value(""),
		OptionSolver = _Value(function(input: string)
			return {}
		end),
		OptionConstructor = _Value(nil),
		Elevation = _Value(0),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.ON_PRIMARY.STYLE,
		onInputEntered = DEFAULTS.ON_PRIMARY.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_PRIMARY.LABEL,
		optionSolver = DEFAULTS.ON_PRIMARY.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_PRIMARY.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_PRIMARY.ELEVATION,
	}
	local inst: GuiObject = Source.onPrimary(
		definition.Style,
		definition.OnInputEntered,
		definition.Label,
		definition.OptionSolver,
		definition.OptionConstructor,
		definition.Elevation
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledText", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.onSecondary(): StyledTextWrapper
	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))),
		OnInputEntered = _Value(function(input: string)
			return input
		end),
		Label = _Value(""),
		OptionSolver = _Value(function(input: string)
			return {}
		end),
		OptionConstructor = _Value(nil),
		Elevation = _Value(0),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.ON_SECONDARY.STYLE,
		onInputEntered = DEFAULTS.ON_SECONDARY.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_SECONDARY.LABEL,
		optionSolver = DEFAULTS.ON_SECONDARY.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_SECONDARY.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_SECONDARY.ELEVATION,
	}
	local inst: GuiObject = Source.onSecondary(
		definition.Style,
		definition.OnInputEntered,
		definition.Label,
		definition.OptionSolver,
		definition.OptionConstructor,
		definition.Elevation
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledText", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.onTertiary(): StyledTextWrapper
	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))),
		OnInputEntered = _Value(function(input: string)
			return input
		end),
		Label = _Value(""),
		OptionSolver = _Value(function(input: string)
			return {}
		end),
		OptionConstructor = _Value(nil),
		Elevation = _Value(0),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.ON_TERTIARY.STYLE,
		onInputEntered = DEFAULTS.ON_TERTIARY.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_TERTIARY.LABEL,
		optionSolver = DEFAULTS.ON_TERTIARY.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_TERTIARY.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_TERTIARY.ELEVATION,
	}
	local inst: GuiObject = Source.onTertiary(
		definition.Style,
		definition.OnInputEntered,
		definition.Label,
		definition.OptionSolver,
		definition.OptionConstructor,
		definition.Elevation
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledText", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.onPrimaryContainer(): StyledTextWrapper
	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))),
		OnInputEntered = _Value(function(input: string)
			return input
		end),
		Label = _Value(""),
		OptionSolver = _Value(function(input: string)
			return {}
		end),
		OptionConstructor = _Value(nil),
		Elevation = _Value(0),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.ON_PRIMARY_CONTAINER.STYLE,
		onInputEntered = DEFAULTS.ON_PRIMARY_CONTAINER.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_PRIMARY_CONTAINER.LABEL,
		optionSolver = DEFAULTS.ON_PRIMARY_CONTAINER.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_PRIMARY_CONTAINER.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_PRIMARY_CONTAINER.ELEVATION,
	}
	local inst: GuiObject = Source.onPrimaryContainer(
		definition.Style,
		definition.OnInputEntered,
		definition.Label,
		definition.OptionSolver,
		definition.OptionConstructor,
		definition.Elevation
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledText", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.onSecondaryContainer(): StyledTextWrapper
	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))),
		OnInputEntered = _Value(function(input: string)
			return input
		end),
		Label = _Value(""),
		OptionSolver = _Value(function(input: string)
			return {}
		end),
		OptionConstructor = _Value(nil),
		Elevation = _Value(0),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.ON_SECONDARY_CONTAINER.STYLE,
		onInputEntered = DEFAULTS.ON_SECONDARY_CONTAINER.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_SECONDARY_CONTAINER.LABEL,
		optionSolver = DEFAULTS.ON_SECONDARY_CONTAINER.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_SECONDARY_CONTAINER.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_SECONDARY_CONTAINER.ELEVATION,
	}
	local inst: GuiObject = Source.onSecondaryContainer(
		definition.Style,
		definition.OnInputEntered,
		definition.Label,
		definition.OptionSolver,
		definition.OptionConstructor,
		definition.Elevation
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledText", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.onTertiaryContainer(): StyledTextWrapper
	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))),
		OnInputEntered = _Value(function(input: string)
			return input
		end),
		Label = _Value(""),
		OptionSolver = _Value(function(input: string)
			return {}
		end),
		OptionConstructor = _Value(nil),
		Elevation = _Value(0),
	}
	local defaults: { [string]: unknown? } = {
		style = DEFAULTS.ON_TERTIARY_CONTAINER.STYLE,
		onInputEntered = DEFAULTS.ON_TERTIARY_CONTAINER.ON_INPUT_ENTERED,
		label = DEFAULTS.ON_TERTIARY_CONTAINER.LABEL,
		optionSolver = DEFAULTS.ON_TERTIARY_CONTAINER.OPTION_SOLVER,
		optionConstructor = DEFAULTS.ON_TERTIARY_CONTAINER.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.ON_TERTIARY_CONTAINER.ELEVATION,
	}
	local inst: GuiObject = Source.onTertiaryContainer(
		definition.Style,
		definition.OnInputEntered,
		definition.Label,
		definition.OptionSolver,
		definition.OptionConstructor,
		definition.Elevation
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	local wrapper, cleanUp = Translators.ColdFusion.toWrapper("StyledText", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

return Interface


--!strict
local _Package = script.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(input: string): string
							print(`entered: {input}`)
							return input
						end,
						"Test search here",
						function(input: string): { [number]: string }
							local options: { [number]: string } = {}
							for i = 1, math.random(12) do
								options[i] = string.rep(input, math.random(5))
							end
							return options
						end,
						nil,
						style:GetColor(Enums.ColorRoleType.Primary),
						style:GetColor(Enums.ColorRoleType.PrimaryContainer),
						0,
						style.SchemeType,
						style:GetFontData(Enums.FontType.LabelLarge),
						style.Scale
					)
				)
				button.Size = UDim2.new(0.8, 0, 0, 0)
				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"))

-- 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,
				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
			halfFrame.BackgroundTransparency = 0.5
			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.onPrimaryContainer(
					style,
					function(input: string): string
						print(`entered: {input}`)
						return input
					end,
					"Primary container search",
					function(input: string): { [number]: string }
						local options: { [number]: string } = {}
						for i = 1, math.random(12) do
							options[i] = string.rep(input, math.random(5))
						end
						return options
					end,
					nil,
					0
				))
				button.Parent = halfFrame
			end
			do
				local button =
					maid:GiveTask(Module.onSecondaryContainer(
						style,
						function(input: string): string
							print(`entered: {input}`)
							return input
						end,
						"Secondary container search",
						function(input: string): { [number]: string }
							local options: { [number]: string } = {}
							for i = 1, math.random(12) do
								options[i] = string.rep(input, math.random(5))
							end
							return options
						end,
						nil,
						0
					))
				button.Parent = halfFrame
			end
			do
				local button = maid:GiveTask(Module.onTertiaryContainer(
					style,
					function(input: string): string
						print(`entered: {input}`)
						return input
					end,
					"Tertiary container search",
					function(input: string): { [number]: string }
						local options: { [number]: string } = {}
						for i = 1, math.random(12) do
							options[i] = string.rep(input, math.random(5))
						end
						return options
					end,
					nil,
					0
				))
				button.Parent = halfFrame
			end
			do
				local button = maid:GiveTask(Module.onPrimary(
					style,
					function(input: string): string
						print(`entered: {input}`)
						return input
					end,
					"Primary search",
					function(input: string): { [number]: string }
						local options: { [number]: string } = {}
						for i = 1, math.random(12) do
							options[i] = string.rep(input, math.random(5))
						end
						return options
					end,
					nil,
					0
				))
				button.Parent = halfFrame
			end
			do
				local button = maid:GiveTask(Module.onSecondary(
					style,
					function(input: string): string
						print(`entered: {input}`)
						return input
					end,
					"Secondary search",
					function(input: string): { [number]: string }
						local options: { [number]: string } = {}
						for i = 1, math.random(12) do
							options[i] = string.rep(input, math.random(5))
						end
						return options
					end,
					nil,
					0
				))
				button.Parent = halfFrame
			end
			do
				local button = maid:GiveTask(Module.onTertiary(
					style,
					function(input: string): string
						print(`entered: {input}`)
						return input
					end,
					"Tertiary search",
					function(input: string): { [number]: string }
						local options: { [number]: string } = {}
						for i = 1, math.random(12) do
							options[i] = string.rep(input, math.random(5))
						end
						return options
					end,
					nil,
					0
				))
				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
local _Packages = _Package.Parent
-- Services
local RunService = game:GetService("RunService")
-- 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 Util = require(_Package:WaitForChild("Util"))
local Enums = require(_Package:WaitForChild("Enums"))
local Theme = require(_Package:WaitForChild("Theme"))
local Typography = require(_Package:WaitForChild("Typography"))

-- Types
type Maid = Maid.Maid
type State<V> = ColdFusion.State<V>
type ValueState<V> = ColdFusion.ValueState<V>
type CanBeState<V> = ColdFusion.CanBeState<V>
type AppearanceData = Types.AppearanceData
type ImageData = Types.ImageData
type OptionData = Types.OptionData
type ButtonData = Types.ButtonData
type Style = Style.Style
type SwitchRenderData = {
	Text: AppearanceData,
	Button: AppearanceData,
	Background: AppearanceData,
	Outline: AppearanceData,
}
type FontData = Types.FontData

-- Constants
local DEFAULTS = require(script.Parent:WaitForChild("Defaults"))
local ICON_WIDTH_DP = 20
local BAR_HEIGHT_DP = 16
local CURSOR_HEIGHT_DP = 44
local CURSOR_WIDTH_PADDING_DP = 6
local CURSOR_WIDTH_DP = 4
local CURSOR_SELECTED_WIDTH_DP = 2

local BAR_LEFT_RIGHT_INNER_PADDING_DP = 4
local BAR_UP_DOWN_INNER_PADDING_DP = 6
local BUBBLE_GAP_DP = 4
local BUBBLE_UP_DOWN_PADDING = 12
local BUBBLE_LEFT_RIGHT_PADDING = 16
local ICON_PADDING_DP = 16
local MIN_WIDTH_DP = CURSOR_HEIGHT_DP * 4
local RIGHT_CIRCLE_IMAGE = "rbxassetid://15562060748"
local LEFT_CIRCLE_IMAGE = "rbxassetid://15562057345"
local CIRCLE_IMAGE_RECT = Rect.new(256, 256, 256, 256)
local DOT_DIAMETER_DP = BAR_HEIGHT_DP - (2 * BAR_UP_DOWN_INNER_PADDING_DP)

-- Variables
-- References
-- Private Functions
function newDot(colorState: State<Color3>, scaleState: State<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 out = _new("Frame")({
		BorderSizePixel = 0,
		BackgroundColor3 = colorState,
		Size = _Computed(function(sc: number): UDim2
			return UDim2.fromOffset(DOT_DIAMETER_DP * sc, DOT_DIAMETER_DP * sc)
		end, scaleState),
		AnchorPoint = Vector2.new(0.5, 0.5),
		Children = {
			_new("UICorner")({
				CornerRadius = UDim.new(0.5, 0),
			}),
		},
	}) :: GuiObject
	maid:GiveTask(out.Destroying:Connect(function()
		maid:Destroy()
	end))
	return out
end

local Interface = {}

Interface = {}

function Interface.onTertiary(
	style: CanBeState<Style>,
	onChange: CanBeState<(onChange: number) -> ()>,
	initialValue: CanBeState<number>,
	minimum: CanBeState<number?>,
	maximum: CanBeState<number?>,
	increment: CanBeState<number?>,
	leftTextOrIcon: CanBeState<string | ImageData | nil>,
	rightTextOrIcon: CanBeState<string | ImageData | nil>,
	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, DEFAULTS.ON_TERTIARY.STYLE)

	local out = Interface.new(
		_import(onChange, DEFAULTS.PRIMARY.ON_CHANGE),
		_import(initialValue, DEFAULTS.PRIMARY.INITIAL_VALUE),
		_import(minimum, DEFAULTS.PRIMARY.MINIMUM),
		_import(maximum, DEFAULTS.PRIMARY.MAXIMUM),
		_import(increment, DEFAULTS.PRIMARY.INCREMENT),
		_import(leftTextOrIcon, DEFAULTS.ON_TERTIARY.LEFT_TEXT_OR_ICON),
		_import(rightTextOrIcon, DEFAULTS.ON_TERTIARY.RIGHT_TEXT_OR_ICON),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnTertiary)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.Tertiary)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.TertiaryContainer)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnTertiaryContainer)
		end, styleState),
		_import(elevation, DEFAULTS.ON_TERTIARY.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.onSecondary(
	style: CanBeState<Style>,
	onChange: CanBeState<(onChange: number) -> ()>,
	initialValue: CanBeState<number>,
	minimum: CanBeState<number?>,
	maximum: CanBeState<number?>,
	increment: CanBeState<number?>,
	leftTextOrIcon: CanBeState<string | ImageData | nil>,
	rightTextOrIcon: CanBeState<string | ImageData | nil>,
	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, DEFAULTS.SECONDARY.STYLE)

	local out = Interface.new(
		_import(onChange, DEFAULTS.PRIMARY.ON_CHANGE),
		_import(initialValue, DEFAULTS.PRIMARY.INITIAL_VALUE),
		_import(minimum, DEFAULTS.PRIMARY.MINIMUM),
		_import(maximum, DEFAULTS.PRIMARY.MAXIMUM),
		_import(increment, DEFAULTS.PRIMARY.INCREMENT),
		_import(leftTextOrIcon, DEFAULTS.ON_SECONDARY.LEFT_TEXT_OR_ICON),
		_import(rightTextOrIcon, DEFAULTS.ON_SECONDARY.RIGHT_TEXT_OR_ICON),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnSecondary)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.Secondary)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.SecondaryContainer)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnSecondaryContainer)
		end, styleState),
		_import(elevation, DEFAULTS.ON_SECONDARY.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.onPrimary(
	style: CanBeState<Style>,
	onChange: CanBeState<(onChange: number) -> ()>,
	initialValue: CanBeState<number>,
	minimum: CanBeState<number?>,
	maximum: CanBeState<number?>,
	increment: CanBeState<number?>,
	leftTextOrIcon: CanBeState<string | ImageData | nil>,
	rightTextOrIcon: CanBeState<string | ImageData | nil>,
	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, DEFAULTS.ON_PRIMARY.STYLE)

	local out = Interface.new(
		_import(onChange, DEFAULTS.PRIMARY.ON_CHANGE),
		_import(initialValue, DEFAULTS.PRIMARY.INITIAL_VALUE),
		_import(minimum, DEFAULTS.PRIMARY.MINIMUM),
		_import(maximum, DEFAULTS.PRIMARY.MAXIMUM),
		_import(increment, DEFAULTS.PRIMARY.INCREMENT),
		_import(leftTextOrIcon, DEFAULTS.ON_PRIMARY.LEFT_TEXT_OR_ICON),
		_import(rightTextOrIcon, DEFAULTS.ON_PRIMARY.RIGHT_TEXT_OR_ICON),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnPrimary)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.Primary)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.PrimaryContainer)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnPrimaryContainer)
		end, styleState),
		_import(elevation, DEFAULTS.ON_PRIMARY.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.tertiary(
	style: CanBeState<Style>,
	onChange: CanBeState<(onChange: number) -> ()>,
	initialValue: CanBeState<number>,
	minimum: CanBeState<number?>,
	maximum: CanBeState<number?>,
	increment: CanBeState<number?>,
	leftTextOrIcon: CanBeState<string | ImageData | nil>,
	rightTextOrIcon: CanBeState<string | ImageData | nil>,
	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, DEFAULTS.TERTIARY.STYLE)

	local out = Interface.new(
		_import(onChange, DEFAULTS.PRIMARY.ON_CHANGE),
		_import(initialValue, DEFAULTS.PRIMARY.INITIAL_VALUE),
		_import(minimum, DEFAULTS.PRIMARY.MINIMUM),
		_import(maximum, DEFAULTS.PRIMARY.MAXIMUM),
		_import(increment, DEFAULTS.PRIMARY.INCREMENT),
		_import(leftTextOrIcon, DEFAULTS.TERTIARY.LEFT_TEXT_OR_ICON),
		_import(rightTextOrIcon, DEFAULTS.TERTIARY.RIGHT_TEXT_OR_ICON),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnSurface)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.Surface)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.Tertiary)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.TertiaryContainer)
		end, styleState),
		_import(elevation, DEFAULTS.TERTIARY.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.secondary(
	style: CanBeState<Style>,
	onChange: CanBeState<(onChange: number) -> ()>,
	initialValue: CanBeState<number>,
	minimum: CanBeState<number?>,
	maximum: CanBeState<number?>,
	increment: CanBeState<number?>,
	leftTextOrIcon: CanBeState<string | ImageData | nil>,
	rightTextOrIcon: CanBeState<string | ImageData | nil>,
	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, DEFAULTS.SECONDARY.STYLE)

	local out = Interface.new(
		_import(onChange, DEFAULTS.PRIMARY.ON_CHANGE),
		_import(initialValue, DEFAULTS.PRIMARY.INITIAL_VALUE),
		_import(minimum, DEFAULTS.PRIMARY.MINIMUM),
		_import(maximum, DEFAULTS.PRIMARY.MAXIMUM),
		_import(increment, DEFAULTS.PRIMARY.INCREMENT),
		_import(leftTextOrIcon, DEFAULTS.SECONDARY.LEFT_TEXT_OR_ICON),
		_import(rightTextOrIcon, DEFAULTS.SECONDARY.RIGHT_TEXT_OR_ICON),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnSurface)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.Surface)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.Secondary)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.SecondaryContainer)
		end, styleState),
		_import(elevation, DEFAULTS.SECONDARY.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>,
	onChange: CanBeState<(onChange: number) -> ()>,
	initialValue: CanBeState<number>,
	minimum: CanBeState<number?>,
	maximum: CanBeState<number?>,
	increment: CanBeState<number?>,
	leftTextOrIcon: CanBeState<string | ImageData | nil>,
	rightTextOrIcon: CanBeState<string | ImageData | nil>,
	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, DEFAULTS.PRIMARY.STYLE)

	local out = Interface.new(
		_import(onChange, DEFAULTS.PRIMARY.ON_CHANGE),
		_import(initialValue, DEFAULTS.PRIMARY.INITIAL_VALUE),
		_import(minimum, DEFAULTS.PRIMARY.MINIMUM),
		_import(maximum, DEFAULTS.PRIMARY.MAXIMUM),
		_import(increment, DEFAULTS.PRIMARY.INCREMENT),
		_import(leftTextOrIcon, DEFAULTS.PRIMARY.LEFT_TEXT_OR_ICON),
		_import(rightTextOrIcon, DEFAULTS.PRIMARY.RIGHT_TEXT_OR_ICON),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnSurface)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.Surface)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.Primary)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.PrimaryContainer)
		end, styleState),
		_import(elevation, DEFAULTS.PRIMARY.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.new(
	onChange: CanBeState<(onChange: number) -> ()>,
	initialValue: CanBeState<number>,
	minimum: CanBeState<number>,
	maximum: CanBeState<number>,
	increment: CanBeState<number?>,
	leftTextOrIcon: CanBeState<string | ImageData | nil>,
	rightTextOrIcon: CanBeState<string | ImageData | nil>,
	onBackgroundColor: CanBeState<Color3>,
	onBackgroundTextColor: CanBeState<Color3>,
	fillColor: CanBeState<Color3>,
	fillContainerColor: CanBeState<Color3>,
	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 scaleState: State<number> = _import(scale, DEFAULTS.NEW.SCALE)
	local schemeTypeState: State<Enums.SchemeType> = _import(schemeType, DEFAULTS.NEW.SCHEME_TYPE)
	local fontDataState: State<FontData> = _import(fontData, DEFAULTS.NEW.FONT_DATA)

	local onChangeState: State<(val: number) -> ()> = _import(onChange, DEFAULTS.NEW.ON_CHANGE)
	local leftLabelState: State<string | ImageData | nil> =
		_import(leftTextOrIcon, DEFAULTS.NEW.LEFT_TEXT_OR_ICON)
	local rightLabelState: State<string | ImageData | nil> =
		_import(rightTextOrIcon, DEFAULTS.NEW.RIGHT_TEXT_OR_ICON)
	local initialValueState: State<number> = _import(initialValue, DEFAULTS.NEW.INITIAL_VALUE)

	local minState: State<number> = _import(minimum, DEFAULTS.NEW.MINIMUM)
	local maxState: State<number> = _import(maximum, DEFAULTS.NEW.MAXIMUM)
	local incrementState: State<number?> = _import(increment, DEFAULTS.NEW.INCREMENT)

	local elevationState = _import(elevation, DEFAULTS.NEW.ELEVATION)

	local onBackgroundColorState = _Computed(function(c: Color3, e: number, st: Enums.SchemeType): Color3
		return Theme.getElevatedColor(c, e, st)
	end, _import(onBackgroundColor, DEFAULTS.NEW.ON_BACKGROUND_COLOR), elevationState, schemeTypeState)

	local onBackgroundTextColorState = _Computed(
		function(c: Color3, e: number, st: Enums.SchemeType): Color3
			return Theme.getElevatedColor(c, e, st)
		end,
		_import(onBackgroundTextColor, DEFAULTS.NEW.ON_BACKGROUND_TEXT_COLOR),
		elevationState,
		schemeTypeState
	)

	local fillColorState = _Computed(function(c: Color3, e: number, st: Enums.SchemeType): Color3
		return Theme.getElevatedColor(c, e, st)
	end, _import(fillColor, DEFAULTS.NEW.FILL_COLOR), elevationState, schemeTypeState)

	local fillContainerColorState = _Computed(function(c: Color3, e: number, st: Enums.SchemeType): Color3
		return Theme.getElevatedColor(c, e, st)
	end, _import(fillContainerColor, DEFAULTS.NEW.FILL_CONTAINER_COLOR), elevationState, schemeTypeState)

	local isSelectedState = _Value(false)

	local iconSizeState = _Computed(function(sc: number): UDim2
		return UDim2.fromOffset(sc * ICON_WIDTH_DP, sc * ICON_WIDTH_DP)
	end, scaleState)

	local cursorFullWidthState = _Computed(function(sc: number, isSel: boolean): UDim
		return UDim.new(
			0,
			sc * ((if isSel then CURSOR_SELECTED_WIDTH_DP else CURSOR_WIDTH_DP) + CURSOR_WIDTH_PADDING_DP * 2)
		)
	end, scaleState, isSelectedState)

	local inputState: ValueState<number?> = _Value(nil :: number?)

	local pointFillState = _Computed(
		function(initial: number, input: number?, min: number, max: number, inc: number?): number
			local rawVal = math.clamp(input or initial, min, max)
			if inc then
				return math.round(rawVal / inc) * inc
			else
				return rawVal
			end
		end,
		initialValueState,
		inputState,
		minState,
		maxState,
		incrementState
	)

	local fillState = _Computed(function(point: number, min: number, max: number, inc: number?): number
		local rawVal = (math.clamp(point, min, max) - min) / math.max(max - min, 1)
		if inc then
			return math.round(rawVal * inc) / inc
		else
			return rawVal
		end
	end, pointFillState, minState, maxState, incrementState)

	local incrementMaid = maid:GiveTask(Maid.new())

	local leftBar = _new("ImageLabel")({
		Name = "LeftBar",
		LayoutOrder = 1,
		Position = UDim2.fromScale(0, 0.5),
		AnchorPoint = Vector2.new(0, 0.5),
		AutomaticSize = Enum.AutomaticSize.None,
		Image = LEFT_CIRCLE_IMAGE,
		BackgroundTransparency = 1,
		ImageColor3 = fillColor,
		SliceCenter = CIRCLE_IMAGE_RECT,
		SliceScale = 1,
		ScaleType = Enum.ScaleType.Slice,
		Size = _Computed(function(sc: number, fill: number, fullWidth: UDim): UDim2
			return UDim2.new(
				math.max(fill - fullWidth.Scale * 0.5, 0),
				-fullWidth.Offset * 0.5,
				0,
				sc * BAR_HEIGHT_DP
			)
		end, scaleState, fillState, cursorFullWidthState),
	}) :: ImageLabel

	local rightBar = _new("ImageLabel")({
		Name = "RightBar",
		LayoutOrder = 2,
		Position = UDim2.fromScale(1, 0.5),
		AnchorPoint = Vector2.new(1, 0.5),
		AutomaticSize = Enum.AutomaticSize.None,
		Image = RIGHT_CIRCLE_IMAGE,
		BackgroundTransparency = 1,
		ImageColor3 = fillContainerColor,
		SliceCenter = CIRCLE_IMAGE_RECT,
		SliceScale = 1,
		ScaleType = Enum.ScaleType.Slice,
		Size = _Computed(function(sc: number, fill: number, fullWidth: UDim): UDim2
			return UDim2.new(
				math.max((1 - fill) - fullWidth.Scale * 0.5, 0),
				-fullWidth.Offset * 0.5,
				0,
				sc * BAR_HEIGHT_DP
			)
		end, scaleState, fillState, cursorFullWidthState),
	}) :: ImageLabel

	local cursor = _new("Frame")({
		Name = "Cursor",
		LayoutOrder = 1,
		ZIndex = 10,
		Position = _Computed(function(fill: number): UDim2
			return UDim2.fromScale(fill, 0.5)
		end, fillState),
		BackgroundColor3 = fillColor,
		AnchorPoint = _Computed(function(fill: number): Vector2
			return Vector2.new(if fill == 1 then 1 elseif fill == 0 then 0 else 0.5, 0.5)
		end, fillState),
		AutomaticSize = Enum.AutomaticSize.None,
		BackgroundTransparency = 0,
		Size = _Computed(function(sc: number, fullWidth: UDim, isSel: boolean): UDim2
			return UDim2.fromOffset(
				sc * (if isSel then CURSOR_SELECTED_WIDTH_DP else CURSOR_WIDTH_DP),
				sc * CURSOR_HEIGHT_DP
			)
		end, scaleState, cursorFullWidthState, isSelectedState),
		Children = {
			_new("UICorner")({
				CornerRadius = UDim.new(0.5, 0),
			}),
		},
	}) :: Frame
	local dotContainer = _new("Frame")({
		Name = "DotContainer",
		ZIndex = 5,
		Position = UDim2.fromScale(0.5, 0.5),
		AnchorPoint = Vector2.new(0.5, 0.5),
		AutomaticSize = Enum.AutomaticSize.None,
		BackgroundTransparency = 1,
		Size = _Computed(function(sc: number): UDim2
			return UDim2.new(1, 0, 0, sc * CURSOR_HEIGHT_DP)
		end, scaleState),
		Children = {
			maid:GiveTask(Util.Padding.ColdFusion.new(
				_Computed(function(sc: number): UDim
					return UDim.new(0, sc * BAR_LEFT_RIGHT_INNER_PADDING_DP)
				end, scaleState),
				_Computed(function(sc: number): UDim
					return UDim.new(0, sc * BAR_UP_DOWN_INNER_PADDING_DP)
				end, scaleState)
			)) :: Instance,
			_new("UICorner")({
				CornerRadius = UDim.new(0.5, 0),
			}),
		},
	}) :: Frame

	local function updateIncrementMarks()
		incrementMaid:DoCleaning()

		local inc = incrementState:Get()
		if inc then
			local val = pointFillState:Get()
			local min = minState:Get()
			local max = maxState:Get()
			local count = (max - min) / inc
			local limit = math.ceil(count)
			for i = 0, limit do
				local alpha = (i / limit)

				local v = i * inc + min
				if v < val then
					local dot = incrementMaid:GiveTask(newDot(fillContainerColorState, scaleState))
					dot.Position = UDim2.fromScale(alpha, 0.5)
					dot.Parent = dotContainer
				elseif v > val then
					local dot = incrementMaid:GiveTask(newDot(fillColorState, scaleState))
					dot.Position = UDim2.fromScale(alpha, 0.5)
					dot.Parent = dotContainer
				end
			end
		end
	end
	maid:GiveTask(incrementState:Connect(function()
		updateIncrementMarks()
	end))
	updateIncrementMarks()
	maid:GiveTask(fillState:Connect(function()
		updateIncrementMarks()
		onChangeState:Get()(pointFillState:Get())
	end))
	_bind(
		maid:GiveTask(
			Util.PopUp.ColdFusion.fromGuiObject(
				cursor,
				Vector2.new(0.5, -(BUBBLE_GAP_DP / BAR_HEIGHT_DP)),
				Vector2.new(0.5, 1)
			)
		)
	)({
		Name = "PopUp",
		Visible = isSelectedState,
		BackgroundTransparency = 0,
		BackgroundColor3 = onBackgroundColorState,
		AutomaticSize = Enum.AutomaticSize.XY,
		Children = {
			maid:GiveTask(Util.List.ColdFusion.center()) :: Instance,
			maid:GiveTask(Util.Padding.ColdFusion.new(
				_Computed(function(sc: number): UDim
					return UDim.new(0, sc * BUBBLE_LEFT_RIGHT_PADDING)
				end, scaleState),
				_Computed(function(sc: number): UDim
					return UDim.new(0, sc * BUBBLE_UP_DOWN_PADDING)
				end, scaleState)
			)),
			_new("UICorner")({
				CornerRadius = _Computed(function(sc: number, isSel: boolean): UDim
					return UDim.new(0, sc * BUBBLE_LEFT_RIGHT_PADDING)
				end, scaleState, isSelectedState),
			}),
			_new("TextLabel")({
				Text = _Computed(function(fill: number): string
					return tostring(math.round(fill))
				end, pointFillState),
				RichText = true,
				TextColor3 = onBackgroundTextColorState,
				TextTransparency = 0,
				BackgroundTransparency = 1,
				AutomaticSize = Enum.AutomaticSize.XY,
				TextSize = _Computed(function(f: FontData, sc: number): number
					return Typography.getTextSize(f.Size, sc)
				end, fontDataState, scaleState),
				LineHeight = _Computed(function(f: FontData, sc: number): number
					return Typography.getGuiLineHeight(f.LineHeight, f.Size)
				end, fontDataState, scaleState),
				FontFace = _Computed(function(f: FontData): Font
					return f.Font
				end, fontDataState),
				Size = UDim2.fromOffset(0, 0),
			}),
		},
	})

	maid:GiveTask(RunService.RenderStepped:Connect(function()
		rightBar.Visible = rightBar.AbsoluteSize.X >= 0
		leftBar.Visible = leftBar.AbsoluteSize.X >= 0
	end))

	local button = _new("TextButton")({
		Name = "Button",
		LayoutOrder = 2,
		BackgroundTransparency = 1,
		AutomaticSize = Enum.AutomaticSize.XY,
		Text = "",
		Events = {
			MouseButton1Down = function()
				isSelectedState:Set(true)
			end,
			MouseButton1Up = function()
				isSelectedState:Set(false)
			end,
		},
		Children = {

			_new("UIFlexItem")({
				FlexMode = Enum.UIFlexMode.Fill,
				ItemLineAlignment = Enum.ItemLineAlignment.Automatic,
			}),
			_new("UISizeConstraint")({
				MaxSize = Vector2.new(math.huge, math.huge),
				MinSize = _Computed(function(sc: number): Vector2
					return Vector2.new(sc * MIN_WIDTH_DP, 0)
				end, scaleState),
			}),
			cursor,
			dotContainer,
			leftBar,
			rightBar,
		},
	}) :: TextButton
	maid:GiveTask(button.MouseLeave:Connect(function()
		isSelectedState:Set(false)
	end))
	maid:GiveTask(button.InputBegan:Connect(function(inputObject: InputObject)
		if
			inputObject.UserInputType == Enum.UserInputType.MouseButton1
			or inputObject.UserInputType == Enum.UserInputType.Touch
		then
			inputState:Set(
				minState:Get()
					+ (maxState:Get() - minState:Get())
						* (inputObject.Position.X - button.AbsolutePosition.X)
						/ button.AbsoluteSize.X
			)
		end
	end))
	maid:GiveTask(button.InputChanged:Connect(function(inputObject: InputObject)
		if inputObject.UserInputType == Enum.UserInputType.MouseMovement and isSelectedState:Get() then
			inputState:Set(
				minState:Get()
					+ (maxState:Get() - minState:Get())
						* (inputObject.Position.X - button.AbsolutePosition.X)
						/ button.AbsoluteSize.X
			)
		end
	end))
	local inst = _new("Frame")({
		Name = "Slider",
		AutomaticSize = Enum.AutomaticSize.X,
		BackgroundTransparency = 1,
		Size = _Computed(function(sc: number): UDim2
			return UDim2.fromOffset(0, sc * CURSOR_HEIGHT_DP)
		end, scaleState),
		Children = {
			_new("TextLabel")({
				Name = "LeftLabel",
				Text = _Computed(function(icon: ImageData | string | nil): string | nil
					return if type(icon) == "string" then icon else ""
				end, leftLabelState),
				RichText = true,
				LayoutOrder = 1,
				Visible = _Computed(function(icon: ImageData | string | nil): boolean
					return type(icon) == "string"
				end, leftLabelState),
				TextColor3 = onBackgroundColorState,
				TextTransparency = 0,
				BackgroundTransparency = 1,
				AutomaticSize = Enum.AutomaticSize.XY,
				TextSize = _Computed(function(f: FontData, sc: number): number
					return Typography.getTextSize(f.Size, sc)
				end, fontDataState, scaleState),
				LineHeight = _Computed(function(f: FontData, sc: number): number
					return Typography.getGuiLineHeight(f.LineHeight, f.Size)
				end, fontDataState, scaleState),
				FontFace = _Computed(function(f: FontData): Font
					return f.Font
				end, fontDataState),
				Size = UDim2.fromOffset(0, 0),
			}),
			_new("TextLabel")({
				Name = "RightLabel",
				Text = _Computed(function(icon: ImageData | string | nil): string | nil
					return if type(icon) == "string" then icon else ""
				end, rightLabelState),
				RichText = true,
				LayoutOrder = 4,
				Visible = _Computed(function(icon: ImageData | string | nil): boolean
					return type(icon) == "string"
				end, rightLabelState),
				TextColor3 = onBackgroundColorState,
				TextTransparency = 0,
				BackgroundTransparency = 1,
				AutomaticSize = Enum.AutomaticSize.XY,
				TextSize = _Computed(function(f: FontData, sc: number): number
					return Typography.getTextSize(f.Size, sc)
				end, fontDataState, scaleState),
				LineHeight = _Computed(function(f: FontData, sc: number): number
					return Typography.getGuiLineHeight(f.LineHeight, f.Size)
				end, fontDataState, scaleState),
				FontFace = _Computed(function(f: FontData): Font
					return f.Font
				end, fontDataState),
				Size = UDim2.fromOffset(0, 0),
			}),
			_bind(
				maid:GiveTask(
					Util.ImageLabel.ColdFusion.new(
						_Computed(function(icon: ImageData | string | nil): ImageData | nil
							return if type(icon) == "table" then icon else nil
						end, leftLabelState),
						onBackgroundColorState,
						nil
					)
				)
			)({
				Name = "LeftIcon",
				Visible = _Computed(function(icon: ImageData | string | nil): boolean
					return type(icon) == "table"
				end, leftLabelState),
				LayoutOrder = 1,
				Size = iconSizeState,
			}) :: Instance,
			_bind(
				maid:GiveTask(
					Util.ImageLabel.ColdFusion.new(
						_Computed(function(icon: ImageData | string | nil): ImageData | nil
							return if type(icon) == "table" then icon else nil
						end, rightLabelState),
						onBackgroundColorState,
						nil
					)
				)
			)({
				Name = "RightIcon",
				Visible = _Computed(function(icon: ImageData | string | nil): boolean
					return type(icon) == "table"
				end, rightLabelState),
				LayoutOrder = 3,
				Size = iconSizeState,
			}) :: Instance,
			button,
			maid:GiveTask(
				Util.List.ColdFusion.new(
					Enum.VerticalAlignment.Center,
					Enum.HorizontalAlignment.Center,
					Enum.FillDirection.Horizontal,
					_Computed(function(sc: number): UDim
						return UDim.new(0, sc * ICON_PADDING_DP)
					end, scaleState),
					Enum.UIFlexAlignment.Fill,
					Enum.UIFlexAlignment.Fill,
					Enum.ItemLineAlignment.Center,
					false
				)
			),
		},
	}) :: Frame

	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
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_CHANGE = function(onChange: number) end,
		INITIAL_VALUE = 50,
		MINIMUM = 0,
		MAXIMUM = 100,
		INCREMENT = nil :: number?,
		LEFT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		RIGHT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		ON_BACKGROUND_COLOR = Color3.new(),
		ON_BACKGROUND_TEXT_COLOR = Color3.new(),
		FILL_COLOR = Color3.new(),
		FILL_CONTAINER_COLOR = Color3.new(),
		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_CHANGE = function(onChange: number) end,
		INITIAL_VALUE = 50,
		MINIMUM = 0,
		MAXIMUM = 100,
		INCREMENT = nil :: number?,
		LEFT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		RIGHT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		ELEVATION = 0,
	},
	SECONDARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_CHANGE = function(onChange: number) end,
		INITIAL_VALUE = 50,
		MINIMUM = 0,
		MAXIMUM = 100,
		INCREMENT = nil :: number?,
		LEFT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		RIGHT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		ELEVATION = 0,
	},
	TERTIARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_CHANGE = function(onChange: number) end,
		INITIAL_VALUE = 50,
		MINIMUM = 0,
		MAXIMUM = 100,
		INCREMENT = nil :: number?,
		LEFT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		RIGHT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		ELEVATION = 0,
	},
	ON_PRIMARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_CHANGE = function(onChange: number) end,
		INITIAL_VALUE = 50,
		MINIMUM = 0,
		MAXIMUM = 100,
		INCREMENT = nil :: number?,
		LEFT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		RIGHT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		ELEVATION = 0,
	},
	ON_SECONDARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_CHANGE = function(onChange: number) end,
		INITIAL_VALUE = 50,
		MINIMUM = 0,
		MAXIMUM = 100,
		INCREMENT = nil :: number?,
		LEFT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		RIGHT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		ELEVATION = 0,
	},
	ON_TERTIARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_CHANGE = function(onChange: number) end,
		INITIAL_VALUE = 50,
		MINIMUM = 0,
		MAXIMUM = 100,
		INCREMENT = nil :: number?,
		LEFT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		RIGHT_TEXT_OR_ICON = nil :: (string | ImageData)?,
		ELEVATION = 0,
	},
}


--!strict
-- this script was generated by the build system, please do not make manual edits
local _Package = script.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(
	onChange: FusionCanBeState<(onChange: number) -> ()>,
	initialValue: FusionCanBeState<number>,
	minimum: FusionCanBeState<number?>,
	maximum: FusionCanBeState<number?>,
	increment: FusionCanBeState<number?>,
	leftTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	rightTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	onBackgroundColor: FusionCanBeState<Color3>,
	onBackgroundTextColor: FusionCanBeState<Color3>,
	fillColor: FusionCanBeState<Color3>,
	fillContainerColor: FusionCanBeState<Color3>,
	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(onChange, DEFAULTS.NEW.ON_CHANGE),
		convert(initialValue, DEFAULTS.NEW.INITIAL_VALUE),
		convert(minimum, DEFAULTS.NEW.MINIMUM),
		convert(maximum, DEFAULTS.NEW.MAXIMUM),
		convert(increment, DEFAULTS.NEW.INCREMENT),
		convert(leftTextOrIcon, DEFAULTS.NEW.LEFT_TEXT_OR_ICON),
		convert(rightTextOrIcon, DEFAULTS.NEW.RIGHT_TEXT_OR_ICON),
		convert(onBackgroundColor, DEFAULTS.NEW.ON_BACKGROUND_COLOR),
		convert(onBackgroundTextColor, DEFAULTS.NEW.ON_BACKGROUND_TEXT_COLOR),
		convert(fillColor, DEFAULTS.NEW.FILL_COLOR),
		convert(fillContainerColor, DEFAULTS.NEW.FILL_CONTAINER_COLOR),
		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>,
	onChange: FusionCanBeState<(onChange: number) -> ()>,
	initialValue: FusionCanBeState<number>,
	minimum: FusionCanBeState<number>,
	maximum: FusionCanBeState<number>,
	increment: FusionCanBeState<number?>,
	leftTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	rightTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	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(onChange, DEFAULTS.PRIMARY.ON_CHANGE),
		convert(initialValue, DEFAULTS.PRIMARY.INITIAL_VALUE),
		convert(minimum, DEFAULTS.PRIMARY.MINIMUM),
		convert(maximum, DEFAULTS.PRIMARY.MAXIMUM),
		convert(increment, DEFAULTS.PRIMARY.INCREMENT),
		convert(leftTextOrIcon, DEFAULTS.PRIMARY.LEFT_TEXT_OR_ICON),
		convert(rightTextOrIcon, DEFAULTS.PRIMARY.RIGHT_TEXT_OR_ICON),
		convert(elevation, DEFAULTS.PRIMARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.secondary(
	style: FusionCanBeState<Style>,
	onChange: FusionCanBeState<(onChange: number) -> ()>,
	initialValue: FusionCanBeState<number>,
	minimum: FusionCanBeState<number>,
	maximum: FusionCanBeState<number>,
	increment: FusionCanBeState<number?>,
	leftTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	rightTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	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(onChange, DEFAULTS.SECONDARY.ON_CHANGE),
		convert(initialValue, DEFAULTS.SECONDARY.INITIAL_VALUE),
		convert(minimum, DEFAULTS.SECONDARY.MINIMUM),
		convert(maximum, DEFAULTS.SECONDARY.MAXIMUM),
		convert(increment, DEFAULTS.SECONDARY.INCREMENT),
		convert(leftTextOrIcon, DEFAULTS.SECONDARY.LEFT_TEXT_OR_ICON),
		convert(rightTextOrIcon, DEFAULTS.SECONDARY.RIGHT_TEXT_OR_ICON),
		convert(elevation, DEFAULTS.SECONDARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.tertiary(
	style: FusionCanBeState<Style>,
	onChange: FusionCanBeState<(onChange: number) -> ()>,
	initialValue: FusionCanBeState<number>,
	minimum: FusionCanBeState<number>,
	maximum: FusionCanBeState<number>,
	increment: FusionCanBeState<number?>,
	leftTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	rightTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	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(onChange, DEFAULTS.TERTIARY.ON_CHANGE),
		convert(initialValue, DEFAULTS.TERTIARY.INITIAL_VALUE),
		convert(minimum, DEFAULTS.TERTIARY.MINIMUM),
		convert(maximum, DEFAULTS.TERTIARY.MAXIMUM),
		convert(increment, DEFAULTS.TERTIARY.INCREMENT),
		convert(leftTextOrIcon, DEFAULTS.TERTIARY.LEFT_TEXT_OR_ICON),
		convert(rightTextOrIcon, DEFAULTS.TERTIARY.RIGHT_TEXT_OR_ICON),
		convert(elevation, DEFAULTS.TERTIARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.onPrimary(
	style: FusionCanBeState<Style>,
	onChange: FusionCanBeState<(onChange: number) -> ()>,
	initialValue: FusionCanBeState<number>,
	minimum: FusionCanBeState<number>,
	maximum: FusionCanBeState<number>,
	increment: FusionCanBeState<number?>,
	leftTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	rightTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	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.onPrimary(
		convert(style, DEFAULTS.ON_PRIMARY.STYLE),
		convert(onChange, DEFAULTS.ON_PRIMARY.ON_CHANGE),
		convert(initialValue, DEFAULTS.ON_PRIMARY.INITIAL_VALUE),
		convert(minimum, DEFAULTS.ON_PRIMARY.MINIMUM),
		convert(maximum, DEFAULTS.ON_PRIMARY.MAXIMUM),
		convert(increment, DEFAULTS.ON_PRIMARY.INCREMENT),
		convert(leftTextOrIcon, DEFAULTS.ON_PRIMARY.LEFT_TEXT_OR_ICON),
		convert(rightTextOrIcon, DEFAULTS.ON_PRIMARY.RIGHT_TEXT_OR_ICON),
		convert(elevation, DEFAULTS.ON_PRIMARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.onSecondary(
	style: FusionCanBeState<Style>,
	onChange: FusionCanBeState<(onChange: number) -> ()>,
	initialValue: FusionCanBeState<number>,
	minimum: FusionCanBeState<number>,
	maximum: FusionCanBeState<number>,
	increment: FusionCanBeState<number?>,
	leftTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	rightTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	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.onSecondary(
		convert(style, DEFAULTS.ON_SECONDARY.STYLE),
		convert(onChange, DEFAULTS.ON_SECONDARY.ON_CHANGE),
		convert(initialValue, DEFAULTS.ON_SECONDARY.INITIAL_VALUE),
		convert(minimum, DEFAULTS.ON_SECONDARY.MINIMUM),
		convert(maximum, DEFAULTS.ON_SECONDARY.MAXIMUM),
		convert(increment, DEFAULTS.ON_SECONDARY.INCREMENT),
		convert(leftTextOrIcon, DEFAULTS.ON_SECONDARY.LEFT_TEXT_OR_ICON),
		convert(rightTextOrIcon, DEFAULTS.ON_SECONDARY.RIGHT_TEXT_OR_ICON),
		convert(elevation, DEFAULTS.ON_SECONDARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.onTertiary(
	style: FusionCanBeState<Style>,
	onChange: FusionCanBeState<(onChange: number) -> ()>,
	initialValue: FusionCanBeState<number>,
	minimum: FusionCanBeState<number>,
	maximum: FusionCanBeState<number>,
	increment: FusionCanBeState<number?>,
	leftTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	rightTextOrIcon: FusionCanBeState<((string | ImageData)?)>,
	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.onTertiary(
		convert(style, DEFAULTS.ON_TERTIARY.STYLE),
		convert(onChange, DEFAULTS.ON_TERTIARY.ON_CHANGE),
		convert(initialValue, DEFAULTS.ON_TERTIARY.INITIAL_VALUE),
		convert(minimum, DEFAULTS.ON_TERTIARY.MINIMUM),
		convert(maximum, DEFAULTS.ON_TERTIARY.MAXIMUM),
		convert(increment, DEFAULTS.ON_TERTIARY.INCREMENT),
		convert(leftTextOrIcon, DEFAULTS.ON_TERTIARY.LEFT_TEXT_OR_ICON),
		convert(rightTextOrIcon, DEFAULTS.ON_TERTIARY.RIGHT_TEXT_OR_ICON),
		convert(elevation, DEFAULTS.ON_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
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 NewSlider = React.Component:extend("NewSlider")
	NewSlider.defaultProps = {
		onChange = DEFAULTS.NEW.ON_CHANGE,
		initialValue = DEFAULTS.NEW.INITIAL_VALUE,
		minimum = DEFAULTS.NEW.MINIMUM,
		maximum = DEFAULTS.NEW.MAXIMUM,
		increment = DEFAULTS.NEW.INCREMENT,
		leftTextOrIcon = DEFAULTS.NEW.LEFT_TEXT_OR_ICON,
		rightTextOrIcon = DEFAULTS.NEW.RIGHT_TEXT_OR_ICON,
		onBackgroundColor = DEFAULTS.NEW.ON_BACKGROUND_COLOR,
		onBackgroundTextColor = DEFAULTS.NEW.ON_BACKGROUND_TEXT_COLOR,
		fillColor = DEFAULTS.NEW.FILL_COLOR,
		fillContainerColor = DEFAULTS.NEW.FILL_CONTAINER_COLOR,
		elevation = DEFAULTS.NEW.ELEVATION,
		schemeType = DEFAULTS.NEW.SCHEME_TYPE,
		fontData = DEFAULTS.NEW.FONT_DATA,
		scale = DEFAULTS.NEW.SCALE,
	}
	function NewSlider:init(initialProps: { [string]: unknown })
		self._maid = Maid.new()
		local _fuse = ColdFusion.fuse(self._maid)
		local _Value = _fuse.Value
		self._internalStates = {
			onChange = _Value(self.defaultProps.onChange),
			initialValue = _Value(self.defaultProps.initialValue),
			minimum = _Value(self.defaultProps.minimum),
			maximum = _Value(self.defaultProps.maximum),
			increment = _Value(self.defaultProps.increment),
			leftTextOrIcon = _Value(self.defaultProps.leftTextOrIcon),
			rightTextOrIcon = _Value(self.defaultProps.rightTextOrIcon),
			onBackgroundColor = _Value(self.defaultProps.onBackgroundColor),
			onBackgroundTextColor = _Value(self.defaultProps.onBackgroundTextColor),
			fillColor = _Value(self.defaultProps.fillColor),
			fillContainerColor = _Value(self.defaultProps.fillContainerColor),
			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.onChange,
			self._internalStates.initialValue,
			self._internalStates.minimum,
			self._internalStates.maximum,
			self._internalStates.increment,
			self._internalStates.leftTextOrIcon,
			self._internalStates.rightTextOrIcon,
			self._internalStates.onBackgroundColor,
			self._internalStates.onBackgroundTextColor,
			self._internalStates.fillColor,
			self._internalStates.fillContainerColor,
			self._internalStates.elevation,
			self._internalStates.schemeType,
			self._internalStates.fontData,
			self._internalStates.scale
		)
	end

	function NewSlider: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 NewSlider: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 NewSlider:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.New = NewSlider
end

do
	local PrimarySlider = React.Component:extend("PrimarySlider")
	PrimarySlider.defaultProps = {
		style = DEFAULTS.PRIMARY.STYLE,
		onChange = DEFAULTS.PRIMARY.ON_CHANGE,
		initialValue = DEFAULTS.PRIMARY.INITIAL_VALUE,
		minimum = DEFAULTS.PRIMARY.MINIMUM,
		maximum = DEFAULTS.PRIMARY.MAXIMUM,
		increment = DEFAULTS.PRIMARY.INCREMENT,
		leftTextOrIcon = DEFAULTS.PRIMARY.LEFT_TEXT_OR_ICON,
		rightTextOrIcon = DEFAULTS.PRIMARY.RIGHT_TEXT_OR_ICON,
		elevation = DEFAULTS.PRIMARY.ELEVATION,
	}
	function PrimarySlider: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),
			onChange = _Value(self.defaultProps.onChange),
			initialValue = _Value(self.defaultProps.initialValue),
			minimum = _Value(self.defaultProps.minimum),
			maximum = _Value(self.defaultProps.maximum),
			increment = _Value(self.defaultProps.increment),
			leftTextOrIcon = _Value(self.defaultProps.leftTextOrIcon),
			rightTextOrIcon = _Value(self.defaultProps.rightTextOrIcon),
			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.onChange,
			self._internalStates.initialValue,
			self._internalStates.minimum,
			self._internalStates.maximum,
			self._internalStates.increment,
			self._internalStates.leftTextOrIcon,
			self._internalStates.rightTextOrIcon,
			self._internalStates.elevation
		)
	end

	function PrimarySlider: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 PrimarySlider: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 PrimarySlider:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Primary = PrimarySlider
end

do
	local SecondarySlider = React.Component:extend("SecondarySlider")
	SecondarySlider.defaultProps = {
		style = DEFAULTS.SECONDARY.STYLE,
		onChange = DEFAULTS.SECONDARY.ON_CHANGE,
		initialValue = DEFAULTS.SECONDARY.INITIAL_VALUE,
		minimum = DEFAULTS.SECONDARY.MINIMUM,
		maximum = DEFAULTS.SECONDARY.MAXIMUM,
		increment = DEFAULTS.SECONDARY.INCREMENT,
		leftTextOrIcon = DEFAULTS.SECONDARY.LEFT_TEXT_OR_ICON,
		rightTextOrIcon = DEFAULTS.SECONDARY.RIGHT_TEXT_OR_ICON,
		elevation = DEFAULTS.SECONDARY.ELEVATION,
	}
	function SecondarySlider: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),
			onChange = _Value(self.defaultProps.onChange),
			initialValue = _Value(self.defaultProps.initialValue),
			minimum = _Value(self.defaultProps.minimum),
			maximum = _Value(self.defaultProps.maximum),
			increment = _Value(self.defaultProps.increment),
			leftTextOrIcon = _Value(self.defaultProps.leftTextOrIcon),
			rightTextOrIcon = _Value(self.defaultProps.rightTextOrIcon),
			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.onChange,
			self._internalStates.initialValue,
			self._internalStates.minimum,
			self._internalStates.maximum,
			self._internalStates.increment,
			self._internalStates.leftTextOrIcon,
			self._internalStates.rightTextOrIcon,
			self._internalStates.elevation
		)
	end

	function SecondarySlider: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 SecondarySlider: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 SecondarySlider:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Secondary = SecondarySlider
end

do
	local TertiarySlider = React.Component:extend("TertiarySlider")
	TertiarySlider.defaultProps = {
		style = DEFAULTS.TERTIARY.STYLE,
		onChange = DEFAULTS.TERTIARY.ON_CHANGE,
		initialValue = DEFAULTS.TERTIARY.INITIAL_VALUE,
		minimum = DEFAULTS.TERTIARY.MINIMUM,
		maximum = DEFAULTS.TERTIARY.MAXIMUM,
		increment = DEFAULTS.TERTIARY.INCREMENT,
		leftTextOrIcon = DEFAULTS.TERTIARY.LEFT_TEXT_OR_ICON,
		rightTextOrIcon = DEFAULTS.TERTIARY.RIGHT_TEXT_OR_ICON,
		elevation = DEFAULTS.TERTIARY.ELEVATION,
	}
	function TertiarySlider: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),
			onChange = _Value(self.defaultProps.onChange),
			initialValue = _Value(self.defaultProps.initialValue),
			minimum = _Value(self.defaultProps.minimum),
			maximum = _Value(self.defaultProps.maximum),
			increment = _Value(self.defaultProps.increment),
			leftTextOrIcon = _Value(self.defaultProps.leftTextOrIcon),
			rightTextOrIcon = _Value(self.defaultProps.rightTextOrIcon),
			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.onChange,
			self._internalStates.initialValue,
			self._internalStates.minimum,
			self._internalStates.maximum,
			self._internalStates.increment,
			self._internalStates.leftTextOrIcon,
			self._internalStates.rightTextOrIcon,
			self._internalStates.elevation
		)
	end

	function TertiarySlider: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 TertiarySlider: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 TertiarySlider:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.Tertiary = TertiarySlider
end

do
	local OnPrimarySlider = React.Component:extend("OnPrimarySlider")
	OnPrimarySlider.defaultProps = {
		style = DEFAULTS.ON_PRIMARY.STYLE,
		onChange = DEFAULTS.ON_PRIMARY.ON_CHANGE,
		initialValue = DEFAULTS.ON_PRIMARY.INITIAL_VALUE,
		minimum = DEFAULTS.ON_PRIMARY.MINIMUM,
		maximum = DEFAULTS.ON_PRIMARY.MAXIMUM,
		increment = DEFAULTS.ON_PRIMARY.INCREMENT,
		leftTextOrIcon = DEFAULTS.ON_PRIMARY.LEFT_TEXT_OR_ICON,
		rightTextOrIcon = DEFAULTS.ON_PRIMARY.RIGHT_TEXT_OR_ICON,
		elevation = DEFAULTS.ON_PRIMARY.ELEVATION,
	}
	function OnPrimarySlider: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),
			onChange = _Value(self.defaultProps.onChange),
			initialValue = _Value(self.defaultProps.initialValue),
			minimum = _Value(self.defaultProps.minimum),
			maximum = _Value(self.defaultProps.maximum),
			increment = _Value(self.defaultProps.increment),
			leftTextOrIcon = _Value(self.defaultProps.leftTextOrIcon),
			rightTextOrIcon = _Value(self.defaultProps.rightTextOrIcon),
			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.onPrimary(
			self._internalStates.style,
			self._internalStates.onChange,
			self._internalStates.initialValue,
			self._internalStates.minimum,
			self._internalStates.maximum,
			self._internalStates.increment,
			self._internalStates.leftTextOrIcon,
			self._internalStates.rightTextOrIcon,
			self._internalStates.elevation
		)
	end

	function OnPrimarySlider: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 OnPrimarySlider: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 OnPrimarySlider:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnPrimary = OnPrimarySlider
end

do
	local OnSecondarySlider = React.Component:extend("OnSecondarySlider")
	OnSecondarySlider.defaultProps = {
		style = DEFAULTS.ON_SECONDARY.STYLE,
		onChange = DEFAULTS.ON_SECONDARY.ON_CHANGE,
		initialValue = DEFAULTS.ON_SECONDARY.INITIAL_VALUE,
		minimum = DEFAULTS.ON_SECONDARY.MINIMUM,
		maximum = DEFAULTS.ON_SECONDARY.MAXIMUM,
		increment = DEFAULTS.ON_SECONDARY.INCREMENT,
		leftTextOrIcon = DEFAULTS.ON_SECONDARY.LEFT_TEXT_OR_ICON,
		rightTextOrIcon = DEFAULTS.ON_SECONDARY.RIGHT_TEXT_OR_ICON,
		elevation = DEFAULTS.ON_SECONDARY.ELEVATION,
	}
	function OnSecondarySlider: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),
			onChange = _Value(self.defaultProps.onChange),
			initialValue = _Value(self.defaultProps.initialValue),
			minimum = _Value(self.defaultProps.minimum),
			maximum = _Value(self.defaultProps.maximum),
			increment = _Value(self.defaultProps.increment),
			leftTextOrIcon = _Value(self.defaultProps.leftTextOrIcon),
			rightTextOrIcon = _Value(self.defaultProps.rightTextOrIcon),
			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.onSecondary(
			self._internalStates.style,
			self._internalStates.onChange,
			self._internalStates.initialValue,
			self._internalStates.minimum,
			self._internalStates.maximum,
			self._internalStates.increment,
			self._internalStates.leftTextOrIcon,
			self._internalStates.rightTextOrIcon,
			self._internalStates.elevation
		)
	end

	function OnSecondarySlider: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 OnSecondarySlider: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 OnSecondarySlider:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnSecondary = OnSecondarySlider
end

do
	local OnTertiarySlider = React.Component:extend("OnTertiarySlider")
	OnTertiarySlider.defaultProps = {
		style = DEFAULTS.ON_TERTIARY.STYLE,
		onChange = DEFAULTS.ON_TERTIARY.ON_CHANGE,
		initialValue = DEFAULTS.ON_TERTIARY.INITIAL_VALUE,
		minimum = DEFAULTS.ON_TERTIARY.MINIMUM,
		maximum = DEFAULTS.ON_TERTIARY.MAXIMUM,
		increment = DEFAULTS.ON_TERTIARY.INCREMENT,
		leftTextOrIcon = DEFAULTS.ON_TERTIARY.LEFT_TEXT_OR_ICON,
		rightTextOrIcon = DEFAULTS.ON_TERTIARY.RIGHT_TEXT_OR_ICON,
		elevation = DEFAULTS.ON_TERTIARY.ELEVATION,
	}
	function OnTertiarySlider: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),
			onChange = _Value(self.defaultProps.onChange),
			initialValue = _Value(self.defaultProps.initialValue),
			minimum = _Value(self.defaultProps.minimum),
			maximum = _Value(self.defaultProps.maximum),
			increment = _Value(self.defaultProps.increment),
			leftTextOrIcon = _Value(self.defaultProps.leftTextOrIcon),
			rightTextOrIcon = _Value(self.defaultProps.rightTextOrIcon),
			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.onTertiary(
			self._internalStates.style,
			self._internalStates.onChange,
			self._internalStates.initialValue,
			self._internalStates.minimum,
			self._internalStates.maximum,
			self._internalStates.increment,
			self._internalStates.leftTextOrIcon,
			self._internalStates.rightTextOrIcon,
			self._internalStates.elevation
		)
	end

	function OnTertiarySlider: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 OnTertiarySlider: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 OnTertiarySlider:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnTertiary = OnTertiarySlider
end

return Interface