@kodaris/krubble-components 1.0.72 → 1.0.74
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.
- package/custom-elements.json +3 -3
- package/dist/button/button.d.ts.map +1 -1
- package/dist/button/button.js +14 -2
- package/dist/button/button.js.map +1 -1
- package/dist/dialog/dialog.d.ts.map +1 -1
- package/dist/dialog/dialog.js +1 -0
- package/dist/dialog/dialog.js.map +1 -1
- package/dist/krubble-components.bundled.js +15 -2
- package/dist/krubble-components.bundled.js.map +1 -1
- package/dist/krubble-components.bundled.min.js +3 -1
- package/dist/krubble-components.bundled.min.js.map +1 -1
- package/dist/krubble-components.umd.js +15 -2
- package/dist/krubble-components.umd.js.map +1 -1
- package/dist/krubble-components.umd.min.js +134 -132
- package/dist/krubble-components.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"krubble-components.umd.min.js","sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit-html/lit-html.js","../../../node_modules/lit-element/lit-element.js","style/base.js","../../../node_modules/@lit/reactive-element/decorators/custom-element.js","../../../node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/@lit/reactive-element/decorators/state.js","../../../node_modules/@lit/reactive-element/decorators/query.js","../../../node_modules/@lit/reactive-element/decorators/base.js","accordion/accordion.js","../../../node_modules/lit-html/directive.js","../../../node_modules/lit-html/directives/class-map.js","alert/alert.js","button/button.js","../../../node_modules/lit-html/directives/unsafe-html.js","code-demo/code-demo.js","context-menu/context-menu.js","../../../node_modules/lit-html/directives/style-map.js","dialog/dialog.js","date-range-picker/date-range-picker.js","snackbar/snackbar.js","tabs/tabs.js","tabs/tab.js","form/select-field/select-field.js","form/select-field/select-option.js","table/query.js","table/table.js","spinner/spinner.js","progress-bar/progress-bar.js","file-preview/file-preview.js","file-list/file-list.js","../../../node_modules/lit-html/directives/if-defined.js","../../../node_modules/lit-html/directive-helpers.js","../../../node_modules/lit-html/directives/live.js","form/text-field/text-field.js","form/textarea-field/textarea-field.js","form/detail-field/detail-field.js","form/auto-suggest/auto-suggest.js","form/combo-box/combo-box.js","form/radio-cards/radio-cards.js","form/checkbox/checkbox.js"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","import { css } from 'lit';\n/**\n * Base theme styles with CSS custom properties.\n * Import into components: static styles = [krBaseCSS, css`...`]\n */\nexport const krBaseCSS = css `\n :host,\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n /* Primary */\n --kr-primary: rgb(22, 48, 82);\n --kr-primary-hover: rgb(16, 36, 62);\n --kr-primary-text: #ffffff;\n\n /* Accent */\n --kr-accent: #BEEA4E;\n --kr-accent-hover: #a8d43a;\n --kr-accent-text: #000000;\n\n /* Text */\n --kr-text: #000000;\n --kr-text-muted: #4b5563;\n --kr-text-disabled: #9ca3af;\n \n /* Borders */\n --kr-border: #e5e7eb;\n }\n`;\n//# sourceMappingURL=base.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * Accordion component for collapsible content sections.\n *\n * ## Usage\n * ```html\n * <kr-accordion header=\"Basic Information\" expanded>\n * <div>Content here</div>\n * </kr-accordion>\n * ```\n *\n * @slot - The collapsible content\n *\n * @property {string} header - Section header text\n * @property {boolean} expanded - Whether the accordion is expanded\n */\nlet KRAccordion = class KRAccordion extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Section header text\n */\n this.header = '';\n /**\n * Whether the accordion is expanded\n */\n this.expanded = false;\n }\n toggle() {\n this.expanded = !this.expanded;\n }\n render() {\n return html `\n <div class=\"header\" @click=${this.toggle}>\n <span class=\"header__title\">${this.header}</span>\n <svg class=\"header__icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 9l6 6 6-6\"/>\n </svg>\n </div>\n <div class=\"content\">\n <div class=\"content__inner\">\n <div class=\"content__body\">\n <slot></slot>\n </div>\n </div>\n </div>\n `;\n }\n};\nKRAccordion.styles = css `\n :host {\n display: block;\n margin-bottom: 16px;\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: #f7f8f9;\n border-radius: 8px;\n cursor: pointer;\n user-select: none;\n }\n\n .header__title {\n font-size: 15px;\n font-weight: 600;\n color: #111827;\n }\n\n .header__icon {\n width: 20px;\n height: 20px;\n color: #9ca3af;\n transition: transform 0.2s ease;\n flex-shrink: 0;\n }\n\n :host([expanded]) .header__icon {\n transform: rotate(180deg);\n }\n\n .content {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 0.2s ease;\n }\n\n :host([expanded]) .content {\n grid-template-rows: 1fr;\n }\n\n .content__inner {\n overflow: hidden;\n }\n\n .content__body {\n padding: 16px 16px 8px 16px;\n }\n `;\n__decorate([\n property({ type: String })\n], KRAccordion.prototype, \"header\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], KRAccordion.prototype, \"expanded\", void 0);\nKRAccordion = __decorate([\n customElement('kr-accordion')\n], KRAccordion);\nexport { KRAccordion };\n//# sourceMappingURL=accordion.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter(s=>t[s]).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter(t=>\"\"!==t)));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n/**\n * A customizable alert component for displaying important information to users.\n *\n * @slot - The alert message content\n * @fires dismiss - Fired when the dismiss button is clicked\n */\nlet KRAlert = class KRAlert extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The alert type/severity\n */\n this.type = 'info';\n /**\n * Optional title text\n */\n this.title = '';\n /**\n * Whether the alert can be dismissed\n */\n this.dismissible = false;\n /**\n * Whether the alert is visible\n */\n this.visible = true;\n }\n /** Handles dismiss button click */\n _handleDismiss() {\n this.visible = false;\n this.dispatchEvent(new CustomEvent('dismiss', { bubbles: true, composed: true }));\n }\n render() {\n const icons = {\n info: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clip-rule=\"evenodd\"/></svg>`,\n success: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/></svg>`,\n warning: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clip-rule=\"evenodd\"/></svg>`,\n error: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clip-rule=\"evenodd\"/></svg>`,\n };\n return html `\n <div\n class=${classMap({\n 'alert': true,\n ['alert--' + this.type]: true,\n 'alert--has-header': !!this.title,\n 'alert--hidden': !this.visible\n })}\n role=\"alert\"\n >\n ${icons[this.type]}\n <div class=\"content\">\n ${this.title\n ? html `<h4 class=\"header\">${this.title}</h4>`\n : nothing}\n <div class=\"message\">\n <slot></slot>\n </div>\n </div>\n ${this.dismissible\n ? html `\n <button\n class=\"dismiss\"\n type=\"button\"\n aria-label=\"Dismiss alert\"\n @click=${this._handleDismiss}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\" clip-rule=\"evenodd\"/>\n </svg>\n </button>\n `\n : nothing}\n </div>\n `;\n }\n};\nKRAlert.styles = css `\n :host {\n display: block;\n }\n\n .alert {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-radius: 8px;\n border: 1px solid;\n border-left: 4px solid;\n }\n\n .alert--has-header {\n align-items: flex-start;\n }\n\n .alert--has-header .icon {\n margin-top: 2px;\n }\n\n .alert--hidden {\n display: none;\n }\n \n /* Variants */\n .alert--info {\n background-color: #eff6ff;\n border-color: #3b82f6;\n }\n\n .alert--info .icon {\n color: #2563eb;\n }\n\n .alert--success {\n background-color: #f0fdf4;\n border-color: #22c55e;\n }\n\n .alert--success .icon {\n color: #16a34a;\n }\n\n .alert--warning {\n background-color: #fffbeb;\n border-color: #f59e0b;\n }\n\n .alert--warning .icon {\n color: #d97706;\n }\n\n .alert--error {\n background-color: #fef2f2;\n border-color: #ef4444;\n }\n\n .alert--error .icon {\n color: #dc2626;\n }\n\n .icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n }\n\n .content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .header {\n font-size: 14px;\n font-weight: 600;\n color: #000000;\n margin: 0;\n }\n\n .message {\n font-size: 14px;\n color: #000000;\n margin: 0;\n }\n\n .dismiss {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n background: none;\n border: none;\n border-radius: 4px;\n color: #6b7280;\n cursor: pointer;\n transition: background 0.15s ease, color 0.15s ease;\n }\n\n .dismiss:hover {\n background-color: rgba(0, 0, 0, 0.05);\n color: #374151;\n }\n\n .dismiss:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n `;\n__decorate([\n property({ type: String })\n], KRAlert.prototype, \"type\", void 0);\n__decorate([\n property({ type: String })\n], KRAlert.prototype, \"title\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRAlert.prototype, \"dismissible\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRAlert.prototype, \"visible\", void 0);\nKRAlert = __decorate([\n customElement('kr-alert')\n], KRAlert);\nexport { KRAlert };\n//# sourceMappingURL=alert.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n/**\n * A customizable button component.\n *\n * @slot - The button content (text)\n * @slot icon - Optional icon to display alongside the button text\n * @fires click - Fired when the button is clicked\n * @fires option-select - Fired when a dropdown option is selected\n */\nlet KRButton = class KRButton extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The button variant (shape)\n */\n this.variant = 'flat';\n /**\n * The button color\n */\n this.color = 'primary';\n /**\n * The button size\n */\n this.size = 'medium';\n /**\n * Whether the button is disabled\n */\n this.disabled = false;\n /**\n * Dropdown options - when provided, button becomes a dropdown\n */\n this.options = [];\n /**\n * Position of the icon relative to the text content.\n * @attr icon-position\n */\n this.iconPosition = 'left';\n /**\n * When true and options are provided, renders as a split button with\n * separate primary action and dropdown trigger zones.\n */\n this.split = false;\n this._state = 'idle';\n this._stateText = '';\n this._dropdownOpened = false;\n this._handleHostClick = (e) => {\n if (this.split && this.options.length) {\n return;\n }\n if (this.options.length) {\n e.stopPropagation();\n this._toggleDropdown();\n }\n };\n this._handleKeydown = (e) => {\n if (e.key === 'Escape' && this._dropdownOpened) {\n this._dropdownOpened = false;\n return;\n }\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (this.split && this.options.length) {\n this.dispatchEvent(new MouseEvent('click', { bubbles: true, composed: true }));\n return;\n }\n if (this.options.length) {\n this._toggleDropdown();\n }\n else {\n this.click();\n }\n }\n if (this.split && this.options.length && e.key === 'ArrowDown') {\n e.preventDefault();\n if (!this._dropdownOpened) {\n this._toggleDropdown();\n }\n }\n };\n this._handleClickOutside = (e) => {\n if (this._dropdownOpened && !this.contains(e.target)) {\n this._dropdownOpened = false;\n }\n };\n }\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', this.href ? 'link' : 'button');\n this.setAttribute('tabindex', '0');\n this.addEventListener('keydown', this._handleKeydown);\n this.addEventListener('click', this._handleHostClick);\n document.addEventListener('click', this._handleClickOutside);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('keydown', this._handleKeydown);\n this.removeEventListener('click', this._handleHostClick);\n document.removeEventListener('click', this._handleClickOutside);\n }\n _handleSplitPrimaryClick(e) {\n e.stopPropagation();\n if (this._dropdownOpened) {\n this._dropdownOpened = false;\n }\n this.dispatchEvent(new MouseEvent('click', {\n bubbles: true,\n composed: true,\n }));\n }\n _handleSplitTriggerClick(e) {\n e.stopPropagation();\n this._toggleDropdown();\n }\n _toggleDropdown() {\n this._dropdownOpened = !this._dropdownOpened;\n if (this._dropdownOpened) {\n // Position the fixed dropdown relative to the host element\n requestAnimationFrame(() => {\n const dropdown = this.shadowRoot?.querySelector('.dropdown');\n if (dropdown) {\n const hostRect = this.getBoundingClientRect();\n dropdown.style.top = hostRect.bottom + 4 + 'px';\n dropdown.style.bottom = '';\n dropdown.style.left = hostRect.left + 'px';\n dropdown.style.right = '';\n dropdown.style.minWidth = hostRect.width + 'px';\n dropdown.style.transformOrigin = 'top left';\n const dropdownRect = dropdown.getBoundingClientRect();\n // Open above if dropdown overflows viewport bottom\n if (dropdownRect.bottom > window.innerHeight) {\n dropdown.style.top = '';\n dropdown.style.bottom = window.innerHeight - hostRect.top + 4 + 'px';\n dropdown.style.transformOrigin = 'bottom left';\n dropdown.classList.add('dropdown--above');\n }\n else {\n dropdown.classList.remove('dropdown--above');\n }\n // Align right if dropdown overflows viewport right\n if (dropdownRect.right > window.innerWidth) {\n dropdown.style.left = '';\n dropdown.style.right = window.innerWidth - hostRect.right + 'px';\n if (dropdownRect.bottom > window.innerHeight) {\n dropdown.style.transformOrigin = 'bottom right';\n }\n else {\n dropdown.style.transformOrigin = 'top right';\n }\n }\n }\n });\n }\n }\n _handleOptionClick(option, e) {\n e.stopPropagation();\n this._dropdownOpened = false;\n this.dispatchEvent(new CustomEvent('option-select', {\n detail: { id: option.id, label: option.label },\n bubbles: true,\n composed: true\n }));\n }\n /**\n * Shows a loading spinner and disables the button.\n */\n showLoading() {\n this._clearStateTimeout();\n this._state = 'loading';\n this._stateText = '';\n }\n /**\n * Shows a success state with optional custom text.\n * @param text - Text to display (default: \"Saved\")\n * @param duration - Duration in ms before auto-reset (default: 2000)\n */\n showSuccess(text = 'Success', duration = 2000) {\n this._clearStateTimeout();\n this._state = 'success';\n this._stateText = text;\n if (duration > 0) {\n this._stateTimeout = window.setTimeout(() => this.reset(), duration);\n }\n }\n /**\n * Shows an error state with optional custom text.\n * @param text - Text to display (default: \"Error\")\n * @param duration - Duration in ms before auto-reset (default: 2000)\n */\n showError(text = 'Error', duration = 2000) {\n this._clearStateTimeout();\n this._state = 'error';\n this._stateText = text;\n if (duration > 0) {\n this._stateTimeout = window.setTimeout(() => this.reset(), duration);\n }\n }\n /**\n * Returns whether the button is currently in the loading state.\n */\n isLoading() {\n return this._state === 'loading';\n }\n /**\n * Resets the button to its idle state.\n */\n reset() {\n this._clearStateTimeout();\n this._state = 'idle';\n this._stateText = '';\n }\n _clearStateTimeout() {\n if (this._stateTimeout) {\n clearTimeout(this._stateTimeout);\n this._stateTimeout = undefined;\n }\n }\n updated(changedProperties) {\n // Reflect state classes to host\n this.classList.toggle('kr-button--loading', this._state === 'loading');\n this.classList.toggle('kr-button--success', this._state === 'success');\n this.classList.toggle('kr-button--error', this._state === 'error');\n this.classList.toggle(`kr-button--${this.variant}`, true);\n this.classList.toggle(`kr-button--${this.color}`, true);\n this.classList.toggle('kr-button--small', this.size === 'small');\n this.classList.toggle('kr-button--large', this.size === 'large');\n this.classList.toggle('kr-button--split', this.split && !!this.options.length);\n }\n render() {\n if (this.split && this.options.length) {\n return html `\n <div class=\"split-primary\" @click=${(e) => this._handleSplitPrimaryClick(e)}>\n <span class=\"content\">\n <slot name=\"icon\"></slot>\n <slot></slot>\n </span>\n ${this._state !== 'idle'\n ? html `<span class=\"state-overlay\">\n ${this._state === 'loading'\n ? html `<span class=\"spinner\"></span>`\n : this._stateText}\n </span>`\n : nothing}\n </div>\n <div class=\"split-divider\"></div>\n <div class=\"split-trigger\" @click=${(e) => this._handleSplitTriggerClick(e)}>\n <svg class=\"caret\" xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" width=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"/></svg>\n </div>\n <div class=\"dropdown ${this._dropdownOpened ? 'dropdown--opened' : ''}\">\n ${this.options.map(option => html `\n <button\n class=\"dropdown-item\"\n @click=${(e) => this._handleOptionClick(option, e)}\n >${option.label}</button>\n `)}\n </div>\n `;\n }\n const content = html `\n <span class=\"content\">\n <slot name=\"icon\"></slot>\n <slot></slot>\n </span>\n ${this.options.length ? html `<svg class=\"caret\" xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" width=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"/></svg>` : nothing}\n ${this._state !== 'idle'\n ? html `<span class=\"state-overlay\">\n ${this._state === 'loading'\n ? html `<span class=\"spinner\"></span>`\n : this._stateText}\n </span>`\n : nothing}\n ${this.options.length ? html `\n <div class=\"dropdown ${this._dropdownOpened ? 'dropdown--opened' : ''}\">\n ${this.options.map(option => html `\n <button\n class=\"dropdown-item\"\n @click=${(e) => this._handleOptionClick(option, e)}\n >${option.label}</button>\n `)}\n </div>\n ` : nothing}\n `;\n return this.href\n ? html `<a class=\"link\" href=${this.href} target=${this.target || nothing}>${content}</a>`\n : content;\n }\n};\nKRButton.styles = css `\n :host {\n display: inline-flex;\n position: relative;\n align-items: center;\n justify-content: center;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n letter-spacing: 0.01em;\n padding: 0 22px;\n height: 36px;\n border: none;\n border-radius: 20px;\n cursor: pointer;\n transition: background 0.15s ease;\n user-select: none;\n box-sizing: border-box;\n }\n\n :host([disabled]),\n :host(.kr-button--loading),\n :host(.kr-button--success),\n :host(.kr-button--error) {\n cursor: not-allowed;\n pointer-events: none;\n }\n\n :host([disabled]:not(.kr-button--loading):not(.kr-button--success):not(.kr-button--error)) {\n opacity: 0.5;\n }\n\n /* Flat + Primary (default) */\n :host,\n :host(.kr-button--flat.kr-button--primary) {\n background: #163052;\n color: white;\n }\n\n :host(:hover:not([disabled])),\n :host(.kr-button--flat.kr-button--primary:hover:not([disabled])) {\n background: #0e1f35;\n }\n\n /* Flat + Secondary */\n :host(.kr-button--flat.kr-button--secondary) {\n background: #f3f4f6;\n color: #374151;\n }\n\n :host(.kr-button--flat.kr-button--secondary:hover:not([disabled])) {\n background: #e5e7eb;\n }\n\n /* Outline + Primary */\n :host(.kr-button--outline.kr-button--primary) {\n background: transparent;\n border: 1px solid #163052;\n color: #163052;\n }\n\n :host(.kr-button--outline.kr-button--primary:hover:not([disabled])) {\n background: rgba(22, 48, 82, 0.05);\n }\n\n /* Outline + Secondary */\n :host(.kr-button--outline.kr-button--secondary) {\n background: transparent;\n border: 1px solid #d1d5db;\n color: #374151;\n }\n\n :host(.kr-button--outline.kr-button--secondary:hover:not([disabled])) {\n background: #f9fafb;\n border-color: #9ca3af;\n }\n\n /* Flat + Danger */\n :host(.kr-button--flat.kr-button--danger) {\n background: #dc2626;\n color: white;\n }\n\n :host(.kr-button--flat.kr-button--danger:hover:not([disabled])) {\n background: #b91c1c;\n }\n\n /* Outline + Danger */\n :host(.kr-button--outline.kr-button--danger) {\n background: transparent;\n border: 1px solid rgb(219, 38, 39);\n color: rgb(219, 38, 39);\n }\n\n :host(.kr-button--outline.kr-button--danger:hover:not([disabled])) {\n background: rgba(219, 38, 39, 0.05);\n }\n\n /* Sizes */\n :host(.kr-button--small) {\n font-size: 13px;\n height: 30px;\n padding: 0 16px;\n }\n\n :host(.kr-button--large) {\n font-size: 16px;\n height: 44px;\n padding: 0 24px;\n border-radius: 30px;\n }\n\n /* State colors */\n :host(.kr-button--success) {\n background: #198754 !important;\n color: white !important;\n }\n\n :host(.kr-button--error) {\n background: rgb(220, 53, 69) !important;\n color: white !important;\n }\n\n /* Content */\n :host(.kr-button--loading) .content,\n :host(.kr-button--success) .content,\n :host(.kr-button--error) .content {\n visibility: hidden;\n }\n\n /* State overlay */\n .state-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n /* Spinner */\n @keyframes kr-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n .spinner {\n width: 12px;\n height: 12px;\n border: 2.5px solid currentColor;\n border-top-color: transparent;\n border-radius: 50%;\n animation: kr-spin 0.6s linear infinite;\n }\n\n :host(.kr-button--small) .spinner {\n width: 10px;\n height: 10px;\n border-width: 2px;\n }\n\n :host(.kr-button--large) .spinner {\n width: 16px;\n height: 16px;\n border-width: 3px;\n }\n\n /* Dropdown */\n .dropdown {\n position: fixed;\n min-width: 100%;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n padding: 8px 0;\n z-index: 10000;\n display: none;\n transform-origin: top left;\n }\n\n .dropdown--opened {\n display: block;\n animation: dropdown-fade-in 150ms ease-out;\n }\n\n .dropdown--above {\n animation-name: dropdown-fade-in-above;\n }\n\n @keyframes dropdown-fade-in {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes dropdown-fade-in-above {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .dropdown-item {\n display: block;\n width: 100%;\n padding: 8px 16px;\n text-align: left;\n background: none;\n border: none;\n font-size: 14px;\n color: #374151;\n cursor: pointer;\n font-family: inherit;\n white-space: nowrap;\n }\n\n .dropdown-item:hover {\n background: #f3f4f6;\n }\n\n /* Caret for dropdown button */\n .caret {\n margin-left: 4px;\n margin-right: -6px;\n display: flex;\n }\n\n /* Link wrapper */\n .link {\n color: inherit;\n text-decoration: none;\n }\n\n /* Content wrapper for icon + text layout */\n .content {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n }\n\n :host([icon-position=\"right\"]) .content {\n flex-direction: row-reverse;\n }\n\n /* Icon styling */\n ::slotted([slot=\"icon\"]) {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n }\n\n :host(.kr-button--small) ::slotted([slot=\"icon\"]) {\n width: 16px;\n height: 16px;\n }\n\n :host(.kr-button--large) ::slotted([slot=\"icon\"]) {\n width: 22px;\n height: 22px;\n }\n\n /* ========================\n Split Button\n ======================== */\n\n :host(.kr-button--split) {\n padding: 0;\n pointer-events: none;\n }\n\n .split-primary,\n .split-trigger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .split-primary {\n padding: 0 16px 0 22px;\n border-radius: 20px 0 0 20px;\n position: relative;\n flex: 1;\n }\n\n .split-trigger {\n padding: 0 14px 0 8px;\n border-radius: 0 20px 20px 0;\n }\n\n .split-trigger .caret {\n margin: 0;\n }\n\n .split-divider {\n width: 1px;\n height: 100%;\n flex-shrink: 0;\n }\n\n .dropdown {\n pointer-events: auto;\n }\n\n /* Split: zone hover — flat primary */\n :host(.kr-button--flat.kr-button--primary) .split-primary:hover,\n :host(.kr-button--flat.kr-button--primary) .split-trigger:hover {\n background: #0e1f35;\n }\n\n /* Split: zone hover — flat secondary */\n :host(.kr-button--flat.kr-button--secondary) .split-primary:hover,\n :host(.kr-button--flat.kr-button--secondary) .split-trigger:hover {\n background: #e5e7eb;\n }\n\n /* Split: zone hover — flat danger */\n :host(.kr-button--flat.kr-button--danger) .split-primary:hover,\n :host(.kr-button--flat.kr-button--danger) .split-trigger:hover {\n background: #b91c1c;\n }\n\n /* Split: zone hover — outline primary */\n :host(.kr-button--outline.kr-button--primary) .split-primary:hover,\n :host(.kr-button--outline.kr-button--primary) .split-trigger:hover {\n background: rgba(22, 48, 82, 0.05);\n }\n\n /* Split: zone hover — outline secondary */\n :host(.kr-button--outline.kr-button--secondary) .split-primary:hover,\n :host(.kr-button--outline.kr-button--secondary) .split-trigger:hover {\n background: #f9fafb;\n }\n\n /* Split: zone hover — outline danger */\n :host(.kr-button--outline.kr-button--danger) .split-primary:hover,\n :host(.kr-button--outline.kr-button--danger) .split-trigger:hover {\n background: rgba(219, 38, 39, 0.05);\n }\n\n /* Split: divider colors — flat variants */\n :host(.kr-button--flat.kr-button--primary) .split-divider {\n background: rgba(255, 255, 255, 0.3);\n }\n\n :host(.kr-button--flat.kr-button--secondary) .split-divider {\n background: rgba(0, 0, 0, 0.15);\n }\n\n :host(.kr-button--flat.kr-button--danger) .split-divider {\n background: rgba(255, 255, 255, 0.3);\n }\n\n /* Split: divider colors — outline variants */\n :host(.kr-button--outline.kr-button--primary) .split-divider {\n background: #163052;\n }\n\n :host(.kr-button--outline.kr-button--secondary) .split-divider {\n background: #d1d5db;\n }\n\n :host(.kr-button--outline.kr-button--danger) .split-divider {\n background: rgb(219, 38, 39);\n }\n\n /* Split: size small */\n :host(.kr-button--split.kr-button--small) .split-primary {\n padding: 0 12px 0 16px;\n }\n\n :host(.kr-button--split.kr-button--small) .split-trigger {\n padding: 0 10px;\n }\n\n /* Split: size large */\n :host(.kr-button--split.kr-button--large) .split-primary {\n padding: 0 18px 0 24px;\n border-radius: 30px 0 0 30px;\n }\n\n :host(.kr-button--split.kr-button--large) .split-trigger {\n padding: 0 16px;\n border-radius: 0 30px 30px 0;\n }\n\n /* Split: disabled */\n :host([disabled]) .split-primary,\n :host([disabled]) .split-trigger {\n cursor: not-allowed;\n pointer-events: none;\n }\n\n /* Split: loading/success/error — overlay in primary zone only */\n :host(.kr-button--split.kr-button--loading) .split-primary .content,\n :host(.kr-button--split.kr-button--success) .split-primary .content,\n :host(.kr-button--split.kr-button--error) .split-primary .content {\n visibility: hidden;\n }\n\n :host(.kr-button--split.kr-button--loading) .split-trigger,\n :host(.kr-button--split.kr-button--success) .split-trigger,\n :host(.kr-button--split.kr-button--error) .split-trigger {\n pointer-events: none;\n opacity: 0.6;\n }\n `;\n__decorate([\n property({ type: String, reflect: true })\n], KRButton.prototype, \"variant\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRButton.prototype, \"color\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRButton.prototype, \"size\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], KRButton.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: String })\n], KRButton.prototype, \"href\", void 0);\n__decorate([\n property({ type: String })\n], KRButton.prototype, \"target\", void 0);\n__decorate([\n property({ type: Array })\n], KRButton.prototype, \"options\", void 0);\n__decorate([\n property({ type: String, reflect: true, attribute: 'icon-position' })\n], KRButton.prototype, \"iconPosition\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], KRButton.prototype, \"split\", void 0);\n__decorate([\n state()\n], KRButton.prototype, \"_state\", void 0);\n__decorate([\n state()\n], KRButton.prototype, \"_stateText\", void 0);\n__decorate([\n state()\n], KRButton.prototype, \"_dropdownOpened\", void 0);\nKRButton = __decorate([\n customElement('kr-button')\n], KRButton);\nexport { KRButton };\n//# sourceMappingURL=button.js.map","import{nothing as t,noChange as i}from\"../lit-html.js\";import{directive as r,Directive as s,PartType as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends s{constructor(i){if(super(i),this.it=t,i.type!==n.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=r(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { krBaseCSS } from '../style/base.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\n/**\n * Code demo component with Preview/Code tabs and syntax highlighting.\n *\n * Usage:\n * ```html\n * <kr-code-demo language=\"html\">\n * <kr-button>Click me</kr-button>\n * </kr-code-demo>\n * ```\n *\n * Requires highlight.js to be loaded globally for syntax highlighting.\n */\nlet KRCodeDemo = class KRCodeDemo extends LitElement {\n constructor() {\n super(...arguments);\n this.language = 'html';\n this.code = '';\n this.activeTab = 'preview';\n this.copied = false;\n this.highlightedCode = '';\n }\n connectedCallback() {\n super.connectedCallback();\n // Defer to next frame so the parser finishes with children before we read innerHTML\n requestAnimationFrame(() => {\n if (!this.code) {\n // innerHTML normalizes boolean attributes (e.g. dismissible -> dismissible=\"\"), strip the =\"\" for cleaner display\n this.code = this.innerHTML.trim().replace(/=\"\"(?=[\\s>])/g, '');\n }\n this.querySelectorAll('script').forEach(oldScript => {\n const newScript = document.createElement('script');\n newScript.textContent = oldScript.textContent;\n oldScript.replaceWith(newScript);\n });\n if (this.code && window.hljs && window.hljs.getLanguage(this.language)) {\n this.highlightedCode = window.hljs.highlight(this.code, { language: this.language }).value;\n }\n else {\n this.highlightedCode = this.code.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n }\n });\n }\n activateTab(tab) {\n this.activeTab = tab;\n }\n copyCode() {\n if (!this.code)\n return;\n navigator.clipboard.writeText(this.code).then(() => {\n this.copied = true;\n setTimeout(() => {\n this.copied = false;\n }, 2000);\n });\n }\n render() {\n return html `\n <div class=\"tabs\">\n <button\n class=${classMap({\n tab: true,\n 'tab--active': this.activeTab === 'preview'\n })}\n @click=${() => this.activateTab('preview')}\n >\n Preview\n </button>\n <button\n class=${classMap({\n tab: true, 'tab--active': this.activeTab === 'code'\n })}\n @click=${() => this.activateTab('code')}\n >\n Code\n </button>\n <button\n class=${classMap({ 'copy': true, 'copy--success': this.copied })}\n @click=${this.copyCode}\n title=${this.copied ? 'Copied!' : 'Copy code'}\n >\n ${this.copied\n ? html `<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"></polyline></svg>`\n : html `<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg>`}\n </button>\n </div>\n\n <div class=${classMap({\n panel: true,\n 'panel--active': this.activeTab === 'preview',\n 'panel--preview': true\n })}>\n <slot></slot>\n </div>\n\n <div class=${classMap({\n panel: true,\n 'panel--active': this.activeTab === 'code',\n 'panel--code': true\n })}>\n <pre class=\"code\"><code>${unsafeHTML(this.highlightedCode)}</code></pre>\n </div>\n\n `;\n }\n};\nKRCodeDemo.styles = [krBaseCSS, css `\n :host {\n display: block;\n border: 1px solid #d5dbdb;\n border-radius: 8px;\n overflow: visible;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .tabs {\n display: flex;\n align-items: center;\n height: 48px;\n background: #f8f9fa;\n border-bottom: 1px solid #d5dbdb;\n border-radius: 8px 8px 0 0;\n }\n\n .tab {\n height: 100%;\n padding: 0 20px;\n background: none;\n border: none;\n color: #6c757d;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n position: relative;\n transition: color 0.15s;\n }\n\n .tab:hover {\n color: #495057;\n }\n\n .tab--active {\n color: #1a1a2e;\n }\n\n .tab--active::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n right: 0;\n height: 2px;\n background: var(--kr-primary);\n }\n\n .panel {\n display: none;\n }\n\n .panel--active {\n display: block;\n }\n\n .panel--preview {\n padding: 24px;\n background: #ffffff;\n }\n\n .panel--code {\n }\n\n .code {\n margin: 0;\n padding: 20px;\n background: #ffffff;\n overflow-x: auto;\n font-family: 'SF Mono', 'Fira Code', 'Monaco', 'Consolas', monospace;\n font-size: 13px;\n line-height: 1.6;\n color: #1a1a2e;\n border-radius: 0 0 8px 8px;\n }\n\n .code code {\n font-family: inherit;\n }\n\n .copy {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: auto;\n margin-right: 12px;\n padding: 0;\n background: none;\n border: none;\n border-radius: 4px;\n color: #6c757d;\n cursor: pointer;\n transition: color 0.15s;\n }\n\n .copy:hover {\n color: #495057;\n }\n\n .copy--success {\n color: #16a34a;\n }\n\n /* Syntax highlighting */\n .hljs-tag { color: #22863a; }\n .hljs-name { color: #22863a; }\n .hljs-attr { color: #6f42c1; }\n .hljs-string { color: #032f62; }\n .hljs-comment { color: #6a737d; font-style: italic; }\n .hljs-keyword { color: #d73a49; }\n .hljs-number { color: #005cc5; }\n .hljs-built_in { color: #e36209; }\n .hljs-literal { color: #005cc5; }\n .hljs-symbol { color: #e36209; }\n .hljs-selector-tag { color: #22863a; }\n .hljs-selector-class { color: #6f42c1; }\n .hljs-selector-id { color: #005cc5; }\n .hljs-attribute { color: #005cc5; }\n .hljs-property { color: #005cc5; }\n\n `];\n__decorate([\n property({ type: String })\n], KRCodeDemo.prototype, \"language\", void 0);\n__decorate([\n state()\n], KRCodeDemo.prototype, \"code\", void 0);\n__decorate([\n state()\n], KRCodeDemo.prototype, \"activeTab\", void 0);\n__decorate([\n state()\n], KRCodeDemo.prototype, \"copied\", void 0);\n__decorate([\n state()\n], KRCodeDemo.prototype, \"highlightedCode\", void 0);\nKRCodeDemo = __decorate([\n customElement('kr-code-demo')\n], KRCodeDemo);\nexport { KRCodeDemo };\n//# sourceMappingURL=code-demo.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, state } from 'lit/decorators.js';\n/**\n * Context menu component that can be opened programmatically.\n *\n * Usage:\n * ```ts\n * const result = await ContextMenu.open({\n * x: event.clientX,\n * y: event.clientY,\n * items: [\n * { id: 'edit', label: 'Edit Item' },\n * { id: 'divider', label: '', divider: true },\n * { id: 'add-above', label: 'Add Item Above' },\n * { id: 'add-below', label: 'Add Item Below' },\n * ]\n * });\n *\n * if (result) {\n * console.log('Selected:', result.id);\n * }\n * ```\n */\nlet KRContextMenu = class KRContextMenu extends LitElement {\n constructor() {\n super(...arguments);\n this.items = [];\n this.resolvePromise = null;\n this.boundHandleOutsideClick = this.handleOutsideClick.bind(this);\n this.boundHandleKeyDown = this.handleKeyDown.bind(this);\n }\n static async open(options) {\n // Remove any existing context menu\n const existing = document.querySelector('kr-context-menu');\n if (existing) {\n existing.remove();\n }\n // Create and position the menu\n const menu = document.createElement('kr-context-menu');\n document.body.appendChild(menu);\n return menu.show(options);\n }\n async show(options) {\n this.items = options.items;\n this.style.left = `${options.x}px`;\n this.style.top = `${options.y}px`;\n // Adjust position if menu would go off screen\n await this.updateComplete;\n const rect = this.getBoundingClientRect();\n if (rect.right > window.innerWidth) {\n this.style.left = `${options.x - rect.width}px`;\n }\n if (rect.bottom > window.innerHeight) {\n this.style.top = `${options.y - rect.height}px`;\n }\n // Add event listeners after a microtask to avoid the current event triggering close\n requestAnimationFrame(() => {\n document.addEventListener('click', this.boundHandleOutsideClick);\n document.addEventListener('contextmenu', this.boundHandleOutsideClick);\n document.addEventListener('keydown', this.boundHandleKeyDown);\n });\n return new Promise((resolve) => {\n this.resolvePromise = resolve;\n });\n }\n handleOutsideClick(e) {\n if (!this.contains(e.target)) {\n this.close(null);\n }\n }\n handleKeyDown(e) {\n if (e.key === 'Escape') {\n this.close(null);\n }\n }\n handleItemClick(item) {\n if (!item.disabled && !item.divider) {\n this.close(item);\n }\n }\n close(result) {\n document.removeEventListener('click', this.boundHandleOutsideClick);\n document.removeEventListener('contextmenu', this.boundHandleOutsideClick);\n document.removeEventListener('keydown', this.boundHandleKeyDown);\n if (this.resolvePromise) {\n this.resolvePromise(result);\n this.resolvePromise = null;\n }\n this.remove();\n }\n render() {\n return html `\n <div class=\"menu\">\n ${this.items.map(item => item.divider\n ? html `<div class=\"menu__divider\"></div>`\n : html `\n <button\n class=\"menu__item\"\n ?disabled=${item.disabled}\n @click=${() => this.handleItemClick(item)}\n >\n ${item.icon ? html `<span class=\"menu__item-icon\">${item.icon}</span>` : null}\n ${item.label}\n </button>\n `)}\n </div>\n `;\n }\n};\nKRContextMenu.styles = css `\n :host {\n position: fixed;\n z-index: 10000;\n }\n\n .menu {\n background: #1a1a2e;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n padding: 4px;\n min-width: 180px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n }\n\n .menu__item {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 10px 12px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.8);\n font-size: 13px;\n font-family: inherit;\n text-align: left;\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n }\n\n .menu__item:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.05);\n color: #ffffff;\n }\n\n .menu__item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .menu__item-icon {\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .menu__divider {\n height: 1px;\n background: rgba(255, 255, 255, 0.1);\n margin: 4px 0;\n }\n `;\n__decorate([\n state()\n], KRContextMenu.prototype, \"items\", void 0);\nKRContextMenu = __decorate([\n customElement('kr-context-menu')\n], KRContextMenu);\nexport { KRContextMenu };\n//# sourceMappingURL=context-menu.js.map","import{noChange as t}from\"../lit-html.js\";import{directive as e,Directive as r,PartType as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=\"important\",i=\" !\"+n,o=e(class extends r{constructor(t){if(super(t),t.type!==s.ATTRIBUTE||\"style\"!==t.name||t.strings?.length>2)throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\")}render(t){return Object.keys(t).reduce((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes(\"-\")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,\"-$&\").toLowerCase()}:${s};`},\"\")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes(\"-\")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r=\"string\"==typeof e&&e.endsWith(i);t.includes(\"-\")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:\"\"):s[t]=e}}return t}});export{o as styleMap};\n//# sourceMappingURL=style-map.js.map\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nlet KRDialogHeader = class KRDialogHeader extends LitElement {\n render() {\n return html `<slot></slot>`;\n }\n};\nKRDialogHeader.styles = css `\n :host {\n display: flex;\n padding: 0 24px;\n align-items: center;\n height: 64px;\n flex-shrink: 0;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n }\n\n ::slotted(h2) {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n }\n `;\nKRDialogHeader = __decorate([\n customElement('kr-dialog-header')\n], KRDialogHeader);\nexport { KRDialogHeader };\nlet KRDialogContent = class KRDialogContent extends LitElement {\n render() {\n return html `<slot></slot>`;\n }\n};\nKRDialogContent.styles = css `\n :host {\n display: block;\n padding: 24px;\n overflow: auto;\n flex: 1 1 auto;\n }\n `;\nKRDialogContent = __decorate([\n customElement('kr-dialog-content')\n], KRDialogContent);\nexport { KRDialogContent };\nlet KRDialogFooter = class KRDialogFooter extends LitElement {\n render() {\n return html `<slot></slot>`;\n }\n};\nKRDialogFooter.styles = css `\n :host {\n display: flex;\n padding: 0 24px;\n align-items: center;\n height: 64px;\n flex-shrink: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n gap: 12px;\n justify-content: flex-end;\n }\n `;\nKRDialogFooter = __decorate([\n customElement('kr-dialog-footer')\n], KRDialogFooter);\nexport { KRDialogFooter };\n/**\n * A reference to an open dialog instance.\n *\n * Used to close the dialog and retrieve its result.\n *\n * @typeParam R - The type of the result returned when the dialog closes\n */\nexport class KRDialogRef {\n constructor() {\n this._resolvePromise = null;\n this._dialogElement = null;\n this._promise = new Promise((resolve) => {\n this._resolvePromise = resolve;\n });\n }\n /** @internal */\n setDialogElement(el) {\n this._dialogElement = el;\n }\n /**\n * Closes the dialog and resolves with the given result.\n *\n * @param result - The result to return to the caller\n */\n close(result) {\n if (this._resolvePromise) {\n this._resolvePromise(result);\n this._resolvePromise = null;\n }\n this._dialogElement?.remove();\n }\n /**\n * Returns a promise that resolves when the dialog is closed.\n *\n * @returns A promise that resolves with the dialog result, or undefined if dismissed\n */\n afterClosed() {\n return this._promise;\n }\n}\n/**\n * Generic dialog component that supports both declarative and programmatic usage.\n *\n * Declarative: place `<kr-dialog>` in HTML with slotted content and call `.open()` / `.close()`.\n * Programmatic: use `KRDialog.open(Component, config)` to create and show a dialog.\n *\n * @element kr-dialog\n *\n * @slot - Default slot for declarative dialog content (kr-dialog-header, kr-dialog-content, kr-dialog-footer)\n *\n * @fires close - Fired when a declarative dialog is closed\n */\nlet KRDialog = class KRDialog extends LitElement {\n constructor() {\n super(...arguments);\n this._dialogRef = null;\n this._contentElement = null;\n this.opened = false;\n this.label = '';\n this.width = '560px';\n this._handleDocumentKeyDown = (e) => {\n if (e.key === 'Escape') {\n this.close();\n }\n };\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._handleDocumentKeyDown);\n }\n updated(changedProperties) {\n super.updated(changedProperties);\n if (changedProperties.has('opened')) {\n if (this.opened) {\n document.addEventListener('keydown', this._handleDocumentKeyDown);\n }\n else {\n document.removeEventListener('keydown', this._handleDocumentKeyDown);\n }\n }\n }\n /**\n * Opens the dialog (declarative mode).\n */\n open() {\n this.opened = true;\n }\n /**\n * Closes the dialog.\n * In programmatic mode (has _dialogRef), delegates to the dialog ref.\n * In declarative mode, sets opened=false and dispatches close event.\n */\n close() {\n if (this._dialogRef) {\n this._dialogRef.close(undefined);\n return;\n }\n this.opened = false;\n this.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }));\n }\n /**\n * Opens a dialog programmatically by creating a component and injecting it.\n */\n static open(component, config) {\n // Only remove other programmatic dialogs (those with a _dialogRef)\n document.querySelectorAll('kr-dialog').forEach((el) => {\n if (el._dialogRef) {\n el.remove();\n }\n });\n const dialogRef = new KRDialogRef();\n const dialog = document.createElement('kr-dialog');\n dialogRef.setDialogElement(dialog);\n dialog._dialogRef = dialogRef;\n // Create the content component\n const content = new component();\n content.dialogRef = dialogRef;\n if (config?.data) {\n content.data = config.data;\n }\n if (config?.label) {\n dialog.label = config.label;\n }\n if (config?.width) {\n dialog.width = config.width;\n }\n dialog._contentElement = content;\n dialog.opened = true;\n document.body.appendChild(dialog);\n return dialogRef;\n }\n _handleBackdropClick(e) {\n if (e.target.classList.contains('backdrop')) {\n this.close();\n }\n }\n render() {\n return html `\n <div class=\"backdrop\" @click=${this._handleBackdropClick}></div>\n <div class=\"dialog\" style=${styleMap({ width: this.width })}>\n ${this.label ? html `<div class=\"dialog__header\"><div class=\"dialog__header-label\">${this.label}</div></div>` : ''}\n <div class=\"dialog__body\">${this._contentElement ? this._contentElement : html `<slot></slot>`}</div>\n </div>\n `;\n }\n};\nKRDialog.styles = css `\n :host {\n position: fixed;\n inset: 0;\n z-index: 10000;\n display: none;\n align-items: center;\n justify-content: center;\n }\n\n :host([opened]) {\n display: flex;\n }\n\n .backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n }\n\n .dialog {\n position: relative;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 12px;\n box-shadow: 0 16px 48px rgba(0, 0, 0, 0.2);\n max-height: 90vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n width: 560px;\n max-width: calc(100vw - 48px);\n }\n\n ::slotted(kr-dialog-header),\n ::slotted(kr-dialog-footer) {\n flex-shrink: 0;\n }\n\n ::slotted(kr-dialog-content) {\n flex: 1 1 auto;\n overflow: auto;\n }\n\n .dialog__header {\n display: flex;\n padding: 0 24px;\n align-items: center;\n height: 64px;\n flex-shrink: 0;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n }\n\n .dialog__header-label {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n }\n\n .dialog__body {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n }\n `;\n__decorate([\n state()\n], KRDialog.prototype, \"_contentElement\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], KRDialog.prototype, \"opened\", void 0);\n__decorate([\n property({ type: String })\n], KRDialog.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRDialog.prototype, \"width\", void 0);\nKRDialog = __decorate([\n customElement('kr-dialog')\n], KRDialog);\nexport { KRDialog };\n//# sourceMappingURL=dialog.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport '../button/button.js';\n/**\n * A date range picker component for selecting date ranges with relative and absolute options.\n *\n * @fires change - Fired when the date range selection changes\n * @csspart trigger - The trigger button element\n * @csspart dropdown - The dropdown container\n */\nlet KRDateRangePicker = class KRDateRangePicker extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Relative date options to display\n */\n this.relativeOptions = [\n { key: 'last-5-minutes', amount: 5, unit: 'minute', type: 'relative' },\n { key: 'last-30-minutes', amount: 30, unit: 'minute', type: 'relative' },\n { key: 'last-1-hour', amount: 1, unit: 'hour', type: 'relative' },\n { key: 'last-6-hours', amount: 6, unit: 'hour', type: 'relative' },\n { key: 'last-1-day', amount: 1, unit: 'day', type: 'relative' },\n { key: 'last-7-days', amount: 7, unit: 'day', type: 'relative' },\n { key: 'last-30-days', amount: 30, unit: 'day', type: 'relative' },\n ];\n /**\n * Whether the picker is disabled\n */\n this.disabled = false;\n /**\n * Whether the picker is in an invalid state\n */\n this.invalid = false;\n /**\n * Placeholder text when no range is selected\n */\n this.placeholder = 'Select a date range';\n /**\n * Initial start date for absolute mode (YYYY-MM-DD)\n */\n this.startDate = '';\n /**\n * Initial end date for absolute mode (YYYY-MM-DD)\n */\n this.endDate = '';\n this._isOpen = false;\n this._activeTab = 'relative';\n this._tempStartDate = '';\n this._tempEndDate = '';\n this._handleClickOutside = (e) => {\n if (!e.composedPath().includes(this)) {\n this._isOpen = false;\n }\n };\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleClickOutside);\n if (this.startDate)\n this._tempStartDate = this.startDate;\n if (this.endDate)\n this._tempEndDate = this.endDate;\n // Set initial active tab based on mode\n if (this.mode === 'relative') {\n this._activeTab = 'relative';\n }\n else if (this.mode === 'absolute') {\n this._activeTab = 'absolute';\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleClickOutside);\n }\n _handleTriggerClick() {\n if (this.disabled)\n return;\n this._isOpen = !this._isOpen;\n }\n _handleTabClick(tab) {\n this._activeTab = tab;\n }\n _handleRelativeSelect(option) {\n this.value = {\n type: 'relative',\n amount: option.amount,\n unit: option.unit,\n };\n this._isOpen = false;\n this.dispatchEvent(new CustomEvent('change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n _handleApplyAbsolute() {\n if (!this._tempStartDate) {\n return;\n }\n if (!this._tempEndDate) {\n return;\n }\n if (this._tempStartDate >= this._tempEndDate) {\n return;\n }\n this.value = {\n type: 'absolute',\n startDate: this._tempStartDate,\n endDate: this._tempEndDate,\n };\n this.startDate = this._tempStartDate;\n this.endDate = this._tempEndDate;\n this._isOpen = false;\n this.dispatchEvent(new CustomEvent('change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n _handleCancel() {\n this._isOpen = false;\n this._tempStartDate = this.startDate;\n this._tempEndDate = this.endDate;\n }\n _formatRelativeOption(option) {\n if (option.amount === 0) {\n if (option.unit === 'day') {\n return 'Today';\n }\n return `This ${option.unit}`;\n }\n const unitLabels = {\n second: option.amount === 1 ? 'second' : 'seconds',\n minute: option.amount === 1 ? 'minute' : 'minutes',\n hour: option.amount === 1 ? 'hour' : 'hours',\n day: option.amount === 1 ? 'day' : 'days',\n week: option.amount === 1 ? 'week' : 'weeks',\n month: option.amount === 1 ? 'month' : 'months',\n year: option.amount === 1 ? 'year' : 'years',\n };\n return `Last ${option.amount} ${unitLabels[option.unit]}`;\n }\n _getDisplayValue() {\n if (!this.value)\n return '';\n if (this.value.type === 'relative' && this.value.amount !== undefined && this.value.unit) {\n return this._formatRelativeOption({\n key: '',\n amount: this.value.amount,\n unit: this.value.unit,\n type: 'relative',\n });\n }\n if (this.value.type === 'absolute' && this.value.startDate && this.value.endDate) {\n return `${this.value.startDate} - ${this.value.endDate}`;\n }\n return '';\n }\n _renderTriggerText() {\n const displayValue = this._getDisplayValue();\n if (displayValue) {\n return html `${displayValue}`;\n }\n return html `<span class=\"trigger-placeholder\">${this.placeholder}</span>`;\n }\n _renderContent() {\n if (this.mode === 'relative') {\n return this._renderRelativeContent();\n }\n if (this.mode === 'absolute') {\n return this._renderAbsoluteContent();\n }\n if (this._activeTab === 'relative') {\n return this._renderRelativeContent();\n }\n return this._renderAbsoluteContent();\n }\n _renderRelativeContent() {\n return html `\n <div class=\"relative-options\">\n ${this.relativeOptions.map((option) => html `\n <button\n class=${classMap({\n 'relative-option': true,\n 'relative-option--selected': this.value?.type === 'relative' &&\n this.value?.amount === option.amount &&\n this.value?.unit === option.unit\n })}\n type=\"button\"\n @click=${() => this._handleRelativeSelect(option)}\n >\n ${this._formatRelativeOption(option)}\n </button>\n `)}\n </div>\n `;\n }\n _renderAbsoluteContent() {\n return html `\n <div class=\"absolute\">\n <div class=\"date-row\">\n <span class=\"date-label\">Start</span>\n <input\n class=\"date-input\"\n type=\"date\"\n .value=${this._tempStartDate}\n @change=${this._handleStartDateChange}\n />\n </div>\n <div class=\"date-row\">\n <span class=\"date-label\">End</span>\n <input\n class=\"date-input\"\n type=\"date\"\n .value=${this._tempEndDate}\n @change=${this._handleEndDateChange}\n />\n </div>\n </div>\n `;\n }\n _renderFooter() {\n if (this.mode === 'absolute') {\n return html `\n <div class=\"footer\">\n <kr-button variant=\"outline\" size=\"small\" @click=${this._handleCancel}>\n Cancel\n </kr-button>\n <kr-button\n variant=\"primary\"\n size=\"small\"\n ?disabled=${!this._tempStartDate || !this._tempEndDate}\n @click=${this._handleApplyAbsolute}\n >\n Apply\n </kr-button>\n </div>\n `;\n }\n if (this.mode === 'relative') {\n return nothing;\n }\n if (this._activeTab === 'absolute') {\n return html `\n <div class=\"footer\">\n <kr-button variant=\"outline\" size=\"small\" @click=${this._handleCancel}>\n Cancel\n </kr-button>\n <kr-button\n variant=\"primary\"\n size=\"small\"\n ?disabled=${!this._tempStartDate || !this._tempEndDate}\n @click=${this._handleApplyAbsolute}\n >\n Apply\n </kr-button>\n </div>\n `;\n }\n return nothing;\n }\n _handleStartDateChange(e) {\n this._tempStartDate = e.target.value;\n }\n _handleEndDateChange(e) {\n this._tempEndDate = e.target.value;\n }\n render() {\n return html `\n <button\n part=\"trigger\"\n class=${classMap({\n 'trigger': true,\n 'trigger--invalid': this.invalid\n })}\n type=\"button\"\n ?disabled=${this.disabled}\n @click=${this._handleTriggerClick}\n >\n <svg class=\"icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n <span class=\"trigger-text\">\n ${this._renderTriggerText()}\n </span>\n <svg class=\"icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </button>\n\n <div part=\"dropdown\" class=${classMap({\n 'dropdown': true,\n 'dropdown--open': this._isOpen\n })}>\n ${!this.mode ? html `\n <div class=\"tabs\">\n <button\n class=${classMap({\n 'tab': true,\n 'tab--active': this._activeTab === 'relative'\n })}\n type=\"button\"\n @click=${() => this._handleTabClick('relative')}\n >\n Relative\n </button>\n <button\n class=${classMap({\n 'tab': true,\n 'tab--active': this._activeTab === 'absolute'\n })}\n type=\"button\"\n @click=${() => this._handleTabClick('absolute')}\n >\n Absolute\n </button>\n </div>\n ` : nothing}\n\n <div class=\"content\">\n ${this._renderContent()}\n </div>\n\n ${this._renderFooter()}\n </div>\n `;\n }\n};\nKRDateRangePicker.styles = css `\n :host {\n display: inline-block;\n position: relative;\n font-family: inherit;\n }\n\n .trigger {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n min-width: 250px;\n padding: 0.5rem 0.75rem;\n font-size: 14px;\n font-family: inherit;\n color: #111827;\n background-color: #fff;\n border: 1px solid #d1d5db;\n border-radius: 4px;\n cursor: pointer;\n transition: border-color 0.2s, box-shadow 0.2s;\n text-align: left;\n }\n\n .trigger:hover:not(:disabled) {\n border-color: #9ca3af;\n }\n\n .trigger:focus {\n outline: none;\n border-color: #2563eb;\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n }\n\n .trigger:disabled {\n background-color: #f3f4f6;\n color: #9ca3af;\n cursor: not-allowed;\n }\n\n .trigger--invalid {\n border-color: #ef4444;\n }\n\n .trigger-text {\n flex: 1;\n }\n\n .trigger-placeholder {\n color: #9ca3af;\n }\n\n .icon {\n width: 16px;\n height: 16px;\n color: #6b7280;\n flex-shrink: 0;\n }\n\n .dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n min-width: 320px;\n background-color: #fff;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n display: none;\n }\n\n .dropdown--open {\n display: block;\n }\n\n .tabs {\n display: flex;\n border-bottom: 1px solid #e5e7eb;\n }\n\n .tab {\n flex: 1;\n padding: 0.75rem;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n color: #6b7280;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n transition: color 0.2s;\n }\n\n .tab:hover {\n color: #111827;\n }\n\n .tab--active {\n color: #2563eb;\n border-bottom-color: #2563eb;\n }\n\n .content {\n padding: 1rem;\n }\n\n .relative-options {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .relative-option {\n display: flex;\n align-items: center;\n padding: 0.5rem 0.75rem;\n font-size: 14px;\n font-family: inherit;\n color: #111827;\n background: none;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n text-align: left;\n transition: background-color 0.2s;\n }\n\n .relative-option:hover {\n background-color: #f3f4f6;\n }\n\n .relative-option--selected {\n background-color: #eff6ff;\n color: #1e40af;\n }\n\n .absolute {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n\n .date-row {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n }\n\n .date-label {\n width: 60px;\n font-size: 14px;\n color: #6b7280;\n }\n\n .date-input {\n flex: 1;\n padding: 0.5rem 0.75rem;\n font-size: 14px;\n font-family: inherit;\n border: 1px solid #d1d5db;\n border-radius: 4px;\n }\n\n .date-input:focus {\n outline: none;\n border-color: #2563eb;\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n }\n\n .footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n border-top: 1px solid #e5e7eb;\n }\n `;\n__decorate([\n property({ type: Object })\n], KRDateRangePicker.prototype, \"value\", void 0);\n__decorate([\n property({ type: Array })\n], KRDateRangePicker.prototype, \"relativeOptions\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRDateRangePicker.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRDateRangePicker.prototype, \"invalid\", void 0);\n__decorate([\n property({ type: String })\n], KRDateRangePicker.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: String })\n], KRDateRangePicker.prototype, \"startDate\", void 0);\n__decorate([\n property({ type: String })\n], KRDateRangePicker.prototype, \"endDate\", void 0);\n__decorate([\n property({ type: String })\n], KRDateRangePicker.prototype, \"mode\", void 0);\n__decorate([\n state()\n], KRDateRangePicker.prototype, \"_isOpen\", void 0);\n__decorate([\n state()\n], KRDateRangePicker.prototype, \"_activeTab\", void 0);\n__decorate([\n state()\n], KRDateRangePicker.prototype, \"_tempStartDate\", void 0);\n__decorate([\n state()\n], KRDateRangePicker.prototype, \"_tempEndDate\", void 0);\nKRDateRangePicker = __decorate([\n customElement('kr-date-range-picker')\n], KRDateRangePicker);\nexport { KRDateRangePicker };\n//# sourceMappingURL=date-range-picker.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar KRSnackbar_1;\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * A snackbar component for displaying brief notification messages.\n *\n * Snackbars appear at the bottom-left of the screen and automatically\n * dismiss after a configurable duration. Multiple snackbars stack vertically.\n *\n * @fires dismiss - Fired when the snackbar is dismissed (manually or automatically)\n *\n * @example\n * ```ts\n * // Show a success message\n * KRSnackbar.show({ message: 'Item saved successfully', type: 'success' });\n *\n * // Show a message with title\n * KRSnackbar.show({ title: 'Upload Complete', message: 'Your file has been uploaded.', type: 'success' });\n *\n * // Show an error that stays until manually dismissed\n * KRSnackbar.show({ message: 'Failed to save', type: 'error', duration: 0 });\n * ```\n */\nlet KRSnackbar = KRSnackbar_1 = class KRSnackbar extends LitElement {\n constructor() {\n super(...arguments);\n this.dismissTimeout = null;\n /**\n * The snackbar type/severity. Controls the color scheme and icon.\n */\n this.type = 'info';\n /**\n * Optional title to display above the message.\n */\n this.title = '';\n /**\n * The message to display in the snackbar.\n */\n this.message = '';\n /**\n * Duration in milliseconds before auto-dismiss. Set to 0 to disable auto-dismiss.\n * @default 5000\n */\n this.duration = 5000;\n }\n /**\n * Show a snackbar with the given options.\n * @param options - Configuration including message, optional title, type, and duration\n * @returns The created snackbar element\n */\n static show(options) {\n // Close any existing snackbars before showing the new one\n for (const existing of this.activeSnackbars) {\n existing.dismiss();\n }\n const snackbar = document.createElement('kr-snackbar');\n snackbar.message = options.message;\n snackbar.title = options.title ?? '';\n snackbar.type = options.type ?? 'info';\n if (options.duration !== undefined) {\n snackbar.duration = options.duration;\n }\n else if (snackbar.type === 'error') {\n snackbar.duration = 0;\n }\n else {\n snackbar.duration = 5000;\n }\n document.body.appendChild(snackbar);\n return snackbar;\n }\n connectedCallback() {\n super.connectedCallback();\n // Set role and type class on host\n this.setAttribute('role', 'alert');\n this.classList.add(`kr-snackbar--${this.type}`);\n if (this.title) {\n this.classList.add('kr-snackbar--has-title');\n }\n // Add to active snackbars and update positions\n KRSnackbar_1.activeSnackbars.push(this);\n // this.updatePositions();\n // Set up auto-dismiss\n if (this.duration > 0) {\n this.dismissTimeout = window.setTimeout(() => {\n this.dismiss();\n }, this.duration);\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n // Remove from active snackbars\n const index = KRSnackbar_1.activeSnackbars.indexOf(this);\n if (index > -1) {\n KRSnackbar_1.activeSnackbars.splice(index, 1);\n }\n // Update positions of remaining snackbars\n // this.updatePositions();\n // Clear timeout\n if (this.dismissTimeout) {\n clearTimeout(this.dismissTimeout);\n }\n }\n // private updatePositions() {\n // let bottomOffset = 24;\n // for (const snackbar of KRSnackbar.activeSnackbars) {\n // snackbar.style.bottom = `${bottomOffset}px`;\n // bottomOffset += snackbar.offsetHeight + 8;\n // }\n // }\n dismiss() {\n if (this.dismissTimeout) {\n clearTimeout(this.dismissTimeout);\n this.dismissTimeout = null;\n }\n this.classList.add('kr-snackbar--closing');\n this.addEventListener('animationend', () => {\n this.dispatchEvent(new CustomEvent('dismiss', { bubbles: true, composed: true }));\n this.remove();\n }, { once: true });\n }\n render() {\n const icons = {\n info: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clip-rule=\"evenodd\"/></svg>`,\n success: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/></svg>`,\n warning: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clip-rule=\"evenodd\"/></svg>`,\n error: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clip-rule=\"evenodd\"/></svg>`,\n };\n return html `\n ${icons[this.type]}\n <div class=\"content\">\n ${this.title ? html `<div class=\"title\">${this.title}</div>` : ''}\n <div class=\"message\">${this.message}</div>\n </div>\n <button\n class=\"dismiss\"\n type=\"button\"\n aria-label=\"Dismiss\"\n @click=${this.dismiss}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\" clip-rule=\"evenodd\"/>\n </svg>\n </button>\n `;\n }\n};\nKRSnackbar.styles = css `\n :host,\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n position: fixed;\n left: 16px;\n bottom: 24px;\n z-index: 10000;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 12px 14px 16px;\n border-radius: 8px;\n border: 1px solid;\n border-left: 4px solid;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 280px;\n max-width: 400px;\n min-height: 48px;\n animation: slideIn 0.2s ease-out;\n }\n\n :host(.kr-snackbar--has-title) {\n align-items: flex-start;\n }\n\n @keyframes slideIn {\n from {\n opacity: 0;\n transform: translateX(-100%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n\n @keyframes slideOut {\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(-100%);\n }\n }\n\n :host(.kr-snackbar--closing) {\n animation: slideOut 0.15s ease-in forwards;\n }\n\n /* Variants */\n :host(.kr-snackbar--info) {\n background-color: #eff6ff;\n border-color: #bfdbfe;\n border-left-color: #3b82f6;\n }\n\n :host(.kr-snackbar--info) .icon {\n color: #2563eb;\n }\n\n :host(.kr-snackbar--success) {\n background-color: #f0fdf4;\n border-color: #bbf7d0;\n border-left-color: #22c55e;\n }\n\n :host(.kr-snackbar--success) .icon {\n color: #16a34a;\n }\n\n :host(.kr-snackbar--warning) {\n background-color: #fffbeb;\n border-color: #fde68a;\n border-left-color: #f59e0b;\n }\n\n :host(.kr-snackbar--warning) .icon {\n color: #d97706;\n }\n\n :host(.kr-snackbar--error) {\n background-color: #fef2f2;\n border-color: #fecaca;\n border-left-color: #ef4444;\n }\n\n :host(.kr-snackbar--error) .icon {\n color: #dc2626;\n }\n\n .icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n margin-top: 1px;\n }\n\n .content {\n flex: 1;\n min-width: 0;\n }\n\n .title {\n font-size: 14px;\n font-weight: 600;\n color: #000000;\n margin: 0 0 2px 0;\n }\n\n .message {\n font-size: 14px;\n color: #000000;\n margin: 0;\n }\n\n .dismiss {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n background: none;\n border: none;\n border-radius: 4px;\n color: #6b7280;\n cursor: pointer;\n transition: background 0.15s ease, color 0.15s ease;\n }\n\n .dismiss:hover {\n background-color: rgba(0, 0, 0, 0.05);\n color: #374151;\n }\n\n .dismiss:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n `;\n/** Track active snackbars for stacking */\nKRSnackbar.activeSnackbars = [];\n__decorate([\n property({ type: String })\n], KRSnackbar.prototype, \"type\", void 0);\n__decorate([\n property({ type: String })\n], KRSnackbar.prototype, \"title\", void 0);\n__decorate([\n property({ type: String })\n], KRSnackbar.prototype, \"message\", void 0);\n__decorate([\n property({ type: Number })\n], KRSnackbar.prototype, \"duration\", void 0);\nKRSnackbar = KRSnackbar_1 = __decorate([\n customElement('kr-snackbar')\n], KRSnackbar);\nexport { KRSnackbar };\n//# sourceMappingURL=snackbar.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { krBaseCSS } from '../style/base.js';\n/**\n * A tabbed navigation component for switching between content sections.\n *\n * @element kr-tab-group\n *\n * @slot - Default slot for kr-tab children\n *\n * @fires tab-change - Fired when the active tab changes, detail: { activeTabId: string }\n * @fires tab-dismiss - Fired when a dismissible tab is closed, detail: { tabId: string }\n *\n * @example\n * ```html\n * <kr-tab-group active-tab-id=\"settings\">\n * <kr-tab id=\"home\" label=\"Home\">\n * <svg slot=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"16\" height=\"16\">...</svg>\n * <p>Home content here</p>\n * </kr-tab>\n * <kr-tab id=\"settings\" label=\"Settings\" badge=\"3\">\n * <svg slot=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"16\" height=\"16\">...</svg>\n * <p>Settings content here</p>\n * </kr-tab>\n * </kr-tab-group>\n * ```\n */\nlet KRTabGroup = class KRTabGroup extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Whether tabs should stretch to fill the full width evenly\n */\n this.justified = false;\n /**\n * Size of the tabs: 'small' | 'medium' | 'large'\n */\n this.size = 'medium';\n }\n updated(changes) {\n if (changes.has('activeTabId')) {\n this._updateActiveTab();\n }\n }\n firstUpdated() {\n this._updateActiveTab();\n }\n _getTabs() {\n return Array.from(this.querySelectorAll('kr-tab'));\n }\n _updateActiveTab() {\n const tabs = this._getTabs();\n if (tabs.length === 0)\n return;\n if (!this.activeTabId) {\n this.activeTabId = tabs[0]?.id;\n }\n tabs.forEach((tab) => {\n tab.active = tab.id === this.activeTabId;\n });\n this.requestUpdate();\n }\n _handleTabClick(tab) {\n if (tab.disabled)\n return;\n this.activeTabId = tab.id;\n this.dispatchEvent(new CustomEvent('tab-change', {\n detail: { activeTabId: tab.id },\n bubbles: true,\n composed: true,\n }));\n }\n _handleTabDismiss(tab, e) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent('tab-dismiss', {\n detail: { tabId: tab.id },\n bubbles: true,\n composed: true,\n }));\n }\n _handleKeyDown(e) {\n const enabledTabs = this._getTabs().filter((t) => !t.disabled);\n const currentIndex = enabledTabs.findIndex((t) => t.id === this.activeTabId);\n let newIndex = -1;\n switch (e.key) {\n case 'ArrowLeft':\n newIndex = currentIndex > 0 ? currentIndex - 1 : enabledTabs.length - 1;\n break;\n case 'ArrowRight':\n newIndex = currentIndex < enabledTabs.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'Home':\n newIndex = 0;\n break;\n case 'End':\n newIndex = enabledTabs.length - 1;\n break;\n }\n if (newIndex >= 0) {\n e.preventDefault();\n const newTab = enabledTabs[newIndex];\n this.activeTabId = newTab.id;\n this.dispatchEvent(new CustomEvent('tab-change', {\n detail: { activeTabId: newTab.id },\n bubbles: true,\n composed: true,\n }));\n const tabButtons = this.shadowRoot?.querySelectorAll('.label');\n const targetButton = Array.from(tabButtons || []).find((btn) => btn.getAttribute('data-tab-id') === newTab.id);\n targetButton?.focus();\n }\n }\n _renderTabIcon(tab) {\n const iconElement = tab.getIconElement();\n if (!iconElement)\n return nothing;\n // Clone the icon element to render in the header\n const clonedIcon = iconElement.cloneNode(true);\n clonedIcon.removeAttribute('slot');\n return html `<span class=\"label-icon\">${clonedIcon}</span>`;\n }\n render() {\n return html `\n <div class=\"header\" role=\"tablist\" @keydown=${this._handleKeyDown}>\n ${this._getTabs().map((tab) => html `\n <button\n class=${classMap({\n label: true,\n 'label--active': tab.id === this.activeTabId,\n 'label--justified': this.justified,\n })}\n role=\"tab\"\n data-tab-id=${tab.id}\n aria-selected=${tab.id === this.activeTabId}\n aria-controls=${`panel-${tab.id}`}\n tabindex=${tab.id === this.activeTabId ? 0 : -1}\n ?disabled=${tab.disabled}\n @click=${() => this._handleTabClick(tab)}\n >\n ${this._renderTabIcon(tab)}\n <span>${tab.label}</span>\n ${tab.badge ? html `<span class=\"label-badge\" style=${styleMap({ backgroundColor: tab.badgeBackground, color: tab.badgeColor })}>${tab.badge}</span>` : nothing}\n ${tab.dismissible\n ? html `\n <button\n class=\"label-dismiss\"\n type=\"button\"\n aria-label=\"Close tab\"\n @click=${(e) => this._handleTabDismiss(tab, e)}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"12\" height=\"12\"><path fill-rule=\"evenodd\" d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\" clip-rule=\"evenodd\"/></svg>\n </button>\n `\n : nothing}\n </button>\n `)}\n </div>\n <div class=\"content\" role=\"tabpanel\" aria-labelledby=${this.activeTabId || ''}>\n <slot @slotchange=${this._updateActiveTab}></slot>\n </div>\n `;\n }\n};\nKRTabGroup.styles = [\n krBaseCSS,\n css `\n :host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .header {\n height: 44px;\n display: flex;\n flex-shrink: 0;\n align-items: stretch;\n border-bottom: 1px solid #e5e7eb;\n overflow-x: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n\n .header::-webkit-scrollbar {\n display: none;\n }\n\n .label {\n position: relative;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n color: var(--kr-text-muted);\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n transition: color 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;\n white-space: nowrap;\n }\n\n .label:hover:not(:disabled) {\n color: var(--kr-text);\n }\n\n .label:focus-visible {\n outline: 2px solid var(--kr-focus);\n outline-offset: -2px;\n }\n\n .label--active {\n color: var(--kr-primary);\n border-bottom-color: var(--kr-primary);\n }\n\n .label:disabled {\n color: var(--kr-text-disabled);\n cursor: not-allowed;\n }\n\n .label--justified {\n flex: 1;\n justify-content: center;\n }\n\n :host([size=\"small\"]) .label {\n padding: 8px 16px;\n font-size: 13px;\n gap: 6px;\n }\n\n :host([size=\"large\"]) .label {\n padding: 16px 20px;\n font-size: 16px;\n gap: 10px;\n }\n\n .label-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .label-badge {\n font-size: 11px;\n font-weight: 500;\n color: var(--kr-primary-text);\n background-color: var(--kr-primary);\n padding: 2px 8px;\n border-radius: 10px;\n margin-left: 4px;\n }\n\n .label-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-left: 4px;\n padding: 0;\n background: none;\n border: none;\n border-radius: 2px;\n color: var(--kr-text-muted);\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n }\n\n .label-dismiss:hover {\n background-color: var(--kr-border);\n color: var(--kr-text);\n }\n\n .label-dismiss:focus-visible {\n outline: 2px solid var(--kr-focus);\n outline-offset: 2px;\n }\n\n\n .content {\n flex: 1;\n overflow: auto;\n }\n\n /* Default slot styles - kr-tab children show/hide via their own active attribute */\n ::slotted(kr-tab) {\n display: none;\n }\n\n ::slotted(kr-tab[active]) {\n display: block;\n }\n `,\n];\n__decorate([\n property({ type: String, attribute: 'active-tab-id' })\n], KRTabGroup.prototype, \"activeTabId\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTabGroup.prototype, \"justified\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRTabGroup.prototype, \"size\", void 0);\nKRTabGroup = __decorate([\n customElement('kr-tab-group')\n], KRTabGroup);\nexport { KRTabGroup };\n//# sourceMappingURL=tabs.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { krBaseCSS } from '../style/base.js';\n/**\n * A tab for the kr-tab-group component.\n *\n * @element kr-tab\n * @slot - The tab panel content\n * @slot icon - Optional icon to display in the tab header\n */\nlet KRTab = class KRTab extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Unique identifier for the tab\n */\n this.id = '';\n /**\n * Display label for the tab\n */\n this.label = '';\n /**\n * Badge text displayed next to label (e.g. notification count)\n */\n this.badge = '';\n /**\n * Badge background color\n */\n this.badgeBackground = '';\n /**\n * Badge text color\n */\n this.badgeColor = '';\n /**\n * Whether the tab is disabled\n */\n this.disabled = false;\n /**\n * Whether the tab can be dismissed/closed\n */\n this.dismissible = false;\n /**\n * Whether this tab is currently active (set by parent)\n */\n this.active = false;\n }\n /**\n * Gets the icon element from the icon slot (if any)\n */\n getIconElement() {\n return this.querySelector('[slot=\"icon\"]');\n }\n updated() {\n // The parent kr-tab-group renders tab headers by reading properties from its\n // kr-tab children. When those properties change, tell the parent to re-render.\n const tabGroup = this.closest('kr-tab-group');\n if (tabGroup) {\n tabGroup.requestUpdate();\n }\n }\n render() {\n return html `<slot></slot>`;\n }\n};\nKRTab.styles = [\n krBaseCSS,\n css `\n :host {\n display: none;\n }\n\n :host([active]) {\n display: block;\n width: 100%;\n height: 100%;\n }\n `,\n];\n__decorate([\n property({ type: String, reflect: true })\n], KRTab.prototype, \"id\", void 0);\n__decorate([\n property({ type: String })\n], KRTab.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRTab.prototype, \"badge\", void 0);\n__decorate([\n property({ type: String, attribute: 'badge-background' })\n], KRTab.prototype, \"badgeBackground\", void 0);\n__decorate([\n property({ type: String, attribute: 'badge-color' })\n], KRTab.prototype, \"badgeColor\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTab.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTab.prototype, \"dismissible\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], KRTab.prototype, \"active\", void 0);\nKRTab = __decorate([\n customElement('kr-tab')\n], KRTab);\nexport { KRTab };\n//# sourceMappingURL=tab.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { krBaseCSS } from '../../style/base.js';\n/**\n * A select dropdown component that works with native browser forms.\n *\n * Uses ElementInternals for form association, allowing the component\n * to participate in form submission, validation, and reset.\n *\n * @element kr-select-field\n * @slot - The kr-select-option elements\n */\nlet KRSelectField = class KRSelectField extends LitElement {\n constructor() {\n super();\n /**\n * The select label text\n */\n this.label = '';\n /**\n * The input name for form submission\n */\n this.name = '';\n /**\n * The currently selected value\n */\n this.value = '';\n /**\n * Placeholder text when no option is selected\n */\n this.placeholder = 'Select an option';\n /**\n * Whether the select is disabled\n */\n this.disabled = false;\n /**\n * Whether the field is required\n */\n this.required = false;\n /**\n * Whether the field is readonly\n */\n this.readonly = false;\n /**\n * Helper text shown below the select\n */\n this.hint = '';\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._touched = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._handleOutsideClick = (e) => {\n if (!e.composedPath().includes(this)) {\n this._close();\n }\n };\n this._handleKeyDown = (e) => {\n if (!this._isOpen)\n return;\n const options = Array.from(this.querySelectorAll('kr-select-option'));\n switch (e.key) {\n case 'Escape':\n this._close();\n this._triggerElement?.focus();\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (options.some(o => !o.disabled)) {\n let newIndex = this._highlightedIndex + 1;\n while (newIndex < options.length && options[newIndex]?.disabled)\n newIndex++;\n if (newIndex < options.length)\n this._highlightedIndex = newIndex;\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n {\n let newIndex = this._highlightedIndex - 1;\n while (newIndex >= 0 && options[newIndex]?.disabled)\n newIndex--;\n if (newIndex >= 0)\n this._highlightedIndex = newIndex;\n }\n break;\n case 'Enter':\n e.preventDefault();\n if (this._highlightedIndex >= 0 && this._highlightedIndex < options.length) {\n this._selectOption(options[this._highlightedIndex]);\n }\n break;\n }\n };\n this._internals = this.attachInternals();\n }\n // Form-associated custom element callbacks\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n get willValidate() {\n return this._internals.willValidate;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._touched = false;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n document.addEventListener('keydown', this._handleKeyDown);\n this.addEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleOutsideClick);\n document.removeEventListener('keydown', this._handleKeyDown);\n this.removeEventListener('invalid', this._handleInvalid);\n }\n _toggle() {\n if (this.disabled || this.readonly)\n return;\n if (this._isOpen) {\n this._close();\n }\n else {\n this._isOpen = true;\n const options = Array.from(this.querySelectorAll('kr-select-option'));\n this._highlightedIndex = options.findIndex(o => o.value === this.value);\n // Position the fixed dropdown relative to the trigger\n requestAnimationFrame(() => {\n const dropdown = this.shadowRoot?.querySelector('.select-dropdown');\n if (dropdown) {\n const triggerRect = this._triggerElement.getBoundingClientRect();\n const spaceBelow = window.innerHeight - triggerRect.bottom - 4 - 8;\n dropdown.style.top = triggerRect.bottom + 4 + 'px';\n dropdown.style.left = triggerRect.left + 'px';\n dropdown.style.width = triggerRect.width + 'px';\n dropdown.style.maxHeight = spaceBelow + 'px';\n }\n });\n }\n }\n _close() {\n this._isOpen = false;\n this._highlightedIndex = -1;\n }\n _selectOption(option) {\n if (option.disabled)\n return;\n this.value = option.value;\n this._internals.setFormValue(this.value);\n this._updateValidity();\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n this._close();\n this._triggerElement?.focus();\n }\n _handleBlur() {\n this._touched = true;\n this._updateValidity();\n }\n _updateValidity() {\n if (this.required && !this.value) {\n this._internals.setValidity({ valueMissing: true }, 'Please select an option', this._triggerElement);\n }\n else {\n this._internals.setValidity({});\n }\n }\n render() {\n const options = Array.from(this.querySelectorAll('kr-select-option'));\n const selectedLabel = options.find(o => o.value === this.value)?.label;\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label>\n ${this.label}\n ${this.required ? html `<span class=\"required\" aria-hidden=\"true\">*</span>` : ''}\n </label>\n `\n : nothing}\n <div class=\"select-wrapper\">\n <button\n class=${classMap({\n 'select-trigger': true,\n 'select-trigger--open': this._isOpen,\n 'select-trigger--invalid': this._touched && this.required && !this.value,\n })}\n type=\"button\"\n ?disabled=${this.disabled}\n aria-haspopup=\"listbox\"\n aria-expanded=${this._isOpen}\n @click=${this._toggle}\n @blur=${this._handleBlur}\n >\n <span class=${classMap({\n 'select-value': true,\n 'select-placeholder': !selectedLabel\n })}>\n ${selectedLabel || this.placeholder}\n </span>\n <svg\n class=${classMap({\n 'chevron-icon': true,\n 'select-icon': true,\n 'select-icon--open': this._isOpen\n })}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6z\"/>\n </svg>\n </button>\n\n <div class=${classMap({\n 'select-dropdown': true,\n 'hidden': !this._isOpen\n })} role=\"listbox\">\n <div class=\"select-options\">\n ${options.length === 0\n ? html `<div class=\"select-empty\">No options available</div>`\n : options.map((option, idx) => {\n const isSelected = option.value === this.value;\n return html `\n <div\n class=${classMap({\n 'select-option': true,\n 'select-option--selected': isSelected,\n 'select-option--disabled': option.disabled,\n 'select-option--highlighted': idx === this._highlightedIndex,\n })}\n role=\"option\"\n aria-selected=${isSelected}\n @click=${() => this._selectOption(option)}\n @mouseenter=${() => (this._highlightedIndex = idx)}\n >\n ${option.label}\n </div>\n `;\n })}\n </div>\n </div>\n </div>\n ${this._touched && this.required && !this.value\n ? html `<div class=\"validation-message\">Please select an option</div>`\n : this.hint\n ? html `<div class=\"hint\">${this.hint}</div>`\n : ''}\n </div>\n <div class=\"options-slot\">\n <slot @slotchange=${() => this.requestUpdate()}></slot>\n </div>\n `;\n }\n // Public methods for programmatic control\n focus() {\n this._triggerElement?.focus();\n }\n blur() {\n this._triggerElement?.blur();\n }\n};\nKRSelectField.styles = [krBaseCSS, css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-select-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n .select-wrapper {\n position: relative;\n }\n\n .select-trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: var(--kr-select-padding, 10px 12px);\n font-family: inherit;\n font-size: 14px;\n line-height: 1.5;\n color: #000000;\n background-color: var(--kr-select-bg, #fff);\n border: 1px solid var(--kr-select-border-color, #0000003d);\n border-radius: 8px;\n cursor: pointer;\n transition: border-color 0.2s, box-shadow 0.2s;\n text-align: left;\n }\n\n .select-trigger:hover:not(:disabled) {\n border-color: var(--kr-select-hover-border-color, #9ca3af);\n }\n\n .select-trigger:focus {\n outline: none;\n border-color: var(--kr-primary);\n box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);\n }\n\n .select-trigger:disabled {\n background-color: var(--kr-select-disabled-bg, #f3f4f6);\n color: var(--kr-select-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n .select-trigger--invalid {\n border-color: var(--kr-select-error-border-color, #ef4444);\n }\n\n .select-trigger--invalid:focus {\n border-color: var(--kr-select-error-border-color, #ef4444);\n box-shadow: 0 0 0 3px var(--kr-select-error-ring-color, rgba(239, 68, 68, 0.1));\n }\n\n .select-trigger--open {\n border-color: var(--kr-primary);\n box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);\n }\n\n .select-value {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .select-placeholder {\n color: #9ca3af;\n }\n\n .select-icon {\n flex-shrink: 0;\n margin-left: 0.5rem;\n color: #6b7280;\n transition: transform 0.2s;\n }\n\n .select-icon--open {\n transform: rotate(180deg);\n }\n\n .select-dropdown {\n position: fixed;\n z-index: 10000;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n padding: 8px 0;\n overflow-y: auto;\n }\n\n .select-options {\n padding: 0;\n }\n\n .select-option {\n display: flex;\n align-items: center;\n min-height: 36px;\n padding: 8px 16px;\n font-size: 14px;\n color: #000000;\n cursor: pointer;\n border-radius: 4px;\n transition: background-color 0.15s;\n }\n\n .select-option:hover:not(.select-option--disabled) {\n background-color: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .select-option--selected {\n background-color: rgba(22, 48, 82, 0.08);\n color: var(--kr-primary);\n }\n\n .select-option--selected:hover {\n background-color: rgba(22, 48, 82, 0.12);\n }\n\n .select-option--disabled {\n color: var(--kr-select-option-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n .select-option--highlighted {\n background-color: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .select-empty {\n padding: 1rem;\n text-align: center;\n color: var(--kr-select-empty-color, #6b7280);\n font-size: 14px;\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-select-helper-color, #6b7280);\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-select-error-color, #ef4444);\n }\n\n .hidden {\n display: none;\n }\n\n .chevron-icon {\n width: 20px;\n height: 20px;\n }\n\n /* Hide the slot - options are rendered in dropdown */\n .options-slot {\n display: none;\n }\n `];\n// Enable form association\nKRSelectField.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRSelectField.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRSelectField.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRSelectField.prototype, \"value\", void 0);\n__decorate([\n property({ type: String })\n], KRSelectField.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRSelectField.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRSelectField.prototype, \"required\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRSelectField.prototype, \"readonly\", void 0);\n__decorate([\n property({ type: String })\n], KRSelectField.prototype, \"hint\", void 0);\n__decorate([\n state()\n], KRSelectField.prototype, \"_isOpen\", void 0);\n__decorate([\n state()\n], KRSelectField.prototype, \"_highlightedIndex\", void 0);\n__decorate([\n state()\n], KRSelectField.prototype, \"_touched\", void 0);\n__decorate([\n query('.select-trigger')\n], KRSelectField.prototype, \"_triggerElement\", void 0);\nKRSelectField = __decorate([\n customElement('kr-select-field')\n], KRSelectField);\nexport { KRSelectField };\n//# sourceMappingURL=select-field.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * An option for the kr-select-field component.\n *\n * @element kr-select-option\n * @slot - The option label content\n */\nlet KRSelectOption = class KRSelectOption extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The option value\n */\n this.value = '';\n /**\n * Whether the option is disabled\n */\n this.disabled = false;\n }\n /** Gets the label text from the slot */\n get label() {\n return this.textContent?.trim() || '';\n }\n render() {\n return html `<slot></slot>`;\n }\n};\nKRSelectOption.styles = css `\n :host {\n display: none;\n }\n `;\n__decorate([\n property({ type: String })\n], KRSelectOption.prototype, \"value\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRSelectOption.prototype, \"disabled\", void 0);\nKRSelectOption = __decorate([\n customElement('kr-select-option')\n], KRSelectOption);\nexport { KRSelectOption };\n//# sourceMappingURL=select-option.js.map","/** Data-driven operator metadata map */\nexport const KR_OPERATORS = {\n equals: { key: 'equals', type: 'comparison', dataTypes: ['string', 'number', 'date', 'boolean'], label: 'Equals' },\n n_equals: { key: 'n_equals', type: 'comparison', dataTypes: ['string', 'number', 'date', 'boolean'], label: \"Doesn't equal\" },\n contains: { key: 'contains', type: 'comparison', dataTypes: ['string'], label: 'Contains' },\n n_contains: { key: 'n_contains', type: 'comparison', dataTypes: ['string'], label: \"Doesn't contain\" },\n starts_with: { key: 'starts_with', type: 'comparison', dataTypes: ['string'], label: 'Starts with' },\n ends_with: { key: 'ends_with', type: 'comparison', dataTypes: ['string'], label: 'Ends with' },\n less_than: { key: 'less_than', type: 'comparison', dataTypes: ['number', 'date'], label: 'Less than' },\n less_than_equal: { key: 'less_than_equal', type: 'comparison', dataTypes: ['number', 'date'], label: 'Less than or equal' },\n greater_than: { key: 'greater_than', type: 'comparison', dataTypes: ['number', 'date'], label: 'Greater than' },\n greater_than_equal: { key: 'greater_than_equal', type: 'comparison', dataTypes: ['number', 'date'], label: 'Greater than or equal' },\n between: { key: 'between', type: 'range', dataTypes: ['number', 'date'], label: 'Between' },\n in: { key: 'in', type: 'list', dataTypes: ['string', 'number'], label: 'In' },\n n_in: { key: 'n_in', type: 'list', dataTypes: ['string', 'number', 'date', 'boolean'], label: 'Not In' },\n empty: { key: 'empty', type: 'nil', dataTypes: ['string', 'number', 'date', 'boolean'], label: 'Empty' },\n n_empty: { key: 'n_empty', type: 'nil', dataTypes: ['string', 'number', 'date', 'boolean'], label: 'Not empty' },\n};\n/** Returns the list of operators available for a given column type */\nexport function getOperatorsForType(columnType) {\n const results = [];\n for (const op of Object.values(KR_OPERATORS)) {\n if (op.dataTypes.includes(columnType)) {\n results.push({\n key: op.key,\n label: op.label\n });\n }\n }\n return results;\n}\n// === Solr Utilities ===\nconst SOLR_RESERVED_CHARS = [\n '\"', '+', '-', '&&', '||', '!', '(', ')', '{',\n '}', '[', ']', '^', '~', '*', '?', ':'\n];\nconst SOLR_RESERVED_CHARS_REPLACEMENT = [\n '\\\\\"', '\\\\+', '\\\\-', '\\\\&\\\\&', '\\\\|\\\\|', '\\\\!', '\\\\(', '\\\\)', '\\\\{',\n '\\\\}', '\\\\[', '\\\\]', '\\\\^', '\\\\~', '\\\\*', '\\\\?', '\\\\:'\n];\nfunction escapeRegex(str) {\n if (typeof str !== 'string') {\n return str;\n }\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n/** Converts a value to a Solr term */\nexport function termify(value, exact = true) {\n if (value === true || value === false) {\n return value.toString();\n }\n if (value === null) {\n return `(*:* NOT *)`;\n }\n if (typeof value === 'number') {\n return value.toString();\n }\n if (typeof value === 'string') {\n SOLR_RESERVED_CHARS.forEach((char, i) => {\n value = value.replace(new RegExp(`${escapeRegex(char)}`, 'g'), SOLR_RESERVED_CHARS_REPLACEMENT[i]);\n });\n if (exact) {\n return `\"${value}\"`;\n }\n return value.replace(/ /g, `\\\\ `);\n }\n return value;\n}\n/** Converts a Date to a Solr term */\nfunction termifyDate(value, endOfTheDay = false) {\n const newTime = new Date(value);\n newTime.setMinutes(newTime.getMinutes() - newTime.getTimezoneOffset());\n if (endOfTheDay) {\n newTime.setUTCHours(23);\n newTime.setUTCMinutes(59);\n newTime.setUTCSeconds(59);\n newTime.setUTCMilliseconds(999);\n }\n return newTime.toISOString().replace(/:/g, '\\\\:');\n}\n/** Creates a Solr date range expression from a Date or range of Dates */\nfunction createSolrDateRange(value, specificities) {\n let startDate;\n let endDate;\n let startSpecificity;\n let endSpecificity;\n if (value && 'start' in value && 'end' in value) {\n startDate = new Date(value.start);\n endDate = new Date(value.end);\n startSpecificity = specificities[0];\n endSpecificity = specificities[1];\n }\n else if (value instanceof Date) {\n startDate = new Date(value);\n endDate = new Date(value);\n startSpecificity = specificities[0];\n endSpecificity = specificities[0];\n }\n else {\n return '[* TO *]';\n }\n if (startSpecificity === 'year') {\n startDate.setUTCMonth(0, 1);\n startDate.setUTCHours(0, 0, 0, 0);\n }\n else if (startSpecificity === 'month') {\n startDate.setUTCDate(1);\n startDate.setUTCHours(0, 0, 0, 0);\n }\n else if (startSpecificity === 'day') {\n startDate.setUTCHours(0, 0, 0, 0);\n }\n else if (startSpecificity === 'time') {\n startDate.setUTCSeconds(0, 0);\n }\n if (endSpecificity === 'year') {\n endDate.setUTCMonth(11, 31);\n endDate.setUTCHours(23, 59, 59, 999);\n }\n else if (endSpecificity === 'month') {\n endDate.setUTCMonth(endDate.getUTCMonth() + 1);\n endDate.setUTCDate(0);\n endDate.setUTCHours(23, 59, 59, 999);\n }\n else if (endSpecificity === 'day') {\n endDate.setUTCHours(23, 59, 59, 999);\n }\n else if (endSpecificity === 'time') {\n endDate.setUTCSeconds(59, 999);\n }\n return `[${startDate.toISOString().replace(/:/g, '\\\\:')} TO ${endDate.toISOString().replace(/:/g, '\\\\:')}]`;\n}\n/** Creates a DB date range array from a Date or range of Dates, expanding based on specificity */\nfunction createDbDateRange(value, specificities) {\n let startDate;\n let endDate;\n let startSpecificity;\n let endSpecificity;\n if (value && 'start' in value && 'end' in value) {\n startDate = new Date(value.start);\n endDate = new Date(value.end);\n startSpecificity = specificities[0];\n endSpecificity = specificities[1];\n }\n else {\n startDate = new Date(value);\n endDate = new Date(value);\n startSpecificity = specificities[0];\n endSpecificity = specificities[0];\n }\n let start;\n let end;\n if (startSpecificity === 'year') {\n startDate.setUTCMonth(0, 1);\n startDate.setUTCHours(0, 0, 0, 0);\n start = startDate;\n }\n else if (startSpecificity === 'month') {\n startDate.setUTCDate(1);\n startDate.setUTCHours(0, 0, 0, 0);\n start = startDate;\n }\n else if (startSpecificity === 'day') {\n startDate.setUTCHours(0, 0, 0, 0);\n start = startDate;\n }\n else if (startSpecificity === 'time') {\n startDate.setUTCSeconds(0, 0);\n start = startDate;\n }\n else {\n start = startDate;\n }\n if (endSpecificity === 'year') {\n endDate.setUTCMonth(11, 31);\n endDate.setUTCHours(23, 59, 59, 999);\n end = endDate;\n }\n else if (endSpecificity === 'month') {\n endDate.setUTCMonth(endDate.getUTCMonth() + 1);\n endDate.setUTCDate(0);\n endDate.setUTCHours(23, 59, 59, 999);\n end = endDate;\n }\n else if (endSpecificity === 'day') {\n endDate.setUTCHours(23, 59, 59, 999);\n end = endDate;\n }\n else if (endSpecificity === 'time') {\n endDate.setUTCSeconds(59, 999);\n end = endDate;\n }\n else {\n end = endDate;\n }\n return [\n start.toISOString().replace(/\\..+/, '').replace('T', ' '),\n end.toISOString().replace(/\\..+/, '').replace('T', ' '),\n ];\n}\n/** Determines the date specificity from the text format */\nfunction getDateSpecificity(input) {\n input = input.trim();\n // MM/dd/yy, M/d/yy (2-digit year)\n if (/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{2})$/.test(input)) {\n return 'day';\n }\n // MM/dd/yyyy, M/d/yyyy (4-digit year)\n if (/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/.test(input)) {\n return 'day';\n }\n // MM/dd/yyyy, t — date with time (4-digit year only)\n if (/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4}),?\\s+(\\d{1,2}):(\\d{2})\\s*(AM|PM)?$/i.test(input)) {\n return 'time';\n }\n // \"Month DD, YYYY, time\" with optional weekday\n if (/^(?:[A-Za-z]+,\\s+)?([A-Za-z]+)\\s+(\\d{1,2}),?\\s+(\\d{4}),?\\s+(\\d{1,2}):(\\d{2})\\s*(AM|PM)?$/i.test(input)) {\n return 'time';\n }\n // \"Month DD, YYYY\" with optional weekday\n if (/^(?:[A-Za-z]+,\\s+)?([A-Za-z]+)\\s+(\\d{1,2}),?\\s+(\\d{4})$/.test(input)) {\n return 'day';\n }\n // yy (2-digit year)\n if (/^(\\d{2})$/.test(input)) {\n return 'year';\n }\n // yyyy (4-digit year)\n if (/^(\\d{4})$/.test(input)) {\n return 'year';\n }\n // \"MMM yyyy\" or \"MMMM yyyy\" — \"Aug 2015\", \"August 2015\"\n if (/^([A-Za-z]+)\\s+(\\d{4})$/.test(input)) {\n return 'month';\n }\n return null;\n}\nexport class KRQuery {\n constructor() {\n this.field = '';\n this.operator = 'equals';\n this.value = null;\n this.kql = '';\n this.text = '';\n this.type = '';\n this.specificity = [];\n }\n // --------------------------------------------------------------------------\n // Public Methods\n // --------------------------------------------------------------------------\n /** Parse a KQL text string and populate operator/value/values */\n setKql(kql) {\n this.kql = kql.trim();\n this.text = '';\n this.specificity = [];\n this.value = null;\n if (!this.kql) {\n if (this.type === 'string') {\n this.operator = 'contains';\n }\n else {\n this.operator = 'equals';\n }\n return;\n }\n if (kql.startsWith('=')) {\n this.operator = 'equals';\n this.text = kql.substring(1).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('!=')) {\n this.operator = 'n_equals';\n this.text = kql.substring(2).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('~') && this.type === 'string') {\n this.operator = 'contains';\n this.text = kql.substring(1).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('!~') && this.type === 'string') {\n this.operator = 'n_contains';\n this.text = kql.substring(2).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.endsWith('*') && this.type === 'string') {\n this.operator = 'starts_with';\n this.text = kql.substring(0, kql.length - 1);\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('*') && this.type === 'string') {\n this.operator = 'ends_with';\n this.text = kql.substring(1);\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql === 'EMPTY') {\n this.operator = 'empty';\n this.value = null;\n this.specificity = [];\n }\n else if (kql === 'NOT EMPTY') {\n this.operator = 'n_empty';\n this.value = null;\n this.specificity = [];\n }\n else if (kql.startsWith('<=')) {\n this.operator = 'less_than_equal';\n this.text = kql.substring(2).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('<')) {\n this.operator = 'less_than';\n this.text = kql.substring(1).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('>=')) {\n this.operator = 'greater_than_equal';\n this.text = kql.substring(2).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('>')) {\n this.operator = 'greater_than';\n this.text = kql.substring(1).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('[') && kql.endsWith(']') && kql.indexOf(' TO ') > -1) {\n this.operator = 'between';\n const toIndex = kql.indexOf(' TO ');\n const rawStart = kql.substring(1, toIndex).trim();\n const rawEnd = kql.substring(toIndex + 4, kql.length - 1).trim();\n this.text = `${rawStart} - ${rawEnd}`;\n this.value = {\n start: this._parse(rawStart),\n end: this._parse(rawEnd)\n };\n this.specificity = [getDateSpecificity(rawStart), getDateSpecificity(rawEnd)];\n }\n else if (kql.startsWith('!(') && kql.endsWith(')')) {\n this.operator = 'n_in';\n this.text = kql.substring(2, kql.length - 1).trim();\n this.value = this.text.split(',')\n .map(v => v.trim())\n .map(v => this._parse(v));\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('(') && kql.endsWith(')')) {\n this.operator = 'in';\n this.text = kql.substring(1, kql.length - 1).trim();\n this.value = this.text.split(',')\n .map(v => v.trim())\n .map(v => this._parse(v));\n this.specificity = [getDateSpecificity(this.text)];\n }\n else {\n if (this.type === 'date') {\n this.operator = 'equals';\n this.text = this.kql;\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (this.type === 'boolean') {\n this.operator = 'equals';\n this.text = this.kql;\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (this.type === 'number') {\n this.operator = 'equals';\n this.text = this.kql;\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else {\n this.operator = 'contains';\n this.text = kql;\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n }\n }\n setOperator(operator) {\n // Clear value/text when switching away from operators\n // whose values are incompatible with other operators.\n if (this.operator === 'empty' || this.operator === 'n_empty') {\n this.value = null;\n this.text = '';\n }\n else if (this.operator === 'between') {\n this.value = null;\n this.text = '';\n }\n else if (this.operator === 'in' || this.operator === 'n_in') {\n this.value = [];\n this.text = '';\n }\n this.operator = operator;\n // Set up initial value/text for the new operator.\n if (this.operator === 'empty') {\n this.value = 'EMPTY';\n this.text = 'EMPTY';\n }\n else if (this.operator === 'n_empty') {\n this.value = 'NOT EMPTY';\n this.text = 'NOT EMPTY';\n }\n else if (this.operator === 'between') {\n this.value = null;\n this.text = '';\n }\n else if (this.operator === 'in' || this.operator === 'n_in') {\n this.value = [];\n this.text = '';\n }\n this._buildKql();\n }\n setValue(value, specificity) {\n this.value = value;\n if (specificity) {\n this.specificity = [specificity];\n }\n else if (value instanceof Date) {\n this.specificity = ['time'];\n }\n else {\n this.specificity = [];\n }\n this._buildText();\n this._buildKql();\n }\n setStart(value, specificity) {\n if (this.value?.start === undefined) {\n this.value = { start: null, end: null };\n }\n this.value.start = value;\n if (specificity) {\n this.specificity[0] = specificity;\n }\n else if (value instanceof Date) {\n this.specificity[0] = 'time';\n }\n this._buildText();\n this._buildKql();\n }\n setEnd(value, specificity) {\n if (this.value?.end === undefined) {\n this.value = { start: null, end: null };\n }\n this.value.end = value;\n if (specificity) {\n this.specificity[1] = specificity;\n }\n else if (value instanceof Date) {\n this.specificity[1] = 'time';\n }\n this._buildText();\n this._buildKql();\n }\n clear() {\n if (this.type === 'string') {\n this.operator = 'contains';\n }\n else {\n this.operator = 'equals';\n }\n this.value = null;\n this.kql = '';\n this.text = '';\n this.specificity = [];\n }\n isEmpty() {\n if (this.operator === 'empty' || this.operator === 'n_empty') {\n return !this.text;\n }\n if (this.operator === 'between') {\n return !this.value?.start && !this.value?.end;\n }\n if (this.operator === 'in' || this.operator === 'n_in') {\n return !this.value?.length;\n }\n return this.value === undefined || this.value === null || this.value === '';\n }\n /** Returns true if the value array contains the given value. Only applies to 'in' and 'n_in' operators. */\n has(val) {\n if ((this.operator !== 'in' && this.operator !== 'n_in') || !Array.isArray(this.value)) {\n return false;\n }\n // Bucket values from Solr arrive as strings (\"true\"/\"false\") but\n // the value array stores actual booleans, so coerce before comparing.\n if (this.type === 'boolean' && typeof val === 'string') {\n if (val === 'true') {\n val = true;\n }\n else if (val === 'false') {\n val = false;\n }\n }\n return this.value.indexOf(val) >= 0;\n }\n /** Adds or removes a value from the 'in' or 'n_in' list and rebuilds text/kql. */\n toggle(val) {\n if (this.operator !== 'in' && this.operator !== 'n_in') {\n this.setOperator('in');\n }\n // Bucket values from Solr arrive as strings (\"true\"/\"false\") —\n // coerce to actual booleans so isValid() and toSolrData() work correctly.\n if (this.type === 'boolean' && typeof val === 'string') {\n if (val === 'true') {\n val = true;\n }\n else if (val === 'false') {\n val = false;\n }\n }\n const index = this.value.indexOf(val);\n if (index >= 0) {\n this.value.splice(index, 1);\n }\n else {\n this.value.push(val);\n }\n this._buildText();\n this._buildKql();\n }\n isValid() {\n if (!this.kql) {\n return true;\n }\n if (!this.field) {\n return false;\n }\n if (!this.operator) {\n return false;\n }\n if (this.operator === 'empty') {\n return true;\n }\n if (this.operator === 'n_empty') {\n return true;\n }\n // For 'in'/'n_in' operator, valid as long as there's at least one value (including null for empty buckets)\n if (this.operator === 'in' || this.operator === 'n_in') {\n return Array.isArray(this.value) && this.value.length > 0;\n }\n if (this.type === 'date') {\n if (this.operator === 'between') {\n return this.value?.start instanceof Date\n && this.value?.end instanceof Date\n && !isNaN(this.value.start.getTime())\n && !isNaN(this.value.end.getTime());\n }\n return this.value instanceof Date && !isNaN(this.value.getTime());\n }\n if (this.type === 'number') {\n if (this.operator === 'between') {\n return typeof this.value?.start === 'number' && typeof this.value?.end === 'number';\n }\n return typeof this.value === 'number';\n }\n if (this.type === 'boolean') {\n return typeof this.value === 'boolean';\n }\n return typeof this.value === 'string' && !!this.value.trim().length;\n }\n /** Converts this filter to a Solr filter field object, or null if invalid */\n toSolrData() {\n const data = {\n boost: null,\n fuzzy: null,\n not: false,\n name: null,\n operation: null,\n tagged: false,\n value: null\n };\n data.name = this.field;\n switch (this.operator) {\n case 'equals':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = createSolrDateRange(this.value, this.specificity);\n }\n else {\n data.operation = 'IS';\n data.value = this.value;\n }\n break;\n case 'n_equals':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.not = true;\n data.value = createSolrDateRange(this.value, this.specificity);\n }\n else {\n data.operation = 'IS';\n data.not = true;\n data.value = this.value;\n }\n break;\n case 'contains':\n data.operation = 'EXPRESSION';\n data.value = `*${termify(this.value, false)}*`;\n break;\n case 'n_contains':\n data.operation = 'EXPRESSION';\n data.not = true;\n data.value = `*${termify(this.value, false)}*`;\n break;\n case 'starts_with':\n data.operation = 'EXPRESSION';\n data.value = `${termify(this.value, false)}*`;\n break;\n case 'ends_with':\n data.operation = 'EXPRESSION';\n data.value = `*${termify(this.value, false)}`;\n break;\n case 'empty':\n data.operation = 'EXPRESSION';\n data.not = true;\n data.value = '[* TO *]';\n break;\n case 'n_empty':\n data.operation = 'EXPRESSION';\n data.value = '[* TO *]';\n break;\n case 'less_than':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = `[* TO ${termifyDate(this.value)}}`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = `[* TO ${termify(this.value, true)}}`;\n }\n break;\n case 'less_than_equal':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = `[* TO ${termifyDate(this.value, true)}]`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = `[* TO ${termify(this.value, true)}]`;\n }\n break;\n case 'greater_than':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = `{${termifyDate(this.value, true)} TO *]`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = `{${termify(this.value, true)} TO *]`;\n }\n break;\n case 'greater_than_equal':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = `[${termifyDate(this.value)} TO *]`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = `[${termify(this.value, true)} TO *]`;\n }\n break;\n case 'between':\n if (this.value?.start instanceof Date && this.value?.end instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = createSolrDateRange(this.value, this.specificity);\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = `[${this.value.start} TO ${this.value.end}]`;\n }\n break;\n case 'in':\n if (Array.isArray(this.value) && this.value.length > 0) {\n data.operation = 'EXPRESSION';\n data.value = `(${this.value.map((v) => termify(v, true)).join(' OR ')})`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = termify(this.value, true);\n }\n break;\n case 'n_in':\n if (Array.isArray(this.value) && this.value.length > 0) {\n data.operation = 'EXPRESSION';\n data.not = true;\n data.value = `(${this.value.map((v) => termify(v, true)).join(' OR ')})`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.not = true;\n data.value = termify(this.value, true);\n }\n break;\n default:\n data.operation = 'EXPRESSION';\n data.value = termify(this.value, true);\n }\n return data;\n }\n /** Converts this filter to a DB filter field object, or null if invalid */\n toDbParams() {\n const params = {\n boost: null,\n fuzzy: null,\n not: false,\n name: null,\n operation: null,\n tagged: false,\n value: null,\n values: null\n };\n params.name = this.field;\n switch (this.operator) {\n case 'equals':\n if (this.type === 'date') {\n params.operation = 'BETWEEN';\n params.values = createDbDateRange(this.value, this.specificity);\n }\n else {\n params.operation = 'IS';\n params.value = this.value;\n }\n break;\n case 'n_equals':\n if (this.type === 'date') {\n params.operation = 'BETWEEN';\n params.not = true;\n params.values = createDbDateRange(this.value, this.specificity);\n }\n else {\n params.operation = 'IS';\n params.value = this.value;\n params.not = true;\n }\n break;\n case 'contains':\n params.operation = 'CONTAINS';\n params.value = this.value;\n break;\n case 'n_contains':\n params.operation = 'CONTAINS';\n params.value = this.value;\n params.not = true;\n break;\n case 'starts_with':\n params.operation = 'STARTS_WITH';\n params.value = this.value;\n break;\n case 'ends_with':\n params.operation = 'ENDS_WITH';\n params.value = this.value;\n break;\n case 'empty':\n params.operation = 'IS_BLANK';\n break;\n case 'n_empty':\n params.operation = 'IS_NOT_BLANK';\n break;\n case 'less_than':\n params.operation = 'LESS_THAN';\n params.value = this.value;\n break;\n case 'less_than_equal':\n params.operation = 'LESS_THAN_EQUAL';\n params.value = this.value;\n break;\n case 'greater_than':\n params.operation = 'GREATER_THAN';\n params.value = this.value;\n break;\n case 'greater_than_equal':\n params.operation = 'GREATER_THAN_EQUAL';\n params.value = this.value;\n break;\n case 'between':\n params.operation = 'BETWEEN';\n if (this.type === 'date') {\n params.values = createDbDateRange(this.value, this.specificity);\n }\n else {\n params.values = [this.value.start, this.value.end];\n }\n break;\n case 'in':\n params.operation = 'IN';\n params.values = this.value ?? [];\n break;\n case 'n_in':\n params.operation = 'IN';\n params.not = true;\n params.values = this.value ?? [];\n break;\n default:\n throw Error(`${this.operator} operator not supported by db params.`);\n }\n return params;\n }\n // --------------------------------------------------------------------------\n // Private Methods\n // --------------------------------------------------------------------------\n _buildText() {\n if (this.isEmpty()) {\n this.text = '';\n return;\n }\n if (this.operator === 'between') {\n this.text = `${this._format(this.value?.start)} - ${this._format(this.value?.end)}`;\n }\n else if (this.operator === 'in' || this.operator === 'n_in') {\n this.text = this.value.map((v) => this._format(v)).join(',');\n }\n else {\n this.text = this._format(this.value);\n }\n }\n _format(value) {\n if (value instanceof Date && !isNaN(value.getTime())) {\n const month = String(value.getUTCMonth() + 1).padStart(2, '0');\n const day = String(value.getUTCDate()).padStart(2, '0');\n const year = value.getUTCFullYear();\n return `${month}/${day}/${year}`;\n }\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n return String(value ?? '');\n }\n /** Parse a text value according to this query's type */\n _parse(text) {\n if (typeof text === 'undefined' || text === null || text === '') {\n return null;\n }\n if (this.type) {\n switch (this.type) {\n case 'boolean': {\n const lcInput = text.toString().toLowerCase();\n if (text === true) {\n return true;\n }\n if (text === false) {\n return false;\n }\n if (lcInput === 'yes') {\n return true;\n }\n if (lcInput === 'no') {\n return false;\n }\n if (lcInput === '1') {\n return true;\n }\n if (lcInput === '0') {\n return false;\n }\n return null;\n }\n case 'date':\n return this._parseDate(text);\n case 'number': {\n const num = Number(text.toString().replace(/[$,]+/g, ''));\n if (isNaN(num)) {\n return null;\n }\n return num;\n }\n default:\n return text.toString();\n }\n }\n return text;\n }\n /** Parse a date string into a UTC Date */\n _parseDate(input) {\n if (typeof input === 'undefined' || input === null || input === '') {\n return null;\n }\n const months = {\n jan: 0,\n january: 0,\n feb: 1,\n february: 1,\n mar: 2,\n march: 2,\n apr: 3,\n april: 3,\n may: 4,\n jun: 5,\n june: 5,\n jul: 6,\n july: 6,\n aug: 7,\n august: 7,\n sep: 8,\n september: 8,\n oct: 9,\n october: 9,\n nov: 10,\n november: 10,\n dec: 11,\n december: 11\n };\n let m;\n // MM/dd/yy, M/d/yy (2-digit year)\n m = input.match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{2})$/);\n if (m) {\n return new Date(Date.UTC(2000 + parseInt(m[3]), parseInt(m[1]) - 1, parseInt(m[2])));\n }\n // MM/dd/yyyy, M/d/yyyy (4-digit year)\n m = input.match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/);\n if (m) {\n return new Date(Date.UTC(parseInt(m[3]), parseInt(m[1]) - 1, parseInt(m[2])));\n }\n // MM/dd/yyyy, t — date with time (4-digit year only, matching NGX)\n m = input.match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4}),?\\s+(\\d{1,2}):(\\d{2})\\s*(AM|PM)?$/i);\n if (m) {\n let hour = parseInt(m[4]);\n if (m[6]) {\n if (m[6].toUpperCase() === 'PM' && hour !== 12) {\n hour += 12;\n }\n if (m[6].toUpperCase() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n return new Date(Date.UTC(parseInt(m[3]), parseInt(m[1]) - 1, parseInt(m[2]), hour, parseInt(m[5])));\n }\n // \"Month DD, YYYY, time\" with optional weekday\n // Handles: \"Oct 14, 1983, 9:32 AM\", \"October 14, 1983, 9:32 AM\", \"Tuesday, October 14, 1983, 9:32 AM\"\n m = input.match(/^(?:[A-Za-z]+,\\s+)?([A-Za-z]+)\\s+(\\d{1,2}),?\\s+(\\d{4}),?\\s+(\\d{1,2}):(\\d{2})\\s*(AM|PM)?$/i);\n if (m) {\n const month = months[m[1].toLowerCase()];\n if (month !== undefined) {\n let hour = parseInt(m[4]);\n if (m[6]) {\n if (m[6].toUpperCase() === 'PM' && hour !== 12) {\n hour += 12;\n }\n if (m[6].toUpperCase() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n return new Date(Date.UTC(parseInt(m[3]), month, parseInt(m[2]), hour, parseInt(m[5])));\n }\n }\n // \"Month DD, YYYY\" with optional weekday\n // Handles: \"Oct 14, 1983\", \"October 14, 1983\", \"Tuesday, October 14, 1983\"\n m = input.match(/^(?:[A-Za-z]+,\\s+)?([A-Za-z]+)\\s+(\\d{1,2}),?\\s+(\\d{4})$/);\n if (m) {\n const month = months[m[1].toLowerCase()];\n if (month !== undefined) {\n return new Date(Date.UTC(parseInt(m[3]), month, parseInt(m[2])));\n }\n }\n // yy (2-digit year)\n m = input.match(/^(\\d{2})$/);\n if (m) {\n return new Date(Date.UTC(2000 + parseInt(m[1]), 0, 1));\n }\n // yyyy (4-digit year)\n m = input.match(/^(\\d{4})$/);\n if (m) {\n return new Date(Date.UTC(parseInt(m[1]), 0, 1));\n }\n // \"MMM yyyy\" or \"MMMM yyyy\" — \"Aug 2015\", \"August 2015\"\n m = input.match(/^([A-Za-z]+)\\s+(\\d{4})$/);\n if (m) {\n const month = months[m[1].toLowerCase()];\n if (month !== undefined) {\n return new Date(Date.UTC(parseInt(m[2]), month, 1));\n }\n }\n return null;\n }\n /** Build a KQL display string from current operator/value state */\n _buildKql() {\n if (this.isEmpty()) {\n this.kql = '';\n return;\n }\n switch (this.operator) {\n case 'equals':\n this.kql = `= ${this.text}`;\n break;\n case 'n_equals':\n this.kql = `!= ${this.text}`;\n break;\n case 'contains':\n this.kql = `~ ${this.text}`;\n break;\n case 'n_contains':\n this.kql = `!~ ${this.text}`;\n break;\n case 'starts_with':\n this.kql = `${this.text}*`;\n break;\n case 'ends_with':\n this.kql = `*${this.text}`;\n break;\n case 'empty':\n this.kql = 'EMPTY';\n break;\n case 'n_empty':\n this.kql = 'NOT EMPTY';\n break;\n case 'less_than':\n this.kql = `< ${this.text}`;\n break;\n case 'less_than_equal':\n this.kql = `<= ${this.text}`;\n break;\n case 'greater_than':\n this.kql = `> ${this.text}`;\n break;\n case 'greater_than_equal':\n this.kql = `>= ${this.text}`;\n break;\n case 'between':\n this.kql = `[${this._format(this.value?.start ?? '')} TO ${this._format(this.value?.end ?? '')}]`;\n break;\n case 'in':\n this.kql = `(${this.value.map((v) => this._format(v)).join(',')})`;\n break;\n case 'n_in':\n this.kql = `!(${this.value.map((v) => this._format(v)).join(',')})`;\n break;\n default:\n throw Error(`Unknown operator ${this.operator}`);\n }\n }\n}\n//# sourceMappingURL=query.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing, render } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { krBaseCSS } from '../style/base.js';\nimport '../button/button.js';\nimport { KRSnackbar } from '../snackbar/snackbar.js';\nimport '../form/select-field/select-field.js';\nimport '../form/select-field/select-option.js';\nimport { KRQuery, getOperatorsForType, termify } from './query.js';\nimport '../tabs/tabs.js';\nimport '../tabs/tab.js';\n/** Internal table model built from user-provided def. */\nclass KRTableModel {\n constructor() {\n this.title = '';\n this.description = '';\n this.actions = [];\n this.columns = [];\n this.displayedColumns = [];\n this.data = null;\n this.dataSource = null;\n this.refreshInterval = 0;\n this.pageSize = 0;\n this.rowClickable = false;\n this.rowHref = null;\n }\n}\nlet KRTable = class KRTable extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Internal flag to switch between scroll edge modes:\n * - 'overlay': Fixed padding with overlay elements that hide content at edges (scrollbar at viewport edge)\n * - 'edge': Padding scrolls with content, allowing table to reach edges when scrolling\n */\n this._scrollStyle = 'edge';\n this._data = [];\n this._dataState = 'idle';\n this._page = 1;\n this._pageSize = 50;\n this._totalItems = 0;\n this._totalPages = 0;\n this._searchQuery = '';\n this._canScrollLeft = false;\n this._canScrollRight = false;\n this._canScrollHorizontal = false;\n this._columnPickerOpen = false;\n this._filterPanelOpened = null;\n this._filterPanelTab = 'filter';\n this._buckets = new Map();\n this._filterPanelPos = { top: 0, left: 0 };\n this._sorts = [];\n this._resizing = null;\n this._resizeObserver = null;\n this._searchPositionLocked = false;\n this._columnWidthsLocked = false;\n this._model = new KRTableModel();\n this.def = { columns: [] };\n /**\n * Table layout variant.\n * - 'default': Full-page table that fills parent height with centered search.\n * - 'card': Embedded table that sizes itself to content, left-aligns search, and\n * reserves space for pageSize rows to prevent layout shift.\n */\n this.variant = 'default';\n this._handleClickOutside = (e) => {\n const path = e.composedPath();\n if (this._columnPickerOpen) {\n const picker = this.shadowRoot?.querySelector('.column-picker-wrapper');\n if (picker && !path.includes(picker)) {\n this._columnPickerOpen = false;\n }\n }\n if (this._filterPanelOpened) {\n if (!path.some((el) => el.classList?.contains('filter-panel'))) {\n this._handleFilterApply();\n }\n }\n };\n this._handleResizeMove = (e) => {\n if (!this._resizing)\n return;\n const col = this._model.columns.find(c => c.id === this._resizing.columnId);\n if (col) {\n const newWidth = this._resizing.startWidth + (e.clientX - this._resizing.startX);\n col.width = `${Math.min(900, Math.max(50, newWidth))}px`;\n this.requestUpdate();\n }\n };\n this._handleResizeEnd = () => {\n this._resizing = null;\n document.removeEventListener('mousemove', this._handleResizeMove);\n document.removeEventListener('mouseup', this._handleResizeEnd);\n };\n }\n connectedCallback() {\n super.connectedCallback();\n this.classList.toggle('kr-table--scroll-overlay', this._scrollStyle === 'overlay');\n this.classList.toggle('kr-table--scroll-edge', this._scrollStyle === 'edge');\n this._fetch();\n this._initRefresh();\n document.addEventListener('click', this._handleClickOutside);\n this._resizeObserver = new ResizeObserver(() => {\n // Unlock and recalculate on resize since layout changes\n this._searchPositionLocked = false;\n this._updateSearchPosition();\n });\n this._resizeObserver.observe(this);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n clearInterval(this._refreshTimer);\n document.removeEventListener('click', this._handleClickOutside);\n this._resizeObserver?.disconnect();\n }\n willUpdate(changedProperties) {\n if (changedProperties.has('def')) {\n // Build internal model from user-provided def\n this._columnWidthsLocked = false;\n this._model = new KRTableModel();\n if (this.def.title) {\n this._model.title = this.def.title;\n }\n if (this.def.description) {\n this._model.description = this.def.description;\n }\n if (this.def.actions) {\n this._model.actions = this.def.actions;\n }\n if (this.def.data) {\n this._model.data = this.def.data;\n }\n if (this.def.dataSource) {\n this._model.dataSource = this.def.dataSource;\n }\n if (typeof this.def.refreshInterval === 'number') {\n this._model.refreshInterval = this.def.refreshInterval;\n }\n if (typeof this.def.pageSize === 'number') {\n this._model.pageSize = this.def.pageSize;\n this._pageSize = this.def.pageSize;\n }\n if (this.def.rowClickable) {\n this._model.rowClickable = this.def.rowClickable;\n }\n if (this.def.rowHref) {\n this._model.rowHref = this.def.rowHref;\n }\n this._sorts = [];\n this._model.columns = this.def.columns.map(col => {\n const column = {\n ...col,\n filter: null\n };\n if (!column.type) {\n column.type = 'string';\n }\n if (col.sort) {\n this._sorts.push({\n sortBy: col.id,\n sortDirection: col.sort\n });\n }\n if (column.type === 'actions') {\n column.label = col.label ?? '';\n column.sticky = 'right';\n column.resizable = false;\n return column;\n }\n if (col.filterable || col.facetable) {\n column.filter = new KRQuery();\n column.filter.field = col.id;\n column.filter.type = column.type;\n if (col.filter) {\n column.filter.setOperator(col.filter.operator);\n column.filter.setValue(col.filter.value);\n }\n else if (col.facetable && !col.filterable) {\n column.filter.operator = 'in';\n column.filter.value = [];\n }\n else if (column.filter.type === 'string') {\n column.filter.operator = 'contains';\n }\n }\n return column;\n });\n if (this.def.displayedColumns) {\n this._model.displayedColumns = this.def.displayedColumns;\n }\n else {\n this._model.displayedColumns = this._model.columns.map(c => c.id);\n }\n this._fetch();\n this._initRefresh();\n }\n }\n updated(changedProperties) {\n this.classList.toggle('kr-table--card', this.variant === 'card');\n this._updateScrollFlags();\n this._syncSlottedContent();\n this._lockColumnWidths();\n }\n /** Measures header cell widths and locks them to prevent column shift on subsequent data changes. */\n _lockColumnWidths() {\n if (this._columnWidthsLocked || this._data.length === 0)\n return;\n const headerCells = this.shadowRoot?.querySelectorAll('.header-row > .header-cell');\n if (!headerCells)\n return;\n const cols = this.getDisplayedColumns();\n headerCells.forEach((cell, i) => {\n const cellWidth = cell.offsetWidth;\n if (i < cols.length && !cols[i].width && cols[i].type !== 'actions' && cellWidth > 0) {\n cols[i].width = `${cellWidth}px`;\n this._columnWidthsLocked = true;\n }\n });\n }\n /** Syncs light DOM content for cells with custom render functions */\n _syncSlottedContent() {\n const columns = this.getDisplayedColumns().filter(col => col.render);\n if (!columns.length)\n return;\n // Clear old slotted content\n this.querySelectorAll('[slot^=\"cell-\"]').forEach(el => el.remove());\n // Create new slotted content\n this._data.forEach((row, rowIndex) => {\n columns.forEach(col => {\n const result = col.render(row);\n if (!result)\n return;\n const el = document.createElement('span');\n el.slot = `cell-${rowIndex}-${col.id}`;\n if (col.type === 'actions') {\n el.style.display = 'flex';\n el.style.gap = '8px';\n }\n if (typeof result === 'string') {\n el.innerHTML = result;\n }\n else {\n render(result, el);\n }\n this.appendChild(el);\n });\n });\n }\n // ----------------------------------------------------------------------------\n // Public Interface\n // ----------------------------------------------------------------------------\n refresh() {\n this._fetch();\n }\n goToPrevPage() {\n if (this._page > 1) {\n this._page--;\n this._fetch();\n }\n }\n goToNextPage() {\n if (this._page < this._totalPages) {\n this._page++;\n this._fetch();\n }\n }\n goToPage(page) {\n if (page >= 1 && page <= this._totalPages) {\n this._page = page;\n this._fetch();\n }\n }\n // ----------------------------------------------------------------------------\n // Data Fetching\n // ----------------------------------------------------------------------------\n _toSolrData() {\n const request = {\n page: this._page - 1,\n size: this._pageSize,\n sorts: this._sorts,\n filterFields: [],\n queryFields: [],\n facetFields: []\n };\n for (const col of this._model.columns) {\n if (!col.filter || col.filter.isEmpty() || !col.filter.isValid()) {\n continue;\n }\n const filterData = col.filter.toSolrData();\n if (col.facetable && (col.filter.operator === 'in' || col.filter.operator === 'n_in')) {\n filterData.tagged = true;\n }\n request.filterFields.push(filterData);\n }\n for (const col of this._model.columns) {\n if (!col.facetable) {\n continue;\n }\n request.facetFields.push({\n name: col.id,\n type: 'FIELD',\n limit: 100,\n sort: 'count',\n minimumCount: 1\n });\n }\n if (this._searchQuery?.trim().length) {\n request.queryFields.push({\n name: '_text_',\n operation: 'IS',\n value: termify(this._searchQuery, false)\n });\n }\n return request;\n }\n _toDbParams() {\n const request = {\n page: this._page - 1,\n size: this._pageSize,\n sorts: this._sorts,\n filterFields: [],\n queryFields: [],\n facetFields: []\n };\n for (const col of this._model.columns) {\n if (!col.filter || col.filter.isEmpty() || !col.filter.isValid()) {\n continue;\n }\n request.filterFields.push(col.filter.toDbParams());\n }\n if (this._searchQuery?.trim().length) {\n this._model.columns.filter(col => col.searchable).forEach(col => {\n request.queryFields.push({\n name: col.id,\n operation: 'CONTAINS',\n value: this._searchQuery,\n and: false\n });\n });\n }\n return request;\n }\n /**\n * Fetches data from the API and updates the table.\n * Shows a loading spinner while fetching, then displays rows on success\n * or an error snackbar on failure.\n * Request/response format depends on dataSource.mode (solr, opensearch, db).\n */\n _fetch() {\n if (this._model.data) {\n this._data = this._model.data;\n this._totalItems = this._model.data.length;\n this._totalPages = Math.ceil(this._model.data.length / this._pageSize);\n this._dataState = 'success';\n return;\n }\n if (!this._model.dataSource)\n return;\n this._dataState = 'loading';\n let request;\n if (this._model.dataSource.mode === 'db') {\n request = this._toDbParams();\n }\n else {\n request = this._toSolrData();\n }\n this._model.dataSource.fetch(request)\n .then(response => {\n // Parse response based on mode\n switch (this._model.dataSource?.mode) {\n case 'opensearch': {\n throw Error('Opensearch not supported yet');\n break;\n }\n case 'db': {\n const res = response;\n this._data = res.data.content;\n this._totalItems = res.data.totalElements;\n this._totalPages = res.data.totalPages;\n this._pageSize = res.data.size;\n break;\n }\n default: { // solr\n const res = response;\n this._data = res.data.content;\n this._totalItems = res.data.totalElements;\n this._totalPages = res.data.totalPages;\n this._pageSize = res.data.size;\n this._parseFacetResults(res);\n }\n }\n this._dataState = 'success';\n this._updateSearchPosition();\n })\n .catch(err => {\n this._dataState = 'error';\n KRSnackbar.show({\n message: err instanceof Error ? err.message : 'Failed to load data',\n type: 'error'\n });\n });\n }\n _parseFacetResults(response) {\n if (!response.data.facetFields) {\n return;\n }\n for (const col of this._model.columns) {\n if (!col.facetable) {\n continue;\n }\n const rawBuckets = response.data.facetFields[col.id];\n if (!rawBuckets) {\n this._buckets.set(col.id, []);\n continue;\n }\n const buckets = [];\n for (const raw of rawBuckets) {\n // Solr returns boolean facet values as strings — coerce to actual booleans\n // so they match the filter values stored by toggle().\n let val = raw.name;\n if (col.type === 'boolean' && typeof raw.name === 'string') {\n if (raw.name === 'true') {\n val = true;\n }\n else if (raw.name === 'false') {\n val = false;\n }\n }\n if (raw.name === null && raw.count > 0) {\n buckets.unshift({\n val: null,\n count: raw.count\n });\n }\n if (raw.name !== null) {\n buckets.push({\n val: val,\n count: raw.count\n });\n }\n }\n // Bucket sync: ensure selected values appear even with 0 results\n if (col.filter && (col.filter.operator === 'in' || col.filter.operator === 'n_in') && Array.isArray(col.filter.value)) {\n for (const selectedVal of col.filter.value) {\n if (!buckets.some(b => b.val === selectedVal)) {\n buckets.push({\n val: selectedVal,\n count: 0\n });\n }\n }\n }\n this._buckets.set(col.id, buckets);\n }\n // Trigger re-render since Map mutation doesn't trigger Lit updates\n this._buckets = new Map(this._buckets);\n }\n /**\n * Sets up auto-refresh so the table automatically fetches fresh data\n * at a regular interval (useful for dashboards, monitoring views).\n * Configured via def.refreshInterval in milliseconds.\n */\n _initRefresh() {\n clearInterval(this._refreshTimer);\n if (this._model.refreshInterval && this._model.refreshInterval > 0) {\n this._refreshTimer = window.setInterval(() => {\n this._fetch();\n }, this._model.refreshInterval);\n }\n }\n _handleSearch(e) {\n const input = e.target;\n this._searchQuery = input.value;\n this._page = 1;\n this._fetch();\n }\n _getGridTemplateColumns() {\n const cols = this.getDisplayedColumns();\n return cols.map((col) => {\n // If column has explicit width, use it\n if (col.width) {\n return col.width;\n }\n // Actions columns: fit content without minimum\n if (col.type === 'actions') {\n return 'max-content';\n }\n // No width specified - use content-based sizing with minimum\n return 'minmax(80px, auto)';\n }).join(' ');\n }\n /**\n * Updates search position to be centered with equal gaps from title and tools.\n * On first call: resets to flex centering, measures position, then locks with fixed margin.\n * Subsequent calls are ignored unless _searchPositionLocked is reset (e.g., on resize).\n */\n _updateSearchPosition() {\n // Skip if already locked (prevents shifts on pagination changes)\n if (this._searchPositionLocked)\n return;\n // In card mode, search is left-aligned via CSS — no position locking needed\n if (this.variant === 'card')\n return;\n const search = this.shadowRoot?.querySelector('.search');\n const searchField = search?.querySelector('.search-field');\n if (!search || !searchField)\n return;\n // Reset to flex centering\n search.style.justifyContent = 'center';\n searchField.style.marginLeft = '';\n requestAnimationFrame(() => {\n const searchRect = search.getBoundingClientRect();\n const fieldRect = searchField.getBoundingClientRect();\n // Calculate how far from the left of search container the field currently is\n const currentOffset = fieldRect.left - searchRect.left;\n // Lock position: switch to flex-start and use fixed margin\n search.style.justifyContent = 'flex-start';\n searchField.style.marginLeft = `${currentOffset}px`;\n // Mark as locked so pagination changes don't shift the search\n this._searchPositionLocked = true;\n });\n }\n // ----------------------------------------------------------------------------\n // Columns\n // ----------------------------------------------------------------------------\n _toggleColumnPicker() {\n this._columnPickerOpen = !this._columnPickerOpen;\n }\n _toggleColumn(columnId) {\n if (this._model.displayedColumns.includes(columnId)) {\n this._model.displayedColumns = this._model.displayedColumns.filter(id => id !== columnId);\n }\n else {\n this._model.displayedColumns = [...this._model.displayedColumns, columnId];\n }\n this.requestUpdate();\n }\n // Clear any existing text selection on mousedown so we only detect\n // selections made during this click gesture, not stale selections from elsewhere\n _handleRowMouseDown() {\n if (!this._model.rowClickable && !this._model.rowHref) {\n return;\n }\n window.getSelection()?.removeAllRanges();\n }\n _handleRowClick(e, row, rowIndex) {\n if (!this._model.rowClickable && !this._model.rowHref) {\n return;\n }\n const selection = window.getSelection();\n if (selection && selection.toString().length > 0) {\n e.preventDefault();\n return;\n }\n this.dispatchEvent(new CustomEvent('row-click', {\n detail: { row, rowIndex },\n bubbles: true,\n composed: true\n }));\n }\n // When a user toggles a column on via the column picker, it gets appended\n // to _displayedColumns. By mapping over _displayedColumns (not def.columns),\n // the new column appears at the right edge of the table instead of jumping\n // back to its original position in the column definition.\n // Actions columns are always moved to the end.\n getDisplayedColumns() {\n return this._model.displayedColumns\n .map(id => this._model.columns.find(col => col.id === id))\n .sort((a, b) => {\n if (a.type === 'actions' && b.type !== 'actions')\n return 1;\n if (a.type !== 'actions' && b.type === 'actions')\n return -1;\n return 0;\n });\n }\n // ----------------------------------------------------------------------------\n // Scrolling\n // ----------------------------------------------------------------------------\n /**\n * Scroll event handler that updates scroll flags in real-time as user scrolls.\n * Updates shadow indicators to show if more content exists left/right.\n */\n _handleScroll(e) {\n const container = e.target;\n this._canScrollLeft = container.scrollLeft > 0;\n this._canScrollRight = container.scrollLeft < container.scrollWidth - container.clientWidth - 1;\n }\n /**\n * Updates scroll state flags for the table content container.\n * - _canScrollLeft: true if scrolled right (can scroll back left)\n * - _canScrollRight: true if more content exists to the right\n * - _canScrollHorizontal: true if content is wider than container\n * These flags control scroll shadow indicators and CSS classes.\n */\n _updateScrollFlags() {\n const container = this.shadowRoot?.querySelector('.content');\n if (container) {\n this._canScrollLeft = container.scrollLeft > 0;\n this._canScrollRight = container.scrollWidth > container.clientWidth && container.scrollLeft < container.scrollWidth - container.clientWidth - 1;\n this._canScrollHorizontal = container.scrollWidth > container.clientWidth;\n }\n this.classList.toggle('kr-table--scroll-left-available', this._canScrollLeft);\n this.classList.toggle('kr-table--scroll-right-available', this._canScrollRight);\n this.classList.toggle('kr-table--scroll-horizontal-available', this._canScrollHorizontal);\n this.classList.toggle('kr-table--sticky-left', this.getDisplayedColumns().some(c => c.sticky === 'left'));\n this.classList.toggle('kr-table--sticky-right', this.getDisplayedColumns().some(c => c.sticky === 'right'));\n }\n // ----------------------------------------------------------------------------\n // Column Resizing\n // ----------------------------------------------------------------------------\n _handleResizeStart(e, columnId) {\n e.preventDefault();\n const headerCell = this.shadowRoot?.querySelector(`.header-cell[data-column-id=\"${columnId}\"]`);\n this._resizing = {\n columnId,\n startX: e.clientX,\n startWidth: headerCell?.offsetWidth || 200\n };\n document.addEventListener('mousemove', this._handleResizeMove);\n document.addEventListener('mouseup', this._handleResizeEnd);\n }\n // ----------------------------------------------------------------------------\n // Sorting\n // ----------------------------------------------------------------------------\n _handleSortClick(e, column) {\n if (e.shiftKey) {\n // Multi-sort: add or cycle existing\n const existingIndex = this._sorts.findIndex(s => s.sortBy === column.id);\n if (existingIndex === -1) {\n this._sorts.push({ sortBy: column.id, sortDirection: 'asc' });\n }\n else {\n const existing = this._sorts[existingIndex];\n if (existing.sortDirection === 'asc') {\n existing.sortDirection = 'desc';\n }\n else {\n // on third click, remove sorting for the column\n this._sorts.splice(existingIndex, 1);\n }\n }\n this.requestUpdate();\n }\n else {\n // Single sort: replace all\n let existing = null;\n if (this._sorts.length === 1) {\n existing = this._sorts.find(s => s.sortBy === column.id);\n }\n if (!existing) {\n this._sorts = [{ sortBy: column.id, sortDirection: 'asc' }];\n }\n else if (existing.sortDirection === 'asc') {\n this._sorts = [{ sortBy: column.id, sortDirection: 'desc' }];\n }\n else {\n this._sorts = [];\n }\n }\n this._page = 1;\n this._fetch();\n }\n _renderSortIndicator(column) {\n if (!column.sortable) {\n return nothing;\n }\n const sortIndex = this._sorts.findIndex(s => s.sortBy === column.id);\n if (sortIndex === -1) {\n // Ghost arrow: visible only on hover via CSS\n return html `\n <span class=\"header-cell__sort\" @click=${(e) => this._handleSortClick(e, column)}>\n <svg class=\"header-cell__sort-arrow header-cell__sort-arrow--ghost\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"/>\n </svg>\n </span>\n `;\n }\n let arrowStyle = {};\n if (this._sorts[sortIndex].sortDirection === 'desc') {\n arrowStyle = { transform: 'rotate(180deg)' };\n }\n return html `\n <span class=\"header-cell__sort\" @click=${(e) => this._handleSortClick(e, column)}>\n <svg class=\"header-cell__sort-arrow\" viewBox=\"0 0 24 24\" fill=\"currentColor\" style=${styleMap(arrowStyle)}>\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"/>\n </svg>\n ${this._sorts.length > 1 ? html `\n <span class=\"header-cell__sort-priority\">${sortIndex + 1}</span>\n ` : nothing}\n </span>\n `;\n }\n // ----------------------------------------------------------------------------\n // Header\n // ----------------------------------------------------------------------------\n _handleAction(action) {\n if (action.href) {\n return;\n }\n this.dispatchEvent(new CustomEvent('action', {\n detail: { action: action.id },\n bubbles: true,\n composed: true\n }));\n }\n // ----------------------------------------------------------------------------\n // Filter Handlers\n // ----------------------------------------------------------------------------\n _handleKqlChange(e, column) {\n const kql = e.target.value.trim();\n if (!kql) {\n column.filter.clear();\n this.requestUpdate();\n }\n else {\n column.filter.setKql(kql);\n this.requestUpdate();\n if (!column.filter.isValid()) {\n return;\n }\n }\n this._page = 1;\n this._fetch();\n }\n _handleFilterPanelToggle(e, column) {\n e.stopPropagation();\n if (this._filterPanelOpened === column.id) {\n this._filterPanelOpened = null;\n }\n else {\n const rect = e.currentTarget.getBoundingClientRect();\n let left = rect.left;\n if (left + 328 > window.innerWidth) {\n left = window.innerWidth - 328;\n }\n this._filterPanelPos = {\n top: rect.bottom + 4,\n left\n };\n this._filterPanelOpened = column.id;\n if (column.facetable) {\n this._filterPanelTab = 'counts';\n }\n else {\n this._filterPanelTab = 'filter';\n }\n }\n }\n _handleKqlClear(column) {\n column.filter.clear();\n this._page = 1;\n this._fetch();\n }\n _handleFilterClear() {\n const column = this._model.columns.find(c => c.id === this._filterPanelOpened);\n if (column) {\n column.filter.clear();\n if (column.facetable && !column.filterable) {\n column.filter.operator = 'in';\n column.filter.value = [];\n }\n }\n this._filterPanelOpened = null;\n this._page = 1;\n this._fetch();\n }\n _handleFilterTextKeydown(e, column) {\n if (e.key === 'Enter') {\n e.preventDefault();\n this._handleFilterApply();\n }\n }\n _handleOperatorChange(e, column) {\n column.filter.setOperator(e.target.value);\n this.requestUpdate();\n }\n _handleFilterStringChange(e, column) {\n column.filter.setValue(e.target.value);\n this.requestUpdate();\n }\n _handleFilterNumberChange(e, column) {\n column.filter.setValue(Number(e.target.value));\n this.requestUpdate();\n }\n _handleFilterDateChange(e, column) {\n column.filter.setValue(new Date(e.target.value), 'day');\n this.requestUpdate();\n }\n _handleFilterBooleanChange(e, column) {\n column.filter.setValue(e.target.value === 'true');\n this.requestUpdate();\n }\n _handleFilterDateStartChange(e, column) {\n column.filter.setStart(new Date(e.target.value), 'day');\n this.requestUpdate();\n }\n _handleFilterDateEndChange(e, column) {\n column.filter.setEnd(new Date(e.target.value), 'day');\n this.requestUpdate();\n }\n _handleFilterNumberStartChange(e, column) {\n column.filter.setStart(Number(e.target.value));\n this.requestUpdate();\n }\n _handleFilterNumberEndChange(e, column) {\n column.filter.setEnd(Number(e.target.value));\n this.requestUpdate();\n }\n _handleFilterListChange(e, column) {\n const items = e.target.value.split(',').map((v) => v.trim()).filter((v) => v !== '');\n if (column.type === 'number') {\n column.filter.setValue(items.map((v) => Number(v)));\n }\n else {\n column.filter.setValue(items);\n }\n this.requestUpdate();\n }\n _handleFilterApply() {\n this._filterPanelOpened = null;\n this._page = 1;\n this._fetch();\n }\n _handleFilterPanelTabChange(e) {\n this._filterPanelTab = e.detail.activeTabId;\n }\n _handleBucketToggle(e, column, bucket) {\n column.filter.toggle(bucket.val);\n this._page = 1;\n this._fetch();\n }\n // ----------------------------------------------------------------------------\n // Rendering\n // ----------------------------------------------------------------------------\n _renderCellContent(column, row, rowIndex) {\n const value = row[column.id];\n if (column.render) {\n // Use slot to project content from light DOM so external styles apply\n return html `<slot name=\"cell-${rowIndex}-${column.id}\"></slot>`;\n }\n if (value === null || value === undefined) {\n return '';\n }\n switch (column.type) {\n case 'number':\n if (column.format === 'currency' && typeof value === 'number') {\n return value.toLocaleString('en-US', { style: 'currency', currency: 'USD' });\n }\n return String(value);\n case 'date': {\n let date;\n if (value instanceof Date) {\n date = value;\n }\n else if (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}/.test(value)) {\n // MySQL datetime format (UTC): \"2026-01-28 01:33:44:517\"\n // Replace last colon before ms with dot, append Z for UTC\n const isoString = value.replace(/(\\d{2}:\\d{2}:\\d{2}):(\\d+)$/, '$1.$2').replace(' ', 'T') + 'Z';\n date = new Date(isoString);\n }\n else {\n date = new Date(value);\n }\n // Show date and time for datetime values in UTC\n return date.toLocaleString(undefined, {\n year: 'numeric', month: 'short', day: 'numeric',\n hour: 'numeric', minute: '2-digit',\n timeZone: 'UTC'\n });\n }\n case 'boolean':\n if (value === true)\n return 'Yes';\n if (value === false)\n return 'No';\n return '';\n default:\n return String(value);\n }\n }\n /**\n * Returns CSS classes for a header cell based on column config.\n */\n _getHeaderCellClasses(column, index) {\n return {\n 'header-cell': true,\n 'header-cell--sortable': !!column.sortable,\n 'header-cell--align-center': column.align === 'center',\n 'header-cell--align-right': column.align === 'right',\n 'header-cell--sticky-left': column.sticky === 'left',\n 'header-cell--sticky-left-last': column.sticky === 'left' &&\n !this.getDisplayedColumns().slice(index + 1).some(c => c.sticky === 'left'),\n 'header-cell--sticky-right': column.sticky === 'right',\n 'header-cell--sticky-right-first': column.sticky === 'right' &&\n !this.getDisplayedColumns().slice(0, index).some(c => c.sticky === 'right')\n };\n }\n /**\n * Returns CSS classes for a table cell based on column config:\n * - Alignment (center, right)\n * - Sticky positioning (left, right)\n * - Border classes for the last left-sticky or first right-sticky column\n */\n _getCellClasses(column, index) {\n return {\n 'cell': true,\n 'cell--actions': column.type === 'actions',\n 'cell--align-center': column.align === 'center',\n 'cell--align-right': column.align === 'right',\n 'cell--sticky-left': column.sticky === 'left',\n 'cell--sticky-left-last': column.sticky === 'left' &&\n !this.getDisplayedColumns().slice(index + 1).some(c => c.sticky === 'left'),\n 'cell--sticky-right': column.sticky === 'right',\n 'cell--sticky-right-first': column.sticky === 'right' &&\n !this.getDisplayedColumns().slice(0, index).some(c => c.sticky === 'right')\n };\n }\n /**\n * Returns inline styles for a table cell:\n * - Width (from column config or default 150px)\n * - Min-width (if specified)\n * - Left/right offset for sticky columns (calculated from widths of preceding sticky columns)\n */\n _getCellStyle(column, index) {\n const styles = {};\n if (column.sticky === 'left') {\n let leftOffset = 0;\n for (let i = 0; i < index; i++) {\n const col = this.getDisplayedColumns()[i];\n if (col.sticky === 'left') {\n leftOffset += parseInt(col.width || '0', 10);\n }\n }\n styles.left = `${leftOffset}px`;\n }\n if (column.sticky === 'right') {\n let rightOffset = 0;\n for (let i = index + 1; i < this.getDisplayedColumns().length; i++) {\n const col = this.getDisplayedColumns()[i];\n if (col.sticky === 'right') {\n rightOffset += parseInt(col.width || '0', 10);\n }\n }\n styles.right = `${rightOffset}px`;\n }\n return styles;\n }\n /**\n * Renders the pagination controls:\n * - Previous page arrow (disabled on first page)\n * - Range text showing \"1-50 of 150\" format\n * - Next page arrow (disabled on last page)\n *\n * Hidden when there's no data or all data fits on one page.\n */\n _renderPagination() {\n const start = (this._page - 1) * this._pageSize + 1;\n const end = Math.min(this._page * this._pageSize, this._totalItems);\n return html `\n <div class=\"pagination\">\n <span\n class=\"pagination-icon ${this._page === 1 ? 'pagination-icon--disabled' : ''}\"\n @click=${this.goToPrevPage}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/></svg>\n </span>\n <span class=\"pagination-info\">${start}-${end} of ${this._totalItems}</span>\n <span\n class=\"pagination-icon ${this._page === this._totalPages ? 'pagination-icon--disabled' : ''}\"\n @click=${this.goToNextPage}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/></svg>\n </span>\n </div>\n `;\n }\n /** Renders the card title block (title + description) above the toolbar in card mode. */\n _renderCardHeader() {\n if (this.variant !== 'card')\n return nothing;\n if (!this._model.title && !this._model.description)\n return nothing;\n return html `\n <div class=\"card-header\">\n ${this._model.title ? html `<h2 class=\"card-header__title\">${this._model.title}</h2>` : nothing}\n ${this._model.description ? html `<p class=\"card-header__description\">${this._model.description}</p>` : nothing}\n </div>\n `;\n }\n /**\n * Renders the header toolbar containing:\n * - Title (left, default variant only)\n * - Search bar with view selector dropdown (center, or left-aligned in card variant)\n * - Tools (right): page navigation, refresh button, column visibility picker, actions dropdown\n *\n * Hidden when there's no title, no actions, and data fits on one page.\n */\n _renderHeader() {\n if (!this._model.title && !this._model.actions?.length && this._totalPages <= 1) {\n return nothing;\n }\n return html `\n <div class=\"header\">\n ${this._model.title && this.variant !== 'card' ? html `<div class=\"title\">${this._model.title}</div>` : nothing}\n ${this._model.dataSource?.mode === 'db' && !this._model.columns.some(col => col.searchable) ? html `<div class=\"search\"></div>` : html `\n <div class=\"search\">\n <!-- TODO: Saved views dropdown\n <div class=\"views\">\n <span>Default View</span>\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"/></svg>\n </div>\n -->\n <div class=\"search-field\">\n <svg class=\"search-icon\" viewBox=\"0 -960 960 960\" fill=\"currentColor\"><path d=\"M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z\"/></svg>\n <input\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search...\"\n .value=${this._searchQuery}\n @input=${this._handleSearch}\n />\n </div>\n </div>\n `}\n <div class=\"tools\">\n ${this._renderPagination()}\n <span class=\"refresh\" title=\"Refresh\" @click=${() => this.refresh()}>\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\"><path d=\"M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z\"/></svg>\n </span>\n <div class=\"column-picker-wrapper\">\n <span class=\"header-icon\" title=\"Columns\" @click=${this._toggleColumnPicker}>\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\"><path d=\"M121-280v-400q0-33 23.5-56.5T201-760h559q33 0 56.5 23.5T840-680v400q0 33-23.5 56.5T760-200H201q-33 0-56.5-23.5T121-280Zm79 0h133v-400H200v400Zm213 0h133v-400H413v400Zm213 0h133v-400H626v400Z\"/></svg>\n </span>\n <div class=\"column-picker ${this._columnPickerOpen ? 'open' : ''}\">\n ${[...this._model.columns].filter(col => col.type !== 'actions').sort((a, b) => (a.label ?? a.id).localeCompare(b.label ?? b.id)).map(col => html `\n <div class=\"column-picker-item\" @click=${() => this._toggleColumn(col.id)}>\n <div class=\"column-picker-checkbox ${this._model.displayedColumns.includes(col.id) ? 'checked' : ''}\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/></svg>\n </div>\n <span class=\"column-picker-label\">${col.label ?? col.id}</span>\n </div>\n `)}\n </div>\n </div>\n ${this._model.actions?.length === 1 ? html `\n <kr-button\n class=\"actions\"\n .href=${this._model.actions[0].href}\n .target=${this._model.actions[0].target}\n @click=${() => this._handleAction(this._model.actions[0])}\n >\n ${this._model.actions[0].label}\n </kr-button>\n ` : this._model.actions?.length ? html `\n <kr-button\n class=\"actions\"\n .options=${this._model.actions.map(a => ({ id: a.id, label: a.label }))}\n @option-select=${(e) => this._handleAction({ id: e.detail.id, label: e.detail.label })}\n >\n Actions\n </kr-button>\n ` : nothing}\n </div>\n </div>\n `;\n }\n /** Renders status message (loading, error, empty) */\n _renderStatus() {\n if (this._dataState === 'loading' && this._data.length === 0) {\n return html `<div class=\"status\">Loading...</div>`;\n }\n if (this._dataState === 'error' && this._data.length === 0) {\n return html `<div class=\"status status--error\">Error loading data</div>`;\n }\n if (this._data.length === 0) {\n return html `<div class=\"status\">No data available</div>`;\n }\n return nothing;\n }\n _renderFilterPanel() {\n if (!this._filterPanelOpened) {\n return nothing;\n }\n const column = this._model.columns.find(c => c.id === this._filterPanelOpened);\n // Build filter content (operator + value input)\n let valueInput = html ``;\n if (column.filter.operator === 'empty' || column.filter.operator === 'n_empty') {\n valueInput = html `\n <input\n type=\"text\"\n class=\"filter-panel__input\"\n disabled\n .value=${column.filter.text}\n />\n `;\n }\n else if (column.filter.operator === 'between' && column.type === 'date') {\n valueInput = html `\n <input\n type=\"date\"\n class=\"filter-panel__input\"\n .valueAsDate=${column.filter.value?.start ?? null}\n @change=${(e) => this._handleFilterDateStartChange(e, column)}\n />\n <input\n type=\"date\"\n class=\"filter-panel__input\"\n .valueAsDate=${column.filter.value?.end ?? null}\n @change=${(e) => this._handleFilterDateEndChange(e, column)}\n />\n `;\n }\n else if (column.filter.operator === 'between' && column.type === 'number') {\n valueInput = html `\n <input\n type=\"number\"\n class=\"filter-panel__input\"\n placeholder=\"Start\"\n .value=${column.filter.value?.start ?? ''}\n @input=${(e) => this._handleFilterNumberStartChange(e, column)}\n @keydown=${(e) => this._handleFilterTextKeydown(e, column)}\n />\n <input\n type=\"number\"\n class=\"filter-panel__input\"\n placeholder=\"End\"\n .value=${column.filter.value?.end ?? ''}\n @input=${(e) => this._handleFilterNumberEndChange(e, column)}\n @keydown=${(e) => this._handleFilterTextKeydown(e, column)}\n />\n `;\n }\n else if (column.filter.operator === 'in' || column.filter.operator === 'n_in') {\n valueInput = html `\n <textarea\n class=\"filter-panel__textarea\"\n rows=\"3\"\n placeholder=\"Values (comma-separated)\"\n .value=${column.filter.text}\n @input=${(e) => this._handleFilterListChange(e, column)}\n @keydown=${(e) => this._handleFilterTextKeydown(e, column)}\n ></textarea>\n `;\n }\n else if (column.type === 'boolean') {\n valueInput = html `\n <kr-select-field\n placeholder=\"Value\"\n .value=${String(column.filter.value ?? '')}\n @change=${(e) => this._handleFilterBooleanChange(e, column)}\n >\n <kr-select-option value=\"true\">Yes</kr-select-option>\n <kr-select-option value=\"false\">No</kr-select-option>\n </kr-select-field>\n `;\n }\n else if (column.type === 'date') {\n valueInput = html `\n <input\n type=\"date\"\n class=\"filter-panel__input\"\n .valueAsDate=${column.filter.value}\n @change=${(e) => this._handleFilterDateChange(e, column)}\n />\n `;\n }\n else if (column.type === 'number') {\n valueInput = html `\n <input\n type=\"number\"\n class=\"filter-panel__input\"\n placeholder=\"Value\"\n min=\"0\"\n .value=${column.filter.text}\n @input=${(e) => this._handleFilterNumberChange(e, column)}\n @keydown=${(e) => this._handleFilterTextKeydown(e, column)}\n />\n `;\n }\n else {\n valueInput = html `\n <input\n type=\"text\"\n class=\"filter-panel__input\"\n placeholder=\"Value\"\n .value=${column.filter.text}\n @input=${(e) => this._handleFilterStringChange(e, column)}\n @keydown=${(e) => this._handleFilterTextKeydown(e, column)}\n />\n `;\n }\n const filterContent = html `\n <div class=\"filter-panel__content\">\n <kr-select-field\n .value=${column.filter.operator}\n @change=${(e) => this._handleOperatorChange(e, column)}\n >\n ${getOperatorsForType(column.type).map(op => html `\n <kr-select-option value=${op.key}>${op.label}</kr-select-option>\n `)}\n </kr-select-field>\n ${valueInput}\n </div>\n `;\n // Build bucket list content\n const buckets = this._buckets.get(column.id) || [];\n let bucketContent;\n if (!buckets.length) {\n bucketContent = html `<div class=\"bucket-empty\">No data</div>`;\n }\n else {\n bucketContent = html `\n <div class=\"buckets\">\n ${buckets.map(bucket => {\n let bucketLabel = '(Empty)';\n if (bucket.val !== null && bucket.val !== undefined) {\n if (column.type === 'boolean') {\n if (bucket.val === true || bucket.val === 'true') {\n bucketLabel = 'Yes';\n }\n else {\n bucketLabel = 'No';\n }\n }\n else {\n bucketLabel = String(bucket.val);\n }\n }\n // When using n_in, the user sees all buckets checked by default and unchecks\n // the ones they want to hide. Under the hood, has() returns true for values\n // in the exclusion list, so we invert the check state for n_in.\n let checked = column.filter.has(bucket.val);\n if (column.filter.operator === 'n_in') {\n checked = !checked;\n }\n let checkIcon = nothing;\n if (checked) {\n checkIcon = html `\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n `;\n }\n return html `\n <div\n class=\"bucket\"\n @click=${(e) => this._handleBucketToggle(e, column, bucket)}\n >\n <div class=${classMap({\n 'bucket__checkbox': true,\n 'bucket__checkbox--checked': checked\n })}>\n ${checkIcon}\n </div>\n <span class=\"bucket__label\">${bucketLabel}</span>\n <span class=\"bucket__count\">${bucket.count}</span>\n </div>\n `;\n })}\n </div>\n `;\n }\n // Build panel body — tabs if both filterable+facetable, otherwise just the relevant content\n let panelBody;\n if (column.facetable && column.filterable) {\n panelBody = html `\n <kr-tab-group\n size=\"small\"\n active-tab-id=${this._filterPanelTab}\n @tab-change=${(e) => this._handleFilterPanelTabChange(e)}\n >\n <kr-tab id=\"filter\" label=\"Filter\">\n ${filterContent}\n </kr-tab>\n <kr-tab id=\"counts\" label=\"Counts\">\n ${bucketContent}\n </kr-tab>\n </kr-tab-group>\n `;\n }\n else if (column.facetable) {\n panelBody = bucketContent;\n }\n else {\n panelBody = filterContent;\n }\n return html `\n <div\n class=\"filter-panel\"\n style=${styleMap({\n top: this._filterPanelPos.top + 'px',\n left: this._filterPanelPos.left + 'px'\n })}\n >\n ${panelBody}\n <div class=\"filter-panel__actions\">\n <kr-button variant=\"outline\" color=\"secondary\" size=\"small\" @click=${this._handleFilterClear}>\n Clear\n </kr-button>\n <kr-button size=\"small\" @click=${this._handleFilterApply}>\n Apply\n </kr-button>\n </div>\n </div>\n `;\n }\n /**\n * Renders filter row below column headers.\n * Only displays for columns with filterable: true.\n */\n _renderFilterRow() {\n const columns = this.getDisplayedColumns();\n if (!columns.some(col => col.filterable || col.facetable)) {\n return nothing;\n }\n return html `\n <div class=\"filter-row\">\n ${columns.map((col, i) => {\n if (!col.filterable && !col.facetable) {\n return html `<div\n class=${classMap({\n 'filter-cell': true,\n 'filter-cell--sticky-left': col.sticky === 'left',\n 'filter-cell--sticky-right': col.sticky === 'right',\n 'filter-cell--sticky-right-first': col.sticky === 'right' &&\n !columns.slice(0, i).some((c) => c.sticky === 'right')\n })}\n style=${styleMap(this._getCellStyle(col, i))}\n ></div>`;\n }\n return html `\n <div\n class=${classMap({\n 'filter-cell': true,\n 'filter-cell--sticky-left': col.sticky === 'left',\n 'filter-cell--sticky-right': col.sticky === 'right',\n 'filter-cell--sticky-right-first': col.sticky === 'right' &&\n !columns.slice(0, i).some((c) => c.sticky === 'right')\n })}\n style=${styleMap(this._getCellStyle(col, i))}\n >\n <div class=\"filter-cell__wrapper\">\n <input\n type=\"text\"\n class=${classMap({\n 'filter-cell__input': true,\n 'filter-cell__input--invalid': !col.filter.isValid()\n })}\n .value=${col.filter.kql}\n @change=${(e) => this._handleKqlChange(e, col)}\n />\n ${col.filter?.kql?.length > 0 ? html `\n <button\n class=\"filter-cell__clear\"\n @click=${() => this._handleKqlClear(col)}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n </svg>\n </button>\n ` : nothing}\n <button\n class=${classMap({\n 'filter-cell__advanced': true,\n 'filter-cell__advanced--opened': this._filterPanelOpened === col.id\n })}\n @click=${(e) => this._handleFilterPanelToggle(e, col)}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"/>\n </svg>\n </button>\n </div>\n </div>\n `;\n })}\n </div>\n `;\n }\n /** Renders the scrollable data grid with column headers and rows. */\n _renderTable() {\n return html `\n <div class=\"wrapper\">\n <div class=\"overlay-left\"></div>\n <div class=\"overlay-right\"></div>\n ${this._renderStatus()}\n <div class=\"content\" @scroll=${this._handleScroll}>\n <div class=\"table\" style=\"grid-template-columns: ${this._getGridTemplateColumns()}\">\n <div class=\"header-row\">\n ${this.getDisplayedColumns().map((col, i) => html `\n <div\n class=${classMap(this._getHeaderCellClasses(col, i))}\n style=${styleMap(this._getCellStyle(col, i))}\n data-column-id=${col.id}\n >\n <span class=\"header-cell__label\">${col.label ?? col.id}</span>\n ${this._renderSortIndicator(col)}\n ${col.resizable !== false ? html `<div\n class=\"header-cell__resize\"\n @mousedown=${(e) => this._handleResizeStart(e, col.id)}\n ></div>` : nothing}\n </div>\n `)}\n </div>\n ${this._renderFilterRow()}\n ${this._data.map((row, rowIndex) => {\n const cells = this.getDisplayedColumns().map((col, i) => html `\n <div\n class=${classMap(this._getCellClasses(col, i))}\n style=${styleMap(this._getCellStyle(col, i))}\n data-column-id=${col.id}\n >\n ${this._renderCellContent(col, row, rowIndex)}\n </div>\n `);\n if (this._model.rowHref) {\n return html `\n <a\n href=${this._model.rowHref(row)}\n draggable=\"false\"\n class=${classMap({ 'row': true, 'row--clickable': true, 'row--link': true })}\n @mousedown=${() => this._handleRowMouseDown()}\n @click=${(e) => this._handleRowClick(e, row, rowIndex)}\n >${cells}</a>\n `;\n }\n return html `\n <div\n class=${classMap({ 'row': true, 'row--clickable': !!this._model.rowClickable })}\n @mousedown=${() => this._handleRowMouseDown()}\n @click=${(e) => this._handleRowClick(e, row, rowIndex)}\n >${cells}</div>\n `;\n })}\n </div>\n </div>\n </div>\n `;\n }\n /**\n * Renders a data table with:\n * - Header bar with title, search input with view selector, and tools (pagination, refresh, column visibility, actions dropdown)\n * - Scrollable grid with sticky header row and optional sticky left/right columns\n * - Loading, error message, or empty state when no data\n */\n render() {\n if (!this._model.columns.length) {\n return html `<slot></slot>`;\n }\n return html `\n ${this._renderCardHeader()}\n ${this._renderHeader()}\n ${this._renderTable()}\n ${this._renderFilterPanel()}\n `;\n }\n};\nKRTable.styles = [krBaseCSS, css `\n /* -------------------------------------------------------------------------\n * Host\n * ----------------------------------------------------------------------- */\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: hidden;\n container-type: inline-size;\n }\n\n /* -------------------------------------------------------------------------\n * Header\n * ----------------------------------------------------------------------- */\n .header {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 16px;\n margin: 0 24px;\n height: 64px;\n border-bottom: 1px solid #e5e7eb;\n background: #fff;\n }\n\n :host(.kr-table--scroll-edge) .header {\n border-bottom: none;\n }\n\n .title {\n font-size: 18px;\n font-weight: 600;\n color: #000;\n }\n\n /* -------------------------------------------------------------------------\n * Content\n * ----------------------------------------------------------------------- */\n .wrapper {\n flex: 1;\n position: relative;\n overflow: hidden;\n }\n\n .content {\n height: 100%;\n overflow: auto;\n }\n\n /* -------------------------------------------------------------------------\n * Search\n * ----------------------------------------------------------------------- */\n .search {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n }\n\n /* In card mode, align search left instead of center */\n :host(.kr-table--card) .search {\n justify-content: flex-start;\n }\n\n .search-field {\n width: 100%;\n max-width: 400px;\n position: relative;\n display: flex;\n align-items: center;\n border: 1px solid #00000038;\n border-radius: 18px;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .search-field:focus-within {\n border-color: #163052;\n box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);\n }\n\n /* TODO: Uncomment when views dropdown is added\n .search-field:focus-within .views {\n border-color: #163052;\n }\n */\n\n .search-icon {\n position: absolute;\n left: 16px;\n width: 20px;\n height: 20px;\n color: #656871;\n pointer-events: none;\n }\n\n .search-input {\n height: 36px;\n padding: 0 16px 0 42px;\n border: none;\n border-radius: 16px;\n font-size: 14px;\n font-weight: 400;\n font-family: inherit;\n color: #163052;\n background: transparent;\n outline: none;\n flex: 1;\n min-width: 0;\n width: 100%;\n }\n\n .search-input::placeholder {\n color: #656871;\n font-weight: 400;\n }\n\n .search-input:focus {\n outline: none;\n }\n\n @container (max-width: 800px) {\n .search-field {\n max-width: 250px;\n }\n }\n\n .views {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 36px;\n padding: 0 16px;\n border: 1px solid #00000038;\n border-right: none;\n border-radius: 16px 0 0 16px;\n font-size: 14px;\n font-family: inherit;\n color: #163052;\n background: transparent;\n cursor: pointer;\n white-space: nowrap;\n transition: border-color 0.2s;\n }\n\n .views:hover {\n background: #e8f0f8;\n }\n\n .views svg {\n width: 16px;\n height: 16px;\n color: #163052;\n }\n\n /* -------------------------------------------------------------------------\n * Pagination\n * ----------------------------------------------------------------------- */\n .tools {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .pagination {\n display: flex;\n align-items: center;\n gap: 2px;\n }\n\n .pagination-info {\n font-size: 13px;\n color: var(--kr-primary);\n white-space: nowrap;\n }\n\n .pagination-icon {\n display: flex;\n color: var(--kr-primary);\n cursor: pointer;\n }\n\n .pagination-icon--disabled {\n opacity: 0.3;\n pointer-events: none;\n }\n\n .pagination-icon svg {\n width: 24px;\n height: 24px;\n }\n\n /* -------------------------------------------------------------------------\n * Header Icons\n * ----------------------------------------------------------------------- */\n .refresh,\n .header-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--kr-primary);\n background: #EBF1FA;\n cursor: pointer;\n padding: 6px;\n border-radius: 50%;\n transition: background 0.15s;\n }\n\n .refresh:hover,\n .header-icon:hover {\n background: #e8f0f8;\n }\n\n .refresh svg,\n .header-icon svg {\n width: 24px;\n height: 24px;\n }\n\n /* -------------------------------------------------------------------------\n * Column Picker\n * ----------------------------------------------------------------------- */\n .column-picker-wrapper {\n position: relative;\n }\n\n .column-picker {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 200px;\n max-height: calc(100vh - 120px);\n overflow-y: auto;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n padding: 8px 0;\n z-index: 100;\n display: none;\n transform-origin: top;\n }\n\n .column-picker.open {\n display: block;\n animation: column-picker-fade-in 150ms ease-out;\n }\n\n @keyframes column-picker-fade-in {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .column-picker-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 16px;\n cursor: pointer;\n white-space: nowrap;\n }\n\n .column-picker-item:hover {\n background: #f3f4f6;\n }\n\n .column-picker-checkbox {\n width: 16px;\n height: 16px;\n border: 1.5px solid #9ca3af;\n border-radius: 3px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: all 0.15s;\n }\n\n .column-picker-checkbox.checked {\n background: var(--kr-primary);\n border-color: var(--kr-primary);\n }\n\n .column-picker-checkbox svg {\n width: 12px;\n height: 12px;\n color: white;\n opacity: 0;\n }\n\n .column-picker-checkbox.checked svg {\n opacity: 1;\n }\n\n .column-picker-label {\n font-size: 14px;\n color: #374151;\n }\n\n /* -------------------------------------------------------------------------\n * Table Structure\n * ----------------------------------------------------------------------- */\n .table {\n display: grid;\n width: max-content;\n min-width: 100%;\n font-size: 14px;\n }\n\n .row {\n display: contents;\n }\n\n .row:hover .cell {\n background: #f9fafb;\n }\n\n .row--clickable {\n cursor: pointer;\n }\n\n .row--link {\n color: inherit;\n text-decoration: none;\n }\n\n .header-row {\n display: contents;\n }\n\n .cell {\n height: 48px;\n padding: 0 16px;\n display: flex;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n box-sizing: border-box;\n border-right: 1px solid #e5e7ebba;\n }\n\n .cell--actions {\n gap: 8px;\n }\n\n .header-cell {\n position: sticky;\n top: 0;\n height: 48px;\n padding: 0 16px;\n white-space: nowrap;\n box-sizing: border-box;\n background: #fff;\n border-top: 1px solid #e5e7ebba;\n border-bottom: 1px solid #e5e7ebba;\n border-right: 1px solid #e5e7ebba;\n font-weight: 600;\n color: #374151;\n display: flex;\n align-items: center;\n }\n\n .header-cell__resize {\n position: absolute;\n right: -7px;\n top: 0;\n bottom: 0;\n width: 14px;\n cursor: col-resize;\n z-index: 10;\n }\n\n .header-cell--sortable {\n user-select: none;\n }\n\n .header-cell__label {\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n line-height: 48px;\n }\n\n .header-cell__sort {\n flex-grow: 1;\n display: flex;\n align-items: center;\n height: 100%;\n margin-left: 6px;\n cursor: pointer;\n }\n\n .header-cell__sort-arrow {\n width: 16px;\n height: 16px;\n color: #374151;\n stroke: currentColor;\n stroke-width: 1px;\n }\n\n .header-cell__sort-arrow--ghost {\n opacity: 0;\n color: #374151;\n transition: opacity 0.15s;\n }\n\n .header-cell--sortable:hover .header-cell__sort-arrow--ghost {\n opacity: 0.4;\n }\n\n .header-cell__sort-priority {\n font-size: 10px;\n font-weight: 600;\n color: #374151;\n line-height: 1;\n }\n\n .cell {\n background: #fff;\n border-bottom: 1px solid #e5e7eb;\n color: #1f2937;\n }\n\n .cell--align-center {\n text-align: center;\n }\n\n .cell--align-right {\n text-align: right;\n }\n\n .cell--sticky-left,\n .cell--sticky-right {\n position: sticky;\n z-index: 1;\n }\n\n .header-cell--sticky-left,\n .header-cell--sticky-right {\n position: sticky;\n z-index: 3;\n }\n\n .header-cell--align-center {\n text-align: center;\n }\n\n .header-cell--align-right {\n text-align: right;\n }\n\n .header-cell--sticky-left-last,\n .cell--sticky-left-last {\n border-right: 1px solid #d1d5db;\n }\n\n .header-cell--sticky-right-first,\n .cell--sticky-right-first {\n border-left: 1px solid #d1d5db;\n }\n\n /* -------------------------------------------------------------------------\n * Scroll Mode: Edge\n * Padding scrolls with content, table can reach edges when scrolling\n * ----------------------------------------------------------------------- */\n /* Only add right padding when no horizontal scroll is needed */\n :host(.kr-table--scroll-edge):not(.kr-table--scroll-horizontal-available) .table {\n padding-right: 24px;\n }\n\n :host(.kr-table--scroll-edge) .header-row .header-cell {\n border-top: 1px solid #e5e7eb;\n }\n\n :host(.kr-table--scroll-edge) .header-row .header-cell:first-child,\n :host(.kr-table--scroll-edge) .row .cell:first-child {\n padding-left: 24px;\n }\n\n :host(.kr-table--scroll-edge) .header-row .header-cell:last-child,\n :host(.kr-table--scroll-edge) .row .cell:last-child {\n padding-right: 24px;\n }\n\n :host(.kr-table--scroll-edge) .filter-row .filter-cell:first-child .filter-cell__input {\n padding-left: 24px;\n }\n\n :host(.kr-table--scroll-edge) .filter-row .filter-cell:last-child .filter-cell__input {\n padding-right: 52px;\n }\n\n /* -------------------------------------------------------------------------\n * Scroll Mode: Overlay\n * Fixed padding with overlay elements that hide content at edges\n * ----------------------------------------------------------------------- */\n :host(.kr-table--scroll-overlay) .content {\n padding-left: 24px;\n }\n\n .overlay-left,\n .overlay-right {\n display: none;\n position: absolute;\n top: 0;\n bottom: 0;\n width: 24px;\n z-index: 5;\n pointer-events: none;\n transition: box-shadow 0.15s ease;\n }\n\n :host(.kr-table--scroll-overlay) .overlay-left,\n :host(.kr-table--scroll-overlay) .overlay-right {\n display: block;\n }\n\n .overlay-left {\n left: 0;\n background: #fff;\n }\n\n .overlay-right {\n right: 0;\n background: #fff;\n }\n\n :host(.kr-table--scroll-overlay.kr-table--scroll-left-available:not(.kr-table--sticky-left)) .overlay-left {\n border-right: 1px solid #d1d5db54;\n }\n\n :host(.kr-table--scroll-overlay.kr-table--scroll-right-available:not(.kr-table--sticky-right)) .overlay-right {\n border-left: 1px solid #d1d5db54;\n }\n\n /* -------------------------------------------------------------------------\n * Status (Loading, Error, Empty)\n * ----------------------------------------------------------------------- */\n .status {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n font-weight: 400;\n color: #5f6368;\n pointer-events: none;\n }\n\n .status--error {\n color: #dc2626;\n }\n\n /* -------------------------------------------------------------------------\n * Filter Row\n * ----------------------------------------------------------------------- */\n .filter-row {\n display: contents;\n }\n\n .filter-cell {\n position: sticky;\n top: 48px;\n z-index: 2;\n height: 40px;\n padding: 0;\n display: flex;\n align-items: center;\n background: #fff;\n border-bottom: 1px solid #d1d5db;\n border-right: 1px solid #e5e7ebba;\n box-sizing: border-box;\n box-shadow: inset 0 0 0 0 #163052;\n transition: box-shadow 0.15s;\n }\n\n .filter-cell:focus-within {\n box-shadow: inset 0 0 0 1px #163052;\n }\n\n\n .filter-cell--sticky-left,\n .filter-cell--sticky-right {\n position: sticky;\n z-index: 3;\n }\n\n .filter-cell--sticky-right-first {\n border-left: 1px solid #d1d5db;\n }\n\n .filter-cell__wrapper {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n }\n\n .filter-cell__input {\n width: 100%;\n height: 100%;\n padding: 0 60px 0 16px;\n border: none;\n border-radius: 0;\n font-size: 14px;\n font-family: inherit;\n color: #111827;\n background: transparent;\n outline: none;\n }\n\n .filter-cell__input--invalid {\n border-color: #dc2626;\n }\n\n .filter-cell__input--invalid:focus {\n border-color: #dc2626;\n box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.1);\n }\n\n .filter-cell__input::placeholder {\n color: #9ca3af;\n font-size: 13px;\n }\n\n .filter-cell__clear {\n position: absolute;\n right: 36px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: #6b7280;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n }\n\n .filter-cell__clear:hover {\n background: #e5e7eb;\n color: #374151;\n }\n\n .filter-cell__clear svg {\n width: 16px;\n height: 16px;\n }\n\n .filter-cell__advanced {\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: #163052;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n }\n\n .filter-cell__advanced:hover {\n background: #e5e7eb;\n }\n\n .filter-cell__advanced svg {\n width: 16px;\n height: 16px;\n }\n\n .filter-cell__advanced--opened {\n background: #163052;\n color: #fff;\n }\n\n .filter-cell__advanced--opened:hover {\n background: #1a3a5f;\n color: #fff;\n }\n\n /* -------------------------------------------------------------------------\n * Filter Panel (Advanced)\n * ----------------------------------------------------------------------- */\n .filter-panel {\n position: fixed;\n min-width: 320px;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n z-index: 100;\n animation: filter-panel-fade-in 150ms ease-out;\n }\n\n @keyframes filter-panel-fade-in {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .filter-panel__content {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .filter-panel__actions {\n padding: 12px 16px;\n border-top: 1px solid #e5e7eb;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 12px;\n }\n\n\n .filter-panel__input {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n color: #111827;\n background: #fff;\n outline: none;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .filter-panel__input:focus {\n border-color: #163052;\n box-shadow: 0 0 0 2px rgba(22, 48, 82, 0.1);\n }\n\n .filter-panel__input::placeholder {\n color: #9ca3af;\n }\n\n .filter-panel__textarea {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n color: #111827;\n background: #fff;\n outline: none;\n resize: vertical;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .filter-panel__textarea:focus {\n border-color: #163052;\n box-shadow: 0 0 0 2px rgba(22, 48, 82, 0.1);\n }\n\n .filter-panel__textarea::placeholder {\n color: #9ca3af;\n }\n\n /* -------------------------------------------------------------------------\n * Bucket List\n * ----------------------------------------------------------------------- */\n .buckets {\n max-height: 280px;\n overflow-y: auto;\n padding: 8px 0;\n }\n\n .bucket {\n display: flex;\n align-items: center;\n gap: 16px;\n height: 32px;\n padding: 0 16px;\n cursor: pointer;\n transition: background 0.1s;\n }\n\n .bucket:hover {\n background: #f3f4f6;\n }\n\n .bucket__checkbox {\n width: 16px;\n height: 16px;\n border: 1.5px solid #9ca3af;\n border-radius: 3px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: all 0.15s;\n }\n\n .bucket__checkbox--checked {\n background: var(--kr-primary, #163052);\n border-color: var(--kr-primary, #163052);\n }\n\n .bucket__checkbox svg {\n width: 12px;\n height: 12px;\n color: white;\n }\n\n .bucket__label {\n flex: 1;\n font-size: 14px;\n color: #000;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .bucket__count {\n font-size: 14px;\n color: #000;\n flex-shrink: 0;\n }\n\n .bucket-empty {\n font-size: 14px;\n color: #000;\n padding: 16px;\n }\n\n /* Card variant — self-contained card with border, auto height, left-aligned search */\n :host(.kr-table--card) {\n height: auto;\n /* overflow: visible; */\n overflow: hidden;\n /* border: 1px solid #e5e7eb; */\n /* border-radius: 8px; */\n border: 1px solid #c6c6cd;\n border-radius: 12px;\n background: #fff;\n }\n\n .card-header {\n padding: 24px 24px 16px;\n }\n\n .card-header__title {\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n margin: 0;\n }\n\n .card-header__description {\n font-size: 14px;\n color: #1f2937;\n margin: 12px 0 0;\n }\n\n :host(.kr-table--card) .header {\n margin: 0 24px;\n }\n\n :host(.kr-table--card) .wrapper {\n flex: none;\n overflow: visible;\n min-height: 200px;\n }\n\n :host(.kr-table--card) .content {\n height: auto;\n }\n\n `];\n__decorate([\n state()\n], KRTable.prototype, \"_data\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_dataState\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_page\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_pageSize\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_totalItems\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_totalPages\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_searchQuery\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_canScrollLeft\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_canScrollRight\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_canScrollHorizontal\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_columnPickerOpen\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_filterPanelOpened\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_filterPanelTab\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_buckets\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_sorts\", void 0);\n__decorate([\n property({ type: Object })\n], KRTable.prototype, \"def\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRTable.prototype, \"variant\", void 0);\nKRTable = __decorate([\n customElement('kr-table')\n], KRTable);\nexport { KRTable };\n//# sourceMappingURL=table.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * A circular loading indicator component that shows activity or ongoing processes.\n *\n * @example\n * ```html\n * <kr-spinner></kr-spinner>\n * <kr-spinner size=\"lg\"></kr-spinner>\n * <kr-spinner color=\"light\"></kr-spinner>\n * <kr-spinner color=\"#ff5500\"></kr-spinner>\n * ```\n */\nlet KRSpinner = class KRSpinner extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The size of the spinner. Can be 'sm', 'md', 'lg', 'xl', or any valid CSS size value (e.g., '100px', '2rem').\n */\n this.size = 'md';\n /**\n * The color of the spinner. Can be 'dark', 'light', or any valid CSS color value.\n */\n this.color = 'dark';\n }\n render() {\n var normalizedSize = '';\n var normalizedColor = '';\n if (this.size == 'sm') {\n normalizedSize = '16px';\n }\n else if (this.size == 'md') {\n normalizedSize = '24px';\n }\n else if (this.size == 'lg') {\n normalizedSize = '32px';\n }\n else if (this.size == 'xl') {\n normalizedSize = '48px';\n }\n else {\n normalizedSize = this.size;\n }\n if (this.color == 'dark') {\n normalizedColor = '#163052';\n }\n else if (this.color == 'light') {\n normalizedColor = '#ffffff';\n }\n else {\n normalizedColor = this.color;\n }\n return html `\n <svg\n class=\"spinner\"\n style=${`width: ${normalizedSize}; height: ${normalizedSize}; color: ${normalizedColor}`}\n viewBox=\"0 0 44 44\"\n role=\"status\"\n aria-label=\"Loading\"\n >\n <circle\n class=\"circle\"\n cx=\"22\"\n cy=\"22\"\n r=\"20\"\n fill=\"none\"\n stroke-width=\"4\"\n />\n </svg>\n `;\n }\n};\nKRSpinner.styles = css `\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .spinner {\n display: block;\n animation: spin 1.4s linear infinite;\n }\n\n .spinner .circle {\n animation: dash 1.4s ease-in-out infinite;\n stroke-dasharray: 80, 200;\n stroke-dashoffset: 0;\n }\n\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n @keyframes dash {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 100, 200;\n stroke-dashoffset: -15;\n }\n 100% {\n stroke-dasharray: 100, 200;\n stroke-dashoffset: -125;\n }\n }\n\n .circle {\n stroke: currentColor;\n stroke-linecap: round;\n }\n `;\n__decorate([\n property({ type: String, reflect: true })\n], KRSpinner.prototype, \"size\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRSpinner.prototype, \"color\", void 0);\nKRSpinner = __decorate([\n customElement('kr-spinner')\n], KRSpinner);\nexport { KRSpinner };\n//# sourceMappingURL=spinner.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * A linear loading indicator that shows activity or ongoing processes.\n *\n * @example\n * ```html\n * <kr-progress-bar></kr-progress-bar>\n * <kr-progress-bar color=\"light\"></kr-progress-bar>\n * <kr-progress-bar color=\"#ff5500\"></kr-progress-bar>\n * <kr-progress-bar color=\"#ff5500\" trackColor=\"#eeeeee\"></kr-progress-bar>\n * ```\n */\nlet KRProgressBar = class KRProgressBar extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The color of the progress bar. Can be 'dark', 'light', or any valid CSS color value.\n */\n this.color = 'dark';\n }\n render() {\n let normalizedColor = '';\n let normalizedTrackColor = '';\n if (this.color === 'dark') {\n normalizedColor = '#163052';\n }\n else if (this.color === 'light') {\n normalizedColor = '#ffffff';\n }\n else {\n normalizedColor = this.color;\n }\n if (this.trackColor) {\n normalizedTrackColor = this.trackColor;\n }\n else if (this.color === 'light') {\n normalizedTrackColor = '#ffffff4d';\n }\n else {\n normalizedTrackColor = '#0000001a';\n }\n return html `\n <div\n class=\"progress-bar\"\n style=${`background: ${normalizedTrackColor}`}\n role=\"status\"\n aria-label=\"Loading\"\n >\n <div class=\"fill\" style=${`background: ${normalizedColor}`}></div>\n </div>\n `;\n }\n};\nKRProgressBar.styles = css `\n :host {\n display: block;\n width: 100%;\n overflow: hidden;\n }\n\n .progress-bar {\n position: relative;\n height: 4px;\n border-radius: 2px;\n overflow: hidden;\n }\n\n /* Fill (primary indicator) */\n .fill {\n position: absolute;\n top: 0;\n height: 100%;\n width: 40%;\n border-radius: inherit;\n animation: indeterminate 1.5s ease-in-out infinite;\n }\n\n @keyframes indeterminate {\n 0% {\n left: -40%;\n }\n 100% {\n left: 100%;\n }\n }\n `;\n__decorate([\n property({ type: String, reflect: true })\n], KRProgressBar.prototype, \"color\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRProgressBar.prototype, \"trackColor\", void 0);\nKRProgressBar = __decorate([\n customElement('kr-progress-bar')\n], KRProgressBar);\nexport { KRProgressBar };\n//# sourceMappingURL=progress-bar.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar KRFilePreview_1;\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../button/button.js';\n/**\n * A full-screen file preview overlay.\n *\n * Supports image files with zoom/pan, PDFs via iframe, and a download\n * fallback for other file types. Use the static `open()` method to show\n * the preview imperatively.\n *\n * @fires close - Fired when the preview is closed\n * @fires download - Fired when the download button is clicked. Detail: `{ src, name }`\n *\n * @example\n * ```ts\n * import { KRFilePreview } from '@kodaris/krubble-components/file-preview';\n *\n * KRFilePreview.open({ src: '/files/photo.png', name: 'photo.png' });\n * ```\n */\nlet KRFilePreview = KRFilePreview_1 = class KRFilePreview extends LitElement {\n constructor() {\n super(...arguments);\n this._zoom = 100;\n this._panX = 0;\n this._panY = 0;\n this._dragging = false;\n this._dragStartX = 0;\n this._dragStartY = 0;\n this._panStartX = 0;\n this._panStartY = 0;\n /** URL of the file to preview */\n this.src = '';\n /** Display name shown in the toolbar */\n this.name = '';\n this._zoomLevel = 100;\n this._textContent = null;\n this._handleKeydown = (e) => {\n if (e.key === 'Escape') {\n this._close();\n }\n };\n this._handleDragMove = (e) => {\n if (!this._dragging) {\n return;\n }\n this._panX = this._panStartX + (e.clientX - this._dragStartX);\n this._panY = this._panStartY + (e.clientY - this._dragStartY);\n this.requestUpdate();\n };\n this._handleDragEnd = () => {\n this._dragging = false;\n document.removeEventListener('mousemove', this._handleDragMove);\n document.removeEventListener('mouseup', this._handleDragEnd);\n };\n }\n /**\n * Open a file preview overlay.\n * @param options - The file source URL and display name\n * @returns The created file-preview element\n */\n static open(options) {\n if (this._activePreview) {\n this._activePreview._close();\n }\n const preview = document.createElement('kr-file-preview');\n preview.src = options.src;\n preview.name = options.name;\n document.body.appendChild(preview);\n this._activePreview = preview;\n return preview;\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('keydown', this._handleKeydown);\n if (this._isText()) {\n this._loadTextContent();\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._handleKeydown);\n }\n _close() {\n this.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }));\n if (KRFilePreview_1._activePreview === this) {\n KRFilePreview_1._activePreview = null;\n }\n this.remove();\n }\n _handleDownload() {\n this.dispatchEvent(new CustomEvent('download', {\n bubbles: true,\n composed: true,\n detail: { src: this.src, name: this.name },\n }));\n }\n _handleZoomIn() {\n this._zoomLevel = Math.min(this._zoomLevel + 25, 300);\n if (this._zoomLevel <= 100) {\n this._panX = 0;\n this._panY = 0;\n }\n }\n _handleZoomOut() {\n this._zoomLevel = Math.max(this._zoomLevel - 25, 25);\n if (this._zoomLevel <= 100) {\n this._panX = 0;\n this._panY = 0;\n }\n }\n _handleZoomReset() {\n this._zoomLevel = 100;\n this._panX = 0;\n this._panY = 0;\n }\n _handleDragStart(e) {\n if (this._zoomLevel <= 100) {\n return;\n }\n e.preventDefault();\n this._dragging = true;\n this._dragStartX = e.clientX;\n this._dragStartY = e.clientY;\n this._panStartX = this._panX;\n this._panStartY = this._panY;\n document.addEventListener('mousemove', this._handleDragMove);\n document.addEventListener('mouseup', this._handleDragEnd);\n }\n _handleBackdropClick(e) {\n if (e.target === e.currentTarget) {\n this._close();\n }\n }\n _getExtension() {\n return (this.name || '').split('.').pop()?.toLowerCase() || '';\n }\n _isImage() {\n return ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'].includes(this._getExtension());\n }\n _isPdf() {\n return this._getExtension() === 'pdf';\n }\n _isText() {\n return ['csv', 'txt', 'json', 'xml', 'log', 'md', 'yml', 'yaml', 'ini', 'cfg', 'conf', 'env', 'sh', 'bat'].includes(this._getExtension());\n }\n _isCsv() {\n return this._getExtension() === 'csv';\n }\n _loadTextContent() {\n fetch(this.src)\n .then(response => response.text())\n .then(text => {\n if (this._isCsv()) {\n this._textContent = this._formatCsv(text);\n }\n else {\n this._textContent = text;\n }\n })\n .catch(() => {\n this._textContent = 'Failed to load file content.';\n });\n }\n _formatCsv(text) {\n const lines = text.trim().split('\\n');\n if (!lines.length) {\n return text;\n }\n const rows = lines.map(line => line.split(',').map(cell => cell.trim()));\n const colCount = Math.max(...rows.map(row => row.length));\n // Find max width per column\n const colWidths = [];\n for (let c = 0; c < colCount; c++) {\n let max = 0;\n for (const row of rows) {\n const len = (row[c] || '').length;\n if (len > max) {\n max = len;\n }\n }\n colWidths.push(max);\n }\n // Pad each cell and join\n return rows.map(row => {\n return row.map((cell, i) => cell.padEnd(colWidths[i] || 0)).join(' ');\n }).join('\\n');\n }\n _getFallbackIconClass(ext) {\n if (['doc', 'docx', 'rtf', 'txt'].includes(ext)) {\n return 'fallback__icon--doc';\n }\n if (['xls', 'xlsx', 'csv'].includes(ext)) {\n return 'fallback__icon--xls';\n }\n if (['zip', 'rar', '7z', 'gz', 'tar'].includes(ext)) {\n return 'fallback__icon--zip';\n }\n return 'fallback__icon--default';\n }\n _getFallbackIcon(ext) {\n if (['doc', 'docx', 'rtf', 'txt'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6zm2-6h8v2H8v-2zm0-4h8v2H8v-2zm0 8h5v2H8v-2z\"/></svg>`;\n }\n if (['xls', 'xlsx', 'csv'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 2v3H5V5h14zm0 5v4H5v-4h14zM5 19v-3h14v3H5zm2-8h4v2H7v-2zm0 5h4v2H7v-2z\"/></svg>`;\n }\n if (['zip', 'rar', '7z', 'gz', 'tar'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-8-4h2v2h-2v-2zm0-4h2v2h-2v-2zm-2 2h2v2h-2v-2z\"/></svg>`;\n }\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\"/></svg>`;\n }\n render() {\n let content;\n if (this._isImage()) {\n const scale = this._zoomLevel / 100;\n const translateX = this._panX / scale;\n const translateY = this._panY / scale;\n const cursor = this._zoomLevel > 100 ? 'grab' : 'default';\n content = html `<img\n class=\"body__image\"\n src=\"${this.src}\"\n alt=\"${this.name}\"\n style=\"transform: scale(${scale}) translate(${translateX}px, ${translateY}px); cursor: ${cursor}\"\n @mousedown=${this._handleDragStart}\n />`;\n }\n else if (this._isPdf()) {\n content = html `<iframe class=\"body__iframe\" src=\"${this.src}\"></iframe>`;\n }\n else if (this._isText()) {\n if (this._textContent === null) {\n content = html `<div class=\"body__text-loading\">Loading...</div>`;\n }\n else {\n content = html `<pre class=\"body__text\">${this._textContent}</pre>`;\n }\n }\n else {\n const ext = this._getExtension();\n content = html `\n <div class=\"fallback\">\n <div class=\"fallback__icon ${this._getFallbackIconClass(ext)}\">\n ${this._getFallbackIcon(ext)}\n </div>\n <div class=\"fallback__name\">${this.name}</div>\n <div class=\"fallback__hint\">No preview available for this file type</div>\n <kr-button color=\"primary\" @click=${this._handleDownload}>\n <svg class=\"fallback__btn\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M19 9h-4V3H9v6H5l7 7 7-7zm-8 2V5h2v6h1.17L12 13.17 9.83 11H11zm-6 7h14v2H5v-2z\"/></svg>\n Download\n </kr-button>\n </div>\n `;\n }\n return html `\n <div class=\"toolbar\">\n <div class=\"toolbar__name\">${this.name}</div>\n <div class=\"toolbar__controls\">\n ${this._isImage() ? html `\n <button class=\"toolbar__btn\" @click=${this._handleZoomOut} title=\"Zoom out\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7V9z\"/></svg>\n </button>\n <div class=\"toolbar__zoom-label\" @click=${this._handleZoomReset}>${this._zoomLevel}%</div>\n <button class=\"toolbar__btn\" @click=${this._handleZoomIn} title=\"Zoom in\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm-2-5h2V7h1v2h2v1h-2v2H9v-2H7V9z\"/></svg>\n </button>\n <div class=\"toolbar__separator\"></div>\n ` : nothing}\n <button class=\"toolbar__btn\" @click=${this._handleDownload} title=\"Download\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M19 9h-4V3H9v6H5l7 7 7-7zm-8 2V5h2v6h1.17L12 13.17 9.83 11H11zm-6 7h14v2H5v-2z\"/></svg>\n </button>\n <button class=\"toolbar__btn\" @click=${() => this._close()} title=\"Close\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>\n </button>\n </div>\n </div>\n <div class=\"body\" @click=${this._handleBackdropClick}>\n ${content}\n </div>\n `;\n }\n};\nKRFilePreview.styles = css `\n *,\n *::after,\n *::before,\n :host {\n box-sizing: border-box;\n }\n\n :host {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.85);\n display: flex;\n flex-direction: column;\n z-index: 10000;\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n height: 56px;\n padding: 0 24px;\n flex-shrink: 0;\n }\n\n .toolbar__name {\n color: white;\n font-size: 16px;\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-right: auto;\n }\n\n .toolbar__controls {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .toolbar__btn {\n width: 40px;\n height: 40px;\n border: none;\n border-radius: 50%;\n background: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n }\n\n .toolbar__btn:hover {\n background: rgba(255, 255, 255, 0.15);\n }\n\n .toolbar__btn svg {\n width: 24px;\n height: 24px;\n fill: white;\n }\n\n .toolbar__zoom-label {\n color: white;\n font-size: 13px;\n min-width: 40px;\n text-align: center;\n user-select: none;\n cursor: pointer;\n }\n\n .toolbar__separator {\n width: 1px;\n height: 24px;\n background: rgba(255, 255, 255, 0.25);\n margin: 0 8px;\n }\n\n .body {\n flex: 1;\n overflow: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 36px 36px 36px;\n }\n\n .body__image {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n transition: transform 0.15s ease;\n transform-origin: center center;\n }\n\n .body__iframe {\n width: 80vw;\n height: 100%;\n border: 1px solid #5e5e5e;\n border-radius: 4px;\n background: white;\n }\n\n .body__text {\n width: 80vw;\n max-height: 100%;\n overflow: auto;\n background: white;\n color: #000;\n border-radius: 4px;\n padding: 24px;\n font-family: monospace;\n font-size: 14px;\n line-height: 1.6;\n white-space: pre;\n margin: 0;\n tab-size: 4;\n }\n\n .body__text-loading {\n color: #888;\n font-style: italic;\n font-family: 'Inter', sans-serif;\n font-size: 14px;\n }\n\n .fallback {\n background: white;\n border-radius: 12px;\n padding: 48px 64px;\n text-align: center;\n color: #000;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n }\n\n .fallback__icon {\n width: 72px;\n height: 72px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .fallback__icon svg {\n width: 36px;\n height: 36px;\n }\n\n .fallback__icon--doc { background: #dbeafe; color: #2563eb; }\n .fallback__icon--xls { background: #d1fae5; color: #16a34a; }\n .fallback__icon--zip { background: #fef3c7; color: #b45309; }\n .fallback__icon--default { background: #f4f5f7; color: #555; }\n\n .fallback__name {\n font-size: 18px;\n font-weight: 600;\n max-width: 320px;\n word-break: break-all;\n }\n\n .fallback__hint {\n font-size: 14px;\n color: black;\n margin-bottom: 6px;\n }\n\n .fallback__btn svg {\n width: 18px;\n height: 18px;\n fill: currentColor;\n }\n `;\nKRFilePreview._activePreview = null;\n__decorate([\n property({ type: String })\n], KRFilePreview.prototype, \"src\", void 0);\n__decorate([\n property({ type: String })\n], KRFilePreview.prototype, \"name\", void 0);\n__decorate([\n state()\n], KRFilePreview.prototype, \"_zoomLevel\", void 0);\n__decorate([\n state()\n], KRFilePreview.prototype, \"_textContent\", void 0);\nKRFilePreview = KRFilePreview_1 = __decorate([\n customElement('kr-file-preview')\n], KRFilePreview);\nexport { KRFilePreview };\n//# sourceMappingURL=file-preview.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { KRFilePreview } from '../file-preview/file-preview.js';\n/**\n * A file list component that displays files with extension-based icons,\n * download/delete actions, and built-in file preview.\n *\n * Clicking a file name opens a full-screen preview via `KRFilePreview.open()`.\n *\n * @fires file-click - Fired when a file name is clicked. Detail: `{ file }`\n * @fires download - Fired when the download icon is clicked. Detail: `{ file }`\n * @fires delete - Fired when the delete icon is clicked. Detail: `{ file }`\n *\n * @example\n * ```ts\n * import '@kodaris/krubble-components/file-list';\n *\n * const list = document.querySelector('kr-file-list');\n * list.files = [\n * { name: 'photo.png', url: '/files/photo.png', date: '2024-01-15' },\n * { name: 'report.pdf', url: '/files/report.pdf', date: '2024-01-10' },\n * ];\n * ```\n */\nlet KRFileList = class KRFileList extends LitElement {\n constructor() {\n super(...arguments);\n /** Array of file objects to display */\n this.files = [];\n /** Message displayed when the file list is empty */\n this.emptyMessage = 'No files';\n }\n _handleFileClick(file) {\n this.dispatchEvent(new CustomEvent('file-click', {\n bubbles: true,\n composed: true,\n detail: { file },\n }));\n if (file.url) {\n const preview = KRFilePreview.open({ src: file.url, name: file.name });\n preview.addEventListener('download', () => {\n this._handleDownload(file);\n });\n }\n }\n _handleDownload(file) {\n this.dispatchEvent(new CustomEvent('download', {\n bubbles: true,\n composed: true,\n detail: { file },\n }));\n }\n _handleDelete(file) {\n this.dispatchEvent(new CustomEvent('delete', {\n bubbles: true,\n composed: true,\n detail: { file },\n }));\n }\n _getExtension(name) {\n return name.split('.').pop()?.toLowerCase() || '';\n }\n _getExtClass(ext) {\n if (['pdf'].includes(ext)) {\n return 'file-list__ext--pdf';\n }\n if (['doc', 'docx', 'rtf', 'txt'].includes(ext)) {\n return 'file-list__ext--doc';\n }\n if (['xls', 'xlsx', 'csv'].includes(ext)) {\n return 'file-list__ext--xls';\n }\n if (['zip', 'rar', '7z', 'gz', 'tar'].includes(ext)) {\n return 'file-list__ext--zip';\n }\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'].includes(ext)) {\n return 'file-list__ext--img';\n }\n return 'file-list__ext--default';\n }\n _getExtIcon(ext) {\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86-3 3.87L9 13.14 6 17h12l-3.86-5.14z\"/></svg>`;\n }\n if (['pdf'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-8.5 7.5c0 .83-.67 1.5-1.5 1.5H9v2H7.5V7H10c.83 0 1.5.67 1.5 1.5v1zm5 2c0 .83-.67 1.5-1.5 1.5h-2.5V7H15c.83 0 1.5.67 1.5 1.5v3zm4-3H19v1h1.5V11H19v2h-1.5V7h3v1.5zM9 9.5h1v-1H9v1zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm10 5.5h1v-3h-1v3z\"/></svg>`;\n }\n if (['doc', 'docx', 'rtf', 'txt'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6zm2-6h8v2H8v-2zm0-4h8v2H8v-2zm0 8h5v2H8v-2z\"/></svg>`;\n }\n if (['xls', 'xlsx', 'csv'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 2v3H5V5h14zm0 5v4H5v-4h14zM5 19v-3h14v3H5zm2-8h4v2H7v-2zm0 5h4v2H7v-2z\"/></svg>`;\n }\n if (['zip', 'rar', '7z', 'gz', 'tar'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-8-4h2v2h-2v-2zm0-4h2v2h-2v-2zm-2 2h2v2h-2v-2z\"/></svg>`;\n }\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\"/></svg>`;\n }\n render() {\n if (!this.files.length) {\n return html `<div class=\"file-list__empty\">${this.emptyMessage}</div>`;\n }\n return html `\n <div class=\"file-list\">\n ${this.files.map(file => {\n const ext = this._getExtension(file.name);\n const metaText = file.meta || file.date || '';\n return html `\n <div class=\"file-list__item\">\n <div class=\"file-list__ext ${this._getExtClass(ext)}\">${this._getExtIcon(ext)}</div>\n <div class=\"file-list__info\">\n <a class=\"file-list__name\" @click=${() => this._handleFileClick(file)}>${file.name}</a>\n ${metaText ? html `<div class=\"file-list__meta\">${metaText}</div>` : ''}\n </div>\n <div class=\"file-list__actions\">\n <svg class=\"file-list__action\" @click=${() => this._handleDownload(file)} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" title=\"Download\"><path d=\"M19 9h-4V3H9v6H5l7 7 7-7zm-8 2V5h2v6h1.17L12 13.17 9.83 11H11zm-6 7h14v2H5v-2z\"/></svg>\n <svg class=\"file-list__action file-list__action--delete\" @click=${() => this._handleDelete(file)} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" title=\"Delete\"><path d=\"M16 9v10H8V9h8m-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z\"/></svg>\n </div>\n </div>\n `;\n })}\n </div>\n `;\n }\n};\nKRFileList.styles = css `\n *,\n *::after,\n *::before,\n :host {\n box-sizing: border-box;\n }\n\n :host {\n display: block;\n }\n\n .file-list {\n display: flex;\n flex-direction: column;\n }\n\n .file-list__item {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px 20px;\n background: white;\n transition: background 0.15s;\n }\n\n .file-list__item:not(:last-child) {\n border-bottom: 1px solid #eeeff1;\n }\n\n .file-list__item:hover {\n background: #f8f9fa;\n }\n\n .file-list__ext {\n width: 36px;\n height: 36px;\n flex-shrink: 0;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n }\n\n .file-list__ext svg {\n width: 20px;\n height: 20px;\n }\n\n .file-list__ext--img { background: #fde8e8; color: #d93025; }\n .file-list__ext--pdf { background: #fde8e8; color: #c0392b; }\n .file-list__ext--doc { background: #dbeafe; color: #2563eb; }\n .file-list__ext--xls { background: #d1fae5; color: #16a34a; }\n .file-list__ext--zip { background: #fef3c7; color: #b45309; }\n .file-list__ext--default { background: #f4f5f7; color: #555; }\n\n .file-list__info {\n flex: 1;\n min-width: 0;\n }\n\n .file-list__name {\n font-weight: 500;\n color: #000;\n text-decoration: none;\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n font-size: 14px;\n }\n\n .file-list__name:hover {\n color: #000;\n text-decoration: underline;\n }\n\n .file-list__meta {\n font-size: 13px;\n color: #000;\n margin-top: 6px;\n }\n\n .file-list__actions {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n }\n\n .file-list__action {\n width: 24px;\n height: 24px;\n fill: #666;\n cursor: pointer;\n transition: fill 0.15s;\n }\n\n .file-list__action:hover {\n fill: #000;\n }\n\n\n .file-list__empty {\n color: #000;\n font-size: 14px;\n font-style: italic;\n padding: 20px;\n }\n `;\n__decorate([\n property({ type: Array })\n], KRFileList.prototype, \"files\", void 0);\n__decorate([\n property({ type: String, attribute: 'empty-message' })\n], KRFileList.prototype, \"emptyMessage\", void 0);\nKRFileList = __decorate([\n customElement('kr-file-list')\n], KRFileList);\nexport { KRFileList };\n//# sourceMappingURL=file-list.js.map","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>o,n=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,e={HTML:1,SVG:2,MATHML:3},l=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,d=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,f=o=>o?._$litDirective$,r=o=>void 0===o.strings,s=()=>document.createComment(\"\"),v=(o,n,e)=>{const l=o._$AA.parentNode,d=void 0===n?o._$AB:n._$AA;if(void 0===e){const i=l.insertBefore(s(),d),n=l.insertBefore(s(),d);e=new t(i,n,o,o.options)}else{const t=e._$AB.nextSibling,n=e._$AM,c=n!==o;if(c){let t;e._$AQ?.(o),e._$AM=o,void 0!==e._$AP&&(t=o._$AU)!==n._$AU&&e._$AP(t)}if(t!==d||c){let o=e._$AA;for(;o!==t;){const t=i(o).nextSibling;i(l).insertBefore(o,d),o=t}}}return e},u=(o,t,i=o)=>(o._$AI(t,i),o),m={},p=(o,t=m)=>o._$AH=t,M=o=>o._$AH,h=o=>{o._$AR(),o._$AA.remove()},j=o=>{o._$AR()};export{e as TemplateResultType,j as clearPart,M as getCommittedValue,f as getDirectiveClass,v as insertPart,d as isCompiledTemplateResult,c as isDirectiveResult,n as isPrimitive,r as isSingleExpression,l as isTemplateResult,h as removePart,u as setChildPartValue,p as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{noChange as r,nothing as e}from\"../lit-html.js\";import{directive as i,Directive as t,PartType as n}from\"../directive.js\";import{isSingleExpression as o,setCommittedValue as s}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const l=i(class extends t{constructor(r){if(super(r),r.type!==n.PROPERTY&&r.type!==n.ATTRIBUTE&&r.type!==n.BOOLEAN_ATTRIBUTE)throw Error(\"The `live` directive is not allowed on child or event bindings\");if(!o(r))throw Error(\"`live` bindings can only contain a single expression\")}render(r){return r}update(i,[t]){if(t===r||t===e)return t;const o=i.element,l=i.name;if(i.type===n.PROPERTY){if(t===o[l])return r}else if(i.type===n.BOOLEAN_ATTRIBUTE){if(!!t===o.hasAttribute(l))return r}else if(i.type===n.ATTRIBUTE&&o.getAttribute(l)===t+\"\")return r;return s(i),t}});export{l as live};\n//# sourceMappingURL=live.js.map\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\n/**\n * A text field component that works with native browser forms.\n *\n * Uses ElementInternals for form association, allowing the component\n * to participate in form submission, validation, and reset.\n *\n * Native input and change events bubble up from the inner input element.\n */\nlet KRTextField = class KRTextField extends LitElement {\n constructor() {\n super();\n /**\n * The input label text\n */\n this.label = '';\n /**\n * The input name for form submission\n */\n this.name = '';\n /**\n * The current value\n */\n this.value = '';\n /**\n * Placeholder text\n */\n this.placeholder = '';\n /**\n * Input type (text, email, password, tel, url, search)\n */\n this.type = 'text';\n /**\n * Whether the field is required\n */\n this.required = false;\n /**\n * Whether the field is disabled\n */\n this.disabled = false;\n /**\n * Whether the field is readonly\n */\n this.readonly = false;\n /**\n * Autocomplete attribute value\n */\n this.autocomplete = '';\n /**\n * Helper text shown below the input\n */\n this.hint = '';\n this._touched = false;\n this._dirty = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n // Form-associated custom element callbacks\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n get willValidate() {\n return this._internals.willValidate;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._touched = false;\n this._dirty = false;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n }\n _updateValidity() {\n if (this._input) {\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n }\n }\n _handleInput(e) {\n this.value = e.target.value;\n this._dirty = true;\n this._internals.setFormValue(this.value);\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n }\n _handleChange(e) {\n this.value = e.target.value;\n this._internals.setFormValue(this.value);\n }\n _handleBlur() {\n this._touched = true;\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n }\n render() {\n let validationMessage = '';\n if (this._touched && this._input && !this._input.validity.valid) {\n validationMessage = this._input.validationMessage;\n }\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label for=\"input\">\n ${this.label}\n ${this.required ? html `<span class=\"required\" aria-hidden=\"true\">*</span>` : ''}\n </label>\n `\n : ''}\n <input\n id=\"input\"\n class=${classMap({\n 'input--invalid': this._touched && this._input && !this._input.validity.valid\n })}\n type=${this.type}\n name=${this.name}\n .value=${live(this.value)}\n placeholder=${this.placeholder}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n minlength=${ifDefined(this.minlength)}\n maxlength=${ifDefined(this.maxlength)}\n pattern=${ifDefined(this.pattern)}\n autocomplete=${ifDefined(this.autocomplete || undefined)}\n @input=${this._handleInput}\n @change=${this._handleChange}\n @blur=${this._handleBlur}\n />\n ${validationMessage\n ? html `<div class=\"validation-message\">${validationMessage}</div>`\n : this.hint\n ? html `<div class=\"hint\">${this.hint}</div>`\n : ''}\n </div>\n `;\n }\n // Public methods for programmatic control\n focus() {\n this._input?.focus();\n }\n blur() {\n this._input?.blur();\n }\n select() {\n this._input?.select();\n }\n};\nKRTextField.styles = css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-text-field-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n input {\n font-family: inherit;\n font-size: 14px;\n padding: 10px 12px;\n border: 1px solid var(--kr-text-field-border-color, #0000003d);\n border-radius: 8px;\n background-color: var(--kr-text-field-bg, #fff);\n color: var(--kr-text-field-color, #111827);\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n input:focus {\n outline: none;\n border-color: var(--kr-text-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-text-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n input:disabled {\n background-color: var(--kr-text-field-disabled-bg, #f3f4f6);\n color: var(--kr-text-field-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n input::placeholder {\n color: var(--kr-text-field-placeholder-color, #9ca3af);\n }\n\n input.input--invalid {\n border-color: var(--kr-text-field-error-border-color, #ef4444);\n }\n\n input.input--invalid:focus {\n box-shadow: 0 0 0 3px var(--kr-text-field-error-ring-color, rgba(239, 68, 68, 0.1));\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-text-field-error-color, #ef4444);\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-text-field-helper-color, #6b7280);\n }\n `;\n// Enable form association\nKRTextField.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"value\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"type\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextField.prototype, \"required\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextField.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextField.prototype, \"readonly\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextField.prototype, \"minlength\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextField.prototype, \"maxlength\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"pattern\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"autocomplete\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"hint\", void 0);\n__decorate([\n query('input')\n], KRTextField.prototype, \"_input\", void 0);\n__decorate([\n state()\n], KRTextField.prototype, \"_touched\", void 0);\n__decorate([\n state()\n], KRTextField.prototype, \"_dirty\", void 0);\nKRTextField = __decorate([\n customElement('kr-text-field')\n], KRTextField);\nexport { KRTextField };\n//# sourceMappingURL=text-field.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\n/**\n * A textarea component that works with native browser forms.\n *\n * Uses ElementInternals for form association, allowing the component\n * to participate in form submission, validation, and reset.\n *\n * Native input and change events bubble up from the inner textarea element.\n *\n * @element kr-textarea-field\n */\nlet KRTextareaField = class KRTextareaField extends LitElement {\n constructor() {\n super();\n /**\n * The textarea label text\n */\n this.label = '';\n /**\n * The textarea name for form submission\n */\n this.name = '';\n /**\n * The current value\n */\n this.value = '';\n /**\n * Placeholder text\n */\n this.placeholder = '';\n /**\n * Whether the field is required\n */\n this.required = false;\n /**\n * Whether the field is disabled\n */\n this.disabled = false;\n /**\n * Whether the field is readonly\n */\n this.readonly = false;\n /**\n * Number of visible text lines\n */\n this.rows = 3;\n /**\n * Autocomplete attribute value\n */\n this.autocomplete = '';\n /**\n * Helper text shown below the textarea\n */\n this.hint = '';\n this._touched = false;\n this._dirty = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n // Form-associated custom element callbacks\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n get willValidate() {\n return this._internals.willValidate;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._touched = false;\n this._dirty = false;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n }\n _updateValidity() {\n if (this._textarea) {\n this._internals.setValidity(this._textarea.validity, this._textarea.validationMessage);\n }\n }\n _handleInput(e) {\n this.value = e.target.value;\n this._dirty = true;\n this._internals.setFormValue(this.value);\n this._internals.setValidity(this._textarea.validity, this._textarea.validationMessage);\n }\n _handleChange(e) {\n this.value = e.target.value;\n this._internals.setFormValue(this.value);\n }\n _handleBlur() {\n this._touched = true;\n this._internals.setValidity(this._textarea.validity, this._textarea.validationMessage);\n }\n render() {\n let validationMessage = '';\n if (this._touched && this._textarea && !this._textarea.validity.valid) {\n validationMessage = this._textarea.validationMessage;\n }\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label for=\"textarea\">\n ${this.label}\n ${this.required ? html `<span class=\"required\" aria-hidden=\"true\">*</span>` : nothing}\n </label>\n `\n : nothing}\n <textarea\n id=\"textarea\"\n class=${classMap({\n 'textarea--invalid': this._touched && this._textarea && !this._textarea.validity.valid\n })}\n name=${this.name}\n .value=${live(this.value)}\n placeholder=${this.placeholder}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n rows=${this.rows}\n cols=${ifDefined(this.cols)}\n minlength=${ifDefined(this.minlength)}\n maxlength=${ifDefined(this.maxlength)}\n autocomplete=${ifDefined(this.autocomplete || undefined)}\n @input=${this._handleInput}\n @change=${this._handleChange}\n @blur=${this._handleBlur}\n ></textarea>\n ${validationMessage\n ? html `<div class=\"validation-message\">${validationMessage}</div>`\n : this.hint\n ? html `<div class=\"hint\">${this.hint}</div>`\n : nothing}\n </div>\n `;\n }\n // Public methods for programmatic control\n focus() {\n this._textarea?.focus();\n }\n blur() {\n this._textarea?.blur();\n }\n select() {\n this._textarea?.select();\n }\n};\nKRTextareaField.styles = css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-textarea-field-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n textarea {\n font-family: inherit;\n font-size: 14px;\n line-height: 1.5;\n padding: 10px 12px;\n border: 1px solid var(--kr-textarea-field-border-color, #0000003d);\n border-radius: 8px;\n background-color: var(--kr-textarea-field-bg, #fff);\n color: var(--kr-textarea-field-color, #111827);\n transition: border-color 0.2s, box-shadow 0.2s;\n min-height: 2.5rem;\n resize: vertical;\n }\n\n textarea:focus {\n outline: none;\n border-color: var(--kr-textarea-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-textarea-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n textarea:disabled {\n background-color: var(--kr-textarea-field-disabled-bg, #f3f4f6);\n color: var(--kr-textarea-field-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n textarea::placeholder {\n color: var(--kr-textarea-field-placeholder-color, #9ca3af);\n }\n\n textarea.textarea--invalid {\n border-color: var(--kr-textarea-field-error-border-color, #ef4444);\n }\n\n textarea.textarea--invalid:focus {\n box-shadow: 0 0 0 3px var(--kr-textarea-field-error-ring-color, rgba(239, 68, 68, 0.1));\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-textarea-field-error-color, #ef4444);\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-textarea-field-helper-color, #6b7280);\n }\n `;\n// Enable form association\nKRTextareaField.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"value\", void 0);\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextareaField.prototype, \"required\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextareaField.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextareaField.prototype, \"readonly\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextareaField.prototype, \"rows\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextareaField.prototype, \"cols\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextareaField.prototype, \"minlength\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextareaField.prototype, \"maxlength\", void 0);\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"autocomplete\", void 0);\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"hint\", void 0);\n__decorate([\n query('textarea')\n], KRTextareaField.prototype, \"_textarea\", void 0);\n__decorate([\n state()\n], KRTextareaField.prototype, \"_touched\", void 0);\n__decorate([\n state()\n], KRTextareaField.prototype, \"_dirty\", void 0);\nKRTextareaField = __decorate([\n customElement('kr-textarea-field')\n], KRTextareaField);\nexport { KRTextareaField };\n//# sourceMappingURL=textarea-field.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * A read-only field component that displays a label and value.\n *\n * @element kr-detail-field\n */\nlet KRDetailField = class KRDetailField extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The field label text\n */\n this.label = '';\n /**\n * The value to display\n */\n this.value = '';\n }\n render() {\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `<label>${this.label}</label>`\n : nothing}\n <div class=\"value\">${this.value}</div>\n </div>\n `;\n }\n};\nKRDetailField.styles = css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .value {\n font-size: 14px;\n color: black;\n }\n `;\n__decorate([\n property({ type: String })\n], KRDetailField.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRDetailField.prototype, \"value\", void 0);\nKRDetailField = __decorate([\n customElement('kr-detail-field')\n], KRDetailField);\nexport { KRDetailField };\n//# sourceMappingURL=detail-field.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { live } from 'lit/directives/live.js';\n/**\n * @element kr-auto-suggest\n *\n * @property {string} label - Label text for the input\n * @property {string} name - Name for form submission\n * @property {string} value - Current input value\n * @property {string} placeholder - Placeholder text\n * @property {boolean} disabled - Whether the input is disabled\n * @property {boolean} readonly - Whether the input is readonly\n * @property {boolean} required - Whether the input is required\n * @property {string} hint - Helper text displayed below the input\n * @property {KRAutoSuggestOption[]} options - Array of suggestion options\n * @property {Function} fetch - Function that returns a promise of options\n *\n * @fires change - Fired when the input value changes\n * @fires select - Fired when a suggestion is selected\n *\n * @slot - Not used\n */\nlet KRAutoSuggest = class KRAutoSuggest extends LitElement {\n constructor() {\n super();\n this._requestId = 0;\n this._handleDocumentClick = (e) => {\n const path = e.composedPath();\n if (!path.includes(this)) {\n this._isOpen = false;\n }\n };\n this.label = '';\n this.name = '';\n this.value = '';\n this.placeholder = '';\n this.disabled = false;\n this.readonly = false;\n this.required = false;\n this.hint = '';\n this.options = [];\n this.fetch = null;\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._touched = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleDocumentClick);\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleDocumentClick);\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n if (changedProperties.has('options') && this._isOpen) {\n this._positionDropdown();\n }\n }\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._touched = false;\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n _updateValidity() {\n if (this._input) {\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n }\n }\n _fetch() {\n if (!this.fetch) {\n return;\n }\n this._requestId++;\n const requestId = this._requestId;\n this.fetch(this.value).then((options) => {\n if (requestId === this._requestId) {\n this.options = options;\n }\n }).catch((error) => {\n console.error('kr-auto-suggest: fetch failed', error);\n });\n }\n _handleInput(e) {\n this.value = e.target.value;\n this._isOpen = true;\n this._highlightedIndex = -1;\n this._positionDropdown();\n this._internals.setFormValue(this.value);\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n this._fetch();\n }\n _positionDropdown() {\n requestAnimationFrame(() => {\n const dropdown = this.shadowRoot?.querySelector('.dropdown');\n if (!dropdown) {\n return;\n }\n const inputRect = this._input.getBoundingClientRect();\n const spaceBelow = window.innerHeight - inputRect.bottom - 4 - 8;\n const spaceAbove = inputRect.top - 4 - 8;\n dropdown.style.left = inputRect.left + 'px';\n dropdown.style.width = inputRect.width + 'px';\n // Open above the input if there's more room above than below\n if (spaceAbove > spaceBelow) {\n dropdown.style.top = '';\n dropdown.style.bottom = (window.innerHeight - inputRect.top + 4) + 'px';\n dropdown.style.maxHeight = spaceAbove + 'px';\n }\n else {\n dropdown.style.bottom = '';\n dropdown.style.top = inputRect.bottom + 4 + 'px';\n dropdown.style.maxHeight = spaceBelow + 'px';\n }\n });\n }\n _handleFocus() {\n this._isOpen = true;\n this._positionDropdown();\n this._fetch();\n }\n _handleBlur() {\n this._touched = true;\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n // Delay to allow click on option\n setTimeout(() => {\n this._isOpen = false;\n this._highlightedIndex = -1;\n }, 200);\n }\n _handleKeyDown(e) {\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this._isOpen = true;\n this._highlightedIndex = Math.min(this._highlightedIndex + 1, this.options.length - 1);\n this._scrollToHighlighted();\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (this._highlightedIndex === -1) {\n this._isOpen = true;\n this._highlightedIndex = this.options.length - 1;\n }\n else {\n this._highlightedIndex = Math.max(this._highlightedIndex - 1, 0);\n }\n this._scrollToHighlighted();\n break;\n case 'Enter':\n if (this._highlightedIndex >= 0 && this.options[this._highlightedIndex]) {\n e.preventDefault();\n this._selectOption(this.options[this._highlightedIndex]);\n }\n break;\n case 'Escape':\n e.preventDefault();\n this._isOpen = false;\n this._highlightedIndex = -1;\n break;\n case 'Tab':\n this._isOpen = false;\n this._highlightedIndex = -1;\n break;\n }\n }\n _scrollToHighlighted() {\n this.updateComplete.then(() => {\n const container = this.shadowRoot?.querySelector('.dropdown');\n const highlighted = this.shadowRoot?.querySelector('.option--highlighted');\n if (container && highlighted) {\n const containerRect = container.getBoundingClientRect();\n const highlightedRect = highlighted.getBoundingClientRect();\n if (highlightedRect.bottom > containerRect.bottom) {\n highlighted.scrollIntoView({ block: 'nearest' });\n }\n else if (highlightedRect.top < containerRect.top) {\n highlighted.scrollIntoView({ block: 'nearest' });\n }\n }\n });\n }\n _selectOption(option) {\n if (option.disabled) {\n return;\n }\n this.value = option.value;\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._internals.setFormValue(this.value);\n this.dispatchEvent(new CustomEvent('select', {\n detail: { value: option.value, option: option },\n bubbles: true,\n composed: true,\n }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n _handleClear() {\n this.value = '';\n this._internals.setFormValue(this.value);\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n this._input?.focus();\n }\n _handleOptionMouseEnter(e, index) {\n this._highlightedIndex = index;\n }\n _renderOption(option, index) {\n return html `\n <button\n class=${classMap({\n option: true,\n 'option--highlighted': index === this._highlightedIndex,\n })}\n type=\"button\"\n role=\"option\"\n aria-selected=${index === this._highlightedIndex}\n ?disabled=${option.disabled}\n @click=${(e) => this._selectOption(option)}\n @mouseenter=${(e) => this._handleOptionMouseEnter(e, index)}\n >\n ${option.label || option.value}\n </button>\n `;\n }\n render() {\n let footer = nothing;\n if (this._touched && this._input && !this._input.validity.valid) {\n footer = html `<div class=\"validation-message\">${this._input.validationMessage}</div>`;\n }\n else if (this.hint) {\n footer = html `<div class=\"hint\">${this.hint}</div>`;\n }\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label>\n ${this.label}\n ${this.required ? html `<span class=\"required\">*</span>` : nothing}\n </label>\n `\n : nothing}\n\n <div class=\"input-wrapper\">\n <input\n type=\"text\"\n .value=${live(this.value)}\n placeholder=${this.placeholder}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n name=${this.name}\n autocomplete=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=${this._isOpen}\n aria-controls=\"dropdown\"\n class=${classMap({\n 'input--invalid': this._touched && this._input && !this._input.validity.valid,\n })}\n @input=${this._handleInput}\n @blur=${this._handleBlur}\n @focus=${this._handleFocus}\n @keydown=${this._handleKeyDown}\n />\n <div class=\"icon-wrapper\">\n ${this.value && !this.disabled && !this.readonly\n ? html `\n <svg class=\"clear\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-label=\"Clear\" @click=${this._handleClear}>\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n </svg>\n `\n : nothing}\n ${!this.value && !this.disabled && !this.readonly\n ? html `\n <svg class=\"search-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/>\n </svg>\n `\n : nothing}\n </div>\n </div>\n\n <div\n id=\"dropdown\"\n role=\"listbox\"\n class=${classMap({\n dropdown: true,\n 'dropdown--open': this._isOpen && this.options.length > 0,\n })}\n >\n ${this.options.map((option, index) => this._renderOption(option, index))}\n </div>\n\n ${footer}\n </div>\n `;\n }\n};\nKRAutoSuggest.styles = css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-text-field-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n .input-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n input {\n flex: 1;\n width: 100%;\n padding: 10px 32px 10px 12px;\n font-size: 14px;\n font-family: inherit;\n border: 1px solid var(--kr-text-field-border-color, #0000003d);\n border-radius: 8px;\n background-color: var(--kr-text-field-bg, #fff);\n color: var(--kr-text-field-color, #111827);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n }\n\n input:focus {\n outline: none;\n border-color: var(--kr-text-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-text-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n input:disabled {\n background-color: var(--kr-text-field-disabled-bg, #f3f4f6);\n color: var(--kr-text-field-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n input:read-only {\n background-color: var(--kr-text-field-disabled-bg, #f3f4f6);\n cursor: default;\n }\n\n input.input--invalid {\n border-color: var(--kr-text-field-error-border-color, #ef4444);\n }\n\n input.input--invalid:focus {\n box-shadow: 0 0 0 3px var(--kr-text-field-error-ring-color, rgba(239, 68, 68, 0.1));\n }\n\n input::placeholder {\n color: var(--kr-text-field-placeholder-color, #9ca3af);\n }\n\n .icon-wrapper {\n position: absolute;\n right: 8px;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .clear {\n width: 20px;\n height: 20px;\n color: var(--kr-text-muted, #6b7280);\n cursor: pointer;\n transition: color 0.15s ease;\n }\n\n .clear:hover {\n color: var(--kr-text, #000000);\n }\n\n .search-icon {\n width: 20px;\n height: 20px;\n color: var(--kr-text-muted, #6b7280);\n pointer-events: none;\n }\n\n /* Dropdown */\n .dropdown {\n position: fixed;\n z-index: 10000;\n overflow-y: auto;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n padding: 8px 0;\n box-sizing: border-box;\n display: none;\n }\n\n .dropdown--open {\n display: block;\n }\n\n /* Options */\n .option {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n padding: 8px 12px;\n background: none;\n border: none;\n font-size: 14px;\n line-height: 1.5;\n font-family: inherit;\n color: var(--kr-text, #000000);\n text-align: left;\n cursor: pointer;\n transition: background 0.15s ease;\n }\n\n .option:hover:not(:disabled) {\n background: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .option--highlighted {\n background-color: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .option:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n \n .hint {\n font-size: 0.75rem;\n color: var(--kr-text-field-helper-color, #6b7280);\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-text-field-error-color, #ef4444);\n }\n `;\nKRAutoSuggest.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRAutoSuggest.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRAutoSuggest.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRAutoSuggest.prototype, \"value\", void 0);\n__decorate([\n property({ type: String })\n], KRAutoSuggest.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRAutoSuggest.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRAutoSuggest.prototype, \"readonly\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRAutoSuggest.prototype, \"required\", void 0);\n__decorate([\n property({ type: String })\n], KRAutoSuggest.prototype, \"hint\", void 0);\n__decorate([\n property({ type: Array })\n], KRAutoSuggest.prototype, \"options\", void 0);\n__decorate([\n property({ attribute: false })\n], KRAutoSuggest.prototype, \"fetch\", void 0);\n__decorate([\n state()\n], KRAutoSuggest.prototype, \"_isOpen\", void 0);\n__decorate([\n state()\n], KRAutoSuggest.prototype, \"_highlightedIndex\", void 0);\n__decorate([\n state()\n], KRAutoSuggest.prototype, \"_touched\", void 0);\n__decorate([\n query('input')\n], KRAutoSuggest.prototype, \"_input\", void 0);\nKRAutoSuggest = __decorate([\n customElement('kr-auto-suggest')\n], KRAutoSuggest);\nexport { KRAutoSuggest };\n//# sourceMappingURL=auto-suggest.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n/**\n * @element kr-combo-box\n *\n * A searchable select field. Looks like a select dropdown but when opened\n * shows a search input at the top of the panel for filtering options via\n * a fetch function. Works with any object shape — use optionValue and\n * optionLabel to tell the component how to extract the value and display text.\n *\n * @property {string} label - Label text\n * @property {string} name - Name for form submission\n * @property {string} value - Currently selected value\n * @property {string} placeholder - Placeholder text when nothing is selected\n * @property {boolean} disabled - Whether the field is disabled\n * @property {boolean} readonly - Whether the field is readonly\n * @property {boolean} required - Whether the field is required\n * @property {string} hint - Helper text displayed below the field\n * @property {string|Function} optionValue - Field name or function to extract the value from an option\n * @property {string|Function} optionLabel - Field name or function to extract the label from an option\n * @property {any[]} options - Array of options\n * @property {Function} fetch - Function that returns a promise of options\n * @property {Function} fetchSelection - Function that resolves a single option by its value\n *\n * @fires change - Fired when the selected value changes\n * @fires select - Fired when an option is selected\n */\nlet KRComboBox = class KRComboBox extends LitElement {\n constructor() {\n super();\n this._requestId = 0;\n this._selectedOption = null;\n this._handleDocumentClick = (e) => {\n if (!e.composedPath().includes(this)) {\n this._close();\n }\n };\n this.label = '';\n this.name = '';\n this.value = '';\n this.placeholder = 'Select an option';\n this.disabled = false;\n this.readonly = false;\n this.required = false;\n this.hint = '';\n this.optionValue = 'value';\n this.optionLabel = 'label';\n this.options = [];\n this.fetch = null;\n this.fetchSelection = null;\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._touched = false;\n this._searchQuery = '';\n this._loading = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleDocumentClick);\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleDocumentClick);\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n if (this.value && this.fetchSelection) {\n this._resolveSelection();\n }\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n if (changedProperties.has('value')) {\n if (this.value) {\n // Only resolve if the selected option doesn't match the current value\n if (!this._selectedOption || this._getOptionValue(this._selectedOption) !== this.value) {\n this._resolveSelection();\n }\n }\n else {\n this._selectedOption = null;\n }\n }\n if (changedProperties.has('options') && this._isOpen) {\n this._positionDropdown();\n }\n }\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._selectedOption = null;\n this._touched = false;\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._searchQuery = '';\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n focus() {\n if (!this._isOpen) {\n this._open();\n }\n }\n blur() {\n this._triggerElement?.blur();\n }\n _updateValidity() {\n if (this.required && !this.value) {\n this._internals.setValidity({ valueMissing: true }, 'Please select an option', this._triggerElement);\n }\n else {\n this._internals.setValidity({});\n }\n }\n _handleTriggerClick() {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this._isOpen) {\n this._close();\n }\n else {\n this._open();\n }\n }\n _open() {\n this._isOpen = true;\n this._searchQuery = '';\n this._highlightedIndex = -1;\n this._fetch();\n this.updateComplete.then(() => {\n this._positionDropdown();\n if (this._searchInput) {\n this._searchInput.focus();\n }\n });\n }\n _close() {\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._searchQuery = '';\n }\n _positionDropdown() {\n requestAnimationFrame(() => {\n const dropdown = this.shadowRoot?.querySelector('.dropdown');\n if (!dropdown) {\n return;\n }\n const triggerRect = this._triggerElement.getBoundingClientRect();\n const spaceBelow = window.innerHeight - triggerRect.bottom - 4 - 8;\n const spaceAbove = triggerRect.top - 4 - 8;\n dropdown.style.left = triggerRect.left + 'px';\n dropdown.style.width = triggerRect.width + 'px';\n // Prefer opening below; only flip above when space below is tight\n if (spaceBelow < 200 && spaceAbove > spaceBelow) {\n dropdown.style.top = '';\n dropdown.style.bottom = (window.innerHeight - triggerRect.top + 4) + 'px';\n dropdown.style.maxHeight = spaceAbove + 'px';\n }\n else {\n dropdown.style.bottom = '';\n dropdown.style.top = triggerRect.bottom + 4 + 'px';\n dropdown.style.maxHeight = spaceBelow + 'px';\n }\n });\n }\n _fetch() {\n if (!this.fetch) {\n return;\n }\n this._loading = true;\n this._requestId++;\n const requestId = this._requestId;\n this.fetch(this._searchQuery).then((options) => {\n if (requestId === this._requestId) {\n this.options = options;\n this._loading = false;\n }\n }).catch((error) => {\n console.error('kr-combo-box: fetch failed', error);\n this._loading = false;\n });\n }\n _handleSearchInput(e) {\n this._searchQuery = e.target.value;\n this._highlightedIndex = -1;\n this._fetch();\n }\n _handleSearchKeyDown(e) {\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this._highlightedIndex = Math.min(this._highlightedIndex + 1, this.options.length - 1);\n this._scrollToHighlighted();\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (this._highlightedIndex === -1) {\n this._highlightedIndex = this.options.length - 1;\n }\n else {\n this._highlightedIndex = Math.max(this._highlightedIndex - 1, 0);\n }\n this._scrollToHighlighted();\n break;\n case 'Enter':\n e.preventDefault();\n if (this._highlightedIndex >= 0 && this.options[this._highlightedIndex]) {\n this._selectOption(this.options[this._highlightedIndex]);\n }\n break;\n case 'Escape':\n e.preventDefault();\n this._close();\n this._triggerElement?.focus();\n break;\n case 'Tab':\n this._close();\n break;\n }\n }\n _handleTriggerKeyDown(e) {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (!this._isOpen) {\n this._open();\n }\n }\n }\n _handleTriggerBlur() {\n this._touched = true;\n this._updateValidity();\n }\n _scrollToHighlighted() {\n this.updateComplete.then(() => {\n const container = this.shadowRoot?.querySelector('.options');\n const highlighted = this.shadowRoot?.querySelector('.option--highlighted');\n if (container && highlighted) {\n const containerRect = container.getBoundingClientRect();\n const highlightedRect = highlighted.getBoundingClientRect();\n if (highlightedRect.bottom > containerRect.bottom) {\n highlighted.scrollIntoView({ block: 'nearest' });\n }\n else if (highlightedRect.top < containerRect.top) {\n highlighted.scrollIntoView({ block: 'nearest' });\n }\n }\n });\n }\n _getOptionValue(option) {\n if (typeof this.optionValue === 'function') {\n return this.optionValue(option);\n }\n return option[this.optionValue];\n }\n _getOptionLabel(option) {\n let label;\n if (typeof this.optionLabel === 'function') {\n label = this.optionLabel(option);\n }\n else {\n label = option[this.optionLabel];\n }\n if (!label) {\n return this._getOptionValue(option);\n }\n return label;\n }\n _resolveSelection() {\n if (!this.fetchSelection) {\n return;\n }\n const fetchedValue = this.value;\n this.fetchSelection(this.value).then((option) => {\n if (this.value !== fetchedValue) {\n return;\n }\n if (!option) {\n return;\n }\n this._selectedOption = option;\n this.requestUpdate();\n }).catch((error) => {\n console.error('kr-combo-box: fetchSelection failed', error);\n });\n }\n _selectOption(option) {\n if (option.disabled) {\n return;\n }\n this.value = this._getOptionValue(option);\n this._selectedOption = option;\n this._close();\n this._internals.setFormValue(this.value);\n this._updateValidity();\n this.dispatchEvent(new CustomEvent('select', {\n detail: { option: option },\n bubbles: true,\n composed: true,\n }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n this._triggerElement?.focus();\n }\n _handleOptionMouseEnter(e, index) {\n this._highlightedIndex = index;\n }\n _renderOption(option, index) {\n const optionValue = this._getOptionValue(option);\n return html `\n <button\n class=${classMap({\n option: true,\n 'option--highlighted': index === this._highlightedIndex,\n 'option--selected': optionValue === this.value,\n })}\n type=\"button\"\n role=\"option\"\n aria-selected=${optionValue === this.value}\n ?disabled=${option.disabled}\n @click=${(e) => this._selectOption(option)}\n @mouseenter=${(e) => this._handleOptionMouseEnter(e, index)}\n >\n ${this._getOptionLabel(option)}\n </button>\n `;\n }\n render() {\n let footer = nothing;\n if (this._touched && this.required && !this.value) {\n footer = html `<div class=\"validation-message\">Please select an option</div>`;\n }\n else if (this.hint) {\n footer = html `<div class=\"hint\">${this.hint}</div>`;\n }\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label>\n ${this.label}\n ${this.required ? html `<span class=\"required\">*</span>` : nothing}\n </label>\n `\n : nothing}\n\n <button\n class=${classMap({\n trigger: true,\n 'trigger--open': this._isOpen,\n 'trigger--invalid': this._touched && this.required && !this.value,\n })}\n type=\"button\"\n ?disabled=${this.disabled}\n aria-haspopup=\"listbox\"\n aria-expanded=${this._isOpen}\n @click=${this._handleTriggerClick}\n @keydown=${this._handleTriggerKeyDown}\n @blur=${this._handleTriggerBlur}\n >\n <span class=${classMap({\n trigger__value: true,\n trigger__placeholder: !this._selectedOption,\n })}>\n ${this._selectedOption ? this._getOptionLabel(this._selectedOption) : this.placeholder}\n </span>\n <svg\n class=${classMap({\n trigger__icon: true,\n 'trigger__icon--open': this._isOpen,\n })}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6z\"/>\n </svg>\n </button>\n\n <div\n role=\"listbox\"\n class=${classMap({\n dropdown: true,\n 'dropdown--open': this._isOpen,\n })}\n >\n <div class=\"search\">\n <div class=\"search__field\">\n <input\n class=\"search__input\"\n type=\"text\"\n placeholder=\"Search...\"\n .value=${this._searchQuery}\n @input=${this._handleSearchInput}\n @keydown=${this._handleSearchKeyDown}\n />\n <svg class=\"search__icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/>\n </svg>\n </div>\n </div>\n\n <div class=\"options\">\n ${this._loading\n ? html `<div class=\"empty\">Loading...</div>`\n : this.options.length === 0\n ? html `<div class=\"empty\">No options found</div>`\n : this.options.map((option, index) => this._renderOption(option, index))}\n </div>\n </div>\n\n ${footer}\n </div>\n `;\n }\n};\nKRComboBox.styles = css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-text-field-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n /* Trigger button */\n .trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 10px 12px;\n font-family: inherit;\n font-size: 14px;\n line-height: 1.5;\n color: var(--kr-text-field-color, #111827);\n background-color: var(--kr-text-field-bg, #fff);\n border: 1px solid var(--kr-text-field-border-color, #0000003d);\n border-radius: 8px;\n cursor: pointer;\n transition: border-color 0.2s, box-shadow 0.2s;\n text-align: left;\n }\n\n .trigger:hover:not(:disabled) {\n border-color: #9ca3af;\n }\n\n .trigger:focus {\n outline: none;\n border-color: var(--kr-text-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-text-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n .trigger:disabled {\n background-color: var(--kr-text-field-disabled-bg, #f3f4f6);\n color: var(--kr-text-field-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n .trigger--open {\n border-color: var(--kr-text-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-text-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n .trigger--invalid {\n border-color: var(--kr-text-field-error-border-color, #ef4444);\n }\n\n .trigger--invalid:focus {\n box-shadow: 0 0 0 3px var(--kr-text-field-error-ring-color, rgba(239, 68, 68, 0.1));\n }\n\n .trigger__value {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .trigger__placeholder {\n color: var(--kr-text-field-placeholder-color, #9ca3af);\n }\n\n .trigger__icon {\n flex-shrink: 0;\n margin-left: 0.5rem;\n width: 20px;\n height: 20px;\n color: var(--kr-text-muted, #6b7280);\n transition: transform 0.2s;\n }\n\n .trigger__icon--open {\n transform: rotate(180deg);\n }\n\n /* Dropdown */\n .dropdown {\n position: fixed;\n z-index: 10000;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n box-sizing: border-box;\n display: none;\n overflow: hidden;\n }\n\n .dropdown--open {\n display: flex;\n flex-direction: column;\n }\n\n /* Search input inside dropdown */\n .search {\n padding: 12px 12px 2px 12px;\n flex-shrink: 0;\n }\n\n .search__field {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border: 1px solid var(--kr-text-field-border-color, #0000003d);\n border-radius: 8px;\n background-color: var(--kr-text-field-bg, #fff);\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .search__field:focus-within {\n border-color: var(--kr-text-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-text-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n .search__icon {\n width: 20px;\n height: 20px;\n color: var(--kr-text-muted, #6b7280);\n flex-shrink: 0;\n margin-left: 8px;\n }\n\n .search__input {\n flex: 1;\n border: none;\n outline: none;\n font-size: 14px;\n font-family: inherit;\n color: var(--kr-text-field-color, #111827);\n background: transparent;\n padding: 0;\n }\n\n .search__input::placeholder {\n color: var(--kr-text-field-placeholder-color, #9ca3af);\n }\n\n /* Options list */\n .options {\n overflow-y: auto;\n padding: 4px 0;\n }\n\n .option {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 12px 18px;\n background: none;\n border: none;\n font-size: 14px;\n line-height: 1.5;\n font-family: inherit;\n color: var(--kr-text, #000000);\n text-align: left;\n cursor: pointer;\n transition: background 0.15s ease;\n }\n\n .option:hover:not(:disabled) {\n background: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .option--highlighted {\n background-color: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .option--selected {\n color: var(--kr-text-field-focus-border-color, #163052);\n }\n\n .option:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .empty {\n padding: 12px 18px;\n text-align: left;\n color: var(--kr-text-muted, #6b7280);\n font-size: 14px;\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-text-field-helper-color, #6b7280);\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-text-field-error-color, #ef4444);\n }\n `;\nKRComboBox.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRComboBox.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRComboBox.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRComboBox.prototype, \"value\", void 0);\n__decorate([\n property({ type: String })\n], KRComboBox.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRComboBox.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRComboBox.prototype, \"readonly\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRComboBox.prototype, \"required\", void 0);\n__decorate([\n property({ type: String })\n], KRComboBox.prototype, \"hint\", void 0);\n__decorate([\n property({ attribute: 'option-value' })\n], KRComboBox.prototype, \"optionValue\", void 0);\n__decorate([\n property({ attribute: 'option-label' })\n], KRComboBox.prototype, \"optionLabel\", void 0);\n__decorate([\n property({ type: Array })\n], KRComboBox.prototype, \"options\", void 0);\n__decorate([\n property({ attribute: false })\n], KRComboBox.prototype, \"fetch\", void 0);\n__decorate([\n property({ attribute: false })\n], KRComboBox.prototype, \"fetchSelection\", void 0);\n__decorate([\n state()\n], KRComboBox.prototype, \"_isOpen\", void 0);\n__decorate([\n state()\n], KRComboBox.prototype, \"_highlightedIndex\", void 0);\n__decorate([\n state()\n], KRComboBox.prototype, \"_touched\", void 0);\n__decorate([\n state()\n], KRComboBox.prototype, \"_searchQuery\", void 0);\n__decorate([\n state()\n], KRComboBox.prototype, \"_loading\", void 0);\n__decorate([\n query('.trigger')\n], KRComboBox.prototype, \"_triggerElement\", void 0);\n__decorate([\n query('.search__input')\n], KRComboBox.prototype, \"_searchInput\", void 0);\nKRComboBox = __decorate([\n customElement('kr-combo-box')\n], KRComboBox);\nexport { KRComboBox };\n//# sourceMappingURL=combo-box.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { krBaseCSS } from '../../style/base.js';\n/**\n * A card-style radio group for selecting between a small number of options.\n * Each option renders as a bordered card with a radio indicator, label, and optional description.\n *\n * Uses ElementInternals for form association, allowing the component\n * to participate in form submission, validation, and reset.\n *\n * @element kr-radio-cards\n * @fires change - Fired when the selected value changes\n */\nlet KRRadioCards = class KRRadioCards extends LitElement {\n constructor() {\n super();\n this._focusedIndex = -1;\n /**\n * The label text above the cards\n */\n this.label = '';\n /**\n * The input name for form submission\n */\n this.name = '';\n /**\n * The currently selected value\n */\n this.value = '';\n /**\n * The card options to display\n */\n this.options = [];\n /**\n * Whether the field is disabled\n */\n this.disabled = false;\n /**\n * Whether the field is required\n */\n this.required = false;\n /**\n * Helper text shown below the cards\n */\n this.hint = '';\n /**\n * Layout direction: 'row' or 'column'\n */\n this.direction = 'row';\n this._touched = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n // Form-associated custom element callbacks\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n get willValidate() {\n return this._internals.willValidate;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._touched = false;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n }\n _updateValidity() {\n if (this.required && !this.value) {\n this._internals.setValidity({ valueMissing: true }, 'Please select an option');\n }\n else {\n this._internals.setValidity({});\n }\n }\n _handleCardClick(e, option) {\n if (this.disabled || option.disabled) {\n return;\n }\n this.value = option.value;\n this._touched = true;\n this._internals.setFormValue(this.value);\n this._updateValidity();\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n _handleKeyDown(e, index) {\n if (this.disabled) {\n return;\n }\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n if (!this.options[index].disabled) {\n this._handleCardClick(e, this.options[index]);\n }\n return;\n }\n let nextIndex = -1;\n if (this.direction === 'row') {\n if (e.key === 'ArrowRight') {\n nextIndex = this._findNextEnabledIndex(index, 1);\n }\n else if (e.key === 'ArrowLeft') {\n nextIndex = this._findNextEnabledIndex(index, -1);\n }\n }\n else {\n if (e.key === 'ArrowDown') {\n nextIndex = this._findNextEnabledIndex(index, 1);\n }\n else if (e.key === 'ArrowUp') {\n nextIndex = this._findNextEnabledIndex(index, -1);\n }\n }\n if (nextIndex >= 0) {\n e.preventDefault();\n this._focusedIndex = nextIndex;\n const cards = this.shadowRoot?.querySelectorAll('.card');\n if (cards[nextIndex]) {\n cards[nextIndex].focus();\n }\n }\n }\n _findNextEnabledIndex(current, step) {\n let next = current + step;\n while (next >= 0 && next < this.options.length) {\n if (!this.options[next].disabled) {\n return next;\n }\n next += step;\n }\n return -1;\n }\n render() {\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label>\n ${this.label}\n ${this.required ? html `<span class=\"required\" aria-hidden=\"true\">*</span>` : nothing}\n </label>\n `\n : nothing}\n <div\n class=${classMap({\n 'cards': true,\n 'cards--row': this.direction === 'row',\n 'cards--column': this.direction === 'column',\n })}\n role=\"radiogroup\"\n aria-label=${this.label}\n >\n ${this.options.map((option, index) => {\n const isSelected = option.value === this.value;\n const isDisabled = this.disabled || !!option.disabled;\n return html `\n <div\n class=${classMap({\n 'card': true,\n 'card--selected': isSelected,\n 'card--disabled': isDisabled,\n })}\n role=\"radio\"\n aria-checked=${isSelected}\n aria-disabled=${isDisabled}\n tabindex=${isDisabled ? -1 : 0}\n @click=${(e) => this._handleCardClick(e, option)}\n @keydown=${(e) => this._handleKeyDown(e, index)}\n >\n <div class=\"card__radio\">\n ${isSelected ? html `<div class=\"card__radio-dot\"></div>` : nothing}\n </div>\n <div class=\"card__content\">\n <div class=\"card__label\">${option.label}</div>\n ${option.description\n ? html `<div class=\"card__description\">${option.description}</div>`\n : nothing}\n </div>\n </div>\n `;\n })}\n </div>\n ${this._touched && this.required && !this.value\n ? html `<div class=\"validation-message\">Please select an option</div>`\n : this.hint\n ? html `<div class=\"hint\">${this.hint}</div>`\n : nothing}\n </div>\n `;\n }\n};\nKRRadioCards.styles = [krBaseCSS, css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-radio-cards-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n .cards {\n display: flex;\n gap: 12px;\n }\n\n .cards--row {\n flex-direction: row;\n }\n\n .cards--column {\n flex-direction: column;\n }\n\n .card {\n flex: 1;\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n border: 1px solid var(--kr-radio-cards-border-color, #0000003d);\n border-radius: 8px;\n background-color: var(--kr-radio-cards-bg, #fff);\n cursor: pointer;\n transition: border-color 0.2s, background-color 0.2s, box-shadow 0.2s;\n }\n\n .card:hover:not(.card--disabled) {\n border-color: var(--kr-radio-cards-hover-border-color, #9ca3af);\n }\n\n .card:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);\n }\n\n .card--selected {\n border-color: var(--kr-radio-cards-selected-border-color, var(--kr-primary));\n background-color: var(--kr-radio-cards-selected-bg, rgba(22, 48, 82, 0.06));\n }\n\n .card--selected:hover {\n border-color: var(--kr-radio-cards-selected-border-color, var(--kr-primary));\n }\n\n .card--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .card__radio {\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border: 2px solid var(--kr-radio-cards-radio-border-color, #0000003d);\n border-radius: 50%;\n margin-top: 1px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: border-color 0.2s;\n }\n\n .card--selected .card__radio {\n border-color: var(--kr-radio-cards-radio-selected-color, var(--kr-primary));\n }\n\n .card__radio-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: var(--kr-radio-cards-radio-selected-color, var(--kr-primary));\n }\n\n .card__content {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n }\n\n .card__label {\n font-size: 14px;\n font-weight: 600;\n color: var(--kr-radio-cards-label-color, #000);\n }\n\n .card__description {\n font-size: 14px;\n color: var(--kr-radio-cards-description-color, #4d525c);\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-radio-cards-helper-color, #6b7280);\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-radio-cards-error-color, #ef4444);\n }\n `];\nKRRadioCards.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRRadioCards.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRRadioCards.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRRadioCards.prototype, \"value\", void 0);\n__decorate([\n property({ attribute: false })\n], KRRadioCards.prototype, \"options\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRRadioCards.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRRadioCards.prototype, \"required\", void 0);\n__decorate([\n property({ type: String })\n], KRRadioCards.prototype, \"hint\", void 0);\n__decorate([\n property({ type: String })\n], KRRadioCards.prototype, \"direction\", void 0);\n__decorate([\n state()\n], KRRadioCards.prototype, \"_touched\", void 0);\nKRRadioCards = __decorate([\n customElement('kr-radio-cards')\n], KRRadioCards);\nexport { KRRadioCards };\n//# sourceMappingURL=radio-cards.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { krBaseCSS } from '../../style/base.js';\n/**\n * A checkbox component that works with native browser forms.\n *\n * Uses ElementInternals for form association, allowing the component\n * to participate in form submission, validation, and reset.\n *\n * @element kr-checkbox\n * @fires change - Fired when the checked state changes\n */\nlet KRCheckbox = class KRCheckbox extends LitElement {\n constructor() {\n super();\n /**\n * The checkbox label text\n */\n this.label = '';\n /**\n * The input name for form submission\n */\n this.name = '';\n /**\n * The value submitted when checked\n */\n this.value = 'on';\n /**\n * Whether the checkbox is checked\n */\n this.checked = false;\n /**\n * Whether the checkbox is disabled\n */\n this.disabled = false;\n /**\n * Whether the checkbox is required\n */\n this.required = false;\n /**\n * Helper text shown below the checkbox\n */\n this.hint = '';\n this._touched = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n // Form-associated custom element callbacks\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n get willValidate() {\n return this._internals.willValidate;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.checked = false;\n this._touched = false;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.checked = state === this.value;\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._syncFormValue();\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('checked') || changedProperties.has('value')) {\n this._syncFormValue();\n }\n if (changedProperties.has('required') || changedProperties.has('checked')) {\n this._updateValidity();\n }\n }\n _syncFormValue() {\n if (this.checked) {\n this._internals.setFormValue(this.value);\n }\n else {\n this._internals.setFormValue('');\n }\n }\n _updateValidity() {\n if (this.required && !this.checked) {\n this._internals.setValidity({ valueMissing: true }, 'This field is required');\n }\n else {\n this._internals.setValidity({});\n }\n }\n _handleClick(e) {\n if (this.disabled) {\n return;\n }\n this.checked = !this.checked;\n this._touched = true;\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n _handleKeyDown(e) {\n if (this.disabled) {\n return;\n }\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n this._handleClick(e);\n }\n }\n render() {\n return html `\n <div class=\"wrapper\">\n <div\n class=${classMap({\n 'checkbox': true,\n 'checkbox--disabled': this.disabled,\n })}\n role=\"checkbox\"\n aria-checked=${this.checked}\n aria-disabled=${this.disabled}\n aria-label=${this.label}\n tabindex=${this.disabled ? -1 : 0}\n @click=${this._handleClick}\n @keydown=${this._handleKeyDown}\n >\n <div class=${classMap({\n 'checkbox__box': true,\n 'checkbox__box--checked': this.checked,\n 'checkbox__box--invalid': this._touched && this.required && !this.checked,\n })}>\n <svg class=${classMap({\n 'checkbox__check': true,\n 'checkbox__check--hidden': !this.checked,\n })} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </div>\n ${this.label\n ? html `\n <span class=\"checkbox__label\">\n ${this.label}\n ${this.required ? html `<span class=\"required\" aria-hidden=\"true\">*</span>` : nothing}\n </span>\n `\n : nothing}\n </div>\n ${this._touched && this.required && !this.checked\n ? html `<div class=\"validation-message\">This field is required</div>`\n : this.hint\n ? html `<div class=\"hint\">${this.hint}</div>`\n : nothing}\n </div>\n `;\n }\n focus() {\n this.shadowRoot?.querySelector('.checkbox')?.focus();\n }\n blur() {\n this.shadowRoot?.querySelector('.checkbox')?.blur();\n }\n};\nKRCheckbox.styles = [krBaseCSS, css `\n :host {\n display: inline-block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .checkbox {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n }\n\n .checkbox--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .checkbox__box {\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border: 2px solid var(--kr-checkbox-border-color, #0000003d);\n border-radius: 4px;\n background-color: var(--kr-checkbox-bg, #fff);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: border-color 0.2s, background-color 0.2s, box-shadow 0.2s;\n }\n\n .checkbox:focus-visible .checkbox__box {\n outline: none;\n box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);\n }\n\n .checkbox__box--checked {\n border-color: var(--kr-checkbox-checked-border-color, var(--kr-primary));\n background-color: var(--kr-checkbox-checked-bg, var(--kr-primary));\n }\n\n .checkbox__box--invalid {\n border-color: var(--kr-checkbox-error-border-color, #ef4444);\n }\n\n .checkbox__check {\n width: 12px;\n height: 12px;\n color: var(--kr-checkbox-check-color, #fff);\n }\n\n .checkbox__check--hidden {\n visibility: hidden;\n }\n\n .checkbox__label {\n font-size: 14px;\n color: var(--kr-checkbox-label-color, #000);\n user-select: none;\n }\n\n .required {\n color: var(--kr-checkbox-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-checkbox-helper-color, #6b7280);\n margin-left: 26px;\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-checkbox-error-color, #ef4444);\n margin-left: 26px;\n }\n `];\nKRCheckbox.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRCheckbox.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRCheckbox.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRCheckbox.prototype, \"value\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRCheckbox.prototype, \"checked\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRCheckbox.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRCheckbox.prototype, \"required\", void 0);\n__decorate([\n property({ type: String })\n], KRCheckbox.prototype, \"hint\", void 0);\n__decorate([\n state()\n], KRCheckbox.prototype, \"_touched\", void 0);\nKRCheckbox = __decorate([\n customElement('kr-checkbox')\n], KRCheckbox);\nexport { KRCheckbox };\n//# sourceMappingURL=checkbox.js.map"],"names":["t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","o","WeakMap","n$4","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","get","replaceSync","set","toString","i","reduce","n","c","cssRules","r","is","defineProperty","getOwnPropertyDescriptor","h","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","b","attribute","type","String","converter","reflect","useDefault","hasChanged","metadata","litPropertyMetadata","y$1","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","hasOwnProperty","create","wrapped","elementProperties","noAccessor","getPropertyDescriptor","call","requestUpdate","configurable","enumerable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$ET","removeAttribute","_$Ej","hasAttribute","C","_$EP","has","_$Eq","reject","scheduleUpdate","performUpdate","shouldUpdate","willUpdate","hostUpdate","update","_$EM","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","y","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createComment","v","_","m","RegExp","g","$","_$litType$","strings","values","x","E","for","A","P","createTreeWalker","V","N","lastIndex","exec","test","startsWith","S","parts","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","I","L","z","H","tagName","append","data","indexOf","innerHTML","M","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","R","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","k","nextSibling","Z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","T","iterator","O","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","fill","j","arguments","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","B","litHtmlPolyfillSupport","litHtmlVersions","D","renderBefore","_$litPart$","renderOptions","_$Do","render","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","krBaseCSS","css","customElements","define","kind","init","Reflect","decorate","querySelector","__decorate","decorators","target","key","desc","KRAccordion","header","expanded","toggle","html","property","customElement","i$1","_$Ct","_$Ci","filter","join","st","nt","classList","KRAlert","title","dismissible","visible","_handleDismiss","dispatchEvent","CustomEvent","bubbles","composed","icons","info","success","warning","error","classMap","alert","nothing","KRButton","variant","color","disabled","iconPosition","_state","_stateText","_dropdownOpened","_handleHostClick","stopPropagation","_toggleDropdown","_handleKeydown","preventDefault","MouseEvent","click","_handleClickOutside","contains","href","_handleSplitPrimaryClick","_handleSplitTriggerClick","requestAnimationFrame","dropdown","hostRect","getBoundingClientRect","style","top","bottom","left","right","minWidth","width","transformOrigin","dropdownRect","window","innerHeight","innerWidth","_handleOptionClick","option","detail","id","label","showLoading","_clearStateTimeout","showSuccess","text","duration","_stateTimeout","setTimeout","reset","showError","isLoading","clearTimeout","undefined","changedProperties","it","directiveName","_t","raw","resultType","KRCodeDemo","language","code","activeTab","copied","highlightedCode","trim","replace","querySelectorAll","oldScript","newScript","hljs","getLanguage","highlight","value","activateTab","tab","copyCode","navigator","clipboard","writeText","then","copy","panel","unsafeHTML","KRContextMenu","items","resolvePromise","boundHandleOutsideClick","handleOutsideClick","bind","boundHandleKeyDown","handleKeyDown","open","existing","menu","body","show","rect","height","resolve","close","handleItemClick","item","divider","result","icon","includes","ft","removeProperty","setProperty","KRDialogHeader","KRDialogContent","KRDialogFooter","KRDialogRef","_resolvePromise","_dialogElement","_promise","setDialogElement","afterClosed","KRDialog","_dialogRef","_contentElement","opened","_handleDocumentKeyDown","component","config","dialogRef","dialog","_handleBackdropClick","styleMap","KRDateRangePicker","relativeOptions","amount","unit","invalid","placeholder","startDate","endDate","_isOpen","_activeTab","_tempStartDate","_tempEndDate","composedPath","_handleTriggerClick","_handleTabClick","_handleRelativeSelect","_handleApplyAbsolute","_handleCancel","_formatRelativeOption","unitLabels","second","minute","hour","day","week","month","year","_getDisplayValue","_renderTriggerText","displayValue","_renderContent","_renderRelativeContent","_renderAbsoluteContent","_handleStartDateChange","_handleEndDateChange","_renderFooter","trigger","KRSnackbar_1","KRSnackbar","dismissTimeout","message","activeSnackbars","dismiss","snackbar","splice","KRTabGroup","justified","changes","_updateActiveTab","_getTabs","from","tabs","activeTabId","active","_handleTabDismiss","tabId","_handleKeyDown","enabledTabs","currentIndex","findIndex","newIndex","newTab","tabButtons","targetButton","find","btn","focus","_renderTabIcon","iconElement","getIconElement","clonedIcon","cloneNode","badge","backgroundColor","badgeBackground","badgeColor","KRTab","tabGroup","closest","KRSelectField","required","readonly","hint","_highlightedIndex","_touched","_handleInvalid","_handleOutsideClick","_close","_triggerElement","some","_selectOption","_internals","attachInternals","form","validity","validationMessage","willValidate","checkValidity","reportValidity","formResetCallback","setFormValue","setValidity","formStateRestoreCallback","_updateValidity","_toggle","triggerRect","spaceBelow","maxHeight","Event","_handleBlur","valueMissing","selectedLabel","hidden","idx","isSelected","blur","formAssociated","query","KRSelectOption","KR_OPERATORS","equals","dataTypes","n_equals","n_contains","starts_with","ends_with","less_than","less_than_equal","greater_than","greater_than_equal","between","in","n_in","empty","n_empty","getOperatorsForType","columnType","results","op","SOLR_RESERVED_CHARS","SOLR_RESERVED_CHARS_REPLACEMENT","termify","exact","char","str","termifyDate","endOfTheDay","newTime","Date","setMinutes","getMinutes","getTimezoneOffset","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","toISOString","createSolrDateRange","specificities","startSpecificity","endSpecificity","start","end","setUTCMonth","setUTCDate","getUTCMonth","createDbDateRange","getDateSpecificity","input","KRQuery","field","operator","kql","specificity","setKql","substring","_parse","toIndex","rawStart","rawEnd","setOperator","_buildKql","setValue","_buildText","setStart","setEnd","clear","isEmpty","val","isValid","isNaN","getTime","toSolrData","boost","fuzzy","not","operation","tagged","toDbParams","params","_format","padStart","getUTCDate","getUTCFullYear","lcInput","_parseDate","num","months","jan","january","feb","february","mar","march","apr","april","may","jun","june","jul","july","aug","august","sep","september","oct","october","nov","november","dec","december","match","UTC","parseInt","toUpperCase","KRTableModel","description","actions","columns","displayedColumns","dataSource","refreshInterval","pageSize","rowClickable","rowHref","KRTable","_scrollStyle","_data","_dataState","_page","_pageSize","_totalItems","_totalPages","_searchQuery","_canScrollLeft","_canScrollRight","_canScrollHorizontal","_columnPickerOpen","_filterPanelOpened","_filterPanelTab","_buckets","_filterPanelPos","_sorts","_resizing","_resizeObserver","_searchPositionLocked","_columnWidthsLocked","_model","def","path","picker","_handleFilterApply","_handleResizeMove","col","columnId","newWidth","startWidth","clientX","startX","min","max","_handleResizeEnd","_fetch","_initRefresh","ResizeObserver","_updateSearchPosition","observe","clearInterval","_refreshTimer","disconnect","column","sort","sortBy","sortDirection","sticky","resizable","filterable","facetable","_updateScrollFlags","_syncSlottedContent","_lockColumnWidths","headerCells","cols","getDisplayedColumns","cell","cellWidth","offsetWidth","row","rowIndex","slot","display","gap","refresh","goToPrevPage","goToNextPage","goToPage","page","_toSolrData","request","sorts","filterFields","queryFields","facetFields","filterData","limit","minimumCount","_toDbParams","searchable","and","ceil","fetch","response","res","totalElements","totalPages","_parseFacetResults","catch","err","rawBuckets","buckets","count","selectedVal","setInterval","_handleSearch","_getGridTemplateColumns","search","searchField","justifyContent","marginLeft","searchRect","currentOffset","_toggleColumnPicker","_toggleColumn","_handleRowMouseDown","getSelection","removeAllRanges","_handleRowClick","selection","_handleScroll","container","scrollLeft","scrollWidth","clientWidth","_handleResizeStart","headerCell","_handleSortClick","shiftKey","existingIndex","_renderSortIndicator","sortable","sortIndex","arrowStyle","transform","_handleAction","action","_handleKqlChange","_handleFilterPanelToggle","currentTarget","_handleKqlClear","_handleFilterClear","_handleFilterTextKeydown","_handleOperatorChange","_handleFilterStringChange","_handleFilterNumberChange","_handleFilterDateChange","_handleFilterBooleanChange","_handleFilterDateStartChange","_handleFilterDateEndChange","_handleFilterNumberStartChange","_handleFilterNumberEndChange","_handleFilterListChange","_handleFilterPanelTabChange","_handleBucketToggle","bucket","_renderCellContent","format","toLocaleString","currency","date","isoString","timeZone","_getHeaderCellClasses","align","_getCellClasses","_getCellStyle","leftOffset","rightOffset","_renderPagination","_renderCardHeader","_renderHeader","localeCompare","_renderStatus","_renderFilterPanel","valueInput","filterContent","bucketContent","panelBody","bucketLabel","checked","checkIcon","bucket__checkbox","_renderFilterRow","_renderTable","cells","KRSpinner","normalizedSize","normalizedColor","KRProgressBar","normalizedTrackColor","trackColor","KRFilePreview_1","KRFilePreview","_zoom","_panX","_panY","_dragging","_dragStartX","_dragStartY","_panStartX","_panStartY","src","_zoomLevel","_textContent","_handleDragMove","clientY","_handleDragEnd","_activePreview","preview","_isText","_loadTextContent","_handleDownload","_handleZoomIn","_handleZoomOut","_handleZoomReset","_handleDragStart","_getExtension","pop","_isImage","_isPdf","_isCsv","_formatCsv","lines","rows","line","colCount","colWidths","len","padEnd","_getFallbackIconClass","ext","_getFallbackIcon","scale","translateX","translateY","cursor","KRFileList","files","emptyMessage","_handleFileClick","file","url","_handleDelete","_getExtClass","_getExtIcon","metaText","meta","KRTextField","autocomplete","_dirty","_input","_handleInput","_handleChange","valid","live","ifDefined","minlength","maxlength","pattern","select","KRTextareaField","_textarea","KRDetailField","KRAutoSuggest","_requestId","_handleDocumentClick","_positionDropdown","requestId","console","inputRect","spaceAbove","_handleFocus","_scrollToHighlighted","highlighted","containerRect","highlightedRect","scrollIntoView","block","_handleClear","_handleOptionMouseEnter","_renderOption","footer","KRComboBox","_selectedOption","optionValue","optionLabel","fetchSelection","_loading","_resolveSelection","_getOptionValue","_open","_searchInput","_handleSearchInput","_handleSearchKeyDown","_handleTriggerKeyDown","_handleTriggerBlur","_getOptionLabel","fetchedValue","trigger__value","trigger__placeholder","trigger__icon","KRRadioCards","_focusedIndex","direction","_handleCardClick","nextIndex","_findNextEnabledIndex","cards","current","step","next","isDisabled","card","KRCheckbox","_syncFormValue","_handleClick","checkbox","checkbox__box","checkbox__check"],"mappings":"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","x_google_ignoreList":[0,1,2,3,5,6,7,8,9,11,12,15,18,32,33,34]}
|
|
1
|
+
{"version":3,"file":"krubble-components.umd.min.js","sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit-html/lit-html.js","../../../node_modules/lit-element/lit-element.js","style/base.js","../../../node_modules/@lit/reactive-element/decorators/custom-element.js","../../../node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/@lit/reactive-element/decorators/state.js","../../../node_modules/@lit/reactive-element/decorators/query.js","../../../node_modules/@lit/reactive-element/decorators/base.js","accordion/accordion.js","../../../node_modules/lit-html/directive.js","../../../node_modules/lit-html/directives/class-map.js","alert/alert.js","button/button.js","../../../node_modules/lit-html/directives/unsafe-html.js","code-demo/code-demo.js","context-menu/context-menu.js","../../../node_modules/lit-html/directives/style-map.js","dialog/dialog.js","date-range-picker/date-range-picker.js","snackbar/snackbar.js","tabs/tabs.js","tabs/tab.js","form/select-field/select-field.js","form/select-field/select-option.js","table/query.js","table/table.js","spinner/spinner.js","progress-bar/progress-bar.js","file-preview/file-preview.js","file-list/file-list.js","../../../node_modules/lit-html/directives/if-defined.js","../../../node_modules/lit-html/directive-helpers.js","../../../node_modules/lit-html/directives/live.js","form/text-field/text-field.js","form/textarea-field/textarea-field.js","form/detail-field/detail-field.js","form/auto-suggest/auto-suggest.js","form/combo-box/combo-box.js","form/radio-cards/radio-cards.js","form/checkbox/checkbox.js"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","import { css } from 'lit';\n/**\n * Base theme styles with CSS custom properties.\n * Import into components: static styles = [krBaseCSS, css`...`]\n */\nexport const krBaseCSS = css `\n :host,\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n /* Primary */\n --kr-primary: rgb(22, 48, 82);\n --kr-primary-hover: rgb(16, 36, 62);\n --kr-primary-text: #ffffff;\n\n /* Accent */\n --kr-accent: #BEEA4E;\n --kr-accent-hover: #a8d43a;\n --kr-accent-text: #000000;\n\n /* Text */\n --kr-text: #000000;\n --kr-text-muted: #4b5563;\n --kr-text-disabled: #9ca3af;\n \n /* Borders */\n --kr-border: #e5e7eb;\n }\n`;\n//# sourceMappingURL=base.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * Accordion component for collapsible content sections.\n *\n * ## Usage\n * ```html\n * <kr-accordion header=\"Basic Information\" expanded>\n * <div>Content here</div>\n * </kr-accordion>\n * ```\n *\n * @slot - The collapsible content\n *\n * @property {string} header - Section header text\n * @property {boolean} expanded - Whether the accordion is expanded\n */\nlet KRAccordion = class KRAccordion extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Section header text\n */\n this.header = '';\n /**\n * Whether the accordion is expanded\n */\n this.expanded = false;\n }\n toggle() {\n this.expanded = !this.expanded;\n }\n render() {\n return html `\n <div class=\"header\" @click=${this.toggle}>\n <span class=\"header__title\">${this.header}</span>\n <svg class=\"header__icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 9l6 6 6-6\"/>\n </svg>\n </div>\n <div class=\"content\">\n <div class=\"content__inner\">\n <div class=\"content__body\">\n <slot></slot>\n </div>\n </div>\n </div>\n `;\n }\n};\nKRAccordion.styles = css `\n :host {\n display: block;\n margin-bottom: 16px;\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: #f7f8f9;\n border-radius: 8px;\n cursor: pointer;\n user-select: none;\n }\n\n .header__title {\n font-size: 15px;\n font-weight: 600;\n color: #111827;\n }\n\n .header__icon {\n width: 20px;\n height: 20px;\n color: #9ca3af;\n transition: transform 0.2s ease;\n flex-shrink: 0;\n }\n\n :host([expanded]) .header__icon {\n transform: rotate(180deg);\n }\n\n .content {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 0.2s ease;\n }\n\n :host([expanded]) .content {\n grid-template-rows: 1fr;\n }\n\n .content__inner {\n overflow: hidden;\n }\n\n .content__body {\n padding: 16px 16px 8px 16px;\n }\n `;\n__decorate([\n property({ type: String })\n], KRAccordion.prototype, \"header\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], KRAccordion.prototype, \"expanded\", void 0);\nKRAccordion = __decorate([\n customElement('kr-accordion')\n], KRAccordion);\nexport { KRAccordion };\n//# sourceMappingURL=accordion.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter(s=>t[s]).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter(t=>\"\"!==t)));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n/**\n * A customizable alert component for displaying important information to users.\n *\n * @slot - The alert message content\n * @fires dismiss - Fired when the dismiss button is clicked\n */\nlet KRAlert = class KRAlert extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The alert type/severity\n */\n this.type = 'info';\n /**\n * Optional title text\n */\n this.title = '';\n /**\n * Whether the alert can be dismissed\n */\n this.dismissible = false;\n /**\n * Whether the alert is visible\n */\n this.visible = true;\n }\n /** Handles dismiss button click */\n _handleDismiss() {\n this.visible = false;\n this.dispatchEvent(new CustomEvent('dismiss', { bubbles: true, composed: true }));\n }\n render() {\n const icons = {\n info: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clip-rule=\"evenodd\"/></svg>`,\n success: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/></svg>`,\n warning: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clip-rule=\"evenodd\"/></svg>`,\n error: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clip-rule=\"evenodd\"/></svg>`,\n };\n return html `\n <div\n class=${classMap({\n 'alert': true,\n ['alert--' + this.type]: true,\n 'alert--has-header': !!this.title,\n 'alert--hidden': !this.visible\n })}\n role=\"alert\"\n >\n ${icons[this.type]}\n <div class=\"content\">\n ${this.title\n ? html `<h4 class=\"header\">${this.title}</h4>`\n : nothing}\n <div class=\"message\">\n <slot></slot>\n </div>\n </div>\n ${this.dismissible\n ? html `\n <button\n class=\"dismiss\"\n type=\"button\"\n aria-label=\"Dismiss alert\"\n @click=${this._handleDismiss}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\" clip-rule=\"evenodd\"/>\n </svg>\n </button>\n `\n : nothing}\n </div>\n `;\n }\n};\nKRAlert.styles = css `\n :host {\n display: block;\n }\n\n .alert {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-radius: 8px;\n border: 1px solid;\n border-left: 4px solid;\n }\n\n .alert--has-header {\n align-items: flex-start;\n }\n\n .alert--has-header .icon {\n margin-top: 2px;\n }\n\n .alert--hidden {\n display: none;\n }\n \n /* Variants */\n .alert--info {\n background-color: #eff6ff;\n border-color: #3b82f6;\n }\n\n .alert--info .icon {\n color: #2563eb;\n }\n\n .alert--success {\n background-color: #f0fdf4;\n border-color: #22c55e;\n }\n\n .alert--success .icon {\n color: #16a34a;\n }\n\n .alert--warning {\n background-color: #fffbeb;\n border-color: #f59e0b;\n }\n\n .alert--warning .icon {\n color: #d97706;\n }\n\n .alert--error {\n background-color: #fef2f2;\n border-color: #ef4444;\n }\n\n .alert--error .icon {\n color: #dc2626;\n }\n\n .icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n }\n\n .content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .header {\n font-size: 14px;\n font-weight: 600;\n color: #000000;\n margin: 0;\n }\n\n .message {\n font-size: 14px;\n color: #000000;\n margin: 0;\n }\n\n .dismiss {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n background: none;\n border: none;\n border-radius: 4px;\n color: #6b7280;\n cursor: pointer;\n transition: background 0.15s ease, color 0.15s ease;\n }\n\n .dismiss:hover {\n background-color: rgba(0, 0, 0, 0.05);\n color: #374151;\n }\n\n .dismiss:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n `;\n__decorate([\n property({ type: String })\n], KRAlert.prototype, \"type\", void 0);\n__decorate([\n property({ type: String })\n], KRAlert.prototype, \"title\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRAlert.prototype, \"dismissible\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRAlert.prototype, \"visible\", void 0);\nKRAlert = __decorate([\n customElement('kr-alert')\n], KRAlert);\nexport { KRAlert };\n//# sourceMappingURL=alert.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n/**\n * A customizable button component.\n *\n * @slot - The button content (text)\n * @slot icon - Optional icon to display alongside the button text\n * @fires click - Fired when the button is clicked\n * @fires option-select - Fired when a dropdown option is selected\n */\nlet KRButton = class KRButton extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The button variant (shape)\n */\n this.variant = 'flat';\n /**\n * The button color\n */\n this.color = 'primary';\n /**\n * The button size\n */\n this.size = 'medium';\n /**\n * Whether the button is disabled\n */\n this.disabled = false;\n /**\n * Dropdown options - when provided, button becomes a dropdown\n */\n this.options = [];\n /**\n * Position of the icon relative to the text content.\n * @attr icon-position\n */\n this.iconPosition = 'left';\n /**\n * When true and options are provided, renders as a split button with\n * separate primary action and dropdown trigger zones.\n */\n this.split = false;\n this._state = 'idle';\n this._stateText = '';\n this._dropdownOpened = false;\n this._handleHostClick = (e) => {\n if (this.split && this.options.length) {\n return;\n }\n if (this.options.length) {\n e.stopPropagation();\n this._toggleDropdown();\n }\n };\n this._handleKeydown = (e) => {\n if (e.key === 'Escape' && this._dropdownOpened) {\n this._dropdownOpened = false;\n return;\n }\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (this.split && this.options.length) {\n this.dispatchEvent(new MouseEvent('click', { bubbles: true, composed: true }));\n return;\n }\n if (this.options.length) {\n this._toggleDropdown();\n }\n else {\n this.click();\n }\n }\n if (this.split && this.options.length && e.key === 'ArrowDown') {\n e.preventDefault();\n if (!this._dropdownOpened) {\n this._toggleDropdown();\n }\n }\n };\n this._handleClickOutside = (e) => {\n if (this._dropdownOpened && !this.contains(e.target)) {\n this._dropdownOpened = false;\n }\n };\n }\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', this.href ? 'link' : 'button');\n this.setAttribute('tabindex', '0');\n this.addEventListener('keydown', this._handleKeydown);\n this.addEventListener('click', this._handleHostClick);\n document.addEventListener('click', this._handleClickOutside);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('keydown', this._handleKeydown);\n this.removeEventListener('click', this._handleHostClick);\n document.removeEventListener('click', this._handleClickOutside);\n }\n _handleSplitPrimaryClick(e) {\n e.stopPropagation();\n if (this._dropdownOpened) {\n this._dropdownOpened = false;\n }\n this.dispatchEvent(new MouseEvent('click', {\n bubbles: true,\n composed: true,\n }));\n }\n _handleSplitTriggerClick(e) {\n e.stopPropagation();\n this._toggleDropdown();\n }\n _toggleDropdown() {\n this._dropdownOpened = !this._dropdownOpened;\n if (this._dropdownOpened) {\n // Position the fixed dropdown relative to the host element\n requestAnimationFrame(() => {\n const dropdown = this.shadowRoot?.querySelector('.dropdown');\n if (dropdown) {\n const hostRect = this.getBoundingClientRect();\n dropdown.style.top = hostRect.bottom + 4 + 'px';\n dropdown.style.bottom = '';\n dropdown.style.left = hostRect.left + 'px';\n dropdown.style.right = '';\n dropdown.style.minWidth = hostRect.width + 'px';\n dropdown.style.transformOrigin = 'top left';\n dropdown.style.maxHeight = '';\n dropdown.style.overflowY = '';\n const dropdownRect = dropdown.getBoundingClientRect();\n // Open above only if the dropdown doesn't fit below and there's more room above than below\n // 8 = 4px gap between button and dropdown + 4px margin from viewport edge\n if (dropdownRect.height > window.innerHeight - hostRect.bottom - 8 && hostRect.top > window.innerHeight - hostRect.bottom) {\n dropdown.style.top = '';\n dropdown.style.bottom = window.innerHeight - hostRect.top + 4 + 'px';\n dropdown.style.transformOrigin = 'bottom left';\n dropdown.classList.add('dropdown--above');\n if (dropdownRect.height > hostRect.top - 8) {\n dropdown.style.maxHeight = hostRect.top - 8 + 'px';\n dropdown.style.overflowY = 'auto';\n }\n }\n else {\n dropdown.classList.remove('dropdown--above');\n if (dropdownRect.height > window.innerHeight - hostRect.bottom - 8) {\n dropdown.style.maxHeight = window.innerHeight - hostRect.bottom - 8 + 'px';\n dropdown.style.overflowY = 'auto';\n }\n }\n // Align right if dropdown overflows viewport right\n if (dropdownRect.right > window.innerWidth) {\n dropdown.style.left = '';\n dropdown.style.right = window.innerWidth - hostRect.right + 'px';\n if (dropdownRect.bottom > window.innerHeight) {\n dropdown.style.transformOrigin = 'bottom right';\n }\n else {\n dropdown.style.transformOrigin = 'top right';\n }\n }\n }\n });\n }\n }\n _handleOptionClick(option, e) {\n e.stopPropagation();\n this._dropdownOpened = false;\n this.dispatchEvent(new CustomEvent('option-select', {\n detail: { id: option.id, label: option.label },\n bubbles: true,\n composed: true\n }));\n }\n /**\n * Shows a loading spinner and disables the button.\n */\n showLoading() {\n this._clearStateTimeout();\n this._state = 'loading';\n this._stateText = '';\n }\n /**\n * Shows a success state with optional custom text.\n * @param text - Text to display (default: \"Saved\")\n * @param duration - Duration in ms before auto-reset (default: 2000)\n */\n showSuccess(text = 'Success', duration = 2000) {\n this._clearStateTimeout();\n this._state = 'success';\n this._stateText = text;\n if (duration > 0) {\n this._stateTimeout = window.setTimeout(() => this.reset(), duration);\n }\n }\n /**\n * Shows an error state with optional custom text.\n * @param text - Text to display (default: \"Error\")\n * @param duration - Duration in ms before auto-reset (default: 2000)\n */\n showError(text = 'Error', duration = 2000) {\n this._clearStateTimeout();\n this._state = 'error';\n this._stateText = text;\n if (duration > 0) {\n this._stateTimeout = window.setTimeout(() => this.reset(), duration);\n }\n }\n /**\n * Returns whether the button is currently in the loading state.\n */\n isLoading() {\n return this._state === 'loading';\n }\n /**\n * Resets the button to its idle state.\n */\n reset() {\n this._clearStateTimeout();\n this._state = 'idle';\n this._stateText = '';\n }\n _clearStateTimeout() {\n if (this._stateTimeout) {\n clearTimeout(this._stateTimeout);\n this._stateTimeout = undefined;\n }\n }\n updated(changedProperties) {\n // Reflect state classes to host\n this.classList.toggle('kr-button--loading', this._state === 'loading');\n this.classList.toggle('kr-button--success', this._state === 'success');\n this.classList.toggle('kr-button--error', this._state === 'error');\n this.classList.toggle(`kr-button--${this.variant}`, true);\n this.classList.toggle(`kr-button--${this.color}`, true);\n this.classList.toggle('kr-button--small', this.size === 'small');\n this.classList.toggle('kr-button--large', this.size === 'large');\n this.classList.toggle('kr-button--split', this.split && !!this.options.length);\n }\n render() {\n if (this.split && this.options.length) {\n return html `\n <div class=\"split-primary\" @click=${(e) => this._handleSplitPrimaryClick(e)}>\n <span class=\"content\">\n <slot name=\"icon\"></slot>\n <slot></slot>\n </span>\n ${this._state !== 'idle'\n ? html `<span class=\"state-overlay\">\n ${this._state === 'loading'\n ? html `<span class=\"spinner\"></span>`\n : this._stateText}\n </span>`\n : nothing}\n </div>\n <div class=\"split-divider\"></div>\n <div class=\"split-trigger\" @click=${(e) => this._handleSplitTriggerClick(e)}>\n <svg class=\"caret\" xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" width=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"/></svg>\n </div>\n <div class=\"dropdown ${this._dropdownOpened ? 'dropdown--opened' : ''}\">\n ${this.options.map(option => html `\n <button\n class=\"dropdown-item\"\n @click=${(e) => this._handleOptionClick(option, e)}\n >${option.label}</button>\n `)}\n </div>\n `;\n }\n const content = html `\n <span class=\"content\">\n <slot name=\"icon\"></slot>\n <slot></slot>\n </span>\n ${this.options.length ? html `<svg class=\"caret\" xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" width=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"/></svg>` : nothing}\n ${this._state !== 'idle'\n ? html `<span class=\"state-overlay\">\n ${this._state === 'loading'\n ? html `<span class=\"spinner\"></span>`\n : this._stateText}\n </span>`\n : nothing}\n ${this.options.length ? html `\n <div class=\"dropdown ${this._dropdownOpened ? 'dropdown--opened' : ''}\">\n ${this.options.map(option => html `\n <button\n class=\"dropdown-item\"\n @click=${(e) => this._handleOptionClick(option, e)}\n >${option.label}</button>\n `)}\n </div>\n ` : nothing}\n `;\n return this.href\n ? html `<a class=\"link\" href=${this.href} target=${this.target || nothing}>${content}</a>`\n : content;\n }\n};\nKRButton.styles = css `\n :host {\n display: inline-flex;\n position: relative;\n align-items: center;\n justify-content: center;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n letter-spacing: 0.01em;\n padding: 0 22px;\n height: 36px;\n border: none;\n border-radius: 20px;\n cursor: pointer;\n transition: background 0.15s ease;\n user-select: none;\n box-sizing: border-box;\n }\n\n :host([disabled]),\n :host(.kr-button--loading),\n :host(.kr-button--success),\n :host(.kr-button--error) {\n cursor: not-allowed;\n pointer-events: none;\n }\n\n :host([disabled]:not(.kr-button--loading):not(.kr-button--success):not(.kr-button--error)) {\n opacity: 0.5;\n }\n\n /* Flat + Primary (default) */\n :host,\n :host(.kr-button--flat.kr-button--primary) {\n background: #163052;\n color: white;\n }\n\n :host(:hover:not([disabled])),\n :host(.kr-button--flat.kr-button--primary:hover:not([disabled])) {\n background: #0e1f35;\n }\n\n /* Flat + Secondary */\n :host(.kr-button--flat.kr-button--secondary) {\n background: #f3f4f6;\n color: #374151;\n }\n\n :host(.kr-button--flat.kr-button--secondary:hover:not([disabled])) {\n background: #e5e7eb;\n }\n\n /* Outline + Primary */\n :host(.kr-button--outline.kr-button--primary) {\n background: transparent;\n border: 1px solid #163052;\n color: #163052;\n }\n\n :host(.kr-button--outline.kr-button--primary:hover:not([disabled])) {\n background: rgba(22, 48, 82, 0.05);\n }\n\n /* Outline + Secondary */\n :host(.kr-button--outline.kr-button--secondary) {\n background: transparent;\n border: 1px solid #d1d5db;\n color: #374151;\n }\n\n :host(.kr-button--outline.kr-button--secondary:hover:not([disabled])) {\n background: #f9fafb;\n border-color: #9ca3af;\n }\n\n /* Flat + Danger */\n :host(.kr-button--flat.kr-button--danger) {\n background: #dc2626;\n color: white;\n }\n\n :host(.kr-button--flat.kr-button--danger:hover:not([disabled])) {\n background: #b91c1c;\n }\n\n /* Outline + Danger */\n :host(.kr-button--outline.kr-button--danger) {\n background: transparent;\n border: 1px solid rgb(219, 38, 39);\n color: rgb(219, 38, 39);\n }\n\n :host(.kr-button--outline.kr-button--danger:hover:not([disabled])) {\n background: rgba(219, 38, 39, 0.05);\n }\n\n /* Sizes */\n :host(.kr-button--small) {\n font-size: 13px;\n height: 30px;\n padding: 0 16px;\n }\n\n :host(.kr-button--large) {\n font-size: 16px;\n height: 44px;\n padding: 0 24px;\n border-radius: 30px;\n }\n\n /* State colors */\n :host(.kr-button--success) {\n background: #198754 !important;\n color: white !important;\n }\n\n :host(.kr-button--error) {\n background: rgb(220, 53, 69) !important;\n color: white !important;\n }\n\n /* Content */\n :host(.kr-button--loading) .content,\n :host(.kr-button--success) .content,\n :host(.kr-button--error) .content {\n visibility: hidden;\n }\n\n /* State overlay */\n .state-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n /* Spinner */\n @keyframes kr-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n .spinner {\n width: 12px;\n height: 12px;\n border: 2.5px solid currentColor;\n border-top-color: transparent;\n border-radius: 50%;\n animation: kr-spin 0.6s linear infinite;\n }\n\n :host(.kr-button--small) .spinner {\n width: 10px;\n height: 10px;\n border-width: 2px;\n }\n\n :host(.kr-button--large) .spinner {\n width: 16px;\n height: 16px;\n border-width: 3px;\n }\n\n /* Dropdown */\n .dropdown {\n position: fixed;\n min-width: 100%;\n box-sizing: border-box;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n padding: 8px 0;\n z-index: 10000;\n display: none;\n transform-origin: top left;\n }\n\n .dropdown--opened {\n display: block;\n animation: dropdown-fade-in 150ms ease-out;\n }\n\n .dropdown--above {\n animation-name: dropdown-fade-in-above;\n }\n\n @keyframes dropdown-fade-in {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes dropdown-fade-in-above {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .dropdown-item {\n display: block;\n width: 100%;\n padding: 8px 16px;\n text-align: left;\n background: none;\n border: none;\n font-size: 14px;\n color: #374151;\n cursor: pointer;\n font-family: inherit;\n white-space: nowrap;\n }\n\n .dropdown-item:hover {\n background: #f3f4f6;\n }\n\n /* Caret for dropdown button */\n .caret {\n margin-left: 4px;\n margin-right: -6px;\n display: flex;\n }\n\n /* Link wrapper */\n .link {\n color: inherit;\n text-decoration: none;\n }\n\n /* Content wrapper for icon + text layout */\n .content {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n }\n\n :host([icon-position=\"right\"]) .content {\n flex-direction: row-reverse;\n }\n\n /* Icon styling */\n ::slotted([slot=\"icon\"]) {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n }\n\n :host(.kr-button--small) ::slotted([slot=\"icon\"]) {\n width: 16px;\n height: 16px;\n }\n\n :host(.kr-button--large) ::slotted([slot=\"icon\"]) {\n width: 22px;\n height: 22px;\n }\n\n /* ========================\n Split Button\n ======================== */\n\n :host(.kr-button--split) {\n padding: 0;\n pointer-events: none;\n }\n\n .split-primary,\n .split-trigger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .split-primary {\n padding: 0 16px 0 22px;\n border-radius: 20px 0 0 20px;\n position: relative;\n flex: 1;\n }\n\n .split-trigger {\n padding: 0 14px 0 8px;\n border-radius: 0 20px 20px 0;\n }\n\n .split-trigger .caret {\n margin: 0;\n }\n\n .split-divider {\n width: 1px;\n height: 100%;\n flex-shrink: 0;\n }\n\n .dropdown {\n pointer-events: auto;\n }\n\n /* Split: zone hover — flat primary */\n :host(.kr-button--flat.kr-button--primary) .split-primary:hover,\n :host(.kr-button--flat.kr-button--primary) .split-trigger:hover {\n background: #0e1f35;\n }\n\n /* Split: zone hover — flat secondary */\n :host(.kr-button--flat.kr-button--secondary) .split-primary:hover,\n :host(.kr-button--flat.kr-button--secondary) .split-trigger:hover {\n background: #e5e7eb;\n }\n\n /* Split: zone hover — flat danger */\n :host(.kr-button--flat.kr-button--danger) .split-primary:hover,\n :host(.kr-button--flat.kr-button--danger) .split-trigger:hover {\n background: #b91c1c;\n }\n\n /* Split: zone hover — outline primary */\n :host(.kr-button--outline.kr-button--primary) .split-primary:hover,\n :host(.kr-button--outline.kr-button--primary) .split-trigger:hover {\n background: rgba(22, 48, 82, 0.05);\n }\n\n /* Split: zone hover — outline secondary */\n :host(.kr-button--outline.kr-button--secondary) .split-primary:hover,\n :host(.kr-button--outline.kr-button--secondary) .split-trigger:hover {\n background: #f9fafb;\n }\n\n /* Split: zone hover — outline danger */\n :host(.kr-button--outline.kr-button--danger) .split-primary:hover,\n :host(.kr-button--outline.kr-button--danger) .split-trigger:hover {\n background: rgba(219, 38, 39, 0.05);\n }\n\n /* Split: divider colors — flat variants */\n :host(.kr-button--flat.kr-button--primary) .split-divider {\n background: rgba(255, 255, 255, 0.3);\n }\n\n :host(.kr-button--flat.kr-button--secondary) .split-divider {\n background: rgba(0, 0, 0, 0.15);\n }\n\n :host(.kr-button--flat.kr-button--danger) .split-divider {\n background: rgba(255, 255, 255, 0.3);\n }\n\n /* Split: divider colors — outline variants */\n :host(.kr-button--outline.kr-button--primary) .split-divider {\n background: #163052;\n }\n\n :host(.kr-button--outline.kr-button--secondary) .split-divider {\n background: #d1d5db;\n }\n\n :host(.kr-button--outline.kr-button--danger) .split-divider {\n background: rgb(219, 38, 39);\n }\n\n /* Split: size small */\n :host(.kr-button--split.kr-button--small) .split-primary {\n padding: 0 12px 0 16px;\n }\n\n :host(.kr-button--split.kr-button--small) .split-trigger {\n padding: 0 10px;\n }\n\n /* Split: size large */\n :host(.kr-button--split.kr-button--large) .split-primary {\n padding: 0 18px 0 24px;\n border-radius: 30px 0 0 30px;\n }\n\n :host(.kr-button--split.kr-button--large) .split-trigger {\n padding: 0 16px;\n border-radius: 0 30px 30px 0;\n }\n\n /* Split: disabled */\n :host([disabled]) .split-primary,\n :host([disabled]) .split-trigger {\n cursor: not-allowed;\n pointer-events: none;\n }\n\n /* Split: loading/success/error — overlay in primary zone only */\n :host(.kr-button--split.kr-button--loading) .split-primary .content,\n :host(.kr-button--split.kr-button--success) .split-primary .content,\n :host(.kr-button--split.kr-button--error) .split-primary .content {\n visibility: hidden;\n }\n\n :host(.kr-button--split.kr-button--loading) .split-trigger,\n :host(.kr-button--split.kr-button--success) .split-trigger,\n :host(.kr-button--split.kr-button--error) .split-trigger {\n pointer-events: none;\n opacity: 0.6;\n }\n `;\n__decorate([\n property({ type: String, reflect: true })\n], KRButton.prototype, \"variant\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRButton.prototype, \"color\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRButton.prototype, \"size\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], KRButton.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: String })\n], KRButton.prototype, \"href\", void 0);\n__decorate([\n property({ type: String })\n], KRButton.prototype, \"target\", void 0);\n__decorate([\n property({ type: Array })\n], KRButton.prototype, \"options\", void 0);\n__decorate([\n property({ type: String, reflect: true, attribute: 'icon-position' })\n], KRButton.prototype, \"iconPosition\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], KRButton.prototype, \"split\", void 0);\n__decorate([\n state()\n], KRButton.prototype, \"_state\", void 0);\n__decorate([\n state()\n], KRButton.prototype, \"_stateText\", void 0);\n__decorate([\n state()\n], KRButton.prototype, \"_dropdownOpened\", void 0);\nKRButton = __decorate([\n customElement('kr-button')\n], KRButton);\nexport { KRButton };\n//# sourceMappingURL=button.js.map","import{nothing as t,noChange as i}from\"../lit-html.js\";import{directive as r,Directive as s,PartType as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends s{constructor(i){if(super(i),this.it=t,i.type!==n.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=r(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { krBaseCSS } from '../style/base.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\n/**\n * Code demo component with Preview/Code tabs and syntax highlighting.\n *\n * Usage:\n * ```html\n * <kr-code-demo language=\"html\">\n * <kr-button>Click me</kr-button>\n * </kr-code-demo>\n * ```\n *\n * Requires highlight.js to be loaded globally for syntax highlighting.\n */\nlet KRCodeDemo = class KRCodeDemo extends LitElement {\n constructor() {\n super(...arguments);\n this.language = 'html';\n this.code = '';\n this.activeTab = 'preview';\n this.copied = false;\n this.highlightedCode = '';\n }\n connectedCallback() {\n super.connectedCallback();\n // Defer to next frame so the parser finishes with children before we read innerHTML\n requestAnimationFrame(() => {\n if (!this.code) {\n // innerHTML normalizes boolean attributes (e.g. dismissible -> dismissible=\"\"), strip the =\"\" for cleaner display\n this.code = this.innerHTML.trim().replace(/=\"\"(?=[\\s>])/g, '');\n }\n this.querySelectorAll('script').forEach(oldScript => {\n const newScript = document.createElement('script');\n newScript.textContent = oldScript.textContent;\n oldScript.replaceWith(newScript);\n });\n if (this.code && window.hljs && window.hljs.getLanguage(this.language)) {\n this.highlightedCode = window.hljs.highlight(this.code, { language: this.language }).value;\n }\n else {\n this.highlightedCode = this.code.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n }\n });\n }\n activateTab(tab) {\n this.activeTab = tab;\n }\n copyCode() {\n if (!this.code)\n return;\n navigator.clipboard.writeText(this.code).then(() => {\n this.copied = true;\n setTimeout(() => {\n this.copied = false;\n }, 2000);\n });\n }\n render() {\n return html `\n <div class=\"tabs\">\n <button\n class=${classMap({\n tab: true,\n 'tab--active': this.activeTab === 'preview'\n })}\n @click=${() => this.activateTab('preview')}\n >\n Preview\n </button>\n <button\n class=${classMap({\n tab: true, 'tab--active': this.activeTab === 'code'\n })}\n @click=${() => this.activateTab('code')}\n >\n Code\n </button>\n <button\n class=${classMap({ 'copy': true, 'copy--success': this.copied })}\n @click=${this.copyCode}\n title=${this.copied ? 'Copied!' : 'Copy code'}\n >\n ${this.copied\n ? html `<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"></polyline></svg>`\n : html `<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg>`}\n </button>\n </div>\n\n <div class=${classMap({\n panel: true,\n 'panel--active': this.activeTab === 'preview',\n 'panel--preview': true\n })}>\n <slot></slot>\n </div>\n\n <div class=${classMap({\n panel: true,\n 'panel--active': this.activeTab === 'code',\n 'panel--code': true\n })}>\n <pre class=\"code\"><code>${unsafeHTML(this.highlightedCode)}</code></pre>\n </div>\n\n `;\n }\n};\nKRCodeDemo.styles = [krBaseCSS, css `\n :host {\n display: block;\n border: 1px solid #d5dbdb;\n border-radius: 8px;\n overflow: visible;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .tabs {\n display: flex;\n align-items: center;\n height: 48px;\n background: #f8f9fa;\n border-bottom: 1px solid #d5dbdb;\n border-radius: 8px 8px 0 0;\n }\n\n .tab {\n height: 100%;\n padding: 0 20px;\n background: none;\n border: none;\n color: #6c757d;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n position: relative;\n transition: color 0.15s;\n }\n\n .tab:hover {\n color: #495057;\n }\n\n .tab--active {\n color: #1a1a2e;\n }\n\n .tab--active::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n right: 0;\n height: 2px;\n background: var(--kr-primary);\n }\n\n .panel {\n display: none;\n }\n\n .panel--active {\n display: block;\n }\n\n .panel--preview {\n padding: 24px;\n background: #ffffff;\n }\n\n .panel--code {\n }\n\n .code {\n margin: 0;\n padding: 20px;\n background: #ffffff;\n overflow-x: auto;\n font-family: 'SF Mono', 'Fira Code', 'Monaco', 'Consolas', monospace;\n font-size: 13px;\n line-height: 1.6;\n color: #1a1a2e;\n border-radius: 0 0 8px 8px;\n }\n\n .code code {\n font-family: inherit;\n }\n\n .copy {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: auto;\n margin-right: 12px;\n padding: 0;\n background: none;\n border: none;\n border-radius: 4px;\n color: #6c757d;\n cursor: pointer;\n transition: color 0.15s;\n }\n\n .copy:hover {\n color: #495057;\n }\n\n .copy--success {\n color: #16a34a;\n }\n\n /* Syntax highlighting */\n .hljs-tag { color: #22863a; }\n .hljs-name { color: #22863a; }\n .hljs-attr { color: #6f42c1; }\n .hljs-string { color: #032f62; }\n .hljs-comment { color: #6a737d; font-style: italic; }\n .hljs-keyword { color: #d73a49; }\n .hljs-number { color: #005cc5; }\n .hljs-built_in { color: #e36209; }\n .hljs-literal { color: #005cc5; }\n .hljs-symbol { color: #e36209; }\n .hljs-selector-tag { color: #22863a; }\n .hljs-selector-class { color: #6f42c1; }\n .hljs-selector-id { color: #005cc5; }\n .hljs-attribute { color: #005cc5; }\n .hljs-property { color: #005cc5; }\n\n `];\n__decorate([\n property({ type: String })\n], KRCodeDemo.prototype, \"language\", void 0);\n__decorate([\n state()\n], KRCodeDemo.prototype, \"code\", void 0);\n__decorate([\n state()\n], KRCodeDemo.prototype, \"activeTab\", void 0);\n__decorate([\n state()\n], KRCodeDemo.prototype, \"copied\", void 0);\n__decorate([\n state()\n], KRCodeDemo.prototype, \"highlightedCode\", void 0);\nKRCodeDemo = __decorate([\n customElement('kr-code-demo')\n], KRCodeDemo);\nexport { KRCodeDemo };\n//# sourceMappingURL=code-demo.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, state } from 'lit/decorators.js';\n/**\n * Context menu component that can be opened programmatically.\n *\n * Usage:\n * ```ts\n * const result = await ContextMenu.open({\n * x: event.clientX,\n * y: event.clientY,\n * items: [\n * { id: 'edit', label: 'Edit Item' },\n * { id: 'divider', label: '', divider: true },\n * { id: 'add-above', label: 'Add Item Above' },\n * { id: 'add-below', label: 'Add Item Below' },\n * ]\n * });\n *\n * if (result) {\n * console.log('Selected:', result.id);\n * }\n * ```\n */\nlet KRContextMenu = class KRContextMenu extends LitElement {\n constructor() {\n super(...arguments);\n this.items = [];\n this.resolvePromise = null;\n this.boundHandleOutsideClick = this.handleOutsideClick.bind(this);\n this.boundHandleKeyDown = this.handleKeyDown.bind(this);\n }\n static async open(options) {\n // Remove any existing context menu\n const existing = document.querySelector('kr-context-menu');\n if (existing) {\n existing.remove();\n }\n // Create and position the menu\n const menu = document.createElement('kr-context-menu');\n document.body.appendChild(menu);\n return menu.show(options);\n }\n async show(options) {\n this.items = options.items;\n this.style.left = `${options.x}px`;\n this.style.top = `${options.y}px`;\n // Adjust position if menu would go off screen\n await this.updateComplete;\n const rect = this.getBoundingClientRect();\n if (rect.right > window.innerWidth) {\n this.style.left = `${options.x - rect.width}px`;\n }\n if (rect.bottom > window.innerHeight) {\n this.style.top = `${options.y - rect.height}px`;\n }\n // Add event listeners after a microtask to avoid the current event triggering close\n requestAnimationFrame(() => {\n document.addEventListener('click', this.boundHandleOutsideClick);\n document.addEventListener('contextmenu', this.boundHandleOutsideClick);\n document.addEventListener('keydown', this.boundHandleKeyDown);\n });\n return new Promise((resolve) => {\n this.resolvePromise = resolve;\n });\n }\n handleOutsideClick(e) {\n if (!this.contains(e.target)) {\n this.close(null);\n }\n }\n handleKeyDown(e) {\n if (e.key === 'Escape') {\n this.close(null);\n }\n }\n handleItemClick(item) {\n if (!item.disabled && !item.divider) {\n this.close(item);\n }\n }\n close(result) {\n document.removeEventListener('click', this.boundHandleOutsideClick);\n document.removeEventListener('contextmenu', this.boundHandleOutsideClick);\n document.removeEventListener('keydown', this.boundHandleKeyDown);\n if (this.resolvePromise) {\n this.resolvePromise(result);\n this.resolvePromise = null;\n }\n this.remove();\n }\n render() {\n return html `\n <div class=\"menu\">\n ${this.items.map(item => item.divider\n ? html `<div class=\"menu__divider\"></div>`\n : html `\n <button\n class=\"menu__item\"\n ?disabled=${item.disabled}\n @click=${() => this.handleItemClick(item)}\n >\n ${item.icon ? html `<span class=\"menu__item-icon\">${item.icon}</span>` : null}\n ${item.label}\n </button>\n `)}\n </div>\n `;\n }\n};\nKRContextMenu.styles = css `\n :host {\n position: fixed;\n z-index: 10000;\n }\n\n .menu {\n background: #1a1a2e;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n padding: 4px;\n min-width: 180px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n }\n\n .menu__item {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 10px 12px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.8);\n font-size: 13px;\n font-family: inherit;\n text-align: left;\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n }\n\n .menu__item:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.05);\n color: #ffffff;\n }\n\n .menu__item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .menu__item-icon {\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .menu__divider {\n height: 1px;\n background: rgba(255, 255, 255, 0.1);\n margin: 4px 0;\n }\n `;\n__decorate([\n state()\n], KRContextMenu.prototype, \"items\", void 0);\nKRContextMenu = __decorate([\n customElement('kr-context-menu')\n], KRContextMenu);\nexport { KRContextMenu };\n//# sourceMappingURL=context-menu.js.map","import{noChange as t}from\"../lit-html.js\";import{directive as e,Directive as r,PartType as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=\"important\",i=\" !\"+n,o=e(class extends r{constructor(t){if(super(t),t.type!==s.ATTRIBUTE||\"style\"!==t.name||t.strings?.length>2)throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\")}render(t){return Object.keys(t).reduce((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes(\"-\")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,\"-$&\").toLowerCase()}:${s};`},\"\")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes(\"-\")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r=\"string\"==typeof e&&e.endsWith(i);t.includes(\"-\")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:\"\"):s[t]=e}}return t}});export{o as styleMap};\n//# sourceMappingURL=style-map.js.map\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nlet KRDialogHeader = class KRDialogHeader extends LitElement {\n render() {\n return html `<slot></slot>`;\n }\n};\nKRDialogHeader.styles = css `\n :host {\n display: flex;\n padding: 0 24px;\n align-items: center;\n height: 64px;\n flex-shrink: 0;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n }\n\n ::slotted(h2) {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n }\n `;\nKRDialogHeader = __decorate([\n customElement('kr-dialog-header')\n], KRDialogHeader);\nexport { KRDialogHeader };\nlet KRDialogContent = class KRDialogContent extends LitElement {\n render() {\n return html `<slot></slot>`;\n }\n};\nKRDialogContent.styles = css `\n :host {\n display: block;\n padding: 24px;\n overflow: auto;\n flex: 1 1 auto;\n }\n `;\nKRDialogContent = __decorate([\n customElement('kr-dialog-content')\n], KRDialogContent);\nexport { KRDialogContent };\nlet KRDialogFooter = class KRDialogFooter extends LitElement {\n render() {\n return html `<slot></slot>`;\n }\n};\nKRDialogFooter.styles = css `\n :host {\n display: flex;\n padding: 0 24px;\n align-items: center;\n height: 64px;\n flex-shrink: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n gap: 12px;\n justify-content: flex-end;\n }\n `;\nKRDialogFooter = __decorate([\n customElement('kr-dialog-footer')\n], KRDialogFooter);\nexport { KRDialogFooter };\n/**\n * A reference to an open dialog instance.\n *\n * Used to close the dialog and retrieve its result.\n *\n * @typeParam R - The type of the result returned when the dialog closes\n */\nexport class KRDialogRef {\n constructor() {\n this._resolvePromise = null;\n this._dialogElement = null;\n this._promise = new Promise((resolve) => {\n this._resolvePromise = resolve;\n });\n }\n /** @internal */\n setDialogElement(el) {\n this._dialogElement = el;\n }\n /**\n * Closes the dialog and resolves with the given result.\n *\n * @param result - The result to return to the caller\n */\n close(result) {\n if (this._resolvePromise) {\n this._resolvePromise(result);\n this._resolvePromise = null;\n }\n this._dialogElement?.remove();\n }\n /**\n * Returns a promise that resolves when the dialog is closed.\n *\n * @returns A promise that resolves with the dialog result, or undefined if dismissed\n */\n afterClosed() {\n return this._promise;\n }\n}\n/**\n * Generic dialog component that supports both declarative and programmatic usage.\n *\n * Declarative: place `<kr-dialog>` in HTML with slotted content and call `.open()` / `.close()`.\n * Programmatic: use `KRDialog.open(Component, config)` to create and show a dialog.\n *\n * @element kr-dialog\n *\n * @slot - Default slot for declarative dialog content (kr-dialog-header, kr-dialog-content, kr-dialog-footer)\n *\n * @fires close - Fired when a declarative dialog is closed\n */\nlet KRDialog = class KRDialog extends LitElement {\n constructor() {\n super(...arguments);\n this._dialogRef = null;\n this._contentElement = null;\n this.opened = false;\n this.label = '';\n this.width = '560px';\n this._handleDocumentKeyDown = (e) => {\n if (e.key === 'Escape') {\n this.close();\n }\n };\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._handleDocumentKeyDown);\n }\n updated(changedProperties) {\n super.updated(changedProperties);\n if (changedProperties.has('opened')) {\n if (this.opened) {\n document.addEventListener('keydown', this._handleDocumentKeyDown);\n }\n else {\n document.removeEventListener('keydown', this._handleDocumentKeyDown);\n }\n }\n }\n /**\n * Opens the dialog (declarative mode).\n */\n open() {\n this.opened = true;\n }\n /**\n * Closes the dialog.\n * In programmatic mode (has _dialogRef), delegates to the dialog ref.\n * In declarative mode, sets opened=false and dispatches close event.\n */\n close() {\n if (this._dialogRef) {\n this._dialogRef.close(undefined);\n return;\n }\n this.opened = false;\n this.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }));\n }\n /**\n * Opens a dialog programmatically by creating a component and injecting it.\n */\n static open(component, config) {\n // Only remove other programmatic dialogs (those with a _dialogRef)\n document.querySelectorAll('kr-dialog').forEach((el) => {\n if (el._dialogRef) {\n el.remove();\n }\n });\n const dialogRef = new KRDialogRef();\n const dialog = document.createElement('kr-dialog');\n dialogRef.setDialogElement(dialog);\n dialog._dialogRef = dialogRef;\n // Create the content component\n const content = new component();\n content.dialogRef = dialogRef;\n if (config?.data) {\n content.data = config.data;\n }\n if (config?.label) {\n dialog.label = config.label;\n }\n if (config?.width) {\n dialog.width = config.width;\n }\n dialog._contentElement = content;\n dialog.opened = true;\n document.body.appendChild(dialog);\n return dialogRef;\n }\n _handleBackdropClick(e) {\n if (e.target.classList.contains('backdrop')) {\n this.close();\n }\n }\n render() {\n return html `\n <div class=\"backdrop\" @click=${this._handleBackdropClick}></div>\n <div class=\"dialog\" style=${styleMap({ width: this.width })}>\n ${this.label ? html `<div class=\"dialog__header\"><div class=\"dialog__header-label\">${this.label}</div></div>` : ''}\n <div class=\"dialog__body\">${this._contentElement ? this._contentElement : html `<slot></slot>`}</div>\n </div>\n `;\n }\n};\nKRDialog.styles = css `\n :host {\n position: fixed;\n inset: 0;\n z-index: 10000;\n display: none;\n align-items: center;\n justify-content: center;\n }\n\n :host([opened]) {\n display: flex;\n }\n\n .backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n }\n\n .dialog {\n position: relative;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 12px;\n box-shadow: 0 16px 48px rgba(0, 0, 0, 0.2);\n max-height: 90vh;\n height: auto;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n width: 560px;\n max-width: calc(100vw - 48px);\n }\n\n ::slotted(kr-dialog-header),\n ::slotted(kr-dialog-footer) {\n flex-shrink: 0;\n }\n\n ::slotted(kr-dialog-content) {\n flex: 1 1 auto;\n overflow: auto;\n }\n\n .dialog__header {\n display: flex;\n padding: 0 24px;\n align-items: center;\n height: 64px;\n flex-shrink: 0;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n }\n\n .dialog__header-label {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n }\n\n .dialog__body {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n }\n `;\n__decorate([\n state()\n], KRDialog.prototype, \"_contentElement\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], KRDialog.prototype, \"opened\", void 0);\n__decorate([\n property({ type: String })\n], KRDialog.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRDialog.prototype, \"width\", void 0);\nKRDialog = __decorate([\n customElement('kr-dialog')\n], KRDialog);\nexport { KRDialog };\n//# sourceMappingURL=dialog.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport '../button/button.js';\n/**\n * A date range picker component for selecting date ranges with relative and absolute options.\n *\n * @fires change - Fired when the date range selection changes\n * @csspart trigger - The trigger button element\n * @csspart dropdown - The dropdown container\n */\nlet KRDateRangePicker = class KRDateRangePicker extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Relative date options to display\n */\n this.relativeOptions = [\n { key: 'last-5-minutes', amount: 5, unit: 'minute', type: 'relative' },\n { key: 'last-30-minutes', amount: 30, unit: 'minute', type: 'relative' },\n { key: 'last-1-hour', amount: 1, unit: 'hour', type: 'relative' },\n { key: 'last-6-hours', amount: 6, unit: 'hour', type: 'relative' },\n { key: 'last-1-day', amount: 1, unit: 'day', type: 'relative' },\n { key: 'last-7-days', amount: 7, unit: 'day', type: 'relative' },\n { key: 'last-30-days', amount: 30, unit: 'day', type: 'relative' },\n ];\n /**\n * Whether the picker is disabled\n */\n this.disabled = false;\n /**\n * Whether the picker is in an invalid state\n */\n this.invalid = false;\n /**\n * Placeholder text when no range is selected\n */\n this.placeholder = 'Select a date range';\n /**\n * Initial start date for absolute mode (YYYY-MM-DD)\n */\n this.startDate = '';\n /**\n * Initial end date for absolute mode (YYYY-MM-DD)\n */\n this.endDate = '';\n this._isOpen = false;\n this._activeTab = 'relative';\n this._tempStartDate = '';\n this._tempEndDate = '';\n this._handleClickOutside = (e) => {\n if (!e.composedPath().includes(this)) {\n this._isOpen = false;\n }\n };\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleClickOutside);\n if (this.startDate)\n this._tempStartDate = this.startDate;\n if (this.endDate)\n this._tempEndDate = this.endDate;\n // Set initial active tab based on mode\n if (this.mode === 'relative') {\n this._activeTab = 'relative';\n }\n else if (this.mode === 'absolute') {\n this._activeTab = 'absolute';\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleClickOutside);\n }\n _handleTriggerClick() {\n if (this.disabled)\n return;\n this._isOpen = !this._isOpen;\n }\n _handleTabClick(tab) {\n this._activeTab = tab;\n }\n _handleRelativeSelect(option) {\n this.value = {\n type: 'relative',\n amount: option.amount,\n unit: option.unit,\n };\n this._isOpen = false;\n this.dispatchEvent(new CustomEvent('change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n _handleApplyAbsolute() {\n if (!this._tempStartDate) {\n return;\n }\n if (!this._tempEndDate) {\n return;\n }\n if (this._tempStartDate >= this._tempEndDate) {\n return;\n }\n this.value = {\n type: 'absolute',\n startDate: this._tempStartDate,\n endDate: this._tempEndDate,\n };\n this.startDate = this._tempStartDate;\n this.endDate = this._tempEndDate;\n this._isOpen = false;\n this.dispatchEvent(new CustomEvent('change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n _handleCancel() {\n this._isOpen = false;\n this._tempStartDate = this.startDate;\n this._tempEndDate = this.endDate;\n }\n _formatRelativeOption(option) {\n if (option.amount === 0) {\n if (option.unit === 'day') {\n return 'Today';\n }\n return `This ${option.unit}`;\n }\n const unitLabels = {\n second: option.amount === 1 ? 'second' : 'seconds',\n minute: option.amount === 1 ? 'minute' : 'minutes',\n hour: option.amount === 1 ? 'hour' : 'hours',\n day: option.amount === 1 ? 'day' : 'days',\n week: option.amount === 1 ? 'week' : 'weeks',\n month: option.amount === 1 ? 'month' : 'months',\n year: option.amount === 1 ? 'year' : 'years',\n };\n return `Last ${option.amount} ${unitLabels[option.unit]}`;\n }\n _getDisplayValue() {\n if (!this.value)\n return '';\n if (this.value.type === 'relative' && this.value.amount !== undefined && this.value.unit) {\n return this._formatRelativeOption({\n key: '',\n amount: this.value.amount,\n unit: this.value.unit,\n type: 'relative',\n });\n }\n if (this.value.type === 'absolute' && this.value.startDate && this.value.endDate) {\n return `${this.value.startDate} - ${this.value.endDate}`;\n }\n return '';\n }\n _renderTriggerText() {\n const displayValue = this._getDisplayValue();\n if (displayValue) {\n return html `${displayValue}`;\n }\n return html `<span class=\"trigger-placeholder\">${this.placeholder}</span>`;\n }\n _renderContent() {\n if (this.mode === 'relative') {\n return this._renderRelativeContent();\n }\n if (this.mode === 'absolute') {\n return this._renderAbsoluteContent();\n }\n if (this._activeTab === 'relative') {\n return this._renderRelativeContent();\n }\n return this._renderAbsoluteContent();\n }\n _renderRelativeContent() {\n return html `\n <div class=\"relative-options\">\n ${this.relativeOptions.map((option) => html `\n <button\n class=${classMap({\n 'relative-option': true,\n 'relative-option--selected': this.value?.type === 'relative' &&\n this.value?.amount === option.amount &&\n this.value?.unit === option.unit\n })}\n type=\"button\"\n @click=${() => this._handleRelativeSelect(option)}\n >\n ${this._formatRelativeOption(option)}\n </button>\n `)}\n </div>\n `;\n }\n _renderAbsoluteContent() {\n return html `\n <div class=\"absolute\">\n <div class=\"date-row\">\n <span class=\"date-label\">Start</span>\n <input\n class=\"date-input\"\n type=\"date\"\n .value=${this._tempStartDate}\n @change=${this._handleStartDateChange}\n />\n </div>\n <div class=\"date-row\">\n <span class=\"date-label\">End</span>\n <input\n class=\"date-input\"\n type=\"date\"\n .value=${this._tempEndDate}\n @change=${this._handleEndDateChange}\n />\n </div>\n </div>\n `;\n }\n _renderFooter() {\n if (this.mode === 'absolute') {\n return html `\n <div class=\"footer\">\n <kr-button variant=\"outline\" size=\"small\" @click=${this._handleCancel}>\n Cancel\n </kr-button>\n <kr-button\n variant=\"primary\"\n size=\"small\"\n ?disabled=${!this._tempStartDate || !this._tempEndDate}\n @click=${this._handleApplyAbsolute}\n >\n Apply\n </kr-button>\n </div>\n `;\n }\n if (this.mode === 'relative') {\n return nothing;\n }\n if (this._activeTab === 'absolute') {\n return html `\n <div class=\"footer\">\n <kr-button variant=\"outline\" size=\"small\" @click=${this._handleCancel}>\n Cancel\n </kr-button>\n <kr-button\n variant=\"primary\"\n size=\"small\"\n ?disabled=${!this._tempStartDate || !this._tempEndDate}\n @click=${this._handleApplyAbsolute}\n >\n Apply\n </kr-button>\n </div>\n `;\n }\n return nothing;\n }\n _handleStartDateChange(e) {\n this._tempStartDate = e.target.value;\n }\n _handleEndDateChange(e) {\n this._tempEndDate = e.target.value;\n }\n render() {\n return html `\n <button\n part=\"trigger\"\n class=${classMap({\n 'trigger': true,\n 'trigger--invalid': this.invalid\n })}\n type=\"button\"\n ?disabled=${this.disabled}\n @click=${this._handleTriggerClick}\n >\n <svg class=\"icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n <span class=\"trigger-text\">\n ${this._renderTriggerText()}\n </span>\n <svg class=\"icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </button>\n\n <div part=\"dropdown\" class=${classMap({\n 'dropdown': true,\n 'dropdown--open': this._isOpen\n })}>\n ${!this.mode ? html `\n <div class=\"tabs\">\n <button\n class=${classMap({\n 'tab': true,\n 'tab--active': this._activeTab === 'relative'\n })}\n type=\"button\"\n @click=${() => this._handleTabClick('relative')}\n >\n Relative\n </button>\n <button\n class=${classMap({\n 'tab': true,\n 'tab--active': this._activeTab === 'absolute'\n })}\n type=\"button\"\n @click=${() => this._handleTabClick('absolute')}\n >\n Absolute\n </button>\n </div>\n ` : nothing}\n\n <div class=\"content\">\n ${this._renderContent()}\n </div>\n\n ${this._renderFooter()}\n </div>\n `;\n }\n};\nKRDateRangePicker.styles = css `\n :host {\n display: inline-block;\n position: relative;\n font-family: inherit;\n }\n\n .trigger {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n min-width: 250px;\n padding: 0.5rem 0.75rem;\n font-size: 14px;\n font-family: inherit;\n color: #111827;\n background-color: #fff;\n border: 1px solid #d1d5db;\n border-radius: 4px;\n cursor: pointer;\n transition: border-color 0.2s, box-shadow 0.2s;\n text-align: left;\n }\n\n .trigger:hover:not(:disabled) {\n border-color: #9ca3af;\n }\n\n .trigger:focus {\n outline: none;\n border-color: #2563eb;\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n }\n\n .trigger:disabled {\n background-color: #f3f4f6;\n color: #9ca3af;\n cursor: not-allowed;\n }\n\n .trigger--invalid {\n border-color: #ef4444;\n }\n\n .trigger-text {\n flex: 1;\n }\n\n .trigger-placeholder {\n color: #9ca3af;\n }\n\n .icon {\n width: 16px;\n height: 16px;\n color: #6b7280;\n flex-shrink: 0;\n }\n\n .dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n min-width: 320px;\n background-color: #fff;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n display: none;\n }\n\n .dropdown--open {\n display: block;\n }\n\n .tabs {\n display: flex;\n border-bottom: 1px solid #e5e7eb;\n }\n\n .tab {\n flex: 1;\n padding: 0.75rem;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n color: #6b7280;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n transition: color 0.2s;\n }\n\n .tab:hover {\n color: #111827;\n }\n\n .tab--active {\n color: #2563eb;\n border-bottom-color: #2563eb;\n }\n\n .content {\n padding: 1rem;\n }\n\n .relative-options {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .relative-option {\n display: flex;\n align-items: center;\n padding: 0.5rem 0.75rem;\n font-size: 14px;\n font-family: inherit;\n color: #111827;\n background: none;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n text-align: left;\n transition: background-color 0.2s;\n }\n\n .relative-option:hover {\n background-color: #f3f4f6;\n }\n\n .relative-option--selected {\n background-color: #eff6ff;\n color: #1e40af;\n }\n\n .absolute {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n\n .date-row {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n }\n\n .date-label {\n width: 60px;\n font-size: 14px;\n color: #6b7280;\n }\n\n .date-input {\n flex: 1;\n padding: 0.5rem 0.75rem;\n font-size: 14px;\n font-family: inherit;\n border: 1px solid #d1d5db;\n border-radius: 4px;\n }\n\n .date-input:focus {\n outline: none;\n border-color: #2563eb;\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n }\n\n .footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n border-top: 1px solid #e5e7eb;\n }\n `;\n__decorate([\n property({ type: Object })\n], KRDateRangePicker.prototype, \"value\", void 0);\n__decorate([\n property({ type: Array })\n], KRDateRangePicker.prototype, \"relativeOptions\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRDateRangePicker.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRDateRangePicker.prototype, \"invalid\", void 0);\n__decorate([\n property({ type: String })\n], KRDateRangePicker.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: String })\n], KRDateRangePicker.prototype, \"startDate\", void 0);\n__decorate([\n property({ type: String })\n], KRDateRangePicker.prototype, \"endDate\", void 0);\n__decorate([\n property({ type: String })\n], KRDateRangePicker.prototype, \"mode\", void 0);\n__decorate([\n state()\n], KRDateRangePicker.prototype, \"_isOpen\", void 0);\n__decorate([\n state()\n], KRDateRangePicker.prototype, \"_activeTab\", void 0);\n__decorate([\n state()\n], KRDateRangePicker.prototype, \"_tempStartDate\", void 0);\n__decorate([\n state()\n], KRDateRangePicker.prototype, \"_tempEndDate\", void 0);\nKRDateRangePicker = __decorate([\n customElement('kr-date-range-picker')\n], KRDateRangePicker);\nexport { KRDateRangePicker };\n//# sourceMappingURL=date-range-picker.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar KRSnackbar_1;\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * A snackbar component for displaying brief notification messages.\n *\n * Snackbars appear at the bottom-left of the screen and automatically\n * dismiss after a configurable duration. Multiple snackbars stack vertically.\n *\n * @fires dismiss - Fired when the snackbar is dismissed (manually or automatically)\n *\n * @example\n * ```ts\n * // Show a success message\n * KRSnackbar.show({ message: 'Item saved successfully', type: 'success' });\n *\n * // Show a message with title\n * KRSnackbar.show({ title: 'Upload Complete', message: 'Your file has been uploaded.', type: 'success' });\n *\n * // Show an error that stays until manually dismissed\n * KRSnackbar.show({ message: 'Failed to save', type: 'error', duration: 0 });\n * ```\n */\nlet KRSnackbar = KRSnackbar_1 = class KRSnackbar extends LitElement {\n constructor() {\n super(...arguments);\n this.dismissTimeout = null;\n /**\n * The snackbar type/severity. Controls the color scheme and icon.\n */\n this.type = 'info';\n /**\n * Optional title to display above the message.\n */\n this.title = '';\n /**\n * The message to display in the snackbar.\n */\n this.message = '';\n /**\n * Duration in milliseconds before auto-dismiss. Set to 0 to disable auto-dismiss.\n * @default 5000\n */\n this.duration = 5000;\n }\n /**\n * Show a snackbar with the given options.\n * @param options - Configuration including message, optional title, type, and duration\n * @returns The created snackbar element\n */\n static show(options) {\n // Close any existing snackbars before showing the new one\n for (const existing of this.activeSnackbars) {\n existing.dismiss();\n }\n const snackbar = document.createElement('kr-snackbar');\n snackbar.message = options.message;\n snackbar.title = options.title ?? '';\n snackbar.type = options.type ?? 'info';\n if (options.duration !== undefined) {\n snackbar.duration = options.duration;\n }\n else if (snackbar.type === 'error') {\n snackbar.duration = 0;\n }\n else {\n snackbar.duration = 5000;\n }\n document.body.appendChild(snackbar);\n return snackbar;\n }\n connectedCallback() {\n super.connectedCallback();\n // Set role and type class on host\n this.setAttribute('role', 'alert');\n this.classList.add(`kr-snackbar--${this.type}`);\n if (this.title) {\n this.classList.add('kr-snackbar--has-title');\n }\n // Add to active snackbars and update positions\n KRSnackbar_1.activeSnackbars.push(this);\n // this.updatePositions();\n // Set up auto-dismiss\n if (this.duration > 0) {\n this.dismissTimeout = window.setTimeout(() => {\n this.dismiss();\n }, this.duration);\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n // Remove from active snackbars\n const index = KRSnackbar_1.activeSnackbars.indexOf(this);\n if (index > -1) {\n KRSnackbar_1.activeSnackbars.splice(index, 1);\n }\n // Update positions of remaining snackbars\n // this.updatePositions();\n // Clear timeout\n if (this.dismissTimeout) {\n clearTimeout(this.dismissTimeout);\n }\n }\n // private updatePositions() {\n // let bottomOffset = 24;\n // for (const snackbar of KRSnackbar.activeSnackbars) {\n // snackbar.style.bottom = `${bottomOffset}px`;\n // bottomOffset += snackbar.offsetHeight + 8;\n // }\n // }\n dismiss() {\n if (this.dismissTimeout) {\n clearTimeout(this.dismissTimeout);\n this.dismissTimeout = null;\n }\n this.classList.add('kr-snackbar--closing');\n this.addEventListener('animationend', () => {\n this.dispatchEvent(new CustomEvent('dismiss', { bubbles: true, composed: true }));\n this.remove();\n }, { once: true });\n }\n render() {\n const icons = {\n info: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clip-rule=\"evenodd\"/></svg>`,\n success: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/></svg>`,\n warning: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clip-rule=\"evenodd\"/></svg>`,\n error: html `<svg class=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clip-rule=\"evenodd\"/></svg>`,\n };\n return html `\n ${icons[this.type]}\n <div class=\"content\">\n ${this.title ? html `<div class=\"title\">${this.title}</div>` : ''}\n <div class=\"message\">${this.message}</div>\n </div>\n <button\n class=\"dismiss\"\n type=\"button\"\n aria-label=\"Dismiss\"\n @click=${this.dismiss}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\" clip-rule=\"evenodd\"/>\n </svg>\n </button>\n `;\n }\n};\nKRSnackbar.styles = css `\n :host,\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n position: fixed;\n left: 16px;\n bottom: 24px;\n z-index: 10000;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 12px 14px 16px;\n border-radius: 8px;\n border: 1px solid;\n border-left: 4px solid;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 280px;\n max-width: 400px;\n min-height: 48px;\n animation: slideIn 0.2s ease-out;\n }\n\n :host(.kr-snackbar--has-title) {\n align-items: flex-start;\n }\n\n @keyframes slideIn {\n from {\n opacity: 0;\n transform: translateX(-100%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n\n @keyframes slideOut {\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(-100%);\n }\n }\n\n :host(.kr-snackbar--closing) {\n animation: slideOut 0.15s ease-in forwards;\n }\n\n /* Variants */\n :host(.kr-snackbar--info) {\n background-color: #eff6ff;\n border-color: #bfdbfe;\n border-left-color: #3b82f6;\n }\n\n :host(.kr-snackbar--info) .icon {\n color: #2563eb;\n }\n\n :host(.kr-snackbar--success) {\n background-color: #f0fdf4;\n border-color: #bbf7d0;\n border-left-color: #22c55e;\n }\n\n :host(.kr-snackbar--success) .icon {\n color: #16a34a;\n }\n\n :host(.kr-snackbar--warning) {\n background-color: #fffbeb;\n border-color: #fde68a;\n border-left-color: #f59e0b;\n }\n\n :host(.kr-snackbar--warning) .icon {\n color: #d97706;\n }\n\n :host(.kr-snackbar--error) {\n background-color: #fef2f2;\n border-color: #fecaca;\n border-left-color: #ef4444;\n }\n\n :host(.kr-snackbar--error) .icon {\n color: #dc2626;\n }\n\n .icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n margin-top: 1px;\n }\n\n .content {\n flex: 1;\n min-width: 0;\n }\n\n .title {\n font-size: 14px;\n font-weight: 600;\n color: #000000;\n margin: 0 0 2px 0;\n }\n\n .message {\n font-size: 14px;\n color: #000000;\n margin: 0;\n }\n\n .dismiss {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n background: none;\n border: none;\n border-radius: 4px;\n color: #6b7280;\n cursor: pointer;\n transition: background 0.15s ease, color 0.15s ease;\n }\n\n .dismiss:hover {\n background-color: rgba(0, 0, 0, 0.05);\n color: #374151;\n }\n\n .dismiss:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n `;\n/** Track active snackbars for stacking */\nKRSnackbar.activeSnackbars = [];\n__decorate([\n property({ type: String })\n], KRSnackbar.prototype, \"type\", void 0);\n__decorate([\n property({ type: String })\n], KRSnackbar.prototype, \"title\", void 0);\n__decorate([\n property({ type: String })\n], KRSnackbar.prototype, \"message\", void 0);\n__decorate([\n property({ type: Number })\n], KRSnackbar.prototype, \"duration\", void 0);\nKRSnackbar = KRSnackbar_1 = __decorate([\n customElement('kr-snackbar')\n], KRSnackbar);\nexport { KRSnackbar };\n//# sourceMappingURL=snackbar.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { krBaseCSS } from '../style/base.js';\n/**\n * A tabbed navigation component for switching between content sections.\n *\n * @element kr-tab-group\n *\n * @slot - Default slot for kr-tab children\n *\n * @fires tab-change - Fired when the active tab changes, detail: { activeTabId: string }\n * @fires tab-dismiss - Fired when a dismissible tab is closed, detail: { tabId: string }\n *\n * @example\n * ```html\n * <kr-tab-group active-tab-id=\"settings\">\n * <kr-tab id=\"home\" label=\"Home\">\n * <svg slot=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"16\" height=\"16\">...</svg>\n * <p>Home content here</p>\n * </kr-tab>\n * <kr-tab id=\"settings\" label=\"Settings\" badge=\"3\">\n * <svg slot=\"icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"16\" height=\"16\">...</svg>\n * <p>Settings content here</p>\n * </kr-tab>\n * </kr-tab-group>\n * ```\n */\nlet KRTabGroup = class KRTabGroup extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Whether tabs should stretch to fill the full width evenly\n */\n this.justified = false;\n /**\n * Size of the tabs: 'small' | 'medium' | 'large'\n */\n this.size = 'medium';\n }\n updated(changes) {\n if (changes.has('activeTabId')) {\n this._updateActiveTab();\n }\n }\n firstUpdated() {\n this._updateActiveTab();\n }\n _getTabs() {\n return Array.from(this.querySelectorAll('kr-tab'));\n }\n _updateActiveTab() {\n const tabs = this._getTabs();\n if (tabs.length === 0)\n return;\n if (!this.activeTabId) {\n this.activeTabId = tabs[0]?.id;\n }\n tabs.forEach((tab) => {\n tab.active = tab.id === this.activeTabId;\n });\n this.requestUpdate();\n }\n _handleTabClick(tab) {\n if (tab.disabled)\n return;\n this.activeTabId = tab.id;\n this.dispatchEvent(new CustomEvent('tab-change', {\n detail: { activeTabId: tab.id },\n bubbles: true,\n composed: true,\n }));\n }\n _handleTabDismiss(tab, e) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent('tab-dismiss', {\n detail: { tabId: tab.id },\n bubbles: true,\n composed: true,\n }));\n }\n _handleKeyDown(e) {\n const enabledTabs = this._getTabs().filter((t) => !t.disabled);\n const currentIndex = enabledTabs.findIndex((t) => t.id === this.activeTabId);\n let newIndex = -1;\n switch (e.key) {\n case 'ArrowLeft':\n newIndex = currentIndex > 0 ? currentIndex - 1 : enabledTabs.length - 1;\n break;\n case 'ArrowRight':\n newIndex = currentIndex < enabledTabs.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'Home':\n newIndex = 0;\n break;\n case 'End':\n newIndex = enabledTabs.length - 1;\n break;\n }\n if (newIndex >= 0) {\n e.preventDefault();\n const newTab = enabledTabs[newIndex];\n this.activeTabId = newTab.id;\n this.dispatchEvent(new CustomEvent('tab-change', {\n detail: { activeTabId: newTab.id },\n bubbles: true,\n composed: true,\n }));\n const tabButtons = this.shadowRoot?.querySelectorAll('.label');\n const targetButton = Array.from(tabButtons || []).find((btn) => btn.getAttribute('data-tab-id') === newTab.id);\n targetButton?.focus();\n }\n }\n _renderTabIcon(tab) {\n const iconElement = tab.getIconElement();\n if (!iconElement)\n return nothing;\n // Clone the icon element to render in the header\n const clonedIcon = iconElement.cloneNode(true);\n clonedIcon.removeAttribute('slot');\n return html `<span class=\"label-icon\">${clonedIcon}</span>`;\n }\n render() {\n return html `\n <div class=\"header\" role=\"tablist\" @keydown=${this._handleKeyDown}>\n ${this._getTabs().map((tab) => html `\n <button\n class=${classMap({\n label: true,\n 'label--active': tab.id === this.activeTabId,\n 'label--justified': this.justified,\n })}\n role=\"tab\"\n data-tab-id=${tab.id}\n aria-selected=${tab.id === this.activeTabId}\n aria-controls=${`panel-${tab.id}`}\n tabindex=${tab.id === this.activeTabId ? 0 : -1}\n ?disabled=${tab.disabled}\n @click=${() => this._handleTabClick(tab)}\n >\n ${this._renderTabIcon(tab)}\n <span>${tab.label}</span>\n ${tab.badge ? html `<span class=\"label-badge\" style=${styleMap({ backgroundColor: tab.badgeBackground, color: tab.badgeColor })}>${tab.badge}</span>` : nothing}\n ${tab.dismissible\n ? html `\n <button\n class=\"label-dismiss\"\n type=\"button\"\n aria-label=\"Close tab\"\n @click=${(e) => this._handleTabDismiss(tab, e)}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"12\" height=\"12\"><path fill-rule=\"evenodd\" d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\" clip-rule=\"evenodd\"/></svg>\n </button>\n `\n : nothing}\n </button>\n `)}\n </div>\n <div class=\"content\" role=\"tabpanel\" aria-labelledby=${this.activeTabId || ''}>\n <slot @slotchange=${this._updateActiveTab}></slot>\n </div>\n `;\n }\n};\nKRTabGroup.styles = [\n krBaseCSS,\n css `\n :host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .header {\n height: 44px;\n display: flex;\n flex-shrink: 0;\n align-items: stretch;\n border-bottom: 1px solid #e5e7eb;\n overflow-x: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n\n .header::-webkit-scrollbar {\n display: none;\n }\n\n .label {\n position: relative;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n color: var(--kr-text-muted);\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n transition: color 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;\n white-space: nowrap;\n }\n\n .label:hover:not(:disabled) {\n color: var(--kr-text);\n }\n\n .label:focus-visible {\n outline: 2px solid var(--kr-focus);\n outline-offset: -2px;\n }\n\n .label--active {\n color: var(--kr-primary);\n border-bottom-color: var(--kr-primary);\n }\n\n .label:disabled {\n color: var(--kr-text-disabled);\n cursor: not-allowed;\n }\n\n .label--justified {\n flex: 1;\n justify-content: center;\n }\n\n :host([size=\"small\"]) .label {\n padding: 8px 16px;\n font-size: 13px;\n gap: 6px;\n }\n\n :host([size=\"large\"]) .label {\n padding: 16px 20px;\n font-size: 16px;\n gap: 10px;\n }\n\n .label-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .label-badge {\n font-size: 11px;\n font-weight: 500;\n color: var(--kr-primary-text);\n background-color: var(--kr-primary);\n padding: 2px 8px;\n border-radius: 10px;\n margin-left: 4px;\n }\n\n .label-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-left: 4px;\n padding: 0;\n background: none;\n border: none;\n border-radius: 2px;\n color: var(--kr-text-muted);\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n }\n\n .label-dismiss:hover {\n background-color: var(--kr-border);\n color: var(--kr-text);\n }\n\n .label-dismiss:focus-visible {\n outline: 2px solid var(--kr-focus);\n outline-offset: 2px;\n }\n\n\n .content {\n flex: 1;\n overflow: auto;\n }\n\n /* Default slot styles - kr-tab children show/hide via their own active attribute */\n ::slotted(kr-tab) {\n display: none;\n }\n\n ::slotted(kr-tab[active]) {\n display: block;\n }\n `,\n];\n__decorate([\n property({ type: String, attribute: 'active-tab-id' })\n], KRTabGroup.prototype, \"activeTabId\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTabGroup.prototype, \"justified\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRTabGroup.prototype, \"size\", void 0);\nKRTabGroup = __decorate([\n customElement('kr-tab-group')\n], KRTabGroup);\nexport { KRTabGroup };\n//# sourceMappingURL=tabs.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { krBaseCSS } from '../style/base.js';\n/**\n * A tab for the kr-tab-group component.\n *\n * @element kr-tab\n * @slot - The tab panel content\n * @slot icon - Optional icon to display in the tab header\n */\nlet KRTab = class KRTab extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Unique identifier for the tab\n */\n this.id = '';\n /**\n * Display label for the tab\n */\n this.label = '';\n /**\n * Badge text displayed next to label (e.g. notification count)\n */\n this.badge = '';\n /**\n * Badge background color\n */\n this.badgeBackground = '';\n /**\n * Badge text color\n */\n this.badgeColor = '';\n /**\n * Whether the tab is disabled\n */\n this.disabled = false;\n /**\n * Whether the tab can be dismissed/closed\n */\n this.dismissible = false;\n /**\n * Whether this tab is currently active (set by parent)\n */\n this.active = false;\n }\n /**\n * Gets the icon element from the icon slot (if any)\n */\n getIconElement() {\n return this.querySelector('[slot=\"icon\"]');\n }\n updated() {\n // The parent kr-tab-group renders tab headers by reading properties from its\n // kr-tab children. When those properties change, tell the parent to re-render.\n const tabGroup = this.closest('kr-tab-group');\n if (tabGroup) {\n tabGroup.requestUpdate();\n }\n }\n render() {\n return html `<slot></slot>`;\n }\n};\nKRTab.styles = [\n krBaseCSS,\n css `\n :host {\n display: none;\n }\n\n :host([active]) {\n display: block;\n width: 100%;\n height: 100%;\n }\n `,\n];\n__decorate([\n property({ type: String, reflect: true })\n], KRTab.prototype, \"id\", void 0);\n__decorate([\n property({ type: String })\n], KRTab.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRTab.prototype, \"badge\", void 0);\n__decorate([\n property({ type: String, attribute: 'badge-background' })\n], KRTab.prototype, \"badgeBackground\", void 0);\n__decorate([\n property({ type: String, attribute: 'badge-color' })\n], KRTab.prototype, \"badgeColor\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTab.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTab.prototype, \"dismissible\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], KRTab.prototype, \"active\", void 0);\nKRTab = __decorate([\n customElement('kr-tab')\n], KRTab);\nexport { KRTab };\n//# sourceMappingURL=tab.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { krBaseCSS } from '../../style/base.js';\n/**\n * A select dropdown component that works with native browser forms.\n *\n * Uses ElementInternals for form association, allowing the component\n * to participate in form submission, validation, and reset.\n *\n * @element kr-select-field\n * @slot - The kr-select-option elements\n */\nlet KRSelectField = class KRSelectField extends LitElement {\n constructor() {\n super();\n /**\n * The select label text\n */\n this.label = '';\n /**\n * The input name for form submission\n */\n this.name = '';\n /**\n * The currently selected value\n */\n this.value = '';\n /**\n * Placeholder text when no option is selected\n */\n this.placeholder = 'Select an option';\n /**\n * Whether the select is disabled\n */\n this.disabled = false;\n /**\n * Whether the field is required\n */\n this.required = false;\n /**\n * Whether the field is readonly\n */\n this.readonly = false;\n /**\n * Helper text shown below the select\n */\n this.hint = '';\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._touched = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._handleOutsideClick = (e) => {\n if (!e.composedPath().includes(this)) {\n this._close();\n }\n };\n this._handleKeyDown = (e) => {\n if (!this._isOpen)\n return;\n const options = Array.from(this.querySelectorAll('kr-select-option'));\n switch (e.key) {\n case 'Escape':\n this._close();\n this._triggerElement?.focus();\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (options.some(o => !o.disabled)) {\n let newIndex = this._highlightedIndex + 1;\n while (newIndex < options.length && options[newIndex]?.disabled)\n newIndex++;\n if (newIndex < options.length)\n this._highlightedIndex = newIndex;\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n {\n let newIndex = this._highlightedIndex - 1;\n while (newIndex >= 0 && options[newIndex]?.disabled)\n newIndex--;\n if (newIndex >= 0)\n this._highlightedIndex = newIndex;\n }\n break;\n case 'Enter':\n e.preventDefault();\n if (this._highlightedIndex >= 0 && this._highlightedIndex < options.length) {\n this._selectOption(options[this._highlightedIndex]);\n }\n break;\n }\n };\n this._internals = this.attachInternals();\n }\n // Form-associated custom element callbacks\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n get willValidate() {\n return this._internals.willValidate;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._touched = false;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n document.addEventListener('keydown', this._handleKeyDown);\n this.addEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleOutsideClick);\n document.removeEventListener('keydown', this._handleKeyDown);\n this.removeEventListener('invalid', this._handleInvalid);\n }\n _toggle() {\n if (this.disabled || this.readonly)\n return;\n if (this._isOpen) {\n this._close();\n }\n else {\n this._isOpen = true;\n const options = Array.from(this.querySelectorAll('kr-select-option'));\n this._highlightedIndex = options.findIndex(o => o.value === this.value);\n // Position the fixed dropdown relative to the trigger\n requestAnimationFrame(() => {\n const dropdown = this.shadowRoot?.querySelector('.select-dropdown');\n if (dropdown) {\n const triggerRect = this._triggerElement.getBoundingClientRect();\n const spaceBelow = window.innerHeight - triggerRect.bottom - 4 - 8;\n dropdown.style.top = triggerRect.bottom + 4 + 'px';\n dropdown.style.left = triggerRect.left + 'px';\n dropdown.style.width = triggerRect.width + 'px';\n dropdown.style.maxHeight = spaceBelow + 'px';\n }\n });\n }\n }\n _close() {\n this._isOpen = false;\n this._highlightedIndex = -1;\n }\n _selectOption(option) {\n if (option.disabled)\n return;\n this.value = option.value;\n this._internals.setFormValue(this.value);\n this._updateValidity();\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n this._close();\n this._triggerElement?.focus();\n }\n _handleBlur() {\n this._touched = true;\n this._updateValidity();\n }\n _updateValidity() {\n if (this.required && !this.value) {\n this._internals.setValidity({ valueMissing: true }, 'Please select an option', this._triggerElement);\n }\n else {\n this._internals.setValidity({});\n }\n }\n render() {\n const options = Array.from(this.querySelectorAll('kr-select-option'));\n const selectedLabel = options.find(o => o.value === this.value)?.label;\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label>\n ${this.label}\n ${this.required ? html `<span class=\"required\" aria-hidden=\"true\">*</span>` : ''}\n </label>\n `\n : nothing}\n <div class=\"select-wrapper\">\n <button\n class=${classMap({\n 'select-trigger': true,\n 'select-trigger--open': this._isOpen,\n 'select-trigger--invalid': this._touched && this.required && !this.value,\n })}\n type=\"button\"\n ?disabled=${this.disabled}\n aria-haspopup=\"listbox\"\n aria-expanded=${this._isOpen}\n @click=${this._toggle}\n @blur=${this._handleBlur}\n >\n <span class=${classMap({\n 'select-value': true,\n 'select-placeholder': !selectedLabel\n })}>\n ${selectedLabel || this.placeholder}\n </span>\n <svg\n class=${classMap({\n 'chevron-icon': true,\n 'select-icon': true,\n 'select-icon--open': this._isOpen\n })}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6z\"/>\n </svg>\n </button>\n\n <div class=${classMap({\n 'select-dropdown': true,\n 'hidden': !this._isOpen\n })} role=\"listbox\">\n <div class=\"select-options\">\n ${options.length === 0\n ? html `<div class=\"select-empty\">No options available</div>`\n : options.map((option, idx) => {\n const isSelected = option.value === this.value;\n return html `\n <div\n class=${classMap({\n 'select-option': true,\n 'select-option--selected': isSelected,\n 'select-option--disabled': option.disabled,\n 'select-option--highlighted': idx === this._highlightedIndex,\n })}\n role=\"option\"\n aria-selected=${isSelected}\n @click=${() => this._selectOption(option)}\n @mouseenter=${() => (this._highlightedIndex = idx)}\n >\n ${option.label}\n </div>\n `;\n })}\n </div>\n </div>\n </div>\n ${this._touched && this.required && !this.value\n ? html `<div class=\"validation-message\">Please select an option</div>`\n : this.hint\n ? html `<div class=\"hint\">${this.hint}</div>`\n : ''}\n </div>\n <div class=\"options-slot\">\n <slot @slotchange=${() => this.requestUpdate()}></slot>\n </div>\n `;\n }\n // Public methods for programmatic control\n focus() {\n this._triggerElement?.focus();\n }\n blur() {\n this._triggerElement?.blur();\n }\n};\nKRSelectField.styles = [krBaseCSS, css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-select-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n .select-wrapper {\n position: relative;\n }\n\n .select-trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: var(--kr-select-padding, 10px 12px);\n font-family: inherit;\n font-size: 14px;\n line-height: 1.5;\n color: #000000;\n background-color: var(--kr-select-bg, #fff);\n border: 1px solid var(--kr-select-border-color, #0000003d);\n border-radius: 8px;\n cursor: pointer;\n transition: border-color 0.2s, box-shadow 0.2s;\n text-align: left;\n }\n\n .select-trigger:hover:not(:disabled) {\n border-color: var(--kr-select-hover-border-color, #9ca3af);\n }\n\n .select-trigger:focus {\n outline: none;\n border-color: var(--kr-primary);\n box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);\n }\n\n .select-trigger:disabled {\n background-color: var(--kr-select-disabled-bg, #f3f4f6);\n color: var(--kr-select-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n .select-trigger--invalid {\n border-color: var(--kr-select-error-border-color, #ef4444);\n }\n\n .select-trigger--invalid:focus {\n border-color: var(--kr-select-error-border-color, #ef4444);\n box-shadow: 0 0 0 3px var(--kr-select-error-ring-color, rgba(239, 68, 68, 0.1));\n }\n\n .select-trigger--open {\n border-color: var(--kr-primary);\n box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);\n }\n\n .select-value {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .select-placeholder {\n color: #9ca3af;\n }\n\n .select-icon {\n flex-shrink: 0;\n margin-left: 0.5rem;\n color: #6b7280;\n transition: transform 0.2s;\n }\n\n .select-icon--open {\n transform: rotate(180deg);\n }\n\n .select-dropdown {\n position: fixed;\n z-index: 10000;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n padding: 8px 0;\n overflow-y: auto;\n }\n\n .select-options {\n padding: 0;\n }\n\n .select-option {\n display: flex;\n align-items: center;\n min-height: 36px;\n padding: 8px 16px;\n font-size: 14px;\n color: #000000;\n cursor: pointer;\n border-radius: 4px;\n transition: background-color 0.15s;\n }\n\n .select-option:hover:not(.select-option--disabled) {\n background-color: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .select-option--selected {\n background-color: rgba(22, 48, 82, 0.08);\n color: var(--kr-primary);\n }\n\n .select-option--selected:hover {\n background-color: rgba(22, 48, 82, 0.12);\n }\n\n .select-option--disabled {\n color: var(--kr-select-option-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n .select-option--highlighted {\n background-color: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .select-empty {\n padding: 1rem;\n text-align: center;\n color: var(--kr-select-empty-color, #6b7280);\n font-size: 14px;\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-select-helper-color, #6b7280);\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-select-error-color, #ef4444);\n }\n\n .hidden {\n display: none;\n }\n\n .chevron-icon {\n width: 20px;\n height: 20px;\n }\n\n /* Hide the slot - options are rendered in dropdown */\n .options-slot {\n display: none;\n }\n `];\n// Enable form association\nKRSelectField.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRSelectField.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRSelectField.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRSelectField.prototype, \"value\", void 0);\n__decorate([\n property({ type: String })\n], KRSelectField.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRSelectField.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRSelectField.prototype, \"required\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRSelectField.prototype, \"readonly\", void 0);\n__decorate([\n property({ type: String })\n], KRSelectField.prototype, \"hint\", void 0);\n__decorate([\n state()\n], KRSelectField.prototype, \"_isOpen\", void 0);\n__decorate([\n state()\n], KRSelectField.prototype, \"_highlightedIndex\", void 0);\n__decorate([\n state()\n], KRSelectField.prototype, \"_touched\", void 0);\n__decorate([\n query('.select-trigger')\n], KRSelectField.prototype, \"_triggerElement\", void 0);\nKRSelectField = __decorate([\n customElement('kr-select-field')\n], KRSelectField);\nexport { KRSelectField };\n//# sourceMappingURL=select-field.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * An option for the kr-select-field component.\n *\n * @element kr-select-option\n * @slot - The option label content\n */\nlet KRSelectOption = class KRSelectOption extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The option value\n */\n this.value = '';\n /**\n * Whether the option is disabled\n */\n this.disabled = false;\n }\n /** Gets the label text from the slot */\n get label() {\n return this.textContent?.trim() || '';\n }\n render() {\n return html `<slot></slot>`;\n }\n};\nKRSelectOption.styles = css `\n :host {\n display: none;\n }\n `;\n__decorate([\n property({ type: String })\n], KRSelectOption.prototype, \"value\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRSelectOption.prototype, \"disabled\", void 0);\nKRSelectOption = __decorate([\n customElement('kr-select-option')\n], KRSelectOption);\nexport { KRSelectOption };\n//# sourceMappingURL=select-option.js.map","/** Data-driven operator metadata map */\nexport const KR_OPERATORS = {\n equals: { key: 'equals', type: 'comparison', dataTypes: ['string', 'number', 'date', 'boolean'], label: 'Equals' },\n n_equals: { key: 'n_equals', type: 'comparison', dataTypes: ['string', 'number', 'date', 'boolean'], label: \"Doesn't equal\" },\n contains: { key: 'contains', type: 'comparison', dataTypes: ['string'], label: 'Contains' },\n n_contains: { key: 'n_contains', type: 'comparison', dataTypes: ['string'], label: \"Doesn't contain\" },\n starts_with: { key: 'starts_with', type: 'comparison', dataTypes: ['string'], label: 'Starts with' },\n ends_with: { key: 'ends_with', type: 'comparison', dataTypes: ['string'], label: 'Ends with' },\n less_than: { key: 'less_than', type: 'comparison', dataTypes: ['number', 'date'], label: 'Less than' },\n less_than_equal: { key: 'less_than_equal', type: 'comparison', dataTypes: ['number', 'date'], label: 'Less than or equal' },\n greater_than: { key: 'greater_than', type: 'comparison', dataTypes: ['number', 'date'], label: 'Greater than' },\n greater_than_equal: { key: 'greater_than_equal', type: 'comparison', dataTypes: ['number', 'date'], label: 'Greater than or equal' },\n between: { key: 'between', type: 'range', dataTypes: ['number', 'date'], label: 'Between' },\n in: { key: 'in', type: 'list', dataTypes: ['string', 'number'], label: 'In' },\n n_in: { key: 'n_in', type: 'list', dataTypes: ['string', 'number', 'date', 'boolean'], label: 'Not In' },\n empty: { key: 'empty', type: 'nil', dataTypes: ['string', 'number', 'date', 'boolean'], label: 'Empty' },\n n_empty: { key: 'n_empty', type: 'nil', dataTypes: ['string', 'number', 'date', 'boolean'], label: 'Not empty' },\n};\n/** Returns the list of operators available for a given column type */\nexport function getOperatorsForType(columnType) {\n const results = [];\n for (const op of Object.values(KR_OPERATORS)) {\n if (op.dataTypes.includes(columnType)) {\n results.push({\n key: op.key,\n label: op.label\n });\n }\n }\n return results;\n}\n// === Solr Utilities ===\nconst SOLR_RESERVED_CHARS = [\n '\"', '+', '-', '&&', '||', '!', '(', ')', '{',\n '}', '[', ']', '^', '~', '*', '?', ':'\n];\nconst SOLR_RESERVED_CHARS_REPLACEMENT = [\n '\\\\\"', '\\\\+', '\\\\-', '\\\\&\\\\&', '\\\\|\\\\|', '\\\\!', '\\\\(', '\\\\)', '\\\\{',\n '\\\\}', '\\\\[', '\\\\]', '\\\\^', '\\\\~', '\\\\*', '\\\\?', '\\\\:'\n];\nfunction escapeRegex(str) {\n if (typeof str !== 'string') {\n return str;\n }\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n/** Converts a value to a Solr term */\nexport function termify(value, exact = true) {\n if (value === true || value === false) {\n return value.toString();\n }\n if (value === null) {\n return `(*:* NOT *)`;\n }\n if (typeof value === 'number') {\n return value.toString();\n }\n if (typeof value === 'string') {\n SOLR_RESERVED_CHARS.forEach((char, i) => {\n value = value.replace(new RegExp(`${escapeRegex(char)}`, 'g'), SOLR_RESERVED_CHARS_REPLACEMENT[i]);\n });\n if (exact) {\n return `\"${value}\"`;\n }\n return value.replace(/ /g, `\\\\ `);\n }\n return value;\n}\n/** Converts a Date to a Solr term */\nfunction termifyDate(value, endOfTheDay = false) {\n const newTime = new Date(value);\n newTime.setMinutes(newTime.getMinutes() - newTime.getTimezoneOffset());\n if (endOfTheDay) {\n newTime.setUTCHours(23);\n newTime.setUTCMinutes(59);\n newTime.setUTCSeconds(59);\n newTime.setUTCMilliseconds(999);\n }\n return newTime.toISOString().replace(/:/g, '\\\\:');\n}\n/** Creates a Solr date range expression from a Date or range of Dates */\nfunction createSolrDateRange(value, specificities) {\n let startDate;\n let endDate;\n let startSpecificity;\n let endSpecificity;\n if (value && 'start' in value && 'end' in value) {\n startDate = new Date(value.start);\n endDate = new Date(value.end);\n startSpecificity = specificities[0];\n endSpecificity = specificities[1];\n }\n else if (value instanceof Date) {\n startDate = new Date(value);\n endDate = new Date(value);\n startSpecificity = specificities[0];\n endSpecificity = specificities[0];\n }\n else {\n return '[* TO *]';\n }\n if (startSpecificity === 'year') {\n startDate.setUTCMonth(0, 1);\n startDate.setUTCHours(0, 0, 0, 0);\n }\n else if (startSpecificity === 'month') {\n startDate.setUTCDate(1);\n startDate.setUTCHours(0, 0, 0, 0);\n }\n else if (startSpecificity === 'day') {\n startDate.setUTCHours(0, 0, 0, 0);\n }\n else if (startSpecificity === 'time') {\n startDate.setUTCSeconds(0, 0);\n }\n if (endSpecificity === 'year') {\n endDate.setUTCMonth(11, 31);\n endDate.setUTCHours(23, 59, 59, 999);\n }\n else if (endSpecificity === 'month') {\n endDate.setUTCMonth(endDate.getUTCMonth() + 1);\n endDate.setUTCDate(0);\n endDate.setUTCHours(23, 59, 59, 999);\n }\n else if (endSpecificity === 'day') {\n endDate.setUTCHours(23, 59, 59, 999);\n }\n else if (endSpecificity === 'time') {\n endDate.setUTCSeconds(59, 999);\n }\n return `[${startDate.toISOString().replace(/:/g, '\\\\:')} TO ${endDate.toISOString().replace(/:/g, '\\\\:')}]`;\n}\n/** Creates a DB date range array from a Date or range of Dates, expanding based on specificity */\nfunction createDbDateRange(value, specificities) {\n let startDate;\n let endDate;\n let startSpecificity;\n let endSpecificity;\n if (value && 'start' in value && 'end' in value) {\n startDate = new Date(value.start);\n endDate = new Date(value.end);\n startSpecificity = specificities[0];\n endSpecificity = specificities[1];\n }\n else {\n startDate = new Date(value);\n endDate = new Date(value);\n startSpecificity = specificities[0];\n endSpecificity = specificities[0];\n }\n let start;\n let end;\n if (startSpecificity === 'year') {\n startDate.setUTCMonth(0, 1);\n startDate.setUTCHours(0, 0, 0, 0);\n start = startDate;\n }\n else if (startSpecificity === 'month') {\n startDate.setUTCDate(1);\n startDate.setUTCHours(0, 0, 0, 0);\n start = startDate;\n }\n else if (startSpecificity === 'day') {\n startDate.setUTCHours(0, 0, 0, 0);\n start = startDate;\n }\n else if (startSpecificity === 'time') {\n startDate.setUTCSeconds(0, 0);\n start = startDate;\n }\n else {\n start = startDate;\n }\n if (endSpecificity === 'year') {\n endDate.setUTCMonth(11, 31);\n endDate.setUTCHours(23, 59, 59, 999);\n end = endDate;\n }\n else if (endSpecificity === 'month') {\n endDate.setUTCMonth(endDate.getUTCMonth() + 1);\n endDate.setUTCDate(0);\n endDate.setUTCHours(23, 59, 59, 999);\n end = endDate;\n }\n else if (endSpecificity === 'day') {\n endDate.setUTCHours(23, 59, 59, 999);\n end = endDate;\n }\n else if (endSpecificity === 'time') {\n endDate.setUTCSeconds(59, 999);\n end = endDate;\n }\n else {\n end = endDate;\n }\n return [\n start.toISOString().replace(/\\..+/, '').replace('T', ' '),\n end.toISOString().replace(/\\..+/, '').replace('T', ' '),\n ];\n}\n/** Determines the date specificity from the text format */\nfunction getDateSpecificity(input) {\n input = input.trim();\n // MM/dd/yy, M/d/yy (2-digit year)\n if (/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{2})$/.test(input)) {\n return 'day';\n }\n // MM/dd/yyyy, M/d/yyyy (4-digit year)\n if (/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/.test(input)) {\n return 'day';\n }\n // MM/dd/yyyy, t — date with time (4-digit year only)\n if (/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4}),?\\s+(\\d{1,2}):(\\d{2})\\s*(AM|PM)?$/i.test(input)) {\n return 'time';\n }\n // \"Month DD, YYYY, time\" with optional weekday\n if (/^(?:[A-Za-z]+,\\s+)?([A-Za-z]+)\\s+(\\d{1,2}),?\\s+(\\d{4}),?\\s+(\\d{1,2}):(\\d{2})\\s*(AM|PM)?$/i.test(input)) {\n return 'time';\n }\n // \"Month DD, YYYY\" with optional weekday\n if (/^(?:[A-Za-z]+,\\s+)?([A-Za-z]+)\\s+(\\d{1,2}),?\\s+(\\d{4})$/.test(input)) {\n return 'day';\n }\n // yy (2-digit year)\n if (/^(\\d{2})$/.test(input)) {\n return 'year';\n }\n // yyyy (4-digit year)\n if (/^(\\d{4})$/.test(input)) {\n return 'year';\n }\n // \"MMM yyyy\" or \"MMMM yyyy\" — \"Aug 2015\", \"August 2015\"\n if (/^([A-Za-z]+)\\s+(\\d{4})$/.test(input)) {\n return 'month';\n }\n return null;\n}\nexport class KRQuery {\n constructor() {\n this.field = '';\n this.operator = 'equals';\n this.value = null;\n this.kql = '';\n this.text = '';\n this.type = '';\n this.specificity = [];\n }\n // --------------------------------------------------------------------------\n // Public Methods\n // --------------------------------------------------------------------------\n /** Parse a KQL text string and populate operator/value/values */\n setKql(kql) {\n this.kql = kql.trim();\n this.text = '';\n this.specificity = [];\n this.value = null;\n if (!this.kql) {\n if (this.type === 'string') {\n this.operator = 'contains';\n }\n else {\n this.operator = 'equals';\n }\n return;\n }\n if (kql.startsWith('=')) {\n this.operator = 'equals';\n this.text = kql.substring(1).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('!=')) {\n this.operator = 'n_equals';\n this.text = kql.substring(2).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('~') && this.type === 'string') {\n this.operator = 'contains';\n this.text = kql.substring(1).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('!~') && this.type === 'string') {\n this.operator = 'n_contains';\n this.text = kql.substring(2).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.endsWith('*') && this.type === 'string') {\n this.operator = 'starts_with';\n this.text = kql.substring(0, kql.length - 1);\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('*') && this.type === 'string') {\n this.operator = 'ends_with';\n this.text = kql.substring(1);\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql === 'EMPTY') {\n this.operator = 'empty';\n this.value = null;\n this.specificity = [];\n }\n else if (kql === 'NOT EMPTY') {\n this.operator = 'n_empty';\n this.value = null;\n this.specificity = [];\n }\n else if (kql.startsWith('<=')) {\n this.operator = 'less_than_equal';\n this.text = kql.substring(2).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('<')) {\n this.operator = 'less_than';\n this.text = kql.substring(1).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('>=')) {\n this.operator = 'greater_than_equal';\n this.text = kql.substring(2).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('>')) {\n this.operator = 'greater_than';\n this.text = kql.substring(1).trim();\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('[') && kql.endsWith(']') && kql.indexOf(' TO ') > -1) {\n this.operator = 'between';\n const toIndex = kql.indexOf(' TO ');\n const rawStart = kql.substring(1, toIndex).trim();\n const rawEnd = kql.substring(toIndex + 4, kql.length - 1).trim();\n this.text = `${rawStart} - ${rawEnd}`;\n this.value = {\n start: this._parse(rawStart),\n end: this._parse(rawEnd)\n };\n this.specificity = [getDateSpecificity(rawStart), getDateSpecificity(rawEnd)];\n }\n else if (kql.startsWith('!(') && kql.endsWith(')')) {\n this.operator = 'n_in';\n this.text = kql.substring(2, kql.length - 1).trim();\n this.value = this.text.split(',')\n .map(v => v.trim())\n .map(v => this._parse(v));\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (kql.startsWith('(') && kql.endsWith(')')) {\n this.operator = 'in';\n this.text = kql.substring(1, kql.length - 1).trim();\n this.value = this.text.split(',')\n .map(v => v.trim())\n .map(v => this._parse(v));\n this.specificity = [getDateSpecificity(this.text)];\n }\n else {\n if (this.type === 'date') {\n this.operator = 'equals';\n this.text = this.kql;\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (this.type === 'boolean') {\n this.operator = 'equals';\n this.text = this.kql;\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else if (this.type === 'number') {\n this.operator = 'equals';\n this.text = this.kql;\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n else {\n this.operator = 'contains';\n this.text = kql;\n this.value = this._parse(this.text);\n this.specificity = [getDateSpecificity(this.text)];\n }\n }\n }\n setOperator(operator) {\n // Clear value/text when switching away from operators\n // whose values are incompatible with other operators.\n if (this.operator === 'empty' || this.operator === 'n_empty') {\n this.value = null;\n this.text = '';\n }\n else if (this.operator === 'between') {\n this.value = null;\n this.text = '';\n }\n else if (this.operator === 'in' || this.operator === 'n_in') {\n this.value = [];\n this.text = '';\n }\n this.operator = operator;\n // Set up initial value/text for the new operator.\n if (this.operator === 'empty') {\n this.value = 'EMPTY';\n this.text = 'EMPTY';\n }\n else if (this.operator === 'n_empty') {\n this.value = 'NOT EMPTY';\n this.text = 'NOT EMPTY';\n }\n else if (this.operator === 'between') {\n this.value = null;\n this.text = '';\n }\n else if (this.operator === 'in' || this.operator === 'n_in') {\n this.value = [];\n this.text = '';\n }\n this._buildKql();\n }\n setValue(value, specificity) {\n this.value = value;\n if (specificity) {\n this.specificity = [specificity];\n }\n else if (value instanceof Date) {\n this.specificity = ['time'];\n }\n else {\n this.specificity = [];\n }\n this._buildText();\n this._buildKql();\n }\n setStart(value, specificity) {\n if (this.value?.start === undefined) {\n this.value = { start: null, end: null };\n }\n this.value.start = value;\n if (specificity) {\n this.specificity[0] = specificity;\n }\n else if (value instanceof Date) {\n this.specificity[0] = 'time';\n }\n this._buildText();\n this._buildKql();\n }\n setEnd(value, specificity) {\n if (this.value?.end === undefined) {\n this.value = { start: null, end: null };\n }\n this.value.end = value;\n if (specificity) {\n this.specificity[1] = specificity;\n }\n else if (value instanceof Date) {\n this.specificity[1] = 'time';\n }\n this._buildText();\n this._buildKql();\n }\n clear() {\n if (this.type === 'string') {\n this.operator = 'contains';\n }\n else {\n this.operator = 'equals';\n }\n this.value = null;\n this.kql = '';\n this.text = '';\n this.specificity = [];\n }\n isEmpty() {\n if (this.operator === 'empty' || this.operator === 'n_empty') {\n return !this.text;\n }\n if (this.operator === 'between') {\n return !this.value?.start && !this.value?.end;\n }\n if (this.operator === 'in' || this.operator === 'n_in') {\n return !this.value?.length;\n }\n return this.value === undefined || this.value === null || this.value === '';\n }\n /** Returns true if the value array contains the given value. Only applies to 'in' and 'n_in' operators. */\n has(val) {\n if ((this.operator !== 'in' && this.operator !== 'n_in') || !Array.isArray(this.value)) {\n return false;\n }\n // Bucket values from Solr arrive as strings (\"true\"/\"false\") but\n // the value array stores actual booleans, so coerce before comparing.\n if (this.type === 'boolean' && typeof val === 'string') {\n if (val === 'true') {\n val = true;\n }\n else if (val === 'false') {\n val = false;\n }\n }\n return this.value.indexOf(val) >= 0;\n }\n /** Adds or removes a value from the 'in' or 'n_in' list and rebuilds text/kql. */\n toggle(val) {\n if (this.operator !== 'in' && this.operator !== 'n_in') {\n this.setOperator('in');\n }\n // Bucket values from Solr arrive as strings (\"true\"/\"false\") —\n // coerce to actual booleans so isValid() and toSolrData() work correctly.\n if (this.type === 'boolean' && typeof val === 'string') {\n if (val === 'true') {\n val = true;\n }\n else if (val === 'false') {\n val = false;\n }\n }\n const index = this.value.indexOf(val);\n if (index >= 0) {\n this.value.splice(index, 1);\n }\n else {\n this.value.push(val);\n }\n this._buildText();\n this._buildKql();\n }\n isValid() {\n if (!this.kql) {\n return true;\n }\n if (!this.field) {\n return false;\n }\n if (!this.operator) {\n return false;\n }\n if (this.operator === 'empty') {\n return true;\n }\n if (this.operator === 'n_empty') {\n return true;\n }\n // For 'in'/'n_in' operator, valid as long as there's at least one value (including null for empty buckets)\n if (this.operator === 'in' || this.operator === 'n_in') {\n return Array.isArray(this.value) && this.value.length > 0;\n }\n if (this.type === 'date') {\n if (this.operator === 'between') {\n return this.value?.start instanceof Date\n && this.value?.end instanceof Date\n && !isNaN(this.value.start.getTime())\n && !isNaN(this.value.end.getTime());\n }\n return this.value instanceof Date && !isNaN(this.value.getTime());\n }\n if (this.type === 'number') {\n if (this.operator === 'between') {\n return typeof this.value?.start === 'number' && typeof this.value?.end === 'number';\n }\n return typeof this.value === 'number';\n }\n if (this.type === 'boolean') {\n return typeof this.value === 'boolean';\n }\n return typeof this.value === 'string' && !!this.value.trim().length;\n }\n /** Converts this filter to a Solr filter field object, or null if invalid */\n toSolrData() {\n const data = {\n boost: null,\n fuzzy: null,\n not: false,\n name: null,\n operation: null,\n tagged: false,\n value: null\n };\n data.name = this.field;\n switch (this.operator) {\n case 'equals':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = createSolrDateRange(this.value, this.specificity);\n }\n else {\n data.operation = 'IS';\n data.value = this.value;\n }\n break;\n case 'n_equals':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.not = true;\n data.value = createSolrDateRange(this.value, this.specificity);\n }\n else {\n data.operation = 'IS';\n data.not = true;\n data.value = this.value;\n }\n break;\n case 'contains':\n data.operation = 'EXPRESSION';\n data.value = `*${termify(this.value, false)}*`;\n break;\n case 'n_contains':\n data.operation = 'EXPRESSION';\n data.not = true;\n data.value = `*${termify(this.value, false)}*`;\n break;\n case 'starts_with':\n data.operation = 'EXPRESSION';\n data.value = `${termify(this.value, false)}*`;\n break;\n case 'ends_with':\n data.operation = 'EXPRESSION';\n data.value = `*${termify(this.value, false)}`;\n break;\n case 'empty':\n data.operation = 'EXPRESSION';\n data.not = true;\n data.value = '[* TO *]';\n break;\n case 'n_empty':\n data.operation = 'EXPRESSION';\n data.value = '[* TO *]';\n break;\n case 'less_than':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = `[* TO ${termifyDate(this.value)}}`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = `[* TO ${termify(this.value, true)}}`;\n }\n break;\n case 'less_than_equal':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = `[* TO ${termifyDate(this.value, true)}]`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = `[* TO ${termify(this.value, true)}]`;\n }\n break;\n case 'greater_than':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = `{${termifyDate(this.value, true)} TO *]`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = `{${termify(this.value, true)} TO *]`;\n }\n break;\n case 'greater_than_equal':\n if (this.value instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = `[${termifyDate(this.value)} TO *]`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = `[${termify(this.value, true)} TO *]`;\n }\n break;\n case 'between':\n if (this.value?.start instanceof Date && this.value?.end instanceof Date) {\n data.operation = 'EXPRESSION';\n data.value = createSolrDateRange(this.value, this.specificity);\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = `[${this.value.start} TO ${this.value.end}]`;\n }\n break;\n case 'in':\n if (Array.isArray(this.value) && this.value.length > 0) {\n data.operation = 'EXPRESSION';\n data.value = `(${this.value.map((v) => termify(v, true)).join(' OR ')})`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.value = termify(this.value, true);\n }\n break;\n case 'n_in':\n if (Array.isArray(this.value) && this.value.length > 0) {\n data.operation = 'EXPRESSION';\n data.not = true;\n data.value = `(${this.value.map((v) => termify(v, true)).join(' OR ')})`;\n }\n else {\n data.operation = 'EXPRESSION';\n data.not = true;\n data.value = termify(this.value, true);\n }\n break;\n default:\n data.operation = 'EXPRESSION';\n data.value = termify(this.value, true);\n }\n return data;\n }\n /** Converts this filter to a DB filter field object, or null if invalid */\n toDbParams() {\n const params = {\n boost: null,\n fuzzy: null,\n not: false,\n name: null,\n operation: null,\n tagged: false,\n value: null,\n values: null\n };\n params.name = this.field;\n switch (this.operator) {\n case 'equals':\n if (this.type === 'date') {\n params.operation = 'BETWEEN';\n params.values = createDbDateRange(this.value, this.specificity);\n }\n else {\n params.operation = 'IS';\n params.value = this.value;\n }\n break;\n case 'n_equals':\n if (this.type === 'date') {\n params.operation = 'BETWEEN';\n params.not = true;\n params.values = createDbDateRange(this.value, this.specificity);\n }\n else {\n params.operation = 'IS';\n params.value = this.value;\n params.not = true;\n }\n break;\n case 'contains':\n params.operation = 'CONTAINS';\n params.value = this.value;\n break;\n case 'n_contains':\n params.operation = 'CONTAINS';\n params.value = this.value;\n params.not = true;\n break;\n case 'starts_with':\n params.operation = 'STARTS_WITH';\n params.value = this.value;\n break;\n case 'ends_with':\n params.operation = 'ENDS_WITH';\n params.value = this.value;\n break;\n case 'empty':\n params.operation = 'IS_BLANK';\n break;\n case 'n_empty':\n params.operation = 'IS_NOT_BLANK';\n break;\n case 'less_than':\n params.operation = 'LESS_THAN';\n params.value = this.value;\n break;\n case 'less_than_equal':\n params.operation = 'LESS_THAN_EQUAL';\n params.value = this.value;\n break;\n case 'greater_than':\n params.operation = 'GREATER_THAN';\n params.value = this.value;\n break;\n case 'greater_than_equal':\n params.operation = 'GREATER_THAN_EQUAL';\n params.value = this.value;\n break;\n case 'between':\n params.operation = 'BETWEEN';\n if (this.type === 'date') {\n params.values = createDbDateRange(this.value, this.specificity);\n }\n else {\n params.values = [this.value.start, this.value.end];\n }\n break;\n case 'in':\n params.operation = 'IN';\n params.values = this.value ?? [];\n break;\n case 'n_in':\n params.operation = 'IN';\n params.not = true;\n params.values = this.value ?? [];\n break;\n default:\n throw Error(`${this.operator} operator not supported by db params.`);\n }\n return params;\n }\n // --------------------------------------------------------------------------\n // Private Methods\n // --------------------------------------------------------------------------\n _buildText() {\n if (this.isEmpty()) {\n this.text = '';\n return;\n }\n if (this.operator === 'between') {\n this.text = `${this._format(this.value?.start)} - ${this._format(this.value?.end)}`;\n }\n else if (this.operator === 'in' || this.operator === 'n_in') {\n this.text = this.value.map((v) => this._format(v)).join(',');\n }\n else {\n this.text = this._format(this.value);\n }\n }\n _format(value) {\n if (value instanceof Date && !isNaN(value.getTime())) {\n const month = String(value.getUTCMonth() + 1).padStart(2, '0');\n const day = String(value.getUTCDate()).padStart(2, '0');\n const year = value.getUTCFullYear();\n return `${month}/${day}/${year}`;\n }\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n return String(value ?? '');\n }\n /** Parse a text value according to this query's type */\n _parse(text) {\n if (typeof text === 'undefined' || text === null || text === '') {\n return null;\n }\n if (this.type) {\n switch (this.type) {\n case 'boolean': {\n const lcInput = text.toString().toLowerCase();\n if (text === true) {\n return true;\n }\n if (text === false) {\n return false;\n }\n if (lcInput === 'yes') {\n return true;\n }\n if (lcInput === 'no') {\n return false;\n }\n if (lcInput === '1') {\n return true;\n }\n if (lcInput === '0') {\n return false;\n }\n return null;\n }\n case 'date':\n return this._parseDate(text);\n case 'number': {\n const num = Number(text.toString().replace(/[$,]+/g, ''));\n if (isNaN(num)) {\n return null;\n }\n return num;\n }\n default:\n return text.toString();\n }\n }\n return text;\n }\n /** Parse a date string into a UTC Date */\n _parseDate(input) {\n if (typeof input === 'undefined' || input === null || input === '') {\n return null;\n }\n const months = {\n jan: 0,\n january: 0,\n feb: 1,\n february: 1,\n mar: 2,\n march: 2,\n apr: 3,\n april: 3,\n may: 4,\n jun: 5,\n june: 5,\n jul: 6,\n july: 6,\n aug: 7,\n august: 7,\n sep: 8,\n september: 8,\n oct: 9,\n october: 9,\n nov: 10,\n november: 10,\n dec: 11,\n december: 11\n };\n let m;\n // MM/dd/yy, M/d/yy (2-digit year)\n m = input.match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{2})$/);\n if (m) {\n return new Date(Date.UTC(2000 + parseInt(m[3]), parseInt(m[1]) - 1, parseInt(m[2])));\n }\n // MM/dd/yyyy, M/d/yyyy (4-digit year)\n m = input.match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/);\n if (m) {\n return new Date(Date.UTC(parseInt(m[3]), parseInt(m[1]) - 1, parseInt(m[2])));\n }\n // MM/dd/yyyy, t — date with time (4-digit year only, matching NGX)\n m = input.match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4}),?\\s+(\\d{1,2}):(\\d{2})\\s*(AM|PM)?$/i);\n if (m) {\n let hour = parseInt(m[4]);\n if (m[6]) {\n if (m[6].toUpperCase() === 'PM' && hour !== 12) {\n hour += 12;\n }\n if (m[6].toUpperCase() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n return new Date(Date.UTC(parseInt(m[3]), parseInt(m[1]) - 1, parseInt(m[2]), hour, parseInt(m[5])));\n }\n // \"Month DD, YYYY, time\" with optional weekday\n // Handles: \"Oct 14, 1983, 9:32 AM\", \"October 14, 1983, 9:32 AM\", \"Tuesday, October 14, 1983, 9:32 AM\"\n m = input.match(/^(?:[A-Za-z]+,\\s+)?([A-Za-z]+)\\s+(\\d{1,2}),?\\s+(\\d{4}),?\\s+(\\d{1,2}):(\\d{2})\\s*(AM|PM)?$/i);\n if (m) {\n const month = months[m[1].toLowerCase()];\n if (month !== undefined) {\n let hour = parseInt(m[4]);\n if (m[6]) {\n if (m[6].toUpperCase() === 'PM' && hour !== 12) {\n hour += 12;\n }\n if (m[6].toUpperCase() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n return new Date(Date.UTC(parseInt(m[3]), month, parseInt(m[2]), hour, parseInt(m[5])));\n }\n }\n // \"Month DD, YYYY\" with optional weekday\n // Handles: \"Oct 14, 1983\", \"October 14, 1983\", \"Tuesday, October 14, 1983\"\n m = input.match(/^(?:[A-Za-z]+,\\s+)?([A-Za-z]+)\\s+(\\d{1,2}),?\\s+(\\d{4})$/);\n if (m) {\n const month = months[m[1].toLowerCase()];\n if (month !== undefined) {\n return new Date(Date.UTC(parseInt(m[3]), month, parseInt(m[2])));\n }\n }\n // yy (2-digit year)\n m = input.match(/^(\\d{2})$/);\n if (m) {\n return new Date(Date.UTC(2000 + parseInt(m[1]), 0, 1));\n }\n // yyyy (4-digit year)\n m = input.match(/^(\\d{4})$/);\n if (m) {\n return new Date(Date.UTC(parseInt(m[1]), 0, 1));\n }\n // \"MMM yyyy\" or \"MMMM yyyy\" — \"Aug 2015\", \"August 2015\"\n m = input.match(/^([A-Za-z]+)\\s+(\\d{4})$/);\n if (m) {\n const month = months[m[1].toLowerCase()];\n if (month !== undefined) {\n return new Date(Date.UTC(parseInt(m[2]), month, 1));\n }\n }\n return null;\n }\n /** Build a KQL display string from current operator/value state */\n _buildKql() {\n if (this.isEmpty()) {\n this.kql = '';\n return;\n }\n switch (this.operator) {\n case 'equals':\n this.kql = `= ${this.text}`;\n break;\n case 'n_equals':\n this.kql = `!= ${this.text}`;\n break;\n case 'contains':\n this.kql = `~ ${this.text}`;\n break;\n case 'n_contains':\n this.kql = `!~ ${this.text}`;\n break;\n case 'starts_with':\n this.kql = `${this.text}*`;\n break;\n case 'ends_with':\n this.kql = `*${this.text}`;\n break;\n case 'empty':\n this.kql = 'EMPTY';\n break;\n case 'n_empty':\n this.kql = 'NOT EMPTY';\n break;\n case 'less_than':\n this.kql = `< ${this.text}`;\n break;\n case 'less_than_equal':\n this.kql = `<= ${this.text}`;\n break;\n case 'greater_than':\n this.kql = `> ${this.text}`;\n break;\n case 'greater_than_equal':\n this.kql = `>= ${this.text}`;\n break;\n case 'between':\n this.kql = `[${this._format(this.value?.start ?? '')} TO ${this._format(this.value?.end ?? '')}]`;\n break;\n case 'in':\n this.kql = `(${this.value.map((v) => this._format(v)).join(',')})`;\n break;\n case 'n_in':\n this.kql = `!(${this.value.map((v) => this._format(v)).join(',')})`;\n break;\n default:\n throw Error(`Unknown operator ${this.operator}`);\n }\n }\n}\n//# sourceMappingURL=query.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing, render } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { krBaseCSS } from '../style/base.js';\nimport '../button/button.js';\nimport { KRSnackbar } from '../snackbar/snackbar.js';\nimport '../form/select-field/select-field.js';\nimport '../form/select-field/select-option.js';\nimport { KRQuery, getOperatorsForType, termify } from './query.js';\nimport '../tabs/tabs.js';\nimport '../tabs/tab.js';\n/** Internal table model built from user-provided def. */\nclass KRTableModel {\n constructor() {\n this.title = '';\n this.description = '';\n this.actions = [];\n this.columns = [];\n this.displayedColumns = [];\n this.data = null;\n this.dataSource = null;\n this.refreshInterval = 0;\n this.pageSize = 0;\n this.rowClickable = false;\n this.rowHref = null;\n }\n}\nlet KRTable = class KRTable extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Internal flag to switch between scroll edge modes:\n * - 'overlay': Fixed padding with overlay elements that hide content at edges (scrollbar at viewport edge)\n * - 'edge': Padding scrolls with content, allowing table to reach edges when scrolling\n */\n this._scrollStyle = 'edge';\n this._data = [];\n this._dataState = 'idle';\n this._page = 1;\n this._pageSize = 50;\n this._totalItems = 0;\n this._totalPages = 0;\n this._searchQuery = '';\n this._canScrollLeft = false;\n this._canScrollRight = false;\n this._canScrollHorizontal = false;\n this._columnPickerOpen = false;\n this._filterPanelOpened = null;\n this._filterPanelTab = 'filter';\n this._buckets = new Map();\n this._filterPanelPos = { top: 0, left: 0 };\n this._sorts = [];\n this._resizing = null;\n this._resizeObserver = null;\n this._searchPositionLocked = false;\n this._columnWidthsLocked = false;\n this._model = new KRTableModel();\n this.def = { columns: [] };\n /**\n * Table layout variant.\n * - 'default': Full-page table that fills parent height with centered search.\n * - 'card': Embedded table that sizes itself to content, left-aligns search, and\n * reserves space for pageSize rows to prevent layout shift.\n */\n this.variant = 'default';\n this._handleClickOutside = (e) => {\n const path = e.composedPath();\n if (this._columnPickerOpen) {\n const picker = this.shadowRoot?.querySelector('.column-picker-wrapper');\n if (picker && !path.includes(picker)) {\n this._columnPickerOpen = false;\n }\n }\n if (this._filterPanelOpened) {\n if (!path.some((el) => el.classList?.contains('filter-panel'))) {\n this._handleFilterApply();\n }\n }\n };\n this._handleResizeMove = (e) => {\n if (!this._resizing)\n return;\n const col = this._model.columns.find(c => c.id === this._resizing.columnId);\n if (col) {\n const newWidth = this._resizing.startWidth + (e.clientX - this._resizing.startX);\n col.width = `${Math.min(900, Math.max(50, newWidth))}px`;\n this.requestUpdate();\n }\n };\n this._handleResizeEnd = () => {\n this._resizing = null;\n document.removeEventListener('mousemove', this._handleResizeMove);\n document.removeEventListener('mouseup', this._handleResizeEnd);\n };\n }\n connectedCallback() {\n super.connectedCallback();\n this.classList.toggle('kr-table--scroll-overlay', this._scrollStyle === 'overlay');\n this.classList.toggle('kr-table--scroll-edge', this._scrollStyle === 'edge');\n this._fetch();\n this._initRefresh();\n document.addEventListener('click', this._handleClickOutside);\n this._resizeObserver = new ResizeObserver(() => {\n // Unlock and recalculate on resize since layout changes\n this._searchPositionLocked = false;\n this._updateSearchPosition();\n });\n this._resizeObserver.observe(this);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n clearInterval(this._refreshTimer);\n document.removeEventListener('click', this._handleClickOutside);\n this._resizeObserver?.disconnect();\n }\n willUpdate(changedProperties) {\n if (changedProperties.has('def')) {\n // Build internal model from user-provided def\n this._columnWidthsLocked = false;\n this._model = new KRTableModel();\n if (this.def.title) {\n this._model.title = this.def.title;\n }\n if (this.def.description) {\n this._model.description = this.def.description;\n }\n if (this.def.actions) {\n this._model.actions = this.def.actions;\n }\n if (this.def.data) {\n this._model.data = this.def.data;\n }\n if (this.def.dataSource) {\n this._model.dataSource = this.def.dataSource;\n }\n if (typeof this.def.refreshInterval === 'number') {\n this._model.refreshInterval = this.def.refreshInterval;\n }\n if (typeof this.def.pageSize === 'number') {\n this._model.pageSize = this.def.pageSize;\n this._pageSize = this.def.pageSize;\n }\n if (this.def.rowClickable) {\n this._model.rowClickable = this.def.rowClickable;\n }\n if (this.def.rowHref) {\n this._model.rowHref = this.def.rowHref;\n }\n this._sorts = [];\n this._model.columns = this.def.columns.map(col => {\n const column = {\n ...col,\n filter: null\n };\n if (!column.type) {\n column.type = 'string';\n }\n if (col.sort) {\n this._sorts.push({\n sortBy: col.id,\n sortDirection: col.sort\n });\n }\n if (column.type === 'actions') {\n column.label = col.label ?? '';\n column.sticky = 'right';\n column.resizable = false;\n return column;\n }\n if (col.filterable || col.facetable) {\n column.filter = new KRQuery();\n column.filter.field = col.id;\n column.filter.type = column.type;\n if (col.filter) {\n column.filter.setOperator(col.filter.operator);\n column.filter.setValue(col.filter.value);\n }\n else if (col.facetable && !col.filterable) {\n column.filter.operator = 'in';\n column.filter.value = [];\n }\n else if (column.filter.type === 'string') {\n column.filter.operator = 'contains';\n }\n }\n return column;\n });\n if (this.def.displayedColumns) {\n this._model.displayedColumns = this.def.displayedColumns;\n }\n else {\n this._model.displayedColumns = this._model.columns.map(c => c.id);\n }\n this._fetch();\n this._initRefresh();\n }\n }\n updated(changedProperties) {\n this.classList.toggle('kr-table--card', this.variant === 'card');\n this._updateScrollFlags();\n this._syncSlottedContent();\n this._lockColumnWidths();\n }\n /** Measures header cell widths and locks them to prevent column shift on subsequent data changes. */\n _lockColumnWidths() {\n if (this._columnWidthsLocked || this._data.length === 0)\n return;\n const headerCells = this.shadowRoot?.querySelectorAll('.header-row > .header-cell');\n if (!headerCells)\n return;\n const cols = this.getDisplayedColumns();\n headerCells.forEach((cell, i) => {\n const cellWidth = cell.offsetWidth;\n if (i < cols.length && !cols[i].width && cols[i].type !== 'actions' && cellWidth > 0) {\n cols[i].width = `${cellWidth}px`;\n this._columnWidthsLocked = true;\n }\n });\n }\n /** Syncs light DOM content for cells with custom render functions */\n _syncSlottedContent() {\n const columns = this.getDisplayedColumns().filter(col => col.render);\n if (!columns.length)\n return;\n // Clear old slotted content\n this.querySelectorAll('[slot^=\"cell-\"]').forEach(el => el.remove());\n // Create new slotted content\n this._data.forEach((row, rowIndex) => {\n columns.forEach(col => {\n const result = col.render(row);\n if (!result)\n return;\n const el = document.createElement('span');\n el.slot = `cell-${rowIndex}-${col.id}`;\n if (col.type === 'actions') {\n el.style.display = 'flex';\n el.style.gap = '8px';\n }\n if (typeof result === 'string') {\n el.innerHTML = result;\n }\n else {\n render(result, el);\n }\n this.appendChild(el);\n });\n });\n }\n // ----------------------------------------------------------------------------\n // Public Interface\n // ----------------------------------------------------------------------------\n refresh() {\n this._fetch();\n }\n goToPrevPage() {\n if (this._page > 1) {\n this._page--;\n this._fetch();\n }\n }\n goToNextPage() {\n if (this._page < this._totalPages) {\n this._page++;\n this._fetch();\n }\n }\n goToPage(page) {\n if (page >= 1 && page <= this._totalPages) {\n this._page = page;\n this._fetch();\n }\n }\n // ----------------------------------------------------------------------------\n // Data Fetching\n // ----------------------------------------------------------------------------\n _toSolrData() {\n const request = {\n page: this._page - 1,\n size: this._pageSize,\n sorts: this._sorts,\n filterFields: [],\n queryFields: [],\n facetFields: []\n };\n for (const col of this._model.columns) {\n if (!col.filter || col.filter.isEmpty() || !col.filter.isValid()) {\n continue;\n }\n const filterData = col.filter.toSolrData();\n if (col.facetable && (col.filter.operator === 'in' || col.filter.operator === 'n_in')) {\n filterData.tagged = true;\n }\n request.filterFields.push(filterData);\n }\n for (const col of this._model.columns) {\n if (!col.facetable) {\n continue;\n }\n request.facetFields.push({\n name: col.id,\n type: 'FIELD',\n limit: 100,\n sort: 'count',\n minimumCount: 1\n });\n }\n if (this._searchQuery?.trim().length) {\n request.queryFields.push({\n name: '_text_',\n operation: 'IS',\n value: termify(this._searchQuery, false)\n });\n }\n return request;\n }\n _toDbParams() {\n const request = {\n page: this._page - 1,\n size: this._pageSize,\n sorts: this._sorts,\n filterFields: [],\n queryFields: [],\n facetFields: []\n };\n for (const col of this._model.columns) {\n if (!col.filter || col.filter.isEmpty() || !col.filter.isValid()) {\n continue;\n }\n request.filterFields.push(col.filter.toDbParams());\n }\n if (this._searchQuery?.trim().length) {\n this._model.columns.filter(col => col.searchable).forEach(col => {\n request.queryFields.push({\n name: col.id,\n operation: 'CONTAINS',\n value: this._searchQuery,\n and: false\n });\n });\n }\n return request;\n }\n /**\n * Fetches data from the API and updates the table.\n * Shows a loading spinner while fetching, then displays rows on success\n * or an error snackbar on failure.\n * Request/response format depends on dataSource.mode (solr, opensearch, db).\n */\n _fetch() {\n if (this._model.data) {\n this._data = this._model.data;\n this._totalItems = this._model.data.length;\n this._totalPages = Math.ceil(this._model.data.length / this._pageSize);\n this._dataState = 'success';\n return;\n }\n if (!this._model.dataSource)\n return;\n this._dataState = 'loading';\n let request;\n if (this._model.dataSource.mode === 'db') {\n request = this._toDbParams();\n }\n else {\n request = this._toSolrData();\n }\n this._model.dataSource.fetch(request)\n .then(response => {\n // Parse response based on mode\n switch (this._model.dataSource?.mode) {\n case 'opensearch': {\n throw Error('Opensearch not supported yet');\n break;\n }\n case 'db': {\n const res = response;\n this._data = res.data.content;\n this._totalItems = res.data.totalElements;\n this._totalPages = res.data.totalPages;\n this._pageSize = res.data.size;\n break;\n }\n default: { // solr\n const res = response;\n this._data = res.data.content;\n this._totalItems = res.data.totalElements;\n this._totalPages = res.data.totalPages;\n this._pageSize = res.data.size;\n this._parseFacetResults(res);\n }\n }\n this._dataState = 'success';\n this._updateSearchPosition();\n })\n .catch(err => {\n this._dataState = 'error';\n KRSnackbar.show({\n message: err instanceof Error ? err.message : 'Failed to load data',\n type: 'error'\n });\n });\n }\n _parseFacetResults(response) {\n if (!response.data.facetFields) {\n return;\n }\n for (const col of this._model.columns) {\n if (!col.facetable) {\n continue;\n }\n const rawBuckets = response.data.facetFields[col.id];\n if (!rawBuckets) {\n this._buckets.set(col.id, []);\n continue;\n }\n const buckets = [];\n for (const raw of rawBuckets) {\n // Solr returns boolean facet values as strings — coerce to actual booleans\n // so they match the filter values stored by toggle().\n let val = raw.name;\n if (col.type === 'boolean' && typeof raw.name === 'string') {\n if (raw.name === 'true') {\n val = true;\n }\n else if (raw.name === 'false') {\n val = false;\n }\n }\n if (raw.name === null && raw.count > 0) {\n buckets.unshift({\n val: null,\n count: raw.count\n });\n }\n if (raw.name !== null) {\n buckets.push({\n val: val,\n count: raw.count\n });\n }\n }\n // Bucket sync: ensure selected values appear even with 0 results\n if (col.filter && (col.filter.operator === 'in' || col.filter.operator === 'n_in') && Array.isArray(col.filter.value)) {\n for (const selectedVal of col.filter.value) {\n if (!buckets.some(b => b.val === selectedVal)) {\n buckets.push({\n val: selectedVal,\n count: 0\n });\n }\n }\n }\n this._buckets.set(col.id, buckets);\n }\n // Trigger re-render since Map mutation doesn't trigger Lit updates\n this._buckets = new Map(this._buckets);\n }\n /**\n * Sets up auto-refresh so the table automatically fetches fresh data\n * at a regular interval (useful for dashboards, monitoring views).\n * Configured via def.refreshInterval in milliseconds.\n */\n _initRefresh() {\n clearInterval(this._refreshTimer);\n if (this._model.refreshInterval && this._model.refreshInterval > 0) {\n this._refreshTimer = window.setInterval(() => {\n this._fetch();\n }, this._model.refreshInterval);\n }\n }\n _handleSearch(e) {\n const input = e.target;\n this._searchQuery = input.value;\n this._page = 1;\n this._fetch();\n }\n _getGridTemplateColumns() {\n const cols = this.getDisplayedColumns();\n return cols.map((col) => {\n // If column has explicit width, use it\n if (col.width) {\n return col.width;\n }\n // Actions columns: fit content without minimum\n if (col.type === 'actions') {\n return 'max-content';\n }\n // No width specified - use content-based sizing with minimum\n return 'minmax(80px, auto)';\n }).join(' ');\n }\n /**\n * Updates search position to be centered with equal gaps from title and tools.\n * On first call: resets to flex centering, measures position, then locks with fixed margin.\n * Subsequent calls are ignored unless _searchPositionLocked is reset (e.g., on resize).\n */\n _updateSearchPosition() {\n // Skip if already locked (prevents shifts on pagination changes)\n if (this._searchPositionLocked)\n return;\n // In card mode, search is left-aligned via CSS — no position locking needed\n if (this.variant === 'card')\n return;\n const search = this.shadowRoot?.querySelector('.search');\n const searchField = search?.querySelector('.search-field');\n if (!search || !searchField)\n return;\n // Reset to flex centering\n search.style.justifyContent = 'center';\n searchField.style.marginLeft = '';\n requestAnimationFrame(() => {\n const searchRect = search.getBoundingClientRect();\n const fieldRect = searchField.getBoundingClientRect();\n // Calculate how far from the left of search container the field currently is\n const currentOffset = fieldRect.left - searchRect.left;\n // Lock position: switch to flex-start and use fixed margin\n search.style.justifyContent = 'flex-start';\n searchField.style.marginLeft = `${currentOffset}px`;\n // Mark as locked so pagination changes don't shift the search\n this._searchPositionLocked = true;\n });\n }\n // ----------------------------------------------------------------------------\n // Columns\n // ----------------------------------------------------------------------------\n _toggleColumnPicker() {\n this._columnPickerOpen = !this._columnPickerOpen;\n }\n _toggleColumn(columnId) {\n if (this._model.displayedColumns.includes(columnId)) {\n this._model.displayedColumns = this._model.displayedColumns.filter(id => id !== columnId);\n }\n else {\n this._model.displayedColumns = [...this._model.displayedColumns, columnId];\n }\n this.requestUpdate();\n }\n // Clear any existing text selection on mousedown so we only detect\n // selections made during this click gesture, not stale selections from elsewhere\n _handleRowMouseDown() {\n if (!this._model.rowClickable && !this._model.rowHref) {\n return;\n }\n window.getSelection()?.removeAllRanges();\n }\n _handleRowClick(e, row, rowIndex) {\n if (!this._model.rowClickable && !this._model.rowHref) {\n return;\n }\n const selection = window.getSelection();\n if (selection && selection.toString().length > 0) {\n e.preventDefault();\n return;\n }\n this.dispatchEvent(new CustomEvent('row-click', {\n detail: { row, rowIndex },\n bubbles: true,\n composed: true\n }));\n }\n // When a user toggles a column on via the column picker, it gets appended\n // to _displayedColumns. By mapping over _displayedColumns (not def.columns),\n // the new column appears at the right edge of the table instead of jumping\n // back to its original position in the column definition.\n // Actions columns are always moved to the end.\n getDisplayedColumns() {\n return this._model.displayedColumns\n .map(id => this._model.columns.find(col => col.id === id))\n .sort((a, b) => {\n if (a.type === 'actions' && b.type !== 'actions')\n return 1;\n if (a.type !== 'actions' && b.type === 'actions')\n return -1;\n return 0;\n });\n }\n // ----------------------------------------------------------------------------\n // Scrolling\n // ----------------------------------------------------------------------------\n /**\n * Scroll event handler that updates scroll flags in real-time as user scrolls.\n * Updates shadow indicators to show if more content exists left/right.\n */\n _handleScroll(e) {\n const container = e.target;\n this._canScrollLeft = container.scrollLeft > 0;\n this._canScrollRight = container.scrollLeft < container.scrollWidth - container.clientWidth - 1;\n }\n /**\n * Updates scroll state flags for the table content container.\n * - _canScrollLeft: true if scrolled right (can scroll back left)\n * - _canScrollRight: true if more content exists to the right\n * - _canScrollHorizontal: true if content is wider than container\n * These flags control scroll shadow indicators and CSS classes.\n */\n _updateScrollFlags() {\n const container = this.shadowRoot?.querySelector('.content');\n if (container) {\n this._canScrollLeft = container.scrollLeft > 0;\n this._canScrollRight = container.scrollWidth > container.clientWidth && container.scrollLeft < container.scrollWidth - container.clientWidth - 1;\n this._canScrollHorizontal = container.scrollWidth > container.clientWidth;\n }\n this.classList.toggle('kr-table--scroll-left-available', this._canScrollLeft);\n this.classList.toggle('kr-table--scroll-right-available', this._canScrollRight);\n this.classList.toggle('kr-table--scroll-horizontal-available', this._canScrollHorizontal);\n this.classList.toggle('kr-table--sticky-left', this.getDisplayedColumns().some(c => c.sticky === 'left'));\n this.classList.toggle('kr-table--sticky-right', this.getDisplayedColumns().some(c => c.sticky === 'right'));\n }\n // ----------------------------------------------------------------------------\n // Column Resizing\n // ----------------------------------------------------------------------------\n _handleResizeStart(e, columnId) {\n e.preventDefault();\n const headerCell = this.shadowRoot?.querySelector(`.header-cell[data-column-id=\"${columnId}\"]`);\n this._resizing = {\n columnId,\n startX: e.clientX,\n startWidth: headerCell?.offsetWidth || 200\n };\n document.addEventListener('mousemove', this._handleResizeMove);\n document.addEventListener('mouseup', this._handleResizeEnd);\n }\n // ----------------------------------------------------------------------------\n // Sorting\n // ----------------------------------------------------------------------------\n _handleSortClick(e, column) {\n if (e.shiftKey) {\n // Multi-sort: add or cycle existing\n const existingIndex = this._sorts.findIndex(s => s.sortBy === column.id);\n if (existingIndex === -1) {\n this._sorts.push({ sortBy: column.id, sortDirection: 'asc' });\n }\n else {\n const existing = this._sorts[existingIndex];\n if (existing.sortDirection === 'asc') {\n existing.sortDirection = 'desc';\n }\n else {\n // on third click, remove sorting for the column\n this._sorts.splice(existingIndex, 1);\n }\n }\n this.requestUpdate();\n }\n else {\n // Single sort: replace all\n let existing = null;\n if (this._sorts.length === 1) {\n existing = this._sorts.find(s => s.sortBy === column.id);\n }\n if (!existing) {\n this._sorts = [{ sortBy: column.id, sortDirection: 'asc' }];\n }\n else if (existing.sortDirection === 'asc') {\n this._sorts = [{ sortBy: column.id, sortDirection: 'desc' }];\n }\n else {\n this._sorts = [];\n }\n }\n this._page = 1;\n this._fetch();\n }\n _renderSortIndicator(column) {\n if (!column.sortable) {\n return nothing;\n }\n const sortIndex = this._sorts.findIndex(s => s.sortBy === column.id);\n if (sortIndex === -1) {\n // Ghost arrow: visible only on hover via CSS\n return html `\n <span class=\"header-cell__sort\" @click=${(e) => this._handleSortClick(e, column)}>\n <svg class=\"header-cell__sort-arrow header-cell__sort-arrow--ghost\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"/>\n </svg>\n </span>\n `;\n }\n let arrowStyle = {};\n if (this._sorts[sortIndex].sortDirection === 'desc') {\n arrowStyle = { transform: 'rotate(180deg)' };\n }\n return html `\n <span class=\"header-cell__sort\" @click=${(e) => this._handleSortClick(e, column)}>\n <svg class=\"header-cell__sort-arrow\" viewBox=\"0 0 24 24\" fill=\"currentColor\" style=${styleMap(arrowStyle)}>\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"/>\n </svg>\n ${this._sorts.length > 1 ? html `\n <span class=\"header-cell__sort-priority\">${sortIndex + 1}</span>\n ` : nothing}\n </span>\n `;\n }\n // ----------------------------------------------------------------------------\n // Header\n // ----------------------------------------------------------------------------\n _handleAction(action) {\n if (action.href) {\n return;\n }\n this.dispatchEvent(new CustomEvent('action', {\n detail: { action: action.id },\n bubbles: true,\n composed: true\n }));\n }\n // ----------------------------------------------------------------------------\n // Filter Handlers\n // ----------------------------------------------------------------------------\n _handleKqlChange(e, column) {\n const kql = e.target.value.trim();\n if (!kql) {\n column.filter.clear();\n this.requestUpdate();\n }\n else {\n column.filter.setKql(kql);\n this.requestUpdate();\n if (!column.filter.isValid()) {\n return;\n }\n }\n this._page = 1;\n this._fetch();\n }\n _handleFilterPanelToggle(e, column) {\n e.stopPropagation();\n if (this._filterPanelOpened === column.id) {\n this._filterPanelOpened = null;\n }\n else {\n const rect = e.currentTarget.getBoundingClientRect();\n let left = rect.left;\n if (left + 328 > window.innerWidth) {\n left = window.innerWidth - 328;\n }\n this._filterPanelPos = {\n top: rect.bottom + 4,\n left\n };\n this._filterPanelOpened = column.id;\n if (column.facetable) {\n this._filterPanelTab = 'counts';\n }\n else {\n this._filterPanelTab = 'filter';\n }\n }\n }\n _handleKqlClear(column) {\n column.filter.clear();\n this._page = 1;\n this._fetch();\n }\n _handleFilterClear() {\n const column = this._model.columns.find(c => c.id === this._filterPanelOpened);\n if (column) {\n column.filter.clear();\n if (column.facetable && !column.filterable) {\n column.filter.operator = 'in';\n column.filter.value = [];\n }\n }\n this._filterPanelOpened = null;\n this._page = 1;\n this._fetch();\n }\n _handleFilterTextKeydown(e, column) {\n if (e.key === 'Enter') {\n e.preventDefault();\n this._handleFilterApply();\n }\n }\n _handleOperatorChange(e, column) {\n column.filter.setOperator(e.target.value);\n this.requestUpdate();\n }\n _handleFilterStringChange(e, column) {\n column.filter.setValue(e.target.value);\n this.requestUpdate();\n }\n _handleFilterNumberChange(e, column) {\n column.filter.setValue(Number(e.target.value));\n this.requestUpdate();\n }\n _handleFilterDateChange(e, column) {\n column.filter.setValue(new Date(e.target.value), 'day');\n this.requestUpdate();\n }\n _handleFilterBooleanChange(e, column) {\n column.filter.setValue(e.target.value === 'true');\n this.requestUpdate();\n }\n _handleFilterDateStartChange(e, column) {\n column.filter.setStart(new Date(e.target.value), 'day');\n this.requestUpdate();\n }\n _handleFilterDateEndChange(e, column) {\n column.filter.setEnd(new Date(e.target.value), 'day');\n this.requestUpdate();\n }\n _handleFilterNumberStartChange(e, column) {\n column.filter.setStart(Number(e.target.value));\n this.requestUpdate();\n }\n _handleFilterNumberEndChange(e, column) {\n column.filter.setEnd(Number(e.target.value));\n this.requestUpdate();\n }\n _handleFilterListChange(e, column) {\n const items = e.target.value.split(',').map((v) => v.trim()).filter((v) => v !== '');\n if (column.type === 'number') {\n column.filter.setValue(items.map((v) => Number(v)));\n }\n else {\n column.filter.setValue(items);\n }\n this.requestUpdate();\n }\n _handleFilterApply() {\n this._filterPanelOpened = null;\n this._page = 1;\n this._fetch();\n }\n _handleFilterPanelTabChange(e) {\n this._filterPanelTab = e.detail.activeTabId;\n }\n _handleBucketToggle(e, column, bucket) {\n column.filter.toggle(bucket.val);\n this._page = 1;\n this._fetch();\n }\n // ----------------------------------------------------------------------------\n // Rendering\n // ----------------------------------------------------------------------------\n _renderCellContent(column, row, rowIndex) {\n const value = row[column.id];\n if (column.render) {\n // Use slot to project content from light DOM so external styles apply\n return html `<slot name=\"cell-${rowIndex}-${column.id}\"></slot>`;\n }\n if (value === null || value === undefined) {\n return '';\n }\n switch (column.type) {\n case 'number':\n if (column.format === 'currency' && typeof value === 'number') {\n return value.toLocaleString('en-US', { style: 'currency', currency: 'USD' });\n }\n return String(value);\n case 'date': {\n let date;\n if (value instanceof Date) {\n date = value;\n }\n else if (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}/.test(value)) {\n // MySQL datetime format (UTC): \"2026-01-28 01:33:44:517\"\n // Replace last colon before ms with dot, append Z for UTC\n const isoString = value.replace(/(\\d{2}:\\d{2}:\\d{2}):(\\d+)$/, '$1.$2').replace(' ', 'T') + 'Z';\n date = new Date(isoString);\n }\n else {\n date = new Date(value);\n }\n // Show date and time for datetime values in UTC\n return date.toLocaleString(undefined, {\n year: 'numeric', month: 'short', day: 'numeric',\n hour: 'numeric', minute: '2-digit',\n timeZone: 'UTC'\n });\n }\n case 'boolean':\n if (value === true)\n return 'Yes';\n if (value === false)\n return 'No';\n return '';\n default:\n return String(value);\n }\n }\n /**\n * Returns CSS classes for a header cell based on column config.\n */\n _getHeaderCellClasses(column, index) {\n return {\n 'header-cell': true,\n 'header-cell--sortable': !!column.sortable,\n 'header-cell--align-center': column.align === 'center',\n 'header-cell--align-right': column.align === 'right',\n 'header-cell--sticky-left': column.sticky === 'left',\n 'header-cell--sticky-left-last': column.sticky === 'left' &&\n !this.getDisplayedColumns().slice(index + 1).some(c => c.sticky === 'left'),\n 'header-cell--sticky-right': column.sticky === 'right',\n 'header-cell--sticky-right-first': column.sticky === 'right' &&\n !this.getDisplayedColumns().slice(0, index).some(c => c.sticky === 'right')\n };\n }\n /**\n * Returns CSS classes for a table cell based on column config:\n * - Alignment (center, right)\n * - Sticky positioning (left, right)\n * - Border classes for the last left-sticky or first right-sticky column\n */\n _getCellClasses(column, index) {\n return {\n 'cell': true,\n 'cell--actions': column.type === 'actions',\n 'cell--align-center': column.align === 'center',\n 'cell--align-right': column.align === 'right',\n 'cell--sticky-left': column.sticky === 'left',\n 'cell--sticky-left-last': column.sticky === 'left' &&\n !this.getDisplayedColumns().slice(index + 1).some(c => c.sticky === 'left'),\n 'cell--sticky-right': column.sticky === 'right',\n 'cell--sticky-right-first': column.sticky === 'right' &&\n !this.getDisplayedColumns().slice(0, index).some(c => c.sticky === 'right')\n };\n }\n /**\n * Returns inline styles for a table cell:\n * - Width (from column config or default 150px)\n * - Min-width (if specified)\n * - Left/right offset for sticky columns (calculated from widths of preceding sticky columns)\n */\n _getCellStyle(column, index) {\n const styles = {};\n if (column.sticky === 'left') {\n let leftOffset = 0;\n for (let i = 0; i < index; i++) {\n const col = this.getDisplayedColumns()[i];\n if (col.sticky === 'left') {\n leftOffset += parseInt(col.width || '0', 10);\n }\n }\n styles.left = `${leftOffset}px`;\n }\n if (column.sticky === 'right') {\n let rightOffset = 0;\n for (let i = index + 1; i < this.getDisplayedColumns().length; i++) {\n const col = this.getDisplayedColumns()[i];\n if (col.sticky === 'right') {\n rightOffset += parseInt(col.width || '0', 10);\n }\n }\n styles.right = `${rightOffset}px`;\n }\n return styles;\n }\n /**\n * Renders the pagination controls:\n * - Previous page arrow (disabled on first page)\n * - Range text showing \"1-50 of 150\" format\n * - Next page arrow (disabled on last page)\n *\n * Hidden when there's no data or all data fits on one page.\n */\n _renderPagination() {\n const start = (this._page - 1) * this._pageSize + 1;\n const end = Math.min(this._page * this._pageSize, this._totalItems);\n return html `\n <div class=\"pagination\">\n <span\n class=\"pagination-icon ${this._page === 1 ? 'pagination-icon--disabled' : ''}\"\n @click=${this.goToPrevPage}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/></svg>\n </span>\n <span class=\"pagination-info\">${start}-${end} of ${this._totalItems}</span>\n <span\n class=\"pagination-icon ${this._page === this._totalPages ? 'pagination-icon--disabled' : ''}\"\n @click=${this.goToNextPage}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/></svg>\n </span>\n </div>\n `;\n }\n /** Renders the card title block (title + description) above the toolbar in card mode. */\n _renderCardHeader() {\n if (this.variant !== 'card')\n return nothing;\n if (!this._model.title && !this._model.description)\n return nothing;\n return html `\n <div class=\"card-header\">\n ${this._model.title ? html `<h2 class=\"card-header__title\">${this._model.title}</h2>` : nothing}\n ${this._model.description ? html `<p class=\"card-header__description\">${this._model.description}</p>` : nothing}\n </div>\n `;\n }\n /**\n * Renders the header toolbar containing:\n * - Title (left, default variant only)\n * - Search bar with view selector dropdown (center, or left-aligned in card variant)\n * - Tools (right): page navigation, refresh button, column visibility picker, actions dropdown\n *\n * Hidden when there's no title, no actions, and data fits on one page.\n */\n _renderHeader() {\n if (!this._model.title && !this._model.actions?.length && this._totalPages <= 1) {\n return nothing;\n }\n return html `\n <div class=\"header\">\n ${this._model.title && this.variant !== 'card' ? html `<div class=\"title\">${this._model.title}</div>` : nothing}\n ${this._model.dataSource?.mode === 'db' && !this._model.columns.some(col => col.searchable) ? html `<div class=\"search\"></div>` : html `\n <div class=\"search\">\n <!-- TODO: Saved views dropdown\n <div class=\"views\">\n <span>Default View</span>\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"/></svg>\n </div>\n -->\n <div class=\"search-field\">\n <svg class=\"search-icon\" viewBox=\"0 -960 960 960\" fill=\"currentColor\"><path d=\"M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z\"/></svg>\n <input\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search...\"\n .value=${this._searchQuery}\n @input=${this._handleSearch}\n />\n </div>\n </div>\n `}\n <div class=\"tools\">\n ${this._renderPagination()}\n <span class=\"refresh\" title=\"Refresh\" @click=${() => this.refresh()}>\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\"><path d=\"M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z\"/></svg>\n </span>\n <div class=\"column-picker-wrapper\">\n <span class=\"header-icon\" title=\"Columns\" @click=${this._toggleColumnPicker}>\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\"><path d=\"M121-280v-400q0-33 23.5-56.5T201-760h559q33 0 56.5 23.5T840-680v400q0 33-23.5 56.5T760-200H201q-33 0-56.5-23.5T121-280Zm79 0h133v-400H200v400Zm213 0h133v-400H413v400Zm213 0h133v-400H626v400Z\"/></svg>\n </span>\n <div class=\"column-picker ${this._columnPickerOpen ? 'open' : ''}\">\n ${[...this._model.columns].filter(col => col.type !== 'actions').sort((a, b) => (a.label ?? a.id).localeCompare(b.label ?? b.id)).map(col => html `\n <div class=\"column-picker-item\" @click=${() => this._toggleColumn(col.id)}>\n <div class=\"column-picker-checkbox ${this._model.displayedColumns.includes(col.id) ? 'checked' : ''}\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/></svg>\n </div>\n <span class=\"column-picker-label\">${col.label ?? col.id}</span>\n </div>\n `)}\n </div>\n </div>\n ${this._model.actions?.length === 1 ? html `\n <kr-button\n class=\"actions\"\n .href=${this._model.actions[0].href}\n .target=${this._model.actions[0].target}\n @click=${() => this._handleAction(this._model.actions[0])}\n >\n ${this._model.actions[0].label}\n </kr-button>\n ` : this._model.actions?.length ? html `\n <kr-button\n class=\"actions\"\n .options=${this._model.actions.map(a => ({ id: a.id, label: a.label }))}\n @option-select=${(e) => this._handleAction({ id: e.detail.id, label: e.detail.label })}\n >\n Actions\n </kr-button>\n ` : nothing}\n </div>\n </div>\n `;\n }\n /** Renders status message (loading, error, empty) */\n _renderStatus() {\n if (this._dataState === 'loading' && this._data.length === 0) {\n return html `<div class=\"status\">Loading...</div>`;\n }\n if (this._dataState === 'error' && this._data.length === 0) {\n return html `<div class=\"status status--error\">Error loading data</div>`;\n }\n if (this._data.length === 0) {\n return html `<div class=\"status\">No data available</div>`;\n }\n return nothing;\n }\n _renderFilterPanel() {\n if (!this._filterPanelOpened) {\n return nothing;\n }\n const column = this._model.columns.find(c => c.id === this._filterPanelOpened);\n // Build filter content (operator + value input)\n let valueInput = html ``;\n if (column.filter.operator === 'empty' || column.filter.operator === 'n_empty') {\n valueInput = html `\n <input\n type=\"text\"\n class=\"filter-panel__input\"\n disabled\n .value=${column.filter.text}\n />\n `;\n }\n else if (column.filter.operator === 'between' && column.type === 'date') {\n valueInput = html `\n <input\n type=\"date\"\n class=\"filter-panel__input\"\n .valueAsDate=${column.filter.value?.start ?? null}\n @change=${(e) => this._handleFilterDateStartChange(e, column)}\n />\n <input\n type=\"date\"\n class=\"filter-panel__input\"\n .valueAsDate=${column.filter.value?.end ?? null}\n @change=${(e) => this._handleFilterDateEndChange(e, column)}\n />\n `;\n }\n else if (column.filter.operator === 'between' && column.type === 'number') {\n valueInput = html `\n <input\n type=\"number\"\n class=\"filter-panel__input\"\n placeholder=\"Start\"\n .value=${column.filter.value?.start ?? ''}\n @input=${(e) => this._handleFilterNumberStartChange(e, column)}\n @keydown=${(e) => this._handleFilterTextKeydown(e, column)}\n />\n <input\n type=\"number\"\n class=\"filter-panel__input\"\n placeholder=\"End\"\n .value=${column.filter.value?.end ?? ''}\n @input=${(e) => this._handleFilterNumberEndChange(e, column)}\n @keydown=${(e) => this._handleFilterTextKeydown(e, column)}\n />\n `;\n }\n else if (column.filter.operator === 'in' || column.filter.operator === 'n_in') {\n valueInput = html `\n <textarea\n class=\"filter-panel__textarea\"\n rows=\"3\"\n placeholder=\"Values (comma-separated)\"\n .value=${column.filter.text}\n @input=${(e) => this._handleFilterListChange(e, column)}\n @keydown=${(e) => this._handleFilterTextKeydown(e, column)}\n ></textarea>\n `;\n }\n else if (column.type === 'boolean') {\n valueInput = html `\n <kr-select-field\n placeholder=\"Value\"\n .value=${String(column.filter.value ?? '')}\n @change=${(e) => this._handleFilterBooleanChange(e, column)}\n >\n <kr-select-option value=\"true\">Yes</kr-select-option>\n <kr-select-option value=\"false\">No</kr-select-option>\n </kr-select-field>\n `;\n }\n else if (column.type === 'date') {\n valueInput = html `\n <input\n type=\"date\"\n class=\"filter-panel__input\"\n .valueAsDate=${column.filter.value}\n @change=${(e) => this._handleFilterDateChange(e, column)}\n />\n `;\n }\n else if (column.type === 'number') {\n valueInput = html `\n <input\n type=\"number\"\n class=\"filter-panel__input\"\n placeholder=\"Value\"\n min=\"0\"\n .value=${column.filter.text}\n @input=${(e) => this._handleFilterNumberChange(e, column)}\n @keydown=${(e) => this._handleFilterTextKeydown(e, column)}\n />\n `;\n }\n else {\n valueInput = html `\n <input\n type=\"text\"\n class=\"filter-panel__input\"\n placeholder=\"Value\"\n .value=${column.filter.text}\n @input=${(e) => this._handleFilterStringChange(e, column)}\n @keydown=${(e) => this._handleFilterTextKeydown(e, column)}\n />\n `;\n }\n const filterContent = html `\n <div class=\"filter-panel__content\">\n <kr-select-field\n .value=${column.filter.operator}\n @change=${(e) => this._handleOperatorChange(e, column)}\n >\n ${getOperatorsForType(column.type).map(op => html `\n <kr-select-option value=${op.key}>${op.label}</kr-select-option>\n `)}\n </kr-select-field>\n ${valueInput}\n </div>\n `;\n // Build bucket list content\n const buckets = this._buckets.get(column.id) || [];\n let bucketContent;\n if (!buckets.length) {\n bucketContent = html `<div class=\"bucket-empty\">No data</div>`;\n }\n else {\n bucketContent = html `\n <div class=\"buckets\">\n ${buckets.map(bucket => {\n let bucketLabel = '(Empty)';\n if (bucket.val !== null && bucket.val !== undefined) {\n if (column.type === 'boolean') {\n if (bucket.val === true || bucket.val === 'true') {\n bucketLabel = 'Yes';\n }\n else {\n bucketLabel = 'No';\n }\n }\n else {\n bucketLabel = String(bucket.val);\n }\n }\n // When using n_in, the user sees all buckets checked by default and unchecks\n // the ones they want to hide. Under the hood, has() returns true for values\n // in the exclusion list, so we invert the check state for n_in.\n let checked = column.filter.has(bucket.val);\n if (column.filter.operator === 'n_in') {\n checked = !checked;\n }\n let checkIcon = nothing;\n if (checked) {\n checkIcon = html `\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n `;\n }\n return html `\n <div\n class=\"bucket\"\n @click=${(e) => this._handleBucketToggle(e, column, bucket)}\n >\n <div class=${classMap({\n 'bucket__checkbox': true,\n 'bucket__checkbox--checked': checked\n })}>\n ${checkIcon}\n </div>\n <span class=\"bucket__label\">${bucketLabel}</span>\n <span class=\"bucket__count\">${bucket.count}</span>\n </div>\n `;\n })}\n </div>\n `;\n }\n // Build panel body — tabs if both filterable+facetable, otherwise just the relevant content\n let panelBody;\n if (column.facetable && column.filterable) {\n panelBody = html `\n <kr-tab-group\n size=\"small\"\n active-tab-id=${this._filterPanelTab}\n @tab-change=${(e) => this._handleFilterPanelTabChange(e)}\n >\n <kr-tab id=\"filter\" label=\"Filter\">\n ${filterContent}\n </kr-tab>\n <kr-tab id=\"counts\" label=\"Counts\">\n ${bucketContent}\n </kr-tab>\n </kr-tab-group>\n `;\n }\n else if (column.facetable) {\n panelBody = bucketContent;\n }\n else {\n panelBody = filterContent;\n }\n return html `\n <div\n class=\"filter-panel\"\n style=${styleMap({\n top: this._filterPanelPos.top + 'px',\n left: this._filterPanelPos.left + 'px'\n })}\n >\n ${panelBody}\n <div class=\"filter-panel__actions\">\n <kr-button variant=\"outline\" color=\"secondary\" size=\"small\" @click=${this._handleFilterClear}>\n Clear\n </kr-button>\n <kr-button size=\"small\" @click=${this._handleFilterApply}>\n Apply\n </kr-button>\n </div>\n </div>\n `;\n }\n /**\n * Renders filter row below column headers.\n * Only displays for columns with filterable: true.\n */\n _renderFilterRow() {\n const columns = this.getDisplayedColumns();\n if (!columns.some(col => col.filterable || col.facetable)) {\n return nothing;\n }\n return html `\n <div class=\"filter-row\">\n ${columns.map((col, i) => {\n if (!col.filterable && !col.facetable) {\n return html `<div\n class=${classMap({\n 'filter-cell': true,\n 'filter-cell--sticky-left': col.sticky === 'left',\n 'filter-cell--sticky-right': col.sticky === 'right',\n 'filter-cell--sticky-right-first': col.sticky === 'right' &&\n !columns.slice(0, i).some((c) => c.sticky === 'right')\n })}\n style=${styleMap(this._getCellStyle(col, i))}\n ></div>`;\n }\n return html `\n <div\n class=${classMap({\n 'filter-cell': true,\n 'filter-cell--sticky-left': col.sticky === 'left',\n 'filter-cell--sticky-right': col.sticky === 'right',\n 'filter-cell--sticky-right-first': col.sticky === 'right' &&\n !columns.slice(0, i).some((c) => c.sticky === 'right')\n })}\n style=${styleMap(this._getCellStyle(col, i))}\n >\n <div class=\"filter-cell__wrapper\">\n <input\n type=\"text\"\n class=${classMap({\n 'filter-cell__input': true,\n 'filter-cell__input--invalid': !col.filter.isValid()\n })}\n .value=${col.filter.kql}\n @change=${(e) => this._handleKqlChange(e, col)}\n />\n ${col.filter?.kql?.length > 0 ? html `\n <button\n class=\"filter-cell__clear\"\n @click=${() => this._handleKqlClear(col)}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n </svg>\n </button>\n ` : nothing}\n <button\n class=${classMap({\n 'filter-cell__advanced': true,\n 'filter-cell__advanced--opened': this._filterPanelOpened === col.id\n })}\n @click=${(e) => this._handleFilterPanelToggle(e, col)}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"/>\n </svg>\n </button>\n </div>\n </div>\n `;\n })}\n </div>\n `;\n }\n /** Renders the scrollable data grid with column headers and rows. */\n _renderTable() {\n return html `\n <div class=\"wrapper\">\n <div class=\"overlay-left\"></div>\n <div class=\"overlay-right\"></div>\n ${this._renderStatus()}\n <div class=\"content\" @scroll=${this._handleScroll}>\n <div class=\"table\" style=\"grid-template-columns: ${this._getGridTemplateColumns()}\">\n <div class=\"header-row\">\n ${this.getDisplayedColumns().map((col, i) => html `\n <div\n class=${classMap(this._getHeaderCellClasses(col, i))}\n style=${styleMap(this._getCellStyle(col, i))}\n data-column-id=${col.id}\n >\n <span class=\"header-cell__label\">${col.label ?? col.id}</span>\n ${this._renderSortIndicator(col)}\n ${col.resizable !== false ? html `<div\n class=\"header-cell__resize\"\n @mousedown=${(e) => this._handleResizeStart(e, col.id)}\n ></div>` : nothing}\n </div>\n `)}\n </div>\n ${this._renderFilterRow()}\n ${this._data.map((row, rowIndex) => {\n const cells = this.getDisplayedColumns().map((col, i) => html `\n <div\n class=${classMap(this._getCellClasses(col, i))}\n style=${styleMap(this._getCellStyle(col, i))}\n data-column-id=${col.id}\n >\n ${this._renderCellContent(col, row, rowIndex)}\n </div>\n `);\n if (this._model.rowHref) {\n return html `\n <a\n href=${this._model.rowHref(row)}\n draggable=\"false\"\n class=${classMap({ 'row': true, 'row--clickable': true, 'row--link': true })}\n @mousedown=${() => this._handleRowMouseDown()}\n @click=${(e) => this._handleRowClick(e, row, rowIndex)}\n >${cells}</a>\n `;\n }\n return html `\n <div\n class=${classMap({ 'row': true, 'row--clickable': !!this._model.rowClickable })}\n @mousedown=${() => this._handleRowMouseDown()}\n @click=${(e) => this._handleRowClick(e, row, rowIndex)}\n >${cells}</div>\n `;\n })}\n </div>\n </div>\n </div>\n `;\n }\n /**\n * Renders a data table with:\n * - Header bar with title, search input with view selector, and tools (pagination, refresh, column visibility, actions dropdown)\n * - Scrollable grid with sticky header row and optional sticky left/right columns\n * - Loading, error message, or empty state when no data\n */\n render() {\n if (!this._model.columns.length) {\n return html `<slot></slot>`;\n }\n return html `\n ${this._renderCardHeader()}\n ${this._renderHeader()}\n ${this._renderTable()}\n ${this._renderFilterPanel()}\n `;\n }\n};\nKRTable.styles = [krBaseCSS, css `\n /* -------------------------------------------------------------------------\n * Host\n * ----------------------------------------------------------------------- */\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: hidden;\n container-type: inline-size;\n }\n\n /* -------------------------------------------------------------------------\n * Header\n * ----------------------------------------------------------------------- */\n .header {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 16px;\n margin: 0 24px;\n height: 64px;\n border-bottom: 1px solid #e5e7eb;\n background: #fff;\n }\n\n :host(.kr-table--scroll-edge) .header {\n border-bottom: none;\n }\n\n .title {\n font-size: 18px;\n font-weight: 600;\n color: #000;\n }\n\n /* -------------------------------------------------------------------------\n * Content\n * ----------------------------------------------------------------------- */\n .wrapper {\n flex: 1;\n position: relative;\n overflow: hidden;\n }\n\n .content {\n height: 100%;\n overflow: auto;\n }\n\n /* -------------------------------------------------------------------------\n * Search\n * ----------------------------------------------------------------------- */\n .search {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n }\n\n /* In card mode, align search left instead of center */\n :host(.kr-table--card) .search {\n justify-content: flex-start;\n }\n\n .search-field {\n width: 100%;\n max-width: 400px;\n position: relative;\n display: flex;\n align-items: center;\n border: 1px solid #00000038;\n border-radius: 18px;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .search-field:focus-within {\n border-color: #163052;\n box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);\n }\n\n /* TODO: Uncomment when views dropdown is added\n .search-field:focus-within .views {\n border-color: #163052;\n }\n */\n\n .search-icon {\n position: absolute;\n left: 16px;\n width: 20px;\n height: 20px;\n color: #656871;\n pointer-events: none;\n }\n\n .search-input {\n height: 36px;\n padding: 0 16px 0 42px;\n border: none;\n border-radius: 16px;\n font-size: 14px;\n font-weight: 400;\n font-family: inherit;\n color: #163052;\n background: transparent;\n outline: none;\n flex: 1;\n min-width: 0;\n width: 100%;\n }\n\n .search-input::placeholder {\n color: #656871;\n font-weight: 400;\n }\n\n .search-input:focus {\n outline: none;\n }\n\n @container (max-width: 800px) {\n .search-field {\n max-width: 250px;\n }\n }\n\n .views {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 36px;\n padding: 0 16px;\n border: 1px solid #00000038;\n border-right: none;\n border-radius: 16px 0 0 16px;\n font-size: 14px;\n font-family: inherit;\n color: #163052;\n background: transparent;\n cursor: pointer;\n white-space: nowrap;\n transition: border-color 0.2s;\n }\n\n .views:hover {\n background: #e8f0f8;\n }\n\n .views svg {\n width: 16px;\n height: 16px;\n color: #163052;\n }\n\n /* -------------------------------------------------------------------------\n * Pagination\n * ----------------------------------------------------------------------- */\n .tools {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .pagination {\n display: flex;\n align-items: center;\n gap: 2px;\n }\n\n .pagination-info {\n font-size: 13px;\n color: var(--kr-primary);\n white-space: nowrap;\n }\n\n .pagination-icon {\n display: flex;\n color: var(--kr-primary);\n cursor: pointer;\n }\n\n .pagination-icon--disabled {\n opacity: 0.3;\n pointer-events: none;\n }\n\n .pagination-icon svg {\n width: 24px;\n height: 24px;\n }\n\n /* -------------------------------------------------------------------------\n * Header Icons\n * ----------------------------------------------------------------------- */\n .refresh,\n .header-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--kr-primary);\n background: #EBF1FA;\n cursor: pointer;\n padding: 6px;\n border-radius: 50%;\n transition: background 0.15s;\n }\n\n .refresh:hover,\n .header-icon:hover {\n background: #e8f0f8;\n }\n\n .refresh svg,\n .header-icon svg {\n width: 24px;\n height: 24px;\n }\n\n /* -------------------------------------------------------------------------\n * Column Picker\n * ----------------------------------------------------------------------- */\n .column-picker-wrapper {\n position: relative;\n }\n\n .column-picker {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 200px;\n max-height: calc(100vh - 120px);\n overflow-y: auto;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n padding: 8px 0;\n z-index: 100;\n display: none;\n transform-origin: top;\n }\n\n .column-picker.open {\n display: block;\n animation: column-picker-fade-in 150ms ease-out;\n }\n\n @keyframes column-picker-fade-in {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .column-picker-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 16px;\n cursor: pointer;\n white-space: nowrap;\n }\n\n .column-picker-item:hover {\n background: #f3f4f6;\n }\n\n .column-picker-checkbox {\n width: 16px;\n height: 16px;\n border: 1.5px solid #9ca3af;\n border-radius: 3px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: all 0.15s;\n }\n\n .column-picker-checkbox.checked {\n background: var(--kr-primary);\n border-color: var(--kr-primary);\n }\n\n .column-picker-checkbox svg {\n width: 12px;\n height: 12px;\n color: white;\n opacity: 0;\n }\n\n .column-picker-checkbox.checked svg {\n opacity: 1;\n }\n\n .column-picker-label {\n font-size: 14px;\n color: #374151;\n }\n\n /* -------------------------------------------------------------------------\n * Table Structure\n * ----------------------------------------------------------------------- */\n .table {\n display: grid;\n width: max-content;\n min-width: 100%;\n font-size: 14px;\n }\n\n .row {\n display: contents;\n }\n\n .row:hover .cell {\n background: #f9fafb;\n }\n\n .row--clickable {\n cursor: pointer;\n }\n\n .row--link {\n color: inherit;\n text-decoration: none;\n }\n\n .header-row {\n display: contents;\n }\n\n .cell {\n height: 48px;\n padding: 0 16px;\n display: flex;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n box-sizing: border-box;\n border-right: 1px solid #e5e7ebba;\n }\n\n .cell--actions {\n gap: 8px;\n }\n\n .header-cell {\n position: sticky;\n top: 0;\n height: 48px;\n padding: 0 16px;\n white-space: nowrap;\n box-sizing: border-box;\n background: #fff;\n border-top: 1px solid #e5e7ebba;\n border-bottom: 1px solid #e5e7ebba;\n border-right: 1px solid #e5e7ebba;\n font-weight: 600;\n color: #374151;\n display: flex;\n align-items: center;\n }\n\n .header-cell__resize {\n position: absolute;\n right: -7px;\n top: 0;\n bottom: 0;\n width: 14px;\n cursor: col-resize;\n z-index: 10;\n }\n\n .header-cell--sortable {\n user-select: none;\n }\n\n .header-cell__label {\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n line-height: 48px;\n }\n\n .header-cell__sort {\n flex-grow: 1;\n display: flex;\n align-items: center;\n height: 100%;\n margin-left: 6px;\n cursor: pointer;\n }\n\n .header-cell__sort-arrow {\n width: 16px;\n height: 16px;\n color: #374151;\n stroke: currentColor;\n stroke-width: 1px;\n }\n\n .header-cell__sort-arrow--ghost {\n opacity: 0;\n color: #374151;\n transition: opacity 0.15s;\n }\n\n .header-cell--sortable:hover .header-cell__sort-arrow--ghost {\n opacity: 0.4;\n }\n\n .header-cell__sort-priority {\n font-size: 10px;\n font-weight: 600;\n color: #374151;\n line-height: 1;\n }\n\n .cell {\n background: #fff;\n border-bottom: 1px solid #e5e7eb;\n color: #1f2937;\n }\n\n .cell--align-center {\n text-align: center;\n }\n\n .cell--align-right {\n text-align: right;\n }\n\n .cell--sticky-left,\n .cell--sticky-right {\n position: sticky;\n z-index: 1;\n }\n\n .header-cell--sticky-left,\n .header-cell--sticky-right {\n position: sticky;\n z-index: 3;\n }\n\n .header-cell--align-center {\n text-align: center;\n }\n\n .header-cell--align-right {\n text-align: right;\n }\n\n .header-cell--sticky-left-last,\n .cell--sticky-left-last {\n border-right: 1px solid #d1d5db;\n }\n\n .header-cell--sticky-right-first,\n .cell--sticky-right-first {\n border-left: 1px solid #d1d5db;\n }\n\n /* -------------------------------------------------------------------------\n * Scroll Mode: Edge\n * Padding scrolls with content, table can reach edges when scrolling\n * ----------------------------------------------------------------------- */\n /* Only add right padding when no horizontal scroll is needed */\n :host(.kr-table--scroll-edge):not(.kr-table--scroll-horizontal-available) .table {\n padding-right: 24px;\n }\n\n :host(.kr-table--scroll-edge) .header-row .header-cell {\n border-top: 1px solid #e5e7eb;\n }\n\n :host(.kr-table--scroll-edge) .header-row .header-cell:first-child,\n :host(.kr-table--scroll-edge) .row .cell:first-child {\n padding-left: 24px;\n }\n\n :host(.kr-table--scroll-edge) .header-row .header-cell:last-child,\n :host(.kr-table--scroll-edge) .row .cell:last-child {\n padding-right: 24px;\n }\n\n :host(.kr-table--scroll-edge) .filter-row .filter-cell:first-child .filter-cell__input {\n padding-left: 24px;\n }\n\n :host(.kr-table--scroll-edge) .filter-row .filter-cell:last-child .filter-cell__input {\n padding-right: 52px;\n }\n\n /* -------------------------------------------------------------------------\n * Scroll Mode: Overlay\n * Fixed padding with overlay elements that hide content at edges\n * ----------------------------------------------------------------------- */\n :host(.kr-table--scroll-overlay) .content {\n padding-left: 24px;\n }\n\n .overlay-left,\n .overlay-right {\n display: none;\n position: absolute;\n top: 0;\n bottom: 0;\n width: 24px;\n z-index: 5;\n pointer-events: none;\n transition: box-shadow 0.15s ease;\n }\n\n :host(.kr-table--scroll-overlay) .overlay-left,\n :host(.kr-table--scroll-overlay) .overlay-right {\n display: block;\n }\n\n .overlay-left {\n left: 0;\n background: #fff;\n }\n\n .overlay-right {\n right: 0;\n background: #fff;\n }\n\n :host(.kr-table--scroll-overlay.kr-table--scroll-left-available:not(.kr-table--sticky-left)) .overlay-left {\n border-right: 1px solid #d1d5db54;\n }\n\n :host(.kr-table--scroll-overlay.kr-table--scroll-right-available:not(.kr-table--sticky-right)) .overlay-right {\n border-left: 1px solid #d1d5db54;\n }\n\n /* -------------------------------------------------------------------------\n * Status (Loading, Error, Empty)\n * ----------------------------------------------------------------------- */\n .status {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n font-weight: 400;\n color: #5f6368;\n pointer-events: none;\n }\n\n .status--error {\n color: #dc2626;\n }\n\n /* -------------------------------------------------------------------------\n * Filter Row\n * ----------------------------------------------------------------------- */\n .filter-row {\n display: contents;\n }\n\n .filter-cell {\n position: sticky;\n top: 48px;\n z-index: 2;\n height: 40px;\n padding: 0;\n display: flex;\n align-items: center;\n background: #fff;\n border-bottom: 1px solid #d1d5db;\n border-right: 1px solid #e5e7ebba;\n box-sizing: border-box;\n box-shadow: inset 0 0 0 0 #163052;\n transition: box-shadow 0.15s;\n }\n\n .filter-cell:focus-within {\n box-shadow: inset 0 0 0 1px #163052;\n }\n\n\n .filter-cell--sticky-left,\n .filter-cell--sticky-right {\n position: sticky;\n z-index: 3;\n }\n\n .filter-cell--sticky-right-first {\n border-left: 1px solid #d1d5db;\n }\n\n .filter-cell__wrapper {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n }\n\n .filter-cell__input {\n width: 100%;\n height: 100%;\n padding: 0 60px 0 16px;\n border: none;\n border-radius: 0;\n font-size: 14px;\n font-family: inherit;\n color: #111827;\n background: transparent;\n outline: none;\n }\n\n .filter-cell__input--invalid {\n border-color: #dc2626;\n }\n\n .filter-cell__input--invalid:focus {\n border-color: #dc2626;\n box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.1);\n }\n\n .filter-cell__input::placeholder {\n color: #9ca3af;\n font-size: 13px;\n }\n\n .filter-cell__clear {\n position: absolute;\n right: 36px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: #6b7280;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n }\n\n .filter-cell__clear:hover {\n background: #e5e7eb;\n color: #374151;\n }\n\n .filter-cell__clear svg {\n width: 16px;\n height: 16px;\n }\n\n .filter-cell__advanced {\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: #163052;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n }\n\n .filter-cell__advanced:hover {\n background: #e5e7eb;\n }\n\n .filter-cell__advanced svg {\n width: 16px;\n height: 16px;\n }\n\n .filter-cell__advanced--opened {\n background: #163052;\n color: #fff;\n }\n\n .filter-cell__advanced--opened:hover {\n background: #1a3a5f;\n color: #fff;\n }\n\n /* -------------------------------------------------------------------------\n * Filter Panel (Advanced)\n * ----------------------------------------------------------------------- */\n .filter-panel {\n position: fixed;\n min-width: 320px;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n z-index: 100;\n animation: filter-panel-fade-in 150ms ease-out;\n }\n\n @keyframes filter-panel-fade-in {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .filter-panel__content {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .filter-panel__actions {\n padding: 12px 16px;\n border-top: 1px solid #e5e7eb;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 12px;\n }\n\n\n .filter-panel__input {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n color: #111827;\n background: #fff;\n outline: none;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .filter-panel__input:focus {\n border-color: #163052;\n box-shadow: 0 0 0 2px rgba(22, 48, 82, 0.1);\n }\n\n .filter-panel__input::placeholder {\n color: #9ca3af;\n }\n\n .filter-panel__textarea {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n color: #111827;\n background: #fff;\n outline: none;\n resize: vertical;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .filter-panel__textarea:focus {\n border-color: #163052;\n box-shadow: 0 0 0 2px rgba(22, 48, 82, 0.1);\n }\n\n .filter-panel__textarea::placeholder {\n color: #9ca3af;\n }\n\n /* -------------------------------------------------------------------------\n * Bucket List\n * ----------------------------------------------------------------------- */\n .buckets {\n max-height: 280px;\n overflow-y: auto;\n padding: 8px 0;\n }\n\n .bucket {\n display: flex;\n align-items: center;\n gap: 16px;\n height: 32px;\n padding: 0 16px;\n cursor: pointer;\n transition: background 0.1s;\n }\n\n .bucket:hover {\n background: #f3f4f6;\n }\n\n .bucket__checkbox {\n width: 16px;\n height: 16px;\n border: 1.5px solid #9ca3af;\n border-radius: 3px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: all 0.15s;\n }\n\n .bucket__checkbox--checked {\n background: var(--kr-primary, #163052);\n border-color: var(--kr-primary, #163052);\n }\n\n .bucket__checkbox svg {\n width: 12px;\n height: 12px;\n color: white;\n }\n\n .bucket__label {\n flex: 1;\n font-size: 14px;\n color: #000;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .bucket__count {\n font-size: 14px;\n color: #000;\n flex-shrink: 0;\n }\n\n .bucket-empty {\n font-size: 14px;\n color: #000;\n padding: 16px;\n }\n\n /* Card variant — self-contained card with border, auto height, left-aligned search */\n :host(.kr-table--card) {\n height: auto;\n /* overflow: visible; */\n overflow: hidden;\n /* border: 1px solid #e5e7eb; */\n /* border-radius: 8px; */\n border: 1px solid #c6c6cd;\n border-radius: 12px;\n background: #fff;\n }\n\n .card-header {\n padding: 24px 24px 16px;\n }\n\n .card-header__title {\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n margin: 0;\n }\n\n .card-header__description {\n font-size: 14px;\n color: #1f2937;\n margin: 12px 0 0;\n }\n\n :host(.kr-table--card) .header {\n margin: 0 24px;\n }\n\n :host(.kr-table--card) .wrapper {\n flex: none;\n overflow: visible;\n min-height: 200px;\n }\n\n :host(.kr-table--card) .content {\n height: auto;\n }\n\n `];\n__decorate([\n state()\n], KRTable.prototype, \"_data\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_dataState\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_page\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_pageSize\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_totalItems\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_totalPages\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_searchQuery\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_canScrollLeft\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_canScrollRight\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_canScrollHorizontal\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_columnPickerOpen\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_filterPanelOpened\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_filterPanelTab\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_buckets\", void 0);\n__decorate([\n state()\n], KRTable.prototype, \"_sorts\", void 0);\n__decorate([\n property({ type: Object })\n], KRTable.prototype, \"def\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRTable.prototype, \"variant\", void 0);\nKRTable = __decorate([\n customElement('kr-table')\n], KRTable);\nexport { KRTable };\n//# sourceMappingURL=table.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * A circular loading indicator component that shows activity or ongoing processes.\n *\n * @example\n * ```html\n * <kr-spinner></kr-spinner>\n * <kr-spinner size=\"lg\"></kr-spinner>\n * <kr-spinner color=\"light\"></kr-spinner>\n * <kr-spinner color=\"#ff5500\"></kr-spinner>\n * ```\n */\nlet KRSpinner = class KRSpinner extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The size of the spinner. Can be 'sm', 'md', 'lg', 'xl', or any valid CSS size value (e.g., '100px', '2rem').\n */\n this.size = 'md';\n /**\n * The color of the spinner. Can be 'dark', 'light', or any valid CSS color value.\n */\n this.color = 'dark';\n }\n render() {\n var normalizedSize = '';\n var normalizedColor = '';\n if (this.size == 'sm') {\n normalizedSize = '16px';\n }\n else if (this.size == 'md') {\n normalizedSize = '24px';\n }\n else if (this.size == 'lg') {\n normalizedSize = '32px';\n }\n else if (this.size == 'xl') {\n normalizedSize = '48px';\n }\n else {\n normalizedSize = this.size;\n }\n if (this.color == 'dark') {\n normalizedColor = '#163052';\n }\n else if (this.color == 'light') {\n normalizedColor = '#ffffff';\n }\n else {\n normalizedColor = this.color;\n }\n return html `\n <svg\n class=\"spinner\"\n style=${`width: ${normalizedSize}; height: ${normalizedSize}; color: ${normalizedColor}`}\n viewBox=\"0 0 44 44\"\n role=\"status\"\n aria-label=\"Loading\"\n >\n <circle\n class=\"circle\"\n cx=\"22\"\n cy=\"22\"\n r=\"20\"\n fill=\"none\"\n stroke-width=\"4\"\n />\n </svg>\n `;\n }\n};\nKRSpinner.styles = css `\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .spinner {\n display: block;\n animation: spin 1.4s linear infinite;\n }\n\n .spinner .circle {\n animation: dash 1.4s ease-in-out infinite;\n stroke-dasharray: 80, 200;\n stroke-dashoffset: 0;\n }\n\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n @keyframes dash {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 100, 200;\n stroke-dashoffset: -15;\n }\n 100% {\n stroke-dasharray: 100, 200;\n stroke-dashoffset: -125;\n }\n }\n\n .circle {\n stroke: currentColor;\n stroke-linecap: round;\n }\n `;\n__decorate([\n property({ type: String, reflect: true })\n], KRSpinner.prototype, \"size\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRSpinner.prototype, \"color\", void 0);\nKRSpinner = __decorate([\n customElement('kr-spinner')\n], KRSpinner);\nexport { KRSpinner };\n//# sourceMappingURL=spinner.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * A linear loading indicator that shows activity or ongoing processes.\n *\n * @example\n * ```html\n * <kr-progress-bar></kr-progress-bar>\n * <kr-progress-bar color=\"light\"></kr-progress-bar>\n * <kr-progress-bar color=\"#ff5500\"></kr-progress-bar>\n * <kr-progress-bar color=\"#ff5500\" trackColor=\"#eeeeee\"></kr-progress-bar>\n * ```\n */\nlet KRProgressBar = class KRProgressBar extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The color of the progress bar. Can be 'dark', 'light', or any valid CSS color value.\n */\n this.color = 'dark';\n }\n render() {\n let normalizedColor = '';\n let normalizedTrackColor = '';\n if (this.color === 'dark') {\n normalizedColor = '#163052';\n }\n else if (this.color === 'light') {\n normalizedColor = '#ffffff';\n }\n else {\n normalizedColor = this.color;\n }\n if (this.trackColor) {\n normalizedTrackColor = this.trackColor;\n }\n else if (this.color === 'light') {\n normalizedTrackColor = '#ffffff4d';\n }\n else {\n normalizedTrackColor = '#0000001a';\n }\n return html `\n <div\n class=\"progress-bar\"\n style=${`background: ${normalizedTrackColor}`}\n role=\"status\"\n aria-label=\"Loading\"\n >\n <div class=\"fill\" style=${`background: ${normalizedColor}`}></div>\n </div>\n `;\n }\n};\nKRProgressBar.styles = css `\n :host {\n display: block;\n width: 100%;\n overflow: hidden;\n }\n\n .progress-bar {\n position: relative;\n height: 4px;\n border-radius: 2px;\n overflow: hidden;\n }\n\n /* Fill (primary indicator) */\n .fill {\n position: absolute;\n top: 0;\n height: 100%;\n width: 40%;\n border-radius: inherit;\n animation: indeterminate 1.5s ease-in-out infinite;\n }\n\n @keyframes indeterminate {\n 0% {\n left: -40%;\n }\n 100% {\n left: 100%;\n }\n }\n `;\n__decorate([\n property({ type: String, reflect: true })\n], KRProgressBar.prototype, \"color\", void 0);\n__decorate([\n property({ type: String, reflect: true })\n], KRProgressBar.prototype, \"trackColor\", void 0);\nKRProgressBar = __decorate([\n customElement('kr-progress-bar')\n], KRProgressBar);\nexport { KRProgressBar };\n//# sourceMappingURL=progress-bar.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar KRFilePreview_1;\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../button/button.js';\n/**\n * A full-screen file preview overlay.\n *\n * Supports image files with zoom/pan, PDFs via iframe, and a download\n * fallback for other file types. Use the static `open()` method to show\n * the preview imperatively.\n *\n * @fires close - Fired when the preview is closed\n * @fires download - Fired when the download button is clicked. Detail: `{ src, name }`\n *\n * @example\n * ```ts\n * import { KRFilePreview } from '@kodaris/krubble-components/file-preview';\n *\n * KRFilePreview.open({ src: '/files/photo.png', name: 'photo.png' });\n * ```\n */\nlet KRFilePreview = KRFilePreview_1 = class KRFilePreview extends LitElement {\n constructor() {\n super(...arguments);\n this._zoom = 100;\n this._panX = 0;\n this._panY = 0;\n this._dragging = false;\n this._dragStartX = 0;\n this._dragStartY = 0;\n this._panStartX = 0;\n this._panStartY = 0;\n /** URL of the file to preview */\n this.src = '';\n /** Display name shown in the toolbar */\n this.name = '';\n this._zoomLevel = 100;\n this._textContent = null;\n this._handleKeydown = (e) => {\n if (e.key === 'Escape') {\n this._close();\n }\n };\n this._handleDragMove = (e) => {\n if (!this._dragging) {\n return;\n }\n this._panX = this._panStartX + (e.clientX - this._dragStartX);\n this._panY = this._panStartY + (e.clientY - this._dragStartY);\n this.requestUpdate();\n };\n this._handleDragEnd = () => {\n this._dragging = false;\n document.removeEventListener('mousemove', this._handleDragMove);\n document.removeEventListener('mouseup', this._handleDragEnd);\n };\n }\n /**\n * Open a file preview overlay.\n * @param options - The file source URL and display name\n * @returns The created file-preview element\n */\n static open(options) {\n if (this._activePreview) {\n this._activePreview._close();\n }\n const preview = document.createElement('kr-file-preview');\n preview.src = options.src;\n preview.name = options.name;\n document.body.appendChild(preview);\n this._activePreview = preview;\n return preview;\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('keydown', this._handleKeydown);\n if (this._isText()) {\n this._loadTextContent();\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._handleKeydown);\n }\n _close() {\n this.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }));\n if (KRFilePreview_1._activePreview === this) {\n KRFilePreview_1._activePreview = null;\n }\n this.remove();\n }\n _handleDownload() {\n this.dispatchEvent(new CustomEvent('download', {\n bubbles: true,\n composed: true,\n detail: { src: this.src, name: this.name },\n }));\n }\n _handleZoomIn() {\n this._zoomLevel = Math.min(this._zoomLevel + 25, 300);\n if (this._zoomLevel <= 100) {\n this._panX = 0;\n this._panY = 0;\n }\n }\n _handleZoomOut() {\n this._zoomLevel = Math.max(this._zoomLevel - 25, 25);\n if (this._zoomLevel <= 100) {\n this._panX = 0;\n this._panY = 0;\n }\n }\n _handleZoomReset() {\n this._zoomLevel = 100;\n this._panX = 0;\n this._panY = 0;\n }\n _handleDragStart(e) {\n if (this._zoomLevel <= 100) {\n return;\n }\n e.preventDefault();\n this._dragging = true;\n this._dragStartX = e.clientX;\n this._dragStartY = e.clientY;\n this._panStartX = this._panX;\n this._panStartY = this._panY;\n document.addEventListener('mousemove', this._handleDragMove);\n document.addEventListener('mouseup', this._handleDragEnd);\n }\n _handleBackdropClick(e) {\n if (e.target === e.currentTarget) {\n this._close();\n }\n }\n _getExtension() {\n return (this.name || '').split('.').pop()?.toLowerCase() || '';\n }\n _isImage() {\n return ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'].includes(this._getExtension());\n }\n _isPdf() {\n return this._getExtension() === 'pdf';\n }\n _isText() {\n return ['csv', 'txt', 'json', 'xml', 'log', 'md', 'yml', 'yaml', 'ini', 'cfg', 'conf', 'env', 'sh', 'bat'].includes(this._getExtension());\n }\n _isCsv() {\n return this._getExtension() === 'csv';\n }\n _loadTextContent() {\n fetch(this.src)\n .then(response => response.text())\n .then(text => {\n if (this._isCsv()) {\n this._textContent = this._formatCsv(text);\n }\n else {\n this._textContent = text;\n }\n })\n .catch(() => {\n this._textContent = 'Failed to load file content.';\n });\n }\n _formatCsv(text) {\n const lines = text.trim().split('\\n');\n if (!lines.length) {\n return text;\n }\n const rows = lines.map(line => line.split(',').map(cell => cell.trim()));\n const colCount = Math.max(...rows.map(row => row.length));\n // Find max width per column\n const colWidths = [];\n for (let c = 0; c < colCount; c++) {\n let max = 0;\n for (const row of rows) {\n const len = (row[c] || '').length;\n if (len > max) {\n max = len;\n }\n }\n colWidths.push(max);\n }\n // Pad each cell and join\n return rows.map(row => {\n return row.map((cell, i) => cell.padEnd(colWidths[i] || 0)).join(' ');\n }).join('\\n');\n }\n _getFallbackIconClass(ext) {\n if (['doc', 'docx', 'rtf', 'txt'].includes(ext)) {\n return 'fallback__icon--doc';\n }\n if (['xls', 'xlsx', 'csv'].includes(ext)) {\n return 'fallback__icon--xls';\n }\n if (['zip', 'rar', '7z', 'gz', 'tar'].includes(ext)) {\n return 'fallback__icon--zip';\n }\n return 'fallback__icon--default';\n }\n _getFallbackIcon(ext) {\n if (['doc', 'docx', 'rtf', 'txt'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6zm2-6h8v2H8v-2zm0-4h8v2H8v-2zm0 8h5v2H8v-2z\"/></svg>`;\n }\n if (['xls', 'xlsx', 'csv'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 2v3H5V5h14zm0 5v4H5v-4h14zM5 19v-3h14v3H5zm2-8h4v2H7v-2zm0 5h4v2H7v-2z\"/></svg>`;\n }\n if (['zip', 'rar', '7z', 'gz', 'tar'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-8-4h2v2h-2v-2zm0-4h2v2h-2v-2zm-2 2h2v2h-2v-2z\"/></svg>`;\n }\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\"/></svg>`;\n }\n render() {\n let content;\n if (this._isImage()) {\n const scale = this._zoomLevel / 100;\n const translateX = this._panX / scale;\n const translateY = this._panY / scale;\n const cursor = this._zoomLevel > 100 ? 'grab' : 'default';\n content = html `<img\n class=\"body__image\"\n src=\"${this.src}\"\n alt=\"${this.name}\"\n style=\"transform: scale(${scale}) translate(${translateX}px, ${translateY}px); cursor: ${cursor}\"\n @mousedown=${this._handleDragStart}\n />`;\n }\n else if (this._isPdf()) {\n content = html `<iframe class=\"body__iframe\" src=\"${this.src}\"></iframe>`;\n }\n else if (this._isText()) {\n if (this._textContent === null) {\n content = html `<div class=\"body__text-loading\">Loading...</div>`;\n }\n else {\n content = html `<pre class=\"body__text\">${this._textContent}</pre>`;\n }\n }\n else {\n const ext = this._getExtension();\n content = html `\n <div class=\"fallback\">\n <div class=\"fallback__icon ${this._getFallbackIconClass(ext)}\">\n ${this._getFallbackIcon(ext)}\n </div>\n <div class=\"fallback__name\">${this.name}</div>\n <div class=\"fallback__hint\">No preview available for this file type</div>\n <kr-button color=\"primary\" @click=${this._handleDownload}>\n <svg class=\"fallback__btn\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M19 9h-4V3H9v6H5l7 7 7-7zm-8 2V5h2v6h1.17L12 13.17 9.83 11H11zm-6 7h14v2H5v-2z\"/></svg>\n Download\n </kr-button>\n </div>\n `;\n }\n return html `\n <div class=\"toolbar\">\n <div class=\"toolbar__name\">${this.name}</div>\n <div class=\"toolbar__controls\">\n ${this._isImage() ? html `\n <button class=\"toolbar__btn\" @click=${this._handleZoomOut} title=\"Zoom out\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7V9z\"/></svg>\n </button>\n <div class=\"toolbar__zoom-label\" @click=${this._handleZoomReset}>${this._zoomLevel}%</div>\n <button class=\"toolbar__btn\" @click=${this._handleZoomIn} title=\"Zoom in\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm-2-5h2V7h1v2h2v1h-2v2H9v-2H7V9z\"/></svg>\n </button>\n <div class=\"toolbar__separator\"></div>\n ` : nothing}\n <button class=\"toolbar__btn\" @click=${this._handleDownload} title=\"Download\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M19 9h-4V3H9v6H5l7 7 7-7zm-8 2V5h2v6h1.17L12 13.17 9.83 11H11zm-6 7h14v2H5v-2z\"/></svg>\n </button>\n <button class=\"toolbar__btn\" @click=${() => this._close()} title=\"Close\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>\n </button>\n </div>\n </div>\n <div class=\"body\" @click=${this._handleBackdropClick}>\n ${content}\n </div>\n `;\n }\n};\nKRFilePreview.styles = css `\n *,\n *::after,\n *::before,\n :host {\n box-sizing: border-box;\n }\n\n :host {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.85);\n display: flex;\n flex-direction: column;\n z-index: 10000;\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n height: 56px;\n padding: 0 24px;\n flex-shrink: 0;\n }\n\n .toolbar__name {\n color: white;\n font-size: 16px;\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-right: auto;\n }\n\n .toolbar__controls {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .toolbar__btn {\n width: 40px;\n height: 40px;\n border: none;\n border-radius: 50%;\n background: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n }\n\n .toolbar__btn:hover {\n background: rgba(255, 255, 255, 0.15);\n }\n\n .toolbar__btn svg {\n width: 24px;\n height: 24px;\n fill: white;\n }\n\n .toolbar__zoom-label {\n color: white;\n font-size: 13px;\n min-width: 40px;\n text-align: center;\n user-select: none;\n cursor: pointer;\n }\n\n .toolbar__separator {\n width: 1px;\n height: 24px;\n background: rgba(255, 255, 255, 0.25);\n margin: 0 8px;\n }\n\n .body {\n flex: 1;\n overflow: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 36px 36px 36px;\n }\n\n .body__image {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n transition: transform 0.15s ease;\n transform-origin: center center;\n }\n\n .body__iframe {\n width: 80vw;\n height: 100%;\n border: 1px solid #5e5e5e;\n border-radius: 4px;\n background: white;\n }\n\n .body__text {\n width: 80vw;\n max-height: 100%;\n overflow: auto;\n background: white;\n color: #000;\n border-radius: 4px;\n padding: 24px;\n font-family: monospace;\n font-size: 14px;\n line-height: 1.6;\n white-space: pre;\n margin: 0;\n tab-size: 4;\n }\n\n .body__text-loading {\n color: #888;\n font-style: italic;\n font-family: 'Inter', sans-serif;\n font-size: 14px;\n }\n\n .fallback {\n background: white;\n border-radius: 12px;\n padding: 48px 64px;\n text-align: center;\n color: #000;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n }\n\n .fallback__icon {\n width: 72px;\n height: 72px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .fallback__icon svg {\n width: 36px;\n height: 36px;\n }\n\n .fallback__icon--doc { background: #dbeafe; color: #2563eb; }\n .fallback__icon--xls { background: #d1fae5; color: #16a34a; }\n .fallback__icon--zip { background: #fef3c7; color: #b45309; }\n .fallback__icon--default { background: #f4f5f7; color: #555; }\n\n .fallback__name {\n font-size: 18px;\n font-weight: 600;\n max-width: 320px;\n word-break: break-all;\n }\n\n .fallback__hint {\n font-size: 14px;\n color: black;\n margin-bottom: 6px;\n }\n\n .fallback__btn svg {\n width: 18px;\n height: 18px;\n fill: currentColor;\n }\n `;\nKRFilePreview._activePreview = null;\n__decorate([\n property({ type: String })\n], KRFilePreview.prototype, \"src\", void 0);\n__decorate([\n property({ type: String })\n], KRFilePreview.prototype, \"name\", void 0);\n__decorate([\n state()\n], KRFilePreview.prototype, \"_zoomLevel\", void 0);\n__decorate([\n state()\n], KRFilePreview.prototype, \"_textContent\", void 0);\nKRFilePreview = KRFilePreview_1 = __decorate([\n customElement('kr-file-preview')\n], KRFilePreview);\nexport { KRFilePreview };\n//# sourceMappingURL=file-preview.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { KRFilePreview } from '../file-preview/file-preview.js';\n/**\n * A file list component that displays files with extension-based icons,\n * download/delete actions, and built-in file preview.\n *\n * Clicking a file name opens a full-screen preview via `KRFilePreview.open()`.\n *\n * @fires file-click - Fired when a file name is clicked. Detail: `{ file }`\n * @fires download - Fired when the download icon is clicked. Detail: `{ file }`\n * @fires delete - Fired when the delete icon is clicked. Detail: `{ file }`\n *\n * @example\n * ```ts\n * import '@kodaris/krubble-components/file-list';\n *\n * const list = document.querySelector('kr-file-list');\n * list.files = [\n * { name: 'photo.png', url: '/files/photo.png', date: '2024-01-15' },\n * { name: 'report.pdf', url: '/files/report.pdf', date: '2024-01-10' },\n * ];\n * ```\n */\nlet KRFileList = class KRFileList extends LitElement {\n constructor() {\n super(...arguments);\n /** Array of file objects to display */\n this.files = [];\n /** Message displayed when the file list is empty */\n this.emptyMessage = 'No files';\n }\n _handleFileClick(file) {\n this.dispatchEvent(new CustomEvent('file-click', {\n bubbles: true,\n composed: true,\n detail: { file },\n }));\n if (file.url) {\n const preview = KRFilePreview.open({ src: file.url, name: file.name });\n preview.addEventListener('download', () => {\n this._handleDownload(file);\n });\n }\n }\n _handleDownload(file) {\n this.dispatchEvent(new CustomEvent('download', {\n bubbles: true,\n composed: true,\n detail: { file },\n }));\n }\n _handleDelete(file) {\n this.dispatchEvent(new CustomEvent('delete', {\n bubbles: true,\n composed: true,\n detail: { file },\n }));\n }\n _getExtension(name) {\n return name.split('.').pop()?.toLowerCase() || '';\n }\n _getExtClass(ext) {\n if (['pdf'].includes(ext)) {\n return 'file-list__ext--pdf';\n }\n if (['doc', 'docx', 'rtf', 'txt'].includes(ext)) {\n return 'file-list__ext--doc';\n }\n if (['xls', 'xlsx', 'csv'].includes(ext)) {\n return 'file-list__ext--xls';\n }\n if (['zip', 'rar', '7z', 'gz', 'tar'].includes(ext)) {\n return 'file-list__ext--zip';\n }\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'].includes(ext)) {\n return 'file-list__ext--img';\n }\n return 'file-list__ext--default';\n }\n _getExtIcon(ext) {\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86-3 3.87L9 13.14 6 17h12l-3.86-5.14z\"/></svg>`;\n }\n if (['pdf'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-8.5 7.5c0 .83-.67 1.5-1.5 1.5H9v2H7.5V7H10c.83 0 1.5.67 1.5 1.5v1zm5 2c0 .83-.67 1.5-1.5 1.5h-2.5V7H15c.83 0 1.5.67 1.5 1.5v3zm4-3H19v1h1.5V11H19v2h-1.5V7h3v1.5zM9 9.5h1v-1H9v1zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm10 5.5h1v-3h-1v3z\"/></svg>`;\n }\n if (['doc', 'docx', 'rtf', 'txt'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6zm2-6h8v2H8v-2zm0-4h8v2H8v-2zm0 8h5v2H8v-2z\"/></svg>`;\n }\n if (['xls', 'xlsx', 'csv'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 2v3H5V5h14zm0 5v4H5v-4h14zM5 19v-3h14v3H5zm2-8h4v2H7v-2zm0 5h4v2H7v-2z\"/></svg>`;\n }\n if (['zip', 'rar', '7z', 'gz', 'tar'].includes(ext)) {\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-8-4h2v2h-2v-2zm0-4h2v2h-2v-2zm-2 2h2v2h-2v-2z\"/></svg>`;\n }\n return html `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\"/></svg>`;\n }\n render() {\n if (!this.files.length) {\n return html `<div class=\"file-list__empty\">${this.emptyMessage}</div>`;\n }\n return html `\n <div class=\"file-list\">\n ${this.files.map(file => {\n const ext = this._getExtension(file.name);\n const metaText = file.meta || file.date || '';\n return html `\n <div class=\"file-list__item\">\n <div class=\"file-list__ext ${this._getExtClass(ext)}\">${this._getExtIcon(ext)}</div>\n <div class=\"file-list__info\">\n <a class=\"file-list__name\" @click=${() => this._handleFileClick(file)}>${file.name}</a>\n ${metaText ? html `<div class=\"file-list__meta\">${metaText}</div>` : ''}\n </div>\n <div class=\"file-list__actions\">\n <svg class=\"file-list__action\" @click=${() => this._handleDownload(file)} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" title=\"Download\"><path d=\"M19 9h-4V3H9v6H5l7 7 7-7zm-8 2V5h2v6h1.17L12 13.17 9.83 11H11zm-6 7h14v2H5v-2z\"/></svg>\n <svg class=\"file-list__action file-list__action--delete\" @click=${() => this._handleDelete(file)} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" title=\"Delete\"><path d=\"M16 9v10H8V9h8m-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z\"/></svg>\n </div>\n </div>\n `;\n })}\n </div>\n `;\n }\n};\nKRFileList.styles = css `\n *,\n *::after,\n *::before,\n :host {\n box-sizing: border-box;\n }\n\n :host {\n display: block;\n }\n\n .file-list {\n display: flex;\n flex-direction: column;\n }\n\n .file-list__item {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px 20px;\n background: white;\n transition: background 0.15s;\n }\n\n .file-list__item:not(:last-child) {\n border-bottom: 1px solid #eeeff1;\n }\n\n .file-list__item:hover {\n background: #f8f9fa;\n }\n\n .file-list__ext {\n width: 36px;\n height: 36px;\n flex-shrink: 0;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n }\n\n .file-list__ext svg {\n width: 20px;\n height: 20px;\n }\n\n .file-list__ext--img { background: #fde8e8; color: #d93025; }\n .file-list__ext--pdf { background: #fde8e8; color: #c0392b; }\n .file-list__ext--doc { background: #dbeafe; color: #2563eb; }\n .file-list__ext--xls { background: #d1fae5; color: #16a34a; }\n .file-list__ext--zip { background: #fef3c7; color: #b45309; }\n .file-list__ext--default { background: #f4f5f7; color: #555; }\n\n .file-list__info {\n flex: 1;\n min-width: 0;\n }\n\n .file-list__name {\n font-weight: 500;\n color: #000;\n text-decoration: none;\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n font-size: 14px;\n }\n\n .file-list__name:hover {\n color: #000;\n text-decoration: underline;\n }\n\n .file-list__meta {\n font-size: 13px;\n color: #000;\n margin-top: 6px;\n }\n\n .file-list__actions {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n }\n\n .file-list__action {\n width: 24px;\n height: 24px;\n fill: #666;\n cursor: pointer;\n transition: fill 0.15s;\n }\n\n .file-list__action:hover {\n fill: #000;\n }\n\n\n .file-list__empty {\n color: #000;\n font-size: 14px;\n font-style: italic;\n padding: 20px;\n }\n `;\n__decorate([\n property({ type: Array })\n], KRFileList.prototype, \"files\", void 0);\n__decorate([\n property({ type: String, attribute: 'empty-message' })\n], KRFileList.prototype, \"emptyMessage\", void 0);\nKRFileList = __decorate([\n customElement('kr-file-list')\n], KRFileList);\nexport { KRFileList };\n//# sourceMappingURL=file-list.js.map","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>o,n=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,e={HTML:1,SVG:2,MATHML:3},l=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,d=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,f=o=>o?._$litDirective$,r=o=>void 0===o.strings,s=()=>document.createComment(\"\"),v=(o,n,e)=>{const l=o._$AA.parentNode,d=void 0===n?o._$AB:n._$AA;if(void 0===e){const i=l.insertBefore(s(),d),n=l.insertBefore(s(),d);e=new t(i,n,o,o.options)}else{const t=e._$AB.nextSibling,n=e._$AM,c=n!==o;if(c){let t;e._$AQ?.(o),e._$AM=o,void 0!==e._$AP&&(t=o._$AU)!==n._$AU&&e._$AP(t)}if(t!==d||c){let o=e._$AA;for(;o!==t;){const t=i(o).nextSibling;i(l).insertBefore(o,d),o=t}}}return e},u=(o,t,i=o)=>(o._$AI(t,i),o),m={},p=(o,t=m)=>o._$AH=t,M=o=>o._$AH,h=o=>{o._$AR(),o._$AA.remove()},j=o=>{o._$AR()};export{e as TemplateResultType,j as clearPart,M as getCommittedValue,f as getDirectiveClass,v as insertPart,d as isCompiledTemplateResult,c as isDirectiveResult,n as isPrimitive,r as isSingleExpression,l as isTemplateResult,h as removePart,u as setChildPartValue,p as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{noChange as r,nothing as e}from\"../lit-html.js\";import{directive as i,Directive as t,PartType as n}from\"../directive.js\";import{isSingleExpression as o,setCommittedValue as s}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const l=i(class extends t{constructor(r){if(super(r),r.type!==n.PROPERTY&&r.type!==n.ATTRIBUTE&&r.type!==n.BOOLEAN_ATTRIBUTE)throw Error(\"The `live` directive is not allowed on child or event bindings\");if(!o(r))throw Error(\"`live` bindings can only contain a single expression\")}render(r){return r}update(i,[t]){if(t===r||t===e)return t;const o=i.element,l=i.name;if(i.type===n.PROPERTY){if(t===o[l])return r}else if(i.type===n.BOOLEAN_ATTRIBUTE){if(!!t===o.hasAttribute(l))return r}else if(i.type===n.ATTRIBUTE&&o.getAttribute(l)===t+\"\")return r;return s(i),t}});export{l as live};\n//# sourceMappingURL=live.js.map\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\n/**\n * A text field component that works with native browser forms.\n *\n * Uses ElementInternals for form association, allowing the component\n * to participate in form submission, validation, and reset.\n *\n * Native input and change events bubble up from the inner input element.\n */\nlet KRTextField = class KRTextField extends LitElement {\n constructor() {\n super();\n /**\n * The input label text\n */\n this.label = '';\n /**\n * The input name for form submission\n */\n this.name = '';\n /**\n * The current value\n */\n this.value = '';\n /**\n * Placeholder text\n */\n this.placeholder = '';\n /**\n * Input type (text, email, password, tel, url, search)\n */\n this.type = 'text';\n /**\n * Whether the field is required\n */\n this.required = false;\n /**\n * Whether the field is disabled\n */\n this.disabled = false;\n /**\n * Whether the field is readonly\n */\n this.readonly = false;\n /**\n * Autocomplete attribute value\n */\n this.autocomplete = '';\n /**\n * Helper text shown below the input\n */\n this.hint = '';\n this._touched = false;\n this._dirty = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n // Form-associated custom element callbacks\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n get willValidate() {\n return this._internals.willValidate;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._touched = false;\n this._dirty = false;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n }\n _updateValidity() {\n if (this._input) {\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n }\n }\n _handleInput(e) {\n this.value = e.target.value;\n this._dirty = true;\n this._internals.setFormValue(this.value);\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n }\n _handleChange(e) {\n this.value = e.target.value;\n this._internals.setFormValue(this.value);\n }\n _handleBlur() {\n this._touched = true;\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n }\n render() {\n let validationMessage = '';\n if (this._touched && this._input && !this._input.validity.valid) {\n validationMessage = this._input.validationMessage;\n }\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label for=\"input\">\n ${this.label}\n ${this.required ? html `<span class=\"required\" aria-hidden=\"true\">*</span>` : ''}\n </label>\n `\n : ''}\n <input\n id=\"input\"\n class=${classMap({\n 'input--invalid': this._touched && this._input && !this._input.validity.valid\n })}\n type=${this.type}\n name=${this.name}\n .value=${live(this.value)}\n placeholder=${this.placeholder}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n minlength=${ifDefined(this.minlength)}\n maxlength=${ifDefined(this.maxlength)}\n pattern=${ifDefined(this.pattern)}\n autocomplete=${ifDefined(this.autocomplete || undefined)}\n @input=${this._handleInput}\n @change=${this._handleChange}\n @blur=${this._handleBlur}\n />\n ${validationMessage\n ? html `<div class=\"validation-message\">${validationMessage}</div>`\n : this.hint\n ? html `<div class=\"hint\">${this.hint}</div>`\n : ''}\n </div>\n `;\n }\n // Public methods for programmatic control\n focus() {\n this._input?.focus();\n }\n blur() {\n this._input?.blur();\n }\n select() {\n this._input?.select();\n }\n};\nKRTextField.styles = css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-text-field-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n input {\n font-family: inherit;\n font-size: 14px;\n padding: 10px 12px;\n border: 1px solid var(--kr-text-field-border-color, #0000003d);\n border-radius: 8px;\n background-color: var(--kr-text-field-bg, #fff);\n color: var(--kr-text-field-color, #111827);\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n input:focus {\n outline: none;\n border-color: var(--kr-text-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-text-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n input:disabled {\n background-color: var(--kr-text-field-disabled-bg, #f3f4f6);\n color: var(--kr-text-field-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n input::placeholder {\n color: var(--kr-text-field-placeholder-color, #9ca3af);\n }\n\n input.input--invalid {\n border-color: var(--kr-text-field-error-border-color, #ef4444);\n }\n\n input.input--invalid:focus {\n box-shadow: 0 0 0 3px var(--kr-text-field-error-ring-color, rgba(239, 68, 68, 0.1));\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-text-field-error-color, #ef4444);\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-text-field-helper-color, #6b7280);\n }\n `;\n// Enable form association\nKRTextField.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"value\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"type\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextField.prototype, \"required\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextField.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextField.prototype, \"readonly\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextField.prototype, \"minlength\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextField.prototype, \"maxlength\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"pattern\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"autocomplete\", void 0);\n__decorate([\n property({ type: String })\n], KRTextField.prototype, \"hint\", void 0);\n__decorate([\n query('input')\n], KRTextField.prototype, \"_input\", void 0);\n__decorate([\n state()\n], KRTextField.prototype, \"_touched\", void 0);\n__decorate([\n state()\n], KRTextField.prototype, \"_dirty\", void 0);\nKRTextField = __decorate([\n customElement('kr-text-field')\n], KRTextField);\nexport { KRTextField };\n//# sourceMappingURL=text-field.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\n/**\n * A textarea component that works with native browser forms.\n *\n * Uses ElementInternals for form association, allowing the component\n * to participate in form submission, validation, and reset.\n *\n * Native input and change events bubble up from the inner textarea element.\n *\n * @element kr-textarea-field\n */\nlet KRTextareaField = class KRTextareaField extends LitElement {\n constructor() {\n super();\n /**\n * The textarea label text\n */\n this.label = '';\n /**\n * The textarea name for form submission\n */\n this.name = '';\n /**\n * The current value\n */\n this.value = '';\n /**\n * Placeholder text\n */\n this.placeholder = '';\n /**\n * Whether the field is required\n */\n this.required = false;\n /**\n * Whether the field is disabled\n */\n this.disabled = false;\n /**\n * Whether the field is readonly\n */\n this.readonly = false;\n /**\n * Number of visible text lines\n */\n this.rows = 3;\n /**\n * Autocomplete attribute value\n */\n this.autocomplete = '';\n /**\n * Helper text shown below the textarea\n */\n this.hint = '';\n this._touched = false;\n this._dirty = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n // Form-associated custom element callbacks\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n get willValidate() {\n return this._internals.willValidate;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._touched = false;\n this._dirty = false;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n }\n _updateValidity() {\n if (this._textarea) {\n this._internals.setValidity(this._textarea.validity, this._textarea.validationMessage);\n }\n }\n _handleInput(e) {\n this.value = e.target.value;\n this._dirty = true;\n this._internals.setFormValue(this.value);\n this._internals.setValidity(this._textarea.validity, this._textarea.validationMessage);\n }\n _handleChange(e) {\n this.value = e.target.value;\n this._internals.setFormValue(this.value);\n }\n _handleBlur() {\n this._touched = true;\n this._internals.setValidity(this._textarea.validity, this._textarea.validationMessage);\n }\n render() {\n let validationMessage = '';\n if (this._touched && this._textarea && !this._textarea.validity.valid) {\n validationMessage = this._textarea.validationMessage;\n }\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label for=\"textarea\">\n ${this.label}\n ${this.required ? html `<span class=\"required\" aria-hidden=\"true\">*</span>` : nothing}\n </label>\n `\n : nothing}\n <textarea\n id=\"textarea\"\n class=${classMap({\n 'textarea--invalid': this._touched && this._textarea && !this._textarea.validity.valid\n })}\n name=${this.name}\n .value=${live(this.value)}\n placeholder=${this.placeholder}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n rows=${this.rows}\n cols=${ifDefined(this.cols)}\n minlength=${ifDefined(this.minlength)}\n maxlength=${ifDefined(this.maxlength)}\n autocomplete=${ifDefined(this.autocomplete || undefined)}\n @input=${this._handleInput}\n @change=${this._handleChange}\n @blur=${this._handleBlur}\n ></textarea>\n ${validationMessage\n ? html `<div class=\"validation-message\">${validationMessage}</div>`\n : this.hint\n ? html `<div class=\"hint\">${this.hint}</div>`\n : nothing}\n </div>\n `;\n }\n // Public methods for programmatic control\n focus() {\n this._textarea?.focus();\n }\n blur() {\n this._textarea?.blur();\n }\n select() {\n this._textarea?.select();\n }\n};\nKRTextareaField.styles = css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-textarea-field-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n textarea {\n font-family: inherit;\n font-size: 14px;\n line-height: 1.5;\n padding: 10px 12px;\n border: 1px solid var(--kr-textarea-field-border-color, #0000003d);\n border-radius: 8px;\n background-color: var(--kr-textarea-field-bg, #fff);\n color: var(--kr-textarea-field-color, #111827);\n transition: border-color 0.2s, box-shadow 0.2s;\n min-height: 2.5rem;\n resize: vertical;\n }\n\n textarea:focus {\n outline: none;\n border-color: var(--kr-textarea-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-textarea-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n textarea:disabled {\n background-color: var(--kr-textarea-field-disabled-bg, #f3f4f6);\n color: var(--kr-textarea-field-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n textarea::placeholder {\n color: var(--kr-textarea-field-placeholder-color, #9ca3af);\n }\n\n textarea.textarea--invalid {\n border-color: var(--kr-textarea-field-error-border-color, #ef4444);\n }\n\n textarea.textarea--invalid:focus {\n box-shadow: 0 0 0 3px var(--kr-textarea-field-error-ring-color, rgba(239, 68, 68, 0.1));\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-textarea-field-error-color, #ef4444);\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-textarea-field-helper-color, #6b7280);\n }\n `;\n// Enable form association\nKRTextareaField.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"value\", void 0);\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextareaField.prototype, \"required\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextareaField.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRTextareaField.prototype, \"readonly\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextareaField.prototype, \"rows\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextareaField.prototype, \"cols\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextareaField.prototype, \"minlength\", void 0);\n__decorate([\n property({ type: Number })\n], KRTextareaField.prototype, \"maxlength\", void 0);\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"autocomplete\", void 0);\n__decorate([\n property({ type: String })\n], KRTextareaField.prototype, \"hint\", void 0);\n__decorate([\n query('textarea')\n], KRTextareaField.prototype, \"_textarea\", void 0);\n__decorate([\n state()\n], KRTextareaField.prototype, \"_touched\", void 0);\n__decorate([\n state()\n], KRTextareaField.prototype, \"_dirty\", void 0);\nKRTextareaField = __decorate([\n customElement('kr-textarea-field')\n], KRTextareaField);\nexport { KRTextareaField };\n//# sourceMappingURL=textarea-field.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n/**\n * A read-only field component that displays a label and value.\n *\n * @element kr-detail-field\n */\nlet KRDetailField = class KRDetailField extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * The field label text\n */\n this.label = '';\n /**\n * The value to display\n */\n this.value = '';\n }\n render() {\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `<label>${this.label}</label>`\n : nothing}\n <div class=\"value\">${this.value}</div>\n </div>\n `;\n }\n};\nKRDetailField.styles = css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .value {\n font-size: 14px;\n color: black;\n }\n `;\n__decorate([\n property({ type: String })\n], KRDetailField.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRDetailField.prototype, \"value\", void 0);\nKRDetailField = __decorate([\n customElement('kr-detail-field')\n], KRDetailField);\nexport { KRDetailField };\n//# sourceMappingURL=detail-field.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { live } from 'lit/directives/live.js';\n/**\n * @element kr-auto-suggest\n *\n * @property {string} label - Label text for the input\n * @property {string} name - Name for form submission\n * @property {string} value - Current input value\n * @property {string} placeholder - Placeholder text\n * @property {boolean} disabled - Whether the input is disabled\n * @property {boolean} readonly - Whether the input is readonly\n * @property {boolean} required - Whether the input is required\n * @property {string} hint - Helper text displayed below the input\n * @property {KRAutoSuggestOption[]} options - Array of suggestion options\n * @property {Function} fetch - Function that returns a promise of options\n *\n * @fires change - Fired when the input value changes\n * @fires select - Fired when a suggestion is selected\n *\n * @slot - Not used\n */\nlet KRAutoSuggest = class KRAutoSuggest extends LitElement {\n constructor() {\n super();\n this._requestId = 0;\n this._handleDocumentClick = (e) => {\n const path = e.composedPath();\n if (!path.includes(this)) {\n this._isOpen = false;\n }\n };\n this.label = '';\n this.name = '';\n this.value = '';\n this.placeholder = '';\n this.disabled = false;\n this.readonly = false;\n this.required = false;\n this.hint = '';\n this.options = [];\n this.fetch = null;\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._touched = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleDocumentClick);\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleDocumentClick);\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n if (changedProperties.has('options') && this._isOpen) {\n this._positionDropdown();\n }\n }\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._touched = false;\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n _updateValidity() {\n if (this._input) {\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n }\n }\n _fetch() {\n if (!this.fetch) {\n return;\n }\n this._requestId++;\n const requestId = this._requestId;\n this.fetch(this.value).then((options) => {\n if (requestId === this._requestId) {\n this.options = options;\n }\n }).catch((error) => {\n console.error('kr-auto-suggest: fetch failed', error);\n });\n }\n _handleInput(e) {\n this.value = e.target.value;\n this._isOpen = true;\n this._highlightedIndex = -1;\n this._positionDropdown();\n this._internals.setFormValue(this.value);\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n this._fetch();\n }\n _positionDropdown() {\n requestAnimationFrame(() => {\n const dropdown = this.shadowRoot?.querySelector('.dropdown');\n if (!dropdown) {\n return;\n }\n const inputRect = this._input.getBoundingClientRect();\n const spaceBelow = window.innerHeight - inputRect.bottom - 4 - 8;\n const spaceAbove = inputRect.top - 4 - 8;\n dropdown.style.left = inputRect.left + 'px';\n dropdown.style.width = inputRect.width + 'px';\n // Open above the input if there's more room above than below\n if (spaceAbove > spaceBelow) {\n dropdown.style.top = '';\n dropdown.style.bottom = (window.innerHeight - inputRect.top + 4) + 'px';\n dropdown.style.maxHeight = spaceAbove + 'px';\n }\n else {\n dropdown.style.bottom = '';\n dropdown.style.top = inputRect.bottom + 4 + 'px';\n dropdown.style.maxHeight = spaceBelow + 'px';\n }\n });\n }\n _handleFocus() {\n this._isOpen = true;\n this._positionDropdown();\n this._fetch();\n }\n _handleBlur() {\n this._touched = true;\n this._internals.setValidity(this._input.validity, this._input.validationMessage);\n // Delay to allow click on option\n setTimeout(() => {\n this._isOpen = false;\n this._highlightedIndex = -1;\n }, 200);\n }\n _handleKeyDown(e) {\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this._isOpen = true;\n this._highlightedIndex = Math.min(this._highlightedIndex + 1, this.options.length - 1);\n this._scrollToHighlighted();\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (this._highlightedIndex === -1) {\n this._isOpen = true;\n this._highlightedIndex = this.options.length - 1;\n }\n else {\n this._highlightedIndex = Math.max(this._highlightedIndex - 1, 0);\n }\n this._scrollToHighlighted();\n break;\n case 'Enter':\n if (this._highlightedIndex >= 0 && this.options[this._highlightedIndex]) {\n e.preventDefault();\n this._selectOption(this.options[this._highlightedIndex]);\n }\n break;\n case 'Escape':\n e.preventDefault();\n this._isOpen = false;\n this._highlightedIndex = -1;\n break;\n case 'Tab':\n this._isOpen = false;\n this._highlightedIndex = -1;\n break;\n }\n }\n _scrollToHighlighted() {\n this.updateComplete.then(() => {\n const container = this.shadowRoot?.querySelector('.dropdown');\n const highlighted = this.shadowRoot?.querySelector('.option--highlighted');\n if (container && highlighted) {\n const containerRect = container.getBoundingClientRect();\n const highlightedRect = highlighted.getBoundingClientRect();\n if (highlightedRect.bottom > containerRect.bottom) {\n highlighted.scrollIntoView({ block: 'nearest' });\n }\n else if (highlightedRect.top < containerRect.top) {\n highlighted.scrollIntoView({ block: 'nearest' });\n }\n }\n });\n }\n _selectOption(option) {\n if (option.disabled) {\n return;\n }\n this.value = option.value;\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._internals.setFormValue(this.value);\n this.dispatchEvent(new CustomEvent('select', {\n detail: { value: option.value, option: option },\n bubbles: true,\n composed: true,\n }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n _handleClear() {\n this.value = '';\n this._internals.setFormValue(this.value);\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n this._input?.focus();\n }\n _handleOptionMouseEnter(e, index) {\n this._highlightedIndex = index;\n }\n _renderOption(option, index) {\n return html `\n <button\n class=${classMap({\n option: true,\n 'option--highlighted': index === this._highlightedIndex,\n })}\n type=\"button\"\n role=\"option\"\n aria-selected=${index === this._highlightedIndex}\n ?disabled=${option.disabled}\n @click=${(e) => this._selectOption(option)}\n @mouseenter=${(e) => this._handleOptionMouseEnter(e, index)}\n >\n ${option.label || option.value}\n </button>\n `;\n }\n render() {\n let footer = nothing;\n if (this._touched && this._input && !this._input.validity.valid) {\n footer = html `<div class=\"validation-message\">${this._input.validationMessage}</div>`;\n }\n else if (this.hint) {\n footer = html `<div class=\"hint\">${this.hint}</div>`;\n }\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label>\n ${this.label}\n ${this.required ? html `<span class=\"required\">*</span>` : nothing}\n </label>\n `\n : nothing}\n\n <div class=\"input-wrapper\">\n <input\n type=\"text\"\n .value=${live(this.value)}\n placeholder=${this.placeholder}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n name=${this.name}\n autocomplete=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=${this._isOpen}\n aria-controls=\"dropdown\"\n class=${classMap({\n 'input--invalid': this._touched && this._input && !this._input.validity.valid,\n })}\n @input=${this._handleInput}\n @blur=${this._handleBlur}\n @focus=${this._handleFocus}\n @keydown=${this._handleKeyDown}\n />\n <div class=\"icon-wrapper\">\n ${this.value && !this.disabled && !this.readonly\n ? html `\n <svg class=\"clear\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-label=\"Clear\" @click=${this._handleClear}>\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n </svg>\n `\n : nothing}\n ${!this.value && !this.disabled && !this.readonly\n ? html `\n <svg class=\"search-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/>\n </svg>\n `\n : nothing}\n </div>\n </div>\n\n <div\n id=\"dropdown\"\n role=\"listbox\"\n class=${classMap({\n dropdown: true,\n 'dropdown--open': this._isOpen && this.options.length > 0,\n })}\n >\n ${this.options.map((option, index) => this._renderOption(option, index))}\n </div>\n\n ${footer}\n </div>\n `;\n }\n};\nKRAutoSuggest.styles = css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-text-field-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n .input-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n input {\n flex: 1;\n width: 100%;\n padding: 10px 32px 10px 12px;\n font-size: 14px;\n font-family: inherit;\n border: 1px solid var(--kr-text-field-border-color, #0000003d);\n border-radius: 8px;\n background-color: var(--kr-text-field-bg, #fff);\n color: var(--kr-text-field-color, #111827);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n }\n\n input:focus {\n outline: none;\n border-color: var(--kr-text-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-text-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n input:disabled {\n background-color: var(--kr-text-field-disabled-bg, #f3f4f6);\n color: var(--kr-text-field-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n input:read-only {\n background-color: var(--kr-text-field-disabled-bg, #f3f4f6);\n cursor: default;\n }\n\n input.input--invalid {\n border-color: var(--kr-text-field-error-border-color, #ef4444);\n }\n\n input.input--invalid:focus {\n box-shadow: 0 0 0 3px var(--kr-text-field-error-ring-color, rgba(239, 68, 68, 0.1));\n }\n\n input::placeholder {\n color: var(--kr-text-field-placeholder-color, #9ca3af);\n }\n\n .icon-wrapper {\n position: absolute;\n right: 8px;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .clear {\n width: 20px;\n height: 20px;\n color: var(--kr-text-muted, #6b7280);\n cursor: pointer;\n transition: color 0.15s ease;\n }\n\n .clear:hover {\n color: var(--kr-text, #000000);\n }\n\n .search-icon {\n width: 20px;\n height: 20px;\n color: var(--kr-text-muted, #6b7280);\n pointer-events: none;\n }\n\n /* Dropdown */\n .dropdown {\n position: fixed;\n z-index: 10000;\n overflow-y: auto;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n padding: 8px 0;\n box-sizing: border-box;\n display: none;\n }\n\n .dropdown--open {\n display: block;\n }\n\n /* Options */\n .option {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n padding: 8px 12px;\n background: none;\n border: none;\n font-size: 14px;\n line-height: 1.5;\n font-family: inherit;\n color: var(--kr-text, #000000);\n text-align: left;\n cursor: pointer;\n transition: background 0.15s ease;\n }\n\n .option:hover:not(:disabled) {\n background: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .option--highlighted {\n background-color: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .option:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n \n .hint {\n font-size: 0.75rem;\n color: var(--kr-text-field-helper-color, #6b7280);\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-text-field-error-color, #ef4444);\n }\n `;\nKRAutoSuggest.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRAutoSuggest.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRAutoSuggest.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRAutoSuggest.prototype, \"value\", void 0);\n__decorate([\n property({ type: String })\n], KRAutoSuggest.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRAutoSuggest.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRAutoSuggest.prototype, \"readonly\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRAutoSuggest.prototype, \"required\", void 0);\n__decorate([\n property({ type: String })\n], KRAutoSuggest.prototype, \"hint\", void 0);\n__decorate([\n property({ type: Array })\n], KRAutoSuggest.prototype, \"options\", void 0);\n__decorate([\n property({ attribute: false })\n], KRAutoSuggest.prototype, \"fetch\", void 0);\n__decorate([\n state()\n], KRAutoSuggest.prototype, \"_isOpen\", void 0);\n__decorate([\n state()\n], KRAutoSuggest.prototype, \"_highlightedIndex\", void 0);\n__decorate([\n state()\n], KRAutoSuggest.prototype, \"_touched\", void 0);\n__decorate([\n query('input')\n], KRAutoSuggest.prototype, \"_input\", void 0);\nKRAutoSuggest = __decorate([\n customElement('kr-auto-suggest')\n], KRAutoSuggest);\nexport { KRAutoSuggest };\n//# sourceMappingURL=auto-suggest.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n/**\n * @element kr-combo-box\n *\n * A searchable select field. Looks like a select dropdown but when opened\n * shows a search input at the top of the panel for filtering options via\n * a fetch function. Works with any object shape — use optionValue and\n * optionLabel to tell the component how to extract the value and display text.\n *\n * @property {string} label - Label text\n * @property {string} name - Name for form submission\n * @property {string} value - Currently selected value\n * @property {string} placeholder - Placeholder text when nothing is selected\n * @property {boolean} disabled - Whether the field is disabled\n * @property {boolean} readonly - Whether the field is readonly\n * @property {boolean} required - Whether the field is required\n * @property {string} hint - Helper text displayed below the field\n * @property {string|Function} optionValue - Field name or function to extract the value from an option\n * @property {string|Function} optionLabel - Field name or function to extract the label from an option\n * @property {any[]} options - Array of options\n * @property {Function} fetch - Function that returns a promise of options\n * @property {Function} fetchSelection - Function that resolves a single option by its value\n *\n * @fires change - Fired when the selected value changes\n * @fires select - Fired when an option is selected\n */\nlet KRComboBox = class KRComboBox extends LitElement {\n constructor() {\n super();\n this._requestId = 0;\n this._selectedOption = null;\n this._handleDocumentClick = (e) => {\n if (!e.composedPath().includes(this)) {\n this._close();\n }\n };\n this.label = '';\n this.name = '';\n this.value = '';\n this.placeholder = 'Select an option';\n this.disabled = false;\n this.readonly = false;\n this.required = false;\n this.hint = '';\n this.optionValue = 'value';\n this.optionLabel = 'label';\n this.options = [];\n this.fetch = null;\n this.fetchSelection = null;\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._touched = false;\n this._searchQuery = '';\n this._loading = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleDocumentClick);\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleDocumentClick);\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n if (this.value && this.fetchSelection) {\n this._resolveSelection();\n }\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n if (changedProperties.has('value')) {\n if (this.value) {\n // Only resolve if the selected option doesn't match the current value\n if (!this._selectedOption || this._getOptionValue(this._selectedOption) !== this.value) {\n this._resolveSelection();\n }\n }\n else {\n this._selectedOption = null;\n }\n }\n if (changedProperties.has('options') && this._isOpen) {\n this._positionDropdown();\n }\n }\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._selectedOption = null;\n this._touched = false;\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._searchQuery = '';\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n focus() {\n if (!this._isOpen) {\n this._open();\n }\n }\n blur() {\n this._triggerElement?.blur();\n }\n _updateValidity() {\n if (this.required && !this.value) {\n this._internals.setValidity({ valueMissing: true }, 'Please select an option', this._triggerElement);\n }\n else {\n this._internals.setValidity({});\n }\n }\n _handleTriggerClick() {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this._isOpen) {\n this._close();\n }\n else {\n this._open();\n }\n }\n _open() {\n this._isOpen = true;\n this._searchQuery = '';\n this._highlightedIndex = -1;\n this._fetch();\n this.updateComplete.then(() => {\n this._positionDropdown();\n if (this._searchInput) {\n this._searchInput.focus();\n }\n });\n }\n _close() {\n this._isOpen = false;\n this._highlightedIndex = -1;\n this._searchQuery = '';\n }\n _positionDropdown() {\n requestAnimationFrame(() => {\n const dropdown = this.shadowRoot?.querySelector('.dropdown');\n if (!dropdown) {\n return;\n }\n const triggerRect = this._triggerElement.getBoundingClientRect();\n const spaceBelow = window.innerHeight - triggerRect.bottom - 4 - 8;\n const spaceAbove = triggerRect.top - 4 - 8;\n dropdown.style.left = triggerRect.left + 'px';\n dropdown.style.width = triggerRect.width + 'px';\n // Prefer opening below; only flip above when space below is tight\n if (spaceBelow < 200 && spaceAbove > spaceBelow) {\n dropdown.style.top = '';\n dropdown.style.bottom = (window.innerHeight - triggerRect.top + 4) + 'px';\n dropdown.style.maxHeight = spaceAbove + 'px';\n }\n else {\n dropdown.style.bottom = '';\n dropdown.style.top = triggerRect.bottom + 4 + 'px';\n dropdown.style.maxHeight = spaceBelow + 'px';\n }\n });\n }\n _fetch() {\n if (!this.fetch) {\n return;\n }\n this._loading = true;\n this._requestId++;\n const requestId = this._requestId;\n this.fetch(this._searchQuery).then((options) => {\n if (requestId === this._requestId) {\n this.options = options;\n this._loading = false;\n }\n }).catch((error) => {\n console.error('kr-combo-box: fetch failed', error);\n this._loading = false;\n });\n }\n _handleSearchInput(e) {\n this._searchQuery = e.target.value;\n this._highlightedIndex = -1;\n this._fetch();\n }\n _handleSearchKeyDown(e) {\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this._highlightedIndex = Math.min(this._highlightedIndex + 1, this.options.length - 1);\n this._scrollToHighlighted();\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (this._highlightedIndex === -1) {\n this._highlightedIndex = this.options.length - 1;\n }\n else {\n this._highlightedIndex = Math.max(this._highlightedIndex - 1, 0);\n }\n this._scrollToHighlighted();\n break;\n case 'Enter':\n e.preventDefault();\n if (this._highlightedIndex >= 0 && this.options[this._highlightedIndex]) {\n this._selectOption(this.options[this._highlightedIndex]);\n }\n break;\n case 'Escape':\n e.preventDefault();\n this._close();\n this._triggerElement?.focus();\n break;\n case 'Tab':\n this._close();\n break;\n }\n }\n _handleTriggerKeyDown(e) {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (!this._isOpen) {\n this._open();\n }\n }\n }\n _handleTriggerBlur() {\n this._touched = true;\n this._updateValidity();\n }\n _scrollToHighlighted() {\n this.updateComplete.then(() => {\n const container = this.shadowRoot?.querySelector('.options');\n const highlighted = this.shadowRoot?.querySelector('.option--highlighted');\n if (container && highlighted) {\n const containerRect = container.getBoundingClientRect();\n const highlightedRect = highlighted.getBoundingClientRect();\n if (highlightedRect.bottom > containerRect.bottom) {\n highlighted.scrollIntoView({ block: 'nearest' });\n }\n else if (highlightedRect.top < containerRect.top) {\n highlighted.scrollIntoView({ block: 'nearest' });\n }\n }\n });\n }\n _getOptionValue(option) {\n if (typeof this.optionValue === 'function') {\n return this.optionValue(option);\n }\n return option[this.optionValue];\n }\n _getOptionLabel(option) {\n let label;\n if (typeof this.optionLabel === 'function') {\n label = this.optionLabel(option);\n }\n else {\n label = option[this.optionLabel];\n }\n if (!label) {\n return this._getOptionValue(option);\n }\n return label;\n }\n _resolveSelection() {\n if (!this.fetchSelection) {\n return;\n }\n const fetchedValue = this.value;\n this.fetchSelection(this.value).then((option) => {\n if (this.value !== fetchedValue) {\n return;\n }\n if (!option) {\n return;\n }\n this._selectedOption = option;\n this.requestUpdate();\n }).catch((error) => {\n console.error('kr-combo-box: fetchSelection failed', error);\n });\n }\n _selectOption(option) {\n if (option.disabled) {\n return;\n }\n this.value = this._getOptionValue(option);\n this._selectedOption = option;\n this._close();\n this._internals.setFormValue(this.value);\n this._updateValidity();\n this.dispatchEvent(new CustomEvent('select', {\n detail: { option: option },\n bubbles: true,\n composed: true,\n }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n this._triggerElement?.focus();\n }\n _handleOptionMouseEnter(e, index) {\n this._highlightedIndex = index;\n }\n _renderOption(option, index) {\n const optionValue = this._getOptionValue(option);\n return html `\n <button\n class=${classMap({\n option: true,\n 'option--highlighted': index === this._highlightedIndex,\n 'option--selected': optionValue === this.value,\n })}\n type=\"button\"\n role=\"option\"\n aria-selected=${optionValue === this.value}\n ?disabled=${option.disabled}\n @click=${(e) => this._selectOption(option)}\n @mouseenter=${(e) => this._handleOptionMouseEnter(e, index)}\n >\n ${this._getOptionLabel(option)}\n </button>\n `;\n }\n render() {\n let footer = nothing;\n if (this._touched && this.required && !this.value) {\n footer = html `<div class=\"validation-message\">Please select an option</div>`;\n }\n else if (this.hint) {\n footer = html `<div class=\"hint\">${this.hint}</div>`;\n }\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label>\n ${this.label}\n ${this.required ? html `<span class=\"required\">*</span>` : nothing}\n </label>\n `\n : nothing}\n\n <button\n class=${classMap({\n trigger: true,\n 'trigger--open': this._isOpen,\n 'trigger--invalid': this._touched && this.required && !this.value,\n })}\n type=\"button\"\n ?disabled=${this.disabled}\n aria-haspopup=\"listbox\"\n aria-expanded=${this._isOpen}\n @click=${this._handleTriggerClick}\n @keydown=${this._handleTriggerKeyDown}\n @blur=${this._handleTriggerBlur}\n >\n <span class=${classMap({\n trigger__value: true,\n trigger__placeholder: !this._selectedOption,\n })}>\n ${this._selectedOption ? this._getOptionLabel(this._selectedOption) : this.placeholder}\n </span>\n <svg\n class=${classMap({\n trigger__icon: true,\n 'trigger__icon--open': this._isOpen,\n })}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6z\"/>\n </svg>\n </button>\n\n <div\n role=\"listbox\"\n class=${classMap({\n dropdown: true,\n 'dropdown--open': this._isOpen,\n })}\n >\n <div class=\"search\">\n <div class=\"search__field\">\n <input\n class=\"search__input\"\n type=\"text\"\n placeholder=\"Search...\"\n .value=${this._searchQuery}\n @input=${this._handleSearchInput}\n @keydown=${this._handleSearchKeyDown}\n />\n <svg class=\"search__icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/>\n </svg>\n </div>\n </div>\n\n <div class=\"options\">\n ${this._loading\n ? html `<div class=\"empty\">Loading...</div>`\n : this.options.length === 0\n ? html `<div class=\"empty\">No options found</div>`\n : this.options.map((option, index) => this._renderOption(option, index))}\n </div>\n </div>\n\n ${footer}\n </div>\n `;\n }\n};\nKRComboBox.styles = css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-text-field-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n /* Trigger button */\n .trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 10px 12px;\n font-family: inherit;\n font-size: 14px;\n line-height: 1.5;\n color: var(--kr-text-field-color, #111827);\n background-color: var(--kr-text-field-bg, #fff);\n border: 1px solid var(--kr-text-field-border-color, #0000003d);\n border-radius: 8px;\n cursor: pointer;\n transition: border-color 0.2s, box-shadow 0.2s;\n text-align: left;\n }\n\n .trigger:hover:not(:disabled) {\n border-color: #9ca3af;\n }\n\n .trigger:focus {\n outline: none;\n border-color: var(--kr-text-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-text-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n .trigger:disabled {\n background-color: var(--kr-text-field-disabled-bg, #f3f4f6);\n color: var(--kr-text-field-disabled-color, #9ca3af);\n cursor: not-allowed;\n }\n\n .trigger--open {\n border-color: var(--kr-text-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-text-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n .trigger--invalid {\n border-color: var(--kr-text-field-error-border-color, #ef4444);\n }\n\n .trigger--invalid:focus {\n box-shadow: 0 0 0 3px var(--kr-text-field-error-ring-color, rgba(239, 68, 68, 0.1));\n }\n\n .trigger__value {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .trigger__placeholder {\n color: var(--kr-text-field-placeholder-color, #9ca3af);\n }\n\n .trigger__icon {\n flex-shrink: 0;\n margin-left: 0.5rem;\n width: 20px;\n height: 20px;\n color: var(--kr-text-muted, #6b7280);\n transition: transform 0.2s;\n }\n\n .trigger__icon--open {\n transform: rotate(180deg);\n }\n\n /* Dropdown */\n .dropdown {\n position: fixed;\n z-index: 10000;\n background: white;\n border: 1px solid #9ba7b6;\n border-radius: 8px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n box-sizing: border-box;\n display: none;\n overflow: hidden;\n }\n\n .dropdown--open {\n display: flex;\n flex-direction: column;\n }\n\n /* Search input inside dropdown */\n .search {\n padding: 12px 12px 2px 12px;\n flex-shrink: 0;\n }\n\n .search__field {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border: 1px solid var(--kr-text-field-border-color, #0000003d);\n border-radius: 8px;\n background-color: var(--kr-text-field-bg, #fff);\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .search__field:focus-within {\n border-color: var(--kr-text-field-focus-border-color, #163052);\n box-shadow: 0 0 0 3px var(--kr-text-field-focus-ring-color, rgba(22, 48, 82, 0.1));\n }\n\n .search__icon {\n width: 20px;\n height: 20px;\n color: var(--kr-text-muted, #6b7280);\n flex-shrink: 0;\n margin-left: 8px;\n }\n\n .search__input {\n flex: 1;\n border: none;\n outline: none;\n font-size: 14px;\n font-family: inherit;\n color: var(--kr-text-field-color, #111827);\n background: transparent;\n padding: 0;\n }\n\n .search__input::placeholder {\n color: var(--kr-text-field-placeholder-color, #9ca3af);\n }\n\n /* Options list */\n .options {\n overflow-y: auto;\n padding: 4px 0;\n }\n\n .option {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 12px 18px;\n background: none;\n border: none;\n font-size: 14px;\n line-height: 1.5;\n font-family: inherit;\n color: var(--kr-text, #000000);\n text-align: left;\n cursor: pointer;\n transition: background 0.15s ease;\n }\n\n .option:hover:not(:disabled) {\n background: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .option--highlighted {\n background-color: var(--kr-select-option-hover-bg, #f3f4f6);\n }\n\n .option--selected {\n color: var(--kr-text-field-focus-border-color, #163052);\n }\n\n .option:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .empty {\n padding: 12px 18px;\n text-align: left;\n color: var(--kr-text-muted, #6b7280);\n font-size: 14px;\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-text-field-helper-color, #6b7280);\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-text-field-error-color, #ef4444);\n }\n `;\nKRComboBox.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRComboBox.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRComboBox.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRComboBox.prototype, \"value\", void 0);\n__decorate([\n property({ type: String })\n], KRComboBox.prototype, \"placeholder\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRComboBox.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRComboBox.prototype, \"readonly\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRComboBox.prototype, \"required\", void 0);\n__decorate([\n property({ type: String })\n], KRComboBox.prototype, \"hint\", void 0);\n__decorate([\n property({ attribute: 'option-value' })\n], KRComboBox.prototype, \"optionValue\", void 0);\n__decorate([\n property({ attribute: 'option-label' })\n], KRComboBox.prototype, \"optionLabel\", void 0);\n__decorate([\n property({ type: Array })\n], KRComboBox.prototype, \"options\", void 0);\n__decorate([\n property({ attribute: false })\n], KRComboBox.prototype, \"fetch\", void 0);\n__decorate([\n property({ attribute: false })\n], KRComboBox.prototype, \"fetchSelection\", void 0);\n__decorate([\n state()\n], KRComboBox.prototype, \"_isOpen\", void 0);\n__decorate([\n state()\n], KRComboBox.prototype, \"_highlightedIndex\", void 0);\n__decorate([\n state()\n], KRComboBox.prototype, \"_touched\", void 0);\n__decorate([\n state()\n], KRComboBox.prototype, \"_searchQuery\", void 0);\n__decorate([\n state()\n], KRComboBox.prototype, \"_loading\", void 0);\n__decorate([\n query('.trigger')\n], KRComboBox.prototype, \"_triggerElement\", void 0);\n__decorate([\n query('.search__input')\n], KRComboBox.prototype, \"_searchInput\", void 0);\nKRComboBox = __decorate([\n customElement('kr-combo-box')\n], KRComboBox);\nexport { KRComboBox };\n//# sourceMappingURL=combo-box.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { krBaseCSS } from '../../style/base.js';\n/**\n * A card-style radio group for selecting between a small number of options.\n * Each option renders as a bordered card with a radio indicator, label, and optional description.\n *\n * Uses ElementInternals for form association, allowing the component\n * to participate in form submission, validation, and reset.\n *\n * @element kr-radio-cards\n * @fires change - Fired when the selected value changes\n */\nlet KRRadioCards = class KRRadioCards extends LitElement {\n constructor() {\n super();\n this._focusedIndex = -1;\n /**\n * The label text above the cards\n */\n this.label = '';\n /**\n * The input name for form submission\n */\n this.name = '';\n /**\n * The currently selected value\n */\n this.value = '';\n /**\n * The card options to display\n */\n this.options = [];\n /**\n * Whether the field is disabled\n */\n this.disabled = false;\n /**\n * Whether the field is required\n */\n this.required = false;\n /**\n * Helper text shown below the cards\n */\n this.hint = '';\n /**\n * Layout direction: 'row' or 'column'\n */\n this.direction = 'row';\n this._touched = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n // Form-associated custom element callbacks\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n get willValidate() {\n return this._internals.willValidate;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.value = '';\n this._touched = false;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.value = state;\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('required') || changedProperties.has('value')) {\n this._updateValidity();\n }\n }\n _updateValidity() {\n if (this.required && !this.value) {\n this._internals.setValidity({ valueMissing: true }, 'Please select an option');\n }\n else {\n this._internals.setValidity({});\n }\n }\n _handleCardClick(e, option) {\n if (this.disabled || option.disabled) {\n return;\n }\n this.value = option.value;\n this._touched = true;\n this._internals.setFormValue(this.value);\n this._updateValidity();\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n _handleKeyDown(e, index) {\n if (this.disabled) {\n return;\n }\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n if (!this.options[index].disabled) {\n this._handleCardClick(e, this.options[index]);\n }\n return;\n }\n let nextIndex = -1;\n if (this.direction === 'row') {\n if (e.key === 'ArrowRight') {\n nextIndex = this._findNextEnabledIndex(index, 1);\n }\n else if (e.key === 'ArrowLeft') {\n nextIndex = this._findNextEnabledIndex(index, -1);\n }\n }\n else {\n if (e.key === 'ArrowDown') {\n nextIndex = this._findNextEnabledIndex(index, 1);\n }\n else if (e.key === 'ArrowUp') {\n nextIndex = this._findNextEnabledIndex(index, -1);\n }\n }\n if (nextIndex >= 0) {\n e.preventDefault();\n this._focusedIndex = nextIndex;\n const cards = this.shadowRoot?.querySelectorAll('.card');\n if (cards[nextIndex]) {\n cards[nextIndex].focus();\n }\n }\n }\n _findNextEnabledIndex(current, step) {\n let next = current + step;\n while (next >= 0 && next < this.options.length) {\n if (!this.options[next].disabled) {\n return next;\n }\n next += step;\n }\n return -1;\n }\n render() {\n return html `\n <div class=\"wrapper\">\n ${this.label\n ? html `\n <label>\n ${this.label}\n ${this.required ? html `<span class=\"required\" aria-hidden=\"true\">*</span>` : nothing}\n </label>\n `\n : nothing}\n <div\n class=${classMap({\n 'cards': true,\n 'cards--row': this.direction === 'row',\n 'cards--column': this.direction === 'column',\n })}\n role=\"radiogroup\"\n aria-label=${this.label}\n >\n ${this.options.map((option, index) => {\n const isSelected = option.value === this.value;\n const isDisabled = this.disabled || !!option.disabled;\n return html `\n <div\n class=${classMap({\n 'card': true,\n 'card--selected': isSelected,\n 'card--disabled': isDisabled,\n })}\n role=\"radio\"\n aria-checked=${isSelected}\n aria-disabled=${isDisabled}\n tabindex=${isDisabled ? -1 : 0}\n @click=${(e) => this._handleCardClick(e, option)}\n @keydown=${(e) => this._handleKeyDown(e, index)}\n >\n <div class=\"card__radio\">\n ${isSelected ? html `<div class=\"card__radio-dot\"></div>` : nothing}\n </div>\n <div class=\"card__content\">\n <div class=\"card__label\">${option.label}</div>\n ${option.description\n ? html `<div class=\"card__description\">${option.description}</div>`\n : nothing}\n </div>\n </div>\n `;\n })}\n </div>\n ${this._touched && this.required && !this.value\n ? html `<div class=\"validation-message\">Please select an option</div>`\n : this.hint\n ? html `<div class=\"hint\">${this.hint}</div>`\n : nothing}\n </div>\n `;\n }\n};\nKRRadioCards.styles = [krBaseCSS, css `\n :host {\n display: block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n label {\n font-size: 14px;\n font-weight: 500;\n color: black;\n }\n\n .required {\n color: var(--kr-radio-cards-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n .cards {\n display: flex;\n gap: 12px;\n }\n\n .cards--row {\n flex-direction: row;\n }\n\n .cards--column {\n flex-direction: column;\n }\n\n .card {\n flex: 1;\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n border: 1px solid var(--kr-radio-cards-border-color, #0000003d);\n border-radius: 8px;\n background-color: var(--kr-radio-cards-bg, #fff);\n cursor: pointer;\n transition: border-color 0.2s, background-color 0.2s, box-shadow 0.2s;\n }\n\n .card:hover:not(.card--disabled) {\n border-color: var(--kr-radio-cards-hover-border-color, #9ca3af);\n }\n\n .card:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);\n }\n\n .card--selected {\n border-color: var(--kr-radio-cards-selected-border-color, var(--kr-primary));\n background-color: var(--kr-radio-cards-selected-bg, rgba(22, 48, 82, 0.06));\n }\n\n .card--selected:hover {\n border-color: var(--kr-radio-cards-selected-border-color, var(--kr-primary));\n }\n\n .card--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .card__radio {\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border: 2px solid var(--kr-radio-cards-radio-border-color, #0000003d);\n border-radius: 50%;\n margin-top: 1px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: border-color 0.2s;\n }\n\n .card--selected .card__radio {\n border-color: var(--kr-radio-cards-radio-selected-color, var(--kr-primary));\n }\n\n .card__radio-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: var(--kr-radio-cards-radio-selected-color, var(--kr-primary));\n }\n\n .card__content {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n }\n\n .card__label {\n font-size: 14px;\n font-weight: 600;\n color: var(--kr-radio-cards-label-color, #000);\n }\n\n .card__description {\n font-size: 14px;\n color: var(--kr-radio-cards-description-color, #4d525c);\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-radio-cards-helper-color, #6b7280);\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-radio-cards-error-color, #ef4444);\n }\n `];\nKRRadioCards.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRRadioCards.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRRadioCards.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRRadioCards.prototype, \"value\", void 0);\n__decorate([\n property({ attribute: false })\n], KRRadioCards.prototype, \"options\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRRadioCards.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRRadioCards.prototype, \"required\", void 0);\n__decorate([\n property({ type: String })\n], KRRadioCards.prototype, \"hint\", void 0);\n__decorate([\n property({ type: String })\n], KRRadioCards.prototype, \"direction\", void 0);\n__decorate([\n state()\n], KRRadioCards.prototype, \"_touched\", void 0);\nKRRadioCards = __decorate([\n customElement('kr-radio-cards')\n], KRRadioCards);\nexport { KRRadioCards };\n//# sourceMappingURL=radio-cards.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { krBaseCSS } from '../../style/base.js';\n/**\n * A checkbox component that works with native browser forms.\n *\n * Uses ElementInternals for form association, allowing the component\n * to participate in form submission, validation, and reset.\n *\n * @element kr-checkbox\n * @fires change - Fired when the checked state changes\n */\nlet KRCheckbox = class KRCheckbox extends LitElement {\n constructor() {\n super();\n /**\n * The checkbox label text\n */\n this.label = '';\n /**\n * The input name for form submission\n */\n this.name = '';\n /**\n * The value submitted when checked\n */\n this.value = 'on';\n /**\n * Whether the checkbox is checked\n */\n this.checked = false;\n /**\n * Whether the checkbox is disabled\n */\n this.disabled = false;\n /**\n * Whether the checkbox is required\n */\n this.required = false;\n /**\n * Helper text shown below the checkbox\n */\n this.hint = '';\n this._touched = false;\n this._handleInvalid = (e) => {\n e.preventDefault();\n this._touched = true;\n };\n this._internals = this.attachInternals();\n }\n // Form-associated custom element callbacks\n get form() {\n return this._internals.form;\n }\n get validity() {\n return this._internals.validity;\n }\n get validationMessage() {\n return this._internals.validationMessage;\n }\n get willValidate() {\n return this._internals.willValidate;\n }\n checkValidity() {\n return this._internals.checkValidity();\n }\n reportValidity() {\n return this._internals.reportValidity();\n }\n formResetCallback() {\n this.checked = false;\n this._touched = false;\n this._internals.setFormValue('');\n this._internals.setValidity({});\n }\n formStateRestoreCallback(state) {\n this.checked = state === this.value;\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('invalid', this._handleInvalid);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('invalid', this._handleInvalid);\n }\n firstUpdated() {\n this._syncFormValue();\n this._updateValidity();\n }\n updated(changedProperties) {\n if (changedProperties.has('checked') || changedProperties.has('value')) {\n this._syncFormValue();\n }\n if (changedProperties.has('required') || changedProperties.has('checked')) {\n this._updateValidity();\n }\n }\n _syncFormValue() {\n if (this.checked) {\n this._internals.setFormValue(this.value);\n }\n else {\n this._internals.setFormValue('');\n }\n }\n _updateValidity() {\n if (this.required && !this.checked) {\n this._internals.setValidity({ valueMissing: true }, 'This field is required');\n }\n else {\n this._internals.setValidity({});\n }\n }\n _handleClick(e) {\n if (this.disabled) {\n return;\n }\n this.checked = !this.checked;\n this._touched = true;\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n _handleKeyDown(e) {\n if (this.disabled) {\n return;\n }\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n this._handleClick(e);\n }\n }\n render() {\n return html `\n <div class=\"wrapper\">\n <div\n class=${classMap({\n 'checkbox': true,\n 'checkbox--disabled': this.disabled,\n })}\n role=\"checkbox\"\n aria-checked=${this.checked}\n aria-disabled=${this.disabled}\n aria-label=${this.label}\n tabindex=${this.disabled ? -1 : 0}\n @click=${this._handleClick}\n @keydown=${this._handleKeyDown}\n >\n <div class=${classMap({\n 'checkbox__box': true,\n 'checkbox__box--checked': this.checked,\n 'checkbox__box--invalid': this._touched && this.required && !this.checked,\n })}>\n <svg class=${classMap({\n 'checkbox__check': true,\n 'checkbox__check--hidden': !this.checked,\n })} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </div>\n ${this.label\n ? html `\n <span class=\"checkbox__label\">\n ${this.label}\n ${this.required ? html `<span class=\"required\" aria-hidden=\"true\">*</span>` : nothing}\n </span>\n `\n : nothing}\n </div>\n ${this._touched && this.required && !this.checked\n ? html `<div class=\"validation-message\">This field is required</div>`\n : this.hint\n ? html `<div class=\"hint\">${this.hint}</div>`\n : nothing}\n </div>\n `;\n }\n focus() {\n this.shadowRoot?.querySelector('.checkbox')?.focus();\n }\n blur() {\n this.shadowRoot?.querySelector('.checkbox')?.blur();\n }\n};\nKRCheckbox.styles = [krBaseCSS, css `\n :host {\n display: inline-block;\n font-family: inherit;\n }\n\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .checkbox {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n }\n\n .checkbox--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .checkbox__box {\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border: 2px solid var(--kr-checkbox-border-color, #0000003d);\n border-radius: 4px;\n background-color: var(--kr-checkbox-bg, #fff);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: border-color 0.2s, background-color 0.2s, box-shadow 0.2s;\n }\n\n .checkbox:focus-visible .checkbox__box {\n outline: none;\n box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);\n }\n\n .checkbox__box--checked {\n border-color: var(--kr-checkbox-checked-border-color, var(--kr-primary));\n background-color: var(--kr-checkbox-checked-bg, var(--kr-primary));\n }\n\n .checkbox__box--invalid {\n border-color: var(--kr-checkbox-error-border-color, #ef4444);\n }\n\n .checkbox__check {\n width: 12px;\n height: 12px;\n color: var(--kr-checkbox-check-color, #fff);\n }\n\n .checkbox__check--hidden {\n visibility: hidden;\n }\n\n .checkbox__label {\n font-size: 14px;\n color: var(--kr-checkbox-label-color, #000);\n user-select: none;\n }\n\n .required {\n color: var(--kr-checkbox-required-color, #ef4444);\n margin-left: 0.125rem;\n }\n\n .hint {\n font-size: 0.75rem;\n color: var(--kr-checkbox-helper-color, #6b7280);\n margin-left: 26px;\n }\n\n .validation-message {\n font-size: 0.75rem;\n color: var(--kr-checkbox-error-color, #ef4444);\n margin-left: 26px;\n }\n `];\nKRCheckbox.formAssociated = true;\n__decorate([\n property({ type: String })\n], KRCheckbox.prototype, \"label\", void 0);\n__decorate([\n property({ type: String })\n], KRCheckbox.prototype, \"name\", void 0);\n__decorate([\n property({ type: String })\n], KRCheckbox.prototype, \"value\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRCheckbox.prototype, \"checked\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRCheckbox.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], KRCheckbox.prototype, \"required\", void 0);\n__decorate([\n property({ type: String })\n], KRCheckbox.prototype, \"hint\", void 0);\n__decorate([\n state()\n], KRCheckbox.prototype, \"_touched\", void 0);\nKRCheckbox = __decorate([\n customElement('kr-checkbox')\n], KRCheckbox);\nexport { KRCheckbox };\n//# sourceMappingURL=checkbox.js.map"],"names":["t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","o","WeakMap","n$4","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","get","replaceSync","set","toString","i","reduce","n","c","cssRules","r","is","defineProperty","getOwnPropertyDescriptor","h","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","b","attribute","type","String","converter","reflect","useDefault","hasChanged","metadata","litPropertyMetadata","y$1","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","hasOwnProperty","create","wrapped","elementProperties","noAccessor","getPropertyDescriptor","call","requestUpdate","configurable","enumerable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$ET","removeAttribute","_$Ej","hasAttribute","C","_$EP","has","_$Eq","reject","scheduleUpdate","performUpdate","shouldUpdate","willUpdate","hostUpdate","update","_$EM","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","y","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createComment","v","_","m","RegExp","g","$","_$litType$","strings","values","x","E","for","A","P","createTreeWalker","V","N","lastIndex","exec","test","startsWith","S","parts","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","I","L","z","H","tagName","append","data","indexOf","innerHTML","M","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","R","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","k","nextSibling","Z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","T","iterator","O","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","fill","j","arguments","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","B","litHtmlPolyfillSupport","litHtmlVersions","D","renderBefore","_$litPart$","renderOptions","_$Do","render","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","krBaseCSS","css","customElements","define","kind","init","Reflect","decorate","querySelector","__decorate","decorators","target","key","desc","KRAccordion","header","expanded","toggle","html","property","customElement","i$1","_$Ct","_$Ci","filter","join","st","nt","classList","KRAlert","title","dismissible","visible","_handleDismiss","dispatchEvent","CustomEvent","bubbles","composed","icons","info","success","warning","error","classMap","alert","nothing","KRButton","variant","color","disabled","iconPosition","_state","_stateText","_dropdownOpened","_handleHostClick","stopPropagation","_toggleDropdown","_handleKeydown","preventDefault","MouseEvent","click","_handleClickOutside","contains","href","_handleSplitPrimaryClick","_handleSplitTriggerClick","requestAnimationFrame","dropdown","hostRect","getBoundingClientRect","style","top","bottom","left","right","minWidth","width","transformOrigin","maxHeight","overflowY","dropdownRect","height","window","innerHeight","innerWidth","_handleOptionClick","option","detail","id","label","showLoading","_clearStateTimeout","showSuccess","text","duration","_stateTimeout","setTimeout","reset","showError","isLoading","clearTimeout","undefined","changedProperties","it","directiveName","_t","raw","resultType","KRCodeDemo","language","code","activeTab","copied","highlightedCode","trim","replace","querySelectorAll","oldScript","newScript","hljs","getLanguage","highlight","value","activateTab","tab","copyCode","navigator","clipboard","writeText","then","copy","panel","unsafeHTML","KRContextMenu","items","resolvePromise","boundHandleOutsideClick","handleOutsideClick","bind","boundHandleKeyDown","handleKeyDown","open","existing","menu","body","show","rect","resolve","close","handleItemClick","item","divider","result","icon","includes","ft","removeProperty","setProperty","KRDialogHeader","KRDialogContent","KRDialogFooter","KRDialogRef","_resolvePromise","_dialogElement","_promise","setDialogElement","afterClosed","KRDialog","_dialogRef","_contentElement","opened","_handleDocumentKeyDown","component","config","dialogRef","dialog","_handleBackdropClick","styleMap","KRDateRangePicker","relativeOptions","amount","unit","invalid","placeholder","startDate","endDate","_isOpen","_activeTab","_tempStartDate","_tempEndDate","composedPath","_handleTriggerClick","_handleTabClick","_handleRelativeSelect","_handleApplyAbsolute","_handleCancel","_formatRelativeOption","unitLabels","second","minute","hour","day","week","month","year","_getDisplayValue","_renderTriggerText","displayValue","_renderContent","_renderRelativeContent","_renderAbsoluteContent","_handleStartDateChange","_handleEndDateChange","_renderFooter","trigger","KRSnackbar_1","KRSnackbar","dismissTimeout","message","activeSnackbars","dismiss","snackbar","splice","KRTabGroup","justified","changes","_updateActiveTab","_getTabs","from","tabs","activeTabId","active","_handleTabDismiss","tabId","_handleKeyDown","enabledTabs","currentIndex","findIndex","newIndex","newTab","tabButtons","targetButton","find","btn","focus","_renderTabIcon","iconElement","getIconElement","clonedIcon","cloneNode","badge","backgroundColor","badgeBackground","badgeColor","KRTab","tabGroup","closest","KRSelectField","required","readonly","hint","_highlightedIndex","_touched","_handleInvalid","_handleOutsideClick","_close","_triggerElement","some","_selectOption","_internals","attachInternals","form","validity","validationMessage","willValidate","checkValidity","reportValidity","formResetCallback","setFormValue","setValidity","formStateRestoreCallback","_updateValidity","_toggle","triggerRect","spaceBelow","Event","_handleBlur","valueMissing","selectedLabel","hidden","idx","isSelected","blur","formAssociated","query","KRSelectOption","KR_OPERATORS","equals","dataTypes","n_equals","n_contains","starts_with","ends_with","less_than","less_than_equal","greater_than","greater_than_equal","between","in","n_in","empty","n_empty","getOperatorsForType","columnType","results","op","SOLR_RESERVED_CHARS","SOLR_RESERVED_CHARS_REPLACEMENT","termify","exact","char","str","termifyDate","endOfTheDay","newTime","Date","setMinutes","getMinutes","getTimezoneOffset","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","toISOString","createSolrDateRange","specificities","startSpecificity","endSpecificity","start","end","setUTCMonth","setUTCDate","getUTCMonth","createDbDateRange","getDateSpecificity","input","KRQuery","field","operator","kql","specificity","setKql","substring","_parse","toIndex","rawStart","rawEnd","setOperator","_buildKql","setValue","_buildText","setStart","setEnd","clear","isEmpty","val","isValid","isNaN","getTime","toSolrData","boost","fuzzy","not","operation","tagged","toDbParams","params","_format","padStart","getUTCDate","getUTCFullYear","lcInput","_parseDate","num","months","jan","january","feb","february","mar","march","apr","april","may","jun","june","jul","july","aug","august","sep","september","oct","october","nov","november","dec","december","match","UTC","parseInt","toUpperCase","KRTableModel","description","actions","columns","displayedColumns","dataSource","refreshInterval","pageSize","rowClickable","rowHref","KRTable","_scrollStyle","_data","_dataState","_page","_pageSize","_totalItems","_totalPages","_searchQuery","_canScrollLeft","_canScrollRight","_canScrollHorizontal","_columnPickerOpen","_filterPanelOpened","_filterPanelTab","_buckets","_filterPanelPos","_sorts","_resizing","_resizeObserver","_searchPositionLocked","_columnWidthsLocked","_model","def","path","picker","_handleFilterApply","_handleResizeMove","col","columnId","newWidth","startWidth","clientX","startX","min","max","_handleResizeEnd","_fetch","_initRefresh","ResizeObserver","_updateSearchPosition","observe","clearInterval","_refreshTimer","disconnect","column","sort","sortBy","sortDirection","sticky","resizable","filterable","facetable","_updateScrollFlags","_syncSlottedContent","_lockColumnWidths","headerCells","cols","getDisplayedColumns","cell","cellWidth","offsetWidth","row","rowIndex","slot","display","gap","refresh","goToPrevPage","goToNextPage","goToPage","page","_toSolrData","request","sorts","filterFields","queryFields","facetFields","filterData","limit","minimumCount","_toDbParams","searchable","and","ceil","fetch","response","res","totalElements","totalPages","_parseFacetResults","catch","err","rawBuckets","buckets","count","selectedVal","setInterval","_handleSearch","_getGridTemplateColumns","search","searchField","justifyContent","marginLeft","searchRect","currentOffset","_toggleColumnPicker","_toggleColumn","_handleRowMouseDown","getSelection","removeAllRanges","_handleRowClick","selection","_handleScroll","container","scrollLeft","scrollWidth","clientWidth","_handleResizeStart","headerCell","_handleSortClick","shiftKey","existingIndex","_renderSortIndicator","sortable","sortIndex","arrowStyle","transform","_handleAction","action","_handleKqlChange","_handleFilterPanelToggle","currentTarget","_handleKqlClear","_handleFilterClear","_handleFilterTextKeydown","_handleOperatorChange","_handleFilterStringChange","_handleFilterNumberChange","_handleFilterDateChange","_handleFilterBooleanChange","_handleFilterDateStartChange","_handleFilterDateEndChange","_handleFilterNumberStartChange","_handleFilterNumberEndChange","_handleFilterListChange","_handleFilterPanelTabChange","_handleBucketToggle","bucket","_renderCellContent","format","toLocaleString","currency","date","isoString","timeZone","_getHeaderCellClasses","align","_getCellClasses","_getCellStyle","leftOffset","rightOffset","_renderPagination","_renderCardHeader","_renderHeader","localeCompare","_renderStatus","_renderFilterPanel","valueInput","filterContent","bucketContent","panelBody","bucketLabel","checked","checkIcon","bucket__checkbox","_renderFilterRow","_renderTable","cells","KRSpinner","normalizedSize","normalizedColor","KRProgressBar","normalizedTrackColor","trackColor","KRFilePreview_1","KRFilePreview","_zoom","_panX","_panY","_dragging","_dragStartX","_dragStartY","_panStartX","_panStartY","src","_zoomLevel","_textContent","_handleDragMove","clientY","_handleDragEnd","_activePreview","preview","_isText","_loadTextContent","_handleDownload","_handleZoomIn","_handleZoomOut","_handleZoomReset","_handleDragStart","_getExtension","pop","_isImage","_isPdf","_isCsv","_formatCsv","lines","rows","line","colCount","colWidths","len","padEnd","_getFallbackIconClass","ext","_getFallbackIcon","scale","translateX","translateY","cursor","KRFileList","files","emptyMessage","_handleFileClick","file","url","_handleDelete","_getExtClass","_getExtIcon","metaText","meta","KRTextField","autocomplete","_dirty","_input","_handleInput","_handleChange","valid","live","ifDefined","minlength","maxlength","pattern","select","KRTextareaField","_textarea","KRDetailField","KRAutoSuggest","_requestId","_handleDocumentClick","_positionDropdown","requestId","console","inputRect","spaceAbove","_handleFocus","_scrollToHighlighted","highlighted","containerRect","highlightedRect","scrollIntoView","block","_handleClear","_handleOptionMouseEnter","_renderOption","footer","KRComboBox","_selectedOption","optionValue","optionLabel","fetchSelection","_loading","_resolveSelection","_getOptionValue","_open","_searchInput","_handleSearchInput","_handleSearchKeyDown","_handleTriggerKeyDown","_handleTriggerBlur","_getOptionLabel","fetchedValue","trigger__value","trigger__placeholder","trigger__icon","KRRadioCards","_focusedIndex","direction","_handleCardClick","nextIndex","_findNextEnabledIndex","cards","current","step","next","isDisabled","card","KRCheckbox","_syncFormValue","_handleClick","checkbox","checkbox__box","checkbox__check"],"mappings":"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","x_google_ignoreList":[0,1,2,3,5,6,7,8,9,11,12,15,18,32,33,34]}
|