--!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 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 NewSearchFilled = React.Component:extend("NewSearchFilled")
	NewSearchFilled.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 NewSearchFilled: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 NewSearchFilled: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 NewSearchFilled: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 NewSearchFilled:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.New = NewSearchFilled
end

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

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

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

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

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

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

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

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

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

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

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

	function TertiaryContainerSearchFilled: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 TertiaryContainerSearchFilled: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 TertiaryContainerSearchFilled:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.TertiaryContainer = TertiaryContainerSearchFilled
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"))
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 NewSearchFilled = Roact.Component:extend("NewSearchFilled")
	NewSearchFilled.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 NewSearchFilled: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 NewSearchFilled: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 NewSearchFilled: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 NewSearchFilled:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.New = NewSearchFilled
end

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

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

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

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

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

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

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

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

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

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

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

	function TertiaryContainerSearchFilled: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 TertiaryContainerSearchFilled: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 TertiaryContainerSearchFilled:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.TertiaryContainer = TertiaryContainerSearchFilled
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 FilledWrapperDefinition = {
	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 FilledWrapper = Wrapper<GuiObject, FilledWrapperDefinition, "Filled">

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

function Interface.new(): StyledFilledWrapper
	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("StyledFilled", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.primary(): StyledFilledWrapper
	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.PRIMARY.STYLE,
		onInputEntered = DEFAULTS.PRIMARY.ON_INPUT_ENTERED,
		label = DEFAULTS.PRIMARY.LABEL,
		optionSolver = DEFAULTS.PRIMARY.OPTION_SOLVER,
		optionConstructor = DEFAULTS.PRIMARY.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.PRIMARY.ELEVATION,
	}
	local inst: GuiObject = Source.primary(
		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("StyledFilled", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.secondary(): StyledFilledWrapper
	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.SECONDARY.STYLE,
		onInputEntered = DEFAULTS.SECONDARY.ON_INPUT_ENTERED,
		label = DEFAULTS.SECONDARY.LABEL,
		optionSolver = DEFAULTS.SECONDARY.OPTION_SOLVER,
		optionConstructor = DEFAULTS.SECONDARY.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.SECONDARY.ELEVATION,
	}
	local inst: GuiObject = Source.secondary(
		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("StyledFilled", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.tertiary(): StyledFilledWrapper
	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.TERTIARY.STYLE,
		onInputEntered = DEFAULTS.TERTIARY.ON_INPUT_ENTERED,
		label = DEFAULTS.TERTIARY.LABEL,
		optionSolver = DEFAULTS.TERTIARY.OPTION_SOLVER,
		optionConstructor = DEFAULTS.TERTIARY.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.TERTIARY.ELEVATION,
	}
	local inst: GuiObject = Source.tertiary(
		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("StyledFilled", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.primaryContainer(): StyledFilledWrapper
	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.PRIMARY_CONTAINER.STYLE,
		onInputEntered = DEFAULTS.PRIMARY_CONTAINER.ON_INPUT_ENTERED,
		label = DEFAULTS.PRIMARY_CONTAINER.LABEL,
		optionSolver = DEFAULTS.PRIMARY_CONTAINER.OPTION_SOLVER,
		optionConstructor = DEFAULTS.PRIMARY_CONTAINER.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.PRIMARY_CONTAINER.ELEVATION,
	}
	local inst: GuiObject = Source.primaryContainer(
		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("StyledFilled", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.secondaryContainer(): StyledFilledWrapper
	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.SECONDARY_CONTAINER.STYLE,
		onInputEntered = DEFAULTS.SECONDARY_CONTAINER.ON_INPUT_ENTERED,
		label = DEFAULTS.SECONDARY_CONTAINER.LABEL,
		optionSolver = DEFAULTS.SECONDARY_CONTAINER.OPTION_SOLVER,
		optionConstructor = DEFAULTS.SECONDARY_CONTAINER.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.SECONDARY_CONTAINER.ELEVATION,
	}
	local inst: GuiObject = Source.secondaryContainer(
		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("StyledFilled", inst, definition, defaults)
	maid:GiveTask(cleanUp)
	return wrapper
end

function Interface.tertiaryContainer(): StyledFilledWrapper
	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.TERTIARY_CONTAINER.STYLE,
		onInputEntered = DEFAULTS.TERTIARY_CONTAINER.ON_INPUT_ENTERED,
		label = DEFAULTS.TERTIARY_CONTAINER.LABEL,
		optionSolver = DEFAULTS.TERTIARY_CONTAINER.OPTION_SOLVER,
		optionConstructor = DEFAULTS.TERTIARY_CONTAINER.OPTION_CONSTRUCTOR,
		elevation = DEFAULTS.TERTIARY_CONTAINER.ELEVATION,
	}
	local inst: GuiObject = Source.tertiaryContainer(
		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("StyledFilled", 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.primaryContainer(
					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.secondaryContainer(
					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.tertiaryContainer(
					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.primary(
					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.secondary(
					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.tertiary(
					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.Parent
local _Packages = _Package.Parent
-- Services
-- Packages
local Maid = require(_Packages:WaitForChild("Maid"))
local ColdFusion = require(_Packages:WaitForChild("ColdFusion"))

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

-- Types
type Maid = Maid.Maid
type State<V> = ColdFusion.State<V>
type ValueState<V> = ColdFusion.ValueState<V>
type CanBeState<V> = ColdFusion.CanBeState<V>
type RenderData = Types.RenderData
type ImageData = Types.ImageData
type OptionData = Types.OptionData
type ButtonData = Types.ButtonData
type Style = Style.Style
type Method = () -> ()
type OptionConstructor = Base.OptionConstructor
type FontData = Types.FontData

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

-- Class
local Interface = {}

Interface = {}

function Interface.onTertiaryContainer(
	style: CanBeState<Style>,
	onInputEntered: CanBeState<(input: string) -> string>,
	label: CanBeState<string?>,
	optionSolver: CanBeState<(input: string) -> { string }>,
	optionConstructor: CanBeState<OptionConstructor?>,
	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_CONTAINER.STYLE)
	local elevationState = _import(elevation, DEFAULTS.ON_TERTIARY_CONTAINER.ELEVATION or 0)

	local out = Base.new(
		false,
		_import(onInputEntered, DEFAULTS.ON_TERTIARY_CONTAINER.ON_INPUT_ENTERED),
		_import(label, DEFAULTS.ON_TERTIARY_CONTAINER.LABEL),
		_import(optionSolver, DEFAULTS.ON_TERTIARY_CONTAINER.OPTION_SOLVER),
		_import(optionConstructor, DEFAULTS.ON_TERTIARY_CONTAINER.OPTION_CONSTRUCTOR),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnTertiaryContainer)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.TertiaryContainer)
		end, styleState),
		elevationState,
		_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.onTertiary(
	style: CanBeState<Style>,
	onInputEntered: CanBeState<(input: string) -> string>,
	label: CanBeState<string?>,
	optionSolver: CanBeState<(input: string) -> { string }>,
	optionConstructor: CanBeState<OptionConstructor?>,
	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 elevationState = _import(elevation, DEFAULTS.ON_TERTIARY.ELEVATION)

	local out = Base.new(
		false,
		_import(onInputEntered, DEFAULTS.ON_TERTIARY.ON_INPUT_ENTERED),
		_import(label, DEFAULTS.ON_TERTIARY.LABEL),
		_import(optionSolver, DEFAULTS.ON_TERTIARY.OPTION_SOLVER),
		_import(optionConstructor, DEFAULTS.ON_TERTIARY.OPTION_CONSTRUCTOR),
		_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),
		elevationState,
		_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.onSecondaryContainer(
	style: CanBeState<Style>,
	onInputEntered: CanBeState<(input: string) -> string>,
	label: CanBeState<string?>,
	optionSolver: CanBeState<(input: string) -> { string }>,
	optionConstructor: CanBeState<OptionConstructor?>,
	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_SECONDARY_CONTAINER.STYLE)
	local elevationState = _import(elevation, DEFAULTS.ON_SECONDARY_CONTAINER.ELEVATION)

	local out = Base.new(
		false,
		_import(onInputEntered, DEFAULTS.ON_SECONDARY_CONTAINER.ON_INPUT_ENTERED),
		_import(label, DEFAULTS.ON_SECONDARY_CONTAINER.LABEL),
		_import(optionSolver, DEFAULTS.ON_SECONDARY_CONTAINER.OPTION_SOLVER),
		_import(optionConstructor, DEFAULTS.ON_SECONDARY_CONTAINER.OPTION_CONSTRUCTOR),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnSecondaryContainer)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.SecondaryContainer)
		end, styleState),
		elevationState,
		_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>,
	onInputEntered: CanBeState<(input: string) -> string>,
	label: CanBeState<string?>,
	optionSolver: CanBeState<(input: string) -> { string }>,
	optionConstructor: CanBeState<OptionConstructor?>,
	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_SECONDARY.STYLE)
	local elevationState = _import(elevation, DEFAULTS.ON_SECONDARY.ELEVATION)

	local out = Base.new(
		false,
		_import(onInputEntered, DEFAULTS.ON_SECONDARY.ON_INPUT_ENTERED),
		_import(label, DEFAULTS.ON_SECONDARY.LABEL),
		_import(optionSolver, DEFAULTS.ON_SECONDARY.OPTION_SOLVER),
		_import(optionConstructor, DEFAULTS.ON_SECONDARY.OPTION_CONSTRUCTOR),
		_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),
		elevationState,
		_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.onPrimaryContainer(
	style: CanBeState<Style>,
	onInputEntered: CanBeState<(input: string) -> string>,
	label: CanBeState<string?>,
	optionSolver: CanBeState<(input: string) -> { string }>,
	optionConstructor: CanBeState<OptionConstructor?>,
	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_CONTAINER.STYLE)
	local elevationState = _import(elevation, DEFAULTS.ON_PRIMARY_CONTAINER.ELEVATION)

	local out = Base.new(
		false,
		_import(onInputEntered, DEFAULTS.ON_PRIMARY_CONTAINER.ON_INPUT_ENTERED),
		_import(label, DEFAULTS.ON_PRIMARY_CONTAINER.LABEL),
		_import(optionSolver, DEFAULTS.ON_PRIMARY_CONTAINER.OPTION_SOLVER),
		_import(optionConstructor, DEFAULTS.ON_PRIMARY_CONTAINER.OPTION_CONSTRUCTOR),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.OnPrimaryContainer)
		end, styleState),
		_Computed(function(s: Style): Color3
			return s:GetColor(Enums.ColorRoleType.PrimaryContainer)
		end, styleState),
		elevationState,
		_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>,
	onInputEntered: CanBeState<(input: string) -> string>,
	label: CanBeState<string?>,
	optionSolver: CanBeState<(input: string) -> { string }>,
	optionConstructor: CanBeState<OptionConstructor?>,
	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 elevationState = _import(elevation, DEFAULTS.ON_PRIMARY.ELEVATION)

	local out = Base.new(
		false,
		_import(onInputEntered, DEFAULTS.ON_PRIMARY.ON_INPUT_ENTERED),
		_import(label, DEFAULTS.ON_PRIMARY.LABEL),
		_import(optionSolver, DEFAULTS.ON_PRIMARY.OPTION_SOLVER),
		_import(optionConstructor, DEFAULTS.ON_PRIMARY.OPTION_CONSTRUCTOR),
		_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),
		elevationState,
		_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(
	onInputEntered: CanBeState<(input: string) -> string>,
	label: CanBeState<string?>,
	optionSolver: CanBeState<(input: string) -> { string }>,
	optionConstructor: CanBeState<OptionConstructor?>,
	textColor: CanBeState<Color3>,
	backgroundColor: CanBeState<Color3>,
	elevation: CanBeState<number>,
	schemeType: CanBeState<Enums.SchemeType>,
	fontData: CanBeState<FontData>,
	scale: CanBeState<number>
): GuiObject
	return Base.new(
		false,
		if onInputEntered ~= nil then onInputEntered else DEFAULTS.NEW.ON_INPUT_ENTERED,
		if label ~= nil then label else DEFAULTS.NEW.LABEL,
		if optionSolver ~= nil then optionSolver else DEFAULTS.NEW.OPTION_SOLVER,
		if optionConstructor ~= nil then optionConstructor else DEFAULTS.NEW.OPTION_CONSTRUCTOR,
		if textColor ~= nil then textColor else DEFAULTS.NEW.TEXT_COLOR,
		if backgroundColor ~= nil then backgroundColor else DEFAULTS.NEW.BACKGROUND_COLOR,
		if elevation ~= nil then elevation else DEFAULTS.NEW.ELEVATION or 0,
		if schemeType ~= nil then schemeType else DEFAULTS.NEW.SCHEME_TYPE,
		if fontData ~= nil then fontData else DEFAULTS.NEW.FONT_DATA,
		if scale ~= nil then scale else DEFAULTS.NEW.SCALE
	)
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"))

-- 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_INPUT_ENTERED = function(input: string)
			return input
		end,
		LABEL = "",
		OPTION_SOLVER = function(input: string)
			return {}
		end,
		OPTION_CONSTRUCTOR = nil :: ((key: string, onClick: (key: string) -> ()) -> GuiObject)?,
		TEXT_COLOR = Color3.new(),
		BACKGROUND_COLOR = Color3.new(),
		ELEVATION = 0,
		SCHEME_TYPE = Enums.SchemeType.Light,
		FONT_DATA = Types.FontData.new(Font.fromEnum(Enum.Font.SourceSans), 14),
		SCALE = 1,
	},
	ON_PRIMARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_INPUT_ENTERED = function(input: string)
			return input
		end,
		LABEL = "",
		OPTION_SOLVER = function(input: string)
			return {}
		end,
		OPTION_CONSTRUCTOR = nil :: ((key: string, onClick: (key: string) -> ()) -> GuiObject)?,
		ELEVATION = 0,
	},
	ON_SECONDARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_INPUT_ENTERED = function(input: string)
			return input
		end,
		LABEL = "",
		OPTION_SOLVER = function(input: string)
			return {}
		end,
		OPTION_CONSTRUCTOR = nil :: ((key: string, onClick: (key: string) -> ()) -> GuiObject)?,
		ELEVATION = 0,
	},
	ON_TERTIARY = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_INPUT_ENTERED = function(input: string)
			return input
		end,
		LABEL = "",
		OPTION_SOLVER = function(input: string)
			return {}
		end,
		OPTION_CONSTRUCTOR = nil :: ((key: string, onClick: (key: string) -> ()) -> GuiObject)?,
		ELEVATION = 0,
	},
	ON_PRIMARY_CONTAINER = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_INPUT_ENTERED = function(input: string)
			return input
		end,
		LABEL = "",
		OPTION_SOLVER = function(input: string)
			return {}
		end,
		OPTION_CONSTRUCTOR = nil :: ((key: string, onClick: (key: string) -> ()) -> GuiObject)?,
		ELEVATION = 0,
	},
	ON_SECONDARY_CONTAINER = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_INPUT_ENTERED = function(input: string)
			return input
		end,
		LABEL = "",
		OPTION_SOLVER = function(input: string)
			return {}
		end,
		OPTION_CONSTRUCTOR = nil :: ((key: string, onClick: (key: string) -> ()) -> GuiObject)?,
		ELEVATION = 0,
	},
	ON_TERTIARY_CONTAINER = {
		STYLE = Style.new(1, Enum.Font.SourceSans, "Light", Color3.new(0, 0.4, 0.7)),
		ON_INPUT_ENTERED = function(input: string)
			return input
		end,
		LABEL = "",
		OPTION_SOLVER = function(input: string)
			return {}
		end,
		OPTION_CONSTRUCTOR = nil :: ((key: string, onClick: (key: string) -> ()) -> GuiObject)?,
		ELEVATION = 0,
	},
}


--!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 FusionCanBeState<V> = Translators.FusionCanBeState<V>

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

function Interface.new(
	onInputEntered: FusionCanBeState<(input: string) -> string>,
	label: FusionCanBeState<string?>,
	optionSolver: FusionCanBeState<(input: string) -> { string }>,
	optionConstructor: FusionCanBeState<(((key: string, onClick: (key: string) -> ()) -> GuiObject)?)>,
	textColor: FusionCanBeState<Color3>,
	backgroundColor: 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(onInputEntered, DEFAULTS.NEW.ON_INPUT_ENTERED),
		convert(label, DEFAULTS.NEW.LABEL),
		convert(optionSolver, DEFAULTS.NEW.OPTION_SOLVER),
		convert(optionConstructor, DEFAULTS.NEW.OPTION_CONSTRUCTOR),
		convert(textColor, DEFAULTS.NEW.TEXT_COLOR),
		convert(backgroundColor, DEFAULTS.NEW.BACKGROUND_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.onPrimary(
	style: FusionCanBeState<Style>,
	onInputEntered: FusionCanBeState<(input: string) -> string>,
	label: FusionCanBeState<string?>,
	optionSolver: FusionCanBeState<(input: string) -> { string }>,
	optionConstructor: FusionCanBeState<
		(((key: string, onClick: (key: string) -> ()) -> GuiObject)?)
	>,
	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(onInputEntered, DEFAULTS.ON_PRIMARY.ON_INPUT_ENTERED),
		convert(label, DEFAULTS.ON_PRIMARY.LABEL),
		convert(optionSolver, DEFAULTS.ON_PRIMARY.OPTION_SOLVER),
		convert(optionConstructor, DEFAULTS.ON_PRIMARY.OPTION_CONSTRUCTOR),
		convert(elevation, DEFAULTS.ON_PRIMARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.onSecondary(
	style: FusionCanBeState<Style>,
	onInputEntered: FusionCanBeState<(input: string) -> string>,
	label: FusionCanBeState<string?>,
	optionSolver: FusionCanBeState<(input: string) -> { string }>,
	optionConstructor: FusionCanBeState<
		(((key: string, onClick: (key: string) -> ()) -> GuiObject)?)
	>,
	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(onInputEntered, DEFAULTS.ON_SECONDARY.ON_INPUT_ENTERED),
		convert(label, DEFAULTS.ON_SECONDARY.LABEL),
		convert(optionSolver, DEFAULTS.ON_SECONDARY.OPTION_SOLVER),
		convert(optionConstructor, DEFAULTS.ON_SECONDARY.OPTION_CONSTRUCTOR),
		convert(elevation, DEFAULTS.ON_SECONDARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.onTertiary(
	style: FusionCanBeState<Style>,
	onInputEntered: FusionCanBeState<(input: string) -> string>,
	label: FusionCanBeState<string?>,
	optionSolver: FusionCanBeState<(input: string) -> { string }>,
	optionConstructor: FusionCanBeState<
		(((key: string, onClick: (key: string) -> ()) -> GuiObject)?)
	>,
	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(onInputEntered, DEFAULTS.ON_TERTIARY.ON_INPUT_ENTERED),
		convert(label, DEFAULTS.ON_TERTIARY.LABEL),
		convert(optionSolver, DEFAULTS.ON_TERTIARY.OPTION_SOLVER),
		convert(optionConstructor, DEFAULTS.ON_TERTIARY.OPTION_CONSTRUCTOR),
		convert(elevation, DEFAULTS.ON_TERTIARY.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.onPrimaryContainer(
	style: FusionCanBeState<Style>,
	onInputEntered: FusionCanBeState<(input: string) -> string>,
	label: FusionCanBeState<string?>,
	optionSolver: FusionCanBeState<(input: string) -> { string }>,
	optionConstructor: FusionCanBeState<
		(((key: string, onClick: (key: string) -> ()) -> GuiObject)?)
	>,
	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.onPrimaryContainer(
		convert(style, DEFAULTS.ON_PRIMARY_CONTAINER.STYLE),
		convert(onInputEntered, DEFAULTS.ON_PRIMARY_CONTAINER.ON_INPUT_ENTERED),
		convert(label, DEFAULTS.ON_PRIMARY_CONTAINER.LABEL),
		convert(optionSolver, DEFAULTS.ON_PRIMARY_CONTAINER.OPTION_SOLVER),
		convert(optionConstructor, DEFAULTS.ON_PRIMARY_CONTAINER.OPTION_CONSTRUCTOR),
		convert(elevation, DEFAULTS.ON_PRIMARY_CONTAINER.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.onSecondaryContainer(
	style: FusionCanBeState<Style>,
	onInputEntered: FusionCanBeState<(input: string) -> string>,
	label: FusionCanBeState<string?>,
	optionSolver: FusionCanBeState<(input: string) -> { string }>,
	optionConstructor: FusionCanBeState<
		(((key: string, onClick: (key: string) -> ()) -> GuiObject)?)
	>,
	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.onSecondaryContainer(
		convert(style, DEFAULTS.ON_SECONDARY_CONTAINER.STYLE),
		convert(onInputEntered, DEFAULTS.ON_SECONDARY_CONTAINER.ON_INPUT_ENTERED),
		convert(label, DEFAULTS.ON_SECONDARY_CONTAINER.LABEL),
		convert(optionSolver, DEFAULTS.ON_SECONDARY_CONTAINER.OPTION_SOLVER),
		convert(optionConstructor, DEFAULTS.ON_SECONDARY_CONTAINER.OPTION_CONSTRUCTOR),
		convert(elevation, DEFAULTS.ON_SECONDARY_CONTAINER.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

function Interface.onTertiaryContainer(
	style: FusionCanBeState<Style>,
	onInputEntered: FusionCanBeState<(input: string) -> string>,
	label: FusionCanBeState<string?>,
	optionSolver: FusionCanBeState<(input: string) -> { string }>,
	optionConstructor: FusionCanBeState<
		(((key: string, onClick: (key: string) -> ()) -> GuiObject)?)
	>,
	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.onTertiaryContainer(
		convert(style, DEFAULTS.ON_TERTIARY_CONTAINER.STYLE),
		convert(onInputEntered, DEFAULTS.ON_TERTIARY_CONTAINER.ON_INPUT_ENTERED),
		convert(label, DEFAULTS.ON_TERTIARY_CONTAINER.LABEL),
		convert(optionSolver, DEFAULTS.ON_TERTIARY_CONTAINER.OPTION_SOLVER),
		convert(optionConstructor, DEFAULTS.ON_TERTIARY_CONTAINER.OPTION_CONSTRUCTOR),
		convert(elevation, DEFAULTS.ON_TERTIARY_CONTAINER.ELEVATION)
	)
	maid:GiveTask(inst.Destroying:Connect(function()
		maid:Destroy()
	end))
	return inst
end

return Interface


--!strict
-- this script was generated by the build system, please do not make manual edits
local _Package = script.Parent.Parent.Parent.Parent
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 NewSearchText = React.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 React.createElement(ReactRoblox.createPortal, props)
	end
	function NewSearchText: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 NewSearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.New = NewSearchText
end

do
	local OnPrimarySearchText = React.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 React.createElement(ReactRoblox.createPortal, props)
	end
	function OnPrimarySearchText: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 OnPrimarySearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnPrimary = OnPrimarySearchText
end

do
	local OnSecondarySearchText = React.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 React.createElement(ReactRoblox.createPortal, props)
	end
	function OnSecondarySearchText: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 OnSecondarySearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnSecondary = OnSecondarySearchText
end

do
	local OnTertiarySearchText = React.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 React.createElement(ReactRoblox.createPortal, props)
	end
	function OnTertiarySearchText: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 OnTertiarySearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnTertiary = OnTertiarySearchText
end

do
	local OnPrimaryContainerSearchText = React.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 React.createElement(ReactRoblox.createPortal, props)
	end
	function OnPrimaryContainerSearchText: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 OnPrimaryContainerSearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnPrimaryContainer = OnPrimaryContainerSearchText
end

do
	local OnSecondaryContainerSearchText = React.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 React.createElement(ReactRoblox.createPortal, props)
	end
	function OnSecondaryContainerSearchText: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 OnSecondaryContainerSearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnSecondaryContainer = OnSecondaryContainerSearchText
end

do
	local OnTertiaryContainerSearchText = React.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 React.createElement(ReactRoblox.createPortal, props)
	end
	function OnTertiaryContainerSearchText: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 OnTertiaryContainerSearchText:willUnmount()
		self._maid:Destroy()
		self._instance:Destroy()
	end
	Interface.OnTertiaryContainer = OnTertiaryContainerSearchText
end

return Interface