@sky.ui/core 0.0.36 → 0.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/custom-elements.json +2206 -2140
  2. package/dist/helper/index.js +1 -1
  3. package/dist/helper/utils/color-resolver.d.ts +9 -1
  4. package/dist/helper/utils/color-resolver.js +1 -1
  5. package/dist/helper/utils/color-resolver.js.map +1 -1
  6. package/dist/helper/utils/contrast-color.d.ts +128 -0
  7. package/dist/helper/utils/contrast-color.js +2 -0
  8. package/dist/helper/utils/contrast-color.js.map +1 -0
  9. package/dist/helper/utils/index.d.ts +1 -0
  10. package/dist/helper/utils/index.js +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/sky-alert/sky-alert.js +13 -11
  13. package/dist/sky-alert/sky-alert.js.map +1 -1
  14. package/dist/sky-appbar/sky-appbar.js +6 -5
  15. package/dist/sky-appbar/sky-appbar.js.map +1 -1
  16. package/dist/sky-badge/sky-badge.js +13 -9
  17. package/dist/sky-badge/sky-badge.js.map +1 -1
  18. package/dist/sky-button/sky-button.js +14 -11
  19. package/dist/sky-button/sky-button.js.map +1 -1
  20. package/dist/sky-checkbox/sky-checkbox.js +13 -11
  21. package/dist/sky-checkbox/sky-checkbox.js.map +1 -1
  22. package/dist/sky-chip/sky-chip.js +14 -11
  23. package/dist/sky-chip/sky-chip.js.map +1 -1
  24. package/dist/sky-combobox/sky-combobox.d.ts +13 -3
  25. package/dist/sky-combobox/sky-combobox.js +680 -255
  26. package/dist/sky-combobox/sky-combobox.js.map +1 -1
  27. package/dist/sky-input/sky-input.d.ts +3 -2
  28. package/dist/sky-input/sky-input.js +452 -180
  29. package/dist/sky-input/sky-input.js.map +1 -1
  30. package/dist/sky-radio/sky-radio.d.ts +2 -0
  31. package/dist/sky-radio/sky-radio.js +28 -13
  32. package/dist/sky-radio/sky-radio.js.map +1 -1
  33. package/dist/sky-theme-provider/sky-theme-provider.js +1 -1
  34. package/dist/sky-theme-provider/sky-theme-provider.js.map +1 -1
  35. package/package.json +1 -1
@@ -1,21 +1,43 @@
1
- import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefined as r}from"lit/directives/if-defined.js";import{styleMap as o}from"lit/directives/style-map.js";import{property as a,state as n,query as l,customElement as p}from"lit/decorators.js";import{resolveColor as h}from"../helper/utils/color-resolver.js";import{live as d}from"lit/directives/live.js";import{FormControlBase as c}from"../helper/internals/form-control-base.js";import{SkyIcon as u}from"../sky-icon/sky-icon.js";var y=Object.defineProperty,f=Object.getOwnPropertyDescriptor,v=(t,e,i,s)=>{for(var r,o=s>1?void 0:s?f(e,i):e,a=t.length-1;a>=0;a--)(r=t[a])&&(o=(s?r(e,i,o):r(o))||o);return s&&o&&y(e,i,o),o};let m=class extends c{constructor(){super(...arguments),this.value="",this.placeholder="",this.label="",this.type="text",this.suffix="",this.prefix="",this.prefixColor="",this.suffixColor="",this.color="primary",this._validations=[],this.compact=!1,this.loading=!1,this.showErrors=!1,this.clearable=!1,this.errorDisplayMode="single",this.required=!1,this.step=null,this.min=null,this.max=null,this.autocapitalize="off",this.autocomplete="off",this.spellcheck=!1,this.dir="ltr",this.rows=6,this.resizable="none",this.accept="",this.multiple=!1,this.inputmode=null,this.enterkeyhint=null,this.pattern=null,this.minlength=null,this.maxlength=null,this.list=null,this.size=null,this.cols=null,this.autofocus=!1,this.capture=!1,this.inputRole=null,this.ariaLabel=null,this.ariaLabelledby=null,this.ariaDescribedby=null,this.showNumberButtons=!1,this.showPasswordToggle=!0,this.passwordVisibleIcon="material-symbols:visibility-off",this.passwordHiddenIcon="material-symbols:visibility",this.validationActive=!1,this.invalid=!1,this.variant="default",this.selectedFileName="",this.selectedFiles=[],this.focused=!1,this.validationStatus=[],this.validationErrors=[],this.typingStarted=!1,this.autofillIconSlot="left",this.autofillGuardActive=!1,this.showPassword=!1,this.totalFileSize=0,this.selectedFileCount=0,this.filePreview=null,this._leftIconSlot=null,this._rightIconSlot=null,this._iconClickWired=new WeakSet,this._onLeftIconSlotChange=()=>this._wireIconSlot("left",this._leftIconSlot),this._onRightIconSlotChange=()=>this._wireIconSlot("right",this._rightIconSlot),this.keepInputFocused=t=>{t.preventDefault(),t.stopPropagation(),this.refocusInput()}}get validations(){return this._validations}set validations(t){const e=this._validations;this._validations=Array.isArray(t)?t:[],this.requestUpdate("validations",e)}connectedCallback(){super.connectedCallback(),this.autofillGuardActive="search"===this.type,this.hasAttribute("tabindex")||(this.tabIndex=this.disabled?-1:0),this.hasUpdated&&this._setupIconSlots()}disconnectedCallback(){this._leftIconSlot?.removeEventListener("slotchange",this._onLeftIconSlotChange),this._rightIconSlot?.removeEventListener("slotchange",this._onRightIconSlotChange),this._leftIconSlot=null,this._rightIconSlot=null,super.disconnectedCallback()}_setupIconSlots(){this._leftIconSlot||(this._leftIconSlot=this.shadowRoot?.querySelector('slot[name="icon-left"]')??null,this._leftIconSlot?.addEventListener("slotchange",this._onLeftIconSlotChange)),this._rightIconSlot||(this._rightIconSlot=this.shadowRoot?.querySelector('slot[name="icon-right"]')??null,this._rightIconSlot?.addEventListener("slotchange",this._onRightIconSlotChange)),this._wireIconSlot("left",this._leftIconSlot),this._wireIconSlot("right",this._rightIconSlot)}_wireIconSlot(t,e){if(e)for(const i of e.assignedElements({flatten:!0}))i instanceof HTMLElement&&(this._iconClickWired.has(i)||(this._iconClickWired.add(i),i.addEventListener("click",()=>this.handleIconClick(t))))}firstUpdated(t){super.firstUpdated(t),this.captureDefaultValue(this.value),this.syncFormValue(),this.syncValidity(),this._setupIconSlots()}willUpdate(t){t.has("validations")&&Array.isArray(this.validations)&&(this.validationStatus=this.validations.map(()=>!1)),t.has("value")&&"file"===this.type&&(null==this.value||""===String(this.value).trim()?(this.selectedFileName="",this.selectedFiles=[],this.totalFileSize=0,this.selectedFileCount=0,this.filePreview=null):this.selectedFileName||(this.selectedFileName=this.value)),t.has("type")&&"search"===this.type&&(this.autofillGuardActive=!0)}updated(t){if(super.updated(t),t.has("color")&&this.color&&this.style.setProperty("--sky-input-color",h(this.color)),t.has("rows")){const t=this.inputWrapperEl;t&&t.style.setProperty("--rows",String(this.rows))}(t.has("value")||t.has("selectedFiles")||t.has("selectedFileName")||t.has("type")||t.has("multiple")||t.has("name")||t.has("disabled"))&&this.syncFormValue(),(t.has("value")||t.has("selectedFiles")||t.has("selectedFileName")||t.has("validationErrors")||t.has("required")||t.has("disabled")||t.has("readonly"))&&this.syncValidity()}getFormValue(){if(!this.name)return null;if("file"===this.type){if(!this.selectedFiles||0===this.selectedFiles.length)return null;if(this.multiple){const t=new FormData;for(const e of this.selectedFiles)t.append(this.name,e);return t}return this.selectedFiles[0]}return this.value??""}setValueFromFormState(t){"string"!=typeof t?(this.value="",this.selectedFileName="",this.selectedFiles=[],this.totalFileSize=0,this.selectedFileCount=0,this.filePreview=null):this.value=t}getValidityAnchor(){return this}isEmpty(){return"file"===this.type?!this.selectedFiles||0===this.selectedFiles.length:!this.value||""===this.value.toString().trim()}getCustomErrorMessage(){return this.validationErrors?.length?"all"===this.errorDisplayMode?this.validationErrors.join("\n"):this.validationErrors[0]:""}getNativeControl(){return"textarea"===this.type?this.shadowRoot?.querySelector("textarea"):this.shadowRoot?.querySelector("input")}onNativeValueMutated(t){"file"!==this.type&&(this.value=t?.value??""),this.validateInput()}reset(){this.value="",this.selectedFileName="",this.filePreview=null,this.selectedFiles=[],this.selectedFileCount=0,this.validationErrors=[],this.typingStarted=!1,this.validationActive=!1,this.selectedFileCount=0,this.totalFileSize=0}get nativeRequiredMessage(){return this.validationActive?this.disabled?"":this.required&&this.isEmpty()?this.requiredMessage||"This field is required.":"":""}getEmittedValue(){if("number"!==this.type)return this.value;if(""===this.value||null==this.value)return"";const t=Number(this.value);return Number.isFinite(t)?t:this.value}handleClear(){this.disabled||this.readonly||(this.reset(),this.validationActive=!0,this.validateInput(),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.getEmittedValue()},bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("value-cleared",{detail:{value:this.getEmittedValue()},bubbles:!0,composed:!0})))}handleFileChange(t){if(this.disabled||this.readonly)return;const e=t.target.files;if(e&&e.length){const i=Array.from(e);this.selectedFiles=i,this.selectedFileName=i.map(t=>t.name).join(", "),this.value=this.selectedFileName,this.syncFormValue(),this.syncValidity();const s=i.reduce((t,e)=>t+e.size,0);if(this.totalFileSize=s,this.selectedFileCount=i.length,i[0].type.startsWith("image/")){const t=new FileReader;t.onload=t=>{t.target&&(this.filePreview=t.target.result)},t.readAsDataURL(i[0])}else this.filePreview=null;this.reemitNativeEvent("change",t),this.reemitNativeEvent("input",t),this.dispatchEvent(new CustomEvent("file-selected",{detail:{files:i,fileName:this.selectedFileName,totalSize:s,fileCount:this.selectedFileCount},bubbles:!0,composed:!0})),this.validateInput()}else this.value="",this.filePreview=null,this.totalFileSize=0,this.selectedFileCount=0,this.selectedFiles=[],this.validateInput()}handleKeydown(t){this.disabled||this.readonly||"Enter"===t.key&&"file"===this.type&&(t.preventDefault(),t.stopPropagation(),this.triggerNativeDropdown())}get preview(){return this.filePreview}handleInput(t){t.stopPropagation(),this.disabled||this.readonly?t.preventDefault():(this.value=t.target.value,this.syncFormValue(),this.syncValidity(),this.typingStarted||(this.typingStarted=!0),this.validateInput(),this.reemitNativeEvent("input",t),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.getEmittedValue()},bubbles:!0,composed:!0})))}handleFocus(t){t.stopPropagation(),this.releaseAutofillGuard(),this.focused=!0,this.reemitNativeEvent("focus",t)}releaseAutofillGuard(){this.autofillGuardActive&&(this.autofillGuardActive=!1)}handleAutofillGuardPointerDown(t){this.releaseAutofillGuard(),t.stopPropagation()}onFormReset(){this.setValueFromFormState(this.defaultValue),this.validationActive=!1,this.invalid=!1,this.typingStarted=!1,this.validationErrors=[],this.validationStatus=[],"file"===this.type&&(this.selectedFiles=[],this.selectedFileName="",this.totalFileSize=0,this.selectedFileCount=0,this.filePreview=null),"search"===this.type&&(this.autofillGuardActive=!0)}handleBlur(t){t.stopPropagation(),this.validationActive=!0,this.focused=!1,this.reemitNativeEvent("blur",t)}validateForForm(){const t="file"===this.type?this.selectedFiles??[]:this.value??"";for(const e of this.validations??[]){const i=e(t);if(!0!==i)return"string"==typeof i?i:"Invalid value."}return""}validateInput(){this.validationErrors=[],this.validationStatus=[];const t="file"===this.type,e=t?!this.selectedFiles||0===this.selectedFiles.length:!this.value||""===this.value.toString().trim();if(this.required&&e&&this.syncValidity(),Array.isArray(this.validations)&&this.validations.length){const e=t?this.selectedFiles??[]:this.value??"";this.validationStatus=this.validations.map((t,i)=>{try{if("function"!=typeof t)throw new Error(`Validation at index ${i} must be a function.`);const s=t(e);return!0===s||(this.validationErrors.push("string"==typeof s?s:`Validation ${i} failed.`),!1)}catch(t){const e="object"==typeof t&&null!==t&&"message"in t?String(t.message):"string"==typeof t?t:"Unknown error";return this.validationErrors.push(`Error in validation ${i}: ${e}`),!1}})}this.dispatchEvent(new CustomEvent("validation-error",{detail:{errors:this.validationErrors},bubbles:!0,composed:!0})),this.syncValidity();const i=0===this.validationErrors.length;return this.invalid=!i,i}getErrorMessages(){switch(this.errorDisplayMode){case"single":return this.validationErrors.slice(0,1);case"all":return this.validationErrors;default:return[]}}handleIconClick(t,e=null){this.dispatchEvent(new CustomEvent(`${t}-icon-click`,{detail:{position:t,eventType:e?e.type:null,eventData:e},bubbles:!0,composed:!0}))}formatFileSize(t){if(0===t)return"0 Bytes";const e=Math.floor(Math.log(t)/Math.log(1024));return`${parseFloat((t/Math.pow(1024,e)).toFixed(2))} ${["Bytes","KB","MB","GB","TB"][e]}`}incrementValue(){if(this.disabled||this.readonly)return;const t=parseFloat(this.value)||0,e=parseFloat(this.step??"")||1;t+e<=(this.max?parseFloat(this.max):1/0)&&(this.value=(t+e).toString(),this.validateInput(),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.getEmittedValue()}}))),this.refocusInput()}decrementValue(){if(this.disabled||this.readonly)return;const t=parseFloat(this.value)||0,e=parseFloat(this.step??"")||1;t-e>=(this.min?parseFloat(this.min):-1/0)&&(this.value=(t-e).toString(),this.validateInput(),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.getEmittedValue()}}))),this.refocusInput()}renderValidationErrors(){if(!this.showErrors||!this.validationActive)return null;const t=this.nativeRequiredMessage,e=this.getErrorMessages();let s=[];if("single"===this.errorDisplayMode?t?s=[t]:e.length&&(s=[e[0]]):s=t?[t,...e]:e,!s.length)return null;const r=`${this.id||"sky-input"}-errors`;return i`
1
+ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefined as a}from"lit/directives/if-defined.js";import{styleMap as r}from"lit/directives/style-map.js";import{property as n,state as o,query as l,customElement as p}from"lit/decorators.js";import{resolveColor as d}from"../helper/utils/color-resolver.js";import{live as h}from"lit/directives/live.js";import{FormControlBase as c}from"../helper/internals/form-control-base.js";import{SkyIcon as u}from"../sky-icon/sky-icon.js";var y=Object.defineProperty,v=Object.getOwnPropertyDescriptor,f=(t,e,i,s)=>{for(var a,r=s>1?void 0:s?v(e,i):e,n=t.length-1;n>=0;n--)(a=t[n])&&(r=(s?a(e,i,r):a(r))||r);return s&&r&&y(e,i,r),r};let m=class extends c{constructor(){super(...arguments),this.value="",this.placeholder="",this.label="",this.type="text",this.suffix="",this.prefix="",this.prefixColor="",this.suffixColor="",this.color="primary",this._validations=[],this.compact=!1,this.loading=!1,this.showErrors=!1,this.clearable=!1,this.errorDisplayMode="single",this.required=!1,this.step=null,this.min=null,this.max=null,this.autocapitalize="off",this.autocomplete="off",this.spellcheck=!1,this.dir="ltr",this.rows=6,this.resizable="none",this.accept="",this.multiple=!1,this.inputmode=null,this.enterkeyhint=null,this.pattern=null,this.minlength=null,this.maxlength=null,this.list=null,this.size=null,this.cols=null,this.autofocus=!1,this.capture=!1,this.inputRole=null,this.ariaLabel=null,this.ariaLabelledby=null,this.ariaDescribedby=null,this.showNumberButtons=!1,this.showPasswordToggle=!0,this.passwordVisibleIcon="material-symbols:visibility-off",this.passwordHiddenIcon="material-symbols:visibility",this.validationActive=!1,this.invalid=!1,this.variant="default",this.selectedFileName="",this.selectedFiles=[],this.focused=!1,this.validationStatus=[],this.validationErrors=[],this.typingStarted=!1,this.autofillIconSlot="left",this.autofillGuardActive=!1,this.showPassword=!1,this.totalFileSize=0,this.selectedFileCount=0,this.filePreview=null,this._leftIconSlot=null,this._rightIconSlot=null,this._iconClickWired=new WeakSet,this._onLeftIconSlotChange=()=>this._wireIconSlot("left",this._leftIconSlot),this._onRightIconSlotChange=()=>this._wireIconSlot("right",this._rightIconSlot),this.keepInputFocused=t=>{t.preventDefault(),t.stopPropagation(),this.refocusInput()}}get validations(){return this._validations}set validations(t){const e=this._validations;this._validations=Array.isArray(t)?t:[],this.requestUpdate("validations",e)}connectedCallback(){super.connectedCallback(),this.autofillGuardActive="search"===this.type,this.hasAttribute("tabindex")||(this.tabIndex=this.disabled?-1:0),this.hasUpdated&&this._setupIconSlots()}disconnectedCallback(){this._leftIconSlot?.removeEventListener("slotchange",this._onLeftIconSlotChange),this._rightIconSlot?.removeEventListener("slotchange",this._onRightIconSlotChange),this._leftIconSlot=null,this._rightIconSlot=null,super.disconnectedCallback()}_setupIconSlots(){this._leftIconSlot||(this._leftIconSlot=this.shadowRoot?.querySelector('slot[name="icon-left"]')??null,this._leftIconSlot?.addEventListener("slotchange",this._onLeftIconSlotChange)),this._rightIconSlot||(this._rightIconSlot=this.shadowRoot?.querySelector('slot[name="icon-right"]')??null,this._rightIconSlot?.addEventListener("slotchange",this._onRightIconSlotChange)),this._wireIconSlot("left",this._leftIconSlot),this._wireIconSlot("right",this._rightIconSlot)}_wireIconSlot(t,e){if(e)for(const i of e.assignedElements({flatten:!0}))i instanceof HTMLElement&&(this._iconClickWired.has(i)||(this._iconClickWired.add(i),i.addEventListener("click",()=>this.handleIconClick(t))))}firstUpdated(t){super.firstUpdated(t),this.captureDefaultValue(this.value),this.syncFormValue(),this.syncValidity(),this._setupIconSlots()}willUpdate(t){t.has("validations")&&Array.isArray(this.validations)&&(this.validationStatus=this.validations.map(()=>!1)),t.has("value")&&"file"===this.type&&(null==this.value||""===String(this.value).trim()?(this.selectedFileName="",this.selectedFiles=[],this.totalFileSize=0,this.selectedFileCount=0,this.filePreview=null):this.selectedFileName||(this.selectedFileName=this.value)),t.has("type")&&"search"===this.type&&(this.autofillGuardActive=!0)}updated(t){if(super.updated(t),t.has("color")&&this.color&&this.style.setProperty("--sky-input-color",d(this.color)),t.has("rows")){const t=this.inputWrapperEl;t&&t.style.setProperty("--rows",String(this.rows))}(t.has("value")||t.has("selectedFiles")||t.has("selectedFileName")||t.has("type")||t.has("multiple")||t.has("name")||t.has("disabled"))&&this.syncFormValue(),(t.has("value")||t.has("selectedFiles")||t.has("selectedFileName")||t.has("validationErrors")||t.has("required")||t.has("disabled")||t.has("readonly"))&&this.syncValidity()}getFormValue(){if(!this.name)return null;if("file"===this.type){if(!this.selectedFiles||0===this.selectedFiles.length)return null;if(this.multiple){const t=new FormData;for(const e of this.selectedFiles)t.append(this.name,e);return t}return this.selectedFiles[0]}return this.value??""}setValueFromFormState(t){"string"!=typeof t?(this.value="",this.selectedFileName="",this.selectedFiles=[],this.totalFileSize=0,this.selectedFileCount=0,this.filePreview=null):this.value=t}getValidityAnchor(){return this}isEmpty(){return"file"===this.type?!this.selectedFiles||0===this.selectedFiles.length:!this.value||""===this.value.toString().trim()}getCustomErrorMessage(){return this.validationErrors?.length?"all"===this.errorDisplayMode?this.validationErrors.join("\n"):this.validationErrors[0]:""}getNativeControl(){return"textarea"===this.type?this.shadowRoot?.querySelector("textarea"):this.shadowRoot?.querySelector("input")}onNativeValueMutated(t){"file"!==this.type&&(this.value=t?.value??""),this.validateInput()}reset(){this.value="",this.selectedFileName="",this.filePreview=null,this.selectedFiles=[],this.selectedFileCount=0,this.validationErrors=[],this.typingStarted=!1,this.validationActive=!1,this.selectedFileCount=0,this.totalFileSize=0}get nativeRequiredMessage(){return this.validationActive?this.disabled?"":this.required&&this.isEmpty()?this.requiredMessage||"This field is required.":"":""}getEmittedValue(){if("number"!==this.type)return this.value;if(""===this.value||null==this.value)return"";const t=Number(this.value);return Number.isFinite(t)?t:this.value}handleClear(){this.disabled||this.readonly||(this.reset(),this.validationActive=!0,this.validateInput(),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.getEmittedValue()},bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("value-cleared",{detail:{value:this.getEmittedValue()},bubbles:!0,composed:!0})))}handleFileChange(t){if(this.disabled||this.readonly)return;const e=t.target.files;if(e&&e.length){const i=Array.from(e);this.selectedFiles=i,this.selectedFileName=i.map(t=>t.name).join(", "),this.value=this.selectedFileName,this.syncFormValue(),this.syncValidity();const s=i.reduce((t,e)=>t+e.size,0);if(this.totalFileSize=s,this.selectedFileCount=i.length,i[0].type.startsWith("image/")){const t=new FileReader;t.onload=t=>{t.target&&(this.filePreview=t.target.result)},t.readAsDataURL(i[0])}else this.filePreview=null;this.reemitNativeEvent("change",t),this.reemitNativeEvent("input",t),this.dispatchEvent(new CustomEvent("file-selected",{detail:{files:i,fileName:this.selectedFileName,totalSize:s,fileCount:this.selectedFileCount},bubbles:!0,composed:!0})),this.validateInput()}else this.value="",this.filePreview=null,this.totalFileSize=0,this.selectedFileCount=0,this.selectedFiles=[],this.validateInput()}handleKeydown(t){this.disabled||this.readonly||"Enter"===t.key&&"file"===this.type&&(t.preventDefault(),t.stopPropagation(),this.triggerNativeDropdown())}get preview(){return this.filePreview}handleInput(t){t.stopPropagation(),this.disabled||this.readonly?t.preventDefault():(this.value=t.target.value,this.syncFormValue(),this.syncValidity(),this.typingStarted||(this.typingStarted=!0),this.validateInput(),this.reemitNativeEvent("input",t),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.getEmittedValue()},bubbles:!0,composed:!0})))}handleFocus(t){t.stopPropagation(),this.releaseAutofillGuard(),this.focused=!0,this.reemitNativeEvent("focus",t)}releaseAutofillGuard(){this.autofillGuardActive&&(this.autofillGuardActive=!1)}handleAutofillGuardPointerDown(t){this.releaseAutofillGuard(),t.stopPropagation()}onFormReset(){this.setValueFromFormState(this.defaultValue),this.validationActive=!1,this.invalid=!1,this.typingStarted=!1,this.validationErrors=[],this.validationStatus=[],"file"===this.type&&(this.selectedFiles=[],this.selectedFileName="",this.totalFileSize=0,this.selectedFileCount=0,this.filePreview=null),"search"===this.type&&(this.autofillGuardActive=!0)}handleBlur(t){t.stopPropagation(),this.validationActive=!0,this.focused=!1,this.reemitNativeEvent("blur",t)}validateForForm(){const t="file"===this.type?this.selectedFiles??[]:this.value??"";for(const e of this.validations??[]){const i=e(t);if(!0!==i)return"string"==typeof i?i:"Invalid value."}return""}validateInput(){this.validationErrors=[],this.validationStatus=[];const t="file"===this.type,e=t?!this.selectedFiles||0===this.selectedFiles.length:!this.value||""===this.value.toString().trim();if(this.required&&e&&this.syncValidity(),Array.isArray(this.validations)&&this.validations.length){const e=t?this.selectedFiles??[]:this.value??"";this.validationStatus=this.validations.map((t,i)=>{try{if("function"!=typeof t)throw new Error(`Validation at index ${i} must be a function.`);const s=t(e);return!0===s||(this.validationErrors.push("string"==typeof s?s:`Validation ${i} failed.`),!1)}catch(t){const e="object"==typeof t&&null!==t&&"message"in t?String(t.message):"string"==typeof t?t:"Unknown error";return this.validationErrors.push(`Error in validation ${i}: ${e}`),!1}})}this.dispatchEvent(new CustomEvent("validation-error",{detail:{errors:this.validationErrors},bubbles:!0,composed:!0})),this.syncValidity();const i=0===this.validationErrors.length;return this.invalid=!i,i}getErrorMessages(){switch(this.errorDisplayMode){case"single":return this.validationErrors.slice(0,1);case"all":return this.validationErrors;default:return[]}}handleIconClick(t,e=null){this.dispatchEvent(new CustomEvent(`${t}-icon-click`,{detail:{position:t,eventType:e?e.type:null,eventData:e},bubbles:!0,composed:!0}))}formatFileSize(t){if(0===t)return"0 Bytes";const e=Math.floor(Math.log(t)/Math.log(1024));return`${parseFloat((t/Math.pow(1024,e)).toFixed(2))} ${["Bytes","KB","MB","GB","TB"][e]}`}incrementValue(){if(this.disabled||this.readonly)return;const t=parseFloat(this.value)||0,e=parseFloat(this.step??"")||1;t+e<=(this.max?parseFloat(this.max):1/0)&&(this.value=(t+e).toString(),this.validateInput(),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.getEmittedValue()}}))),this.refocusInput()}decrementValue(){if(this.disabled||this.readonly)return;const t=parseFloat(this.value)||0,e=parseFloat(this.step??"")||1;t-e>=(this.min?parseFloat(this.min):-1/0)&&(this.value=(t-e).toString(),this.validateInput(),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.getEmittedValue()}}))),this.refocusInput()}renderValidationErrors(){if(!this.showErrors||!this.validationActive)return null;const t=this.nativeRequiredMessage,e=this.getErrorMessages();let s=[];if("single"===this.errorDisplayMode?t?s=[t]:e.length&&(s=[e[0]]):s=t?[t,...e]:e,!s.length)return null;const a=`${this.id||"sky-input"}-errors`;return i`
2
2
  <div class="progress-message">
3
- <ul id=${r} class="error-list" part="error-list">
3
+ <ul id=${a} class="error-list" part="error-list">
4
4
  ${s.map(t=>i`<li class="error" part="error">${t}</li>`)}
5
5
  </ul>
6
6
  </div>
7
- `}togglePasswordVisibility(){this.showPassword=!this.showPassword}focusInput(){const t=this.nativeInputEl;t&&"function"==typeof t.focus&&t.focus()}handleWrapperClick(t){if(t.stopPropagation(),this.disabled)return;const e=this.nativeInputEl;e&&"function"==typeof e.focus&&e.focus()}get isInvalid(){return this.matches(":invalid")||this.validationActive&&this.validationErrors.length>0}get describedById(){return this.ariaDescribedby??(this.showErrors?`${this.id||"sky-input"}-errors`:void 0)}refocusInput(){const t=this.shadowRoot?.querySelector("input");t?.focus({preventScroll:!0})}triggerNativeDropdown(){if(this.disabled||this.readonly)return;const t=this.shadowRoot?.querySelector('input[type="date"], input[type="time"], input[type="week"], input[type="month"], input[type="datetime-local"], input[type="file"]');t&&("file"===this.type?t.click():this.showPicker())}isFilterSearchInput(){return"search"===this.type}nativeAutocomplete(){return this.isFilterSearchInput()?"off":this.autocomplete}nativeTextInputType(t){return t&&this.showPassword||this.isFilterSearchInput()?"text":this.type}nativeInputMode(){return this.inputmode?this.inputmode:this.isFilterSearchInput()?"search":void 0}nativeEnterKeyHint(){return this.enterkeyhint?this.enterkeyhint:this.isFilterSearchInput()?"search":void 0}nativeInputRole(){return this.inputRole?this.inputRole:"search"===this.type?"searchbox":void 0}affixColorStyle(t){const e=String(t??"").trim();if(e)return{color:h(e)}}renderInputAffix(t){const e="prefix"===t?this.prefix:this.suffix;if(!String(e??"").length)return s;const r="prefix"===t?this.prefixColor:this.suffixColor,a=this.affixColorStyle(r);return i`<span
7
+ `}togglePasswordVisibility(){this.showPassword=!this.showPassword}focusInput(){const t=this.nativeInputEl;t&&"function"==typeof t.focus&&t.focus()}handleWrapperClick(t){if(t.stopPropagation(),this.disabled)return;const e=this.nativeInputEl;e&&"function"==typeof e.focus&&e.focus()}get isInvalid(){return this.matches(":invalid")||this.validationActive&&this.validationErrors.length>0}get describedById(){return this.ariaDescribedby??(this.showErrors?`${this.id||"sky-input"}-errors`:void 0)}refocusInput(){const t=this.shadowRoot?.querySelector("input");t?.focus({preventScroll:!0})}triggerNativeDropdown(){if(this.disabled||this.readonly)return;const t=this.shadowRoot?.querySelector('input[type="date"], input[type="time"], input[type="week"], input[type="month"], input[type="datetime-local"], input[type="file"]');t&&("file"===this.type?t.click():this.showPicker())}isFilterSearchInput(){return"search"===this.type}nativeAutocomplete(){return this.isFilterSearchInput()?"off":this.autocomplete}nativeTextInputType(t){return t&&this.showPassword||this.isFilterSearchInput()?"text":this.type}nativeInputMode(){return this.inputmode?this.inputmode:this.isFilterSearchInput()?"search":void 0}nativeEnterKeyHint(){return this.enterkeyhint?this.enterkeyhint:this.isFilterSearchInput()?"search":void 0}nativeInputRole(){return this.inputRole?this.inputRole:"search"===this.type?"searchbox":void 0}affixColorStyle(t){const e=String(t??"").trim();if(e)return{color:d(e)}}renderInputAffix(t){const e="prefix"===t?this.prefix:this.suffix;if(!String(e??"").length)return s;const a="prefix"===t?this.prefixColor:this.suffixColor,n=this.affixColorStyle(a);return i`<span
8
8
  class="input-affix ${t}"
9
9
  part="input-${t}"
10
- style=${a?o(a):s}
10
+ style=${n?r(n):s}
11
11
  >${e}</span
12
- >`}render(){const t="file"===this.type,e="textarea"===this.type,o="number"===this.type,a="password"===this.type,n=!t&&!e,l=!!this.querySelector('[slot="icon-left"]'),p=!!this.querySelector('[slot="icon-right"]');let h=null;"date"===this.type?h=i`<sky-icon icon="ion:calendar"></sky-icon>`:"time"===this.type?h=i`<sky-icon icon="ion:time"></sky-icon>`:"week"===this.type||"month"===this.type?h=i`<sky-icon icon="ion:calendar"></sky-icon>`:"datetime-local"===this.type&&(h=i`<sky-icon icon="ion:time"></sky-icon>`);const c=this.filePreview&&(l||p),u="left"===this.autofillIconSlot&&h,y="right"===this.autofillIconSlot&&h,f=()=>i`
12
+ >`}render(){const t="file"===this.type,e="textarea"===this.type,r="number"===this.type,n="password"===this.type,o=!t&&!e,l=!!this.querySelector('[slot="icon-left"]'),p=!!this.querySelector('[slot="icon-right"]');let d=null;"date"===this.type?d=i`<sky-icon icon="ion:calendar"></sky-icon>`:"time"===this.type?d=i`<sky-icon icon="ion:time"></sky-icon>`:"week"===this.type||"month"===this.type?d=i`<sky-icon icon="ion:calendar"></sky-icon>`:"datetime-local"===this.type&&(d=i`<sky-icon icon="ion:time"></sky-icon>`);const c=this.filePreview&&(l||p),u="left"===this.autofillIconSlot&&d,y="right"===this.autofillIconSlot&&d,v=()=>i`
13
13
  <img
14
- src=${r("string"==typeof this.filePreview?this.filePreview:void 0)}
14
+ src=${a("string"==typeof this.filePreview?this.filePreview:void 0)}
15
15
  alt="Preview"
16
16
  style="width:100%;height:100%;object-fit:cover;border-radius:12px;"
17
17
  />
18
- `,v=()=>i`
18
+ `,f=()=>i`
19
+ <div
20
+ class="icon-slot left ${this.focused?"focused":""}"
21
+ part="icon-slot icon-slot-left"
22
+ ?filled=${Boolean(c&&l)||Boolean(u)||l}
23
+ @click=${()=>{(t||u)&&this.triggerNativeDropdown()}}
24
+ >
25
+ ${c&&l?v():u?d:i`<slot name="icon-left"></slot>`}
26
+ </div>
27
+ `,m=()=>this.loading?i`<div
28
+ class="loading-indicator"
29
+ part="loading-indicator"
30
+ ?compact=${this.compact}
31
+ ></div>`:i`
32
+ <div
33
+ class="icon-slot right ${this.focused?"focused":""}"
34
+ part="icon-slot icon-slot-right"
35
+ ?filled=${Boolean(c&&p)||Boolean(y)||p}
36
+ @click=${()=>{(t||y)&&this.triggerNativeDropdown()}}
37
+ >
38
+ ${c&&p?v():y?d:i`<slot name="icon-right"></slot>`}
39
+ </div>
40
+ `,g=()=>i`
19
41
  <label
20
42
  class="custom-file-label"
21
43
  part="custom-file-label"
@@ -43,24 +65,24 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
43
65
  .required=${this.required}
44
66
  @keydown=${this.handleKeydown}
45
67
  .dir=${this.dir}
46
- name=${r(this.name||void 0)}
68
+ name=${a(this.name||void 0)}
47
69
  .autocomplete=${this.nativeAutocomplete()}
48
70
  .autocapitalize=${this.autocapitalize}
49
71
  spellcheck=${this.spellcheck}
50
72
  ?autofocus=${this.autofocus}
51
- inputmode=${r(this.inputmode||void 0)}
52
- enterkeyhint=${r(this.enterkeyhint)}
53
- list=${r(this.list||void 0)}
54
- capture=${r(this.capture?"environment":void 0)}
73
+ inputmode=${a(this.inputmode||void 0)}
74
+ enterkeyhint=${a(this.enterkeyhint)}
75
+ list=${a(this.list||void 0)}
76
+ capture=${a(this.capture?"environment":void 0)}
55
77
  .aria-invalid=${String(this.isInvalid)}
56
78
  .aria-required=${String(this.required)}
57
- aria-label=${r(this.ariaLabel||void 0)}
58
- aria-labelledby=${r(this.ariaLabelledby||void 0)}
59
- aria-describedby=${r(this.describedById)}
79
+ aria-label=${a(this.ariaLabel||void 0)}
80
+ aria-labelledby=${a(this.ariaLabelledby||void 0)}
81
+ aria-describedby=${a(this.describedById)}
60
82
  />
61
- `,m=()=>i`
83
+ `,b=()=>i`
62
84
  <textarea
63
- .value=${d(this.value)}
85
+ .value=${h(this.value)}
64
86
  @input=${this.handleInput}
65
87
  @focus=${this.handleFocus}
66
88
  @blur=${this.handleBlur}
@@ -70,27 +92,27 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
70
92
  .rows=${this.rows}
71
93
  placeholder=${this.placeholder}
72
94
  resizable=${this.resizable||"none"}
73
- style="width:100%;border:none;outline:none;padding:10px;"
95
+ style="width:100%;border:none;outline:none;"
74
96
  .autocapitalize=${this.autocapitalize}
75
97
  ?spellcheck=${this.spellcheck}
76
- name=${r(this.name||void 0)}
98
+ name=${a(this.name||void 0)}
77
99
  .autocomplete=${this.nativeAutocomplete()}
78
- inputmode=${r(this.inputmode||void 0)}
79
- enterkeyhint=${r(this.enterkeyhint)}
80
- minlength=${r(this.minlength??void 0)}
81
- maxlength=${r(this.maxlength??void 0)}
100
+ inputmode=${a(this.inputmode||void 0)}
101
+ enterkeyhint=${a(this.enterkeyhint)}
102
+ minlength=${a(this.minlength??void 0)}
103
+ maxlength=${a(this.maxlength??void 0)}
82
104
  ?autofocus=${this.autofocus}
83
105
  .aria-invalid=${String(this.isInvalid)}
84
106
  .aria-required=${String(this.required)}
85
- aria-label=${r(this.ariaLabel||void 0)}
86
- aria-labelledby=${r(this.ariaLabelledby||void 0)}
87
- aria-describedby=${r(this.describedById)}
88
- role=${r(this.nativeInputRole())}
107
+ aria-label=${a(this.ariaLabel||void 0)}
108
+ aria-labelledby=${a(this.ariaLabelledby||void 0)}
109
+ aria-describedby=${a(this.describedById)}
110
+ role=${a(this.nativeInputRole())}
89
111
  ></textarea>
90
- `,b=()=>i`
112
+ `,k=()=>i`
91
113
  <input
92
- .type=${this.nativeTextInputType(a)}
93
- .value=${d(this.value)}
114
+ .type=${this.nativeTextInputType(n)}
115
+ .value=${h(this.value)}
94
116
  @input=${this.handleInput}
95
117
  @focus=${this.handleFocus}
96
118
  @blur=${this.handleBlur}
@@ -101,58 +123,32 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
101
123
  .readOnly=${this.readonly||this.autofillGuardActive}
102
124
  style="appearance:none;pointer-events:auto;"
103
125
  placeholder=${this.placeholder}
104
- name=${r(this.name||void 0)}
126
+ name=${a(this.name||void 0)}
105
127
  .autocomplete=${this.nativeAutocomplete()}
106
128
  .autocapitalize=${this.autocapitalize}
107
129
  spellcheck=${this.spellcheck}
108
- inputmode=${r(this.nativeInputMode())}
109
- enterkeyhint=${r(this.nativeEnterKeyHint())}
130
+ inputmode=${a(this.nativeInputMode())}
131
+ enterkeyhint=${a(this.nativeEnterKeyHint())}
110
132
  data-form-type=${this.isFilterSearchInput()?"other":s}
111
133
  ?data-1p-ignore=${this.isFilterSearchInput()}
112
134
  ?data-lpignore=${this.isFilterSearchInput()}
113
- list=${r(this.list||void 0)}
114
- pattern=${r(this.pattern||void 0)}
115
- minlength=${r(this.minlength??void 0)}
116
- maxlength=${r(this.maxlength??void 0)}
117
- size=${r(this.size??void 0)}
118
- step=${r(null!==this.step?Number(this.step):void 0)}
119
- min=${r(this.min??void 0)}
120
- max=${r(this.max??void 0)}
135
+ list=${a(this.list||void 0)}
136
+ pattern=${a(this.pattern||void 0)}
137
+ minlength=${a(this.minlength??void 0)}
138
+ maxlength=${a(this.maxlength??void 0)}
139
+ size=${a(this.size??void 0)}
140
+ step=${a(null!==this.step?Number(this.step):void 0)}
141
+ min=${a(this.min??void 0)}
142
+ max=${a(this.max??void 0)}
121
143
  ?autofocus=${this.autofocus}
122
144
  .aria-invalid=${String(this.isInvalid)}
123
145
  .aria-required=${String(this.required)}
124
- aria-label=${r(this.ariaLabel||void 0)}
125
- aria-labelledby=${r(this.ariaLabelledby||void 0)}
126
- aria-describedby=${r(this.describedById)}
127
- role=${r(this.nativeInputRole())}
146
+ aria-label=${a(this.ariaLabel||void 0)}
147
+ aria-labelledby=${a(this.ariaLabelledby||void 0)}
148
+ aria-describedby=${a(this.describedById)}
149
+ role=${a(this.nativeInputRole())}
128
150
  />
129
- `;return i`
130
- <div
131
- class="input-container"
132
- @click=${this.handleWrapperClick}
133
- part="input-container"
134
- >
135
- ${this.label?i`<div class="label" part="label">${this.label}</div>`:null}
136
- <div
137
- class="input-wrapper"
138
- part="input-wrapper"
139
- ?compact=${this.compact}
140
- ?loading=${this.loading}
141
- >
142
- ${(()=>i`
143
- <div
144
- class="icon-slot left ${this.focused?"focused":""}"
145
- part="icon-slot icon-slot-left"
146
- ?filled=${Boolean(c&&l)||Boolean(u)||l}
147
- @click=${()=>{(t||u)&&this.triggerNativeDropdown()}}
148
- >
149
- ${c&&l?f():u?h:i`<slot name="icon-left"></slot>`}
150
- </div>
151
- `)()}
152
- ${n?this.renderInputAffix("prefix"):s}
153
- ${t?v():e?m():b()}
154
- ${n?this.renderInputAffix("suffix"):s}
155
- ${(()=>o&&this.showNumberButtons?i`
151
+ `,x=()=>r&&this.showNumberButtons?i`
156
152
  <div class="number-btn">
157
153
  <button
158
154
  class="decrement-btn"
@@ -177,7 +173,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
177
173
  <sky-icon icon="ion:add"></sky-icon>
178
174
  </button>
179
175
  </div>
180
- `:null)()} ${(()=>a&&this.showPasswordToggle?i`
176
+ `:null,w=()=>n&&this.showPasswordToggle?i`
181
177
  <sky-icon
182
178
  class="toggle-password"
183
179
  part="toggle-password"
@@ -185,8 +181,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
185
181
  icon=${this.showPassword?this.passwordVisibleIcon:this.passwordHiddenIcon}
186
182
  @click=${this.togglePasswordVisibility}
187
183
  ></sky-icon>
188
- `:null)()}
189
- ${(()=>this.clearable&&(this.value||this.selectedFileName||this.selectedFileCount>0)?i`
184
+ `:null,$=()=>this.clearable&&(this.value||this.selectedFileName||this.selectedFileCount>0)?i`
190
185
  <sky-icon
191
186
  class="clear-button"
192
187
  part="clear-button"
@@ -195,21 +190,56 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
195
190
  ?loading=${this.loading}
196
191
  icon="ion:close"
197
192
  ></sky-icon>
198
- `:null)()} ${(()=>this.loading?i`<div
199
- class="loading-indicator"
200
- part="loading-indicator"
201
- ?compact=${this.compact}
202
- ></div>`:i`
203
- <div
204
- class="icon-slot right ${this.focused?"focused":""}"
205
- part="icon-slot icon-slot-right"
206
- ?filled=${Boolean(c&&p)||Boolean(y)||p}
207
- @click=${()=>{(t||y)&&this.triggerNativeDropdown()}}
193
+ `:null,S=()=>t?g():e?b():k(),F="fieldset"===this.variant,I="inside"===this.variant,z=this.label?F?i`<legend class="label" part="label">${this.label}</legend>`:i`<div class="label" part="label">${this.label}</div>`:null,E=i`
194
+ ${o?this.renderInputAffix("prefix"):s}
195
+ ${S()}
196
+ ${o?this.renderInputAffix("suffix"):s}
197
+ ${x()} ${w()}
198
+ ${$()}
199
+ `,C=i`
200
+ ${f()}
201
+ ${o?this.renderInputAffix("prefix"):s}
202
+ ${S()}
203
+ ${o?this.renderInputAffix("suffix"):s}
204
+ ${x()} ${w()}
205
+ ${$()} ${m()}
206
+ `,A=i`
207
+ ${f()}
208
+ <div class="input-inside-main">
209
+ ${z}
210
+ <div class="input-inside-row">${E}</div>
211
+ </div>
212
+ ${m()}
213
+ `;return i`
214
+ <div
215
+ class="input-container"
216
+ @click=${this.handleWrapperClick}
217
+ part="input-container"
218
+ >
219
+ ${F||I?s:z}
220
+ ${F?i`<fieldset
221
+ class="input-wrapper"
222
+ part="input-wrapper"
223
+ ?compact=${this.compact}
224
+ ?loading=${this.loading}
208
225
  >
209
- ${c&&p?f():y?h:i`<slot name="icon-right"></slot>`}
210
- </div>
211
- `)()}
212
- </div>
226
+ ${z}
227
+ <div class="input-fieldset-body">
228
+ ${f()}
229
+ ${o?this.renderInputAffix("prefix"):s}
230
+ ${S()}
231
+ ${o?this.renderInputAffix("suffix"):s}
232
+ ${x()} ${w()}
233
+ ${$()} ${m()}
234
+ </div>
235
+ </fieldset>`:i`<div
236
+ class="input-wrapper"
237
+ part="input-wrapper"
238
+ ?compact=${this.compact}
239
+ ?loading=${this.loading}
240
+ >
241
+ ${I?A:C}
242
+ </div>`}
213
243
 
214
244
  ${(()=>t&&this.totalFileSize?i`
215
245
  <div class="file-info" part="file-info">
@@ -226,6 +256,51 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
226
256
  display: block;
227
257
  font-family: var(--sky-font);
228
258
  width: 100%;
259
+ /* Control size */
260
+ --sky-input-height: 36px;
261
+ --sky-input-height-compact: 28px;
262
+ --sky-input-border-width: 1px;
263
+ /* Spacing scale — tight internal joins, softer outer edge */
264
+ --sky-input-pad-x: var(--sky-space-3, 12px);
265
+ --sky-input-pad-x-sm: var(--sky-space-1, 4px);
266
+ --sky-input-pad-x-xs: 0px;
267
+ --sky-input-pad-y: var(--sky-space-1, 4px);
268
+ --sky-input-pad-y-sm: 0px;
269
+ --sky-input-gap: var(--sky-space-1, 4px);
270
+ --sky-input-icon-width: 2rem;
271
+ }
272
+
273
+ :host([compact]) {
274
+ --sky-input-pad-x: var(--sky-space-2, 8px);
275
+ --sky-input-pad-x-sm: var(--sky-space-1, 4px);
276
+ --sky-input-icon-width: 1.75rem;
277
+ }
278
+
279
+ /* Compact typography + denser chrome for every variant */
280
+ :host([compact]) .input-container > .label {
281
+ font-size: var(--sky-font-size-xs);
282
+ margin-bottom: var(--sky-space-1, 4px);
283
+ line-height: 1.2;
284
+ }
285
+
286
+ :host([compact]) input,
287
+ :host([compact]) textarea,
288
+ :host([compact]) .input-affix,
289
+ :host([compact]) .custom-file-label__text {
290
+ font-size: var(--sky-font-size-sm);
291
+ }
292
+
293
+ :host([compact]) .icon-slot {
294
+ font-size: var(--sky-font-size-lg);
295
+ }
296
+
297
+ :host([compact]) .toggle-password,
298
+ :host([compact]) .clear-button {
299
+ font-size: var(--sky-font-size-md);
300
+ }
301
+
302
+ :host([compact]) .custom-file-label {
303
+ border-radius: var(--sky-radius-primary);
229
304
  }
230
305
 
231
306
  :host([disabled]) .input-container {
@@ -241,6 +316,228 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
241
316
  }
242
317
  }
243
318
 
319
+ /* Fieldset / legend: native fieldset+legend; wrapper keeps solid fill */
320
+ :host([variant="fieldset"]) {
321
+ overflow: visible;
322
+ padding-block-start: 0;
323
+ }
324
+
325
+ :host([variant="fieldset"]) .input-container {
326
+ overflow: visible;
327
+ }
328
+
329
+ :host([variant="fieldset"]) fieldset.input-wrapper {
330
+ display: block;
331
+ height: auto;
332
+ margin: 0;
333
+ min-inline-size: 0;
334
+ min-width: 0;
335
+ padding: 0;
336
+ overflow: visible;
337
+ background: var(--sky-glass-solid);
338
+ box-shadow: none;
339
+ }
340
+
341
+ :host([variant="fieldset"]) fieldset.input-wrapper[compact] {
342
+ height: auto;
343
+ }
344
+
345
+ :host([variant="fieldset"]) .input-fieldset-body {
346
+ display: flex;
347
+ width: 100%;
348
+ align-items: center;
349
+ box-sizing: border-box;
350
+ /* Match default control outer height once fieldset border is included */
351
+ height: calc(
352
+ var(--sky-input-height) - 2 * var(--sky-input-border-width)
353
+ );
354
+ min-height: calc(
355
+ var(--sky-input-height) - 2 * var(--sky-input-border-width)
356
+ );
357
+ background: transparent;
358
+ border-radius: inherit;
359
+ min-width: 0;
360
+ overflow: hidden;
361
+ }
362
+
363
+ :host([variant="fieldset"]) fieldset.input-wrapper[compact] .input-fieldset-body {
364
+ height: calc(
365
+ var(--sky-input-height-compact) - 2 * var(--sky-input-border-width)
366
+ );
367
+ min-height: calc(
368
+ var(--sky-input-height-compact) - 2 * var(--sky-input-border-width)
369
+ );
370
+ }
371
+
372
+ :host([variant="fieldset"]) fieldset.input-wrapper:has(textarea) {
373
+ height: auto;
374
+ }
375
+
376
+ :host([variant="fieldset"]) fieldset.input-wrapper:has(textarea) .input-fieldset-body {
377
+ height: calc((var(--rows)) * 23px);
378
+ min-height: calc((var(--rows)) * 23px);
379
+ align-items: flex-start;
380
+ }
381
+
382
+ :host([variant="fieldset"]) legend.label {
383
+ float: unset;
384
+ width: auto;
385
+ max-width: calc(100% - 2 * var(--sky-input-pad-x));
386
+ margin-inline-start: var(--sky-input-pad-x);
387
+ margin-bottom: 0;
388
+ padding-inline: var(--sky-input-pad-x-sm);
389
+ padding-block: 2px;
390
+ border: none;
391
+ background: transparent;
392
+ background-color: transparent;
393
+ color: var(--sky-text-secondary);
394
+ font-size: var(--sky-font-size-xs);
395
+ /* Keep room for glyphs; overflow:hidden from .label clips fieldset legends */
396
+ line-height: 1.4;
397
+ overflow: visible;
398
+ text-overflow: ellipsis;
399
+ white-space: nowrap;
400
+ pointer-events: none;
401
+ }
402
+
403
+ :host([variant="fieldset"]) .input-container:focus-within legend.label {
404
+ color: var(--sky-input-color);
405
+ font-size: var(--sky-font-size-xs);
406
+ }
407
+
408
+ /* Focus via real border — ::after would paint over the legend gap */
409
+ :host([variant="fieldset"]) .input-wrapper::after {
410
+ content: none;
411
+ display: none;
412
+ }
413
+
414
+ :host([variant="fieldset"]) .input-wrapper:has(input:focus),
415
+ :host([variant="fieldset"]) .input-wrapper:has(input:focus-visible),
416
+ :host([variant="fieldset"]) .input-wrapper:has(textarea:focus),
417
+ :host([variant="fieldset"]) .input-wrapper:has(textarea:focus-visible) {
418
+ border-color: var(--sky-input-color);
419
+ }
420
+
421
+ :host([variant="fieldset"][validationActive]:invalid) .input-wrapper {
422
+ border-color: var(--sky-danger-primary);
423
+ }
424
+
425
+ :host([variant="fieldset"][validationActive]:invalid) legend.label {
426
+ color: var(--sky-danger-primary);
427
+ }
428
+
429
+ :host([variant="fieldset"][compact]) legend.label,
430
+ :host([variant="fieldset"][compact]) .input-container:focus-within legend.label {
431
+ font-size: var(--sky-font-size-xs);
432
+ line-height: 1.4;
433
+ }
434
+
435
+ /* Inside: label lives in the wrapper above the value row */
436
+ :host([variant="inside"]) {
437
+ --sky-input-height-inside: 44px;
438
+ /* Two lines (label + value) need a bit more than single-line compact */
439
+ --sky-input-height-inside-compact: 40px;
440
+ --sky-input-inside-label-block: 0.15rem;
441
+ --sky-input-inside-value-min: 1.375rem;
442
+ }
443
+
444
+ :host([variant="inside"]) .input-wrapper {
445
+ height: auto;
446
+ min-height: var(--sky-input-height-inside);
447
+ align-items: center;
448
+ padding-block: var(--sky-input-pad-y-sm, 0px);
449
+ }
450
+
451
+ :host([variant="inside"]) .input-wrapper[compact] {
452
+ height: auto;
453
+ min-height: var(--sky-input-height-inside-compact);
454
+ padding-block: var(--sky-input-pad-y-sm, 0px);
455
+ }
456
+
457
+ :host([variant="inside"]) .input-inside-main {
458
+ flex: 1 1 auto;
459
+ min-width: 0;
460
+ display: flex;
461
+ flex-direction: column;
462
+ justify-content: center;
463
+ gap: 0.15rem;
464
+ padding-block: var(--sky-input-inside-label-block);
465
+ }
466
+
467
+ :host([variant="inside"]) .input-inside-main > .label {
468
+ margin: 0;
469
+ padding-inline: var(--sky-input-pad-x);
470
+ font-size: var(--sky-font-size-xs);
471
+ line-height: 1.3;
472
+ min-height: calc(var(--sky-font-size-xs) * 1.3);
473
+ color: var(--sky-text-secondary);
474
+ pointer-events: none;
475
+ overflow: visible;
476
+ text-overflow: unset;
477
+ flex-shrink: 0;
478
+ }
479
+
480
+ :host([variant="inside"][compact]) .input-inside-main > .label {
481
+ font-size: 0.6875rem; /* ~11px — denser than xs for two-line compact */
482
+ line-height: 1.3;
483
+ min-height: calc(0.6875rem * 1.3);
484
+ }
485
+
486
+ :host([variant="inside"][compact]) .input-inside-row input,
487
+ :host([variant="inside"][compact]) .input-inside-row textarea {
488
+ font-size: var(--sky-font-size-sm);
489
+ line-height: 1.15;
490
+ }
491
+
492
+ :host([variant="inside"]) .input-container:focus-within .input-inside-main > .label {
493
+ color: var(--sky-input-color);
494
+ font-size: var(--sky-font-size-xs);
495
+ }
496
+
497
+ :host([variant="inside"][compact]) .input-container:focus-within .input-inside-main > .label {
498
+ font-size: 0.6875rem;
499
+ }
500
+
501
+ :host([variant="inside"][validationActive]:invalid) .input-inside-main > .label {
502
+ color: var(--sky-danger-primary);
503
+ }
504
+
505
+ :host([variant="inside"]) .input-inside-row {
506
+ display: flex;
507
+ align-items: center;
508
+ min-width: 0;
509
+ width: 100%;
510
+ min-height: var(--sky-input-inside-value-min);
511
+ }
512
+
513
+ :host([variant="inside"]) .input-wrapper:has(.icon-slot[filled].left) .input-inside-main > .label,
514
+ :host([variant="inside"]) .input-wrapper:has(.input-affix.prefix) .input-inside-main > .label {
515
+ padding-inline-start: 0;
516
+ }
517
+
518
+ :host([variant="inside"]) .input-inside-row input,
519
+ :host([variant="inside"]) .input-inside-row textarea {
520
+ padding-block: 0;
521
+ height: auto;
522
+ min-height: 0;
523
+ line-height: 1.2;
524
+ }
525
+
526
+ :host([variant="inside"]) .input-wrapper:has(textarea) {
527
+ height: auto;
528
+ min-height: var(--sky-input-height-inside);
529
+ align-items: flex-start;
530
+ }
531
+
532
+ :host([variant="inside"]) .icon-slot,
533
+ :host([variant="inside"]) .icon-slot[filled] {
534
+ align-self: center;
535
+ height: auto;
536
+ max-height: none;
537
+ align-items: center;
538
+ justify-content: center;
539
+ }
540
+
244
541
  .input-container {
245
542
  position: relative;
246
543
  display: flex;
@@ -255,11 +552,16 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
255
552
  height: 1em;
256
553
  }
257
554
 
258
- .input-container:focus-within .label {
555
+ /* Outside labels only — never bump fieldset/inside fonts (clips legends) */
556
+ .input-container:focus-within > .label {
259
557
  color: var(--sky-input-color);
260
- font-size: var(--sky-font-size-sm);
261
- transition: all 0.3s ease;
558
+ transition: color var(--sky-transition-normal, 200ms ease);
559
+ }
560
+
561
+ :host([compact]) .input-container:focus-within > .label {
562
+ font-size: var(--sky-font-size-xs);
262
563
  }
564
+
263
565
  .label {
264
566
  font-size: var(--sky-font-size-sm);
265
567
  margin-bottom: var(--sky-space-1, 4px);
@@ -268,11 +570,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
268
570
  overflow: hidden;
269
571
  text-overflow: ellipsis;
270
572
  font-family: var(--sky-font);
271
- }
272
-
273
- .input-container:focus-within[compact] .label {
274
- font-size: var(--sky-font-size-xs);
275
- color: var(--sky-input-color);
573
+ line-height: 1.35;
276
574
  }
277
575
 
278
576
  .input-wrapper {
@@ -281,7 +579,8 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
281
579
  width: 100%;
282
580
  align-items: center;
283
581
  box-sizing: border-box;
284
- height: 38px;
582
+ height: var(--sky-input-height);
583
+ min-height: var(--sky-input-height);
285
584
  pointer-events: auto;
286
585
  background: var(--sky-glass-solid);
287
586
  backdrop-filter: none;
@@ -336,8 +635,10 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
336
635
  }
337
636
 
338
637
  .input-wrapper[compact] {
339
- height: 30px;
638
+ height: var(--sky-input-height-compact);
639
+ min-height: var(--sky-input-height-compact);
340
640
  border: var(--sky-border-primary);
641
+ border-radius: var(--sky-radius-primary);
341
642
  }
342
643
 
343
644
  input[type="date"],
@@ -372,8 +673,9 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
372
673
  input {
373
674
  font-family: var(--sky-font);
374
675
  font-size: var(--sky-font-size-md);
676
+ line-height: 1.2;
375
677
  text-align: left;
376
- transition: transform var(--sky-transition-normal, 200ms ease);
678
+ transition: color var(--sky-transition-normal, 200ms ease);
377
679
  }
378
680
 
379
681
  input:-webkit-autofill {
@@ -398,12 +700,12 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
398
700
  .number-btn {
399
701
  display: flex;
400
702
  flex-shrink: 0;
401
- margin-inline-end: var(--sky-space-1, 4px);
402
- gap: var(--sky-space-1, 4px);
703
+ margin-inline-end: var(--sky-input-pad-x-sm);
704
+ gap: var(--sky-input-gap);
403
705
  }
404
706
 
405
707
  :dir(rtl).number-btn {
406
- margin-inline-end: var(--sky-space-1, 4px);
708
+ margin-inline-end: var(--sky-input-pad-x-sm);
407
709
  }
408
710
 
409
711
  .file-info {
@@ -427,7 +729,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
427
729
  display: flex;
428
730
  align-items: center;
429
731
  justify-content: center;
430
- padding: var(--sky-space-0\\.5, 2px) var(--sky-space-1\\.5, 6px);
732
+ padding: var(--sky-input-pad-x-xs) var(--sky-input-pad-x-sm);
431
733
  font-size: var(--sky-font-size-sm);
432
734
  cursor: pointer;
433
735
  transition: color var(--sky-transition-normal, 200ms ease);
@@ -444,7 +746,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
444
746
  display: flex;
445
747
  align-items: center;
446
748
  justify-content: center;
447
- margin-inline-end: var(--sky-space-1, 4px);
749
+ margin-inline-end: var(--sky-input-pad-x-sm);
448
750
  font-size: var(--sky-font-size-lg);
449
751
  color: var(--sky-text-tertiary);
450
752
  cursor: pointer;
@@ -463,7 +765,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
463
765
  box-sizing: border-box;
464
766
  color: var(--sky-text-primary);
465
767
  padding-block: 0;
466
- padding-inline: var(--sky-space-3, 12px);
768
+ padding-inline: var(--sky-input-pad-x);
467
769
  }
468
770
 
469
771
  input::placeholder {
@@ -482,13 +784,13 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
482
784
  }
483
785
 
484
786
  .input-affix.prefix {
485
- padding-inline-start: var(--sky-space-3, 12px);
486
- padding-inline-end: var(--sky-space-1, 4px);
787
+ padding-inline-start: var(--sky-input-pad-x);
788
+ padding-inline-end: var(--sky-input-pad-x-sm);
487
789
  }
488
790
 
489
791
  .input-affix.suffix {
490
- padding-inline-start: var(--sky-space-1, 4px);
491
- padding-inline-end: var(--sky-space-2, 8px);
792
+ padding-inline-start: var(--sky-input-pad-x-sm);
793
+ padding-inline-end: var(--sky-input-pad-x);
492
794
  }
493
795
 
494
796
  .input-wrapper[compact] .input-affix {
@@ -497,12 +799,28 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
497
799
 
498
800
  .input-wrapper:has(.input-affix.prefix) input,
499
801
  .input-wrapper:has(.input-affix.prefix) textarea {
500
- padding-inline-start: var(--sky-space-1, 4px);
802
+ padding-inline-start: 0;
501
803
  }
502
804
 
503
805
  .input-wrapper:has(.icon-slot[filled].left) input,
504
806
  .input-wrapper:has(.icon-slot[filled].left) textarea {
505
- padding-inline-start: var(--sky-space-1, 4px);
807
+ padding-inline-start: 0;
808
+ }
809
+
810
+ .input-wrapper:has(.icon-slot[filled].right) input,
811
+ .input-wrapper:has(.icon-slot[filled].right) textarea,
812
+ .input-wrapper:has(.clear-button) input,
813
+ .input-wrapper:has(.clear-button) textarea,
814
+ .input-wrapper:has(.toggle-password) input,
815
+ .input-wrapper:has(.toggle-password) textarea,
816
+ .input-wrapper:has(.number-btn) input,
817
+ .input-wrapper:has(.loading-indicator) input {
818
+ padding-inline-end: 0;
819
+ }
820
+
821
+ .input-wrapper:has(.input-affix.suffix) input,
822
+ .input-wrapper:has(.input-affix.suffix) textarea {
823
+ padding-inline-end: 0;
506
824
  }
507
825
 
508
826
  .custom-file-label__text {
@@ -511,11 +829,11 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
511
829
  overflow: hidden;
512
830
  text-overflow: ellipsis;
513
831
  color: var(--sky-text-tertiary);
514
- padding-inline-end: var(--sky-space-3, 12px);
832
+ padding-inline-end: var(--sky-input-pad-x);
515
833
  }
516
834
 
517
835
  .custom-file-label:not(:has(.input-affix.prefix)) .custom-file-label__text {
518
- padding-inline-start: var(--sky-space-3, 12px);
836
+ padding-inline-start: var(--sky-input-pad-x);
519
837
  }
520
838
 
521
839
  .custom-file-label__text[data-filled] {
@@ -528,22 +846,20 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
528
846
  font-size: var(--sky-font-size-xl);
529
847
  align-items: center;
530
848
  color: var(--sky-text-primary);
531
- border-radius: var(--sky-radius-secondary);
532
849
  height: inherit;
533
850
  max-height: 100%;
534
851
  box-sizing: border-box;
535
- min-width: 36px;
536
- background: var(--sky-glass-solid);
537
- backdrop-filter: none;
538
- -webkit-backdrop-filter: none;
539
- transition:
540
- transform var(--sky-transition-normal, 200ms ease),
541
- color var(--sky-transition-normal, 200ms ease);
852
+ flex: 0 0 var(--sky-input-icon-width);
853
+ width: var(--sky-input-icon-width);
854
+ min-width: var(--sky-input-icon-width);
855
+ padding: 0;
856
+ background: none;
857
+ border: none;
858
+ transition: color var(--sky-transition-normal, 200ms ease);
542
859
  }
543
860
 
544
861
  .input-wrapper:has(textarea) .icon-slot {
545
- max-height: 38px;
546
- border-bottom: var(--sky-border-primary);
862
+ max-height: var(--sky-input-height);
547
863
  }
548
864
 
549
865
  .icon-slot[filled] {
@@ -551,55 +867,11 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
551
867
  flex-shrink: 0;
552
868
  cursor: pointer;
553
869
  }
554
- .icon-slot[filled]:hover {
555
- transform: translate(-5px, -5px);
556
- color: var(--sky-input-color);
557
- }
558
- .icon-slot.right[filled]:hover {
559
- transform: translate(5px, -5px);
560
- color: var(--sky-input-color);
561
- }
562
870
 
871
+ .icon-slot[filled]:hover,
872
+ .icon-slot[filled]:active,
563
873
  .icon-slot.focused {
564
- transform: translate(-5px, -5px);
565
874
  color: var(--sky-input-color);
566
- border: var(--sky-border-primary) !important;
567
- }
568
-
569
- :dir(rtl) .icon-slot[filled]:hover {
570
- transform: translate(5px, -5px);
571
- }
572
-
573
- :dir(rtl) .icon-slot.right[filled]:hover {
574
- transform: translate(-5px, -5px);
575
- }
576
-
577
- :dir(rtl) .icon-slot.focused {
578
- transform: translate(5px, -5px);
579
- }
580
-
581
- .icon-slot.right {
582
- border-left: var(--sky-border-primary);
583
- }
584
- .icon-slot.left {
585
- border-right: var(--sky-border-primary);
586
- }
587
-
588
- :dir(rtl) .icon-slot.right {
589
- border-left: unset;
590
- border-right: var(--sky-border-primary);
591
- }
592
- :dir(rtl) .icon-slot.left {
593
- border-right: unset;
594
- border-left: var(--sky-border-primary);
595
- }
596
-
597
- .icon-slot.right.focused {
598
- transform: translate(5px, -5px);
599
- }
600
-
601
- :dir(rtl) .icon-slot.right.focused {
602
- transform: translate(-5px, -5px);
603
875
  }
604
876
 
605
877
  .progress-message {
@@ -609,13 +881,13 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
609
881
  white-space: nowrap;
610
882
  text-overflow: ellipsis;
611
883
  font-size: var(--sky-font-size-sm);
612
- margin-left: 5px;
884
+ margin-inline-start: var(--sky-input-pad-x-sm);
613
885
  font-family: var(--sky-font);
614
886
  }
615
887
 
616
888
  :dir(rtl) .progress-message {
617
- margin-left: unset;
618
- margin-right: 5px;
889
+ margin-inline-start: unset;
890
+ margin-inline-end: var(--sky-input-pad-x-sm);
619
891
  }
620
892
 
621
893
  .error-list {
@@ -645,7 +917,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
645
917
 
646
918
  .loading-indicator {
647
919
  flex-shrink: 0;
648
- margin-inline-end: var(--sky-space-1, 4px);
920
+ margin-inline-end: var(--sky-input-pad-x-sm);
649
921
  width: 16px;
650
922
  height: 16px;
651
923
  border: 2px solid var(--sky-hover-primary);
@@ -674,7 +946,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
674
946
 
675
947
  .clear-button {
676
948
  flex-shrink: 0;
677
- margin-inline-end: var(--sky-space-1, 4px);
949
+ margin-inline-end: var(--sky-input-pad-x-sm);
678
950
  border: none;
679
951
  font-size: var(--sky-font-size-xl);
680
952
  color: var(--sky-input-color);
@@ -709,7 +981,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
709
981
  flex: 1;
710
982
  display: flex;
711
983
  align-items: center;
712
- gap: var(--sky-space-1, 4px);
984
+ gap: var(--sky-input-gap);
713
985
  text-align: left;
714
986
  padding: 0;
715
987
  color: var(--sky-input-color);
@@ -725,7 +997,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
725
997
  }
726
998
 
727
999
  .custom-file-label:hover .custom-file-label__text {
728
- padding-inline-start: var(--sky-space-2\\.5, 10px);
1000
+ padding-inline-start: var(--sky-input-pad-x-sm);
729
1001
  }
730
1002
 
731
1003
  .custom-file-label:empty::after {
@@ -745,7 +1017,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
745
1017
  background: transparent;
746
1018
  box-sizing: border-box;
747
1019
  color: var(--sky-text-primary);
748
- padding: var(--sky-space-2\\.5, 10px) var(--sky-space-3, 12px);
1020
+ padding: var(--sky-input-pad-y) var(--sky-input-pad-x);
749
1021
  resize: none;
750
1022
  overflow: auto;
751
1023
  font-family: var(--sky-font);
@@ -806,7 +1078,7 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
806
1078
  animation: none;
807
1079
  }
808
1080
 
809
- .input-container:focus-within .label,
1081
+ .input-container:focus-within > .label,
810
1082
  .input-wrapper,
811
1083
  .icon-slot,
812
1084
  .increment-btn,
@@ -818,5 +1090,5 @@ import{css as t,LitElement as e,html as i,nothing as s}from"lit";import{ifDefine
818
1090
  transition: none;
819
1091
  }
820
1092
  }
821
- `,m.shadowRootOptions={...e.shadowRootOptions,delegatesFocus:!0},v([a({type:String})],m.prototype,"value",2),v([a({type:String})],m.prototype,"placeholder",2),v([a({type:String})],m.prototype,"label",2),v([a({type:String})],m.prototype,"type",2),v([a({type:String})],m.prototype,"suffix",2),v([a({type:String})],m.prototype,"prefix",2),v([a({type:String})],m.prototype,"prefixColor",2),v([a({type:String})],m.prototype,"suffixColor",2),v([a({type:String})],m.prototype,"color",2),v([a({type:Array})],m.prototype,"validations",1),v([a({type:Boolean,reflect:!0})],m.prototype,"compact",2),v([a({type:Boolean,reflect:!0})],m.prototype,"loading",2),v([a({type:Boolean})],m.prototype,"showErrors",2),v([a({type:Boolean,reflect:!0})],m.prototype,"clearable",2),v([a({type:String})],m.prototype,"errorDisplayMode",2),v([a({type:Boolean,reflect:!0})],m.prototype,"required",2),v([a({type:String})],m.prototype,"step",2),v([a({type:String})],m.prototype,"min",2),v([a({type:String})],m.prototype,"max",2),v([a({type:String})],m.prototype,"autocapitalize",2),v([a({type:String})],m.prototype,"autocomplete",2),v([a({type:Boolean})],m.prototype,"spellcheck",2),v([a({type:String})],m.prototype,"dir",2),v([a({type:Number})],m.prototype,"rows",2),v([a({type:String})],m.prototype,"resizable",2),v([a({type:String})],m.prototype,"accept",2),v([a({type:Boolean})],m.prototype,"multiple",2),v([a({type:String})],m.prototype,"inputmode",2),v([a({type:String})],m.prototype,"enterkeyhint",2),v([a({type:String})],m.prototype,"pattern",2),v([a({type:Number})],m.prototype,"minlength",2),v([a({type:Number})],m.prototype,"maxlength",2),v([a({type:String})],m.prototype,"list",2),v([a({type:Number})],m.prototype,"size",2),v([a({type:Number})],m.prototype,"cols",2),v([a({type:Boolean})],m.prototype,"autofocus",2),v([a({type:Boolean})],m.prototype,"capture",2),v([a({type:String})],m.prototype,"inputRole",2),v([a({type:String})],m.prototype,"ariaLabel",2),v([a({type:String})],m.prototype,"ariaLabelledby",2),v([a({type:String})],m.prototype,"ariaDescribedby",2),v([a({type:Boolean})],m.prototype,"showNumberButtons",2),v([a({type:Boolean})],m.prototype,"showPasswordToggle",2),v([a({type:String})],m.prototype,"passwordVisibleIcon",2),v([a({type:String})],m.prototype,"passwordHiddenIcon",2),v([a({type:Boolean,reflect:!0})],m.prototype,"validationActive",2),v([a({type:Boolean,reflect:!0})],m.prototype,"invalid",2),v([a({type:String,reflect:!0})],m.prototype,"variant",2),v([n()],m.prototype,"selectedFileName",2),v([n()],m.prototype,"selectedFiles",2),v([n()],m.prototype,"focused",2),v([n()],m.prototype,"validationStatus",2),v([n()],m.prototype,"validationErrors",2),v([n()],m.prototype,"typingStarted",2),v([n()],m.prototype,"autofillIconSlot",2),v([n()],m.prototype,"autofillGuardActive",2),v([n()],m.prototype,"showPassword",2),v([n()],m.prototype,"totalFileSize",2),v([n()],m.prototype,"selectedFileCount",2),v([n()],m.prototype,"filePreview",2),v([l(".input-wrapper")],m.prototype,"inputWrapperEl",2),v([l("input, textarea")],m.prototype,"nativeInputEl",2),m=v([p("sky-input")],m);export{m as SkyInput};
1093
+ `,m.shadowRootOptions={...e.shadowRootOptions,delegatesFocus:!0},f([n({type:String})],m.prototype,"value",2),f([n({type:String})],m.prototype,"placeholder",2),f([n({type:String})],m.prototype,"label",2),f([n({type:String})],m.prototype,"type",2),f([n({type:String})],m.prototype,"suffix",2),f([n({type:String})],m.prototype,"prefix",2),f([n({type:String})],m.prototype,"prefixColor",2),f([n({type:String})],m.prototype,"suffixColor",2),f([n({type:String})],m.prototype,"color",2),f([n({type:Array})],m.prototype,"validations",1),f([n({type:Boolean,reflect:!0})],m.prototype,"compact",2),f([n({type:Boolean,reflect:!0})],m.prototype,"loading",2),f([n({type:Boolean})],m.prototype,"showErrors",2),f([n({type:Boolean,reflect:!0})],m.prototype,"clearable",2),f([n({type:String})],m.prototype,"errorDisplayMode",2),f([n({type:Boolean,reflect:!0})],m.prototype,"required",2),f([n({type:String})],m.prototype,"step",2),f([n({type:String})],m.prototype,"min",2),f([n({type:String})],m.prototype,"max",2),f([n({type:String})],m.prototype,"autocapitalize",2),f([n({type:String})],m.prototype,"autocomplete",2),f([n({type:Boolean})],m.prototype,"spellcheck",2),f([n({type:String})],m.prototype,"dir",2),f([n({type:Number})],m.prototype,"rows",2),f([n({type:String})],m.prototype,"resizable",2),f([n({type:String})],m.prototype,"accept",2),f([n({type:Boolean})],m.prototype,"multiple",2),f([n({type:String})],m.prototype,"inputmode",2),f([n({type:String})],m.prototype,"enterkeyhint",2),f([n({type:String})],m.prototype,"pattern",2),f([n({type:Number})],m.prototype,"minlength",2),f([n({type:Number})],m.prototype,"maxlength",2),f([n({type:String})],m.prototype,"list",2),f([n({type:Number})],m.prototype,"size",2),f([n({type:Number})],m.prototype,"cols",2),f([n({type:Boolean})],m.prototype,"autofocus",2),f([n({type:Boolean})],m.prototype,"capture",2),f([n({type:String})],m.prototype,"inputRole",2),f([n({type:String})],m.prototype,"ariaLabel",2),f([n({type:String})],m.prototype,"ariaLabelledby",2),f([n({type:String})],m.prototype,"ariaDescribedby",2),f([n({type:Boolean})],m.prototype,"showNumberButtons",2),f([n({type:Boolean})],m.prototype,"showPasswordToggle",2),f([n({type:String})],m.prototype,"passwordVisibleIcon",2),f([n({type:String})],m.prototype,"passwordHiddenIcon",2),f([n({type:Boolean,reflect:!0})],m.prototype,"validationActive",2),f([n({type:Boolean,reflect:!0})],m.prototype,"invalid",2),f([n({type:String,reflect:!0})],m.prototype,"variant",2),f([o()],m.prototype,"selectedFileName",2),f([o()],m.prototype,"selectedFiles",2),f([o()],m.prototype,"focused",2),f([o()],m.prototype,"validationStatus",2),f([o()],m.prototype,"validationErrors",2),f([o()],m.prototype,"typingStarted",2),f([o()],m.prototype,"autofillIconSlot",2),f([o()],m.prototype,"autofillGuardActive",2),f([o()],m.prototype,"showPassword",2),f([o()],m.prototype,"totalFileSize",2),f([o()],m.prototype,"selectedFileCount",2),f([o()],m.prototype,"filePreview",2),f([l(".input-wrapper")],m.prototype,"inputWrapperEl",2),f([l("input, textarea")],m.prototype,"nativeInputEl",2),m=f([p("sky-input")],m);export{m as SkyInput};
822
1094
  //# sourceMappingURL=sky-input.js.map