@jogak/ui 0.1.0-alpha.7.1 → 0.1.0-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),l=require("react"),C=require("@jogak/core"),h=require("@jogak/react"),$=require("prism-react-renderer"),Q=require("react-dom");function B(a){var e,t,r="";if(typeof a=="string"||typeof a=="number")r+=a;else if(typeof a=="object")if(Array.isArray(a)){var s=a.length;for(e=0;e<s;e++)a[e]&&(t=B(a[e]))&&(r&&(r+=" "),r+=t)}else for(t in a)a[t]&&(r&&(r+=" "),r+=t);return r}function w(){for(var a,e,t=0,r="",s=arguments.length;t<s;t++)(a=arguments[t])&&(e=B(a))&&(r&&(r+=" "),r+=e);return r}function W({selectedEntryId:a,selectedJogakName:e,onSelect:t}){const[r,s]=l.useState(""),{metaTree:n,searchMeta:g}=h.useRegistryMeta(),j=r.trim().length>0?g(r):null;return o.jsxs("aside",{"data-testid":"sidebar",className:"jogak:flex jogak:flex-col jogak:h-full jogak:overflow-auto jogak:border-r jogak:border-[var(--jogak-color-border)]",children:[o.jsx("div",{className:"jogak:p-3 jogak:border-b jogak:border-[var(--jogak-color-border)]",children:o.jsx("input",{type:"search",placeholder:"Search components...",value:r,onChange:c=>{s(c.target.value)},className:"jogak:w-full jogak:px-2 jogak:py-1.5 jogak:border jogak:border-[var(--jogak-color-border-strong)] jogak:rounded-[var(--jogak-radius-md)]","aria-label":"Search components"})}),o.jsx("nav",{className:"jogak:flex-1 jogak:overflow-auto jogak:py-2",children:j!==null?o.jsx(X,{metas:j,selectedEntryId:a,selectedJogakName:e,onSelect:t}):o.jsx(z,{node:n,selectedEntryId:a,selectedJogakName:e,onSelect:t})})]})}function X({metas:a,selectedEntryId:e,selectedJogakName:t,onSelect:r}){return a.length===0?o.jsx("p",{className:"jogak:px-3 jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px]",children:"No results"}):o.jsx("ul",{className:"jogak:list-none jogak:m-0 jogak:p-0",children:a.map(s=>o.jsx("li",{children:o.jsx(D,{meta:s,selectedEntryId:e,selectedJogakName:t,onSelect:r,indent:0})},s.id))})}function z({node:a,selectedEntryId:e,selectedJogakName:t,onSelect:r,depth:s=0}){return o.jsx("ul",{className:"jogak:list-none jogak:m-0 jogak:pr-0 jogak:py-0 jogak:pl-[var(--jogak-tree-pl)]",style:{"--jogak-tree-pl":`${s*12}px`},children:Object.entries(a).map(([n,g])=>o.jsx("li",{children:"id"in g?o.jsx(D,{meta:g,selectedEntryId:e,selectedJogakName:t,onSelect:r,indent:0}):o.jsx(Y,{label:n,node:g,selectedEntryId:e,selectedJogakName:t,onSelect:r,depth:s+1})},n))})}function Y({label:a,node:e,selectedEntryId:t,selectedJogakName:r,onSelect:s,depth:n}){const[g,j]=l.useState(!0);return o.jsxs("div",{children:[o.jsxs("button",{type:"button",onClick:()=>{j(c=>!c)},className:"jogak:flex jogak:items-center jogak:gap-1 jogak:w-full jogak:px-3 jogak:py-1 jogak:bg-transparent jogak:border-none jogak:cursor-pointer jogak:text-[12px] jogak:font-semibold jogak:text-[var(--jogak-color-fg-muted)] jogak:uppercase jogak:tracking-wider","aria-expanded":g,children:[o.jsx("span",{children:g?"▾":"▸"}),a]}),g&&o.jsx(z,{node:e,selectedEntryId:t,selectedJogakName:r,onSelect:s,depth:n})]})}function D({meta:a,selectedEntryId:e,selectedJogakName:t,onSelect:r,indent:s}){const n=a.id===e,[g,j]=l.useState(n);l.useEffect(()=>{n&&j(!0)},[n]);const c=a.title.split("/").pop()??a.title,d=16+s*12;return o.jsxs("div",{children:[o.jsxs("button",{type:"button",onClick:()=>{if(n)j(k=>!k);else{j(!0);const k=a.jogakNames[0];k!==void 0&&r(a.id,k)}},className:w("jogak:flex jogak:items-center jogak:gap-1.5 jogak:w-full jogak:pr-3 jogak:py-[5px]","jogak:pl-[var(--jogak-entry-pl)]","jogak:border-none jogak:cursor-pointer jogak:text-left jogak:text-[13px]",n?"jogak:bg-[var(--jogak-color-accent-bg)] jogak:text-[var(--jogak-color-accent)] jogak:font-medium":"jogak:bg-transparent jogak:text-[var(--jogak-color-fg)] jogak:font-normal"),style:{"--jogak-entry-pl":`${d}px`},"aria-expanded":g,children:[o.jsx("span",{className:"jogak:text-[10px] jogak:shrink-0 jogak:leading-none",children:g?"▾":"▸"}),c]}),g&&o.jsx("ul",{className:"jogak:list-none jogak:m-0 jogak:p-0",children:a.jogakNames.map(k=>{const i=n&&k===t;return o.jsx("li",{children:o.jsx("button",{type:"button",onClick:()=>{r(a.id,k)},className:w("jogak:block jogak:w-full jogak:text-left jogak:pr-3 jogak:py-1","jogak:pl-[var(--jogak-jogak-pl)]","jogak:border-none jogak:cursor-pointer jogak:text-[12px]",i?"jogak:bg-[var(--jogak-color-accent-bg-soft)] jogak:text-[var(--jogak-color-accent-fg)] jogak:font-medium":"jogak:bg-transparent jogak:text-[var(--jogak-color-fg-muted)] jogak:font-normal"),style:{"--jogak-jogak-pl":`${d+18}px`},"aria-current":i?"true":void 0,children:k})},k)})})]})}function Z(a,e){const t=e==null?void 0:e.control,r=(e==null?void 0:e.action)!==void 0&&e.action!==!1,s=(e==null?void 0:e.type)==="function"||typeof a=="function";return r||s?"action":t==="boolean"||typeof a=="boolean"?"boolean":t==="number"||t==="range"||typeof a=="number"?"number":t==="select"||t==="radio"||(e==null?void 0:e.options)!==void 0&&e.options.length>0?"select":t==="text"||t==="color"||typeof a=="string"?"text":"json"}const A="jogak:px-2 jogak:py-1 jogak:border jogak:border-[var(--jogak-color-border-strong)] jogak:rounded-[var(--jogak-radius-md)] jogak:text-[13px] jogak:w-full jogak:max-w-[280px]",_="jogak:px-5 jogak:py-1.5 jogak:text-left jogak:text-[var(--jogak-color-fg-muted)] jogak:font-medium jogak:text-[12px] jogak:border-b jogak:border-[var(--jogak-color-border)]",E="jogak:px-5 jogak:py-2 jogak:align-middle jogak:border-b jogak:border-[var(--jogak-color-border-muted)]";function K({argKey:a,value:e,argType:t,onArgChange:r}){switch(Z(e,t)){case"boolean":return o.jsx("input",{type:"checkbox",checked:e===!0,onChange:n=>{r(a,n.target.checked)},className:"jogak:cursor-pointer jogak:w-4 jogak:h-4 jogak:accent-[var(--jogak-color-accent)]"});case"number":return o.jsx("input",{type:"number",value:typeof e=="number"?e:"",onChange:n=>{r(a,n.target.valueAsNumber)},className:A});case"select":{const n=(t==null?void 0:t.options)??[];return o.jsx("select",{value:String(e??""),onChange:g=>{r(a,g.target.value)},className:A,children:n.map(g=>o.jsx("option",{value:String(g),children:String(g)},String(g)))})}case"text":return o.jsx("input",{type:"text",value:typeof e=="string"?e:String(e??""),onChange:n=>{r(a,n.target.value)},className:A});case"action":return o.jsx("span",{className:"jogak:inline-block jogak:px-2 jogak:py-0.5 jogak:text-[11px] jogak:font-semibold jogak:text-[var(--jogak-color-violet)] jogak:bg-[var(--jogak-color-violet-bg)] jogak:border jogak:border-[var(--jogak-color-violet-border)] jogak:rounded-[var(--jogak-radius-md)] jogak:font-[family-name:var(--jogak-font-mono)] jogak:leading-none",children:"(action)"});case"json":return o.jsx("code",{className:"jogak:text-[12px] jogak:text-[var(--jogak-color-fg-muted)] jogak:font-[family-name:var(--jogak-font-mono)]",children:JSON.stringify(e)})}}function F({args:a,argTypes:e,onArgChange:t}){const s=Array.from(new Set([...Object.keys(a),...Object.keys(e)])).map(n=>[n,a[n]]);return o.jsxs("div",{className:"jogak:border-t-2 jogak:border-[var(--jogak-color-border)]",children:[o.jsx("div",{className:"jogak:px-5 jogak:py-1.5 jogak:text-[11px] jogak:font-bold jogak:text-[var(--jogak-color-fg-subtle)] jogak:uppercase jogak:tracking-[0.08em] jogak:border-b jogak:border-[var(--jogak-color-border)] jogak:bg-[var(--jogak-color-bg-subtle)]",children:"Controls"}),s.length===0?o.jsx("div",{className:"jogak:px-5 jogak:py-3 jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px]",children:"No args defined"}):o.jsxs("table",{className:"jogak:w-full jogak:border-collapse jogak:text-[13px]",children:[o.jsx("thead",{children:o.jsxs("tr",{children:[o.jsx("th",{className:_,children:"Name"}),o.jsx("th",{className:_,children:"Control"}),o.jsx("th",{className:_,children:"Description"})]})}),o.jsx("tbody",{children:s.map(([n,g])=>{const j=e[n];return o.jsxs("tr",{children:[o.jsx("td",{className:w(E,"jogak:font-[family-name:var(--jogak-font-mono)] jogak:text-[12px] jogak:text-[var(--jogak-color-fg)] jogak:whitespace-nowrap"),children:n}),o.jsx("td",{className:E,children:o.jsx(K,{argKey:n,value:g,argType:j,onArgChange:t})}),o.jsx("td",{className:w(E,"jogak:text-[var(--jogak-color-fg-subtle)]"),children:(j==null?void 0:j.description)??""})]},n)})})]})]})}function T(a){if(a.length===0)return"()";try{return a.map(e=>{var t;if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="function")return"[Function]";if(typeof e=="object"){const r=((t=e.constructor)==null?void 0:t.name)??"Object";return r!=="Object"&&r!=="Array"?`[${r}]`:JSON.stringify(e)}return JSON.stringify(e)}).join(", ")}catch{return"[unserializable]"}}function oo(a){const e=new Date(a),t=e.getHours().toString().padStart(2,"0"),r=e.getMinutes().toString().padStart(2,"0"),s=e.getSeconds().toString().padStart(2,"0"),n=e.getMilliseconds().toString().padStart(3,"0");return`${t}:${r}:${s}.${n}`}function H(){const[a,e]=l.useState(()=>C.defaultActionChannel.getLogs());l.useEffect(()=>C.defaultActionChannel.subscribe(e),[]);const t=a.length===0;return o.jsxs("div",{className:"jogak:h-full jogak:flex jogak:flex-col",children:[o.jsxs("div",{className:"jogak:px-5 jogak:py-1.5 jogak:text-[11px] jogak:font-bold jogak:text-[var(--jogak-color-fg-subtle)] jogak:uppercase jogak:tracking-[0.08em] jogak:border-b jogak:border-[var(--jogak-color-border)] jogak:bg-[var(--jogak-color-bg-subtle)] jogak:flex jogak:items-center jogak:justify-between jogak:shrink-0",children:[o.jsxs("span",{children:["Actions ",a.length>0&&`(${a.length.toString()})`]}),o.jsx("button",{type:"button",onClick:()=>{C.defaultActionChannel.clear()},disabled:t,className:w("jogak:text-[10px] jogak:font-semibold jogak:px-2 jogak:py-0.5 jogak:border jogak:border-[var(--jogak-color-border-strong)] jogak:rounded-[var(--jogak-radius-sm)] jogak:bg-[var(--jogak-color-bg)] jogak:normal-case jogak:tracking-normal",t?"jogak:text-[var(--jogak-color-fg-subtle)] jogak:cursor-default":"jogak:text-[var(--jogak-color-fg)] jogak:cursor-pointer"),children:"Clear"})]}),o.jsx("div",{className:"jogak:flex-1 jogak:overflow-auto",children:t?o.jsx("div",{className:"jogak:px-5 jogak:py-3 jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px] jogak:leading-none",children:"함수 prop이 호출되면 여기에 기록됩니다"}):o.jsx("ul",{className:"jogak:list-none jogak:m-0 jogak:p-0 jogak:font-[family-name:var(--jogak-font-mono)] jogak:text-[12px]",children:a.map(r=>o.jsxs("li",{className:"jogak:flex jogak:items-baseline jogak:gap-[10px] jogak:px-5 jogak:py-1.5 jogak:border-b jogak:border-[var(--jogak-color-border-muted)]",children:[o.jsx("span",{className:"jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[11px] jogak:min-w-[92px]",children:oo(r.timestamp)}),o.jsx("span",{className:"jogak:text-[var(--jogak-color-violet)] jogak:font-semibold",children:r.name}),o.jsxs("span",{className:"jogak:text-[var(--jogak-color-fg)] jogak:break-all jogak:flex-1",children:["(",T(r.args),")"]})]},r.id))})})]})}function ao({children:a,className:e,style:t,"data-testid":r}){const s=l.useRef(null),[n,g]=l.useState(null);return l.useEffect(()=>{const j=s.current;if(j===null)return;const c=j.shadowRoot??j.attachShadow({mode:"open"});g(c)},[]),o.jsx("div",{ref:s,className:e,"data-testid":r,style:t,children:n!==null?Q.createPortal(a,n):null})}function eo({entry:a,args:e,userPreviewUrl:t,previewEntryPath:r,className:s,"data-testid":n}){const g=l.useRef(null),[j,c]=l.useState(!1),d=t!==""?`${t}${r}`:"/preview-frame.html";return l.useEffect(()=>{const k=i=>{const m=g.current;if(m===null||i.source!==m.contentWindow)return;const x=i.data;x==null||typeof x!="object"||x.type==="jogak:ready"&&c(!0)};return window.addEventListener("message",k),()=>{window.removeEventListener("message",k)}},[]),l.useEffect(()=>{var i;if(!j)return;const k=g.current;k!==null&&((i=k.contentWindow)==null||i.postMessage({type:"jogak:setProps",entryId:a.id,args:e},"*"))},[j,a,e]),l.useEffect(()=>{const k=g.current;return()=>{k!==null&&queueMicrotask(()=>{var i;(i=k.contentWindow)==null||i.postMessage({type:"jogak:unmount"},"*")})}},[]),o.jsx("iframe",{ref:g,src:d,title:"Preview",className:s,"data-testid":n})}const U={mobile:375,tablet:768,desktop:"none"},to={mobile:"Mobile",tablet:"Tablet",desktop:"Desktop"},O={white:{"--jogak-canvas-bg":"#ffffff","--jogak-canvas-bg-image":"none","--jogak-canvas-bg-size":"auto","--jogak-canvas-bg-position":"0 0"},dark:{"--jogak-canvas-bg":"#1f2937","--jogak-canvas-bg-image":"none","--jogak-canvas-bg-size":"auto","--jogak-canvas-bg-position":"0 0"},transparent:{"--jogak-canvas-bg":"#ffffff","--jogak-canvas-bg-image":"linear-gradient(45deg, #e2e8f0 25%, transparent 25%), linear-gradient(-45deg, #e2e8f0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e2e8f0 75%), linear-gradient(-45deg, transparent 75%, #e2e8f0 75%)","--jogak-canvas-bg-size":"16px 16px","--jogak-canvas-bg-position":"0 0, 0 8px, 8px -8px, -8px 0px"}},L="jogak:bg-[var(--jogak-canvas-bg)] jogak:bg-[image:var(--jogak-canvas-bg-image)] jogak:bg-[length:var(--jogak-canvas-bg-size)] jogak:bg-[position:var(--jogak-canvas-bg-position)]";function ro(a){return $.themes[a]??$.themes.vsDark}function G({entryId:a,jogakName:e,overrideArgs:t,onArgChange:r,onReset:s,codeTheme:n,onResolveJogak:g,previewIsolation:j="iframe",userPreviewUrl:c="",previewEntryPath:d="/__jogak_preview__/index.html"}){const k=h.useEntry(a),[i,m]=l.useState("desktop"),[x,y]=l.useState("white"),[N,b]=l.useState("controls"),v=ro(n);return k.status==="unknown"?o.jsxs("div",{"data-testid":"preview-not-found",className:"jogak:p-6 jogak:text-[var(--jogak-color-error)]",children:["Entry not found: ",a]}):k.status==="error"?o.jsxs("div",{"data-testid":"preview-error",className:"jogak:p-6 jogak:text-[var(--jogak-color-error-fg)] jogak:bg-[var(--jogak-color-bg-error)] jogak:h-full jogak:flex jogak:flex-col jogak:gap-3 jogak:items-start",children:[o.jsxs("div",{className:"jogak:font-semibold",children:["Failed to load entry: ",a]}),o.jsx("pre",{className:"jogak:m-0 jogak:p-3 jogak:bg-[var(--jogak-color-bg)] jogak:border jogak:border-[var(--jogak-color-error-border)] jogak:rounded-[var(--jogak-radius-lg)] jogak:text-[12px] jogak:whitespace-pre-wrap jogak:max-w-full",children:k.error.message})]}):k.status==="loading"?o.jsx(no,{meta:k.meta,jogakName:e,viewport:i,bgMode:x,onViewportChange:m,onBgModeChange:y}):o.jsx(so,{entry:k.entry,jogakName:e,overrideArgs:t,onArgChange:r,onReset:s,onResolveJogak:g,viewport:i,bgMode:x,bottomTab:N,onViewportChange:m,onBgModeChange:y,onBottomTabChange:b,prismTheme:v,previewIsolation:j,userPreviewUrl:c,previewEntryPath:d})}function no({meta:a,jogakName:e,viewport:t,bgMode:r,onViewportChange:s,onBgModeChange:n}){const g=e??a.jogakNames[0]??"...",j=U[t];return o.jsxs("div",{"data-testid":"preview-loading",className:"jogak:flex jogak:flex-col jogak:h-full",children:[o.jsx(I,{title:a.title,jogakName:g,viewport:t,bgMode:r,onViewportChange:s,onBgModeChange:n,showReset:!1,onReset:()=>{}}),o.jsx("div",{className:`jogak:flex-1 jogak:overflow-auto jogak:min-h-[320px] ${L}`,style:O[r],children:o.jsx("div",{className:"jogak:mx-auto jogak:p-6 jogak:max-w-[var(--jogak-canvas-mw)]",style:{"--jogak-canvas-mw":j==="none"?"100%":`${j}px`},children:o.jsxs("div",{className:"jogak-skeleton-shimmer jogak:border jogak:border-dashed jogak:border-[var(--jogak-color-border)] jogak:rounded-[var(--jogak-radius-xl)] jogak:p-4 jogak:flex jogak:items-center jogak:justify-center jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px] jogak:min-h-[256px]",children:["Loading ",a.title,"…"]})})})]})}function so({entry:a,jogakName:e,overrideArgs:t,onArgChange:r,onReset:s,onResolveJogak:n,viewport:g,bgMode:j,bottomTab:c,onViewportChange:d,onBgModeChange:k,onBottomTabChange:i,prismTheme:m,previewIsolation:x,userPreviewUrl:y,previewEntryPath:N}){var J;const b=e??((J=a.jogaks[0])==null?void 0:J.name)??null;if(l.useEffect(()=>{e===null&&b!==null&&n!==void 0&&n(a.id,b)},[e,b,a.id,n]),b===null)return o.jsxs("div",{className:"jogak:p-6 jogak:text-[var(--jogak-color-error)]",children:["Entry has no jogaks: ",a.id]});const v=a.jogaks.find(S=>S.name===b);if(v===void 0)return o.jsxs("div",{className:"jogak:p-6 jogak:text-[var(--jogak-color-error)]",children:["Jogak not found: ",b]});const R={...v.args??{},...t},u={...a.meta.argTypes??{},...v.argTypes??{}},p=Object.keys(t).length>0,f=U[g];return o.jsxs("div",{className:"jogak:flex jogak:flex-col jogak:h-full",children:[o.jsx(I,{title:a.title,jogakName:v.name,viewport:g,bgMode:j,onViewportChange:d,onBgModeChange:k,showReset:p,onReset:s}),o.jsx("div",{className:`jogak:flex-1 jogak:overflow-auto jogak:min-h-[320px] ${L}`,style:O[j],children:o.jsx("div",{"data-jogak-content":!0,className:"jogak:mx-auto jogak:p-6 jogak:max-w-[var(--jogak-canvas-mw)]",style:{"--jogak-canvas-mw":f==="none"?"100%":`${f}px`},children:o.jsx(go,{entry:a,args:R,source:a.source,theme:m,previewIsolation:x,userPreviewUrl:y,previewEntryPath:N},`${a.id}/${v.name}`)})}),o.jsxs("div",{"data-testid":"bottom-panel",className:"jogak:h-[260px] jogak:shrink-0 jogak:flex jogak:flex-col jogak:border-t-2 jogak:border-[var(--jogak-color-border)]",children:[o.jsx("div",{role:"tablist",className:"jogak:flex jogak:gap-1 jogak:pt-1 jogak:px-3 jogak:pb-0 jogak:bg-[var(--jogak-color-bg)] jogak:border-b jogak:border-[var(--jogak-color-border)] jogak:shrink-0",children:["controls","actions"].map(S=>{const q=c===S;return o.jsx("button",{type:"button",role:"tab","aria-selected":q,onClick:()=>{i(S)},className:w("jogak:px-[14px] jogak:py-[6px] jogak:text-[12px] jogak:bg-transparent jogak:border-x-0 jogak:border-t-0 jogak:border-b-2 jogak:border-solid jogak:-mb-px jogak:cursor-pointer jogak:capitalize",q?"jogak:font-semibold jogak:text-[var(--jogak-color-fg-strong)] jogak:border-[var(--jogak-color-accent)]":"jogak:font-medium jogak:text-[var(--jogak-color-fg-muted)] jogak:border-transparent"),children:S},S)})}),o.jsx("div",{className:"jogak:flex-1 jogak:min-h-0 jogak:overflow-auto",children:c==="controls"?o.jsx(F,{args:R,argTypes:u,onArgChange:r}):o.jsx(H,{})})]})]})}function I({title:a,jogakName:e,viewport:t,bgMode:r,onViewportChange:s,onBgModeChange:n,showReset:g,onReset:j}){return o.jsxs("div",{className:"jogak:flex jogak:items-center jogak:gap-[10px] jogak:px-[14px] jogak:py-[7px] jogak:border-b jogak:border-[var(--jogak-color-border)] jogak:bg-[var(--jogak-color-bg)] jogak:shrink-0",children:[o.jsxs("div",{className:"jogak:flex-1 jogak:text-[13px]",children:[o.jsx("span",{className:"jogak:text-[var(--jogak-color-fg-subtle)]",children:a}),o.jsx("span",{className:"jogak:text-[var(--jogak-color-border-strong)] jogak:mx-1.5 jogak:leading-none",children:"/"}),o.jsx("span",{className:"jogak:text-[var(--jogak-color-fg-strong)] jogak:font-semibold",children:e})]}),o.jsx("div",{className:"jogak:flex jogak:gap-0.5 jogak:bg-[var(--jogak-color-bg-subtle)] jogak:rounded-[var(--jogak-radius-lg)] jogak:p-0.5",children:["mobile","tablet","desktop"].map(c=>o.jsx("button",{type:"button",onClick:()=>{s(c)},"aria-pressed":t===c,className:w("jogak:px-[9px] jogak:py-[3px] jogak:text-[12px] jogak:border-none jogak:rounded-[var(--jogak-radius-md)] jogak:cursor-pointer jogak:transition-all jogak:duration-100",t===c?"jogak:bg-[var(--jogak-color-bg-elevated)] jogak:text-[var(--jogak-color-fg-strong)] jogak:font-semibold jogak:shadow-[0_1px_2px_rgba(0,0,0,0.08)]":"jogak:bg-transparent jogak:text-[var(--jogak-color-fg-muted)] jogak:font-normal jogak:shadow-none"),children:to[c]},c))}),o.jsx("div",{className:"jogak:flex jogak:gap-1 jogak:items-center",children:["white","dark","transparent"].map(c=>o.jsx("button",{type:"button",onClick:()=>{n(c)},"aria-pressed":r===c,"aria-label":`${c} background`,className:w("jogak:w-5 jogak:h-5 jogak:rounded-[var(--jogak-radius-md)] jogak:border-2 jogak:cursor-pointer jogak:p-0 jogak:shrink-0",L,r===c?"jogak:border-[var(--jogak-color-accent)]":"jogak:border-[var(--jogak-color-border-strong)]"),style:O[c]},c))}),g&&o.jsx("button",{type:"button",onClick:j,className:"jogak:px-[10px] jogak:py-[3px] jogak:text-[12px] jogak:border jogak:border-[var(--jogak-color-border-strong)] jogak:rounded-[var(--jogak-radius-md)] jogak:bg-[var(--jogak-color-bg)] jogak:cursor-pointer jogak:text-[var(--jogak-color-fg)] jogak:leading-none",children:"Reset"})]})}function go({entry:a,args:e,source:t,theme:r,previewIsolation:s,userPreviewUrl:n,previewEntryPath:g}){const[j,c]=l.useState(!1),d=o.jsxs("div",{className:"jogak:relative",children:[o.jsx(jo,{entry:a,args:e,previewIsolation:s,userPreviewUrl:n,previewEntryPath:g}),o.jsx("button",{type:"button",onClick:()=>{c(k=>!k)},"aria-pressed":j,"aria-label":j?"Hide source code":"Show source code",className:w("jogak:absolute jogak:bottom-2 jogak:right-2 jogak:px-[9px] jogak:py-1","jogak:text-[11px] jogak:font-[family-name:var(--jogak-font-mono)] jogak:font-semibold jogak:tracking-[0.02em]","jogak:text-[var(--jogak-color-bg)] jogak:border-none jogak:rounded-[5px] jogak:cursor-pointer","jogak:shadow-[0_1px_4px_rgba(0,0,0,0.2)] jogak:transition-[background-color] jogak:duration-150 jogak:leading-none",j?"jogak:bg-[var(--jogak-color-accent)]":"jogak:bg-[#1e293b]"),children:"</>"})]});return o.jsxs("div",{children:[d,j&&o.jsx("div",{className:"jogak:mt-2 jogak:rounded-[var(--jogak-radius-xl)] jogak:overflow-hidden jogak:h-[320px] jogak:shadow-[0_0_0_1px_rgba(0,0,0,0.08),_0_4px_16px_rgba(0,0,0,0.12)]",children:o.jsx(co,{source:t,theme:r})})]})}const M="jogak:border jogak:border-dashed jogak:border-[var(--jogak-color-border)] jogak:rounded-[var(--jogak-radius-xl)] jogak:p-4 jogak:pb-9";function jo({entry:a,args:e,previewIsolation:t,userPreviewUrl:r,previewEntryPath:s}){return t==="shadow"?o.jsx(ao,{"data-testid":"preview-content",className:M,children:o.jsx(ko,{entry:a,args:e})}):t==="iframe"?o.jsx(eo,{entry:a,args:e,userPreviewUrl:r,previewEntryPath:s,"data-testid":"preview-content",className:`${M} jogak:block jogak:w-full jogak:bg-transparent jogak:min-h-[256px]`}):o.jsx(lo,{entry:a,args:e})}function lo({entry:a,args:e}){const t=l.useRef(null);return l.useEffect(()=>{const r=t.current;if(r!==null)return h.reactAdapter.render(a,e,r),()=>{queueMicrotask(()=>{h.reactAdapter.unmount(r)})}},[a]),l.useEffect(()=>{const r=t.current;r!==null&&h.reactAdapter.render(a,e,r)},[a,e]),o.jsx("div",{ref:t,"data-testid":"preview-content",className:M})}function ko({entry:a,args:e}){const t=l.useRef(null);return l.useEffect(()=>{const r=t.current;if(r!==null)return h.reactAdapter.render(a,e,r),()=>{queueMicrotask(()=>{h.reactAdapter.unmount(r)})}},[a]),l.useEffect(()=>{const r=t.current;r!==null&&h.reactAdapter.render(a,e,r)},[a,e]),o.jsx("div",{ref:t,"data-testid":"preview-content-shadow"})}function co({source:a,theme:e}){const[t,r]=l.useState(!1),s=e.plain.backgroundColor??"#1e293b";if(a===void 0)return o.jsx("div",{className:"jogak:h-full jogak:flex jogak:items-center jogak:justify-center jogak:bg-[var(--jogak-source-bg)] jogak:text-[#94a3b8] jogak:text-[13px]",style:{"--jogak-source-bg":s},children:"Source not available"});const n=()=>{navigator.clipboard.writeText(a).then(()=>{r(!0),setTimeout(()=>{r(!1)},2e3)})};return o.jsxs("div",{className:"jogak:relative jogak:h-full",children:[o.jsx("button",{type:"button",onClick:n,className:"jogak:absolute jogak:top-[10px] jogak:right-3 jogak:z-[1] jogak:px-[9px] jogak:py-[3px] jogak:text-[11px] jogak:bg-[rgba(255,255,255,0.1)] jogak:text-[#e2e8f0] jogak:border jogak:border-[rgba(255,255,255,0.18)] jogak:rounded-[var(--jogak-radius-md)] jogak:cursor-pointer jogak:leading-none",children:t?"✓ Copied":"Copy"}),o.jsx($.Highlight,{code:a.trim(),language:"tsx",theme:e,children:({style:g,tokens:j,getLineProps:c,getTokenProps:d})=>o.jsx("pre",{className:"jogak:m-0 jogak:py-3 jogak:px-0 jogak:text-[12.5px] jogak:leading-[1.7] jogak:font-[family-name:var(--jogak-font-mono)] jogak:h-full jogak:box-border jogak:overflow-auto",style:g,children:j.map((k,i)=>o.jsxs("div",{...c({line:k}),className:"jogak:flex jogak:pr-6",style:c({line:k}).style,children:[o.jsx("span",{className:"jogak:select-none jogak:min-w-10 jogak:pl-[14px] jogak:pr-[14px] jogak:text-right jogak:text-[rgba(148,163,184,0.45)] jogak:shrink-0 jogak:leading-[1.7]",children:i+1}),o.jsx("span",{children:k.map((m,x)=>o.jsx("span",{...d({token:m})},x))})]},i))})})]})}function V(){if(typeof window>"u")return null;const a=new URLSearchParams(window.location.search),e=a.get("entry");if(e===null)return null;const t=a.get("jogak");return{entryId:e,jogakName:t}}function io(a,e){const t=new URLSearchParams;t.set("entry",a),t.set("jogak",e),window.history.pushState({},"",`?${t.toString()}`)}function uo({entries:a,metas:e,codeTheme:t="vsDark",previewIsolation:r="iframe",userPreviewUrl:s="",previewEntryPath:n="/__jogak_preview__/index.html",userViteUrl:g}={}){const j=s!==""?s:g??"",c=l.useMemo(()=>{if(a!==void 0){e!==void 0&&console.warn("[jogak] JogakApp received both `entries` and `metas` — `entries` (eager) takes precedence.");const u=new C.ComponentRegistry;for(const p of a)u.register(p);return u}if(e!==void 0)for(const u of e)C.defaultRegistry.registerMeta(u);return C.defaultRegistry},[a,e]),d=l.useMemo(()=>V(),[]),[k,i]=l.useState((d==null?void 0:d.entryId)??null),[m,x]=l.useState((d==null?void 0:d.jogakName)??null),[y,N]=l.useState({});l.useEffect(()=>{const u=()=>{const p=V();p!==null?(i(p.entryId),x(p.jogakName),N({})):(i(null),x(null))};return window.addEventListener("popstate",u),()=>{window.removeEventListener("popstate",u)}},[]);const b=l.useCallback((u,p)=>{i(u),x(p),N({}),io(u,p)},[]),v=l.useCallback((u,p)=>{if(i(f=>f===u?u:f),x(f=>f??p),typeof window<"u"){const f=new URLSearchParams(window.location.search);f.get("entry")===u&&f.get("jogak")===null&&(f.set("jogak",p),window.history.replaceState({},"",`?${f.toString()}`))}},[]),P=l.useCallback((u,p)=>{N(f=>({...f,[u]:p}))},[]),R=l.useCallback(()=>{N({})},[]);return o.jsx(h.JogakProvider,{registry:c,children:o.jsxs("div",{"data-jogak-shell":!0,className:"jogak:grid jogak:grid-cols-[260px_1fr] jogak:h-dvh jogak:overflow-hidden",children:[o.jsx(W,{selectedEntryId:k,selectedJogakName:m,onSelect:b}),o.jsx("main",{className:"jogak:overflow-hidden jogak:min-h-0",children:k!==null?o.jsx(G,{entryId:k,jogakName:m,overrideArgs:y,onArgChange:P,onReset:R,codeTheme:t,onResolveJogak:v,previewIsolation:r,userPreviewUrl:j,previewEntryPath:n}):o.jsx("div",{className:"jogak:flex jogak:items-center jogak:justify-center jogak:h-full jogak:text-[var(--jogak-color-fg-subtle)]",children:"Select a component from the sidebar"})})]})})}function xo(){const a=h.useRegistry(),e=l.useMemo(()=>a.getAll(),[a]),t=l.useMemo(()=>a.getTree(),[a]),r=l.useMemo(()=>s=>a.search(s),[a]);return{entries:e,tree:t,search:r}}exports.Actions=H;exports.Controls=F;exports.JogakApp=uo;exports.Preview=G;exports.Sidebar=W;exports.useRegistry=xo;