{"version":3,"file":"BqInput-CG561mwe.cjs","names":[],"sources":["../src/components/input/BqInput.ts"],"sourcesContent":["/**\r\n * Text input form field.\r\n * @element bq-input\r\n * @prop {string}  label       - Field label\r\n * @prop {string}  type        - text | email | password | number | tel | url | search\r\n * @prop {string}  value\r\n * @prop {string}  placeholder\r\n * @prop {string}  name\r\n * @prop {string}  size        - sm | md | lg\r\n * @prop {boolean} disabled\r\n * @prop {boolean} readonly\r\n * @prop {boolean} required\r\n * @prop {string}  error       - Error message (non-empty = error state)\r\n * @prop {string}  hint\r\n * @prop {string}  maxlength\r\n * @prop {boolean} show-counter - Show character counter when maxlength is set\r\n * @slot prefix - Leading icon/element\r\n * @slot suffix - Trailing icon/element\r\n * @fires bq-input  - { value: string }\r\n * @fires bq-change - { value: string }\r\n * @fires bq-focus\r\n * @fires bq-blur\r\n */\r\nimport type { ComponentDefinition } from '@bquery/bquery/component';\r\nimport { bool, component, html } from '@bquery/bquery/component';\r\nimport { escapeHtml } from '@bquery/bquery/security';\r\nimport { t } from '../../i18n/index.js';\r\nimport { uniqueId } from '../../utils/dom.js';\r\nimport { createFormProxy, type FormProxy } from '../../utils/form.js';\r\nimport { getBaseStyles } from '../../utils/styles.js';\r\n\r\ntype BqInputProps = {\r\n  label: string;\r\n  type: string;\r\n  value: string;\r\n  placeholder: string;\r\n  name: string;\r\n  size: string;\r\n  disabled: boolean;\r\n  readonly: boolean;\r\n  required: boolean;\r\n  error: string;\r\n  hint: string;\r\n  maxlength: string;\r\n  'show-counter': boolean;\r\n};\r\ntype BqInputState = { uid: string; passwordVisible: boolean };\r\ntype BqInputEl = HTMLElement & {\r\n  setState(k: 'uid' | 'passwordVisible', v: string | boolean): void;\r\n  getState<T>(k: string): T;\r\n};\r\n\r\nconst definition: ComponentDefinition<BqInputProps, BqInputState> = {\r\n  props: {\r\n    label: { type: String, default: '' },\r\n    type: { type: String, default: 'text' },\r\n    value: { type: String, default: '' },\r\n    placeholder: { type: String, default: '' },\r\n    name: { type: String, default: '' },\r\n    size: { type: String, default: 'md' },\r\n    disabled: { type: Boolean, default: false },\r\n    readonly: { type: Boolean, default: false },\r\n    required: { type: Boolean, default: false },\r\n    error: { type: String, default: '' },\r\n    hint: { type: String, default: '' },\r\n    maxlength: { type: String, default: '' },\r\n    'show-counter': { type: Boolean, default: false },\r\n  },\r\n  state: {\r\n    uid: '',\r\n    passwordVisible: false,\r\n  },\r\n  styles: `\r\n    ${getBaseStyles()}\r\n    *, *::before, *::after { box-sizing: border-box; }\r\n    :host { display: block; }\r\n    .field { display: flex; flex-direction: column; gap: 0.375rem; }\r\n    .label { display: flex; align-items: center; gap: 0.25rem; font-size: var(--bq-font-size-sm,0.875rem); font-weight: var(--bq-font-weight-medium,500); color: var(--bq-text-base,#0f172a); font-family: var(--bq-font-family-sans); }\r\n    .required-mark { color: var(--bq-color-danger-600,#dc2626); }\r\n    .input-wrap {\r\n      display: flex; align-items: center;\r\n      border: 1.5px solid var(--bq-border-emphasis,#cbd5e1);\r\n      border-radius: var(--bq-radius-lg,0.5rem);\r\n      background: var(--bq-bg-base,#fff);\r\n      transition: border-color var(--bq-duration-fast) var(--bq-easing-standard), box-shadow var(--bq-duration-fast) var(--bq-easing-standard);\r\n      overflow: hidden;\r\n    }\r\n    .input-wrap:focus-within { border-color: var(--bq-border-focus,#2563eb); box-shadow: var(--bq-focus-ring); }\r\n    :host([error]:not([error=\"\"])) .input-wrap { border-color: var(--bq-color-danger-500,#ef4444); }\r\n    :host([error]:not([error=\"\"])) .input-wrap:focus-within { border-color: var(--bq-color-danger-500,#ef4444); box-shadow: var(--bq-focus-ring-danger); }\r\n    :host([disabled]) .input-wrap { opacity: 0.5; cursor: not-allowed; background: var(--bq-bg-muted,#f1f5f9); }\r\n    .slot-wrap { display: flex; align-items: center; padding: 0 0.5rem; color: var(--bq-text-muted,#475569); }\r\n    input {\r\n      flex: 1; border: none; outline: none; background: transparent;\r\n      color: var(--bq-text-base,#0f172a); font-family: var(--bq-font-family-sans); width: 100%;\r\n    }\r\n    :host([size=\"sm\"]) input { font-size: 0.875rem; padding: 0.375rem 0.75rem; min-height: 2rem; }\r\n    :host([size=\"md\"]) input, :host(:not([size])) input { font-size: 1rem; padding: 0.5rem 0.875rem; min-height: 2.5rem; }\r\n    :host([size=\"lg\"]) input { font-size: 1.125rem; padding: 0.625rem 1rem; min-height: 3rem; }\r\n    input::placeholder { color: var(--bq-text-subtle,#94a3b8); }\r\n    input:disabled { cursor: not-allowed; }\r\n    .hint { font-size: var(--bq-font-size-sm,0.875rem); color: var(--bq-text-muted,#475569); font-family: var(--bq-font-family-sans); }\r\n    .error-msg { font-size: var(--bq-font-size-sm,0.875rem); color: var(--bq-color-danger-600,#dc2626); font-family: var(--bq-font-family-sans); }\r\n    .footer { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }\r\n    .counter { font-size: var(--bq-font-size-sm,0.875rem); color: var(--bq-text-muted,#475569); font-family: var(--bq-font-family-sans); margin-left: auto; }\r\n    .counter[data-over=\"true\"] { color: var(--bq-color-danger-600,#dc2626); }\r\n    .password-toggle {\r\n      display: inline-flex; align-items: center; justify-content: center;\r\n      background: none; border: none; cursor: pointer;\r\n      padding: 0 0.5rem; margin-inline-start: 0.25rem;\r\n      border-inline-start: 1px solid var(--bq-border-base,#e2e8f0);\r\n      color: var(--bq-text-muted,#475569); font-size: 0.875rem; line-height: 1;\r\n      align-self: stretch;\r\n      transition: color var(--bq-duration-fast) var(--bq-easing-standard), background var(--bq-duration-fast) var(--bq-easing-standard);\r\n    }\r\n    .password-toggle:hover { color: var(--bq-text-base,#0f172a); background: var(--bq-bg-subtle,#f8fafc); }\r\n    .password-toggle:disabled { cursor: not-allowed; opacity: 0.5; }\r\n    .password-toggle:focus-visible { outline: 2px solid transparent; box-shadow: var(--bq-focus-ring); border-radius: var(--bq-radius-sm,0.25rem); }\r\n    .pw-icon { font-size: 1.125rem; line-height: 1; }\r\n    @media (prefers-reduced-motion: reduce) {\r\n      input, .input-wrap, .password-toggle { transition: none; }\r\n    }\r\n  `,\r\n  connected() {\r\n    const self = this as unknown as BqInputEl;\r\n    if (!self.getState<string>('uid'))\r\n      self.setState('uid', uniqueId('bq-input'));\r\n\r\n    // Form proxy for native <form> participation\r\n    const name = self.getAttribute('name') ?? '';\r\n    const value = self.getAttribute('value') ?? '';\r\n    const disabled = self.hasAttribute('disabled');\r\n    const proxy = createFormProxy(self, name, value, disabled, {\r\n      getLiveValue: () => {\r\n        const input = self.shadowRoot?.querySelector(\r\n          'input'\r\n        ) as HTMLInputElement | null;\r\n        return input ? input.value : (self.getAttribute('value') ?? '');\r\n      },\r\n    });\r\n    (self as unknown as Record<string, unknown>)['_formProxy'] = proxy;\r\n\r\n    const ih = (e: Event) => {\r\n      const input = e.target as HTMLInputElement | null;\r\n      if (input?.tagName === 'INPUT') {\r\n        self.setAttribute('value', input.value);\r\n        proxy.setValue(input.value);\r\n        self.dispatchEvent(\r\n          new CustomEvent('bq-input', {\r\n            detail: { value: input.value },\r\n            bubbles: true,\r\n            composed: true,\r\n          })\r\n        );\r\n      }\r\n    };\r\n    const ch = (e: Event) => {\r\n      const input = e.target as HTMLInputElement | null;\r\n      if (input?.tagName === 'INPUT')\r\n        self.dispatchEvent(\r\n          new CustomEvent('bq-change', {\r\n            detail: { value: input.value },\r\n            bubbles: true,\r\n            composed: true,\r\n          })\r\n        );\r\n    };\r\n    const fh = (e: Event) => {\r\n      if ((e.target as Element)?.tagName === 'INPUT')\r\n        self.dispatchEvent(\r\n          new CustomEvent('bq-focus', { bubbles: true, composed: true })\r\n        );\r\n    };\r\n    const bh = (e: Event) => {\r\n      if ((e.target as Element)?.tagName === 'INPUT')\r\n        self.dispatchEvent(\r\n          new CustomEvent('bq-blur', { bubbles: true, composed: true })\r\n        );\r\n    };\r\n    // Password visibility toggle\r\n    const pwToggle = (e: Event) => {\r\n      if (self.hasAttribute('disabled') || self.hasAttribute('readonly'))\r\n        return;\r\n      if ((e.target as Element)?.closest('.password-toggle')) {\r\n        const current = self.getState<boolean>('passwordVisible');\r\n        self.setState('passwordVisible', !current);\r\n      }\r\n    };\r\n    const s = self as unknown as Record<string, unknown>;\r\n    s['_ih'] = ih;\r\n    s['_ch'] = ch;\r\n    s['_fh'] = fh;\r\n    s['_bh'] = bh;\r\n    s['_pwToggle'] = pwToggle;\r\n    self.shadowRoot?.addEventListener('input', ih);\r\n    self.shadowRoot?.addEventListener('change', ch);\r\n    self.shadowRoot?.addEventListener('focusin', fh);\r\n    self.shadowRoot?.addEventListener('focusout', bh);\r\n    self.shadowRoot?.addEventListener('click', pwToggle);\r\n  },\r\n  disconnected() {\r\n    const s = this as unknown as Record<string, unknown>;\r\n    const sr = this.shadowRoot;\r\n    const ih = s['_ih'] as EventListener | undefined;\r\n    if (ih) sr?.removeEventListener('input', ih);\r\n    const ch = s['_ch'] as EventListener | undefined;\r\n    if (ch) sr?.removeEventListener('change', ch);\r\n    const fh = s['_fh'] as EventListener | undefined;\r\n    if (fh) sr?.removeEventListener('focusin', fh);\r\n    const bh = s['_bh'] as EventListener | undefined;\r\n    if (bh) sr?.removeEventListener('focusout', bh);\r\n    const pwToggle = s['_pwToggle'] as EventListener | undefined;\r\n    if (pwToggle) sr?.removeEventListener('click', pwToggle);\r\n    (s['_formProxy'] as FormProxy | undefined)?.cleanup();\r\n  },\r\n  updated() {\r\n    const self = this as unknown as BqInputEl;\r\n    if (\r\n      this.getAttribute('type') !== 'password' &&\r\n      self.getState<boolean>('passwordVisible')\r\n    ) {\r\n      self.setState('passwordVisible', false);\r\n    }\r\n    const s = this as unknown as Record<string, unknown>;\r\n    const proxy = s['_formProxy'] as FormProxy | undefined;\r\n    if (proxy) {\r\n      proxy.setName(this.getAttribute('name') ?? '');\r\n      proxy.setValue(this.getAttribute('value') ?? '');\r\n      proxy.setDisabled(this.hasAttribute('disabled'));\r\n    }\r\n  },\r\n  render({ props, state }) {\r\n    const hasError = Boolean(props.error);\r\n    const uid = state.uid || 'bq-input';\r\n    const isPassword = props.type === 'password';\r\n    const effectiveType =\r\n      isPassword && state.passwordVisible ? 'text' : props.type;\r\n    const maxLen = props.maxlength ? parseInt(props.maxlength, 10) : 0;\r\n    const showCounter = props['show-counter'] && maxLen > 0;\r\n    const charCount = props.value.length;\r\n    const isOver = showCounter && charCount > maxLen;\r\n    const hasFooter = hasError || Boolean(props.hint) || showCounter;\r\n    const describedByParts: string[] = [];\r\n    if (hasError) describedByParts.push(`${uid}-err`);\r\n    else if (props.hint) describedByParts.push(`${uid}-hint`);\r\n    if (showCounter) describedByParts.push(`${uid}-counter`);\r\n    const describedBy = describedByParts.join(' ');\r\n    return html`\r\n      <div class=\"field\" part=\"field\">\r\n        ${props.label\r\n          ? `<label class=\"label\" for=\"${uid}\" part=\"label\">${escapeHtml(props.label)}${props.required ? '<span class=\"required-mark\" aria-hidden=\"true\"> *</span>' : ''}</label>`\r\n          : ''}\r\n        <div class=\"input-wrap\" part=\"input-wrap\">\r\n          <span class=\"slot-wrap\" part=\"prefix\"\r\n            ><slot name=\"prefix\"></slot\r\n          ></span>\r\n          <input\r\n            part=\"input\"\r\n            id=\"${uid}\"\r\n            type=\"${escapeHtml(effectiveType)}\"\r\n            name=\"${escapeHtml(props.name)}\"\r\n            placeholder=\"${escapeHtml(props.placeholder)}\"\r\n            value=\"${escapeHtml(props.value)}\"\r\n            ${props.maxlength\r\n              ? `maxlength=\"${escapeHtml(props.maxlength)}\"`\r\n              : ''}\r\n            ${bool('disabled', props.disabled)}\r\n            ${bool('readonly', props.readonly)}\r\n            ${bool('required', props.required)}\r\n            aria-invalid=\"${hasError ? 'true' : 'false'}\"\r\n            ${props.required ? 'aria-required=\"true\"' : ''}\r\n            ${describedBy ? `aria-describedby=\"${describedBy}\"` : ''}\r\n            ${hasError ? `aria-errormessage=\"${uid}-err\"` : ''}\r\n          />\r\n          ${isPassword\r\n            ? `<button type=\"button\" class=\"password-toggle\" part=\"password-toggle\" aria-label=\"${escapeHtml(state.passwordVisible ? t('input.hidePassword') : t('input.showPassword'))}\" aria-pressed=\"${state.passwordVisible ? 'true' : 'false'}\" ${props.disabled || props.readonly ? 'disabled aria-disabled=\"true\"' : ''}>\r\n                <span class=\"pw-icon\" aria-hidden=\"true\">${state.passwordVisible ? '&#9673;' : '&#9678;'}</span>\r\n              </button>`\r\n            : ''}\r\n          <span class=\"slot-wrap\" part=\"suffix\"\r\n            ><slot name=\"suffix\"></slot\r\n          ></span>\r\n        </div>\r\n        ${hasFooter\r\n          ? `<div class=\"footer\" part=\"footer\">\r\n              <span>\r\n                ${\r\n                  hasError\r\n                    ? `<span class=\"error-msg\" id=\"${uid}-err\" role=\"alert\" part=\"error\">${escapeHtml(props.error)}</span>`\r\n                    : ''\r\n                }\r\n                ${\r\n                  props.hint && !hasError\r\n                    ? `<span class=\"hint\" id=\"${uid}-hint\" part=\"hint\">${escapeHtml(props.hint)}</span>`\r\n                    : ''\r\n                }\r\n              </span>\r\n              ${\r\n                showCounter\r\n                  ? `<span class=\"counter\" id=\"${uid}-counter\" part=\"counter\" data-over=\"${isOver ? 'true' : 'false'}\" aria-live=\"polite\">${escapeHtml(t('input.characterCount', { count: charCount, max: maxLen }))}</span>`\r\n                  : ''\r\n              }\r\n            </div>`\r\n          : ''}\r\n      </div>\r\n    `;\r\n  },\r\n};\r\n\r\ncomponent<BqInputProps, BqInputState>('bq-input', definition);\r\n"],"mappings":"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"}