@anguszhu/kroma-ui 0.1.0
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/LICENSE +21 -0
- package/README.md +185 -0
- package/dist/core/focusTrap.d.ts +3 -0
- package/dist/core/toastTimer.d.ts +13 -0
- package/dist/core/types.d.ts +35 -0
- package/dist/kroma-react.cjs +2 -0
- package/dist/kroma-react.cjs.map +1 -0
- package/dist/kroma-react.d.ts +2 -0
- package/dist/kroma-react.js +600 -0
- package/dist/kroma-react.js.map +1 -0
- package/dist/kroma-ui.css +804 -0
- package/dist/kroma-vue.cjs +2 -0
- package/dist/kroma-vue.cjs.map +1 -0
- package/dist/kroma-vue.d.ts +2 -0
- package/dist/kroma-vue.js +706 -0
- package/dist/kroma-vue.js.map +1 -0
- package/dist/kroma.css +804 -0
- package/dist/react/components/KrButton.d.ts +7 -0
- package/dist/react/components/KrChevron.d.ts +3 -0
- package/dist/react/components/KrDialog.d.ts +14 -0
- package/dist/react/components/KrEmpty.d.ts +7 -0
- package/dist/react/components/KrMenuItem.d.ts +7 -0
- package/dist/react/components/KrOverlay.d.ts +11 -0
- package/dist/react/components/KrSearchInput.d.ts +11 -0
- package/dist/react/components/KrSection.d.ts +6 -0
- package/dist/react/components/KrSelectGroup.d.ts +21 -0
- package/dist/react/components/KrSelectItem.d.ts +17 -0
- package/dist/react/components/KrSwitch.d.ts +7 -0
- package/dist/react/components/KrTextField.d.ts +10 -0
- package/dist/react/components/KrToast.d.ts +15 -0
- package/dist/react/components/KrToggleRow.d.ts +10 -0
- package/dist/react/hooks/useCssTransition.d.ts +12 -0
- package/dist/react/index.d.ts +28 -0
- package/dist/react/utils/cx.d.ts +1 -0
- package/dist/vue/components/KrButton.vue.d.ts +20 -0
- package/dist/vue/components/KrChevron.vue.d.ts +3 -0
- package/dist/vue/components/KrDialog.vue.d.ts +34 -0
- package/dist/vue/components/KrEmpty.vue.d.ts +17 -0
- package/dist/vue/components/KrMenuItem.vue.d.ts +15 -0
- package/dist/vue/components/KrOverlay.vue.d.ts +28 -0
- package/dist/vue/components/KrSearchInput.vue.d.ts +30 -0
- package/dist/vue/components/KrSection.vue.d.ts +17 -0
- package/dist/vue/components/KrSelectGroup.vue.d.ts +44 -0
- package/dist/vue/components/KrSelectItem.vue.d.ts +25 -0
- package/dist/vue/components/KrSwitch.vue.d.ts +12 -0
- package/dist/vue/components/KrTextField.vue.d.ts +13 -0
- package/dist/vue/components/KrToast.vue.d.ts +32 -0
- package/dist/vue/components/KrToggleRow.vue.d.ts +18 -0
- package/dist/vue/index.d.ts +20 -0
- package/package.json +92 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue");var t=(0,e.defineComponent)({__name:`KrButton`,props:{type:{default:`primary`}},setup(t){return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{class:(0,e.normalizeClass)([`kr-button`,`kr-button--`+t.type])},[(0,e.renderSlot)(n.$slots,`default`)],2))}}),n=(0,e.defineComponent)({__name:`KrOverlay`,props:{modelValue:{type:Boolean},centered:{type:Boolean,default:!1},background:{},contentStyle:{type:[Boolean,null,String,Object,Array]},contentTransition:{default:`fade-in`}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=n;return(n,i)=>((0,e.openBlock)(),(0,e.createBlock)(e.Transition,{name:`kr-${t.contentTransition}-content`},{default:(0,e.withCtx)(()=>[t.modelValue?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:(0,e.normalizeClass)([`kr-overlay`,{"kr-overlay--centered":t.centered}]),style:(0,e.normalizeStyle)({"--kr-overlay-background":t.background}),role:`application`},[(0,e.createElementVNode)(`div`,{class:`kr-overlay__scrim`,onClick:i[0]||=e=>r(`update:modelValue`,!1)}),(0,e.createElementVNode)(`div`,{class:`kr-overlay__content`,style:(0,e.normalizeStyle)(t.contentStyle)},[(0,e.renderSlot)(n.$slots,`default`)],4)],6)):(0,e.createCommentVNode)(``,!0)]),_:3},8,[`name`]))}}),r={class:`kr-section`},i={key:0,class:`kr-section__header`},a={key:0,class:`kr-section__title`},o={key:1,class:`kr-section__subtitle`},s={class:`kr-section__content`},c=(0,e.defineComponent)({__name:`KrSection`,props:{title:{},subtitle:{}},setup(t){return(n,c)=>((0,e.openBlock)(),(0,e.createElementBlock)(`section`,r,[t.title||t.subtitle?((0,e.openBlock)(),(0,e.createElementBlock)(`header`,i,[t.title?((0,e.openBlock)(),(0,e.createElementBlock)(`h1`,a,(0,e.toDisplayString)(t.title),1)):(0,e.createCommentVNode)(``,!0),t.subtitle?((0,e.openBlock)(),(0,e.createElementBlock)(`h2`,o,(0,e.toDisplayString)(t.subtitle),1)):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,s,[(0,e.renderSlot)(n.$slots,`default`)])]))}}),l=[`title`],u=[`name`,`value`,`checked`,`disabled`,`aria-label`],d={class:`kr-select-item__content`},f={key:0,class:`kr-select-item__label`},p=(0,e.defineComponent)({__name:`KrSelectItem`,props:{value:{},label:{},title:{},selected:{},disabled:{type:Boolean},variant:{default:`default`},shape:{default:`rounded`},circle:{type:Boolean},stretch:{type:Boolean},showItemLabel:{type:Boolean,default:!0}},emits:[`update:selected`,`select`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.inject)(`krSelectGroupContext`,null),o=(0,e.computed)(()=>(a?.modelValue?.value??r.selected)===r.value),s=(0,e.computed)(()=>a?.variant?.value??r.variant),c=(0,e.computed)(()=>r.circle?`circle`:a?.shape?.value??r.shape),p=(0,e.computed)(()=>a?.showItemLabel?.value??r.showItemLabel?r.label??r.title:``);function m(){r.disabled||(i(`update:selected`,r.value),i(`select`,r.value),a?.onSelect?.(r.value))}let h=(0,e.computed)(()=>({"kr-select-item":!0,"kr-select-item--selected":o.value,"kr-select-item--disabled":r.disabled,"kr-select-item--stretch":r.stretch,[`kr-select-item--${s.value}`]:!0,[`kr-select-item--${c.value}`]:!0}));return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`label`,{class:(0,e.normalizeClass)([`kr-select-item`,h.value]),title:t.title},[(0,e.createElementVNode)(`input`,{class:`kr-select-item__input`,type:`radio`,name:(0,e.unref)(a)?.name,value:t.value,checked:o.value,disabled:t.disabled,"aria-label":t.label||t.title||String(t.value),onChange:m},null,40,u),(0,e.createElementVNode)(`div`,d,[(0,e.renderSlot)(n.$slots,`default`)]),p.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,f,(0,e.toDisplayString)(p.value),1)):(0,e.createCommentVNode)(``,!0)],10,l))}}),m={key:0,class:`kr-select-group__header`},h={key:0,class:`kr-select-group__header__title`},g={key:1,class:`kr-select-group__header__subtitle`},_={key:1,class:`kr-select-item-icon`,viewBox:`0 0 32 32`},ee=[`d`],v=(0,e.defineComponent)({__name:`KrSelectGroup`,props:{title:{},subtitle:{},items:{},showItemLabel:{type:Boolean,default:!0},showTooltip:{type:Boolean,default:!0},modelValue:{},hideSeparator:{type:Boolean},columns:{default:`auto`},gap:{default:`12px`},variant:{default:`default`},shape:{default:`rounded`}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=t,i=n,a=`kr-select-group-${Math.random().toString(36).slice(2)}`,o=(0,e.computed)(()=>r.columns===`auto`?{display:`flex`,flexWrap:`wrap`,gap:r.gap}:{display:`grid`,gridTemplateColumns:`repeat(${r.columns}, 1fr)`,gap:r.gap});function s(e){i(`update:modelValue`,e)}return(0,e.provide)(`krSelectGroupContext`,{modelValue:(0,e.computed)(()=>r.modelValue),variant:(0,e.computed)(()=>r.variant),shape:(0,e.computed)(()=>r.shape),showItemLabel:(0,e.computed)(()=>r.showItemLabel),name:a,onSelect:s}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`kr-select-group`,{"kr-select-group--with-separator":!t.hideSeparator}])},[t.title||t.subtitle?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,m,[t.title?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,h,(0,e.toDisplayString)(t.title),1)):(0,e.createCommentVNode)(``,!0),t.subtitle?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,g,(0,e.toDisplayString)(t.subtitle),1)):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:`kr-select-group__items`,style:(0,e.normalizeStyle)(o.value)},[n.$slots.item?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:0},(0,e.renderList)(t.items,r=>(0,e.renderSlot)(n.$slots,`item`,{item:r,selected:t.modelValue===r.value,setSelected:s},void 0,void 0,r.value)),128)):((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:1},(0,e.renderList)(t.items,n=>((0,e.openBlock)(),(0,e.createBlock)(p,{key:n.value,value:n.value,label:n.label,selected:t.modelValue,disabled:n.disabled,variant:t.variant,shape:t.shape,"show-item-label":t.showItemLabel,title:t.showTooltip?n.label:void 0,onSelect:s},{default:(0,e.withCtx)(()=>[t.variant===`color`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`kr-color-swatch`,style:(0,e.normalizeStyle)({background:n.hex})},null,4)):t.variant===`icon`&&n.icon?((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,_,[(0,e.createElementVNode)(`path`,{d:n.icon},null,8,ee)])):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:2},[(0,e.createTextVNode)((0,e.toDisplayString)(n.label),1)],64))]),_:2},1032,[`value`,`label`,`selected`,`disabled`,`variant`,`shape`,`show-item-label`,`title`]))),128))],4)],2))}}),y=[`data-checked`,`data-disabled`],b=(0,e.defineComponent)({__name:`KrSwitch`,props:{modelValue:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},inset:{type:Boolean,default:!1}},setup(t){return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`kr-switch`,{"kr-switch--inset":t.inset}]),"data-checked":t.modelValue,"data-disabled":t.disabled,"aria-hidden":`true`},[...r[0]||=[(0,e.createElementVNode)(`div`,{class:`kr-switch__track`},null,-1),(0,e.createElementVNode)(`div`,{class:`kr-switch__thumb`},null,-1)]],10,y))}}),x=[`disabled`,`aria-label`],S={class:`kr-toggle-row__label`},C={key:0,class:`kr-toggle-row__title`},w={key:1,class:`kr-toggle-row__subtitle`},T=(0,e.defineComponent)({__name:`KrToggleRow`,props:{modelValue:{type:Boolean,default:!1},title:{},subtitle:{},disabled:{type:Boolean,default:!1},hideSeparator:{type:Boolean,default:!1}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)({get(){return r.modelValue},set(e){i(`update:modelValue`,e)}});return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`label`,{class:(0,e.normalizeClass)([`kr-toggle-row`,{"kr-toggle-row--with-separator":!t.hideSeparator,"kr-toggle-row--disabled":t.disabled}])},[(0,e.withDirectives)((0,e.createElementVNode)(`input`,{class:`kr-toggle-row__native`,type:`checkbox`,role:`switch`,"onUpdate:modelValue":r[0]||=e=>a.value=e,disabled:t.disabled,"aria-label":t.title},null,8,x),[[e.vModelCheckbox,a.value]]),(0,e.createElementVNode)(`div`,S,[t.title?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,C,(0,e.toDisplayString)(t.title),1)):(0,e.createCommentVNode)(``,!0),t.subtitle?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,w,(0,e.toDisplayString)(t.subtitle),1)):(0,e.createCommentVNode)(``,!0)]),(0,e.createVNode)(b,{"model-value":a.value,disabled:t.disabled},null,8,[`model-value`,`disabled`])],2))}}),E={class:`kr-textfield`},D={key:0,class:`kr-textfield__label-text`},O=(0,e.defineComponent)({__name:`KrTextField`,props:{modelValue:{},label:{},error:{type:Boolean},autofocus:{type:Boolean}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)({get(){return r.modelValue},set(e){i(`update:modelValue`,e)}}),o={mounted:e=>r.autofocus&&e.focus()};return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`label`,E,[t.label?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,D,(0,e.toDisplayString)(t.label),1)):(0,e.createCommentVNode)(``,!0),(0,e.withDirectives)((0,e.createElementVNode)(`input`,(0,e.mergeProps)({type:`text`,class:[`kr-textfield__input`,{"kr-textfield__input--error":t.error}],"onUpdate:modelValue":r[0]||=e=>a.value=e},n.$attrs),null,16),[[e.vModelText,a.value,void 0,{trim:!0}],[o]])]))}}),k={class:`kr-search-input`},A={class:`kr-search-input__icon`},j=[`autofocus`,`aria-label`],M=[`aria-label`],N=(0,e.defineComponent)({__name:`KrSearchInput`,props:{modelValue:{default:``},autofocus:{type:Boolean,default:!0},label:{default:`Search`},clearLabel:{default:`Clear`}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=t,i=(0,e.ref)(null),a=n,o=(0,e.computed)({get(){return r.modelValue},set(e){a(`update:modelValue`,e),r.autofocus&&i.value?.focus()}});function s(){o.value=``}return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,k,[(0,e.createElementVNode)(`div`,A,[(0,e.renderSlot)(n.$slots,`icon`,{},()=>[r[1]||=(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,width:`1em`,height:`1em`},[(0,e.createElementVNode)(`circle`,{cx:`11`,cy:`11`,r:`7`,stroke:`currentColor`,"stroke-width":`2`}),(0,e.createElementVNode)(`path`,{d:`M20 20L16.65 16.65`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})],-1)])]),(0,e.withDirectives)((0,e.createElementVNode)(`input`,{ref_key:`inputRef`,ref:i,class:`kr-search-input__input`,type:`text`,"onUpdate:modelValue":r[0]||=e=>o.value=e,autofocus:t.autofocus,"aria-label":t.label},null,8,j),[[e.vModelText,o.value]]),(0,e.withDirectives)((0,e.createElementVNode)(`div`,{class:`kr-search-input__icon kr-search-input__icon--clear`,onClick:s,role:`button`,tabindex:`0`,"aria-label":t.clearLabel,onKeydown:(0,e.withKeys)(s,[`enter`])},[(0,e.renderSlot)(n.$slots,`clear-icon`,{},()=>[r[2]||=(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,width:`1em`,height:`1em`},[(0,e.createElementVNode)(`path`,{d:`M6 6L18 18M18 6L6 18`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})],-1)])],40,M),[[e.vShow,o.value]])]))}});function P(e){let t,n;function r(){t!==void 0&&(clearTimeout(t),t=void 0),n!==void 0&&(clearInterval(n),n=void 0)}function i({timeoutSeconds:i,showCountdown:a}){if(r(),e.onTick?.(Math.max(0,Math.ceil(i))),i<=0)return;let o=Date.now()+i*1e3;t=setTimeout(()=>{e.onDismiss()},i*1e3),a&&(n=setInterval(()=>{e.onTick?.(Math.max(0,Math.ceil((o-Date.now())/1e3)))},200))}return{start:i,clear:r}}var F={key:0,class:`kr-toast__icon`},I={key:0,viewBox:`0 0 24 24`,fill:`none`,width:`1em`,height:`1em`},L={key:1,viewBox:`0 0 24 24`,fill:`none`,width:`1em`,height:`1em`},te={class:`kr-toast__text`},R={key:1,class:`kr-toast__actions`},z={key:0,class:`kr-toast__countdown`,"aria-hidden":`true`},B=(0,e.defineComponent)({__name:`KrToast`,props:{show:{type:Boolean,default:!1},text:{},icon:{},timeout:{default:3},actionText:{},showCountdown:{type:Boolean}},emits:[`update:show`,`action`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)({get(){return r.show},set(e){i(`update:show`,e)}}),o=(0,e.ref)(r.timeout),s=P({onTick:e=>{o.value=e},onDismiss:()=>{a.value=!1}});function c(){i(`action`),a.value=!1}function l(){r.actionText||(a.value=!1)}return(0,e.watch)(()=>r.show,e=>{e?s.start({timeoutSeconds:r.timeout,showCountdown:r.showCountdown}):s.clear()},{immediate:!0}),(0,e.onBeforeUnmount)(s.clear),(n,r)=>((0,e.openBlock)(),(0,e.createBlock)(e.Transition,{name:`kr-fade-in-up`},{default:(0,e.withCtx)(()=>[a.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`kr-toast`,role:`status`,"aria-live":`polite`,onClick:l},[t.icon?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,F,[(0,e.renderSlot)(n.$slots,`icon`,{},()=>[t.icon===`success`?((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,I,[...r[0]||=[(0,e.createElementVNode)(`path`,{d:`M20 6L9 17L4 12`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]])):((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,L,[...r[1]||=[(0,e.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`currentColor`,"stroke-width":`2`},null,-1),(0,e.createElementVNode)(`path`,{d:`M12 8V13`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},null,-1),(0,e.createElementVNode)(`circle`,{cx:`12`,cy:`16`,r:`1`,fill:`currentColor`},null,-1)]]))])])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,te,(0,e.toDisplayString)(t.text),1),t.actionText?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,R,[(0,e.createElementVNode)(`button`,{class:`kr-toast__action`,type:`button`,onClick:(0,e.withModifiers)(c,[`stop`])},(0,e.toDisplayString)(t.actionText),1),t.showCountdown?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,z,(0,e.toDisplayString)(o.value)+`s`,1)):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0)]),_:3}))}}),V={class:`kr-empty`},H={class:`kr-empty__icon`},U={class:`kr-empty__title`},W={class:`kr-empty__description`},G=(0,e.defineComponent)({__name:`KrEmpty`,props:{title:{},description:{}},setup(t){return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,V,[(0,e.createElementVNode)(`div`,H,[(0,e.renderSlot)(n.$slots,`icon`,{},()=>[r[0]||=(0,e.createElementVNode)(`svg`,{viewBox:`0 0 64 64`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},[(0,e.createElementVNode)(`rect`,{x:`10`,y:`24`,width:`44`,height:`30`,rx:`4`,stroke:`var(--kr-on-surface-tertiary)`,"stroke-width":`2`}),(0,e.createElementVNode)(`path`,{d:`M10 26L18 10H46L54 26`,stroke:`var(--kr-on-surface-tertiary)`,"stroke-width":`2`,"stroke-linejoin":`round`}),(0,e.createElementVNode)(`path`,{d:`M24 34H40`,stroke:`var(--kr-theme)`,"stroke-width":`2`,"stroke-linecap":`round`})],-1)])]),(0,e.createElementVNode)(`h1`,U,(0,e.toDisplayString)(t.title),1),(0,e.createElementVNode)(`p`,W,(0,e.toDisplayString)(t.description),1)]))}}),K={key:0,class:`kr-menu-item--divider`},q=[`disabled`],J={class:`kr-menu-item__content`},Y={key:0,class:`kr-menu-item__icon`,"aria-hidden":`true`},X=(0,e.defineComponent)({__name:`KrMenuItem`,props:{title:{},value:{},disabled:{type:Boolean},type:{}},setup(t){return(n,r)=>t.type===`divider`?((0,e.openBlock)(),(0,e.createElementBlock)(`hr`,K)):((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,class:`kr-menu-item`,disabled:t.disabled,role:`menuitem`},[(0,e.createElementVNode)(`div`,J,(0,e.toDisplayString)(t.title),1),n.$slots.icon?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Y,[(0,e.renderSlot)(n.$slots,`icon`)])):(0,e.createCommentVNode)(``,!0)],8,q))}});function Z(e){return Array.from(e?.querySelectorAll(`button:not([disabled]), input:not([disabled])`)??[])}function Q(e){let t=Z(e),n=t.findIndex(e=>e===document.activeElement);(n===t.length-1?t[0]:t[n+1])?.focus()}function ne(e){let t=Z(e),n=t.findIndex(e=>e===document.activeElement);(n<=0?t[t.length-1]:t[n-1])?.focus()}var re=[`open`,`onKeydown`],ie={key:0,class:`kr-dialog__title`},ae={class:`kr-dialog__content`},oe={key:0,class:`kr-dialog__content__text`},$={key:1,class:`kr-dialog__content__form`},se={class:`kr-dialog__actions`},ce=(0,e.defineComponent)({__name:`KrDialog`,props:{show:{type:Boolean,default:!1},title:{default:``},text:{default:``},actions:{default:()=>[]},cancelText:{default:`Cancel`},hideCancel:{type:Boolean,default:!1}},emits:[`update:show`],setup(r,{emit:i}){let a=r,o=i,s=(0,e.ref)(!1),c=(0,e.computed)({get(){return a.show},set(e){o(`update:show`,e)}});function l(){o(`update:show`,!1)}async function u(e){if(!s.value){s.value=!0;try{await e()}finally{s.value=!1}}}let d=(0,e.ref)(null);function f(e){e.preventDefault(),Q(d.value)}function p(e){e.preventDefault(),ne(d.value)}return(i,a)=>((0,e.openBlock)(),(0,e.createBlock)(n,{modelValue:c.value,"onUpdate:modelValue":a[1]||=e=>c.value=e,centered:``},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`dialog`,{ref_key:`dialogRef`,ref:d,class:`kr-dialog`,open:c.value,onKeydown:[a[0]||=(0,e.withKeys)((0,e.withModifiers)(e=>c.value=!1,[`prevent`]),[`esc`]),(0,e.withKeys)((0,e.withModifiers)(f,[`exact`]),[`tab`]),(0,e.withKeys)((0,e.withModifiers)(p,[`shift`]),[`tab`])]},[r.title?((0,e.openBlock)(),(0,e.createElementBlock)(`h2`,ie,(0,e.toDisplayString)(r.title),1)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,ae,[r.text?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,oe,(0,e.toDisplayString)(r.text),1)):(0,e.createCommentVNode)(``,!0),i.$slots.default?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,$,[(0,e.renderSlot)(i.$slots,`default`)])):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,se,[r.hideCancel?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(t,{key:0,type:`secondary`,disabled:s.value,onClick:l},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(r.cancelText),1)]),_:1},8,[`disabled`])),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(r.actions,n=>((0,e.openBlock)(),(0,e.createBlock)(t,{key:n.text,disabled:s.value||n.disabled,onClick:e=>u(n.action)},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(n.text),1)]),_:2},1032,[`disabled`,`onClick`]))),128))])],40,re)]),_:3},8,[`modelValue`]))}}),le={class:`kr-chevron`},ue=(0,e.defineComponent)({__name:`KrChevron`,setup(t){return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,le))}});exports.KrButton=t,exports.KrChevron=ue,exports.KrDialog=ce,exports.KrEmpty=G,exports.KrMenuItem=X,exports.KrOverlay=n,exports.KrSearchInput=N,exports.KrSection=c,exports.KrSelectGroup=v,exports.KrSelectItem=p,exports.KrSwitch=b,exports.KrTextField=O,exports.KrToast=B,exports.KrToggleRow=T;
|
|
2
|
+
//# sourceMappingURL=kroma-vue.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kroma-vue.cjs","names":["$slots","$attrs","$slots","$slots"],"sources":["../src/vue/components/KrButton.vue","../src/vue/components/KrButton.vue","../src/vue/components/KrOverlay.vue","../src/vue/components/KrOverlay.vue","../src/vue/components/KrSection.vue","../src/vue/components/KrSection.vue","../src/vue/components/KrSelectItem.vue","../src/vue/components/KrSelectItem.vue","../src/vue/components/KrSelectGroup.vue","../src/vue/components/KrSelectGroup.vue","../src/vue/components/KrSwitch.vue","../src/vue/components/KrSwitch.vue","../src/vue/components/KrToggleRow.vue","../src/vue/components/KrToggleRow.vue","../src/vue/components/KrTextField.vue","../src/vue/components/KrTextField.vue","../src/vue/components/KrSearchInput.vue","../src/vue/components/KrSearchInput.vue","../src/core/toastTimer.ts","../src/vue/components/KrToast.vue","../src/vue/components/KrToast.vue","../src/vue/components/KrEmpty.vue","../src/vue/components/KrEmpty.vue","../src/vue/components/KrMenuItem.vue","../src/vue/components/KrMenuItem.vue","../src/core/focusTrap.ts","../src/vue/components/KrDialog.vue","../src/vue/components/KrDialog.vue","../src/vue/components/KrChevron.vue","../src/vue/components/KrChevron.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport '../../styles/components/KrButton.css'\nimport type { KrButtonType } from '../../core/types'\n\nexport type { KrButtonType }\n\nwithDefaults(defineProps<{\n type?: KrButtonType\n}>(), {\n type: 'primary',\n})\n</script>\n\n<template>\n <button class=\"kr-button\" :class=\"'kr-button--' + type\">\n <slot />\n </button>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrButton.css'\nimport type { KrButtonType } from '../../core/types'\n\nexport type { KrButtonType }\n\nwithDefaults(defineProps<{\n type?: KrButtonType\n}>(), {\n type: 'primary',\n})\n</script>\n\n<template>\n <button class=\"kr-button\" :class=\"'kr-button--' + type\">\n <slot />\n </button>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrOverlay.css'\nimport type { StyleValue } from 'vue'\n\nconst props = withDefaults(defineProps<{\n modelValue: boolean\n centered?: boolean\n background?: string\n contentStyle?: StyleValue\n contentTransition?: 'fade-in' | 'fade-in-up'\n}>(), {\n centered: false,\n contentTransition: 'fade-in',\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n</script>\n\n<template>\n <Transition :name=\"`kr-${contentTransition}-content`\">\n <div\n v-if=\"modelValue\"\n class=\"kr-overlay\"\n :class=\"{ 'kr-overlay--centered': centered }\"\n :style=\"{ '--kr-overlay-background': background }\"\n role=\"application\"\n >\n <div class=\"kr-overlay__scrim\" @click=\"emit('update:modelValue', false)\"></div>\n <div class=\"kr-overlay__content\" :style=\"contentStyle\">\n <slot />\n </div>\n </div>\n </Transition>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrOverlay.css'\nimport type { StyleValue } from 'vue'\n\nconst props = withDefaults(defineProps<{\n modelValue: boolean\n centered?: boolean\n background?: string\n contentStyle?: StyleValue\n contentTransition?: 'fade-in' | 'fade-in-up'\n}>(), {\n centered: false,\n contentTransition: 'fade-in',\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n</script>\n\n<template>\n <Transition :name=\"`kr-${contentTransition}-content`\">\n <div\n v-if=\"modelValue\"\n class=\"kr-overlay\"\n :class=\"{ 'kr-overlay--centered': centered }\"\n :style=\"{ '--kr-overlay-background': background }\"\n role=\"application\"\n >\n <div class=\"kr-overlay__scrim\" @click=\"emit('update:modelValue', false)\"></div>\n <div class=\"kr-overlay__content\" :style=\"contentStyle\">\n <slot />\n </div>\n </div>\n </Transition>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrSection.css'\ndefineProps<{\n title?: string\n subtitle?: string\n}>()\n</script>\n\n<template>\n <section class=\"kr-section\">\n <header v-if=\"title || subtitle\" class=\"kr-section__header\">\n <h1 class=\"kr-section__title\" v-if=\"title\">{{ title }}</h1>\n <h2 class=\"kr-section__subtitle\" v-if=\"subtitle\">{{ subtitle }}</h2>\n </header>\n <div class=\"kr-section__content\">\n <slot />\n </div>\n </section>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrSection.css'\ndefineProps<{\n title?: string\n subtitle?: string\n}>()\n</script>\n\n<template>\n <section class=\"kr-section\">\n <header v-if=\"title || subtitle\" class=\"kr-section__header\">\n <h1 class=\"kr-section__title\" v-if=\"title\">{{ title }}</h1>\n <h2 class=\"kr-section__subtitle\" v-if=\"subtitle\">{{ subtitle }}</h2>\n </header>\n <div class=\"kr-section__content\">\n <slot />\n </div>\n </section>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrSelectItem.css'\nimport { computed, inject, type ComputedRef } from 'vue'\nimport type { KrSelectVariant, KrSelectShape, KrSelectItemProps } from '../../core/types'\n\nexport type { KrSelectVariant, KrSelectShape, KrSelectItemProps }\n\ninterface KrSelectGroupContext {\n modelValue: ComputedRef<string | number>\n variant: ComputedRef<KrSelectVariant | undefined>\n shape: ComputedRef<KrSelectShape | undefined>\n showItemLabel: ComputedRef<boolean>\n name: string\n onSelect: (value: string | number) => void\n}\n\nconst props = withDefaults(defineProps<KrSelectItemProps>(), {\n variant: 'default',\n shape: 'rounded',\n showItemLabel: true,\n})\n\nconst emit = defineEmits<{\n 'update:selected': [value: string | number]\n select: [value: string | number]\n}>()\n\n// Present when nested inside a <KrSelectGroup>; absent when used standalone.\nconst groupContext = inject<KrSelectGroupContext | null>('krSelectGroupContext', null)\n\nconst isSelected = computed(() => {\n const currentValue = groupContext?.modelValue?.value ?? props.selected\n return currentValue === props.value\n})\n\nconst finalVariant = computed(() => groupContext?.variant?.value ?? props.variant)\n\nconst finalShape = computed(() => {\n if (props.circle) return 'circle'\n return groupContext?.shape?.value ?? props.shape\n})\n\nconst displayLabel = computed(() => {\n const showLabel = groupContext?.showItemLabel?.value ?? props.showItemLabel\n return showLabel ? (props.label ?? props.title) : ''\n})\n\nfunction handleSelect() {\n if (props.disabled) return\n\n emit('update:selected', props.value)\n emit('select', props.value)\n groupContext?.onSelect?.(props.value)\n}\n\nconst itemClasses = computed(() => ({\n 'kr-select-item': true,\n 'kr-select-item--selected': isSelected.value,\n 'kr-select-item--disabled': props.disabled,\n 'kr-select-item--stretch': props.stretch,\n [`kr-select-item--${finalVariant.value}`]: true,\n [`kr-select-item--${finalShape.value}`]: true,\n}))\n</script>\n\n<template>\n <label class=\"kr-select-item\" :class=\"itemClasses\" :title=\"title\">\n <input\n class=\"kr-select-item__input\"\n type=\"radio\"\n :name=\"groupContext?.name\"\n :value=\"value\"\n :checked=\"isSelected\"\n :disabled=\"disabled\"\n :aria-label=\"label || title || String(value)\"\n @change=\"handleSelect\"\n />\n\n <div class=\"kr-select-item__content\">\n <slot />\n </div>\n\n <div v-if=\"displayLabel\" class=\"kr-select-item__label\">\n {{ displayLabel }}\n </div>\n </label>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrSelectItem.css'\nimport { computed, inject, type ComputedRef } from 'vue'\nimport type { KrSelectVariant, KrSelectShape, KrSelectItemProps } from '../../core/types'\n\nexport type { KrSelectVariant, KrSelectShape, KrSelectItemProps }\n\ninterface KrSelectGroupContext {\n modelValue: ComputedRef<string | number>\n variant: ComputedRef<KrSelectVariant | undefined>\n shape: ComputedRef<KrSelectShape | undefined>\n showItemLabel: ComputedRef<boolean>\n name: string\n onSelect: (value: string | number) => void\n}\n\nconst props = withDefaults(defineProps<KrSelectItemProps>(), {\n variant: 'default',\n shape: 'rounded',\n showItemLabel: true,\n})\n\nconst emit = defineEmits<{\n 'update:selected': [value: string | number]\n select: [value: string | number]\n}>()\n\n// Present when nested inside a <KrSelectGroup>; absent when used standalone.\nconst groupContext = inject<KrSelectGroupContext | null>('krSelectGroupContext', null)\n\nconst isSelected = computed(() => {\n const currentValue = groupContext?.modelValue?.value ?? props.selected\n return currentValue === props.value\n})\n\nconst finalVariant = computed(() => groupContext?.variant?.value ?? props.variant)\n\nconst finalShape = computed(() => {\n if (props.circle) return 'circle'\n return groupContext?.shape?.value ?? props.shape\n})\n\nconst displayLabel = computed(() => {\n const showLabel = groupContext?.showItemLabel?.value ?? props.showItemLabel\n return showLabel ? (props.label ?? props.title) : ''\n})\n\nfunction handleSelect() {\n if (props.disabled) return\n\n emit('update:selected', props.value)\n emit('select', props.value)\n groupContext?.onSelect?.(props.value)\n}\n\nconst itemClasses = computed(() => ({\n 'kr-select-item': true,\n 'kr-select-item--selected': isSelected.value,\n 'kr-select-item--disabled': props.disabled,\n 'kr-select-item--stretch': props.stretch,\n [`kr-select-item--${finalVariant.value}`]: true,\n [`kr-select-item--${finalShape.value}`]: true,\n}))\n</script>\n\n<template>\n <label class=\"kr-select-item\" :class=\"itemClasses\" :title=\"title\">\n <input\n class=\"kr-select-item__input\"\n type=\"radio\"\n :name=\"groupContext?.name\"\n :value=\"value\"\n :checked=\"isSelected\"\n :disabled=\"disabled\"\n :aria-label=\"label || title || String(value)\"\n @change=\"handleSelect\"\n />\n\n <div class=\"kr-select-item__content\">\n <slot />\n </div>\n\n <div v-if=\"displayLabel\" class=\"kr-select-item__label\">\n {{ displayLabel }}\n </div>\n </label>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrSelectGroup.css'\nimport { provide, computed } from 'vue'\nimport KrSelectItem from './KrSelectItem.vue'\nimport type { KrSelectShape, KrSelectVariant, KrSelectItemData } from '../../core/types'\n\nexport type { KrSelectItemData }\n\nconst props = withDefaults(defineProps<{\n title?: string\n subtitle?: string\n items: KrSelectItemData[]\n showItemLabel?: boolean\n showTooltip?: boolean\n modelValue: string | number\n hideSeparator?: boolean\n columns?: number | 'auto'\n gap?: string\n variant?: KrSelectVariant\n shape?: KrSelectShape\n}>(), {\n variant: 'default',\n shape: 'rounded',\n columns: 'auto',\n gap: '12px',\n showItemLabel: true,\n showTooltip: true,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | number]\n}>()\n\nconst groupName = `kr-select-group-${Math.random().toString(36).slice(2)}`\n\nconst layoutStyle = computed(() => {\n if (props.columns === 'auto') {\n return {\n display: 'flex',\n flexWrap: 'wrap' as const,\n gap: props.gap,\n }\n }\n return {\n display: 'grid',\n gridTemplateColumns: `repeat(${props.columns}, 1fr)`,\n gap: props.gap,\n }\n})\n\nfunction handleSelect(value: string | number) {\n emit('update:modelValue', value)\n}\n\nprovide('krSelectGroupContext', {\n modelValue: computed(() => props.modelValue),\n variant: computed(() => props.variant),\n shape: computed(() => props.shape),\n showItemLabel: computed(() => props.showItemLabel),\n name: groupName,\n onSelect: handleSelect,\n})\n</script>\n\n<template>\n <div class=\"kr-select-group\" :class=\"{ 'kr-select-group--with-separator': !hideSeparator }\">\n <div v-if=\"title || subtitle\" class=\"kr-select-group__header\">\n <div v-if=\"title\" class=\"kr-select-group__header__title\">{{ title }}</div>\n <div v-if=\"subtitle\" class=\"kr-select-group__header__subtitle\">{{ subtitle }}</div>\n </div>\n\n <div class=\"kr-select-group__items\" :style=\"layoutStyle\">\n <template v-if=\"$slots.item\">\n <template v-for=\"item in items\" :key=\"item.value\">\n <slot name=\"item\" :item=\"item\" :selected=\"modelValue === item.value\" :set-selected=\"handleSelect\" />\n </template>\n </template>\n\n <template v-else>\n <KrSelectItem\n v-for=\"item in items\"\n :key=\"item.value\"\n :value=\"item.value\"\n :label=\"item.label\"\n :selected=\"modelValue\"\n :disabled=\"item.disabled\"\n :variant=\"variant\"\n :shape=\"shape\"\n :show-item-label=\"showItemLabel\"\n :title=\"showTooltip ? item.label : undefined\"\n @select=\"handleSelect\"\n >\n <template v-if=\"variant === 'color'\">\n <div class=\"kr-color-swatch\" :style=\"{ background: item.hex }\" />\n </template>\n\n <template v-else-if=\"variant === 'icon' && item.icon\">\n <svg class=\"kr-select-item-icon\" viewBox=\"0 0 32 32\">\n <path :d=\"item.icon\" />\n </svg>\n </template>\n\n <template v-else>\n {{ item.label }}\n </template>\n </KrSelectItem>\n </template>\n </div>\n </div>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrSelectGroup.css'\nimport { provide, computed } from 'vue'\nimport KrSelectItem from './KrSelectItem.vue'\nimport type { KrSelectShape, KrSelectVariant, KrSelectItemData } from '../../core/types'\n\nexport type { KrSelectItemData }\n\nconst props = withDefaults(defineProps<{\n title?: string\n subtitle?: string\n items: KrSelectItemData[]\n showItemLabel?: boolean\n showTooltip?: boolean\n modelValue: string | number\n hideSeparator?: boolean\n columns?: number | 'auto'\n gap?: string\n variant?: KrSelectVariant\n shape?: KrSelectShape\n}>(), {\n variant: 'default',\n shape: 'rounded',\n columns: 'auto',\n gap: '12px',\n showItemLabel: true,\n showTooltip: true,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | number]\n}>()\n\nconst groupName = `kr-select-group-${Math.random().toString(36).slice(2)}`\n\nconst layoutStyle = computed(() => {\n if (props.columns === 'auto') {\n return {\n display: 'flex',\n flexWrap: 'wrap' as const,\n gap: props.gap,\n }\n }\n return {\n display: 'grid',\n gridTemplateColumns: `repeat(${props.columns}, 1fr)`,\n gap: props.gap,\n }\n})\n\nfunction handleSelect(value: string | number) {\n emit('update:modelValue', value)\n}\n\nprovide('krSelectGroupContext', {\n modelValue: computed(() => props.modelValue),\n variant: computed(() => props.variant),\n shape: computed(() => props.shape),\n showItemLabel: computed(() => props.showItemLabel),\n name: groupName,\n onSelect: handleSelect,\n})\n</script>\n\n<template>\n <div class=\"kr-select-group\" :class=\"{ 'kr-select-group--with-separator': !hideSeparator }\">\n <div v-if=\"title || subtitle\" class=\"kr-select-group__header\">\n <div v-if=\"title\" class=\"kr-select-group__header__title\">{{ title }}</div>\n <div v-if=\"subtitle\" class=\"kr-select-group__header__subtitle\">{{ subtitle }}</div>\n </div>\n\n <div class=\"kr-select-group__items\" :style=\"layoutStyle\">\n <template v-if=\"$slots.item\">\n <template v-for=\"item in items\" :key=\"item.value\">\n <slot name=\"item\" :item=\"item\" :selected=\"modelValue === item.value\" :set-selected=\"handleSelect\" />\n </template>\n </template>\n\n <template v-else>\n <KrSelectItem\n v-for=\"item in items\"\n :key=\"item.value\"\n :value=\"item.value\"\n :label=\"item.label\"\n :selected=\"modelValue\"\n :disabled=\"item.disabled\"\n :variant=\"variant\"\n :shape=\"shape\"\n :show-item-label=\"showItemLabel\"\n :title=\"showTooltip ? item.label : undefined\"\n @select=\"handleSelect\"\n >\n <template v-if=\"variant === 'color'\">\n <div class=\"kr-color-swatch\" :style=\"{ background: item.hex }\" />\n </template>\n\n <template v-else-if=\"variant === 'icon' && item.icon\">\n <svg class=\"kr-select-item-icon\" viewBox=\"0 0 32 32\">\n <path :d=\"item.icon\" />\n </svg>\n </template>\n\n <template v-else>\n {{ item.label }}\n </template>\n </KrSelectItem>\n </template>\n </div>\n </div>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrSwitch.css'\nwithDefaults(defineProps<{\n modelValue?: boolean\n disabled?: boolean\n inset?: boolean\n}>(), {\n modelValue: false,\n disabled: false,\n inset: false,\n})\n</script>\n\n<template>\n <div\n class=\"kr-switch\"\n :class=\"{ 'kr-switch--inset': inset }\"\n :data-checked=\"modelValue\"\n :data-disabled=\"disabled\"\n aria-hidden=\"true\"\n >\n <div class=\"kr-switch__track\"></div>\n <div class=\"kr-switch__thumb\"></div>\n </div>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrSwitch.css'\nwithDefaults(defineProps<{\n modelValue?: boolean\n disabled?: boolean\n inset?: boolean\n}>(), {\n modelValue: false,\n disabled: false,\n inset: false,\n})\n</script>\n\n<template>\n <div\n class=\"kr-switch\"\n :class=\"{ 'kr-switch--inset': inset }\"\n :data-checked=\"modelValue\"\n :data-disabled=\"disabled\"\n aria-hidden=\"true\"\n >\n <div class=\"kr-switch__track\"></div>\n <div class=\"kr-switch__thumb\"></div>\n </div>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrToggleRow.css'\nimport { computed } from 'vue'\nimport KrSwitch from './KrSwitch.vue'\n\nconst props = withDefaults(defineProps<{\n modelValue?: boolean\n title?: string\n subtitle?: string\n disabled?: boolean\n hideSeparator?: boolean\n}>(), {\n modelValue: false,\n disabled: false,\n hideSeparator: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst inputModelValue = computed({\n get() {\n return props.modelValue\n },\n set(val) {\n emit('update:modelValue', val)\n },\n})\n</script>\n\n<template>\n <label\n class=\"kr-toggle-row\"\n :class=\"{\n 'kr-toggle-row--with-separator': !hideSeparator,\n 'kr-toggle-row--disabled': disabled,\n }\"\n >\n <input\n class=\"kr-toggle-row__native\"\n type=\"checkbox\"\n role=\"switch\"\n v-model=\"inputModelValue\"\n :disabled=\"disabled\"\n :aria-label=\"title\"\n />\n <div class=\"kr-toggle-row__label\">\n <div class=\"kr-toggle-row__title\" v-if=\"title\">{{ title }}</div>\n <div class=\"kr-toggle-row__subtitle\" v-if=\"subtitle\">{{ subtitle }}</div>\n </div>\n <KrSwitch :model-value=\"inputModelValue\" :disabled=\"disabled\" />\n </label>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrToggleRow.css'\nimport { computed } from 'vue'\nimport KrSwitch from './KrSwitch.vue'\n\nconst props = withDefaults(defineProps<{\n modelValue?: boolean\n title?: string\n subtitle?: string\n disabled?: boolean\n hideSeparator?: boolean\n}>(), {\n modelValue: false,\n disabled: false,\n hideSeparator: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst inputModelValue = computed({\n get() {\n return props.modelValue\n },\n set(val) {\n emit('update:modelValue', val)\n },\n})\n</script>\n\n<template>\n <label\n class=\"kr-toggle-row\"\n :class=\"{\n 'kr-toggle-row--with-separator': !hideSeparator,\n 'kr-toggle-row--disabled': disabled,\n }\"\n >\n <input\n class=\"kr-toggle-row__native\"\n type=\"checkbox\"\n role=\"switch\"\n v-model=\"inputModelValue\"\n :disabled=\"disabled\"\n :aria-label=\"title\"\n />\n <div class=\"kr-toggle-row__label\">\n <div class=\"kr-toggle-row__title\" v-if=\"title\">{{ title }}</div>\n <div class=\"kr-toggle-row__subtitle\" v-if=\"subtitle\">{{ subtitle }}</div>\n </div>\n <KrSwitch :model-value=\"inputModelValue\" :disabled=\"disabled\" />\n </label>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrTextField.css'\nimport { computed } from 'vue'\n\nconst props = defineProps<{\n modelValue?: string\n label?: string\n error?: boolean\n autofocus?: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string | undefined): void\n}>()\n\nconst value = computed({\n get() {\n return props.modelValue\n },\n set(value) {\n emit('update:modelValue', value)\n },\n})\n\nconst vFocus = {\n mounted: (el: HTMLInputElement) => props.autofocus && el.focus(),\n}\n</script>\n\n<template>\n <label class=\"kr-textfield\">\n <span v-if=\"label\" class=\"kr-textfield__label-text\">{{ label }}</span>\n <input\n type=\"text\"\n class=\"kr-textfield__input\"\n :class=\"{ 'kr-textfield__input--error': error }\"\n v-model.trim=\"value\"\n v-bind=\"$attrs\"\n v-focus\n />\n </label>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrTextField.css'\nimport { computed } from 'vue'\n\nconst props = defineProps<{\n modelValue?: string\n label?: string\n error?: boolean\n autofocus?: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string | undefined): void\n}>()\n\nconst value = computed({\n get() {\n return props.modelValue\n },\n set(value) {\n emit('update:modelValue', value)\n },\n})\n\nconst vFocus = {\n mounted: (el: HTMLInputElement) => props.autofocus && el.focus(),\n}\n</script>\n\n<template>\n <label class=\"kr-textfield\">\n <span v-if=\"label\" class=\"kr-textfield__label-text\">{{ label }}</span>\n <input\n type=\"text\"\n class=\"kr-textfield__input\"\n :class=\"{ 'kr-textfield__input--error': error }\"\n v-model.trim=\"value\"\n v-bind=\"$attrs\"\n v-focus\n />\n </label>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrSearchInput.css'\nimport { ref, computed, type ComponentPublicInstance } from 'vue'\n\nconst props = withDefaults(defineProps<{\n modelValue?: string\n autofocus?: boolean\n label?: string\n clearLabel?: string\n}>(), {\n modelValue: '',\n autofocus: true,\n label: 'Search',\n clearLabel: 'Clear',\n})\n\nconst inputRef = ref<ComponentPublicInstance | HTMLInputElement | null>(null)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n\nconst value = computed<string>({\n get() {\n return props.modelValue\n },\n set(value) {\n emit('update:modelValue', value)\n if (props.autofocus) {\n ;(inputRef.value as HTMLInputElement | null)?.focus()\n }\n },\n})\n\nfunction clear() {\n value.value = ''\n}\n</script>\n\n<template>\n <div class=\"kr-search-input\">\n <div class=\"kr-search-input__icon\">\n <slot name=\"icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" width=\"1em\" height=\"1em\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"2\" />\n <path d=\"M20 20L16.65 16.65\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n </slot>\n </div>\n <input\n ref=\"inputRef\"\n class=\"kr-search-input__input\"\n type=\"text\"\n v-model=\"value\"\n :autofocus=\"autofocus\"\n :aria-label=\"label\"\n />\n <div\n class=\"kr-search-input__icon kr-search-input__icon--clear\"\n v-show=\"value\"\n @click=\"clear\"\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"clearLabel\"\n @keydown.enter=\"clear\"\n >\n <slot name=\"clear-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" width=\"1em\" height=\"1em\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n </slot>\n </div>\n </div>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrSearchInput.css'\nimport { ref, computed, type ComponentPublicInstance } from 'vue'\n\nconst props = withDefaults(defineProps<{\n modelValue?: string\n autofocus?: boolean\n label?: string\n clearLabel?: string\n}>(), {\n modelValue: '',\n autofocus: true,\n label: 'Search',\n clearLabel: 'Clear',\n})\n\nconst inputRef = ref<ComponentPublicInstance | HTMLInputElement | null>(null)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n\nconst value = computed<string>({\n get() {\n return props.modelValue\n },\n set(value) {\n emit('update:modelValue', value)\n if (props.autofocus) {\n ;(inputRef.value as HTMLInputElement | null)?.focus()\n }\n },\n})\n\nfunction clear() {\n value.value = ''\n}\n</script>\n\n<template>\n <div class=\"kr-search-input\">\n <div class=\"kr-search-input__icon\">\n <slot name=\"icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" width=\"1em\" height=\"1em\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"2\" />\n <path d=\"M20 20L16.65 16.65\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n </slot>\n </div>\n <input\n ref=\"inputRef\"\n class=\"kr-search-input__input\"\n type=\"text\"\n v-model=\"value\"\n :autofocus=\"autofocus\"\n :aria-label=\"label\"\n />\n <div\n class=\"kr-search-input__icon kr-search-input__icon--clear\"\n v-show=\"value\"\n @click=\"clear\"\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"clearLabel\"\n @keydown.enter=\"clear\"\n >\n <slot name=\"clear-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" width=\"1em\" height=\"1em\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n </slot>\n </div>\n </div>\n</template>\n\n","export interface DismissTimerCallbacks {\n onDismiss: () => void\n onTick?: (remainingSeconds: number) => void\n}\n\nexport interface DismissTimerStartOptions {\n timeoutSeconds: number\n showCountdown?: boolean\n}\n\nexport interface DismissTimer {\n start(options: DismissTimerStartOptions): void\n clear(): void\n}\n\nexport function createDismissTimer(callbacks: DismissTimerCallbacks): DismissTimer {\n let dismissTimer: ReturnType<typeof setTimeout> | undefined\n let countdownTimer: ReturnType<typeof setInterval> | undefined\n\n function clear(): void {\n if (dismissTimer !== undefined) {\n clearTimeout(dismissTimer)\n dismissTimer = undefined\n }\n if (countdownTimer !== undefined) {\n clearInterval(countdownTimer)\n countdownTimer = undefined\n }\n }\n\n function start({ timeoutSeconds, showCountdown }: DismissTimerStartOptions): void {\n clear()\n callbacks.onTick?.(Math.max(0, Math.ceil(timeoutSeconds)))\n\n if (timeoutSeconds <= 0) return\n\n const deadline = Date.now() + timeoutSeconds * 1000\n dismissTimer = setTimeout(() => {\n callbacks.onDismiss()\n }, timeoutSeconds * 1000)\n\n if (showCountdown) {\n countdownTimer = setInterval(() => {\n callbacks.onTick?.(Math.max(0, Math.ceil((deadline - Date.now()) / 1000)))\n }, 200)\n }\n }\n\n return { start, clear }\n}\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrToast.css'\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\nimport type { KrToastIcon } from '../../core/types'\nimport { createDismissTimer } from '../../core/toastTimer'\n\nexport type { KrToastIcon }\n\nconst props = withDefaults(defineProps<{\n show?: boolean\n text?: string\n icon?: KrToastIcon\n timeout?: number\n actionText?: string\n showCountdown?: boolean\n}>(), {\n show: false,\n timeout: 3,\n})\n\nconst emit = defineEmits<{\n (e: 'update:show', value: boolean): void\n (e: 'action'): void\n}>()\n\nconst _show = computed<boolean>({\n get() {\n return props.show\n },\n set(val) {\n emit('update:show', val)\n },\n})\n\nconst remainingSeconds = ref(props.timeout)\n\nconst dismissTimer = createDismissTimer({\n onTick: (seconds) => {\n remainingSeconds.value = seconds\n },\n onDismiss: () => {\n _show.value = false\n },\n})\n\nfunction runAction(): void {\n emit('action')\n _show.value = false\n}\n\nfunction dismissFromClick(): void {\n if (!props.actionText) {\n _show.value = false\n }\n}\n\nwatch(() => props.show, (show) => {\n if (show) {\n dismissTimer.start({ timeoutSeconds: props.timeout, showCountdown: props.showCountdown })\n } else {\n dismissTimer.clear()\n }\n}, { immediate: true })\n\nonBeforeUnmount(dismissTimer.clear)\n</script>\n\n<template>\n <Transition name=\"kr-fade-in-up\">\n <div v-if=\"_show\" class=\"kr-toast\" role=\"status\" aria-live=\"polite\" @click=\"dismissFromClick\">\n <div v-if=\"icon\" class=\"kr-toast__icon\">\n <slot name=\"icon\">\n <svg v-if=\"icon === 'success'\" viewBox=\"0 0 24 24\" fill=\"none\" width=\"1em\" height=\"1em\">\n <path d=\"M20 6L9 17L4 12\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <svg v-else viewBox=\"0 0 24 24\" fill=\"none\" width=\"1em\" height=\"1em\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2\" />\n <path d=\"M12 8V13\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\" />\n </svg>\n </slot>\n </div>\n <div class=\"kr-toast__text\">{{ text }}</div>\n <div v-if=\"actionText\" class=\"kr-toast__actions\">\n <button class=\"kr-toast__action\" type=\"button\" @click.stop=\"runAction\">{{ actionText }}</button>\n <span v-if=\"showCountdown\" class=\"kr-toast__countdown\" aria-hidden=\"true\">{{ remainingSeconds }}s</span>\n </div>\n </div>\n </Transition>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrToast.css'\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\nimport type { KrToastIcon } from '../../core/types'\nimport { createDismissTimer } from '../../core/toastTimer'\n\nexport type { KrToastIcon }\n\nconst props = withDefaults(defineProps<{\n show?: boolean\n text?: string\n icon?: KrToastIcon\n timeout?: number\n actionText?: string\n showCountdown?: boolean\n}>(), {\n show: false,\n timeout: 3,\n})\n\nconst emit = defineEmits<{\n (e: 'update:show', value: boolean): void\n (e: 'action'): void\n}>()\n\nconst _show = computed<boolean>({\n get() {\n return props.show\n },\n set(val) {\n emit('update:show', val)\n },\n})\n\nconst remainingSeconds = ref(props.timeout)\n\nconst dismissTimer = createDismissTimer({\n onTick: (seconds) => {\n remainingSeconds.value = seconds\n },\n onDismiss: () => {\n _show.value = false\n },\n})\n\nfunction runAction(): void {\n emit('action')\n _show.value = false\n}\n\nfunction dismissFromClick(): void {\n if (!props.actionText) {\n _show.value = false\n }\n}\n\nwatch(() => props.show, (show) => {\n if (show) {\n dismissTimer.start({ timeoutSeconds: props.timeout, showCountdown: props.showCountdown })\n } else {\n dismissTimer.clear()\n }\n}, { immediate: true })\n\nonBeforeUnmount(dismissTimer.clear)\n</script>\n\n<template>\n <Transition name=\"kr-fade-in-up\">\n <div v-if=\"_show\" class=\"kr-toast\" role=\"status\" aria-live=\"polite\" @click=\"dismissFromClick\">\n <div v-if=\"icon\" class=\"kr-toast__icon\">\n <slot name=\"icon\">\n <svg v-if=\"icon === 'success'\" viewBox=\"0 0 24 24\" fill=\"none\" width=\"1em\" height=\"1em\">\n <path d=\"M20 6L9 17L4 12\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <svg v-else viewBox=\"0 0 24 24\" fill=\"none\" width=\"1em\" height=\"1em\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2\" />\n <path d=\"M12 8V13\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\" />\n </svg>\n </slot>\n </div>\n <div class=\"kr-toast__text\">{{ text }}</div>\n <div v-if=\"actionText\" class=\"kr-toast__actions\">\n <button class=\"kr-toast__action\" type=\"button\" @click.stop=\"runAction\">{{ actionText }}</button>\n <span v-if=\"showCountdown\" class=\"kr-toast__countdown\" aria-hidden=\"true\">{{ remainingSeconds }}s</span>\n </div>\n </div>\n </Transition>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrEmpty.css'\ndefineProps<{\n title?: string\n description?: string\n}>()\n</script>\n\n<template>\n <div class=\"kr-empty\">\n <div class=\"kr-empty__icon\">\n <slot name=\"icon\">\n <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"10\" y=\"24\" width=\"44\" height=\"30\" rx=\"4\" stroke=\"var(--kr-on-surface-tertiary)\" stroke-width=\"2\" />\n <path d=\"M10 26L18 10H46L54 26\" stroke=\"var(--kr-on-surface-tertiary)\" stroke-width=\"2\" stroke-linejoin=\"round\" />\n <path d=\"M24 34H40\" stroke=\"var(--kr-theme)\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n </slot>\n </div>\n <h1 class=\"kr-empty__title\">{{ title }}</h1>\n <p class=\"kr-empty__description\">{{ description }}</p>\n </div>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrEmpty.css'\ndefineProps<{\n title?: string\n description?: string\n}>()\n</script>\n\n<template>\n <div class=\"kr-empty\">\n <div class=\"kr-empty__icon\">\n <slot name=\"icon\">\n <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"10\" y=\"24\" width=\"44\" height=\"30\" rx=\"4\" stroke=\"var(--kr-on-surface-tertiary)\" stroke-width=\"2\" />\n <path d=\"M10 26L18 10H46L54 26\" stroke=\"var(--kr-on-surface-tertiary)\" stroke-width=\"2\" stroke-linejoin=\"round\" />\n <path d=\"M24 34H40\" stroke=\"var(--kr-theme)\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n </slot>\n </div>\n <h1 class=\"kr-empty__title\">{{ title }}</h1>\n <p class=\"kr-empty__description\">{{ description }}</p>\n </div>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrMenuItem.css'\nimport type { KrMenuItemData } from '../../core/types'\n\nexport type { KrMenuItemData }\n\ndefineProps<KrMenuItemData>()\n</script>\n\n<template>\n <hr v-if=\"type === 'divider'\" class=\"kr-menu-item--divider\" />\n <button v-else class=\"kr-menu-item\" :disabled=\"disabled\" role=\"menuitem\">\n <div class=\"kr-menu-item__content\">{{ title }}</div>\n <div v-if=\"$slots.icon\" class=\"kr-menu-item__icon\" aria-hidden=\"true\">\n <slot name=\"icon\" />\n </div>\n </button>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrMenuItem.css'\nimport type { KrMenuItemData } from '../../core/types'\n\nexport type { KrMenuItemData }\n\ndefineProps<KrMenuItemData>()\n</script>\n\n<template>\n <hr v-if=\"type === 'divider'\" class=\"kr-menu-item--divider\" />\n <button v-else class=\"kr-menu-item\" :disabled=\"disabled\" role=\"menuitem\">\n <div class=\"kr-menu-item__content\">{{ title }}</div>\n <div v-if=\"$slots.icon\" class=\"kr-menu-item__icon\" aria-hidden=\"true\">\n <slot name=\"icon\" />\n </div>\n </button>\n</template>\n\n","export function focusableElements(container: HTMLElement | null): HTMLElement[] {\n return Array.from(container?.querySelectorAll<HTMLElement>('button:not([disabled]), input:not([disabled])') ?? [])\n}\n\nexport function focusNext(container: HTMLElement | null): void {\n const elements = focusableElements(container)\n const index = elements.findIndex((el) => el === document.activeElement)\n const next = index === elements.length - 1 ? elements[0] : elements[index + 1]\n next?.focus()\n}\n\nexport function focusPrev(container: HTMLElement | null): void {\n const elements = focusableElements(container)\n const index = elements.findIndex((el) => el === document.activeElement)\n const prev = index <= 0 ? elements[elements.length - 1] : elements[index - 1]\n prev?.focus()\n}\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrDialog.css'\nimport KrOverlay from './KrOverlay.vue'\nimport KrButton from './KrButton.vue'\nimport { ref, computed } from 'vue'\nimport type { KrDialogAction } from '../../core/types'\nimport { focusNext as coreFocusNext, focusPrev as coreFocusPrev } from '../../core/focusTrap'\n\nexport type { KrDialogAction }\n\nconst props = withDefaults(defineProps<{\n show?: boolean\n title?: string\n text?: string\n actions?: KrDialogAction[]\n cancelText?: string\n hideCancel?: boolean\n}>(), {\n show: false,\n title: '',\n text: '',\n actions: () => [],\n cancelText: 'Cancel',\n hideCancel: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:show', value: boolean): void\n}>()\n\nconst submitting = ref(false)\n\nconst _show = computed<boolean>({\n get() {\n return props.show\n },\n set(val) {\n emit('update:show', val)\n },\n})\n\nfunction onCancel() {\n emit('update:show', false)\n}\n\nasync function onConfirm(action: () => void | Promise<void>) {\n if (submitting.value) return\n\n submitting.value = true\n try {\n await action()\n } finally {\n submitting.value = false\n }\n}\n\nconst dialogRef = ref<HTMLDialogElement | null>(null)\n\nfunction focusNext(e: KeyboardEvent) {\n e.preventDefault()\n coreFocusNext(dialogRef.value)\n}\n\nfunction focusPrev(e: KeyboardEvent) {\n e.preventDefault()\n coreFocusPrev(dialogRef.value)\n}\n</script>\n\n<template>\n <KrOverlay v-model=\"_show\" centered>\n <dialog\n ref=\"dialogRef\"\n class=\"kr-dialog\"\n :open=\"_show\"\n @keydown.esc.prevent=\"_show = false\"\n @keydown.tab.exact=\"focusNext\"\n @keydown.tab.shift=\"focusPrev\"\n >\n <h2 v-if=\"title\" class=\"kr-dialog__title\">{{ title }}</h2>\n <div class=\"kr-dialog__content\">\n <div v-if=\"text\" class=\"kr-dialog__content__text\">{{ text }}</div>\n <div v-if=\"$slots.default\" class=\"kr-dialog__content__form\">\n <slot />\n </div>\n </div>\n\n <div class=\"kr-dialog__actions\">\n <KrButton v-if=\"!hideCancel\" type=\"secondary\" :disabled=\"submitting\" @click=\"onCancel\">\n {{ cancelText }}\n </KrButton>\n <KrButton\n v-for=\"action in actions\"\n :key=\"action.text\"\n :disabled=\"submitting || action.disabled\"\n @click=\"onConfirm(action.action)\"\n >\n {{ action.text }}\n </KrButton>\n </div>\n </dialog>\n </KrOverlay>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrDialog.css'\nimport KrOverlay from './KrOverlay.vue'\nimport KrButton from './KrButton.vue'\nimport { ref, computed } from 'vue'\nimport type { KrDialogAction } from '../../core/types'\nimport { focusNext as coreFocusNext, focusPrev as coreFocusPrev } from '../../core/focusTrap'\n\nexport type { KrDialogAction }\n\nconst props = withDefaults(defineProps<{\n show?: boolean\n title?: string\n text?: string\n actions?: KrDialogAction[]\n cancelText?: string\n hideCancel?: boolean\n}>(), {\n show: false,\n title: '',\n text: '',\n actions: () => [],\n cancelText: 'Cancel',\n hideCancel: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:show', value: boolean): void\n}>()\n\nconst submitting = ref(false)\n\nconst _show = computed<boolean>({\n get() {\n return props.show\n },\n set(val) {\n emit('update:show', val)\n },\n})\n\nfunction onCancel() {\n emit('update:show', false)\n}\n\nasync function onConfirm(action: () => void | Promise<void>) {\n if (submitting.value) return\n\n submitting.value = true\n try {\n await action()\n } finally {\n submitting.value = false\n }\n}\n\nconst dialogRef = ref<HTMLDialogElement | null>(null)\n\nfunction focusNext(e: KeyboardEvent) {\n e.preventDefault()\n coreFocusNext(dialogRef.value)\n}\n\nfunction focusPrev(e: KeyboardEvent) {\n e.preventDefault()\n coreFocusPrev(dialogRef.value)\n}\n</script>\n\n<template>\n <KrOverlay v-model=\"_show\" centered>\n <dialog\n ref=\"dialogRef\"\n class=\"kr-dialog\"\n :open=\"_show\"\n @keydown.esc.prevent=\"_show = false\"\n @keydown.tab.exact=\"focusNext\"\n @keydown.tab.shift=\"focusPrev\"\n >\n <h2 v-if=\"title\" class=\"kr-dialog__title\">{{ title }}</h2>\n <div class=\"kr-dialog__content\">\n <div v-if=\"text\" class=\"kr-dialog__content__text\">{{ text }}</div>\n <div v-if=\"$slots.default\" class=\"kr-dialog__content__form\">\n <slot />\n </div>\n </div>\n\n <div class=\"kr-dialog__actions\">\n <KrButton v-if=\"!hideCancel\" type=\"secondary\" :disabled=\"submitting\" @click=\"onCancel\">\n {{ cancelText }}\n </KrButton>\n <KrButton\n v-for=\"action in actions\"\n :key=\"action.text\"\n :disabled=\"submitting || action.disabled\"\n @click=\"onConfirm(action.action)\"\n >\n {{ action.text }}\n </KrButton>\n </div>\n </dialog>\n </KrOverlay>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrChevron.css'\n</script>\n\n<template>\n <div class=\"kr-chevron\"></div>\n</template>\n\n","<script lang=\"ts\" setup>\nimport '../../styles/components/KrChevron.css'\n</script>\n\n<template>\n <div class=\"kr-chevron\"></div>\n</template>\n\n"],"mappings":"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"}
|