import { StartEnd } from "@fluentui/web-components"; import { BaseTextInput } from "./text-input.base"; import type { TextInputAppearance, TextInputControlSize } from "./text-input.options"; /** * TextInput * @summary A custom text input element based on Fluent UI's TextInput with custom styling and behavior. * * @example * ```html * * 🔍 * ✖️ * * ``` * * @attr {string | undefined} appearance - Indicates the styled appearance of the element. * @attr {string | undefined} control-size - Sets the size of the control. * @attr {string | undefined} autocomplete - Indicates the element's autocomplete state. * @attr {boolean | undefined} autofocus - Indicates that the element should get focus after the page finishes loading. * @attr {string} current-value - The current value of the input. * @attr {string | undefined} dirname - Sets the directionality of the element to be submitted with form data. * @attr {boolean | undefined} disabled - Sets the element's disabled state. * @attr {string | undefined} form - The id of a form to associate the element to. * @attr {string | undefined} list - Allows associating a `` to the element by ID. * @attr {number | undefined} maxlength - The maximum number of characters a user can enter. * @attr {number | undefined} minlength - The minimum number of characters a user can enter. * @attr {boolean | undefined} multiple - Indicates that a comma-separated list of email addresses can be entered. This attribute is only valid when `type="email"`. * @attr {string | undefined} name - The name of the element. This element's value will be surfaced during form submission under the provided name. * @attr {string | undefined} pattern - A regular expression that the value must match to pass validation. * @attr {string | undefined} placeholder - Sets the placeholder value of the element, generally used to provide a hint to the user. * @attr {boolean | undefined} readonly - When true, the control will be immutable by user interaction. * @attr {boolean | undefined} required - The element's required attribute. * @attr {number | undefined} size - Sets the width of the element to a specified number of characters. * @attr {string | boolean | undefined} spellcheck - Controls whether or not to enable spell checking for the input field, or if the default spell checking configuration should be used. * @attr {string | undefined} type - Allows setting a type or mode of text. * @attr {string} value - The initial value of the input. * * @prop {string | undefined} appearance - Indicates the styled appearance of the element. * @prop {string | undefined} controlSize - Sets the size of the control. * @prop {string | undefined} autocomplete - Indicates the element's autocomplete state. * @prop {boolean | undefined} autofocus - Indicates that the element should get focus after the page finishes loading. * @prop {string} currentValue - The current value of the input. * @prop {string | undefined} dirname - Sets the directionality of the element to be submitted with form data. * @prop {boolean | undefined} disabled - Sets the element's disabled state. * @prop {string | undefined} form - The id of a form to associate the element to. * @prop {string | undefined} list - Allows associating a `` to the element by ID. * @prop {number | undefined} maxlength - The maximum number of characters a user can enter. * @prop {number | undefined} minlength - The minimum number of characters a user can enter. * @prop {boolean | undefined} multiple - Indicates that a comma-separated list of email addresses can be entered. This attribute is only valid when `type="email"`. * @prop {string | undefined} name - The name of the element. This element's value will be surfaced during form submission under the provided name. * @prop {string | undefined} pattern - A regular expression that the value must match to pass validation. * @prop {string | undefined} placeholder - Sets the placeholder value of the element, generally used to provide a hint to the user. * @prop {boolean | undefined} readOnly - When true, the control will be immutable by user interaction. * @prop {boolean | undefined} required - The element's required attribute. * @prop {number | undefined} size - Sets the width of the element to a specified number of characters. * @prop {string | boolean | undefined} spellcheck - Controls whether or not to enable spell checking for the input field, or if the default spell checking configuration should be used. * @prop {string | undefined} type - Allows setting a type or mode of text. * @prop {string} value - The initial value of the input. * * @slot start - Content which can be provided before the input. * @slot end - Content which can be provided after the input. * @slot - The default slot for button content. * * @csspart label - The internal `