@jogak/ui 0.1.0-alpha.10.2 → 0.1.0-alpha.10.3

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/CHANGELOG.md CHANGED
@@ -5,6 +5,35 @@ All notable changes to Jogak packages are documented here. The repository follow
5
5
 
6
6
  Version numbers apply to all packages in the workspace (synchronized release).
7
7
 
8
+ ## [0.1.0-alpha.10.3] — 2026-05-11
9
+
10
+ ### Fixed
11
+
12
+ - **`@jogak/ui` 코드 패널**: 알파.10.2까지 syntax-highlight 영역에 `.jogak.tsx` 파일 전체(meta/argTypes/exports 포함)를 노출했다. 의도된 동작은 **현재 args 기반 컴포넌트 사용 코드** 표시 — 사용자가 Controls 패널에서 args를 변경하면 코드도 즉시 갱신. `formatUsageCode(entry, args)` 추가, JogakRenderer에서 `entry.source`(파일 전체) 대신 사용 스니펫을 SourceViewer에 전달.
13
+
14
+ 변경 전:
15
+ ```tsx
16
+ import type { JogakMeta, Jogak } from '@jogak/core'
17
+ import { Badge } from './badge'
18
+
19
+ const meta = { title: 'UI/Badge', component: Badge, ... } satisfies JogakMeta
20
+ export default meta
21
+ export const Default: Jogak = { ... }
22
+ ```
23
+
24
+ 변경 후:
25
+ ```tsx
26
+ <Badge variant="default">New</Badge>
27
+ ```
28
+
29
+ - **포매터 규칙**: children은 태그 본문에, props는 attribute로. `boolean true → key`, `false → key={false}`, `string → key="value"`(escape), `number → key={n}`, `function → key={fn}`, 객체/배열 `→ key={JSON}`. 한 줄이 60자 초과 시 multi-line 자동 wrapping. 단위 테스트 11개 추가.
30
+
31
+ ### Added
32
+
33
+ - `e2e/code-panel-check.mjs` — 코드 패널이 사용 코드를 보여주는지 visual 검증 (jogak meta keyword 부재 + 컴포넌트 태그 존재).
34
+
35
+ 기타: source 변경 외 패키지는 synchronized release 유지를 위해 버전만 bump.
36
+
8
37
  ## [0.1.0-alpha.10.2] — 2026-05-09
9
38
 
10
39
  ### Fixed
@@ -0,0 +1,6 @@
1
+ import { RegistryEntry } from '@jogak/core';
2
+ /**
3
+ * `entry` + 현재 `args`로부터 JSX 사용 코드를 생성한다.
4
+ * children은 태그 본문에, 나머지 props는 attribute로.
5
+ */
6
+ export declare function formatUsageCode(entry: RegistryEntry, args: Readonly<Record<string, unknown>>): string;
package/dist/index.cjs CHANGED
@@ -1 +1,9 @@
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/core/renderers/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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),i=require("react"),C=require("@jogak/core"),h=require("@jogak/core/renderers/react"),E=require("prism-react-renderer"),X=require("react-dom");function B(o){var e,t,r="";if(typeof o=="string"||typeof o=="number")r+=o;else if(typeof o=="object")if(Array.isArray(o)){var g=o.length;for(e=0;e<g;e++)o[e]&&(t=B(o[e]))&&(r&&(r+=" "),r+=t)}else for(t in o)o[t]&&(r&&(r+=" "),r+=t);return r}function w(){for(var o,e,t=0,r="",g=arguments.length;t<g;t++)(o=arguments[t])&&(e=B(o))&&(r&&(r+=" "),r+=e);return r}function W({selectedEntryId:o,selectedJogakName:e,onSelect:t}){const[r,g]=i.useState(""),{metaTree:n,searchMeta:s}=h.useRegistryMeta(),l=r.trim().length>0?s(r):null;return a.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:[a.jsx("div",{className:"jogak:p-3 jogak:border-b jogak:border-[var(--jogak-color-border)]",children:a.jsx("input",{type:"search",placeholder:"Search components...",value:r,onChange:c=>{g(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"})}),a.jsx("nav",{className:"jogak:flex-1 jogak:overflow-auto jogak:py-2",children:l!==null?a.jsx(Y,{metas:l,selectedEntryId:o,selectedJogakName:e,onSelect:t}):a.jsx(D,{node:n,selectedEntryId:o,selectedJogakName:e,onSelect:t})})]})}function Y({metas:o,selectedEntryId:e,selectedJogakName:t,onSelect:r}){return o.length===0?a.jsx("p",{className:"jogak:px-3 jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px]",children:"No results"}):a.jsx("ul",{className:"jogak:list-none jogak:m-0 jogak:p-0",children:o.map(g=>a.jsx("li",{children:a.jsx(z,{meta:g,selectedEntryId:e,selectedJogakName:t,onSelect:r,indent:0})},g.id))})}function D({node:o,selectedEntryId:e,selectedJogakName:t,onSelect:r,depth:g=0}){return a.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":`${g*12}px`},children:Object.entries(o).map(([n,s])=>a.jsx("li",{children:"id"in s?a.jsx(z,{meta:s,selectedEntryId:e,selectedJogakName:t,onSelect:r,indent:0}):a.jsx(Z,{label:n,node:s,selectedEntryId:e,selectedJogakName:t,onSelect:r,depth:g+1})},n))})}function Z({label:o,node:e,selectedEntryId:t,selectedJogakName:r,onSelect:g,depth:n}){const[s,l]=i.useState(!0);return a.jsxs("div",{children:[a.jsxs("button",{type:"button",onClick:()=>{l(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":s,children:[a.jsx("span",{children:s?"▾":"▸"}),o]}),s&&a.jsx(D,{node:e,selectedEntryId:t,selectedJogakName:r,onSelect:g,depth:n})]})}function z({meta:o,selectedEntryId:e,selectedJogakName:t,onSelect:r,indent:g}){const n=o.id===e,[s,l]=i.useState(n);i.useEffect(()=>{n&&l(!0)},[n]);const c=o.title.split("/").pop()??o.title,d=16+g*12;return a.jsxs("div",{children:[a.jsxs("button",{type:"button",onClick:()=>{if(n)l(j=>!j);else{l(!0);const j=o.jogakNames[0];j!==void 0&&r(o.id,j)}},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":s,children:[a.jsx("span",{className:"jogak:text-[10px] jogak:shrink-0 jogak:leading-none",children:s?"▾":"▸"}),c]}),s&&a.jsx("ul",{className:"jogak:list-none jogak:m-0 jogak:p-0",children:o.jogakNames.map(j=>{const k=n&&j===t;return a.jsx("li",{children:a.jsx("button",{type:"button",onClick:()=>{r(o.id,j)},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]",k?"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":k?"true":void 0,children:j})},j)})})]})}function K(o,e){const t=e==null?void 0:e.control,r=(e==null?void 0:e.action)!==void 0&&e.action!==!1,g=(e==null?void 0:e.type)==="function"||typeof o=="function";return r||g?"action":t==="boolean"||typeof o=="boolean"?"boolean":t==="number"||t==="range"||typeof o=="number"?"number":t==="select"||t==="radio"||(e==null?void 0:e.options)!==void 0&&e.options.length>0?"select":t==="text"||t==="color"||typeof o=="string"?"text":"json"}const R="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]",A="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)]",_="jogak:px-5 jogak:py-2 jogak:align-middle jogak:border-b jogak:border-[var(--jogak-color-border-muted)]";function T({argKey:o,value:e,argType:t,onArgChange:r}){switch(K(e,t)){case"boolean":return a.jsx("input",{type:"checkbox",checked:e===!0,onChange:n=>{r(o,n.target.checked)},className:"jogak:cursor-pointer jogak:w-4 jogak:h-4 jogak:accent-[var(--jogak-color-accent)]"});case"number":return a.jsx("input",{type:"number",value:typeof e=="number"?e:"",onChange:n=>{r(o,n.target.valueAsNumber)},className:R});case"select":{const n=(t==null?void 0:t.options)??[];return a.jsx("select",{value:String(e??""),onChange:s=>{r(o,s.target.value)},className:R,children:n.map(s=>a.jsx("option",{value:String(s),children:String(s)},String(s)))})}case"text":return a.jsx("input",{type:"text",value:typeof e=="string"?e:String(e??""),onChange:n=>{r(o,n.target.value)},className:R});case"action":return a.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 a.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 H({args:o,argTypes:e,onArgChange:t}){const g=Array.from(new Set([...Object.keys(o),...Object.keys(e)])).map(n=>[n,o[n]]);return a.jsxs("div",{className:"jogak:border-t-2 jogak:border-[var(--jogak-color-border)]",children:[a.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"}),g.length===0?a.jsx("div",{className:"jogak:px-5 jogak:py-3 jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px]",children:"No args defined"}):a.jsxs("table",{className:"jogak:w-full jogak:border-collapse jogak:text-[13px]",children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{className:A,children:"Name"}),a.jsx("th",{className:A,children:"Control"}),a.jsx("th",{className:A,children:"Description"})]})}),a.jsx("tbody",{children:g.map(([n,s])=>{const l=e[n];return a.jsxs("tr",{children:[a.jsx("td",{className:w(_,"jogak:font-[family-name:var(--jogak-font-mono)] jogak:text-[12px] jogak:text-[var(--jogak-color-fg)] jogak:whitespace-nowrap"),children:n}),a.jsx("td",{className:_,children:a.jsx(T,{argKey:n,value:s,argType:l,onArgChange:t})}),a.jsx("td",{className:w(_,"jogak:text-[var(--jogak-color-fg-subtle)]"),children:(l==null?void 0:l.description)??""})]},n)})})]})]})}function oo(o){if(o.length===0)return"()";try{return o.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 eo(o){const e=new Date(o),t=e.getHours().toString().padStart(2,"0"),r=e.getMinutes().toString().padStart(2,"0"),g=e.getSeconds().toString().padStart(2,"0"),n=e.getMilliseconds().toString().padStart(3,"0");return`${t}:${r}:${g}.${n}`}function F(){const[o,e]=i.useState(()=>C.defaultActionChannel.getLogs());i.useEffect(()=>C.defaultActionChannel.subscribe(e),[]);const t=o.length===0;return a.jsxs("div",{className:"jogak:h-full jogak:flex jogak:flex-col",children:[a.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:[a.jsxs("span",{children:["Actions ",o.length>0&&`(${o.length.toString()})`]}),a.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"})]}),a.jsx("div",{className:"jogak:flex-1 jogak:overflow-auto",children:t?a.jsx("div",{className:"jogak:px-5 jogak:py-3 jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px] jogak:leading-none",children:"함수 prop이 호출되면 여기에 기록됩니다"}):a.jsx("ul",{className:"jogak:list-none jogak:m-0 jogak:p-0 jogak:font-[family-name:var(--jogak-font-mono)] jogak:text-[12px]",children:o.map(r=>a.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:[a.jsx("span",{className:"jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[11px] jogak:min-w-[92px]",children:eo(r.timestamp)}),a.jsx("span",{className:"jogak:text-[var(--jogak-color-violet)] jogak:font-semibold",children:r.name}),a.jsxs("span",{className:"jogak:text-[var(--jogak-color-fg)] jogak:break-all jogak:flex-1",children:["(",oo(r.args),")"]})]},r.id))})})]})}function ao({children:o,className:e,style:t,"data-testid":r}){const g=i.useRef(null),[n,s]=i.useState(null);return i.useEffect(()=>{const l=g.current;if(l===null)return;const c=l.shadowRoot??l.attachShadow({mode:"open"});s(c)},[]),a.jsx("div",{ref:g,className:e,"data-testid":r,style:t,children:n!==null?X.createPortal(o,n):null})}function to({entry:o,args:e,userPreviewUrl:t,previewEntryPath:r,className:g,"data-testid":n}){const s=i.useRef(null),[l,c]=i.useState(!1),d=t!==""?`${t}${r}`:"/preview-frame.html";return i.useEffect(()=>{const j=k=>{const p=s.current;if(p===null||k.source!==p.contentWindow)return;const f=k.data;f==null||typeof f!="object"||f.type==="jogak:ready"&&c(!0)};return window.addEventListener("message",j),()=>{window.removeEventListener("message",j)}},[]),i.useEffect(()=>{var k;if(!l)return;const j=s.current;j!==null&&((k=j.contentWindow)==null||k.postMessage({type:"jogak:setProps",entryId:o.id,args:e},"*"))},[l,o,e]),i.useEffect(()=>{const j=s.current;return()=>{j!==null&&queueMicrotask(()=>{var k;(k=j.contentWindow)==null||k.postMessage({type:"jogak:unmount"},"*")})}},[]),a.jsx("iframe",{ref:s,src:d,title:"Preview",className:g,"data-testid":n})}const ro=60;function no(o,e){const t=so(o),{children:r,restProps:g}=go(e),n=Object.entries(g).filter(([,k])=>k!==void 0).map(([k,p])=>lo(k,p)),s=jo(r),l=s!==null,c=n.length===0?"":" "+n.join(" "),d=l?`<${t}${c}>${s??""}</${t}>`:`<${t}${c} />`;if(d.length<=ro&&!d.includes(`
2
+ `))return d;const j=n.length===0?"":`
3
+ `+n.join(`
4
+ `)+`
5
+ `;if(l){const k=(s??"").split(`
6
+ `).map(p=>` ${p}`).join(`
7
+ `);return`<${t}${j}>
8
+ ${k}
9
+ </${t}>`}return`<${t}${j}/>`}function so(o){const e=o.meta.component;if(e!==void 0){if(typeof e.displayName=="string"&&e.displayName.length>0)return e.displayName;if(typeof e.name=="string"&&e.name.length>0)return e.name}const t=o.title.split("/").pop();return t!==void 0&&t.length>0?t:"Component"}function go(o){const{children:e,...t}=o;return{children:e,restProps:t}}function jo(o){return o==null?null:typeof o=="string"?o.length===0?null:o:typeof o=="number"||typeof o=="bigint"?`{${o.toString()}}`:typeof o=="boolean"?null:`{${I(o)}}`}function lo(o,e){if(e===!0)return o;if(e===!1)return`${o}={false}`;if(e===null)return`${o}={null}`;if(typeof e=="string"){const t=e.replace(/"/gu,"&quot;");return`${o}="${t}"`}return typeof e=="number"||typeof e=="bigint"?`${o}={${e.toString()}}`:typeof e=="function"?`${o}={fn}`:`${o}={${I(e)}}`}function I(o){try{return JSON.stringify(o)}catch{return String(o)}}const U={mobile:375,tablet:768,desktop:"none"},io={mobile:"Mobile",tablet:"Tablet",desktop:"Desktop"},P={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 co(o){return E.themes[o]??E.themes.vsDark}function G({entryId:o,jogakName:e,overrideArgs:t,onArgChange:r,onReset:g,codeTheme:n,onResolveJogak:s,previewIsolation:l="iframe",userPreviewUrl:c="",previewEntryPath:d="/__jogak_preview__/index.html"}){const j=h.useEntry(o),[k,p]=i.useState("desktop"),[f,y]=i.useState("white"),[N,b]=i.useState("controls"),v=co(n);return j.status==="unknown"?a.jsxs("div",{"data-testid":"preview-not-found",className:"jogak:p-6 jogak:text-[var(--jogak-color-error)]",children:["Entry not found: ",o]}):j.status==="error"?a.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:[a.jsxs("div",{className:"jogak:font-semibold",children:["Failed to load entry: ",o]}),a.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:j.error.message})]}):j.status==="loading"?a.jsx(ko,{meta:j.meta,jogakName:e,viewport:k,bgMode:f,onViewportChange:p,onBgModeChange:y}):a.jsx(uo,{entry:j.entry,jogakName:e,overrideArgs:t,onArgChange:r,onReset:g,onResolveJogak:s,viewport:k,bgMode:f,bottomTab:N,onViewportChange:p,onBgModeChange:y,onBottomTabChange:b,prismTheme:v,previewIsolation:l,userPreviewUrl:c,previewEntryPath:d})}function ko({meta:o,jogakName:e,viewport:t,bgMode:r,onViewportChange:g,onBgModeChange:n}){const s=e??o.jogakNames[0]??"...",l=U[t];return a.jsxs("div",{"data-testid":"preview-loading",className:"jogak:flex jogak:flex-col jogak:h-full",children:[a.jsx(Q,{title:o.title,jogakName:s,viewport:t,bgMode:r,onViewportChange:g,onBgModeChange:n,showReset:!1,onReset:()=>{}}),a.jsx("div",{className:`jogak:flex-1 jogak:overflow-auto jogak:min-h-[320px] ${L}`,style:P[r],children:a.jsx("div",{className:"jogak:mx-auto jogak:p-6 jogak:max-w-[var(--jogak-canvas-mw)]",style:{"--jogak-canvas-mw":l==="none"?"100%":`${l}px`},children:a.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 ",o.title,"…"]})})})]})}function uo({entry:o,jogakName:e,overrideArgs:t,onArgChange:r,onReset:g,onResolveJogak:n,viewport:s,bgMode:l,bottomTab:c,onViewportChange:d,onBgModeChange:j,onBottomTabChange:k,prismTheme:p,previewIsolation:f,userPreviewUrl:y,previewEntryPath:N}){var J;const b=e??((J=o.jogaks[0])==null?void 0:J.name)??null;if(i.useEffect(()=>{e===null&&b!==null&&n!==void 0&&n(o.id,b)},[e,b,o.id,n]),b===null)return a.jsxs("div",{className:"jogak:p-6 jogak:text-[var(--jogak-color-error)]",children:["Entry has no jogaks: ",o.id]});const v=o.jogaks.find(S=>S.name===b);if(v===void 0)return a.jsxs("div",{className:"jogak:p-6 jogak:text-[var(--jogak-color-error)]",children:["Jogak not found: ",b]});const $={...v.args??{},...t},u={...o.meta.argTypes??{},...v.argTypes??{}},x=Object.keys(t).length>0,m=U[s];return a.jsxs("div",{className:"jogak:flex jogak:flex-col jogak:h-full",children:[a.jsx(Q,{title:o.title,jogakName:v.name,viewport:s,bgMode:l,onViewportChange:d,onBgModeChange:j,showReset:x,onReset:g}),a.jsx("div",{className:`jogak:flex-1 jogak:overflow-auto jogak:min-h-[320px] ${L}`,style:P[l],children:a.jsx("div",{"data-jogak-content":!0,className:"jogak:mx-auto jogak:p-6 jogak:max-w-[var(--jogak-canvas-mw)]",style:{"--jogak-canvas-mw":m==="none"?"100%":`${m}px`},children:a.jsx(po,{entry:o,args:$,theme:p,previewIsolation:f,userPreviewUrl:y,previewEntryPath:N},`${o.id}/${v.name}`)})}),a.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:[a.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 a.jsx("button",{type:"button",role:"tab","aria-selected":q,onClick:()=>{k(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)})}),a.jsx("div",{className:"jogak:flex-1 jogak:min-h-0 jogak:overflow-auto",children:c==="controls"?a.jsx(H,{args:$,argTypes:u,onArgChange:r}):a.jsx(F,{})})]})]})}function Q({title:o,jogakName:e,viewport:t,bgMode:r,onViewportChange:g,onBgModeChange:n,showReset:s,onReset:l}){return a.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:[a.jsxs("div",{className:"jogak:flex-1 jogak:text-[13px]",children:[a.jsx("span",{className:"jogak:text-[var(--jogak-color-fg-subtle)]",children:o}),a.jsx("span",{className:"jogak:text-[var(--jogak-color-border-strong)] jogak:mx-1.5 jogak:leading-none",children:"/"}),a.jsx("span",{className:"jogak:text-[var(--jogak-color-fg-strong)] jogak:font-semibold",children:e})]}),a.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=>a.jsx("button",{type:"button",onClick:()=>{g(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:io[c]},c))}),a.jsx("div",{className:"jogak:flex jogak:gap-1 jogak:items-center",children:["white","dark","transparent"].map(c=>a.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:P[c]},c))}),s&&a.jsx("button",{type:"button",onClick:l,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 po({entry:o,args:e,theme:t,previewIsolation:r,userPreviewUrl:g,previewEntryPath:n}){const[s,l]=i.useState(!1),c=no(o,e),d=a.jsxs("div",{className:"jogak:relative",children:[a.jsx(fo,{entry:o,args:e,previewIsolation:r,userPreviewUrl:g,previewEntryPath:n}),a.jsx("button",{type:"button",onClick:()=>{l(j=>!j)},"aria-pressed":s,"aria-label":s?"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",s?"jogak:bg-[var(--jogak-color-accent)]":"jogak:bg-[#1e293b]"),children:"</>"})]});return a.jsxs("div",{children:[d,s&&a.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:a.jsx(bo,{source:c,theme:t})})]})}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 fo({entry:o,args:e,previewIsolation:t,userPreviewUrl:r,previewEntryPath:g}){return t==="shadow"?a.jsx(ao,{"data-testid":"preview-content",className:M,children:a.jsx(mo,{entry:o,args:e})}):t==="iframe"?a.jsx(to,{entry:o,args:e,userPreviewUrl:r,previewEntryPath:g,"data-testid":"preview-content",className:`${M} jogak:block jogak:w-full jogak:bg-transparent jogak:min-h-[256px]`}):a.jsx(xo,{entry:o,args:e})}function xo({entry:o,args:e}){const t=i.useRef(null);return i.useEffect(()=>{const r=t.current;if(r!==null)return h.reactAdapter.render(o,e,r),()=>{queueMicrotask(()=>{h.reactAdapter.unmount(r)})}},[o]),i.useEffect(()=>{const r=t.current;r!==null&&h.reactAdapter.render(o,e,r)},[o,e]),a.jsx("div",{ref:t,"data-testid":"preview-content",className:M})}function mo({entry:o,args:e}){const t=i.useRef(null);return i.useEffect(()=>{const r=t.current;if(r!==null)return h.reactAdapter.render(o,e,r),()=>{queueMicrotask(()=>{h.reactAdapter.unmount(r)})}},[o]),i.useEffect(()=>{const r=t.current;r!==null&&h.reactAdapter.render(o,e,r)},[o,e]),a.jsx("div",{ref:t,"data-testid":"preview-content-shadow"})}function bo({source:o,theme:e}){const[t,r]=i.useState(!1),g=e.plain.backgroundColor??"#1e293b";if(o===void 0)return a.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":g},children:"Source not available"});const n=()=>{navigator.clipboard.writeText(o).then(()=>{r(!0),setTimeout(()=>{r(!1)},2e3)})};return a.jsxs("div",{className:"jogak:relative jogak:h-full",children:[a.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"}),a.jsx(E.Highlight,{code:o.trim(),language:"tsx",theme:e,children:({style:s,tokens:l,getLineProps:c,getTokenProps:d})=>a.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:s,children:l.map((j,k)=>a.jsxs("div",{...c({line:j}),className:"jogak:flex jogak:pr-6",style:c({line:j}).style,children:[a.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:k+1}),a.jsx("span",{children:j.map((p,f)=>a.jsx("span",{...d({token:p})},f))})]},k))})})]})}function V(){if(typeof window>"u")return null;const o=new URLSearchParams(window.location.search),e=o.get("entry");if(e===null)return null;const t=o.get("jogak");return{entryId:e,jogakName:t}}function ho(o,e){const t=new URLSearchParams;t.set("entry",o),t.set("jogak",e),window.history.pushState({},"",`?${t.toString()}`)}function vo({entries:o,metas:e,codeTheme:t="vsDark",previewIsolation:r="iframe",userPreviewUrl:g="",previewEntryPath:n="/__jogak_preview__/index.html",userViteUrl:s}={}){const l=g!==""?g:s??"",c=i.useMemo(()=>{if(o!==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 x of o)u.register(x);return u}if(e!==void 0)for(const u of e)C.defaultRegistry.registerMeta(u);return C.defaultRegistry},[o,e]),d=i.useMemo(()=>V(),[]),[j,k]=i.useState((d==null?void 0:d.entryId)??null),[p,f]=i.useState((d==null?void 0:d.jogakName)??null),[y,N]=i.useState({});i.useEffect(()=>{const u=()=>{const x=V();x!==null?(k(x.entryId),f(x.jogakName),N({})):(k(null),f(null))};return window.addEventListener("popstate",u),()=>{window.removeEventListener("popstate",u)}},[]);const b=i.useCallback((u,x)=>{k(u),f(x),N({}),ho(u,x)},[]),v=i.useCallback((u,x)=>{if(k(m=>m===u?u:m),f(m=>m??x),typeof window<"u"){const m=new URLSearchParams(window.location.search);m.get("entry")===u&&m.get("jogak")===null&&(m.set("jogak",x),window.history.replaceState({},"",`?${m.toString()}`))}},[]),O=i.useCallback((u,x)=>{N(m=>({...m,[u]:x}))},[]),$=i.useCallback(()=>{N({})},[]);return a.jsx(h.JogakProvider,{registry:c,children:a.jsxs("div",{"data-jogak-shell":!0,className:"jogak:grid jogak:grid-cols-[260px_1fr] jogak:h-dvh jogak:overflow-hidden",children:[a.jsx(W,{selectedEntryId:j,selectedJogakName:p,onSelect:b}),a.jsx("main",{className:"jogak:overflow-hidden jogak:min-h-0",children:j!==null?a.jsx(G,{entryId:j,jogakName:p,overrideArgs:y,onArgChange:O,onReset:$,codeTheme:t,onResolveJogak:v,previewIsolation:r,userPreviewUrl:l,previewEntryPath:n}):a.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 wo(){const o=h.useRegistry(),e=i.useMemo(()=>o.getAll(),[o]),t=i.useMemo(()=>o.getTree(),[o]),r=i.useMemo(()=>g=>o.search(g),[o]);return{entries:e,tree:t,search:r}}exports.Actions=F;exports.Controls=H;exports.JogakApp=vo;exports.Preview=G;exports.Sidebar=W;exports.useRegistry=wo;