@kitn.ai/ui 0.24.0 → 0.25.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.
Files changed (64) hide show
  1. package/dist/{create-tween-vA7upv0h.js → create-tween-4z1XYLkR.js} +1 -1
  2. package/dist/{create-tween-CTT5l1bo.js → create-tween-B5Y4Im8G.js} +1 -1
  3. package/dist/{create-tween-BmBnlg25.js → create-tween-CUzOlaMS.js} +1 -1
  4. package/dist/elements/artifact.js +1 -1
  5. package/dist/elements/cards.js +1 -1
  6. package/dist/elements/chat-workspace.js +1 -1
  7. package/dist/elements/chat.js +1 -1
  8. package/dist/elements/choice.js +1 -1
  9. package/dist/elements/chunks/artifact-BSuPYFHY.js +1 -0
  10. package/dist/elements/chunks/{card-renderer-aNA0WRFH.js → card-renderer-CSoTL_e1.js} +1 -1
  11. package/dist/elements/chunks/card-routing-BK09BdmL.js +1 -0
  12. package/dist/elements/chunks/{chat-thread-DN9evldr.js → chat-thread-DxoKaStk.js} +1 -1
  13. package/dist/elements/chunks/{choice-card-kNsjU2m8.js → choice-card-CGMc3kek.js} +1 -1
  14. package/dist/elements/chunks/{confirm-card-CEvFmVhz.js → confirm-card-BWjf2-xo.js} +1 -1
  15. package/dist/elements/chunks/{form-lUuJjz6s.js → form-Cp8Y00Wn.js} +1 -1
  16. package/dist/elements/chunks/link-preview-Cf5KOP-i.js +1 -0
  17. package/dist/elements/chunks/link-preview-DNILK391.js +1 -0
  18. package/dist/elements/chunks/{markdown-BpAHnBJz.js → markdown-DbozyYqa.js} +16 -16
  19. package/dist/elements/chunks/{message-CoqLuLkd.js → message-CE4k-qaj.js} +1 -1
  20. package/dist/elements/chunks/{message-_oYx5mk1.js → message-DtXKPqiR.js} +1 -1
  21. package/dist/elements/chunks/{reasoning-D26Bb4p6.js → reasoning-BrxQfpfI.js} +1 -1
  22. package/dist/elements/chunks/source-w9V0NnBn.js +1 -0
  23. package/dist/elements/chunks/{tasks-card-CfqrkoVO.js → tasks-card-lPxoodlA.js} +1 -1
  24. package/dist/elements/compare.js +1 -1
  25. package/dist/elements/confirm-card.js +1 -1
  26. package/dist/elements/embed.js +1 -1
  27. package/dist/elements/form.js +1 -1
  28. package/dist/elements/link-preview.js +1 -1
  29. package/dist/elements/markdown.js +1 -1
  30. package/dist/elements/message.js +1 -1
  31. package/dist/elements/reasoning.js +1 -1
  32. package/dist/elements/remote.js +1 -1
  33. package/dist/elements/source.js +1 -1
  34. package/dist/elements/tasks.js +1 -1
  35. package/dist/elements/thread.js +1 -1
  36. package/dist/index.js +4011 -3936
  37. package/dist/index.server.js +3302 -3228
  38. package/dist/kai.es.js +1 -1
  39. package/dist/primitives/card-routing.d.ts +33 -0
  40. package/dist/{register-impl-C96AnOJn.js → register-impl-DGmGzrEM.js} +15 -15
  41. package/dist/{solid-C76UXJuy.js → solid-BMuDmFo_.js} +4427 -4352
  42. package/dist/{solid-BuqWLn6x.js → solid-CGYNdLRR.js} +3738 -3664
  43. package/dist/solid.js +1 -1
  44. package/dist/solid.server.js +1 -1
  45. package/dist/{variant-aurora-CD35fdJF.js → variant-aurora-DwSOfraQ.js} +2 -2
  46. package/dist/{variant-aurora-Dau5Z4yR.js → variant-aurora-XEkPT0_z.js} +1 -1
  47. package/dist/{variant-aurora-Dc-2RVH9.js → variant-aurora-wKvAQ5wp.js} +2 -2
  48. package/dist/{variant-custom-CHr_jbMU.js → variant-custom-BhS9wIpU.js} +2 -2
  49. package/dist/{variant-custom-Df7QvXyZ.js → variant-custom-MkTNTycd.js} +1 -1
  50. package/dist/{variant-custom-Cyu8zx4A.js → variant-custom-eFIg2XWQ.js} +2 -2
  51. package/dist/{variant-wave-CXcaP_9W.js → variant-wave-BwzrHD1s.js} +1 -1
  52. package/dist/{variant-wave-BkVpxkVF.js → variant-wave-CUWGx9Bn.js} +2 -2
  53. package/dist/{variant-wave-DcGqjVnK.js → variant-wave-CbVsmgwT.js} +2 -2
  54. package/dist/wire.js +112 -105
  55. package/package.json +1 -1
  56. package/src/components/artifact.tsx +110 -24
  57. package/src/components/markdown.tsx +83 -5
  58. package/src/components/source.tsx +35 -3
  59. package/src/primitives/card-routing.ts +54 -2
  60. package/src/wire/formats/openai.ts +38 -2
  61. package/dist/elements/chunks/artifact-BhJIuh3D.js +0 -1
  62. package/dist/elements/chunks/card-routing-C986KuUA.js +0 -1
  63. package/dist/elements/chunks/link-preview-C9-jNJBf.js +0 -1
  64. package/dist/elements/chunks/source-eJurW_-L.js +0 -1
@@ -1,6 +1,6 @@
1
1
  import { effect as Le, className as ye, template as we, use as Re } from "solid-js/web";
2
2
  import { createMemo as U, onCleanup as z, createEffect as ue, untrack as ve, createSignal as le } from "solid-js";
3
- import { c as _e } from "./solid-C76UXJuy.js";
3
+ import { c as _e } from "./solid-BMuDmFo_.js";
4
4
  var Ce = /* @__PURE__ */ we("<canvas part=canvas>");
5
5
  const Ie = "#1FD5F9";
6
6
  function Te(e) {
@@ -1,6 +1,6 @@
1
1
  import { ssr as Le, ssrAttribute as we, escape as ye } from "solid-js/web";
2
2
  import { createMemo as U, onCleanup as G, createEffect as ue, untrack as ve, createSignal as le } from "solid-js";
3
- import { c as Re } from "./solid-BuqWLn6x.js";
3
+ import { c as Re } from "./solid-CGYNdLRR.js";
4
4
  var _e = ['<canvas part="canvas"', "></canvas>"];
5
5
  const Ce = "#1FD5F9";
6
6
  function Ie(e) {
@@ -1,4 +1,4 @@
1
- import{t as ye,u as Le,c as Re,e as Ie}from"./register-impl-C96AnOJn.js";import{c as N,o as j,d as ce,u as fe,b as _e,f as ue}from"./kai.es.js";var Pe=ye("<canvas part=canvas>");const me="#1FD5F9";function ve(e){const n=e.trim().match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(!n)return ve(me);const[,o,i,l]=n;return[parseInt(o,16)/255,parseInt(i,16)/255,parseInt(l,16)/255]}const Ce={"1f":"float","1i":"int","1fv":"float","2f":"vec2","3f":"vec3","3fv":"vec3","4f":"vec4","4fv":"vec4",Matrix2fv:"mat2",Matrix3fv:"mat3",Matrix4fv:"mat4"},Te={"1fv":1,"3fv":3,"4fv":4,Matrix2fv:4,Matrix3fv:9,Matrix4fv:16};function ke(e){const n=Te[e.type];if(!n||!Array.isArray(e.value))return;const o=e.value.length/n;return o>1&&Number.isInteger(o)?o:void 0}function he(e){return e.arraySize??ke(e)}const Oe=["uniform float iTime;","uniform vec2 iResolution;","uniform vec4 iMouse;","uniform int iFrame;","uniform vec4 iDate;"].join(`
1
+ import{t as ye,u as Le,c as Re,e as Ie}from"./register-impl-DGmGzrEM.js";import{c as N,o as j,d as ce,u as fe,b as _e,f as ue}from"./kai.es.js";var Pe=ye("<canvas part=canvas>");const me="#1FD5F9";function ve(e){const n=e.trim().match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(!n)return ve(me);const[,o,i,l]=n;return[parseInt(o,16)/255,parseInt(i,16)/255,parseInt(l,16)/255]}const Ce={"1f":"float","1i":"int","1fv":"float","2f":"vec2","3f":"vec3","3fv":"vec3","4f":"vec4","4fv":"vec4",Matrix2fv:"mat2",Matrix3fv:"mat3",Matrix4fv:"mat4"},Te={"1fv":1,"3fv":3,"4fv":4,Matrix2fv:4,Matrix3fv:9,Matrix4fv:16};function ke(e){const n=Te[e.type];if(!n||!Array.isArray(e.value))return;const o=e.value.length/n;return o>1&&Number.isInteger(o)?o:void 0}function he(e){return e.arraySize??ke(e)}const Oe=["uniform float iTime;","uniform vec2 iResolution;","uniform vec4 iMouse;","uniform int iFrame;","uniform vec4 iDate;"].join(`
2
2
  `),De=`
3
3
  attribute vec3 aVertexPosition;
4
4
  void main() { gl_Position = vec4(aVertexPosition, 1.0); }
@@ -1 +1 @@
1
- import{f as g,g as v,o as h,h as b,i as c,c as x,t as d}from"./chunks/define-B_tXMYRm.js";import{A as p}from"./chunks/artifact-BhJIuh3D.js";var f=d("<style>:host{display:block;height:100%;min-height:0}"),T=d('<div style="display:grid;grid-template-rows:minmax(0, 1fr);grid-template-columns:minmax(0, 1fr);height:100%;min-height:0">');g("kai-artifact",{src:void 0,files:[],tab:void 0,defaultTab:void 0,activeFile:void 0,sandbox:"allow-scripts allow-forms",iframeTitle:void 0,maximized:!1,expandable:!1,openInTab:!1,noNav:!1,noReload:!1,noHome:!1,noPathField:!1,noTabs:!1,standalone:!1,readonlyPath:!1,displayUrl:void 0},(n,{element:l,dispatch:r,flag:t,expose:s})=>{const[m,o]=v(t("maximized"));let e;s({back:()=>e?.back(),forward:()=>e?.forward(),reload:()=>e?.reload(),home:()=>e?.home(),navigate:a=>e?.navigate(a),selectFile:a=>e?.selectFile(a),openExternal:()=>e?.openExternal(),maximize:()=>e?.maximize(),restore:()=>e?.restore()});const u=a=>{o(a),l.dispatchEvent(new CustomEvent("kai-maximize-intent",{detail:{requested:a},bubbles:!0,composed:!0})),r("kai-maximize-change",{maximized:a})};return h(()=>{const a=i=>o(i.detail.maximized);l.addEventListener("kai-maximize-state",a),b(()=>l.removeEventListener("kai-maximize-state",a))}),[f(),(()=>{var a=T();return c(a,x(p,{get src(){return n.src},get files(){return n.files??[]},get tab(){return n.tab},get defaultTab(){return n.defaultTab},get activeFile(){return n.activeFile},get sandbox(){return n.sandbox},get iframeTitle(){return n.iframeTitle},get maximized(){return m()},get expandable(){return t("expandable")},get openInTab(){return t("openInTab")},get showNav(){return!t("noNav")},get showReload(){return!t("noReload")},get showHome(){return!t("noHome")},get showPathField(){return!t("noPathField")},get showTabs(){return!t("noTabs")},get standalone(){return t("standalone")},get readonlyPath(){return t("readonlyPath")},get displayUrl(){return n.displayUrl},onMaximizeChange:u,onNavigate:i=>r("kai-navigate",{url:i}),onTabChange:i=>r("kai-tab-change",{tab:i}),onFileSelect:i=>r("kai-file-select",{path:i}),controllerRef:i=>e=i})),a})()]});
1
+ import{f as g,g as v,o as h,h as b,i as c,c as x,t as d}from"./chunks/define-B_tXMYRm.js";import{A as p}from"./chunks/artifact-BSuPYFHY.js";var f=d("<style>:host{display:block;height:100%;min-height:0}"),T=d('<div style="display:grid;grid-template-rows:minmax(0, 1fr);grid-template-columns:minmax(0, 1fr);height:100%;min-height:0">');g("kai-artifact",{src:void 0,files:[],tab:void 0,defaultTab:void 0,activeFile:void 0,sandbox:"allow-scripts allow-forms",iframeTitle:void 0,maximized:!1,expandable:!1,openInTab:!1,noNav:!1,noReload:!1,noHome:!1,noPathField:!1,noTabs:!1,standalone:!1,readonlyPath:!1,displayUrl:void 0},(n,{element:l,dispatch:r,flag:t,expose:s})=>{const[m,o]=v(t("maximized"));let e;s({back:()=>e?.back(),forward:()=>e?.forward(),reload:()=>e?.reload(),home:()=>e?.home(),navigate:a=>e?.navigate(a),selectFile:a=>e?.selectFile(a),openExternal:()=>e?.openExternal(),maximize:()=>e?.maximize(),restore:()=>e?.restore()});const u=a=>{o(a),l.dispatchEvent(new CustomEvent("kai-maximize-intent",{detail:{requested:a},bubbles:!0,composed:!0})),r("kai-maximize-change",{maximized:a})};return h(()=>{const a=i=>o(i.detail.maximized);l.addEventListener("kai-maximize-state",a),b(()=>l.removeEventListener("kai-maximize-state",a))}),[f(),(()=>{var a=T();return c(a,x(p,{get src(){return n.src},get files(){return n.files??[]},get tab(){return n.tab},get defaultTab(){return n.defaultTab},get activeFile(){return n.activeFile},get sandbox(){return n.sandbox},get iframeTitle(){return n.iframeTitle},get maximized(){return m()},get expandable(){return t("expandable")},get openInTab(){return t("openInTab")},get showNav(){return!t("noNav")},get showReload(){return!t("noReload")},get showHome(){return!t("noHome")},get showPathField(){return!t("noPathField")},get showTabs(){return!t("noTabs")},get standalone(){return t("standalone")},get readonlyPath(){return t("readonlyPath")},get displayUrl(){return n.displayUrl},onMaximizeChange:u,onNavigate:i=>r("kai-navigate",{url:i}),onTabChange:i=>r("kai-tab-change",{tab:i}),onFileSelect:i=>r("kai-file-select",{path:i}),controllerRef:i=>e=i})),a})()]});
@@ -1 +1 @@
1
- import{f as k,g as I,k as m,x as b,o as v,h as C,i as w,c as d,F as x,t as S,l as A,S as g,D as E}from"./chunks/define-B_tXMYRm.js";import{C as h,r as L,e as $}from"./chunks/card-routing-C986KuUA.js";import{h as B,v as F,c as R,C as y}from"./chunks/card-renderer-aNA0WRFH.js";import"./form.js";import"./confirm-card.js";import"./tasks.js";import"./choice.js";import"./link-preview.js";import"./embed.js";import{m as U,B as q}from"./chunks/card-tags-D8lZ-C_U.js";var D=S('<div class="flex flex-col gap-3">');function M(e){switch(e.kind){case"action":return{kind:"action",action:e.action,payload:e.payload};case"submit":return{kind:"submit",data:e.data};case"dismiss":return{kind:"dismissed"};default:return}}function N(e){let r;const l=A(()=>!e.validate||!B(e.schemas,e.envelope.type)&&e.tag!==q[e.envelope.type]?null:F(e.envelope.type,e.envelope.data,e.schemas)),u=()=>{var a;return((a=l())==null?void 0:a.tier)==="hard"};m(()=>{r&&(r.data=e.envelope.data,r.cardId=e.envelope.id,e.envelope.title!=null&&(r.heading=e.envelope.title),r.resolution=e.envelope.resolution,r.setAttribute("theme",e.theme),r.setAttribute("data-card-id",e.envelope.id))}),v(()=>{e.tag||e.emit({kind:"error",cardId:e.envelope.id,message:`Unsupported card type: ${e.envelope.type}`})});let c=null;return m(()=>{const a=l();if(!e.tag)return;if(!a||a.ok){c=null;return}const s=R(a);s!==c&&(c=s,e.emit({kind:"error",cardId:e.envelope.id,message:s}))}),d(g,{get when(){return e.tag},get fallback(){return d(y,{get type(){return e.envelope.type},get cardId(){return e.envelope.id}})},children:a=>d(g,{get when(){return u()},get fallback(){return d(E,{get component(){return a()},ref(s){var p=r;typeof p=="function"?p(s):r=s}})},get children(){return d(y,{get type(){return e.envelope.type},get cardId(){return e.envelope.id},get reason(){return l().summary}})}})})}k("kai-cards",{cards:void 0,types:void 0,schemas:void 0,policy:void 0,validateCards:!0},(e,{element:r,dispatch:l,expose:u})=>{const[c,a]=I(e.cards??[]);m(b(()=>e.cards,t=>a(t??[]),{defer:!0})),v(()=>{const t=n=>{const o=n.detail;L(e.policy??{},o);const i=M(o);i&&l("kai-card-resolved",{cardId:o.cardId,resolution:i})};r.addEventListener(h,t),C(()=>r.removeEventListener(h,t))});const s=(t,n)=>a(o=>o.some(i=>i.id===t)?o.map(i=>i.id===t?{...i,resolution:n}:i):o);u({resolve:(t,n)=>s(t,n),dismiss:t=>s(t,{kind:"dismissed"}),getCard:t=>{var n;return((n=r.shadowRoot)==null?void 0:n.querySelector(`[data-card-id="${CSS.escape(t)}"]`))??null}});const p=()=>e.theme??"auto",f=()=>U(e.types);return(()=>{var t=D();return w(t,d(x,{get each(){return c()},children:n=>d(N,{envelope:n,get tag(){return f()[n.type]},get theme(){return p()},get validate(){return e.validateCards!==!1},get schemas(){return e.schemas},emit:o=>$(r,o)})})),t})()});
1
+ import{f as k,g as I,k as m,x as b,o as v,h as C,i as w,c as d,F as x,t as S,l as A,S as g,D as E}from"./chunks/define-B_tXMYRm.js";import{C as h,r as L,e as $}from"./chunks/card-routing-BK09BdmL.js";import{h as B,v as F,c as R,C as y}from"./chunks/card-renderer-CSoTL_e1.js";import"./form.js";import"./confirm-card.js";import"./tasks.js";import"./choice.js";import"./link-preview.js";import"./embed.js";import{m as U,B as q}from"./chunks/card-tags-D8lZ-C_U.js";var D=S('<div class="flex flex-col gap-3">');function M(e){switch(e.kind){case"action":return{kind:"action",action:e.action,payload:e.payload};case"submit":return{kind:"submit",data:e.data};case"dismiss":return{kind:"dismissed"};default:return}}function N(e){let r;const l=A(()=>!e.validate||!B(e.schemas,e.envelope.type)&&e.tag!==q[e.envelope.type]?null:F(e.envelope.type,e.envelope.data,e.schemas)),u=()=>{var a;return((a=l())==null?void 0:a.tier)==="hard"};m(()=>{r&&(r.data=e.envelope.data,r.cardId=e.envelope.id,e.envelope.title!=null&&(r.heading=e.envelope.title),r.resolution=e.envelope.resolution,r.setAttribute("theme",e.theme),r.setAttribute("data-card-id",e.envelope.id))}),v(()=>{e.tag||e.emit({kind:"error",cardId:e.envelope.id,message:`Unsupported card type: ${e.envelope.type}`})});let c=null;return m(()=>{const a=l();if(!e.tag)return;if(!a||a.ok){c=null;return}const s=R(a);s!==c&&(c=s,e.emit({kind:"error",cardId:e.envelope.id,message:s}))}),d(g,{get when(){return e.tag},get fallback(){return d(y,{get type(){return e.envelope.type},get cardId(){return e.envelope.id}})},children:a=>d(g,{get when(){return u()},get fallback(){return d(E,{get component(){return a()},ref(s){var p=r;typeof p=="function"?p(s):r=s}})},get children(){return d(y,{get type(){return e.envelope.type},get cardId(){return e.envelope.id},get reason(){return l().summary}})}})})}k("kai-cards",{cards:void 0,types:void 0,schemas:void 0,policy:void 0,validateCards:!0},(e,{element:r,dispatch:l,expose:u})=>{const[c,a]=I(e.cards??[]);m(b(()=>e.cards,t=>a(t??[]),{defer:!0})),v(()=>{const t=n=>{const o=n.detail;L(e.policy??{},o);const i=M(o);i&&l("kai-card-resolved",{cardId:o.cardId,resolution:i})};r.addEventListener(h,t),C(()=>r.removeEventListener(h,t))});const s=(t,n)=>a(o=>o.some(i=>i.id===t)?o.map(i=>i.id===t?{...i,resolution:n}:i):o);u({resolve:(t,n)=>s(t,n),dismiss:t=>s(t,{kind:"dismissed"}),getCard:t=>{var n;return((n=r.shadowRoot)==null?void 0:n.querySelector(`[data-card-id="${CSS.escape(t)}"]`))??null}});const p=()=>e.theme??"auto",f=()=>U(e.types);return(()=>{var t=D();return w(t,d(x,{get each(){return c()},children:n=>d(N,{envelope:n,get tag(){return f()[n.type]},get theme(){return p()},get validate(){return e.validateCards!==!1},get schemas(){return e.schemas},emit:o=>$(r,o)})})),t})()});
@@ -1 +1 @@
1
- import{f as y,g as R,o as S,h as C,c as a,i as d,u as f,S as u,v as _,a as $,b as H,t as c}from"./chunks/define-B_tXMYRm.js";import{c as O,C as V,a as A}from"./chunks/conversation-list-CsGJjSKG.js";import{r as E,W as L}from"./chunks/slots-CIw9RlAe.js";import{C as N}from"./chunks/chat-thread-DN9evldr.js";import{R as j,a as M,b as q}from"./chunks/resizable-Dpzjlvp4.js";import{c as D,a as F}from"./chunks/message-_oYx5mk1.js";var G=c('<div class="shrink-0 border-b border-border"><slot name=main-header>'),J=c("<slot name=main>"),K=c('<div class="flex h-full flex-col overflow-hidden"><div class="min-h-0 flex-1">'),P=c("<div><slot name=sidebar-header>"),Q=c('<div class="min-h-0 flex-1">'),U=c("<div class=shrink-0><slot name=sidebar-footer>"),X=c('<div part=sidebar class="flex h-full flex-col overflow-hidden bg-surface">'),Y=c('<div class="h-full w-full overflow-hidden bg-background">'),Z=c('<div class="flex h-full"><div class="flex w-11 shrink-0 flex-col items-center border-r border-border bg-surface pt-2.5"></div><div class="min-w-0 flex-1">');y("kai-workspace",{groups:[],conversations:[],activeId:void 0,messages:[],value:void 0,placeholder:"Send a message...",loading:!1,suggestions:void 0,suggestionMode:"submit",proseSize:"sm",codeTheme:"github-dark-dimmed",codeHighlight:!0,chatTitle:void 0,models:void 0,currentModel:void 0,context:void 0,scrollButton:!0,search:!1,voice:!1,triggers:void 0,kindIcons:void 0,sidebarWidth:26,sidebarMinWidth:240,sidebarMaxWidth:420,sidebarCollapsed:void 0,defaultSidebarCollapsed:void 0,collapseBelow:void 0,compact:void 0,noConversations:void 0,cardTypes:void 0,cardSchemas:void 0},(r,{dispatch:t,flag:g,expose:T,element:w})=>{const z=F("kai-workspace"),[v,W]=R({});S(()=>{const e=()=>W(E(w,L));e();const s=new MutationObserver(e);s.observe(w,{childList:!0}),C(()=>s.disconnect())});const[m,B]=O(()=>r.sidebarCollapsed,g("defaultSidebarCollapsed")),h=e=>{B(e),t("kai-sidebar-toggle",{collapsed:e})},p=()=>h(!m());let b,k=!1;S(()=>{if(typeof ResizeObserver>"u")return;const e=new ResizeObserver(s=>{var n;const o=r.collapseBelow;if(o==null||r.sidebarCollapsed!==void 0)return;const i=(((n=s[0])==null?void 0:n.contentRect.width)??b.clientWidth)<o;i&&!m()?(k=!0,h(!0)):!i&&m()&&k&&(k=!1,h(!1))});e.observe(b),C(()=>e.disconnect())});let l;T({toggleSidebar:()=>p(),collapseSidebar:()=>h(!0),expandSidebar:()=>h(!1),focus:e=>l?.focus(e),clear:()=>l?.clear(),send:()=>l?.send(),scrollToBottom:e=>l?.scrollToBottom(e)});const I=a(N,{get messages(){return z(r.messages)},get value(){return r.value},get placeholder(){return r.placeholder},get loading(){return g("loading")},get suggestions(){return r.suggestions},get suggestionMode(){return r.suggestionMode},get proseSize(){return r.proseSize},get codeTheme(){return r.codeTheme},get codeHighlight(){return g("codeHighlight")},get chatTitle(){return r.chatTitle},get models(){return r.models},get currentModel(){return r.currentModel},get context(){return r.context},get scrollButton(){return r.scrollButton!==!1},get search(){return g("search")},get voice(){return g("voice")},get triggers(){return r.triggers},get kindIcons(){return r.kindIcons},get cardTypes(){return D(r.cardTypes,r.theme)},get cardSchemas(){return r.cardSchemas},onValueChange:e=>t("kai-value-change",{value:e}),onSubmit:e=>t("kai-submit",e),onSuggestionClick:e=>t("kai-suggestion-click",{value:e}),onModelChange:e=>t("kai-model-change",{modelId:e}),onMessageAction:e=>t("kai-message-action",e),onSearch:()=>t("kai-search",{}),onVoice:()=>t("kai-voice",{}),controllerRef:e=>l=e}),x=(()=>{var e=K(),s=e.firstChild;return d(e,a(u,{get when(){return v()["main-header"]},get children(){var n=G(),o=n.firstChild;return o._$owner=f(),n}}),s),d(s,a(u,{get when(){return v().main},fallback:I,get children(){var n=J();return n._$owner=f(),n}})),e})();return(()=>{var e=Y(),s=b;return typeof s=="function"?_(s,e):b=e,d(e,a(u,{get when(){return!m()},get fallback(){return(()=>{var n=Z(),o=n.firstChild,i=o.nextSibling;return d(o,a(A,{onExpand:p,class:"bg-transparent shadow-none backdrop-blur-none"})),d(i,x),n})()},get children(){return a(j,{orientation:"horizontal",get children(){return[a(M,{get defaultSize(){return r.sidebarWidth},get"data-min-size"(){return String(r.sidebarMinWidth)},get"data-max-size"(){return String(r.sidebarMaxWidth)},get children(){var n=X();return d(n,a(u,{get when(){return v()["sidebar-header"]},get children(){var o=P(),i=o.firstChild;return i._$owner=f(),$(()=>H(o,g("noConversations")?"min-h-0 flex-1":"shrink-0")),o}}),null),d(n,a(u,{get when(){return!g("noConversations")},get children(){var o=Q();return d(o,a(V,{class:"bg-transparent",get groups(){return r.groups??[]},get conversations(){return r.conversations??[]},get activeId(){return r.activeId},get compact(){return g("compact")},onSelect:i=>t("kai-conversation-select",{id:i}),onNewChat:()=>t("kai-new-chat",{}),onToggleSidebar:p})),o}}),null),d(n,a(u,{get when(){return v()["sidebar-footer"]},get children(){var o=U(),i=o.firstChild;return i._$owner=f(),o}}),null),n}}),a(q,{}),a(M,{children:x})]}})}})),e})()});
1
+ import{f as y,g as R,o as S,h as C,c as a,i as d,u as f,S as u,v as _,a as $,b as H,t as c}from"./chunks/define-B_tXMYRm.js";import{c as O,C as V,a as A}from"./chunks/conversation-list-CsGJjSKG.js";import{r as E,W as L}from"./chunks/slots-CIw9RlAe.js";import{C as N}from"./chunks/chat-thread-DxoKaStk.js";import{R as j,a as M,b as q}from"./chunks/resizable-Dpzjlvp4.js";import{c as D,a as F}from"./chunks/message-DtXKPqiR.js";var G=c('<div class="shrink-0 border-b border-border"><slot name=main-header>'),J=c("<slot name=main>"),K=c('<div class="flex h-full flex-col overflow-hidden"><div class="min-h-0 flex-1">'),P=c("<div><slot name=sidebar-header>"),Q=c('<div class="min-h-0 flex-1">'),U=c("<div class=shrink-0><slot name=sidebar-footer>"),X=c('<div part=sidebar class="flex h-full flex-col overflow-hidden bg-surface">'),Y=c('<div class="h-full w-full overflow-hidden bg-background">'),Z=c('<div class="flex h-full"><div class="flex w-11 shrink-0 flex-col items-center border-r border-border bg-surface pt-2.5"></div><div class="min-w-0 flex-1">');y("kai-workspace",{groups:[],conversations:[],activeId:void 0,messages:[],value:void 0,placeholder:"Send a message...",loading:!1,suggestions:void 0,suggestionMode:"submit",proseSize:"sm",codeTheme:"github-dark-dimmed",codeHighlight:!0,chatTitle:void 0,models:void 0,currentModel:void 0,context:void 0,scrollButton:!0,search:!1,voice:!1,triggers:void 0,kindIcons:void 0,sidebarWidth:26,sidebarMinWidth:240,sidebarMaxWidth:420,sidebarCollapsed:void 0,defaultSidebarCollapsed:void 0,collapseBelow:void 0,compact:void 0,noConversations:void 0,cardTypes:void 0,cardSchemas:void 0},(r,{dispatch:t,flag:g,expose:T,element:w})=>{const z=F("kai-workspace"),[v,W]=R({});S(()=>{const e=()=>W(E(w,L));e();const s=new MutationObserver(e);s.observe(w,{childList:!0}),C(()=>s.disconnect())});const[m,B]=O(()=>r.sidebarCollapsed,g("defaultSidebarCollapsed")),h=e=>{B(e),t("kai-sidebar-toggle",{collapsed:e})},p=()=>h(!m());let b,k=!1;S(()=>{if(typeof ResizeObserver>"u")return;const e=new ResizeObserver(s=>{var n;const o=r.collapseBelow;if(o==null||r.sidebarCollapsed!==void 0)return;const i=(((n=s[0])==null?void 0:n.contentRect.width)??b.clientWidth)<o;i&&!m()?(k=!0,h(!0)):!i&&m()&&k&&(k=!1,h(!1))});e.observe(b),C(()=>e.disconnect())});let l;T({toggleSidebar:()=>p(),collapseSidebar:()=>h(!0),expandSidebar:()=>h(!1),focus:e=>l?.focus(e),clear:()=>l?.clear(),send:()=>l?.send(),scrollToBottom:e=>l?.scrollToBottom(e)});const I=a(N,{get messages(){return z(r.messages)},get value(){return r.value},get placeholder(){return r.placeholder},get loading(){return g("loading")},get suggestions(){return r.suggestions},get suggestionMode(){return r.suggestionMode},get proseSize(){return r.proseSize},get codeTheme(){return r.codeTheme},get codeHighlight(){return g("codeHighlight")},get chatTitle(){return r.chatTitle},get models(){return r.models},get currentModel(){return r.currentModel},get context(){return r.context},get scrollButton(){return r.scrollButton!==!1},get search(){return g("search")},get voice(){return g("voice")},get triggers(){return r.triggers},get kindIcons(){return r.kindIcons},get cardTypes(){return D(r.cardTypes,r.theme)},get cardSchemas(){return r.cardSchemas},onValueChange:e=>t("kai-value-change",{value:e}),onSubmit:e=>t("kai-submit",e),onSuggestionClick:e=>t("kai-suggestion-click",{value:e}),onModelChange:e=>t("kai-model-change",{modelId:e}),onMessageAction:e=>t("kai-message-action",e),onSearch:()=>t("kai-search",{}),onVoice:()=>t("kai-voice",{}),controllerRef:e=>l=e}),x=(()=>{var e=K(),s=e.firstChild;return d(e,a(u,{get when(){return v()["main-header"]},get children(){var n=G(),o=n.firstChild;return o._$owner=f(),n}}),s),d(s,a(u,{get when(){return v().main},fallback:I,get children(){var n=J();return n._$owner=f(),n}})),e})();return(()=>{var e=Y(),s=b;return typeof s=="function"?_(s,e):b=e,d(e,a(u,{get when(){return!m()},get fallback(){return(()=>{var n=Z(),o=n.firstChild,i=o.nextSibling;return d(o,a(A,{onExpand:p,class:"bg-transparent shadow-none backdrop-blur-none"})),d(i,x),n})()},get children(){return a(j,{orientation:"horizontal",get children(){return[a(M,{get defaultSize(){return r.sidebarWidth},get"data-min-size"(){return String(r.sidebarMinWidth)},get"data-max-size"(){return String(r.sidebarMaxWidth)},get children(){var n=X();return d(n,a(u,{get when(){return v()["sidebar-header"]},get children(){var o=P(),i=o.firstChild;return i._$owner=f(),$(()=>H(o,g("noConversations")?"min-h-0 flex-1":"shrink-0")),o}}),null),d(n,a(u,{get when(){return!g("noConversations")},get children(){var o=Q();return d(o,a(V,{class:"bg-transparent",get groups(){return r.groups??[]},get conversations(){return r.conversations??[]},get activeId(){return r.activeId},get compact(){return g("compact")},onSelect:i=>t("kai-conversation-select",{id:i}),onNewChat:()=>t("kai-new-chat",{}),onToggleSidebar:p})),o}}),null),d(n,a(u,{get when(){return v()["sidebar-footer"]},get children(){var o=U(),i=o.firstChild;return i._$owner=f(),o}}),null),n}}),a(q,{}),a(M,{children:x})]}})}})),e})()});
@@ -1 +1 @@
1
- import{f as u,g as h,o as m,h as v,k as p,c as k}from"./chunks/define-B_tXMYRm.js";import{r as S,C as b}from"./chunks/slots-CIw9RlAe.js";import{C as f}from"./chunks/chat-thread-DN9evldr.js";import{c as T,a as M}from"./chunks/message-_oYx5mk1.js";u("kai-chat",{messages:[],value:void 0,placeholder:"Send a message...",loading:!1,suggestions:void 0,suggestionMode:"submit",persistSuggestions:!1,proseSize:"sm",codeTheme:"github-dark-dimmed",codeHighlight:!0,chatTitle:void 0,models:void 0,currentModel:void 0,context:void 0,scrollButton:!0,search:!1,voice:!1,triggers:void 0,kindIcons:void 0,actionsReveal:"always",cardTypes:void 0,cardSchemas:void 0,accept:void 0},(t,{dispatch:r,flag:s,element:i,expose:c})=>{const g=M("kai-chat"),[d,l]=h({}),n=e=>d()[e]===!0;m(()=>{const e=()=>l(S(i,b));e();const a=new MutationObserver(e);a.observe(i,{childList:!0}),v(()=>a.disconnect())}),p(()=>{i.toggleAttribute("loading",s("loading"))});let o;return c({focus:e=>o?.focus(e),blur:()=>{var e,a;return(a=(e=i.shadowRoot)==null?void 0:e.activeElement)==null?void 0:a.blur()},clear:()=>o?.clear(),send:()=>o?.send(),scrollToBottom:e=>o?.scrollToBottom(e)}),k(f,{get messages(){return g(t.messages)},get value(){return t.value},get placeholder(){return t.placeholder},get loading(){return s("loading")},get suggestions(){return t.suggestions},get suggestionMode(){return t.suggestionMode},get persistSuggestions(){return s("persistSuggestions")},get proseSize(){return t.proseSize},get codeTheme(){return t.codeTheme},get codeHighlight(){return s("codeHighlight")},get chatTitle(){return t.chatTitle},get models(){return t.models},get currentModel(){return t.currentModel},get context(){return t.context},get scrollButton(){return t.scrollButton!==!1},get search(){return s("search")},get voice(){return s("voice")},get triggers(){return t.triggers},get kindIcons(){return t.kindIcons},get actionsReveal(){return t.actionsReveal},get cardTypes(){return T(t.cardTypes,t.theme)},get cardSchemas(){return t.cardSchemas},onValueChange:e=>r("kai-value-change",{value:e}),onSubmit:e=>r("kai-submit",e),get accept(){return t.accept},onAttachmentsChange:e=>r("kai-attachments-change",{attachments:e}),onAttachmentsRejected:e=>r("kai-attachments-rejected",{rejected:e}),onSuggestionClick:e=>r("kai-suggestion-click",{value:e}),onModelChange:e=>r("kai-model-change",{modelId:e}),onMessageAction:e=>r("kai-message-action",e),onSearch:()=>r("kai-search",{}),onVoice:()=>r("kai-voice",{}),controllerRef:e=>o=e,get headerStart(){return n("header-start")},get headerEnd(){return n("header-end")},get headerFull(){return n("header")},get sidebar(){return n("sidebar")},get empty(){return n("empty")},get composer(){return n("composer")},get composerActions(){return n("composer-actions")},get footer(){return n("footer")}})});
1
+ import{f as u,g as h,o as m,h as v,k as p,c as k}from"./chunks/define-B_tXMYRm.js";import{r as S,C as b}from"./chunks/slots-CIw9RlAe.js";import{C as f}from"./chunks/chat-thread-DxoKaStk.js";import{c as T,a as M}from"./chunks/message-DtXKPqiR.js";u("kai-chat",{messages:[],value:void 0,placeholder:"Send a message...",loading:!1,suggestions:void 0,suggestionMode:"submit",persistSuggestions:!1,proseSize:"sm",codeTheme:"github-dark-dimmed",codeHighlight:!0,chatTitle:void 0,models:void 0,currentModel:void 0,context:void 0,scrollButton:!0,search:!1,voice:!1,triggers:void 0,kindIcons:void 0,actionsReveal:"always",cardTypes:void 0,cardSchemas:void 0,accept:void 0},(t,{dispatch:r,flag:s,element:i,expose:c})=>{const g=M("kai-chat"),[d,l]=h({}),n=e=>d()[e]===!0;m(()=>{const e=()=>l(S(i,b));e();const a=new MutationObserver(e);a.observe(i,{childList:!0}),v(()=>a.disconnect())}),p(()=>{i.toggleAttribute("loading",s("loading"))});let o;return c({focus:e=>o?.focus(e),blur:()=>{var e,a;return(a=(e=i.shadowRoot)==null?void 0:e.activeElement)==null?void 0:a.blur()},clear:()=>o?.clear(),send:()=>o?.send(),scrollToBottom:e=>o?.scrollToBottom(e)}),k(f,{get messages(){return g(t.messages)},get value(){return t.value},get placeholder(){return t.placeholder},get loading(){return s("loading")},get suggestions(){return t.suggestions},get suggestionMode(){return t.suggestionMode},get persistSuggestions(){return s("persistSuggestions")},get proseSize(){return t.proseSize},get codeTheme(){return t.codeTheme},get codeHighlight(){return s("codeHighlight")},get chatTitle(){return t.chatTitle},get models(){return t.models},get currentModel(){return t.currentModel},get context(){return t.context},get scrollButton(){return t.scrollButton!==!1},get search(){return s("search")},get voice(){return s("voice")},get triggers(){return t.triggers},get kindIcons(){return t.kindIcons},get actionsReveal(){return t.actionsReveal},get cardTypes(){return T(t.cardTypes,t.theme)},get cardSchemas(){return t.cardSchemas},onValueChange:e=>r("kai-value-change",{value:e}),onSubmit:e=>r("kai-submit",e),get accept(){return t.accept},onAttachmentsChange:e=>r("kai-attachments-change",{attachments:e}),onAttachmentsRejected:e=>r("kai-attachments-rejected",{rejected:e}),onSuggestionClick:e=>r("kai-suggestion-click",{value:e}),onModelChange:e=>r("kai-model-change",{modelId:e}),onMessageAction:e=>r("kai-message-action",e),onSearch:()=>r("kai-search",{}),onVoice:()=>r("kai-voice",{}),controllerRef:e=>o=e,get headerStart(){return n("header-start")},get headerEnd(){return n("header-end")},get headerFull(){return n("header")},get sidebar(){return n("sidebar")},get empty(){return n("empty")},get composer(){return n("composer")},get composerActions(){return n("composer-actions")},get footer(){return n("footer")}})});
@@ -1 +1 @@
1
- import{f as r,c as u}from"./chunks/define-B_tXMYRm.js";import{C as n}from"./chunks/choice-card-kNsjU2m8.js";r("kai-choice",{data:void 0,cardId:void 0,heading:void 0,resolution:void 0,value:void 0,defaultValue:void 0,disabled:void 0},(l,{element:d,dispatch:t,flag:i,expose:o})=>{let e;return o({focus:a=>e?.focus(a),select:a=>e?.select(a),send:()=>e?.send(),dismiss:()=>e?.dismiss(),reopen:()=>e?.reopen()}),u(n,{get data(){return l.data},get cardId(){return l.cardId??(d.id||"kai-choice")},get heading(){return l.heading},get resolution(){return l.resolution},get value(){return l.value},get defaultValue(){return l.defaultValue},get disabled(){return i("disabled")},onValueChange:a=>t("kai-value-change",{value:a}),controllerRef:a=>e=a,hostElement:d})});
1
+ import{f as r,c as u}from"./chunks/define-B_tXMYRm.js";import{C as n}from"./chunks/choice-card-CGMc3kek.js";r("kai-choice",{data:void 0,cardId:void 0,heading:void 0,resolution:void 0,value:void 0,defaultValue:void 0,disabled:void 0},(l,{element:d,dispatch:t,flag:i,expose:o})=>{let e;return o({focus:a=>e?.focus(a),select:a=>e?.select(a),send:()=>e?.send(),dismiss:()=>e?.dismiss(),reopen:()=>e?.reopen()}),u(n,{get data(){return l.data},get cardId(){return l.cardId??(d.id||"kai-choice")},get heading(){return l.heading},get resolution(){return l.resolution},get value(){return l.value},get defaultValue(){return l.defaultValue},get disabled(){return i("disabled")},onValueChange:a=>t("kai-value-change",{value:a}),controllerRef:a=>e=a,hostElement:d})});
@@ -0,0 +1 @@
1
+ import{c as a,m as P,s as fe,g as k,l as y,k as F,x as J,o as Q,q as ge,i as c,S as g,t as v,d as p,a as z,b as X,v as Y,j as be,h as ve,e as me}from"./define-B_tXMYRm.js";import{c as H}from"./cn-CU7UAWzk.js";import{B as C}from"./button-B9okqG73.js";import{C as pe,a as we}from"./code-block-ClhQO9RW.js";import{F as xe}from"./file-tree-yGWNK0Js.js";import{L as ke}from"./loader-B5QzK_8_.js";import{i as ye,a as ee}from"./card-routing-BK09BdmL.js";import{a as ze}from"./arrow-left-iJVnQmxA.js";import{I as re}from"./Icon-b5A8hlHs.js";import{r as Ce,h as Te,c as Fe}from"./rotate-cw-DzVDJOA1.js";import{d as Pe}from"./download-DnCyWFJE.js";import{e as ne}from"./external-link-DG2sRdQL.js";import{f as Oe}from"./file-text-D0J9F6M7.js";import{m as Re,a as Se}from"./minimize-2-SegJ_oku.js";var je=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],Ie=r=>a(re,P(r,{name:"ArrowRight",iconNode:je})),Ne=Ie,He=[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],Me=r=>a(re,P(r,{name:"Eye",iconNode:He})),Ee=Me;const $e="6.0.227",te=`https://cdn.jsdelivr.net/npm/pdfjs-dist@${$e}/build`,Be=()=>import(/*@vite-ignore*/`${te}/pdf.min.mjs`),Le=`${te}/pdf.worker.min.mjs`;let Ue=Be,De=Le,M=null;function Ae(){if(!M){const r=Ue;M=(async()=>{const t=await r(),e=t.default??t;return e.GlobalWorkerOptions.workerSrc=De,e})()}return M}async function Ve(r,t,e){const i=await(await Ae()).getDocument({url:r}).promise;t.replaceChildren();const l=typeof window<"u"&&window.devicePixelRatio?window.devicePixelRatio:1;for(let s=1;s<=i.numPages;s++){const d=await i.getPage(s),u=d.getViewport({scale:1}),h=u.width>0?e/u.width:1,f=d.getViewport({scale:h*l}),b=document.createElement("canvas");b.width=Math.max(1,Math.floor(f.width)),b.height=Math.max(1,Math.floor(f.height)),b.setAttribute("role","img"),b.setAttribute("aria-label",`Page ${s}`),b.style.width="100%",b.style.height="auto",b.style.display="block";const w=b.getContext("2d");t.appendChild(b),await d.render({canvasContext:w,viewport:f}).promise}return{pages:i.numPages}}var We=v('<div><div class="relative min-h-0 flex-1">'),qe=v('<form class="min-w-0 flex-1"><label class=sr-only for=kai-artifact-path>Address</label><input id=kai-artifact-path name=kai-artifact-path type=text autocomplete=off placeholder="Enter a path or URL\u2026">'),Ke=v("<div class=flex-1 aria-hidden=true>"),_e=v('<div role=tablist aria-label=View class="flex shrink-0 items-center gap-0.5 rounded-md bg-muted p-0.5">'),Ge=v('<div data-artifact-toolbar class="flex shrink-0 items-center gap-1.5 border-b border-border bg-surface px-2 py-1.5">'),Ze=v("<button type=button role=tab>"),Je=v('<iframe class="absolute inset-0 h-full w-full border-0 bg-white">'),Qe=v('<div class="absolute inset-0 flex"><div class="w-56 shrink-0 overflow-auto border-r border-border bg-surface-sunken py-1.5 scrollbar-thin"></div><div class="min-w-0 flex-1 overflow-auto scrollbar-thin">'),Xe=v('<div class="flex h-full items-center justify-center p-6 text-sm text-muted-foreground">Select a file to view its source.'),Ye=v('<div class="flex h-full items-center justify-center p-6 text-sm text-muted-foreground">No source \u2014 this file (<!>) has no code view.'),er=v('<div class="flex flex-wrap items-center justify-center gap-2"><a class="inline-flex h-8 items-center gap-1.5 rounded-md border border-border bg-background px-3 text-xs font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"target=_blank rel="noopener noreferrer">Open in new tab</a><a class="inline-flex h-8 items-center gap-1.5 rounded-md border border-border bg-background px-3 text-xs font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"download>Download'),rr=v(`<div role=region aria-label="PDF preview unavailable"class="absolute inset-0 flex flex-col items-center justify-center gap-3 bg-card p-6 text-center"><div class="text-sm font-medium text-foreground"></div><div class="text-xs text-muted-foreground">Can't preview this PDF inline.`),nr=v(`<div class="text-xs text-muted-foreground">Blocked: that address uses a scheme this viewer won't open.`),tr=v('<div class="pointer-events-none absolute inset-0 flex items-center justify-center">'),ar=v('<div class="absolute inset-0"><div role=region aria-label="PDF preview"tabindex=0 class="absolute inset-0 flex flex-col items-center gap-3 overflow-auto bg-surface-sunken p-3 scrollbar-thin focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset">');const ir="allow-scripts allow-forms";function E(r,t){console.warn(`[kai-artifact] blocked unsafe url in ${r}: ${t}`)}function or(r,t){if(r.url)return r.url;if(!t)return r.path;try{return new URL(r.path,t).href}catch{return r.path}}function lr(r,t){if(!r)return!1;const e=t.find(l=>l.url===r||l.path===r);if(e?.type==="pdf")return!0;const i=r.split(/[?#]/)[0];return/\.pdf$/i.test(i)}function sr(r){const t=P({files:[],defaultTab:"preview",sandbox:ir,showNav:!0,showReload:!0,showHome:!0,showPathField:!0,showTabs:!0,expandable:!1,openInTab:!1,standalone:!1,readonlyPath:!1,maximized:!1},r),[e,i]=fe(t,["src","files","tab","defaultTab","activeFile","sandbox","iframeTitle","onNavigate","onTabChange","onFileSelect","maximized","onMaximizeChange","showNav","showReload","showHome","showPathField","showTabs","expandable","openInTab","standalone","readonlyPath","displayUrl","controllerRef","class"]),[l,s]=k(e.src?[e.src]:[]),[d,u]=k(e.src?0:-1),h=()=>l()[d()]??"",f=()=>d()>0,b=()=>d()<l().length-1,w=y(()=>{const n=h();return n&&ye(n)?(E("preview",n),""):n}),[O,$]=k(e.tab??e.defaultTab),[B,L]=k(e.activeFile),[ie,oe]=k(0),[R,S]=k(e.maximized??!1);F(()=>S(e.maximized??!1));const le=()=>{var n;const o=!R();S(o),(n=e.onMaximizeChange)==null||n.call(e,o)},U=y(()=>{const n=h();return!!n&&n!=="about:blank"&&ee(n)}),D=()=>{const n=h();if(!U()){n&&n!=="about:blank"&&E("openExternal",n);return}window.open(n,"_blank","noopener,noreferrer")},A=y(()=>e.expandable&&!e.standalone),se=y(()=>e.showNav||e.showReload||e.showHome||e.showPathField||e.showTabs||A()||e.openInTab);let x;F(()=>{e.tab!==void 0&&$(e.tab)}),F(()=>L(e.activeFile)),F(J(()=>e.src,n=>{n&&n!==h()&&T(n)},{defer:!0}));const V=n=>n===void 0?void 0:e.files.find(o=>o.path===n),W=y(()=>V(B())),de=y(()=>{const n=W();return!!n&&n.type!=="image"&&n.type!=="pdf"&&typeof n.code=="string"});function T(n){if(n===h()){I();return}s(o=>[...o.slice(0,d()+1),n]),u(o=>o+1),j()}function j(){var n;x&&(x.src=w()||"about:blank"),(n=e.onNavigate)==null||n.call(e,h())}function ue(n){var o;n!==O()&&($(n),(o=e.onTabChange)==null||o.call(e,n))}function q(n,o){var m;L(n),(m=e.onFileSelect)==null||m.call(e,n),T(or(o,e.src))}const K=()=>{f()&&(u(n=>n-1),j())},_=()=>{b()&&(u(n=>n+1),j())};function I(){var n;x&&(x.src="about:blank",x.src=w()||"about:blank"),oe(o=>o+1),(n=e.onNavigate)==null||n.call(e,h())}const G=()=>{e.src&&T(e.src)},Z=n=>{var o;R()!==n&&(S(n),(o=e.onMaximizeChange)==null||o.call(e,n))};Q(()=>{var n;(n=e.controllerRef)==null||n.call(e,{back:()=>K(),forward:()=>_(),reload:()=>I(),home:()=>G(),navigate:o=>T(o),selectFile:o=>{const m=V(o);m&&q(o,m)},openExternal:()=>D(),maximize:()=>Z(!0),restore:()=>Z(!1)})});const ce=()=>{var n,o;try{const m=(n=x?.contentWindow)==null?void 0:n.location.href;m&&m!=="about:blank"&&m!==h()&&(s(N=>[...N.slice(0,d()+1),m]),u(N=>N+1),(o=e.onNavigate)==null||o.call(e,m))}catch{}},he=n=>{n.preventDefault();const o=n.currentTarget.elements.namedItem("kai-artifact-path");if(e.readonlyPath||e.displayUrl!=null){o&&(o.value=e.displayUrl??h());return}o&&o.value&&T(o.value)};return(()=>{var n=We(),o=n.firstChild;return ge(n,P({get class(){return H("flex h-full w-full flex-col overflow-hidden bg-card text-card-foreground",e.standalone&&"rounded-xl border border-border",e.class)}},i),!1,!0),c(n,a(g,{get when(){return se()},get children(){return a(dr,{url:()=>e.displayUrl??h(),tab:O,canBack:f,canForward:b,canHome:()=>!!e.src,onBack:K,onForward:_,onReload:I,onHome:G,onSubmitPath:he,onTab:ue,showNav:()=>e.showNav,showReload:()=>e.showReload,showHome:()=>e.showHome,showPathField:()=>e.showPathField,showTabs:()=>e.showTabs,showExpand:A,showOpenInTab:()=>e.openInTab,maximized:R,onToggleMaximize:le,canOpenInTab:U,onOpenInTab:D,readonlyPath:()=>e.readonlyPath||e.displayUrl!=null})}}),o),c(o,a(g,{get when(){return O()==="preview"},get fallback(){return a(cr,{get files(){return e.files},activeFile:B,activeFileObj:W,hasSource:de,onSelect:q})},get children(){return a(g,{get when(){return lr(h(),e.files)},get fallback(){return a(ur,{ref:m=>x=m,src:w,get sandbox(){return e.sandbox},get title(){return e.iframeTitle??"Artifact preview"},onLoad:ce})},get children(){return a(fr,{get url(){return h()},get reloadKey(){return ie()}})}})}})),n})()}function dr(r){return(()=>{var t=Ge();return c(t,a(g,{get when(){return r.showNav()},get children(){return[a(C,{variant:"ghost",size:"icon-sm","aria-label":"Back",get disabled(){return!r.canBack()},onClick:()=>r.onBack(),get children(){return a(ze,{size:16,"aria-hidden":"true"})}}),a(C,{variant:"ghost",size:"icon-sm","aria-label":"Forward",get disabled(){return!r.canForward()},onClick:()=>r.onForward(),get children(){return a(Ne,{size:16,"aria-hidden":"true"})}})]}}),null),c(t,a(g,{get when(){return r.showReload()},get children(){return a(C,{variant:"ghost",size:"icon-sm","aria-label":"Reload",onClick:()=>r.onReload(),get children(){return a(Ce,{size:15,"aria-hidden":"true"})}})}}),null),c(t,a(g,{get when(){return r.showHome()},get children(){return a(C,{variant:"ghost",size:"icon-sm","aria-label":"Home",get disabled(){return!r.canHome()},onClick:()=>r.onHome(),get children(){return a(Te,{size:15,"aria-hidden":"true"})}})}}),null),c(t,a(g,{get when(){return r.showPathField()},get children(){var e=qe(),i=e.firstChild,l=i.nextSibling;return e.addEventListener("submit",s=>r.onSubmitPath(s)),p(l,"spellcheck",!1),z(s=>{var d=r.readonlyPath()||void 0,u=r.readonlyPath()?"true":void 0,h=H("h-7 w-full rounded-md border border-border px-2.5 text-xs text-foreground font-mono outline-none",r.readonlyPath()?"bg-muted/40 cursor-default":"bg-background focus-visible:ring-2 focus-visible:ring-ring");return d!==s.e&&(l.readOnly=s.e=d),u!==s.t&&p(l,"aria-readonly",s.t=u),h!==s.a&&X(l,s.a=h),s},{e:void 0,t:void 0,a:void 0}),z(()=>l.value=r.url()),e}}),null),c(t,a(g,{get when(){return!r.showPathField()},get children(){return Ke()}}),null),c(t,a(g,{get when(){return r.showExpand()},get children(){return a(C,{variant:"ghost",size:"icon-sm",get"aria-label"(){return r.maximized()?"Collapse":"Expand"},get"aria-expanded"(){return r.maximized()},onClick:()=>r.onToggleMaximize(),get children(){return a(g,{get when(){return r.maximized()},get fallback(){return a(Se,{size:15,"aria-hidden":"true"})},get children(){return a(Re,{size:15,"aria-hidden":"true"})}})}})}}),null),c(t,a(g,{get when(){return r.showOpenInTab()},get children(){return a(C,{variant:"ghost",size:"icon-sm","aria-label":"Open in new tab",get disabled(){return!r.canOpenInTab()},onClick:()=>r.onOpenInTab(),get children(){return a(ne,{size:15,"aria-hidden":"true"})}})}}),null),c(t,a(g,{get when(){return r.showTabs()},get children(){var e=_e();return c(e,a(ae,{label:"Preview",get icon(){return a(Ee,{size:14,"aria-hidden":"true"})},get selected(){return r.tab()==="preview"},onClick:()=>r.onTab("preview")}),null),c(e,a(ae,{label:"Code",get icon(){return a(Fe,{size:14,"aria-hidden":"true"})},get selected(){return r.tab()==="code"},onClick:()=>r.onTab("code")}),null),e}}),null),t})()}function ae(r){return(()=>{var t=Ze();return t.$$click=()=>r.onClick(),c(t,()=>r.icon,null),c(t,()=>r.label,null),z(e=>{var i=r.selected,l=H("inline-flex h-6 items-center gap-1.5 rounded px-2 text-xs font-medium transition-colors outline-none","focus-visible:ring-2 focus-visible:ring-ring",r.selected?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground");return i!==e.e&&p(t,"aria-selected",e.e=i),l!==e.t&&X(t,e.t=l),e},{e:void 0,t:void 0}),t})()}function ur(r){return(()=>{var t=Je();t.addEventListener("load",()=>r.onLoad());var e=r.ref;return typeof e=="function"?Y(e,t):r.ref=t,z(i=>{var l=r.src()||"about:blank",s=r.sandbox,d=r.title;return l!==i.e&&p(t,"src",i.e=l),s!==i.t&&p(t,"sandbox",i.t=s),d!==i.a&&p(t,"title",i.a=d),i},{e:void 0,t:void 0,a:void 0}),t})()}function cr(r){return(()=>{var t=Qe(),e=t.firstChild,i=e.nextSibling;return c(e,a(xe,{get files(){return r.files},get activeFile(){return r.activeFile()},onSelect:(l,s)=>r.onSelect(l,s)})),c(i,a(g,{get when(){return r.activeFileObj()},get fallback(){return Xe()},get children(){return a(g,{get when(){return r.hasSource()},get fallback(){return(()=>{var l=Ye(),s=l.firstChild,d=s.nextSibling;return d.nextSibling,c(l,()=>r.activeFileObj().type??"binary",d),l})()},get children(){return a(pe,{class:"h-full rounded-none border-0",get children(){return a(we,{get code(){return r.activeFileObj().code??""},get language(){return r.activeFileObj().language}})}})}})}})),t})()}function hr(r){const t=()=>{const i=r.url.split(/[?#]/)[0];return i.slice(i.lastIndexOf("/")+1)||"document.pdf"},e=y(()=>{if(r.url){if(ee(r.url))return r.url;E("pdf fallback",r.url)}});return(()=>{var i=rr(),l=i.firstChild;return l.nextSibling,c(i,a(Oe,{size:40,class:"text-muted-foreground","aria-hidden":"true"}),l),c(l,t),c(i,a(g,{get when(){return e()},get fallback(){return nr()},get children(){var s=er(),d=s.firstChild;d.firstChild;var u=d.nextSibling,h=u.firstChild;return c(d,a(ne,{size:13,"aria-hidden":"true"}),null),c(u,a(Pe,{size:13,"aria-hidden":"true"}),h),z(f=>{var b=e(),w=e();return b!==f.e&&p(d,"href",f.e=b),w!==f.t&&p(u,"href",f.t=w),f},{e:void 0,t:void 0}),s}}),null),i})()}function fr(r){const[t,e]=k("loading");let i,l=0,s;const d=async()=>{if(!i){e("error");return}const u=++l;e("loading");try{const h=i.clientWidth||600;await Ve(r.url,i,h),u===l&&e("success")}catch{u===l&&e("error")}};return F(J(()=>[r.url,r.reloadKey],()=>{d()})),Q(()=>{if(!i||typeof ResizeObserver>"u")return;const u=new ResizeObserver(()=>{t()==="success"&&(clearTimeout(s),s=setTimeout(()=>{d()},200))});u.observe(i),ve(()=>{u.disconnect(),clearTimeout(s),l++})}),(()=>{var u=ar(),h=u.firstChild;return Y(f=>i=f,h),c(u,a(g,{get when(){return be(()=>!0)()&&t()==="loading"},get children(){var f=tr();return c(f,a(ke,{variant:"circular",size:"md"})),f}}),null),c(u,a(g,{get when(){return t()==="error"},get children(){return a(hr,{get url(){return r.url}})}}),null),z(()=>p(h,"aria-busy",t()==="loading")),u})()}me(["click"]);export{sr as A};
@@ -1 +1 @@
1
- import{B as c,i as p,c as a,d as l,S as u,j as C,a as A,n as O,t as g,w as $,l as y,k as F,D as S}from"./define-B_tXMYRm.js";import{C as U,u as k}from"./use-card-resolution-DJg32jGH.js";import{F as z,v as E}from"./form-lUuJjz6s.js";import{C as T}from"./confirm-card-CEvFmVhz.js";import{T as M}from"./tasks-card-CfqrkoVO.js";import{C as P}from"./choice-card-kNsjU2m8.js";import{L as B}from"./link-preview-C9-jNJBf.js";import{E as N}from"./embed-CjAD2jSi.js";import{A as D}from"./artifact-BhJIuh3D.js";import{t as j}from"./triangle-alert-B6or7F5u.js";var R=g('<h3 class="shrink-0 truncate border-b border-border px-3 py-2 text-sm font-medium text-foreground">'),Z=g('<div part=card data-card-type=artifact role=group class="flex w-full flex-col overflow-hidden rounded-xl border border-border bg-card"><div class="min-h-0 flex-1">');const _="420px";function G(e){return typeof e=="number"?`${e}px`:typeof e=="string"&&e.trim()!==""?e:_}function H(e){const r=$(),n=c(()=>e.data.tab),s=c(()=>e.data.activeFile),d=i=>{var o;return(o=e.host)==null?void 0:o.emit({kind:"state",cardId:e.cardId,patch:i})};return(()=>{var i=Z(),o=i.firstChild;return p(i,a(u,{get when(){return e.heading},get children(){var t=R();return l(t,"id",r),p(t,()=>e.heading),t}}),o),p(o,a(D,{get src(){return e.data.src},get files(){return e.data.files},defaultTab:n,activeFile:s,get displayUrl(){return e.data.displayUrl},get iframeTitle(){return C(()=>!!e.heading)()?`${e.heading} preview`:"Artifact preview"},onNavigate:t=>d({src:t}),onTabChange:t=>d({tab:t}),onFileSelect:t=>d({activeFile:t})})),A(t=>{var f=e.cardId,v=e.heading?r:void 0,b=e.heading?void 0:"Artifact",x=G(e.data.height);return f!==t.e&&l(i,"data-card-id",t.e=f),v!==t.t&&l(i,"aria-labelledby",t.t=v),b!==t.a&&l(i,"aria-label",t.a=b),x!==t.o&&O(i,"height",t.o=x),t},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}const m={form:e=>a(z,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),confirm:e=>a(T,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),tasks:e=>a(M,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),choice:e=>a(P,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),link:e=>a(B,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},onEmit:r=>{var n;return(n=e.host)==null?void 0:n.emit(r)}}),embed:e=>a(N,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},onEmit:r=>{var n;return(n=e.host)==null?void 0:n.emit(r)}}),artifact:e=>a(H,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get host(){return e.host}})};function J(e){return e?{...m,...e}:{...m}}const I={artifact:{type:"object",properties:{src:{type:"string"},files:{type:"array",maxItems:500,items:{type:"object",required:["path"],properties:{path:{type:"string",maxLength:1024},url:{type:"string"},code:{type:"string"},language:{type:"string",maxLength:40},type:{type:"string",enum:["html","pdf","image","other"]},additions:{type:"integer",minimum:0},deletions:{type:"integer",minimum:0},status:{type:"string",enum:["added","modified","deleted","renamed","untracked"]}}}},tab:{type:"string",enum:["preview","code"]},activeFile:{type:"string",maxLength:1024},displayUrl:{type:"string",maxLength:2048}}},choice:{type:"object",required:["options"],properties:{prompt:{type:"string"},submitLabel:{type:"string"},options:{type:"array",minItems:1,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},description:{type:"string"},media:{type:"object",properties:{image:{type:"string"},imageAlt:{type:"string"},icon:{type:"string"}}},meta:{type:"string"},recommended:{type:"boolean"},disabled:{type:"boolean"}}}},dismissible:{type:"boolean"}}},confirm:{type:"object",required:["actions"],properties:{heading:{type:"string"},body:{type:"string"},tone:{type:"string",enum:["default","warning","danger"]},actions:{type:"array",minItems:1,maxItems:4,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},style:{type:"string",enum:["primary","default","destructive"]},default:{type:"boolean"}}}},dismissible:{type:"boolean"}}},embed:{type:"object",required:["provider"],properties:{provider:{type:"string",enum:["youtube","vimeo","generic"]},id:{type:"string",maxLength:64,pattern:"^[A-Za-z0-9_-]+$"},url:{type:"string"},title:{type:"string",maxLength:300},poster:{type:"string"},start:{type:"integer",minimum:0},aspectRatio:{type:"string",enum:["16:9","4:3","1:1","9:16"]}}},form:{type:"object",required:["type","properties"],properties:{type:{const:"object"},title:{type:"string"},description:{type:"string"},required:{type:"array",items:{type:"string"}},properties:{type:"object"},"x-kai-order":{type:"array",items:{type:"string"}},"x-kai-inlineMax":{type:"integer",minimum:1},"x-kai-submitLabel":{type:"string"},"x-kai-dismissible":{type:"boolean"},"x-kai-actions":{type:"array",items:{type:"object",required:["id","label"],properties:{id:{type:"string"},label:{type:"string"},variant:{enum:["default","ghost","outline"]}}}}}},link:{type:"object",required:["url"],properties:{url:{type:"string"},title:{type:"string",maxLength:300},description:{type:"string",maxLength:1e3},image:{type:"string"},imageAlt:{type:"string",maxLength:300},favicon:{type:"string"},domain:{type:"string",maxLength:253},siteName:{type:"string",maxLength:200}}},tasks:{type:"object",required:["tasks"],properties:{mode:{type:"string",enum:["select","progress"]},heading:{type:"string"},tasks:{type:"array",minItems:1,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},description:{type:"string"},checked:{type:"boolean"},disabled:{type:"boolean"}}}},selectAll:{type:"boolean"},confirmLabel:{type:"string"},allowEmpty:{type:"boolean"},min:{type:"integer",minimum:0},max:{type:"integer",minimum:1},dismissible:{type:"boolean"}}}},K=Object.freeze({type:"hard",required:"hard",const:"hard",minItems:"hard",enum:"soft",maxItems:"soft",minLength:"soft",maxLength:"soft",pattern:"soft",minimum:"soft",maximum:"soft",exclusiveMinimum:"soft",exclusiveMaximum:"soft",uniqueItems:"soft"}),Q="soft";function V(e){return Object.prototype.hasOwnProperty.call(I,e)}function W(e,r){if(r&&Object.prototype.hasOwnProperty.call(r,e)){const n=r[e];if(n&&typeof n=="object")return n}return V(e)?I[e]:null}function X(e){const r=e.slice(0,3).map(s=>s.message),n=e.length-r.length;return r.join("; ")+(n>0?`; and ${n} more`:"")}function L(e,r,n){const s=W(e,n);if(s===null)return null;const d=E(s,r);if(d.valid)return{ok:!0,tier:"ok",issues:[],hard:[],summary:""};const i=d.issues.map(t=>({...t,tier:K[t.keyword]??Q})),o=i.filter(t=>t.tier==="hard");return{ok:!1,tier:o.length>0?"hard":"soft",issues:i,hard:o,summary:X(o.length>0?o:i)}}function w(e){return`invalid card data (${e.tier}): ${e.summary}`}var Y=g('<div data-card-fallback role=alert class="flex items-center gap-2 p-4 text-sm text-muted-foreground"><span>Unsupported card type: <code class=font-mono>'),ee=g('<div data-card-fallback data-card-invalid role=alert class="flex items-start gap-2 p-4 text-sm text-muted-foreground"><span class=min-w-0>Invalid <code class=font-mono></code> card: <code data-card-invalid-reason class="font-mono break-words">');function h(e){return a(U,{get children(){return a(u,{get when(){return e.reason},get fallback(){return(()=>{var r=Y(),n=r.firstChild,s=n.firstChild,d=s.nextSibling;return p(r,a(j,{class:"size-4 shrink-0 text-destructive dark:text-red-400","aria-hidden":"true"}),n),p(d,()=>e.type),r})()},children:r=>(()=>{var n=ee(),s=n.firstChild,d=s.firstChild,i=d.nextSibling,o=i.nextSibling,t=o.nextSibling;return p(n,a(j,{class:"size-4 shrink-0 translate-y-0.5 text-destructive dark:text-red-400","aria-hidden":"true"}),s),p(i,()=>e.type),p(t,r),n})()})}})}function q(e,r){if(!e||!Object.prototype.hasOwnProperty.call(e,r))return!1;const n=e[r];return typeof n=="object"&&n!==null}function te(e){const r=k(),n=y(()=>J(e.types)),s=y(()=>n()[e.envelope.type]),d=y(()=>e.validateCards===!1||!q(e.schemas,e.envelope.type)&&s()!==m[e.envelope.type]?null:L(e.envelope.type,e.envelope.data,e.schemas));let i=null;return F(()=>{const o=d();if(!s())return;if(!o||o.ok){i=null;return}const t=w(o);t!==i&&(i=t,r?.emit({kind:"error",cardId:e.envelope.id,message:t}))}),a(u,{get when(){return s()},get fallback(){return a(re,{get envelope(){return e.envelope}})},children:o=>a(u,{get when(){var t;return((t=d())==null?void 0:t.tier)==="hard"},get fallback(){return a(S,{get component(){return o()},get envelope(){return e.envelope},host:r})},get children(){return a(h,{get type(){return e.envelope.type},get cardId(){return e.envelope.id},get reason(){return d().summary}})}})})}function re(e){const r=k();return c(()=>r?.emit({kind:"error",cardId:e.envelope.id,message:`Unsupported card type: ${e.envelope.type}`})),a(h,{get type(){return e.envelope.type},get cardId(){return e.envelope.id}})}export{m as B,h as C,te as a,w as c,q as h,L as v};
1
+ import{B as c,i as p,c as a,d as l,S as u,j as C,a as A,n as O,t as g,w as $,l as y,k as F,D as S}from"./define-B_tXMYRm.js";import{C as U,u as k}from"./use-card-resolution-DJg32jGH.js";import{F as z,v as E}from"./form-Cp8Y00Wn.js";import{C as T}from"./confirm-card-BWjf2-xo.js";import{T as M}from"./tasks-card-lPxoodlA.js";import{C as P}from"./choice-card-CGMc3kek.js";import{L as B}from"./link-preview-Cf5KOP-i.js";import{E as N}from"./embed-CjAD2jSi.js";import{A as D}from"./artifact-BSuPYFHY.js";import{t as j}from"./triangle-alert-B6or7F5u.js";var R=g('<h3 class="shrink-0 truncate border-b border-border px-3 py-2 text-sm font-medium text-foreground">'),Z=g('<div part=card data-card-type=artifact role=group class="flex w-full flex-col overflow-hidden rounded-xl border border-border bg-card"><div class="min-h-0 flex-1">');const _="420px";function G(e){return typeof e=="number"?`${e}px`:typeof e=="string"&&e.trim()!==""?e:_}function H(e){const r=$(),n=c(()=>e.data.tab),s=c(()=>e.data.activeFile),d=i=>{var o;return(o=e.host)==null?void 0:o.emit({kind:"state",cardId:e.cardId,patch:i})};return(()=>{var i=Z(),o=i.firstChild;return p(i,a(u,{get when(){return e.heading},get children(){var t=R();return l(t,"id",r),p(t,()=>e.heading),t}}),o),p(o,a(D,{get src(){return e.data.src},get files(){return e.data.files},defaultTab:n,activeFile:s,get displayUrl(){return e.data.displayUrl},get iframeTitle(){return C(()=>!!e.heading)()?`${e.heading} preview`:"Artifact preview"},onNavigate:t=>d({src:t}),onTabChange:t=>d({tab:t}),onFileSelect:t=>d({activeFile:t})})),A(t=>{var f=e.cardId,v=e.heading?r:void 0,b=e.heading?void 0:"Artifact",x=G(e.data.height);return f!==t.e&&l(i,"data-card-id",t.e=f),v!==t.t&&l(i,"aria-labelledby",t.t=v),b!==t.a&&l(i,"aria-label",t.a=b),x!==t.o&&O(i,"height",t.o=x),t},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}const m={form:e=>a(z,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),confirm:e=>a(T,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),tasks:e=>a(M,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),choice:e=>a(P,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),link:e=>a(B,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},onEmit:r=>{var n;return(n=e.host)==null?void 0:n.emit(r)}}),embed:e=>a(N,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},onEmit:r=>{var n;return(n=e.host)==null?void 0:n.emit(r)}}),artifact:e=>a(H,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get host(){return e.host}})};function J(e){return e?{...m,...e}:{...m}}const I={artifact:{type:"object",properties:{src:{type:"string"},files:{type:"array",maxItems:500,items:{type:"object",required:["path"],properties:{path:{type:"string",maxLength:1024},url:{type:"string"},code:{type:"string"},language:{type:"string",maxLength:40},type:{type:"string",enum:["html","pdf","image","other"]},additions:{type:"integer",minimum:0},deletions:{type:"integer",minimum:0},status:{type:"string",enum:["added","modified","deleted","renamed","untracked"]}}}},tab:{type:"string",enum:["preview","code"]},activeFile:{type:"string",maxLength:1024},displayUrl:{type:"string",maxLength:2048}}},choice:{type:"object",required:["options"],properties:{prompt:{type:"string"},submitLabel:{type:"string"},options:{type:"array",minItems:1,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},description:{type:"string"},media:{type:"object",properties:{image:{type:"string"},imageAlt:{type:"string"},icon:{type:"string"}}},meta:{type:"string"},recommended:{type:"boolean"},disabled:{type:"boolean"}}}},dismissible:{type:"boolean"}}},confirm:{type:"object",required:["actions"],properties:{heading:{type:"string"},body:{type:"string"},tone:{type:"string",enum:["default","warning","danger"]},actions:{type:"array",minItems:1,maxItems:4,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},style:{type:"string",enum:["primary","default","destructive"]},default:{type:"boolean"}}}},dismissible:{type:"boolean"}}},embed:{type:"object",required:["provider"],properties:{provider:{type:"string",enum:["youtube","vimeo","generic"]},id:{type:"string",maxLength:64,pattern:"^[A-Za-z0-9_-]+$"},url:{type:"string"},title:{type:"string",maxLength:300},poster:{type:"string"},start:{type:"integer",minimum:0},aspectRatio:{type:"string",enum:["16:9","4:3","1:1","9:16"]}}},form:{type:"object",required:["type","properties"],properties:{type:{const:"object"},title:{type:"string"},description:{type:"string"},required:{type:"array",items:{type:"string"}},properties:{type:"object"},"x-kai-order":{type:"array",items:{type:"string"}},"x-kai-inlineMax":{type:"integer",minimum:1},"x-kai-submitLabel":{type:"string"},"x-kai-dismissible":{type:"boolean"},"x-kai-actions":{type:"array",items:{type:"object",required:["id","label"],properties:{id:{type:"string"},label:{type:"string"},variant:{enum:["default","ghost","outline"]}}}}}},link:{type:"object",required:["url"],properties:{url:{type:"string"},title:{type:"string",maxLength:300},description:{type:"string",maxLength:1e3},image:{type:"string"},imageAlt:{type:"string",maxLength:300},favicon:{type:"string"},domain:{type:"string",maxLength:253},siteName:{type:"string",maxLength:200}}},tasks:{type:"object",required:["tasks"],properties:{mode:{type:"string",enum:["select","progress"]},heading:{type:"string"},tasks:{type:"array",minItems:1,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},description:{type:"string"},checked:{type:"boolean"},disabled:{type:"boolean"}}}},selectAll:{type:"boolean"},confirmLabel:{type:"string"},allowEmpty:{type:"boolean"},min:{type:"integer",minimum:0},max:{type:"integer",minimum:1},dismissible:{type:"boolean"}}}},K=Object.freeze({type:"hard",required:"hard",const:"hard",minItems:"hard",enum:"soft",maxItems:"soft",minLength:"soft",maxLength:"soft",pattern:"soft",minimum:"soft",maximum:"soft",exclusiveMinimum:"soft",exclusiveMaximum:"soft",uniqueItems:"soft"}),Q="soft";function V(e){return Object.prototype.hasOwnProperty.call(I,e)}function W(e,r){if(r&&Object.prototype.hasOwnProperty.call(r,e)){const n=r[e];if(n&&typeof n=="object")return n}return V(e)?I[e]:null}function X(e){const r=e.slice(0,3).map(s=>s.message),n=e.length-r.length;return r.join("; ")+(n>0?`; and ${n} more`:"")}function L(e,r,n){const s=W(e,n);if(s===null)return null;const d=E(s,r);if(d.valid)return{ok:!0,tier:"ok",issues:[],hard:[],summary:""};const i=d.issues.map(t=>({...t,tier:K[t.keyword]??Q})),o=i.filter(t=>t.tier==="hard");return{ok:!1,tier:o.length>0?"hard":"soft",issues:i,hard:o,summary:X(o.length>0?o:i)}}function w(e){return`invalid card data (${e.tier}): ${e.summary}`}var Y=g('<div data-card-fallback role=alert class="flex items-center gap-2 p-4 text-sm text-muted-foreground"><span>Unsupported card type: <code class=font-mono>'),ee=g('<div data-card-fallback data-card-invalid role=alert class="flex items-start gap-2 p-4 text-sm text-muted-foreground"><span class=min-w-0>Invalid <code class=font-mono></code> card: <code data-card-invalid-reason class="font-mono break-words">');function h(e){return a(U,{get children(){return a(u,{get when(){return e.reason},get fallback(){return(()=>{var r=Y(),n=r.firstChild,s=n.firstChild,d=s.nextSibling;return p(r,a(j,{class:"size-4 shrink-0 text-destructive dark:text-red-400","aria-hidden":"true"}),n),p(d,()=>e.type),r})()},children:r=>(()=>{var n=ee(),s=n.firstChild,d=s.firstChild,i=d.nextSibling,o=i.nextSibling,t=o.nextSibling;return p(n,a(j,{class:"size-4 shrink-0 translate-y-0.5 text-destructive dark:text-red-400","aria-hidden":"true"}),s),p(i,()=>e.type),p(t,r),n})()})}})}function q(e,r){if(!e||!Object.prototype.hasOwnProperty.call(e,r))return!1;const n=e[r];return typeof n=="object"&&n!==null}function te(e){const r=k(),n=y(()=>J(e.types)),s=y(()=>n()[e.envelope.type]),d=y(()=>e.validateCards===!1||!q(e.schemas,e.envelope.type)&&s()!==m[e.envelope.type]?null:L(e.envelope.type,e.envelope.data,e.schemas));let i=null;return F(()=>{const o=d();if(!s())return;if(!o||o.ok){i=null;return}const t=w(o);t!==i&&(i=t,r?.emit({kind:"error",cardId:e.envelope.id,message:t}))}),a(u,{get when(){return s()},get fallback(){return a(re,{get envelope(){return e.envelope}})},children:o=>a(u,{get when(){var t;return((t=d())==null?void 0:t.tier)==="hard"},get fallback(){return a(S,{get component(){return o()},get envelope(){return e.envelope},host:r})},get children(){return a(h,{get type(){return e.envelope.type},get cardId(){return e.envelope.id},get reason(){return d().summary}})}})})}function re(e){const r=k();return c(()=>r?.emit({kind:"error",cardId:e.envelope.id,message:`Unsupported card type: ${e.envelope.type}`})),a(h,{get type(){return e.envelope.type},get cardId(){return e.envelope.id}})}export{m as B,h as C,te as a,w as c,q as h,L as v};
@@ -0,0 +1 @@
1
+ const a="kai-card";function i(r,e){r.dispatchEvent(new CustomEvent(a,{detail:e,bubbles:!0,composed:!0}))}const p=["http:","https:","mailto:"],u=["javascript:","vbscript:"];function s(r){try{return new URL(r,"http://_invalid_base").protocol}catch{return}}function c(r){const e=s(r);return e!==void 0&&p.includes(e)}function m(r){const e=s(r);return e!==void 0&&u.includes(e)}function t(r){console.warn(`[kai-card] no policy handler for "${r}"`)}function b(r,e){const n=r??{};switch(e.kind){case"ready":break;case"submit":n.onSubmit?n.onSubmit(e.cardId,e.data):t("submit");break;case"action":n.onAction?n.onAction(e.cardId,e.action,e.payload):t("action");break;case"send-prompt":{const o=e.mode??"compose",d=n.maxSendPromptMode==="send"?o:"compose";n.onSendPrompt?n.onSendPrompt(e.text,{mode:d,context:e.context}):t("send-prompt");break}case"open":{if(!c(e.url)){n.onError?n.onError(e.cardId,`Blocked unsafe url: ${e.url}`):t("open(unsafe)");break}const o=e.target??"tab";n.onOpen?n.onOpen(e.url,o):typeof window<"u"&&window.open(e.url,"_blank","noopener,noreferrer");break}case"state":n.onState?n.onState(e.cardId,e.patch):t("state");break;case"dismiss":n.onDismiss?n.onDismiss(e.cardId):t("dismiss");break;case"reopen":n.onReopen?n.onReopen(e.cardId):t("reopen");break;case"error":n.onError?n.onError(e.cardId,e.message):t("error");break}}export{a as C,c as a,i as e,m as i,b as r};
@@ -1 +1 @@
1
- import{y as D,l as E,g as M,k as U,o as G,c as r,v as J,i,S as u,u as g,j as K,F as L,a as _,b as A,C as N,t as d}from"./define-B_tXMYRm.js";import{s as O,n as P}from"./composer-CZZmtYOT.js";import{C as Q,a as W,b as X,S as Y}from"./scroll-button-CrTo7wm4.js";import{M as Z,a as j,b as ee}from"./message-CoqLuLkd.js";import{b as te}from"./message-_oYx5mk1.js";import{M as re}from"./model-switcher-D7JrFFHp.js";import{C as ne,a as ae,b as le,c as se,d as oe,e as ie,f as ce,g as ue}from"./context-hKjNqiyQ.js";import{D as de}from"./default-input-B1Mem5wu.js";var ge=d('<aside part=sidebar class="flex w-64 shrink-0 flex-col overflow-hidden border-r border-border"><slot name=sidebar>'),he=d("<header part=header class=shrink-0><slot name=header>"),me=d("<slot name=empty>"),ve=d('<div class="absolute bottom-4 left-1/2 flex w-full max-w-3xl -translate-x-1/2 justify-center px-5">'),fe=d('<div class="shrink-0 px-4"><div class="mx-auto flex max-w-3xl items-center gap-2 pb-2"><slot name=composer-actions>'),xe=d("<slot name=composer>"),pe=d('<div part=footer class="shrink-0 px-4 pb-3"><div class="mx-auto max-w-3xl text-center text-xs text-muted-foreground"><slot name=footer>'),be=d('<div><div class="flex h-full min-w-0 flex-1 flex-col"><div class="relative flex-1 overflow-hidden"></div><div class="shrink-0 px-4 pb-4"><div class="mx-auto max-w-3xl">'),we=d('<div class="text-sm font-semibold text-foreground">'),ke=d("<div class=space-y-1.5>"),Ce=d('<header part=header-bar class="flex h-14 shrink-0 items-center justify-between border-b border-border px-5"><div class="flex items-center gap-2"><slot name=header-start></slot></div><div class="flex items-center gap-2"><slot name=header-end>'),Se=d("<div>");function Te(e){const R=D(),k=()=>e.actionsReveal==="hover"?"hover":"always",V=E(()=>e.messages.map(n=>n.id));let h;const p=te({emit:n=>{var a;return(a=e.onMessageAction)==null?void 0:a.call(e,n)},target:()=>h}),[F,x]=M(e.value??""),[b,w]=M([]),C=()=>typeof e.value=="string"?e.value:F();U(()=>{const n=e.value;n!=null&&typeof n!="string"&&x(n)});const S=n=>{var a;x(n),(a=e.onValueChange)==null||a.call(e,n)},T=()=>{w([]),e.value===void 0&&x("")},y=()=>{var n;(n=e.onSubmit)==null||n.call(e,{value:O(P(C())),attachments:b()}),T()},I=n=>{var a,c;(e.suggestionMode??"submit")==="fill"?(S(n),(a=e.onSuggestionClick)==null||a.call(e,n)):((c=e.onSubmit)==null||c.call(e,{value:n,attachments:b()}),T())},H=()=>!!(e.chatTitle||e.models||e.context||e.headerStart||e.headerEnd),q=()=>e.persistSuggestions||e.messages.length===0?e.suggestions:void 0,z=()=>e.scrollButton!==!1;return G(()=>{var n;(n=e.controllerRef)==null||n.call(e,{focus:a=>{var c;return(c=h?.querySelector('[contenteditable]:not([contenteditable="false"]), textarea'))==null?void 0:c.focus(a)},clear:()=>{var a;x(""),w([]),(a=e.onValueChange)==null||a.call(e,"")},send:()=>y(),scrollToBottom:a=>{const c=h?.querySelector(".overflow-y-auto");c?.scrollTo({top:c.scrollHeight,behavior:a??"smooth"})}})}),r(N,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return e.codeHighlight!==!1},get portalMount(){return R.portalMount()},get children(){var n=be(),a=n.firstChild,c=a.firstChild,$=c.nextSibling,B=$.firstChild;return J(t=>h=t,n),i(n,r(u,{get when(){return e.sidebar},get children(){var t=ge(),o=t.firstChild;return o._$owner=g(),t}}),a),i(a,r(u,{get when(){return e.headerFull},get fallback(){return r(u,{get when(){return H()},get children(){var t=Ce(),o=t.firstChild,l=o.firstChild,m=o.nextSibling,v=m.firstChild;return l._$owner=g(),i(o,r(u,{get when(){return e.chatTitle},get children(){var s=we();return i(s,()=>e.chatTitle),s}}),null),i(m,r(u,{get when(){return e.models},get children(){return r(re,{get models(){return e.models},get currentModelId(){var s;return e.currentModel??((s=e.models[0])==null?void 0:s.id)??""},onModelChange:s=>{var f;return(f=e.onModelChange)==null?void 0:f.call(e,s)}})}}),v),i(m,r(u,{get when(){return e.context},get children(){return r(ne,{get usedTokens(){return e.context.usedTokens},get maxTokens(){return e.context.maxTokens},get inputTokens(){return e.context.inputTokens},get outputTokens(){return e.context.outputTokens},get estimatedCost(){return e.context.estimatedCost},get children(){return[r(ae,{}),r(le,{get children(){return[r(se,{}),r(oe,{get children(){var s=ke();return i(s,r(ie,{}),null),i(s,r(ce,{}),null),s}}),r(ue,{})]}})]}})}}),v),v._$owner=g(),t}})},get children(){var t=he(),o=t.firstChild;return o._$owner=g(),t}}),c),i(c,r(Q,{class:"h-full px-4 py-3",get children(){return[r(W,{class:"mx-auto w-full max-w-3xl space-y-4",get children(){return[r(u,{get when(){return K(()=>!!e.empty)()&&e.messages.length===0},get children(){var t=me();return t._$owner=g(),t}}),r(L,{get each(){return V()},children:(t,o)=>r(u,{get when(){return e.messages[o()]},children:l=>{const m=r(Z,{get parts(){return l().parts},get cardTypes(){return e.cardTypes},get cardSchemas(){return e.cardSchemas},get isUser(){return l().role==="user"},get markdown(){return l().role==="assistant"},get actions(){return l().actions},get actionsReveal(){return k()},get activeFeedback(){return p.resolveFeedback(l())},get copied(){return p.isCopied(l().id)},onAction:s=>p.handleAction(l(),s)}),v=()=>k()==="hover"?"group ":"";return r(u,{get when(){return l().avatar},get fallback(){return r(j,{get role(){return l().role},get class(){return`${v()}${l().role==="user"?"flex-col items-end":"flex-col items-start"}`},children:m})},children:s=>r(j,{get role(){return l().role},get class(){return v()},get children(){return[r(ee,{get src(){return s().src??""},get alt(){return s().alt??""},get fallback(){return s().fallback}}),(()=>{var f=Se();return i(f,m),_(()=>A(f,`flex min-w-0 flex-1 flex-col ${l().role==="user"?"items-end":"items-start"}`)),f})()]}})})}})}),r(X,{})]}}),r(u,{get when(){return z()},get children(){var t=ve();return i(t,r(Y,{class:"shadow-sm"})),t}})]}})),i(a,r(u,{get when(){return e.composerActions},get children(){var t=fe(),o=t.firstChild,l=o.firstChild;return l._$owner=g(),t}}),$),i(B,r(u,{get when(){return e.composer},get fallback(){return r(de,{get value(){return C()},get placeholder(){return e.placeholder},get loading(){return e.loading===!0},get suggestions(){return q()},get attachments(){return b()},get accept(){return e.accept},get onAttachmentsRejected(){return e.onAttachmentsRejected},get search(){return e.search===!0},get voice(){return e.voice===!0},get triggers(){return e.triggers},get kindIcons(){return e.kindIcons},onValueChange:S,onSubmit:y,onSuggestionClick:I,onAttachmentsChange:t=>{var o;w(t),(o=e.onAttachmentsChange)==null||o.call(e,t)},onSearch:()=>{var t;return(t=e.onSearch)==null?void 0:t.call(e)},onVoice:()=>{var t;return(t=e.onVoice)==null?void 0:t.call(e)}})},get children(){var t=xe();return t._$owner=g(),t}})),i(a,r(u,{get when(){return e.footer},get children(){var t=pe(),o=t.firstChild,l=o.firstChild;return l._$owner=g(),t}}),null),_(()=>A(n,`flex h-full bg-background ${e.class??""}`)),n}})}export{Te as C};
1
+ import{y as D,l as E,g as M,k as U,o as G,c as r,v as J,i,S as u,u as g,j as K,F as L,a as _,b as A,C as N,t as d}from"./define-B_tXMYRm.js";import{s as O,n as P}from"./composer-CZZmtYOT.js";import{C as Q,a as W,b as X,S as Y}from"./scroll-button-CrTo7wm4.js";import{M as Z,a as j,b as ee}from"./message-CE4k-qaj.js";import{b as te}from"./message-DtXKPqiR.js";import{M as re}from"./model-switcher-D7JrFFHp.js";import{C as ne,a as ae,b as le,c as se,d as oe,e as ie,f as ce,g as ue}from"./context-hKjNqiyQ.js";import{D as de}from"./default-input-B1Mem5wu.js";var ge=d('<aside part=sidebar class="flex w-64 shrink-0 flex-col overflow-hidden border-r border-border"><slot name=sidebar>'),he=d("<header part=header class=shrink-0><slot name=header>"),me=d("<slot name=empty>"),ve=d('<div class="absolute bottom-4 left-1/2 flex w-full max-w-3xl -translate-x-1/2 justify-center px-5">'),fe=d('<div class="shrink-0 px-4"><div class="mx-auto flex max-w-3xl items-center gap-2 pb-2"><slot name=composer-actions>'),xe=d("<slot name=composer>"),pe=d('<div part=footer class="shrink-0 px-4 pb-3"><div class="mx-auto max-w-3xl text-center text-xs text-muted-foreground"><slot name=footer>'),be=d('<div><div class="flex h-full min-w-0 flex-1 flex-col"><div class="relative flex-1 overflow-hidden"></div><div class="shrink-0 px-4 pb-4"><div class="mx-auto max-w-3xl">'),we=d('<div class="text-sm font-semibold text-foreground">'),ke=d("<div class=space-y-1.5>"),Ce=d('<header part=header-bar class="flex h-14 shrink-0 items-center justify-between border-b border-border px-5"><div class="flex items-center gap-2"><slot name=header-start></slot></div><div class="flex items-center gap-2"><slot name=header-end>'),Se=d("<div>");function Te(e){const R=D(),k=()=>e.actionsReveal==="hover"?"hover":"always",V=E(()=>e.messages.map(n=>n.id));let h;const p=te({emit:n=>{var a;return(a=e.onMessageAction)==null?void 0:a.call(e,n)},target:()=>h}),[F,x]=M(e.value??""),[b,w]=M([]),C=()=>typeof e.value=="string"?e.value:F();U(()=>{const n=e.value;n!=null&&typeof n!="string"&&x(n)});const S=n=>{var a;x(n),(a=e.onValueChange)==null||a.call(e,n)},T=()=>{w([]),e.value===void 0&&x("")},y=()=>{var n;(n=e.onSubmit)==null||n.call(e,{value:O(P(C())),attachments:b()}),T()},I=n=>{var a,c;(e.suggestionMode??"submit")==="fill"?(S(n),(a=e.onSuggestionClick)==null||a.call(e,n)):((c=e.onSubmit)==null||c.call(e,{value:n,attachments:b()}),T())},H=()=>!!(e.chatTitle||e.models||e.context||e.headerStart||e.headerEnd),q=()=>e.persistSuggestions||e.messages.length===0?e.suggestions:void 0,z=()=>e.scrollButton!==!1;return G(()=>{var n;(n=e.controllerRef)==null||n.call(e,{focus:a=>{var c;return(c=h?.querySelector('[contenteditable]:not([contenteditable="false"]), textarea'))==null?void 0:c.focus(a)},clear:()=>{var a;x(""),w([]),(a=e.onValueChange)==null||a.call(e,"")},send:()=>y(),scrollToBottom:a=>{const c=h?.querySelector(".overflow-y-auto");c?.scrollTo({top:c.scrollHeight,behavior:a??"smooth"})}})}),r(N,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return e.codeHighlight!==!1},get portalMount(){return R.portalMount()},get children(){var n=be(),a=n.firstChild,c=a.firstChild,$=c.nextSibling,B=$.firstChild;return J(t=>h=t,n),i(n,r(u,{get when(){return e.sidebar},get children(){var t=ge(),o=t.firstChild;return o._$owner=g(),t}}),a),i(a,r(u,{get when(){return e.headerFull},get fallback(){return r(u,{get when(){return H()},get children(){var t=Ce(),o=t.firstChild,l=o.firstChild,m=o.nextSibling,v=m.firstChild;return l._$owner=g(),i(o,r(u,{get when(){return e.chatTitle},get children(){var s=we();return i(s,()=>e.chatTitle),s}}),null),i(m,r(u,{get when(){return e.models},get children(){return r(re,{get models(){return e.models},get currentModelId(){var s;return e.currentModel??((s=e.models[0])==null?void 0:s.id)??""},onModelChange:s=>{var f;return(f=e.onModelChange)==null?void 0:f.call(e,s)}})}}),v),i(m,r(u,{get when(){return e.context},get children(){return r(ne,{get usedTokens(){return e.context.usedTokens},get maxTokens(){return e.context.maxTokens},get inputTokens(){return e.context.inputTokens},get outputTokens(){return e.context.outputTokens},get estimatedCost(){return e.context.estimatedCost},get children(){return[r(ae,{}),r(le,{get children(){return[r(se,{}),r(oe,{get children(){var s=ke();return i(s,r(ie,{}),null),i(s,r(ce,{}),null),s}}),r(ue,{})]}})]}})}}),v),v._$owner=g(),t}})},get children(){var t=he(),o=t.firstChild;return o._$owner=g(),t}}),c),i(c,r(Q,{class:"h-full px-4 py-3",get children(){return[r(W,{class:"mx-auto w-full max-w-3xl space-y-4",get children(){return[r(u,{get when(){return K(()=>!!e.empty)()&&e.messages.length===0},get children(){var t=me();return t._$owner=g(),t}}),r(L,{get each(){return V()},children:(t,o)=>r(u,{get when(){return e.messages[o()]},children:l=>{const m=r(Z,{get parts(){return l().parts},get cardTypes(){return e.cardTypes},get cardSchemas(){return e.cardSchemas},get isUser(){return l().role==="user"},get markdown(){return l().role==="assistant"},get actions(){return l().actions},get actionsReveal(){return k()},get activeFeedback(){return p.resolveFeedback(l())},get copied(){return p.isCopied(l().id)},onAction:s=>p.handleAction(l(),s)}),v=()=>k()==="hover"?"group ":"";return r(u,{get when(){return l().avatar},get fallback(){return r(j,{get role(){return l().role},get class(){return`${v()}${l().role==="user"?"flex-col items-end":"flex-col items-start"}`},children:m})},children:s=>r(j,{get role(){return l().role},get class(){return v()},get children(){return[r(ee,{get src(){return s().src??""},get alt(){return s().alt??""},get fallback(){return s().fallback}}),(()=>{var f=Se();return i(f,m),_(()=>A(f,`flex min-w-0 flex-1 flex-col ${l().role==="user"?"items-end":"items-start"}`)),f})()]}})})}})}),r(X,{})]}}),r(u,{get when(){return z()},get children(){var t=ve();return i(t,r(Y,{class:"shadow-sm"})),t}})]}})),i(a,r(u,{get when(){return e.composerActions},get children(){var t=fe(),o=t.firstChild,l=o.firstChild;return l._$owner=g(),t}}),$),i(B,r(u,{get when(){return e.composer},get fallback(){return r(de,{get value(){return C()},get placeholder(){return e.placeholder},get loading(){return e.loading===!0},get suggestions(){return q()},get attachments(){return b()},get accept(){return e.accept},get onAttachmentsRejected(){return e.onAttachmentsRejected},get search(){return e.search===!0},get voice(){return e.voice===!0},get triggers(){return e.triggers},get kindIcons(){return e.kindIcons},onValueChange:S,onSubmit:y,onSuggestionClick:I,onAttachmentsChange:t=>{var o;w(t),(o=e.onAttachmentsChange)==null||o.call(e,t)},onSearch:()=>{var t;return(t=e.onSearch)==null?void 0:t.call(e)},onVoice:()=>{var t;return(t=e.onVoice)==null?void 0:t.call(e)}})},get children(){var t=xe();return t._$owner=g(),t}})),i(a,r(u,{get when(){return e.footer},get children(){var t=pe(),o=t.firstChild,l=o.firstChild;return l._$owner=g(),t}}),null),_(()=>A(n,`flex h-full bg-background ${e.class??""}`)),n}})}export{Te as C};
@@ -1 +1 @@
1
- import{m as ve,s as me,l as x,g as U,k as G,x as te,o as fe,c,E as he,S as b,i as p,d as v,F as be,a as w,b as M,v as re,t as f,w as ye,H as xe,j as V,e as ke}from"./define-B_tXMYRm.js";import{c as F}from"./cn-CU7UAWzk.js";import{B as ne}from"./button-B9okqG73.js";import{c as we}from"./hover-card-6KtXpLwT.js";import{u as Ie,a as $e,C as J,D as Ae}from"./use-card-resolution-DJg32jGH.js";import{e as De}from"./card-routing-C986KuUA.js";import{x as Re}from"./x-BOhjBeOd.js";import{c as Ce}from"./check-MdLzbxrm.js";var Se=f('<p class="text-sm text-foreground">'),je=f("<div role=radiogroup>"),Ee=f('<div class="flex flex-col gap-2"><label class=sr-only></label><input type=text class="w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60">'),Te=f('<div class="flex w-full flex-wrap items-center justify-between gap-2">'),Le=f("<div>"),Me=f('<span class="inline-flex items-center rounded-full bg-[var(--color-primary)] px-1.5 py-0.5 text-[0.625rem] font-medium uppercase leading-none tracking-wide text-[var(--color-primary-foreground,white)]">Recommended'),Ve=f("<img>"),Fe=f('<span aria-hidden=true class="flex h-9 w-9 shrink-0 items-center justify-center rounded-md bg-muted text-sm font-medium text-muted-foreground">'),Oe=f('<img class="max-h-80 max-w-80 rounded-md object-contain">'),_e=f('<span class="h-2 w-2 rounded-full bg-[var(--color-primary)]">'),ze=f('<span class="text-xs font-normal text-muted-foreground">'),qe=f('<span class="ml-auto shrink-0 text-xs font-normal text-muted-foreground">'),He=f('<div role=radio><span aria-hidden=true></span><span class="flex min-w-0 flex-col gap-0.5"><span class="flex items-center gap-2"><span class=truncate>'),Pe=f("<span>"),Be=f('<span class="ml-auto text-xs font-normal text-muted-foreground">'),Ue=f('<div class="flex items-center gap-3 rounded-lg border border-input bg-accent px-3 py-2.5 text-sm font-medium text-accent-foreground">'),Ge=f("<span>Other: ");const Je="choice",A="__other__",K="Other\u2026";function Ke(n){if(!Array.isArray(n)||n.length===0)return{options:[],error:"This card couldn't be displayed."};const a=new Set,t=[];for(const l of n){if(!l||typeof l!="object")continue;const o=l;if(typeof o.id!="string"||o.id.length===0||typeof o.label!="string"||o.label.length===0)continue;if(a.has(o.id)){console.warn(`[kai-choice] duplicate option id "${o.id}" ignored`);continue}a.add(o.id);const u=o.media&&typeof o.media=="object"?{image:typeof o.media.image=="string"?o.media.image:void 0,imageAlt:typeof o.media.imageAlt=="string"?o.media.imageAlt:void 0,icon:typeof o.media.icon=="string"?o.media.icon:void 0}:void 0;t.push({id:o.id,label:o.label,description:typeof o.description=="string"?o.description:void 0,media:u,meta:typeof o.meta=="string"?o.meta:void 0,recommended:o.recommended===!0,disabled:o.disabled===!0,payload:o.payload})}return t.length===0?{options:[],error:"This card couldn't be displayed."}:{options:t}}function Ne(n){return n?n===!0?{label:K,placeholder:void 0}:typeof n=="object"?{label:typeof n.label=="string"&&n.label.length>0?n.label:K,placeholder:typeof n.placeholder=="string"?n.placeholder:void 0}:null:null}function oe(n,a,t){const l=n.length;if(l===0)return a;for(let o=1;o<=l;o+=1){const u=((a+t*o)%l+l)%l;if(!n[u].disabled)return u}return a}function ie(n){return n.findIndex(a=>!a.disabled)}function Qe(n){const a=ve({cardId:"kai-choice"},n),[t]=me(a,["data","cardId","heading","host","hostElement","class","resolution","value","defaultValue","disabled","onValueChange","controllerRef"]),l=Ie(),o=ye(),u=e=>{const r=t.host??l;r?r.emit(e):t.hostElement&&De(t.hostElement,e)},d=x(()=>{var e;return Ke((e=t.data)==null?void 0:e.options)}),h=x(()=>d().error===void 0),I=x(()=>d().error??""),k=x(()=>d().options),E=x(()=>{var e;return Ne((e=t.data)==null?void 0:e.allowOther)}),D=x(()=>{const e=E();return e?[...k(),{id:A,label:e.label}]:k()}),m=$e({prop:()=>t.resolution,data:()=>t.data}),O=x(()=>{const e=m.resolution();return e&&e.kind==="action"?e.action:void 0}),[q,R]=U(0),[ae,N]=U(n.defaultValue),L=x(()=>t.value??ae()),de=e=>{var r;L()!==e&&(N(e),(r=t.onValueChange)==null||r.call(t,e))},[H,Q]=U(""),$=()=>t.disabled===!0;let _,T;const W=x(()=>L()===A);G(te(()=>t.data,()=>{N(t.defaultValue),Q(""),R(Math.max(0,ie(D())))}));const le=x(()=>{var e;const r=m.resolution();return!r||r.kind!=="action"?void 0:r.action===A?{other:!0,text:((e=r.payload)==null?void 0:e.text)??""}:{other:!1,opt:k().find(s=>s.id===r.action),id:r.action}});G(te(h,e=>{u(e?{kind:"ready",cardId:t.cardId}:{kind:"error",cardId:t.cardId,message:I()})})),G(()=>{const e=t.hostElement;if(!e)return;const r=O();r!==void 0?e.setAttribute("data-kai-resolved",r):e.removeAttribute("data-kai-resolved")});const se=e=>e.id===A,P=e=>{m.isResolved()||$()||e.disabled||(de(e.id),se(e)&&queueMicrotask(()=>T?.focus()))},ce=x(()=>{if(m.isResolved()||$())return!1;const e=L();return e===void 0?!1:e===A?H().trim().length>0:!0}),ue=()=>{var e;return((e=t.data)==null?void 0:e.submitLabel)??"Submit"},B=()=>{if(m.isResolved()||$())return;const e=L();if(e===void 0)return;if(e===A){const s=H().trim();if(s.length===0)return;u({kind:"action",cardId:t.cardId,action:A,payload:{text:s}}),m.setLocal({kind:"action",action:A,payload:{text:s}});return}const r=k().find(s=>s.id===e);r&&(u({kind:"action",cardId:t.cardId,action:r.id,...r.payload!==void 0?{payload:r.payload}:{}}),m.setLocal({kind:"action",action:r.id,...r.payload!==void 0?{payload:r.payload}:{}}))},X=()=>{m.isResolved()||(u({kind:"dismiss",cardId:t.cardId}),m.setLocal({kind:"dismissed"}))},Y=()=>u({kind:"reopen",cardId:t.cardId}),z=(e,r)=>{var s;const i=_?.querySelectorAll('[role="radio"]');(s=i?.[e])==null||s.focus(r)};fe(()=>{var e;(e=t.controllerRef)==null||e.call(t,{focus:r=>{W()&&T?T.focus(r):z(q(),r)},select:r=>{const s=D(),i=s.findIndex(y=>y.id===r);i!==-1&&(R(i),P(s[i]))},send:()=>B(),dismiss:()=>X(),reopen:()=>Y()})});const pe=e=>{if(m.isResolved()||$())return;const r=D(),s=q();if(e.key==="ArrowDown"||e.key==="ArrowRight"){e.preventDefault();const i=oe(r,s,1);R(i),z(i)}else if(e.key==="ArrowUp"||e.key==="ArrowLeft"){e.preventDefault();const i=oe(r,s,-1);R(i),z(i)}else if(e.key==="Home"){e.preventDefault();const i=Math.max(0,ie(r));R(i),z(i)}else if(e.key===" "||e.key==="Enter"){e.preventDefault();const i=r[s];i&&P(i)}},ge=()=>{var e;return t.heading??((e=t.data)==null?void 0:e.prompt)??"Choose an option"},Z=`kai-choice-prompt-${o}`,ee=`kai-choice-other-${o}`;return c(b,{get when(){return h()},get fallback(){return c(J,{get heading(){return t.heading},get errorMessage(){return I()}})},get children(){return c(he,{fallback:()=>(u({kind:"error",cardId:t.cardId,message:"The card failed to render."}),c(J,{get heading(){return t.heading},errorMessage:"The card failed to render."})),get children(){return c(b,{get when(){return!m.isDeferred()},get fallback(){return c(Ae,{type:Je,get title(){return t.heading},onReopen:Y})},get children(){return c(J,{get heading(){return t.heading},get children(){var e=Le();return p(e,c(b,{get when(){var r;return(r=t.data)==null?void 0:r.prompt},get children(){var r=Se();return v(r,"id",Z),p(r,()=>{var s;return(s=t.data)==null?void 0:s.prompt}),r}}),null),p(e,c(b,{get when(){return!m.isResolved()},get fallback(){return c(et,{get choice(){return le()},get optimistic(){return m.isOptimistic()}})},get children(){return[(()=>{var r=je();r.$$keydown=pe;var s=_;return typeof s=="function"?re(s,r):_=r,p(r,c(be,{get each(){return D()},children:(i,y)=>{const g=()=>L()===i.id,C=()=>!i.disabled&&!$()&&y()===q()&&!m.isResolved(),S=`kai-choice-desc-${o}-${i.id}`,j=()=>!!i.description;return c(Ze,{opt:i,get checked(){return g()},get tabStop(){return C()},descId:S,get hasDesc(){return j()},onPick:()=>{R(y()),P(i)},onFocus:()=>R(y())})}})),w(i=>{var y,g=ge(),C=(y=t.data)!=null&&y.prompt?Z:void 0,S=$()?"true":void 0,j=F("divide-y divide-border overflow-hidden rounded-lg border border-input",$()&&"cursor-not-allowed opacity-60");return g!==i.e&&v(r,"aria-label",i.e=g),C!==i.t&&v(r,"aria-describedby",i.t=C),S!==i.a&&v(r,"aria-disabled",i.a=S),j!==i.o&&M(r,i.o=j),i},{e:void 0,t:void 0,a:void 0,o:void 0}),r})(),c(b,{get when(){return W()},get children(){var r=Ee(),s=r.firstChild,i=s.nextSibling;v(s,"for",ee),p(s,()=>{var g;return((g=E())==null?void 0:g.label)??K}),i.$$keydown=g=>{g.key==="Enter"&&(g.preventDefault(),B())},i.$$input=g=>Q(g.currentTarget.value);var y=T;return typeof y=="function"?re(y,i):T=i,v(i,"id",ee),w(g=>{var C,S=$(),j=(C=E())==null?void 0:C.placeholder;return S!==g.e&&(i.disabled=g.e=S),j!==g.t&&v(i,"placeholder",g.t=j),g},{e:void 0,t:void 0}),w(()=>i.value=H()),r}}),(()=>{var r=Te();return p(r,c(b,{get when(){var s;return((s=t.data)==null?void 0:s.dismissible)===!0},get children(){return c(ne,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"Dismiss",onClick:X,get children(){return c(Re,{size:16,"aria-hidden":"true"})}})}}),null),p(r,c(ne,{type:"button",class:"ml-auto",get disabled(){return!ce()},onClick:B,get children(){return ue()}}),null),r})()]}}),null),w(()=>M(e,F("flex flex-col gap-3",t.class))),e}})}})}})}})}function We(){return Me()}function Xe(n){return(()=>{var a=Ve();return w(t=>{var l=n.media.image,o=n.media.imageAlt??"",u=F("shrink-0 rounded-md object-cover",n.class);return l!==t.e&&v(a,"src",t.e=l),o!==t.t&&v(a,"alt",t.t=o),u!==t.a&&M(a,t.a=u),t},{e:void 0,t:void 0,a:void 0}),a})()}function Ye(n){return(()=>{var a=Fe();return p(a,()=>n.name.slice(0,2)),a})()}function Ze(n){return(()=>{var a=He(),t=a.firstChild,l=t.nextSibling,o=l.firstChild,u=o.firstChild;return xe(a,"focus",n.onFocus),a.$$click=()=>!n.opt.disabled&&n.onPick(),p(a,c(b,{get when(){var d;return(d=n.opt.media)==null?void 0:d.image},get children(){return c(we,{openDelay:150,class:"p-1 w-auto",placement:"right-start",get trigger(){return c(Xe,{get media(){return n.opt.media},class:"h-9 w-9"})},get children(){var d=Oe();return w(h=>{var I=n.opt.media.image,k=n.opt.media.imageAlt??"";return I!==h.e&&v(d,"src",h.e=I),k!==h.t&&v(d,"alt",h.t=k),h},{e:void 0,t:void 0}),d}})}}),t),p(a,c(b,{get when(){var d;return V(()=>{var h;return!((h=n.opt.media)!=null&&h.image)})()&&((d=n.opt.media)==null?void 0:d.icon)},get children(){return c(Ye,{get name(){return n.opt.media.icon}})}}),t),p(t,c(b,{get when(){return n.checked},get children(){return _e()}})),p(u,()=>n.opt.label),p(o,c(b,{get when(){return n.opt.recommended},get children(){return c(We,{})}}),null),p(l,c(b,{get when(){return n.opt.description},get children(){var d=ze();return p(d,()=>n.opt.description),w(()=>v(d,"id",n.descId)),d}}),null),p(a,c(b,{get when(){return n.opt.meta},get children(){var d=qe();return p(d,()=>n.opt.meta),d}}),null),w(d=>{var h=n.checked,I=n.opt.disabled?"true":void 0,k=n.hasDesc?n.descId:void 0,E=n.opt.id,D=n.opt.disabled?-1:n.tabStop?0:-1,m=F("flex items-center gap-3 px-3 py-2.5 text-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",n.opt.disabled?"cursor-not-allowed opacity-60 text-foreground":"cursor-pointer hover:bg-muted/50",n.checked?"bg-accent font-medium text-accent-foreground":"text-foreground"),O=F("flex h-[1.125rem] w-[1.125rem] shrink-0 items-center justify-center rounded-full border-[1.5px] transition-colors",n.checked?"border-[var(--color-primary)]":"border-input bg-background");return h!==d.e&&v(a,"aria-checked",d.e=h),I!==d.t&&v(a,"aria-disabled",d.t=I),k!==d.a&&v(a,"aria-describedby",d.a=k),E!==d.o&&v(a,"data-option-id",d.o=E),D!==d.i&&v(a,"tabindex",d.i=D),m!==d.n&&M(a,d.n=m),O!==d.s&&M(t,d.s=O),d},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),a})()}function et(n){const a=n.choice;return(()=>{var t=Ue();return p(t,c(Ce,{size:16,"aria-hidden":"true"}),null),p(t,c(b,{get when(){return!a.other},get fallback(){return(()=>{var l=Ge();return l.firstChild,p(l,(()=>{var o=V(()=>!!a.other);return()=>o()?a.text:""})(),null),l})()},get children(){return[(()=>{var l=Pe();return p(l,(()=>{var o=V(()=>!a.other);return()=>{var u;return o()?((u=a.opt)==null?void 0:u.label)??a.id:""}})()),l})(),c(b,{get when(){var l;return V(()=>!a.other)()&&((l=a.opt)==null?void 0:l.meta)},get children(){var l=Be();return p(l,(()=>{var o=V(()=>!a.other);return()=>{var u;return o()?(u=a.opt)==null?void 0:u.meta:""}})()),l}})]}}),null),w(()=>v(t,"role",n.optimistic?"status":void 0)),t})()}ke(["keydown","input","click"]);export{Qe as C};
1
+ import{m as ve,s as me,l as x,g as U,k as G,x as te,o as fe,c,E as he,S as b,i as p,d as v,F as be,a as w,b as M,v as re,t as f,w as ye,H as xe,j as V,e as ke}from"./define-B_tXMYRm.js";import{c as F}from"./cn-CU7UAWzk.js";import{B as ne}from"./button-B9okqG73.js";import{c as we}from"./hover-card-6KtXpLwT.js";import{u as Ie,a as $e,C as J,D as Ae}from"./use-card-resolution-DJg32jGH.js";import{e as De}from"./card-routing-BK09BdmL.js";import{x as Re}from"./x-BOhjBeOd.js";import{c as Ce}from"./check-MdLzbxrm.js";var Se=f('<p class="text-sm text-foreground">'),je=f("<div role=radiogroup>"),Ee=f('<div class="flex flex-col gap-2"><label class=sr-only></label><input type=text class="w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60">'),Te=f('<div class="flex w-full flex-wrap items-center justify-between gap-2">'),Le=f("<div>"),Me=f('<span class="inline-flex items-center rounded-full bg-[var(--color-primary)] px-1.5 py-0.5 text-[0.625rem] font-medium uppercase leading-none tracking-wide text-[var(--color-primary-foreground,white)]">Recommended'),Ve=f("<img>"),Fe=f('<span aria-hidden=true class="flex h-9 w-9 shrink-0 items-center justify-center rounded-md bg-muted text-sm font-medium text-muted-foreground">'),Oe=f('<img class="max-h-80 max-w-80 rounded-md object-contain">'),_e=f('<span class="h-2 w-2 rounded-full bg-[var(--color-primary)]">'),ze=f('<span class="text-xs font-normal text-muted-foreground">'),qe=f('<span class="ml-auto shrink-0 text-xs font-normal text-muted-foreground">'),He=f('<div role=radio><span aria-hidden=true></span><span class="flex min-w-0 flex-col gap-0.5"><span class="flex items-center gap-2"><span class=truncate>'),Pe=f("<span>"),Be=f('<span class="ml-auto text-xs font-normal text-muted-foreground">'),Ue=f('<div class="flex items-center gap-3 rounded-lg border border-input bg-accent px-3 py-2.5 text-sm font-medium text-accent-foreground">'),Ge=f("<span>Other: ");const Je="choice",A="__other__",K="Other\u2026";function Ke(n){if(!Array.isArray(n)||n.length===0)return{options:[],error:"This card couldn't be displayed."};const a=new Set,t=[];for(const l of n){if(!l||typeof l!="object")continue;const o=l;if(typeof o.id!="string"||o.id.length===0||typeof o.label!="string"||o.label.length===0)continue;if(a.has(o.id)){console.warn(`[kai-choice] duplicate option id "${o.id}" ignored`);continue}a.add(o.id);const u=o.media&&typeof o.media=="object"?{image:typeof o.media.image=="string"?o.media.image:void 0,imageAlt:typeof o.media.imageAlt=="string"?o.media.imageAlt:void 0,icon:typeof o.media.icon=="string"?o.media.icon:void 0}:void 0;t.push({id:o.id,label:o.label,description:typeof o.description=="string"?o.description:void 0,media:u,meta:typeof o.meta=="string"?o.meta:void 0,recommended:o.recommended===!0,disabled:o.disabled===!0,payload:o.payload})}return t.length===0?{options:[],error:"This card couldn't be displayed."}:{options:t}}function Ne(n){return n?n===!0?{label:K,placeholder:void 0}:typeof n=="object"?{label:typeof n.label=="string"&&n.label.length>0?n.label:K,placeholder:typeof n.placeholder=="string"?n.placeholder:void 0}:null:null}function oe(n,a,t){const l=n.length;if(l===0)return a;for(let o=1;o<=l;o+=1){const u=((a+t*o)%l+l)%l;if(!n[u].disabled)return u}return a}function ie(n){return n.findIndex(a=>!a.disabled)}function Qe(n){const a=ve({cardId:"kai-choice"},n),[t]=me(a,["data","cardId","heading","host","hostElement","class","resolution","value","defaultValue","disabled","onValueChange","controllerRef"]),l=Ie(),o=ye(),u=e=>{const r=t.host??l;r?r.emit(e):t.hostElement&&De(t.hostElement,e)},d=x(()=>{var e;return Ke((e=t.data)==null?void 0:e.options)}),h=x(()=>d().error===void 0),I=x(()=>d().error??""),k=x(()=>d().options),E=x(()=>{var e;return Ne((e=t.data)==null?void 0:e.allowOther)}),D=x(()=>{const e=E();return e?[...k(),{id:A,label:e.label}]:k()}),m=$e({prop:()=>t.resolution,data:()=>t.data}),O=x(()=>{const e=m.resolution();return e&&e.kind==="action"?e.action:void 0}),[q,R]=U(0),[ae,N]=U(n.defaultValue),L=x(()=>t.value??ae()),de=e=>{var r;L()!==e&&(N(e),(r=t.onValueChange)==null||r.call(t,e))},[H,Q]=U(""),$=()=>t.disabled===!0;let _,T;const W=x(()=>L()===A);G(te(()=>t.data,()=>{N(t.defaultValue),Q(""),R(Math.max(0,ie(D())))}));const le=x(()=>{var e;const r=m.resolution();return!r||r.kind!=="action"?void 0:r.action===A?{other:!0,text:((e=r.payload)==null?void 0:e.text)??""}:{other:!1,opt:k().find(s=>s.id===r.action),id:r.action}});G(te(h,e=>{u(e?{kind:"ready",cardId:t.cardId}:{kind:"error",cardId:t.cardId,message:I()})})),G(()=>{const e=t.hostElement;if(!e)return;const r=O();r!==void 0?e.setAttribute("data-kai-resolved",r):e.removeAttribute("data-kai-resolved")});const se=e=>e.id===A,P=e=>{m.isResolved()||$()||e.disabled||(de(e.id),se(e)&&queueMicrotask(()=>T?.focus()))},ce=x(()=>{if(m.isResolved()||$())return!1;const e=L();return e===void 0?!1:e===A?H().trim().length>0:!0}),ue=()=>{var e;return((e=t.data)==null?void 0:e.submitLabel)??"Submit"},B=()=>{if(m.isResolved()||$())return;const e=L();if(e===void 0)return;if(e===A){const s=H().trim();if(s.length===0)return;u({kind:"action",cardId:t.cardId,action:A,payload:{text:s}}),m.setLocal({kind:"action",action:A,payload:{text:s}});return}const r=k().find(s=>s.id===e);r&&(u({kind:"action",cardId:t.cardId,action:r.id,...r.payload!==void 0?{payload:r.payload}:{}}),m.setLocal({kind:"action",action:r.id,...r.payload!==void 0?{payload:r.payload}:{}}))},X=()=>{m.isResolved()||(u({kind:"dismiss",cardId:t.cardId}),m.setLocal({kind:"dismissed"}))},Y=()=>u({kind:"reopen",cardId:t.cardId}),z=(e,r)=>{var s;const i=_?.querySelectorAll('[role="radio"]');(s=i?.[e])==null||s.focus(r)};fe(()=>{var e;(e=t.controllerRef)==null||e.call(t,{focus:r=>{W()&&T?T.focus(r):z(q(),r)},select:r=>{const s=D(),i=s.findIndex(y=>y.id===r);i!==-1&&(R(i),P(s[i]))},send:()=>B(),dismiss:()=>X(),reopen:()=>Y()})});const pe=e=>{if(m.isResolved()||$())return;const r=D(),s=q();if(e.key==="ArrowDown"||e.key==="ArrowRight"){e.preventDefault();const i=oe(r,s,1);R(i),z(i)}else if(e.key==="ArrowUp"||e.key==="ArrowLeft"){e.preventDefault();const i=oe(r,s,-1);R(i),z(i)}else if(e.key==="Home"){e.preventDefault();const i=Math.max(0,ie(r));R(i),z(i)}else if(e.key===" "||e.key==="Enter"){e.preventDefault();const i=r[s];i&&P(i)}},ge=()=>{var e;return t.heading??((e=t.data)==null?void 0:e.prompt)??"Choose an option"},Z=`kai-choice-prompt-${o}`,ee=`kai-choice-other-${o}`;return c(b,{get when(){return h()},get fallback(){return c(J,{get heading(){return t.heading},get errorMessage(){return I()}})},get children(){return c(he,{fallback:()=>(u({kind:"error",cardId:t.cardId,message:"The card failed to render."}),c(J,{get heading(){return t.heading},errorMessage:"The card failed to render."})),get children(){return c(b,{get when(){return!m.isDeferred()},get fallback(){return c(Ae,{type:Je,get title(){return t.heading},onReopen:Y})},get children(){return c(J,{get heading(){return t.heading},get children(){var e=Le();return p(e,c(b,{get when(){var r;return(r=t.data)==null?void 0:r.prompt},get children(){var r=Se();return v(r,"id",Z),p(r,()=>{var s;return(s=t.data)==null?void 0:s.prompt}),r}}),null),p(e,c(b,{get when(){return!m.isResolved()},get fallback(){return c(et,{get choice(){return le()},get optimistic(){return m.isOptimistic()}})},get children(){return[(()=>{var r=je();r.$$keydown=pe;var s=_;return typeof s=="function"?re(s,r):_=r,p(r,c(be,{get each(){return D()},children:(i,y)=>{const g=()=>L()===i.id,C=()=>!i.disabled&&!$()&&y()===q()&&!m.isResolved(),S=`kai-choice-desc-${o}-${i.id}`,j=()=>!!i.description;return c(Ze,{opt:i,get checked(){return g()},get tabStop(){return C()},descId:S,get hasDesc(){return j()},onPick:()=>{R(y()),P(i)},onFocus:()=>R(y())})}})),w(i=>{var y,g=ge(),C=(y=t.data)!=null&&y.prompt?Z:void 0,S=$()?"true":void 0,j=F("divide-y divide-border overflow-hidden rounded-lg border border-input",$()&&"cursor-not-allowed opacity-60");return g!==i.e&&v(r,"aria-label",i.e=g),C!==i.t&&v(r,"aria-describedby",i.t=C),S!==i.a&&v(r,"aria-disabled",i.a=S),j!==i.o&&M(r,i.o=j),i},{e:void 0,t:void 0,a:void 0,o:void 0}),r})(),c(b,{get when(){return W()},get children(){var r=Ee(),s=r.firstChild,i=s.nextSibling;v(s,"for",ee),p(s,()=>{var g;return((g=E())==null?void 0:g.label)??K}),i.$$keydown=g=>{g.key==="Enter"&&(g.preventDefault(),B())},i.$$input=g=>Q(g.currentTarget.value);var y=T;return typeof y=="function"?re(y,i):T=i,v(i,"id",ee),w(g=>{var C,S=$(),j=(C=E())==null?void 0:C.placeholder;return S!==g.e&&(i.disabled=g.e=S),j!==g.t&&v(i,"placeholder",g.t=j),g},{e:void 0,t:void 0}),w(()=>i.value=H()),r}}),(()=>{var r=Te();return p(r,c(b,{get when(){var s;return((s=t.data)==null?void 0:s.dismissible)===!0},get children(){return c(ne,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"Dismiss",onClick:X,get children(){return c(Re,{size:16,"aria-hidden":"true"})}})}}),null),p(r,c(ne,{type:"button",class:"ml-auto",get disabled(){return!ce()},onClick:B,get children(){return ue()}}),null),r})()]}}),null),w(()=>M(e,F("flex flex-col gap-3",t.class))),e}})}})}})}})}function We(){return Me()}function Xe(n){return(()=>{var a=Ve();return w(t=>{var l=n.media.image,o=n.media.imageAlt??"",u=F("shrink-0 rounded-md object-cover",n.class);return l!==t.e&&v(a,"src",t.e=l),o!==t.t&&v(a,"alt",t.t=o),u!==t.a&&M(a,t.a=u),t},{e:void 0,t:void 0,a:void 0}),a})()}function Ye(n){return(()=>{var a=Fe();return p(a,()=>n.name.slice(0,2)),a})()}function Ze(n){return(()=>{var a=He(),t=a.firstChild,l=t.nextSibling,o=l.firstChild,u=o.firstChild;return xe(a,"focus",n.onFocus),a.$$click=()=>!n.opt.disabled&&n.onPick(),p(a,c(b,{get when(){var d;return(d=n.opt.media)==null?void 0:d.image},get children(){return c(we,{openDelay:150,class:"p-1 w-auto",placement:"right-start",get trigger(){return c(Xe,{get media(){return n.opt.media},class:"h-9 w-9"})},get children(){var d=Oe();return w(h=>{var I=n.opt.media.image,k=n.opt.media.imageAlt??"";return I!==h.e&&v(d,"src",h.e=I),k!==h.t&&v(d,"alt",h.t=k),h},{e:void 0,t:void 0}),d}})}}),t),p(a,c(b,{get when(){var d;return V(()=>{var h;return!((h=n.opt.media)!=null&&h.image)})()&&((d=n.opt.media)==null?void 0:d.icon)},get children(){return c(Ye,{get name(){return n.opt.media.icon}})}}),t),p(t,c(b,{get when(){return n.checked},get children(){return _e()}})),p(u,()=>n.opt.label),p(o,c(b,{get when(){return n.opt.recommended},get children(){return c(We,{})}}),null),p(l,c(b,{get when(){return n.opt.description},get children(){var d=ze();return p(d,()=>n.opt.description),w(()=>v(d,"id",n.descId)),d}}),null),p(a,c(b,{get when(){return n.opt.meta},get children(){var d=qe();return p(d,()=>n.opt.meta),d}}),null),w(d=>{var h=n.checked,I=n.opt.disabled?"true":void 0,k=n.hasDesc?n.descId:void 0,E=n.opt.id,D=n.opt.disabled?-1:n.tabStop?0:-1,m=F("flex items-center gap-3 px-3 py-2.5 text-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",n.opt.disabled?"cursor-not-allowed opacity-60 text-foreground":"cursor-pointer hover:bg-muted/50",n.checked?"bg-accent font-medium text-accent-foreground":"text-foreground"),O=F("flex h-[1.125rem] w-[1.125rem] shrink-0 items-center justify-center rounded-full border-[1.5px] transition-colors",n.checked?"border-[var(--color-primary)]":"border-input bg-background");return h!==d.e&&v(a,"aria-checked",d.e=h),I!==d.t&&v(a,"aria-disabled",d.t=I),k!==d.a&&v(a,"aria-describedby",d.a=k),E!==d.o&&v(a,"data-option-id",d.o=E),D!==d.i&&v(a,"tabindex",d.i=D),m!==d.n&&M(a,d.n=m),O!==d.s&&M(t,d.s=O),d},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),a})()}function et(n){const a=n.choice;return(()=>{var t=Ue();return p(t,c(Ce,{size:16,"aria-hidden":"true"}),null),p(t,c(b,{get when(){return!a.other},get fallback(){return(()=>{var l=Ge();return l.firstChild,p(l,(()=>{var o=V(()=>!!a.other);return()=>o()?a.text:""})(),null),l})()},get children(){return[(()=>{var l=Pe();return p(l,(()=>{var o=V(()=>!a.other);return()=>{var u;return o()?((u=a.opt)==null?void 0:u.label)??a.id:""}})()),l})(),c(b,{get when(){var l;return V(()=>!a.other)()&&((l=a.opt)==null?void 0:l.meta)},get children(){var l=Be();return p(l,(()=>{var o=V(()=>!a.other);return()=>{var u;return o()?(u=a.opt)==null?void 0:u.meta:""}})()),l}})]}}),null),w(()=>v(t,"role",n.optimistic?"status":void 0)),t})()}ke(["keydown","input","click"]);export{Qe as C};
@@ -1 +1 @@
1
- import{m as N,s as O,l as v,k as T,x as F,o as H,c as d,E as L,S as f,i as l,a as $,b as U,d as z,F as G,v as A,t as h,e as J}from"./define-B_tXMYRm.js";import{c as K}from"./cn-CU7UAWzk.js";import{B as q}from"./button-B9okqG73.js";import{u as P,a as Q,C as x,D as V}from"./use-card-resolution-DJg32jGH.js";import{e as W}from"./card-routing-C986KuUA.js";import{t as X}from"./triangle-alert-B6or7F5u.js";import{c as Y}from"./check-MdLzbxrm.js";import{x as Z}from"./x-BOhjBeOd.js";var _=h('<div class="flex items-center gap-2 text-sm font-medium text-destructive dark:text-red-400"><span>Heads up'),ee=h('<p class="text-sm font-semibold text-foreground">'),te=h('<p class="text-sm text-foreground">'),re=h("<div>"),ae=h('<div class="flex w-full flex-wrap items-center justify-between gap-2"><div class="ml-auto flex flex-wrap items-center gap-2">'),ne=h('<div class="ml-auto flex items-center gap-2 text-sm font-medium text-foreground"><span>');const ie="confirm",de=new Set(["primary","default","destructive"]);function oe(o){switch(o){case"primary":return"default";case"destructive":return"destructive";case"default":case void 0:return"outline";default:return console.warn(`[kai-confirm] unknown action style "${o}"; using default`),"outline"}}function se(o){if(!Array.isArray(o)||o.length===0)return{actions:[],error:"This card couldn't be displayed."};const c=new Set,r=[];for(const m of o){if(!m||typeof m!="object")continue;const i=m;if(typeof i.id!="string"||i.id.length===0||typeof i.label!="string"||i.label.length===0)continue;if(c.has(i.id)){console.warn(`[kai-confirm] duplicate action id "${i.id}" ignored`);continue}c.add(i.id);const g=de.has(i.style)?i.style:void 0;i.style!==void 0&&g===void 0&&console.warn(`[kai-confirm] unknown action style "${String(i.style)}"; using default`),r.push({id:i.id,label:i.label,style:g,payload:i.payload,default:i.default===!0})}return r.length===0?{actions:[],error:"This card couldn't be displayed."}:{actions:r}}function le(o){var c;return(c=o.find(r=>r.default))==null?void 0:c.id}function ue(o){const c=N({cardId:"kai-confirm",autofocus:!1},o),[r]=O(c,["data","cardId","heading","host","hostElement","autofocus","class","resolution","controllerRef"]),m=P(),i=e=>{const n=r.host??m;n?n.emit(e):r.hostElement&&W(r.hostElement,e)},g=v(()=>{var e;return se((e=r.data)==null?void 0:e.actions)}),I=v(()=>g().error===void 0),C=v(()=>g().error??""),p=v(()=>g().actions),D=()=>{var e;return((e=r.data)==null?void 0:e.tone)??"default"},M=()=>D()==="danger",k=v(()=>le(p())),u=Q({prop:()=>r.resolution,data:()=>r.data}),j=v(()=>{const e=u.resolution();if(!e||e.kind!=="action")return;const n=p().find(t=>t.id===e.action);return{label:n?.label??e.action}});T(F(I,e=>{i(e?{kind:"ready",cardId:r.cardId}:{kind:"error",cardId:r.cardId,message:C()})}));const b=e=>{u.isResolved()||(i({kind:"action",cardId:r.cardId,action:e.id,...e.payload!==void 0?{payload:e.payload}:{}}),u.setLocal({kind:"action",action:e.id,...e.payload!==void 0?{payload:e.payload}:{}}))},E=()=>{u.isResolved()||(i({kind:"dismiss",cardId:r.cardId}),u.setLocal({kind:"dismissed"}))},R=()=>i({kind:"reopen",cardId:r.cardId});let S,y;const B=()=>y?y.querySelector('button[data-kai-default="true"]')??y.querySelector("button[data-action-id]"):null;return H(()=>{var e;(e=r.controllerRef)==null||e.call(r,{focus:n=>{var t;return(t=B())==null?void 0:t.focus(n)},confirm:n=>{const t=p(),a=n??k();if(a===void 0)return;const s=t.find(w=>w.id===a);s&&b(s)},dismiss:()=>E(),reopen:()=>R()})}),T(()=>{const e=r.hostElement;if(!e)return;const n=u.resolution();n&&n.kind==="action"?e.setAttribute("data-kai-resolved",n.action):e.removeAttribute("data-kai-resolved")}),d(f,{get when(){return I()},get fallback(){return d(x,{get heading(){return r.heading},get errorMessage(){return C()}})},get children(){return d(L,{fallback:()=>(i({kind:"error",cardId:r.cardId,message:"The card failed to render."}),d(x,{get heading(){return r.heading},errorMessage:"The card failed to render."})),get children(){return d(f,{get when(){return!u.isDeferred()},get fallback(){return d(V,{type:ie,get title(){return r.heading},onReopen:R})},get children(){return d(x,{get heading(){return r.heading},get actions(){return d(f,{get when(){return!u.isResolved()},get fallback(){return(()=>{var e=ne(),n=e.firstChild;return l(e,d(Y,{size:16,"aria-hidden":"true"}),n),l(n,()=>{var t;return(t=j())==null?void 0:t.label}),$(()=>z(e,"role",u.isOptimistic()?"status":void 0)),e})()},get children(){var e=ae(),n=e.firstChild;l(e,d(f,{get when(){var a;return((a=r.data)==null?void 0:a.dismissible)===!0},get children(){return d(q,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"Dismiss",onClick:E,get children(){return d(Z,{size:16,"aria-hidden":"true"})}})}}),n);var t=y;return typeof t=="function"?A(t,n):y=n,l(n,d(G,{get each(){return p()},children:a=>d(q,{type:"button",get variant(){return oe(a.style)},get"data-action-id"(){return a.id},get"data-kai-default"(){return a.default?"true":void 0},ref:s=>{r.autofocus&&a.id===k()&&queueMicrotask(()=>s.focus())},onClick:()=>b(a),get children(){return a.label}})})),e}})},get children(){var e=re();e.$$keydown=t=>{if(t.key!=="Enter"||t.target.tagName==="BUTTON")return;const a=k();if(a===void 0)return;const s=p().find(w=>w.id===a);s&&b(s)};var n=S;return typeof n=="function"?A(n,e):S=e,l(e,d(f,{get when(){return M()},get children(){var t=_(),a=t.firstChild;return l(t,d(X,{size:16,class:"shrink-0","aria-hidden":"true"}),a),t}}),null),l(e,d(f,{get when(){var t;return(t=r.data)==null?void 0:t.heading},get children(){var t=ee();return l(t,()=>{var a;return(a=r.data)==null?void 0:a.heading}),t}}),null),l(e,d(f,{get when(){var t;return(t=r.data)==null?void 0:t.body},get children(){var t=te();return l(t,()=>{var a;return(a=r.data)==null?void 0:a.body}),t}}),null),$(t=>{var a=K("flex flex-col gap-2",r.class),s=k()!==void 0?0:void 0;return a!==t.e&&U(e,t.e=a),s!==t.t&&z(e,"tabindex",t.t=s),t},{e:void 0,t:void 0}),e}})}})}})}})}J(["keydown"]);export{ue as C};
1
+ import{m as N,s as O,l as v,k as T,x as F,o as H,c as d,E as L,S as f,i as l,a as $,b as U,d as z,F as G,v as A,t as h,e as J}from"./define-B_tXMYRm.js";import{c as K}from"./cn-CU7UAWzk.js";import{B as q}from"./button-B9okqG73.js";import{u as P,a as Q,C as x,D as V}from"./use-card-resolution-DJg32jGH.js";import{e as W}from"./card-routing-BK09BdmL.js";import{t as X}from"./triangle-alert-B6or7F5u.js";import{c as Y}from"./check-MdLzbxrm.js";import{x as Z}from"./x-BOhjBeOd.js";var _=h('<div class="flex items-center gap-2 text-sm font-medium text-destructive dark:text-red-400"><span>Heads up'),ee=h('<p class="text-sm font-semibold text-foreground">'),te=h('<p class="text-sm text-foreground">'),re=h("<div>"),ae=h('<div class="flex w-full flex-wrap items-center justify-between gap-2"><div class="ml-auto flex flex-wrap items-center gap-2">'),ne=h('<div class="ml-auto flex items-center gap-2 text-sm font-medium text-foreground"><span>');const ie="confirm",de=new Set(["primary","default","destructive"]);function oe(o){switch(o){case"primary":return"default";case"destructive":return"destructive";case"default":case void 0:return"outline";default:return console.warn(`[kai-confirm] unknown action style "${o}"; using default`),"outline"}}function se(o){if(!Array.isArray(o)||o.length===0)return{actions:[],error:"This card couldn't be displayed."};const c=new Set,r=[];for(const m of o){if(!m||typeof m!="object")continue;const i=m;if(typeof i.id!="string"||i.id.length===0||typeof i.label!="string"||i.label.length===0)continue;if(c.has(i.id)){console.warn(`[kai-confirm] duplicate action id "${i.id}" ignored`);continue}c.add(i.id);const g=de.has(i.style)?i.style:void 0;i.style!==void 0&&g===void 0&&console.warn(`[kai-confirm] unknown action style "${String(i.style)}"; using default`),r.push({id:i.id,label:i.label,style:g,payload:i.payload,default:i.default===!0})}return r.length===0?{actions:[],error:"This card couldn't be displayed."}:{actions:r}}function le(o){var c;return(c=o.find(r=>r.default))==null?void 0:c.id}function ue(o){const c=N({cardId:"kai-confirm",autofocus:!1},o),[r]=O(c,["data","cardId","heading","host","hostElement","autofocus","class","resolution","controllerRef"]),m=P(),i=e=>{const n=r.host??m;n?n.emit(e):r.hostElement&&W(r.hostElement,e)},g=v(()=>{var e;return se((e=r.data)==null?void 0:e.actions)}),I=v(()=>g().error===void 0),C=v(()=>g().error??""),p=v(()=>g().actions),D=()=>{var e;return((e=r.data)==null?void 0:e.tone)??"default"},M=()=>D()==="danger",k=v(()=>le(p())),u=Q({prop:()=>r.resolution,data:()=>r.data}),j=v(()=>{const e=u.resolution();if(!e||e.kind!=="action")return;const n=p().find(t=>t.id===e.action);return{label:n?.label??e.action}});T(F(I,e=>{i(e?{kind:"ready",cardId:r.cardId}:{kind:"error",cardId:r.cardId,message:C()})}));const b=e=>{u.isResolved()||(i({kind:"action",cardId:r.cardId,action:e.id,...e.payload!==void 0?{payload:e.payload}:{}}),u.setLocal({kind:"action",action:e.id,...e.payload!==void 0?{payload:e.payload}:{}}))},E=()=>{u.isResolved()||(i({kind:"dismiss",cardId:r.cardId}),u.setLocal({kind:"dismissed"}))},R=()=>i({kind:"reopen",cardId:r.cardId});let S,y;const B=()=>y?y.querySelector('button[data-kai-default="true"]')??y.querySelector("button[data-action-id]"):null;return H(()=>{var e;(e=r.controllerRef)==null||e.call(r,{focus:n=>{var t;return(t=B())==null?void 0:t.focus(n)},confirm:n=>{const t=p(),a=n??k();if(a===void 0)return;const s=t.find(w=>w.id===a);s&&b(s)},dismiss:()=>E(),reopen:()=>R()})}),T(()=>{const e=r.hostElement;if(!e)return;const n=u.resolution();n&&n.kind==="action"?e.setAttribute("data-kai-resolved",n.action):e.removeAttribute("data-kai-resolved")}),d(f,{get when(){return I()},get fallback(){return d(x,{get heading(){return r.heading},get errorMessage(){return C()}})},get children(){return d(L,{fallback:()=>(i({kind:"error",cardId:r.cardId,message:"The card failed to render."}),d(x,{get heading(){return r.heading},errorMessage:"The card failed to render."})),get children(){return d(f,{get when(){return!u.isDeferred()},get fallback(){return d(V,{type:ie,get title(){return r.heading},onReopen:R})},get children(){return d(x,{get heading(){return r.heading},get actions(){return d(f,{get when(){return!u.isResolved()},get fallback(){return(()=>{var e=ne(),n=e.firstChild;return l(e,d(Y,{size:16,"aria-hidden":"true"}),n),l(n,()=>{var t;return(t=j())==null?void 0:t.label}),$(()=>z(e,"role",u.isOptimistic()?"status":void 0)),e})()},get children(){var e=ae(),n=e.firstChild;l(e,d(f,{get when(){var a;return((a=r.data)==null?void 0:a.dismissible)===!0},get children(){return d(q,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"Dismiss",onClick:E,get children(){return d(Z,{size:16,"aria-hidden":"true"})}})}}),n);var t=y;return typeof t=="function"?A(t,n):y=n,l(n,d(G,{get each(){return p()},children:a=>d(q,{type:"button",get variant(){return oe(a.style)},get"data-action-id"(){return a.id},get"data-kai-default"(){return a.default?"true":void 0},ref:s=>{r.autofocus&&a.id===k()&&queueMicrotask(()=>s.focus())},onClick:()=>b(a),get children(){return a.label}})})),e}})},get children(){var e=re();e.$$keydown=t=>{if(t.key!=="Enter"||t.target.tagName==="BUTTON")return;const a=k();if(a===void 0)return;const s=p().find(w=>w.id===a);s&&b(s)};var n=S;return typeof n=="function"?A(n,e):S=e,l(e,d(f,{get when(){return M()},get children(){var t=_(),a=t.firstChild;return l(t,d(X,{size:16,class:"shrink-0","aria-hidden":"true"}),a),t}}),null),l(e,d(f,{get when(){var t;return(t=r.data)==null?void 0:t.heading},get children(){var t=ee();return l(t,()=>{var a;return(a=r.data)==null?void 0:a.heading}),t}}),null),l(e,d(f,{get when(){var t;return(t=r.data)==null?void 0:t.body},get children(){var t=te();return l(t,()=>{var a;return(a=r.data)==null?void 0:a.body}),t}}),null),$(t=>{var a=K("flex flex-col gap-2",r.class),s=k()!==void 0?0:void 0;return a!==t.e&&U(e,t.e=a),s!==t.t&&z(e,"tabindex",t.t=s),t},{e:void 0,t:void 0}),e}})}})}})}})}J(["keydown"]);export{ue as C};
@@ -1 +1 @@
1
- import{c as u,m as x,i as m,S as y,q as C,j as he,d as j,a as k,F as L,b as T,g as ve,t as b,e as be,s as xe,l as E,k as K,x as J,o as ye,E as ke,I as we}from"./define-B_tXMYRm.js";import{c as ee,u as V,p as B}from"./store-HIPGhNz9.js";import{c as O}from"./cn-CU7UAWzk.js";import{B as N}from"./button-B9okqG73.js";import{u as Ie,a as $e,C as z,D as Ae}from"./use-card-resolution-DJg32jGH.js";import{e as Se}from"./card-routing-C986KuUA.js";import{T as je}from"./textarea-DPfuhswM.js";import{I as Le,F as R}from"./input-DrseEjhp.js";import{s as Oe}from"./star-DHvACxtm.js";import{c as Ce}from"./check-MdLzbxrm.js";function _(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function qe(e,r){switch(r){case"integer":return typeof e=="number"&&Number.isInteger(e);case"number":return typeof e=="number"&&Number.isFinite(e);case"array":return Array.isArray(e);case"null":return e===null;case"object":return _(e)==="object";default:return typeof e===r}}function F(e,r,t,n){const l=t||"(root)",a=(i,s,g=l)=>{n.push({path:g,keyword:i,message:`${g}: ${s}`})};if(e.type&&!qe(r,e.type)){a("type",`expected ${e.type}, got ${_(r)}`);return}if("const"in e&&JSON.stringify(r)!==JSON.stringify(e.const)&&a("const",`must equal const ${JSON.stringify(e.const)}`),e.enum&&!e.enum.some(i=>JSON.stringify(i)===JSON.stringify(r))&&a("enum",`must be one of ${JSON.stringify(e.enum)}`),typeof r=="number"&&(e.minimum!==void 0&&r<e.minimum&&a("minimum",`< minimum ${e.minimum}`),e.maximum!==void 0&&r>e.maximum&&a("maximum",`> maximum ${e.maximum}`),e.exclusiveMinimum!==void 0&&r<=e.exclusiveMinimum&&a("exclusiveMinimum","<= exclusiveMinimum"),e.exclusiveMaximum!==void 0&&r>=e.exclusiveMaximum&&a("exclusiveMaximum",">= exclusiveMaximum")),typeof r=="string"&&(e.minLength!==void 0&&r.length<e.minLength&&a("minLength",`shorter than minLength ${e.minLength}`),e.maxLength!==void 0&&r.length>e.maxLength&&a("maxLength",`longer than maxLength ${e.maxLength}`),e.pattern!==void 0&&!new RegExp(e.pattern).test(r)&&a("pattern","does not match pattern")),Array.isArray(r)&&(e.minItems!==void 0&&r.length<e.minItems&&a("minItems",`fewer than minItems ${e.minItems}`),e.maxItems!==void 0&&r.length>e.maxItems&&a("maxItems",`more than maxItems ${e.maxItems}`),e.uniqueItems&&new Set(r.map(i=>JSON.stringify(i))).size!==r.length&&a("uniqueItems","items not unique"),e.items&&r.forEach((i,s)=>F(e.items,i,`${l}[${s}]`,n))),_(r)==="object"){const i=r;for(const s of e.required??[])(!(s in i)||i[s]===void 0)&&a("required","required",`${l}.${s}`);if(e.properties)for(const[s,g]of Object.entries(e.properties))s in i&&i[s]!==void 0&&F(g,i[s],`${l}.${s}`,n)}}function re(e,r){const t=[];return F(e,r,"",t),{valid:t.length===0,errors:t.map(n=>n.message),issues:t}}var Be=b('<span class="self-end text-xs text-muted-foreground">/'),Me=b('<div class="flex flex-col gap-1">'),Ee=b("<input data-control type=number>"),Ne=b('<div class="flex items-center gap-3"><input data-control type=range class=kai-range><span class="min-w-9 shrink-0 rounded-md bg-background px-2 py-1 text-center text-sm font-medium tabular-nums text-foreground shadow-sm">'),Re=b('<div role=radiogroup data-control tabindex=0 class="flex items-center gap-1 rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring">'),Te=b('<button type=button role=radio tabindex=-1 class="rounded p-0.5 text-muted-foreground hover:text-foreground">'),Ke=b("<button data-control type=button role=switch><span>"),De=b('<label class="-mx-1.5 inline-flex cursor-pointer items-center gap-2.5 rounded-md px-1.5 py-1.5 text-sm text-foreground transition-colors hover:bg-muted/60"><input data-control type=checkbox class=kai-checkbox><span>'),Je=b('<div role=radiogroup data-control class="divide-y divide-border overflow-hidden rounded-lg border border-input">'),Ve=b("<label><input type=radio class=kai-radio><span>"),ze=b("<select data-control><option value disabled>"),te=b("<option>"),_e=b('<div role=group data-control class="divide-y divide-border overflow-hidden rounded-lg border border-input">'),Fe=b("<label><input type=checkbox class=kai-checkbox><span>"),Ue=b("<select data-control multiple>"),Ye=b('<div class="flex flex-col gap-2"role=group><div class="flex flex-wrap gap-1.5"></div><div class="flex items-center gap-2"><input data-control type=text><button type=button class="rounded-md border border-input px-3 py-2 text-sm text-foreground hover:bg-muted disabled:opacity-50">Add'),Ze=b('<span class="inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-xs text-foreground"><button type=button class="text-muted-foreground hover:text-foreground">\u2715');function A(e){return{"aria-required":e.required||void 0,"aria-invalid":e.invalid||void 0,"aria-describedby":e.describedBy}}function Ge(e){const r=()=>{switch(e.variant){case"email":return"email";case"url":return"url";case"date":return"date";case"datetime":return"datetime-local";case"time":return"time";case"password":return"password";default:return"text"}};return u(Le,x({get id(){return e.id},"data-control":!0,get type(){return r()},get value(){return e.value??""},get placeholder(){return e.placeholder},get invalid(){return e.invalid},get disabled(){return e.disabled},get minLength(){return e.field.minLength},get maxLength(){return e.field.maxLength}},()=>A(e),{onValueInput:t=>e.onInput(t),onValueChange:()=>e.onBlur()}))}function He(e){const r=()=>(e.value??"").length;return(()=>{var t=Me();return m(t,u(je,x({get id(){return e.id},"data-control":!0,get class(){return O(R,e.invalid&&"border-destructive dark:border-red-400/70")},get value(){return e.value??""},get placeholder(){return e.placeholder},get disabled(){return e.disabled},get maxLength(){return e.field.maxLength}},()=>A(e),{onInput:n=>e.onInput(n.currentTarget.value),get onBlur(){return e.onBlur}})),null),m(t,u(y,{get when(){return e.field.maxLength!==void 0},get children(){var n=Be(),l=n.firstChild;return m(n,r,l),m(n,()=>e.field.maxLength,null),n}}),null),t})()}function Pe(e){const r=()=>e.field["x-kai-step"]??(e.field.type==="integer"?1:void 0);return(()=>{var t=Ee();return C(t,x({get id(){return e.id},get class(){return O(R,e.invalid&&"border-destructive dark:border-red-400/70")},get value(){return he(()=>e.value===void 0||e.value===null)()?"":String(e.value)},get placeholder(){return e.placeholder},get disabled(){return e.disabled},get min(){return e.field.minimum},get max(){return e.field.maximum},get step(){return r()}},()=>A(e),{onInput:n=>e.onInput(n.currentTarget.value),get onBlur(){return e.onBlur}}),!1,!1),t})()}function Qe(e){const r=()=>e.field.minimum??0,t=()=>e.field.maximum??100,n=()=>e.field["x-kai-step"]??(e.field.type==="integer"?1:void 0),l=()=>e.value===void 0||e.value===null?r():Number(e.value),a=()=>{const i=r(),s=t();return s>i?`${(l()-i)/(s-i)*100}%`:"0%"};return(()=>{var i=Ne(),s=i.firstChild,g=s.nextSibling;return C(s,x({get id(){return e.id},get style(){return{"--kai-range-fill":a()}},get value(){return l()},get min(){return r()},get max(){return t()},get step(){return n()},get disabled(){return e.disabled},get"aria-valuetext"(){return String(l())}},()=>A(e),{onInput:v=>e.onInput(Number(v.currentTarget.value)),get onBlur(){return e.onBlur}}),!1,!1),m(g,l),i})()}function We(e){const r=()=>e.field.maximum??5,t=()=>Number(e.value??0),n=()=>Array.from({length:r()},(a,i)=>i+1),l=a=>{a.key==="ArrowRight"||a.key==="ArrowUp"?(a.preventDefault(),e.onInput(Math.min(r(),t()+1))):(a.key==="ArrowLeft"||a.key==="ArrowDown")&&(a.preventDefault(),e.onInput(Math.max(e.field.minimum??1,t()-1)))};return(()=>{var a=Re();return C(a,x({get"aria-label"(){return e.label}},()=>A(e),{onKeyDown:l}),!1,!0),m(a,u(L,{get each(){return n()},children:i=>(()=>{var s=Te();return s.$$click=()=>e.onInput(i),j(s,"aria-label",`${i} ${i===1?"star":"stars"}`),m(s,u(Oe,{size:20,get class(){return O(i<=t()?"fill-current text-[var(--color-primary)]":"")},"aria-hidden":"true"})),k(g=>{var v=t()===i,h=e.disabled;return v!==g.e&&j(s,"aria-checked",g.e=v),h!==g.t&&(s.disabled=g.t=h),g},{e:void 0,t:void 0}),s})()})),a})()}function Xe(e){const r=()=>e.value===!0,t=()=>{e.disabled||(e.onInput(!r()),e.onBlur())};return(()=>{var n=Ke(),l=n.firstChild;return C(n,x({get id(){return e.id},get"aria-checked"(){return r()},get"aria-label"(){return e.label},get disabled(){return e.disabled},get class(){return O("relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",r()?"bg-[var(--color-primary)]":"bg-muted")}},()=>A(e),{onClick:t}),!1,!0),k(()=>T(l,O("inline-block h-5 w-5 transform rounded-full bg-background shadow transition-transform",r()?"translate-x-5":"translate-x-0.5"))),n})()}function er(e){return(()=>{var r=De(),t=r.firstChild,n=t.nextSibling;return C(t,x({get id(){return e.id},get checked(){return e.value===!0},get disabled(){return e.disabled}},()=>A(e),{onChange:l=>{e.onInput(l.currentTarget.checked),e.onBlur()}}),!1,!1),m(n,()=>e.label),r})()}function rr(e){const r=()=>e.field.enum??[];return(()=>{var t=Je();return C(t,x({get"aria-label"(){return e.label}},()=>A(e)),!1,!0),m(t,u(L,{get each(){return r()},children:n=>(()=>{var l=Ve(),a=l.firstChild,i=a.nextSibling;return a.addEventListener("change",()=>{e.onInput(n),e.onBlur()}),m(i,()=>String(n)),k(s=>{var g=O("flex cursor-pointer items-center gap-3 px-3 py-2.5 text-sm transition-colors",e.value===n?"bg-accent font-medium text-accent-foreground":"text-foreground hover:bg-muted/50"),v=e.id,h=e.disabled;return g!==s.e&&T(l,s.e=g),v!==s.t&&j(a,"name",s.t=v),h!==s.a&&(a.disabled=s.a=h),s},{e:void 0,t:void 0,a:void 0}),k(()=>a.value=String(n)),k(()=>a.checked=e.value===n),l})()})),t})()}function tr(e){const r=()=>e.field.enum??[];return(()=>{var t=ze(),n=t.firstChild;return C(t,x({get id(){return e.id},get class(){return O(R,e.invalid&&"border-destructive dark:border-red-400/70")},get disabled(){return e.disabled}},()=>A(e),{onChange:l=>{e.onInput(l.currentTarget.value),e.onBlur()}}),!1,!0),m(n,()=>e.placeholder??"Select\u2026"),m(t,u(L,{get each(){return r()},children:l=>(()=>{var a=te();return m(a,()=>String(l)),k(()=>a.selected=e.value===l),k(()=>a.value=String(l)),a})()}),null),k(()=>n.selected=e.value===void 0||e.value===""),t})()}function ne(e){const r=e.items;return r&&"enum"in r&&Array.isArray(r.enum)?r.enum:[]}function nr(e){const r=()=>Array.isArray(e.value)?e.value:[],t=n=>{const l=r(),a=l.includes(n)?l.filter(i=>i!==n):[...l,n];e.onInput(a),e.onBlur()};return(()=>{var n=_e();return C(n,x({get"aria-label"(){return e.label}},()=>A(e)),!1,!0),m(n,u(L,{get each(){return ne(e.field)},children:l=>(()=>{var a=Fe(),i=a.firstChild,s=i.nextSibling;return i.addEventListener("change",()=>t(l)),m(s,()=>String(l)),k(g=>{var v=O("flex cursor-pointer items-center gap-3 px-3 py-2.5 text-sm transition-colors",r().includes(l)?"bg-accent font-medium text-accent-foreground":"text-foreground hover:bg-muted/50"),h=e.disabled;return v!==g.e&&T(a,g.e=v),h!==g.t&&(i.disabled=g.t=h),g},{e:void 0,t:void 0}),k(()=>i.checked=r().includes(l)),a})()})),n})()}function ir(e){const r=()=>Array.isArray(e.value)?e.value:[];return(()=>{var t=Ue();return C(t,x({get id(){return e.id},get"aria-label"(){return e.label},get class(){return O(R,"min-h-[6rem]",e.invalid&&"border-destructive dark:border-red-400/70")},get disabled(){return e.disabled}},()=>A(e),{onChange:n=>{const l=Array.from(n.currentTarget.selectedOptions).map(a=>a.value);e.onInput(l),e.onBlur()}}),!1,!0),m(t,u(L,{get each(){return ne(e.field)},children:n=>(()=>{var l=te();return m(l,()=>String(n)),k(()=>l.selected=r().includes(n)),k(()=>l.value=String(n)),l})()})),t})()}function ar(e){const r=()=>Array.isArray(e.value)?e.value:[],[t,n]=ve(""),l=()=>{const i=t().trim();i&&(e.onInput([...r(),i]),n(""),e.onBlur())},a=i=>{e.onInput(r().filter((s,g)=>g!==i)),e.onBlur()};return(()=>{var i=Ye(),s=i.firstChild,g=s.nextSibling,v=g.firstChild,h=v.nextSibling;return m(s,u(L,{get each(){return r()},children:(f,S)=>(()=>{var w=Ze(),I=w.firstChild;return m(w,f,I),I.$$click=()=>a(S()),j(I,"aria-label",`Remove ${f}`),k(()=>I.disabled=e.disabled),w})()})),C(v,x({get id(){return e.id},get class(){return O(R)},get value(){return t()},get placeholder(){return e.placeholder??"Add\u2026"},get disabled(){return e.disabled}},()=>A(e),{onInput:f=>n(f.currentTarget.value),onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),l())}}),!1,!1),h.$$click=l,k(f=>{var S=e.label,w=e.disabled;return S!==f.e&&j(i,"aria-label",f.e=S),w!==f.t&&(h.disabled=f.t=w),f},{e:void 0,t:void 0}),i})()}be(["click"]);var lr=b("<form novalidate>"),ur=b('<div class="flex w-full flex-wrap items-center justify-between gap-2"><div class="ml-auto flex flex-wrap items-center gap-2">'),sr=b('<div class="flex flex-col gap-3"><p class="flex items-center gap-2 text-sm font-medium text-foreground"><span>Submitted</span></p><dl class="grid grid-cols-[max-content_1fr] gap-x-4 gap-y-1.5">'),dr=b('<dt class="text-xs text-muted-foreground">'),or=b('<dd class="m-0 text-sm font-medium text-foreground">'),cr=b('<span class="text-destructive dark:text-red-400"aria-hidden=true> *'),mr=b('<label class="text-sm font-medium text-foreground">'),gr=b('<p class="text-xs text-muted-foreground">'),fr=b('<p role=alert class="text-xs text-destructive dark:text-red-400">'),pr=b('<div class="flex flex-col gap-2 rounded-xl bg-surface p-3.5">'),hr=b('<p class="rounded-md border border-dashed border-border p-2 text-xs text-muted-foreground">Unsupported field "<!>".'),vr=b('<fieldset class="flex flex-col gap-3 rounded-lg border border-border p-3"><legend class="px-1 text-sm font-medium text-foreground">'),br=b('<fieldset class="flex flex-col gap-3 rounded-lg border border-border p-3"data-control><legend class="px-1 text-sm font-medium text-foreground">'),xr=b('<div class="flex flex-col gap-2 rounded-md border border-border/60 p-2"><div class="flex items-center justify-between"><span class="text-xs text-muted-foreground">Item ');const U=4,yr=new Set(["textarea","slider","rating","radio","select","checkbox","password","switch"]);function kr(e,r){const t=e["x-kai-widget"];if(t&&yr.has(t))switch(t){case"textarea":return"textarea";case"slider":return"slider";case"rating":return"rating";case"radio":return"radio";case"select":return"select";case"checkbox":return"checkbox";case"password":return"password";case"switch":return"switch"}switch(e.type){case"string":{if(Array.isArray(e.enum))return e.enum.length<=r?"radio":"select";switch(e.format){case"email":return"email";case"uri":case"url":return"url";case"date":return"date";case"date-time":return"datetime";case"time":return"time"}return e.maxLength!==void 0&&e.maxLength>120?"textarea":"text"}case"number":case"integer":return"number";case"boolean":return"switch";case"array":{const n=e.items;return n&&"enum"in n&&Array.isArray(n.enum)?n.enum.length<=r?"checkbox-group":"multiselect":n&&"type"in n&&n.type==="object"?"repeater":(n&&"type"in n&&n.type,"taglist")}case"object":return"fieldset";default:return"unsupported"}}function Y(e){return e.replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").trim().replace(/\b\w/g,r=>r.toUpperCase())}function wr(e){const r=Object.keys(e.properties??{}),t=e["x-kai-order"];if(Array.isArray(t)){const a=t.filter(s=>r.includes(s)),i=r.filter(s=>!a.includes(s));return[...a,...i]}const n=(e.required??[]).filter(a=>r.includes(a)),l=r.filter(a=>!n.includes(a));return[...n,...l]}function Ir(e,r){if(e.type==="number"||e.type==="integer"){if(r===""||r===null||r===void 0)return;const t=typeof r=="number"?r:Number(r);return Number.isNaN(t)?r:t}return e.type==="boolean"?!!r:r}const $r="^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$";function Ar(e){const r={type:e.type};return e.enum&&(r.enum=e.enum),e.minimum!==void 0&&(r.minimum=e.minimum),e.maximum!==void 0&&(r.maximum=e.maximum),e.minLength!==void 0&&(r.minLength=e.minLength),e.maxLength!==void 0&&(r.maxLength=e.maxLength),e.minItems!==void 0&&(r.minItems=e.minItems),e.maxItems!==void 0&&(r.maxItems=e.maxItems),e.pattern!==void 0?r.pattern=e.pattern:e.format==="email"&&(r.pattern=$r),r}function ie(e){return e==null||e===""||Array.isArray(e)&&e.length===0}function D(e,r){const t={},n=new Set(e.required??[]);for(const[l,a]of Object.entries(e.properties??{})){const i=r[l];if(n.has(l)&&ie(i)){t[l]=`${a.title??Y(l)} is required.`;continue}if(ie(i))continue;const s=re(Ar(a),i);s.valid||(t[l]=Sr(a,l,s.errors[0]))}return{valid:Object.keys(t).length===0,fieldErrors:t}}function Sr(e,r,t){const n=e.title??Y(r);return t?t.includes("minimum")?`${n} must be at least ${e.minimum}.`:t.includes("maximum")?`${n} must be at most ${e.maximum}.`:t.includes("minLength")?`${n} must be at least ${e.minLength} characters.`:t.includes("maxLength")?`${n} must be at most ${e.maxLength} characters.`:t.includes("pattern")?e.format==="email"?`${n} must be a valid email address.`:`${n} is not in the expected format.`:t.includes("one of")?`${n} must be one of the allowed options.`:t.includes("expected integer")?`${n} must be a whole number.`:t.includes("expected")?`${n} is invalid.`:t.includes("minItems")?`${n}: choose at least ${e.minItems}.`:t.includes("maxItems")?`${n}: choose at most ${e.maxItems}.`:`${n} is invalid.`:`${n} is invalid.`}function jr(e,r){return e?.["x-kai-widget"]==="password"?r==null||r===""?"\u2014":"\u2022\u2022\u2022\u2022":typeof r=="boolean"?r?"Yes":"No":r==null||r===""?"\u2014":Array.isArray(r)?r.length?r.map(t=>String(t)).join(", "):"\u2014":String(r)}function Lr(e,r){const t=e.properties??{};return(Array.isArray(e["x-kai-order"])&&e["x-kai-order"].length>0?e["x-kai-order"].filter(n=>n in t):Object.keys(t)).map(n=>{const l=t[n];return{key:n,label:l?.title??n,value:jr(l,r[n])}})}function ae(e,r){const t={};for(const n of Object.keys(e.properties??{})){const l=e.properties[n],a=Ir(l,r[n]);a===void 0||a===""||Array.isArray(a)&&a.length===0||(t[n]=a)}return t}const le={type:"object",properties:{}};function Or(e){const r=x({cardId:"kai-form"},e),[t]=xe(r,["data","cardId","heading","host","hostElement","class","resolution","values","defaultValues","disabled","onValuesChange","controllerRef"]),n=Ie(),l=d=>{const o=t.host??n;o?o.emit(d):t.hostElement&&Se(t.hostElement,d)},a=E(()=>{const d=t.data;return d?d.type!=="object"||typeof d.properties!="object"||d.properties===null?{ok:!1,message:"This form couldn't be displayed."}:{ok:!0,message:""}:{ok:!1,message:"No form definition provided."}}),i=E(()=>a().ok?t.data??le:le),s=()=>i()["x-kai-inlineMax"]??U,g=E(()=>wr(i())),v=$e({prop:()=>t.resolution,data:()=>t.data}),[h,f]=ee({}),[S,w]=ee({}),I=d=>{const o={};for(const[c,p]of Object.entries(d.properties??{}))p.default!==void 0?o[c]=p.default:p.type==="array"&&(o[c]=[]);return t.defaultValues&&Object.assign(o,t.defaultValues),t.values&&Object.assign(o,t.values),o},M=d=>{const o=I(d);f(B(c=>{for(const p of Object.keys(c))delete c[p];Object.assign(c,o)})),w(B(c=>{for(const p of Object.keys(c))delete c[p]}))},se=()=>{const d=i(),o={};for(const[c,p]of Object.entries(d.properties??{}))p.default!==void 0?o[c]=p.default:p.type==="array"&&(o[c]=[]);f(B(c=>{for(const p of Object.keys(c))delete c[p];Object.assign(c,o)})),w(B(c=>{for(const p of Object.keys(c))delete c[p]}))};K(J(()=>t.data,()=>{a().ok&&M(i())})),K(J(()=>t.values,d=>{d&&f(B(o=>{for(const c of Object.keys(o))delete o[c];Object.assign(o,d)}))},{defer:!0})),K(J(a,d=>{d.ok?l({kind:"ready",cardId:t.cardId}):l({kind:"error",cardId:t.cardId,message:d.message})})),K(()=>{var d;const o=t.hostElement;o&&(((d=v.resolution())==null?void 0:d.kind)==="submit"?o.setAttribute("data-kai-resolved","submitted"):o.removeAttribute("data-kai-resolved"))});const de=(d,o)=>{var c;f(d,o),S[d]&&w(d,void 0);const p=V(h),$=ae(i(),p),{valid:q}=D(i(),p);(c=t.onValuesChange)==null||c.call(t,{values:$,valid:q})},oe=d=>{const o=i().properties[d];if(!o)return;const c=D({required:i().required,properties:{[d]:o}},{[d]:h[d]});w(d,c.fieldErrors[d])},G=d=>{var o;return d?.closest("form")??d??((o=t.hostElement)==null?void 0:o.shadowRoot)??document},H=(d,o,c)=>{var p;(p=o.querySelector(`[data-field="${Rr(d)}"] [data-control]`))==null||p.focus(c)},P=d=>{if(v.isResolved())return!1;const o=V(h),c=D(i(),o);if(w(B($=>{for(const q of Object.keys($))delete $[q];Object.assign($,c.fieldErrors)})),!c.valid){const $=g().find(q=>c.fieldErrors[q]);if($){const q=G(d);queueMicrotask(()=>H($,q))}return!1}const p=ae(i(),o);return l({kind:"submit",cardId:t.cardId,data:p}),v.setLocal({kind:"submit",data:p}),!0},ce=d=>{d.preventDefault(),P(d.currentTarget)},Q=()=>{v.isResolved()||(l({kind:"dismiss",cardId:t.cardId}),v.setLocal({kind:"dismissed"}))},W=()=>l({kind:"reopen",cardId:t.cardId}),X=()=>t.disabled===!0;ye(()=>{var d;(d=t.controllerRef)==null||d.call(t,{focus:o=>{const c=G(),p=g().find($=>S[$])??g()[0];p&&H(p,c,o)},send:()=>{P()},validate:()=>{const o=V(h),c=D(i(),o);return w(B(p=>{for(const $ of Object.keys(p))delete p[$];Object.assign(p,c.fieldErrors)})),c.valid?{valid:!0}:{valid:!1,errors:c.fieldErrors}},reset:()=>se(),dismiss:()=>Q(),reopen:()=>W()})});const me=E(()=>i()["x-kai-actions"]??[]),ge=()=>i()["x-kai-submitLabel"]??"Submit",fe=()=>i()["x-kai-dismissible"]===!0,pe=E(()=>{const d=v.resolution();return!d||d.kind!=="submit"?[]:Lr(i(),d.data??{})});return u(y,{get when(){return a().ok},get fallback(){return u(z,{get heading(){return t.heading},get errorMessage(){return a().message}})},get children(){return u(ke,{fallback:()=>(l({kind:"error",cardId:t.cardId,message:"The form failed to render."}),u(z,{get heading(){return t.heading},errorMessage:"The form failed to render."})),get children(){return u(y,{get when(){return!v.isDeferred()},get fallback(){return u(Ae,{type:"form",get title(){return t.heading??i().title},onReopen:W})},get children(){return u(z,{get heading(){return t.heading??i().title},get description(){return i().description},get actions(){return u(y,{get when(){return!v.isResolved()},fallback:void 0,get children(){var d=ur(),o=d.firstChild;return m(d,u(y,{get when(){return fe()},get children(){return u(N,{type:"button",variant:"ghost",onClick:Q,children:"Dismiss"})}}),o),m(o,u(L,{get each(){return me()},children:c=>u(N,{type:"button",get variant(){return c.variant??"ghost"},onClick:()=>l({kind:"action",cardId:t.cardId,action:c.id}),get children(){return c.label}})}),null),m(o,u(N,{type:"submit",get form(){return ue()},get disabled(){return X()},get children(){return ge()}}),null),d}})},get children(){return u(y,{get when(){return!v.isResolved()},get fallback(){return u(Br,{get rows(){return pe()},get optimistic(){return v.isOptimistic()}})},get children(){var d=lr();return d.addEventListener("submit",ce),m(d,u(L,{get each(){return g()},children:o=>u(Z,{fieldKey:o,get field(){return i().properties[o]},get required(){return(i().required??[]).includes(o)},get inlineMax(){return s()},value:()=>h[o],error:()=>S[o],get disabled(){return X()},onInput:c=>de(o,c),onBlur:()=>oe(o)})})),k(o=>{var c=ue(),p=O("flex flex-col gap-3",t.class);return c!==o.e&&j(d,"id",o.e=c),p!==o.t&&T(d,o.t=p),o},{e:void 0,t:void 0}),d}})}})}})}})}})}let Cr=0;const qr=`kai-form-${++Cr}`;function ue(){return qr}function Br(e){return(()=>{var r=sr(),t=r.firstChild,n=t.firstChild,l=t.nextSibling;return m(t,u(Ce,{size:16,"aria-hidden":"true"}),n),m(l,u(L,{get each(){return e.rows},children:a=>[(()=>{var i=dr();return m(i,()=>a.label),i})(),(()=>{var i=or();return m(i,()=>a.value),i})()]})),k(()=>j(r,"role",e.optimistic?"status":void 0)),r})()}function Z(e){const r=`f-${e.fieldKey}-${Math.random().toString(36).slice(2,8)}`,t=`${r}-err`,n=`${r}-desc`,l=()=>e.field.title??Y(e.fieldKey),a=E(()=>kr(e.field,e.inlineMax)),i=()=>e.field["x-kai-placeholder"],s=()=>[e.field.description?n:"",e.error()?t:""].filter(Boolean).join(" ")||void 0,g=()=>({id:r,value:e.value(),field:e.field,disabled:e.disabled||e.field.readOnly===!0,placeholder:i(),required:e.required,invalid:!!e.error(),describedBy:s(),label:l(),onInput:e.onInput,onBlur:e.onBlur}),v=()=>["fieldset","repeater","checkbox-group","multiselect","radio","taglist"].includes(a());return(()=>{var h=pr();return m(h,u(y,{get when(){return!v()},get children(){var f=mr();return j(f,"for",r),m(f,l,null),m(f,u(y,{get when(){return e.required},get children(){return cr()}}),null),f}}),null),m(h,u(y,{get when(){return e.field.description},get children(){var f=gr();return j(f,"id",n),m(f,()=>e.field.description),f}}),null),m(h,u(Mr,{get widget(){return a()},get common(){return g()},get fieldKey(){return e.fieldKey}}),null),m(h,u(y,{get when(){return e.error()},get children(){var f=fr();return j(f,"id",t),m(f,()=>e.error()),f}}),null),k(()=>j(h,"data-field",e.fieldKey)),h})()}function Mr(e){const r=()=>e.widget,t=()=>e.common;return[u(y,{get when(){return r()==="text"||r()==="email"||r()==="url"||r()==="date"||r()==="datetime"||r()==="time"||r()==="password"},get children(){return u(Ge,x(t,{get variant(){return r()}}))}}),u(y,{get when(){return r()==="textarea"},get children(){return u(He,x(t))}}),u(y,{get when(){return r()==="number"},get children(){return u(Pe,x(t))}}),u(y,{get when(){return r()==="slider"},get children(){return u(Qe,x(t))}}),u(y,{get when(){return r()==="rating"},get children(){return u(We,x(t))}}),u(y,{get when(){return r()==="switch"},get children(){return u(Xe,x(t))}}),u(y,{get when(){return r()==="checkbox"},get children(){return u(er,x(t))}}),u(y,{get when(){return r()==="radio"},get children(){return u(rr,x(t))}}),u(y,{get when(){return r()==="select"},get children(){return u(tr,x(t))}}),u(y,{get when(){return r()==="checkbox-group"},get children(){return u(nr,x(t))}}),u(y,{get when(){return r()==="multiselect"},get children(){return u(ir,x(t))}}),u(y,{get when(){return r()==="taglist"},get children(){return u(ar,x(t))}}),u(y,{get when(){return r()==="repeater"},get children(){return u(Nr,x(t,{inlineMax:U}))}}),u(y,{get when(){return r()==="fieldset"},get children(){return u(Er,x(t,{inlineMax:U}))}}),u(y,{get when(){return r()==="unsupported"},get children(){var n=hr(),l=n.firstChild,a=l.nextSibling;return a.nextSibling,m(n,()=>e.fieldKey,a),n}})]}function Er(e){const r=()=>e.field.properties??{},t=()=>e.value&&typeof e.value=="object"?e.value:{},n=(l,a)=>{e.onInput({...t(),[l]:a})};return(()=>{var l=vr(),a=l.firstChild;return m(a,()=>e.label),m(l,u(L,{get each(){return Object.keys(r())},children:i=>u(Z,{fieldKey:i,get field(){return r()[i]},get required(){return(e.field.required??[]).includes(i)},get inlineMax(){return e.inlineMax},value:()=>t()[i],error:()=>{},get disabled(){return e.disabled},onInput:s=>n(i,s),get onBlur(){return e.onBlur}})}),null),l})()}function Nr(e){const r=()=>e.field.items??{type:"object",properties:{}},t=()=>Array.isArray(e.value)?e.value:[],n=s=>e.onInput(s),l=()=>n([...t(),{}]),a=s=>n(t().filter((g,v)=>v!==s)),i=(s,g,v)=>{const h=t().slice();h[s]={...h[s],[g]:v},n(h)};return(()=>{var s=br(),g=s.firstChild;return m(g,()=>e.label),m(s,u(we,{get each(){return t()},children:(v,h)=>(()=>{var f=xr(),S=f.firstChild,w=S.firstChild;return w.firstChild,m(w,h+1,null),m(S,u(N,{type:"button",size:"icon-sm",variant:"ghost","aria-label":`Remove row ${h+1}`,get disabled(){return e.disabled},onClick:()=>a(h),children:"\u2715"}),null),m(f,u(L,{get each(){return Object.keys(r().properties??{})},children:I=>u(Z,{fieldKey:I,get field(){return r().properties[I]},get required(){return(r().required??[]).includes(I)},get inlineMax(){return e.inlineMax},value:()=>{var M;return(M=v())==null?void 0:M[I]},error:()=>{},get disabled(){return e.disabled},onInput:M=>i(h,I,M),get onBlur(){return e.onBlur}})}),null),f})()}),null),m(s,u(N,{type:"button",variant:"outline",size:"sm",get disabled(){return e.disabled},onClick:l,children:"Add item"}),null),s})()}function Rr(e){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&")}export{Or as F,re as v};
1
+ import{c as u,m as x,i as m,S as y,q as C,j as he,d as j,a as k,F as L,b as T,g as ve,t as b,e as be,s as xe,l as E,k as K,x as J,o as ye,E as ke,I as we}from"./define-B_tXMYRm.js";import{c as ee,u as V,p as B}from"./store-HIPGhNz9.js";import{c as O}from"./cn-CU7UAWzk.js";import{B as N}from"./button-B9okqG73.js";import{u as Ie,a as $e,C as z,D as Ae}from"./use-card-resolution-DJg32jGH.js";import{e as Se}from"./card-routing-BK09BdmL.js";import{T as je}from"./textarea-DPfuhswM.js";import{I as Le,F as R}from"./input-DrseEjhp.js";import{s as Oe}from"./star-DHvACxtm.js";import{c as Ce}from"./check-MdLzbxrm.js";function _(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function qe(e,r){switch(r){case"integer":return typeof e=="number"&&Number.isInteger(e);case"number":return typeof e=="number"&&Number.isFinite(e);case"array":return Array.isArray(e);case"null":return e===null;case"object":return _(e)==="object";default:return typeof e===r}}function F(e,r,t,n){const l=t||"(root)",a=(i,s,g=l)=>{n.push({path:g,keyword:i,message:`${g}: ${s}`})};if(e.type&&!qe(r,e.type)){a("type",`expected ${e.type}, got ${_(r)}`);return}if("const"in e&&JSON.stringify(r)!==JSON.stringify(e.const)&&a("const",`must equal const ${JSON.stringify(e.const)}`),e.enum&&!e.enum.some(i=>JSON.stringify(i)===JSON.stringify(r))&&a("enum",`must be one of ${JSON.stringify(e.enum)}`),typeof r=="number"&&(e.minimum!==void 0&&r<e.minimum&&a("minimum",`< minimum ${e.minimum}`),e.maximum!==void 0&&r>e.maximum&&a("maximum",`> maximum ${e.maximum}`),e.exclusiveMinimum!==void 0&&r<=e.exclusiveMinimum&&a("exclusiveMinimum","<= exclusiveMinimum"),e.exclusiveMaximum!==void 0&&r>=e.exclusiveMaximum&&a("exclusiveMaximum",">= exclusiveMaximum")),typeof r=="string"&&(e.minLength!==void 0&&r.length<e.minLength&&a("minLength",`shorter than minLength ${e.minLength}`),e.maxLength!==void 0&&r.length>e.maxLength&&a("maxLength",`longer than maxLength ${e.maxLength}`),e.pattern!==void 0&&!new RegExp(e.pattern).test(r)&&a("pattern","does not match pattern")),Array.isArray(r)&&(e.minItems!==void 0&&r.length<e.minItems&&a("minItems",`fewer than minItems ${e.minItems}`),e.maxItems!==void 0&&r.length>e.maxItems&&a("maxItems",`more than maxItems ${e.maxItems}`),e.uniqueItems&&new Set(r.map(i=>JSON.stringify(i))).size!==r.length&&a("uniqueItems","items not unique"),e.items&&r.forEach((i,s)=>F(e.items,i,`${l}[${s}]`,n))),_(r)==="object"){const i=r;for(const s of e.required??[])(!(s in i)||i[s]===void 0)&&a("required","required",`${l}.${s}`);if(e.properties)for(const[s,g]of Object.entries(e.properties))s in i&&i[s]!==void 0&&F(g,i[s],`${l}.${s}`,n)}}function re(e,r){const t=[];return F(e,r,"",t),{valid:t.length===0,errors:t.map(n=>n.message),issues:t}}var Be=b('<span class="self-end text-xs text-muted-foreground">/'),Me=b('<div class="flex flex-col gap-1">'),Ee=b("<input data-control type=number>"),Ne=b('<div class="flex items-center gap-3"><input data-control type=range class=kai-range><span class="min-w-9 shrink-0 rounded-md bg-background px-2 py-1 text-center text-sm font-medium tabular-nums text-foreground shadow-sm">'),Re=b('<div role=radiogroup data-control tabindex=0 class="flex items-center gap-1 rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring">'),Te=b('<button type=button role=radio tabindex=-1 class="rounded p-0.5 text-muted-foreground hover:text-foreground">'),Ke=b("<button data-control type=button role=switch><span>"),De=b('<label class="-mx-1.5 inline-flex cursor-pointer items-center gap-2.5 rounded-md px-1.5 py-1.5 text-sm text-foreground transition-colors hover:bg-muted/60"><input data-control type=checkbox class=kai-checkbox><span>'),Je=b('<div role=radiogroup data-control class="divide-y divide-border overflow-hidden rounded-lg border border-input">'),Ve=b("<label><input type=radio class=kai-radio><span>"),ze=b("<select data-control><option value disabled>"),te=b("<option>"),_e=b('<div role=group data-control class="divide-y divide-border overflow-hidden rounded-lg border border-input">'),Fe=b("<label><input type=checkbox class=kai-checkbox><span>"),Ue=b("<select data-control multiple>"),Ye=b('<div class="flex flex-col gap-2"role=group><div class="flex flex-wrap gap-1.5"></div><div class="flex items-center gap-2"><input data-control type=text><button type=button class="rounded-md border border-input px-3 py-2 text-sm text-foreground hover:bg-muted disabled:opacity-50">Add'),Ze=b('<span class="inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-xs text-foreground"><button type=button class="text-muted-foreground hover:text-foreground">\u2715');function A(e){return{"aria-required":e.required||void 0,"aria-invalid":e.invalid||void 0,"aria-describedby":e.describedBy}}function Ge(e){const r=()=>{switch(e.variant){case"email":return"email";case"url":return"url";case"date":return"date";case"datetime":return"datetime-local";case"time":return"time";case"password":return"password";default:return"text"}};return u(Le,x({get id(){return e.id},"data-control":!0,get type(){return r()},get value(){return e.value??""},get placeholder(){return e.placeholder},get invalid(){return e.invalid},get disabled(){return e.disabled},get minLength(){return e.field.minLength},get maxLength(){return e.field.maxLength}},()=>A(e),{onValueInput:t=>e.onInput(t),onValueChange:()=>e.onBlur()}))}function He(e){const r=()=>(e.value??"").length;return(()=>{var t=Me();return m(t,u(je,x({get id(){return e.id},"data-control":!0,get class(){return O(R,e.invalid&&"border-destructive dark:border-red-400/70")},get value(){return e.value??""},get placeholder(){return e.placeholder},get disabled(){return e.disabled},get maxLength(){return e.field.maxLength}},()=>A(e),{onInput:n=>e.onInput(n.currentTarget.value),get onBlur(){return e.onBlur}})),null),m(t,u(y,{get when(){return e.field.maxLength!==void 0},get children(){var n=Be(),l=n.firstChild;return m(n,r,l),m(n,()=>e.field.maxLength,null),n}}),null),t})()}function Pe(e){const r=()=>e.field["x-kai-step"]??(e.field.type==="integer"?1:void 0);return(()=>{var t=Ee();return C(t,x({get id(){return e.id},get class(){return O(R,e.invalid&&"border-destructive dark:border-red-400/70")},get value(){return he(()=>e.value===void 0||e.value===null)()?"":String(e.value)},get placeholder(){return e.placeholder},get disabled(){return e.disabled},get min(){return e.field.minimum},get max(){return e.field.maximum},get step(){return r()}},()=>A(e),{onInput:n=>e.onInput(n.currentTarget.value),get onBlur(){return e.onBlur}}),!1,!1),t})()}function Qe(e){const r=()=>e.field.minimum??0,t=()=>e.field.maximum??100,n=()=>e.field["x-kai-step"]??(e.field.type==="integer"?1:void 0),l=()=>e.value===void 0||e.value===null?r():Number(e.value),a=()=>{const i=r(),s=t();return s>i?`${(l()-i)/(s-i)*100}%`:"0%"};return(()=>{var i=Ne(),s=i.firstChild,g=s.nextSibling;return C(s,x({get id(){return e.id},get style(){return{"--kai-range-fill":a()}},get value(){return l()},get min(){return r()},get max(){return t()},get step(){return n()},get disabled(){return e.disabled},get"aria-valuetext"(){return String(l())}},()=>A(e),{onInput:v=>e.onInput(Number(v.currentTarget.value)),get onBlur(){return e.onBlur}}),!1,!1),m(g,l),i})()}function We(e){const r=()=>e.field.maximum??5,t=()=>Number(e.value??0),n=()=>Array.from({length:r()},(a,i)=>i+1),l=a=>{a.key==="ArrowRight"||a.key==="ArrowUp"?(a.preventDefault(),e.onInput(Math.min(r(),t()+1))):(a.key==="ArrowLeft"||a.key==="ArrowDown")&&(a.preventDefault(),e.onInput(Math.max(e.field.minimum??1,t()-1)))};return(()=>{var a=Re();return C(a,x({get"aria-label"(){return e.label}},()=>A(e),{onKeyDown:l}),!1,!0),m(a,u(L,{get each(){return n()},children:i=>(()=>{var s=Te();return s.$$click=()=>e.onInput(i),j(s,"aria-label",`${i} ${i===1?"star":"stars"}`),m(s,u(Oe,{size:20,get class(){return O(i<=t()?"fill-current text-[var(--color-primary)]":"")},"aria-hidden":"true"})),k(g=>{var v=t()===i,h=e.disabled;return v!==g.e&&j(s,"aria-checked",g.e=v),h!==g.t&&(s.disabled=g.t=h),g},{e:void 0,t:void 0}),s})()})),a})()}function Xe(e){const r=()=>e.value===!0,t=()=>{e.disabled||(e.onInput(!r()),e.onBlur())};return(()=>{var n=Ke(),l=n.firstChild;return C(n,x({get id(){return e.id},get"aria-checked"(){return r()},get"aria-label"(){return e.label},get disabled(){return e.disabled},get class(){return O("relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",r()?"bg-[var(--color-primary)]":"bg-muted")}},()=>A(e),{onClick:t}),!1,!0),k(()=>T(l,O("inline-block h-5 w-5 transform rounded-full bg-background shadow transition-transform",r()?"translate-x-5":"translate-x-0.5"))),n})()}function er(e){return(()=>{var r=De(),t=r.firstChild,n=t.nextSibling;return C(t,x({get id(){return e.id},get checked(){return e.value===!0},get disabled(){return e.disabled}},()=>A(e),{onChange:l=>{e.onInput(l.currentTarget.checked),e.onBlur()}}),!1,!1),m(n,()=>e.label),r})()}function rr(e){const r=()=>e.field.enum??[];return(()=>{var t=Je();return C(t,x({get"aria-label"(){return e.label}},()=>A(e)),!1,!0),m(t,u(L,{get each(){return r()},children:n=>(()=>{var l=Ve(),a=l.firstChild,i=a.nextSibling;return a.addEventListener("change",()=>{e.onInput(n),e.onBlur()}),m(i,()=>String(n)),k(s=>{var g=O("flex cursor-pointer items-center gap-3 px-3 py-2.5 text-sm transition-colors",e.value===n?"bg-accent font-medium text-accent-foreground":"text-foreground hover:bg-muted/50"),v=e.id,h=e.disabled;return g!==s.e&&T(l,s.e=g),v!==s.t&&j(a,"name",s.t=v),h!==s.a&&(a.disabled=s.a=h),s},{e:void 0,t:void 0,a:void 0}),k(()=>a.value=String(n)),k(()=>a.checked=e.value===n),l})()})),t})()}function tr(e){const r=()=>e.field.enum??[];return(()=>{var t=ze(),n=t.firstChild;return C(t,x({get id(){return e.id},get class(){return O(R,e.invalid&&"border-destructive dark:border-red-400/70")},get disabled(){return e.disabled}},()=>A(e),{onChange:l=>{e.onInput(l.currentTarget.value),e.onBlur()}}),!1,!0),m(n,()=>e.placeholder??"Select\u2026"),m(t,u(L,{get each(){return r()},children:l=>(()=>{var a=te();return m(a,()=>String(l)),k(()=>a.selected=e.value===l),k(()=>a.value=String(l)),a})()}),null),k(()=>n.selected=e.value===void 0||e.value===""),t})()}function ne(e){const r=e.items;return r&&"enum"in r&&Array.isArray(r.enum)?r.enum:[]}function nr(e){const r=()=>Array.isArray(e.value)?e.value:[],t=n=>{const l=r(),a=l.includes(n)?l.filter(i=>i!==n):[...l,n];e.onInput(a),e.onBlur()};return(()=>{var n=_e();return C(n,x({get"aria-label"(){return e.label}},()=>A(e)),!1,!0),m(n,u(L,{get each(){return ne(e.field)},children:l=>(()=>{var a=Fe(),i=a.firstChild,s=i.nextSibling;return i.addEventListener("change",()=>t(l)),m(s,()=>String(l)),k(g=>{var v=O("flex cursor-pointer items-center gap-3 px-3 py-2.5 text-sm transition-colors",r().includes(l)?"bg-accent font-medium text-accent-foreground":"text-foreground hover:bg-muted/50"),h=e.disabled;return v!==g.e&&T(a,g.e=v),h!==g.t&&(i.disabled=g.t=h),g},{e:void 0,t:void 0}),k(()=>i.checked=r().includes(l)),a})()})),n})()}function ir(e){const r=()=>Array.isArray(e.value)?e.value:[];return(()=>{var t=Ue();return C(t,x({get id(){return e.id},get"aria-label"(){return e.label},get class(){return O(R,"min-h-[6rem]",e.invalid&&"border-destructive dark:border-red-400/70")},get disabled(){return e.disabled}},()=>A(e),{onChange:n=>{const l=Array.from(n.currentTarget.selectedOptions).map(a=>a.value);e.onInput(l),e.onBlur()}}),!1,!0),m(t,u(L,{get each(){return ne(e.field)},children:n=>(()=>{var l=te();return m(l,()=>String(n)),k(()=>l.selected=r().includes(n)),k(()=>l.value=String(n)),l})()})),t})()}function ar(e){const r=()=>Array.isArray(e.value)?e.value:[],[t,n]=ve(""),l=()=>{const i=t().trim();i&&(e.onInput([...r(),i]),n(""),e.onBlur())},a=i=>{e.onInput(r().filter((s,g)=>g!==i)),e.onBlur()};return(()=>{var i=Ye(),s=i.firstChild,g=s.nextSibling,v=g.firstChild,h=v.nextSibling;return m(s,u(L,{get each(){return r()},children:(f,S)=>(()=>{var w=Ze(),I=w.firstChild;return m(w,f,I),I.$$click=()=>a(S()),j(I,"aria-label",`Remove ${f}`),k(()=>I.disabled=e.disabled),w})()})),C(v,x({get id(){return e.id},get class(){return O(R)},get value(){return t()},get placeholder(){return e.placeholder??"Add\u2026"},get disabled(){return e.disabled}},()=>A(e),{onInput:f=>n(f.currentTarget.value),onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),l())}}),!1,!1),h.$$click=l,k(f=>{var S=e.label,w=e.disabled;return S!==f.e&&j(i,"aria-label",f.e=S),w!==f.t&&(h.disabled=f.t=w),f},{e:void 0,t:void 0}),i})()}be(["click"]);var lr=b("<form novalidate>"),ur=b('<div class="flex w-full flex-wrap items-center justify-between gap-2"><div class="ml-auto flex flex-wrap items-center gap-2">'),sr=b('<div class="flex flex-col gap-3"><p class="flex items-center gap-2 text-sm font-medium text-foreground"><span>Submitted</span></p><dl class="grid grid-cols-[max-content_1fr] gap-x-4 gap-y-1.5">'),dr=b('<dt class="text-xs text-muted-foreground">'),or=b('<dd class="m-0 text-sm font-medium text-foreground">'),cr=b('<span class="text-destructive dark:text-red-400"aria-hidden=true> *'),mr=b('<label class="text-sm font-medium text-foreground">'),gr=b('<p class="text-xs text-muted-foreground">'),fr=b('<p role=alert class="text-xs text-destructive dark:text-red-400">'),pr=b('<div class="flex flex-col gap-2 rounded-xl bg-surface p-3.5">'),hr=b('<p class="rounded-md border border-dashed border-border p-2 text-xs text-muted-foreground">Unsupported field "<!>".'),vr=b('<fieldset class="flex flex-col gap-3 rounded-lg border border-border p-3"><legend class="px-1 text-sm font-medium text-foreground">'),br=b('<fieldset class="flex flex-col gap-3 rounded-lg border border-border p-3"data-control><legend class="px-1 text-sm font-medium text-foreground">'),xr=b('<div class="flex flex-col gap-2 rounded-md border border-border/60 p-2"><div class="flex items-center justify-between"><span class="text-xs text-muted-foreground">Item ');const U=4,yr=new Set(["textarea","slider","rating","radio","select","checkbox","password","switch"]);function kr(e,r){const t=e["x-kai-widget"];if(t&&yr.has(t))switch(t){case"textarea":return"textarea";case"slider":return"slider";case"rating":return"rating";case"radio":return"radio";case"select":return"select";case"checkbox":return"checkbox";case"password":return"password";case"switch":return"switch"}switch(e.type){case"string":{if(Array.isArray(e.enum))return e.enum.length<=r?"radio":"select";switch(e.format){case"email":return"email";case"uri":case"url":return"url";case"date":return"date";case"date-time":return"datetime";case"time":return"time"}return e.maxLength!==void 0&&e.maxLength>120?"textarea":"text"}case"number":case"integer":return"number";case"boolean":return"switch";case"array":{const n=e.items;return n&&"enum"in n&&Array.isArray(n.enum)?n.enum.length<=r?"checkbox-group":"multiselect":n&&"type"in n&&n.type==="object"?"repeater":(n&&"type"in n&&n.type,"taglist")}case"object":return"fieldset";default:return"unsupported"}}function Y(e){return e.replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").trim().replace(/\b\w/g,r=>r.toUpperCase())}function wr(e){const r=Object.keys(e.properties??{}),t=e["x-kai-order"];if(Array.isArray(t)){const a=t.filter(s=>r.includes(s)),i=r.filter(s=>!a.includes(s));return[...a,...i]}const n=(e.required??[]).filter(a=>r.includes(a)),l=r.filter(a=>!n.includes(a));return[...n,...l]}function Ir(e,r){if(e.type==="number"||e.type==="integer"){if(r===""||r===null||r===void 0)return;const t=typeof r=="number"?r:Number(r);return Number.isNaN(t)?r:t}return e.type==="boolean"?!!r:r}const $r="^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$";function Ar(e){const r={type:e.type};return e.enum&&(r.enum=e.enum),e.minimum!==void 0&&(r.minimum=e.minimum),e.maximum!==void 0&&(r.maximum=e.maximum),e.minLength!==void 0&&(r.minLength=e.minLength),e.maxLength!==void 0&&(r.maxLength=e.maxLength),e.minItems!==void 0&&(r.minItems=e.minItems),e.maxItems!==void 0&&(r.maxItems=e.maxItems),e.pattern!==void 0?r.pattern=e.pattern:e.format==="email"&&(r.pattern=$r),r}function ie(e){return e==null||e===""||Array.isArray(e)&&e.length===0}function D(e,r){const t={},n=new Set(e.required??[]);for(const[l,a]of Object.entries(e.properties??{})){const i=r[l];if(n.has(l)&&ie(i)){t[l]=`${a.title??Y(l)} is required.`;continue}if(ie(i))continue;const s=re(Ar(a),i);s.valid||(t[l]=Sr(a,l,s.errors[0]))}return{valid:Object.keys(t).length===0,fieldErrors:t}}function Sr(e,r,t){const n=e.title??Y(r);return t?t.includes("minimum")?`${n} must be at least ${e.minimum}.`:t.includes("maximum")?`${n} must be at most ${e.maximum}.`:t.includes("minLength")?`${n} must be at least ${e.minLength} characters.`:t.includes("maxLength")?`${n} must be at most ${e.maxLength} characters.`:t.includes("pattern")?e.format==="email"?`${n} must be a valid email address.`:`${n} is not in the expected format.`:t.includes("one of")?`${n} must be one of the allowed options.`:t.includes("expected integer")?`${n} must be a whole number.`:t.includes("expected")?`${n} is invalid.`:t.includes("minItems")?`${n}: choose at least ${e.minItems}.`:t.includes("maxItems")?`${n}: choose at most ${e.maxItems}.`:`${n} is invalid.`:`${n} is invalid.`}function jr(e,r){return e?.["x-kai-widget"]==="password"?r==null||r===""?"\u2014":"\u2022\u2022\u2022\u2022":typeof r=="boolean"?r?"Yes":"No":r==null||r===""?"\u2014":Array.isArray(r)?r.length?r.map(t=>String(t)).join(", "):"\u2014":String(r)}function Lr(e,r){const t=e.properties??{};return(Array.isArray(e["x-kai-order"])&&e["x-kai-order"].length>0?e["x-kai-order"].filter(n=>n in t):Object.keys(t)).map(n=>{const l=t[n];return{key:n,label:l?.title??n,value:jr(l,r[n])}})}function ae(e,r){const t={};for(const n of Object.keys(e.properties??{})){const l=e.properties[n],a=Ir(l,r[n]);a===void 0||a===""||Array.isArray(a)&&a.length===0||(t[n]=a)}return t}const le={type:"object",properties:{}};function Or(e){const r=x({cardId:"kai-form"},e),[t]=xe(r,["data","cardId","heading","host","hostElement","class","resolution","values","defaultValues","disabled","onValuesChange","controllerRef"]),n=Ie(),l=d=>{const o=t.host??n;o?o.emit(d):t.hostElement&&Se(t.hostElement,d)},a=E(()=>{const d=t.data;return d?d.type!=="object"||typeof d.properties!="object"||d.properties===null?{ok:!1,message:"This form couldn't be displayed."}:{ok:!0,message:""}:{ok:!1,message:"No form definition provided."}}),i=E(()=>a().ok?t.data??le:le),s=()=>i()["x-kai-inlineMax"]??U,g=E(()=>wr(i())),v=$e({prop:()=>t.resolution,data:()=>t.data}),[h,f]=ee({}),[S,w]=ee({}),I=d=>{const o={};for(const[c,p]of Object.entries(d.properties??{}))p.default!==void 0?o[c]=p.default:p.type==="array"&&(o[c]=[]);return t.defaultValues&&Object.assign(o,t.defaultValues),t.values&&Object.assign(o,t.values),o},M=d=>{const o=I(d);f(B(c=>{for(const p of Object.keys(c))delete c[p];Object.assign(c,o)})),w(B(c=>{for(const p of Object.keys(c))delete c[p]}))},se=()=>{const d=i(),o={};for(const[c,p]of Object.entries(d.properties??{}))p.default!==void 0?o[c]=p.default:p.type==="array"&&(o[c]=[]);f(B(c=>{for(const p of Object.keys(c))delete c[p];Object.assign(c,o)})),w(B(c=>{for(const p of Object.keys(c))delete c[p]}))};K(J(()=>t.data,()=>{a().ok&&M(i())})),K(J(()=>t.values,d=>{d&&f(B(o=>{for(const c of Object.keys(o))delete o[c];Object.assign(o,d)}))},{defer:!0})),K(J(a,d=>{d.ok?l({kind:"ready",cardId:t.cardId}):l({kind:"error",cardId:t.cardId,message:d.message})})),K(()=>{var d;const o=t.hostElement;o&&(((d=v.resolution())==null?void 0:d.kind)==="submit"?o.setAttribute("data-kai-resolved","submitted"):o.removeAttribute("data-kai-resolved"))});const de=(d,o)=>{var c;f(d,o),S[d]&&w(d,void 0);const p=V(h),$=ae(i(),p),{valid:q}=D(i(),p);(c=t.onValuesChange)==null||c.call(t,{values:$,valid:q})},oe=d=>{const o=i().properties[d];if(!o)return;const c=D({required:i().required,properties:{[d]:o}},{[d]:h[d]});w(d,c.fieldErrors[d])},G=d=>{var o;return d?.closest("form")??d??((o=t.hostElement)==null?void 0:o.shadowRoot)??document},H=(d,o,c)=>{var p;(p=o.querySelector(`[data-field="${Rr(d)}"] [data-control]`))==null||p.focus(c)},P=d=>{if(v.isResolved())return!1;const o=V(h),c=D(i(),o);if(w(B($=>{for(const q of Object.keys($))delete $[q];Object.assign($,c.fieldErrors)})),!c.valid){const $=g().find(q=>c.fieldErrors[q]);if($){const q=G(d);queueMicrotask(()=>H($,q))}return!1}const p=ae(i(),o);return l({kind:"submit",cardId:t.cardId,data:p}),v.setLocal({kind:"submit",data:p}),!0},ce=d=>{d.preventDefault(),P(d.currentTarget)},Q=()=>{v.isResolved()||(l({kind:"dismiss",cardId:t.cardId}),v.setLocal({kind:"dismissed"}))},W=()=>l({kind:"reopen",cardId:t.cardId}),X=()=>t.disabled===!0;ye(()=>{var d;(d=t.controllerRef)==null||d.call(t,{focus:o=>{const c=G(),p=g().find($=>S[$])??g()[0];p&&H(p,c,o)},send:()=>{P()},validate:()=>{const o=V(h),c=D(i(),o);return w(B(p=>{for(const $ of Object.keys(p))delete p[$];Object.assign(p,c.fieldErrors)})),c.valid?{valid:!0}:{valid:!1,errors:c.fieldErrors}},reset:()=>se(),dismiss:()=>Q(),reopen:()=>W()})});const me=E(()=>i()["x-kai-actions"]??[]),ge=()=>i()["x-kai-submitLabel"]??"Submit",fe=()=>i()["x-kai-dismissible"]===!0,pe=E(()=>{const d=v.resolution();return!d||d.kind!=="submit"?[]:Lr(i(),d.data??{})});return u(y,{get when(){return a().ok},get fallback(){return u(z,{get heading(){return t.heading},get errorMessage(){return a().message}})},get children(){return u(ke,{fallback:()=>(l({kind:"error",cardId:t.cardId,message:"The form failed to render."}),u(z,{get heading(){return t.heading},errorMessage:"The form failed to render."})),get children(){return u(y,{get when(){return!v.isDeferred()},get fallback(){return u(Ae,{type:"form",get title(){return t.heading??i().title},onReopen:W})},get children(){return u(z,{get heading(){return t.heading??i().title},get description(){return i().description},get actions(){return u(y,{get when(){return!v.isResolved()},fallback:void 0,get children(){var d=ur(),o=d.firstChild;return m(d,u(y,{get when(){return fe()},get children(){return u(N,{type:"button",variant:"ghost",onClick:Q,children:"Dismiss"})}}),o),m(o,u(L,{get each(){return me()},children:c=>u(N,{type:"button",get variant(){return c.variant??"ghost"},onClick:()=>l({kind:"action",cardId:t.cardId,action:c.id}),get children(){return c.label}})}),null),m(o,u(N,{type:"submit",get form(){return ue()},get disabled(){return X()},get children(){return ge()}}),null),d}})},get children(){return u(y,{get when(){return!v.isResolved()},get fallback(){return u(Br,{get rows(){return pe()},get optimistic(){return v.isOptimistic()}})},get children(){var d=lr();return d.addEventListener("submit",ce),m(d,u(L,{get each(){return g()},children:o=>u(Z,{fieldKey:o,get field(){return i().properties[o]},get required(){return(i().required??[]).includes(o)},get inlineMax(){return s()},value:()=>h[o],error:()=>S[o],get disabled(){return X()},onInput:c=>de(o,c),onBlur:()=>oe(o)})})),k(o=>{var c=ue(),p=O("flex flex-col gap-3",t.class);return c!==o.e&&j(d,"id",o.e=c),p!==o.t&&T(d,o.t=p),o},{e:void 0,t:void 0}),d}})}})}})}})}})}let Cr=0;const qr=`kai-form-${++Cr}`;function ue(){return qr}function Br(e){return(()=>{var r=sr(),t=r.firstChild,n=t.firstChild,l=t.nextSibling;return m(t,u(Ce,{size:16,"aria-hidden":"true"}),n),m(l,u(L,{get each(){return e.rows},children:a=>[(()=>{var i=dr();return m(i,()=>a.label),i})(),(()=>{var i=or();return m(i,()=>a.value),i})()]})),k(()=>j(r,"role",e.optimistic?"status":void 0)),r})()}function Z(e){const r=`f-${e.fieldKey}-${Math.random().toString(36).slice(2,8)}`,t=`${r}-err`,n=`${r}-desc`,l=()=>e.field.title??Y(e.fieldKey),a=E(()=>kr(e.field,e.inlineMax)),i=()=>e.field["x-kai-placeholder"],s=()=>[e.field.description?n:"",e.error()?t:""].filter(Boolean).join(" ")||void 0,g=()=>({id:r,value:e.value(),field:e.field,disabled:e.disabled||e.field.readOnly===!0,placeholder:i(),required:e.required,invalid:!!e.error(),describedBy:s(),label:l(),onInput:e.onInput,onBlur:e.onBlur}),v=()=>["fieldset","repeater","checkbox-group","multiselect","radio","taglist"].includes(a());return(()=>{var h=pr();return m(h,u(y,{get when(){return!v()},get children(){var f=mr();return j(f,"for",r),m(f,l,null),m(f,u(y,{get when(){return e.required},get children(){return cr()}}),null),f}}),null),m(h,u(y,{get when(){return e.field.description},get children(){var f=gr();return j(f,"id",n),m(f,()=>e.field.description),f}}),null),m(h,u(Mr,{get widget(){return a()},get common(){return g()},get fieldKey(){return e.fieldKey}}),null),m(h,u(y,{get when(){return e.error()},get children(){var f=fr();return j(f,"id",t),m(f,()=>e.error()),f}}),null),k(()=>j(h,"data-field",e.fieldKey)),h})()}function Mr(e){const r=()=>e.widget,t=()=>e.common;return[u(y,{get when(){return r()==="text"||r()==="email"||r()==="url"||r()==="date"||r()==="datetime"||r()==="time"||r()==="password"},get children(){return u(Ge,x(t,{get variant(){return r()}}))}}),u(y,{get when(){return r()==="textarea"},get children(){return u(He,x(t))}}),u(y,{get when(){return r()==="number"},get children(){return u(Pe,x(t))}}),u(y,{get when(){return r()==="slider"},get children(){return u(Qe,x(t))}}),u(y,{get when(){return r()==="rating"},get children(){return u(We,x(t))}}),u(y,{get when(){return r()==="switch"},get children(){return u(Xe,x(t))}}),u(y,{get when(){return r()==="checkbox"},get children(){return u(er,x(t))}}),u(y,{get when(){return r()==="radio"},get children(){return u(rr,x(t))}}),u(y,{get when(){return r()==="select"},get children(){return u(tr,x(t))}}),u(y,{get when(){return r()==="checkbox-group"},get children(){return u(nr,x(t))}}),u(y,{get when(){return r()==="multiselect"},get children(){return u(ir,x(t))}}),u(y,{get when(){return r()==="taglist"},get children(){return u(ar,x(t))}}),u(y,{get when(){return r()==="repeater"},get children(){return u(Nr,x(t,{inlineMax:U}))}}),u(y,{get when(){return r()==="fieldset"},get children(){return u(Er,x(t,{inlineMax:U}))}}),u(y,{get when(){return r()==="unsupported"},get children(){var n=hr(),l=n.firstChild,a=l.nextSibling;return a.nextSibling,m(n,()=>e.fieldKey,a),n}})]}function Er(e){const r=()=>e.field.properties??{},t=()=>e.value&&typeof e.value=="object"?e.value:{},n=(l,a)=>{e.onInput({...t(),[l]:a})};return(()=>{var l=vr(),a=l.firstChild;return m(a,()=>e.label),m(l,u(L,{get each(){return Object.keys(r())},children:i=>u(Z,{fieldKey:i,get field(){return r()[i]},get required(){return(e.field.required??[]).includes(i)},get inlineMax(){return e.inlineMax},value:()=>t()[i],error:()=>{},get disabled(){return e.disabled},onInput:s=>n(i,s),get onBlur(){return e.onBlur}})}),null),l})()}function Nr(e){const r=()=>e.field.items??{type:"object",properties:{}},t=()=>Array.isArray(e.value)?e.value:[],n=s=>e.onInput(s),l=()=>n([...t(),{}]),a=s=>n(t().filter((g,v)=>v!==s)),i=(s,g,v)=>{const h=t().slice();h[s]={...h[s],[g]:v},n(h)};return(()=>{var s=br(),g=s.firstChild;return m(g,()=>e.label),m(s,u(we,{get each(){return t()},children:(v,h)=>(()=>{var f=xr(),S=f.firstChild,w=S.firstChild;return w.firstChild,m(w,h+1,null),m(S,u(N,{type:"button",size:"icon-sm",variant:"ghost","aria-label":`Remove row ${h+1}`,get disabled(){return e.disabled},onClick:()=>a(h),children:"\u2715"}),null),m(f,u(L,{get each(){return Object.keys(r().properties??{})},children:I=>u(Z,{fieldKey:I,get field(){return r().properties[I]},get required(){return(r().required??[]).includes(I)},get inlineMax(){return e.inlineMax},value:()=>{var M;return(M=v())==null?void 0:M[I]},error:()=>{},get disabled(){return e.disabled},onInput:M=>i(h,I,M),get onBlur(){return e.onBlur}})}),null),f})()}),null),m(s,u(N,{type:"button",variant:"outline",size:"sm",get disabled(){return e.disabled},onClick:l,children:"Add item"}),null),s})()}function Rr(e){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&")}export{Or as F,re as v};
@@ -0,0 +1 @@
1
+ import{s as F,g as w,l as u,o as G,k as C,x as S,c as a,i as n,S as g,a as h,d as p,b as z,t as o,e as H}from"./define-B_tXMYRm.js";import{c as D}from"./cn-CU7UAWzk.js";import{S as b}from"./skeleton-N8BuWYmf.js";import{d as J,i as K}from"./link-preview-DNILK391.js";import{l as L}from"./link-BdsfLB7b.js";var M=o('<div class="space-y-2 p-3">'),P=o('<img role=img class="aspect-[16/9] w-full object-cover">'),Q=o('<img alt class="h-3.5 w-3.5 shrink-0 rounded-sm">'),R=o('<div class="line-clamp-3 text-xs text-muted-foreground">'),T=o('<div class="space-y-1 p-3"><div class="flex items-center gap-1.5 text-xs text-muted-foreground"><span class=truncate></span></div><div class="line-clamp-2 text-sm font-semibold text-foreground">'),U=o('<a rel="noopener noreferrer">'),V=o('<div role=img aria-label="Invalid link"><span class=truncate>Invalid link');function W(v){return!!(v.title||v.description||v.image)}function X(v){const[i]=F(v,["cardId","data","onEmit","class"]),k=r=>{var e;return(e=i.onEmit)==null?void 0:e.call(i,r)},[j,_]=w(),[I,Y]=w(!1),[A,y]=w(!1),c=()=>i.data.url,f=u(()=>K(c())),s=u(()=>({...i.data,...j()}));G(()=>k({kind:"ready",cardId:i.cardId})),C(S(f,r=>{r||k({kind:"error",cardId:i.cardId,message:`Invalid link url: ${c()}`})})),C(S(()=>[i.data,f()],([r,e])=>{y(!1),!e||W(r)}));const x=u(()=>s().domain??J(c())??c()),N=u(()=>s().siteName??x()),$=u(()=>s().title??x()),O=u(()=>!!s().image&&!A()),E=()=>{f()&&k({kind:"open",cardId:i.cardId,url:c(),target:"tab"})},q=r=>{r.preventDefault(),E()},B=r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),E())};return a(g,{get when(){return f()},get fallback(){return(()=>{var r=V(),e=r.firstChild;return n(r,a(L,{size:16,"aria-hidden":"true"}),e),h(()=>z(r,D("flex items-center gap-2 rounded-xl border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive dark:border-red-400/50 dark:bg-destructive/20 dark:text-red-400",i.class))),r})()},get children(){var r=U();return r.$$keydown=B,r.$$click=q,n(r,a(g,{get when(){return I()},get children(){return[a(b,{class:"aspect-[16/9] w-full rounded-none"}),(()=>{var e=M();return n(e,a(b,{class:"h-3 w-1/3"}),null),n(e,a(b,{class:"h-4 w-2/3"}),null),n(e,a(b,{class:"h-3 w-full"}),null),e})()]}}),null),n(r,a(g,{get when(){return!I()},get children(){return[a(g,{get when(){return O()},get children(){var e=P();return e.addEventListener("error",()=>y(!0)),h(t=>{var d=s().image,l=s().imageAlt??"";return d!==t.e&&p(e,"src",t.e=d),l!==t.t&&p(e,"alt",t.t=l),t},{e:void 0,t:void 0}),e}}),(()=>{var e=T(),t=e.firstChild,d=t.firstChild,l=t.nextSibling;return n(t,a(g,{get when(){return s().favicon},get fallback(){return a(L,{size:12,class:"shrink-0 opacity-70","aria-hidden":"true"})},get children(){var m=Q();return h(()=>p(m,"src",s().favicon)),m}}),d),n(d,N),n(l,$),n(e,a(g,{get when(){return s().description},get children(){var m=R();return n(m,()=>s().description),m}}),null),e})()]}}),null),h(e=>{var t=c(),d=`Open ${$()} on ${x()}`,l=D("group block overflow-hidden rounded-xl border border-border bg-card text-card-foreground no-underline outline-none transition-shadow","cursor-pointer hover:shadow-md focus-visible:ring-2 focus-visible:ring-ring",i.class);return t!==e.e&&p(r,"href",e.e=t),d!==e.t&&p(r,"aria-label",e.t=d),l!==e.a&&z(r,e.a=l),e},{e:void 0,t:void 0,a:void 0}),r}})}H(["click","keydown"]);export{X as L};
@@ -0,0 +1 @@
1
+ function n(t){try{return new URL(t).hostname.replace(/^www\./,"")}catch{return}}const r=["http:","https:"];function e(t){try{return r.includes(new URL(t).protocol)}catch{return!1}}export{n as d,e as i};