@urun-sh/react 0.1.10 → 0.1.12
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 +8 -0
- package/dist/index.d.mts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +7 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.12
|
|
4
|
+
|
|
5
|
+
- Export the SDK auth-mode helpers used by reference apps and middleware.
|
|
6
|
+
|
|
7
|
+
## 0.1.11
|
|
8
|
+
|
|
9
|
+
- Resolve browser auth mode from public environment, use `NEXT_PUBLIC_SESSION_TOKEN` only in JWT/test mode, and wait for WorkOS access tokens before rendering session-creating children.
|
|
10
|
+
|
|
3
11
|
## 0.1.10
|
|
4
12
|
|
|
5
13
|
- Bumped peer dependency to `@urun-sh/core@0.1.10`.
|
package/dist/index.d.mts
CHANGED
|
@@ -42,6 +42,11 @@ declare class UrunErrorBoundary extends Component<UrunErrorBoundaryProps, UrunEr
|
|
|
42
42
|
render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
type UrunAuthMode = 'workos' | 'jwt';
|
|
46
|
+
declare function urunPublicEnv(name: string): string | undefined;
|
|
47
|
+
declare function authMode(): UrunAuthMode;
|
|
48
|
+
declare function usesWorkOSAuth(): boolean;
|
|
49
|
+
|
|
45
50
|
type Unsubscribe = () => void;
|
|
46
51
|
type ReactSessionDocument<T = Record<string, unknown>> = Omit<SessionDocument, 'get' | 'set' | 'on'> & {
|
|
47
52
|
get(): T;
|
|
@@ -194,4 +199,4 @@ declare function useMetricsPanel(props: MetricsPanelProps): {
|
|
|
194
199
|
};
|
|
195
200
|
declare function MetricsPanel(props: MetricsPanelProps): react_jsx_runtime.JSX.Element;
|
|
196
201
|
|
|
197
|
-
export { ComponentRenderer, ImageFrame, ImageFrameSchema, MetricsPanel, MetricsPanelSchema, ProgressCard, ProgressCardSchema, type ReactApp, type ReactSession, type ReactSessionDocument, type ReactSessionStream, type RegisteredComponent, StatusBadge, StatusBadgeSchema, TextStream, TextStreamSchema, UrunErrorBoundary, UrunProvider, registerComponent, useApp, useImageFrame, useMetricsPanel, useProgressCard, useStatusBadge, useTextStream };
|
|
202
|
+
export { ComponentRenderer, ImageFrame, ImageFrameSchema, MetricsPanel, MetricsPanelSchema, ProgressCard, ProgressCardSchema, type ReactApp, type ReactSession, type ReactSessionDocument, type ReactSessionStream, type RegisteredComponent, StatusBadge, StatusBadgeSchema, TextStream, TextStreamSchema, type UrunAuthMode, UrunErrorBoundary, UrunProvider, authMode, registerComponent, urunPublicEnv, useApp, useImageFrame, useMetricsPanel, useProgressCard, useStatusBadge, useTextStream, usesWorkOSAuth };
|
package/dist/index.d.ts
CHANGED
|
@@ -42,6 +42,11 @@ declare class UrunErrorBoundary extends Component<UrunErrorBoundaryProps, UrunEr
|
|
|
42
42
|
render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
type UrunAuthMode = 'workos' | 'jwt';
|
|
46
|
+
declare function urunPublicEnv(name: string): string | undefined;
|
|
47
|
+
declare function authMode(): UrunAuthMode;
|
|
48
|
+
declare function usesWorkOSAuth(): boolean;
|
|
49
|
+
|
|
45
50
|
type Unsubscribe = () => void;
|
|
46
51
|
type ReactSessionDocument<T = Record<string, unknown>> = Omit<SessionDocument, 'get' | 'set' | 'on'> & {
|
|
47
52
|
get(): T;
|
|
@@ -194,4 +199,4 @@ declare function useMetricsPanel(props: MetricsPanelProps): {
|
|
|
194
199
|
};
|
|
195
200
|
declare function MetricsPanel(props: MetricsPanelProps): react_jsx_runtime.JSX.Element;
|
|
196
201
|
|
|
197
|
-
export { ComponentRenderer, ImageFrame, ImageFrameSchema, MetricsPanel, MetricsPanelSchema, ProgressCard, ProgressCardSchema, type ReactApp, type ReactSession, type ReactSessionDocument, type ReactSessionStream, type RegisteredComponent, StatusBadge, StatusBadgeSchema, TextStream, TextStreamSchema, UrunErrorBoundary, UrunProvider, registerComponent, useApp, useImageFrame, useMetricsPanel, useProgressCard, useStatusBadge, useTextStream };
|
|
202
|
+
export { ComponentRenderer, ImageFrame, ImageFrameSchema, MetricsPanel, MetricsPanelSchema, ProgressCard, ProgressCardSchema, type ReactApp, type ReactSession, type ReactSessionDocument, type ReactSessionStream, type RegisteredComponent, StatusBadge, StatusBadgeSchema, TextStream, TextStreamSchema, type UrunAuthMode, UrunErrorBoundary, UrunProvider, authMode, registerComponent, urunPublicEnv, useApp, useImageFrame, useMetricsPanel, useProgressCard, useStatusBadge, useTextStream, usesWorkOSAuth };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var fe=Object.create;var T=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var ve=Object.getOwnPropertyNames;var Se=Object.getPrototypeOf,ye=Object.prototype.hasOwnProperty;var ke=(t,e)=>{for(var r in e)T(t,r,{get:e[r],enumerable:!0})},V=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ve(e))!ye.call(t,o)&&o!==r&&T(t,o,{get:()=>e[o],enumerable:!(n=he(e,o))||n.enumerable});return t};var Pe=(t,e,r)=>(r=t!=null?fe(Se(t)):{},V(e||!t||!t.__esModule?T(r,"default",{value:t,enumerable:!0}):r,t)),xe=t=>V(T({},"__esModule",{value:!0}),t);var we={};ke(we,{ComponentRenderer:()=>te,ImageFrame:()=>pe,ImageFrameSchema:()=>ce,MetricsPanel:()=>me,MetricsPanelSchema:()=>de,ProgressCard:()=>oe,ProgressCardSchema:()=>ne,StatusBadge:()=>ie,StatusBadgeSchema:()=>se,TextStream:()=>ue,TextStreamSchema:()=>ae,UrunErrorBoundary:()=>m,UrunProvider:()=>q,authMode:()=>v,registerComponent:()=>ee,urunPublicEnv:()=>i,useApp:()=>Q,useImageFrame:()=>F,useMetricsPanel:()=>L,useProgressCard:()=>O,useStatusBadge:()=>W,useTextStream:()=>D,usesWorkOSAuth:()=>K});module.exports=xe(we);var A=require("react");var J=require("react"),f=require("react/jsx-runtime"),m=class extends J.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,r){console.error("[urun] Error caught by UrunErrorBoundary:",e,r)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||(0,f.jsxs)("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[(0,f.jsx)("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),(0,f.jsx)("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};var X=require("react"),_=(0,X.createContext)(null);var h=require("react"),Z=require("react/jsx-runtime");function be({module:t,onToken:e}){let r;try{r=t.useAuth()}catch{r={}}return(0,h.useEffect)(()=>{let n=!1;async function o(){if(!(r.loading||r.isLoading))try{let c=r.getAccessToken?await r.getAccessToken():r.accessToken;n||e(c??void 0)}catch{n||e(void 0)}}o();let s=window.setInterval(()=>{o()},6e4);return()=>{n=!0,window.clearInterval(s)}},[r,r.accessToken,r.getAccessToken,r.isAuthenticated,r.isLoading,r.loading,r.user,e]),null}function H({onToken:t}){let[e,r]=(0,h.useState)(null);return(0,h.useEffect)(()=>{let n=!1;return import("@workos-inc/authkit-react").then(o=>{!n&&typeof o.useAuth=="function"&&r({useAuth:o.useAuth})}).catch(()=>{n||r(null)}),()=>{n=!0}},[]),e?(0,Z.jsx)(be,{module:e,onToken:t}):null}function i(t){let r=(typeof process<"u"?process.env:void 0)?.[t];return r&&r.trim()?r.trim():void 0}function v(){if(i("VERCEL_ENV")==="production")return"workos";let t=i("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return t==="jwt"||t==="customer-jwt"||t==="test-jwt"?"jwt":t==="workos"?"workos":i("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function K(){return v()==="workos"}var S=require("react/jsx-runtime");function q({baseUrl:t,orgId:e,appId:r,jwt:n,authProvider:o,fallback:s,children:c}){let[C,R]=(0,A.useState)(),w=i("NEXT_PUBLIC_SESSION_TOKEN")??i("NEXT_PUBLIC_URUN_JWT"),j=v(),z=j==="workos"&&!n,M=n??(j==="jwt"?w:void 0)??C,$=o??i("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),le=z&&!M,ge=(0,A.useMemo)(()=>({appId:r,baseUrl:t,orgId:e,jwt:M,authProvider:$}),[r,t,$,M,e]);return(0,S.jsxs)(m,{fallback:s,children:[z?(0,S.jsx)(H,{onToken:R}):null,le?null:(0,S.jsx)(_.Provider,{value:ge,children:c})]})}var a=require("react"),G=require("@urun-sh/core");function Ce(t,e){return`${t}:${JSON.stringify(e??{})}`}var N=class{constructor(e,r){this._doc=e;this._notify=r;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,r){return this._doc.get(e,r)}set(e){this._doc.set(e),this._notify()}on(e,r){return this._doc.on(e,n=>r(n))}dispose(){this._unsubscribeChange()}},I=class{constructor(e,r){this._stream=e;this._notify=r;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}detach(){return this._stream.detach()}seek(e){return this._stream.seek(e)}on(e,r){return this._stream.on(e,r)}dispose(){this._unsubscribeTrack()}},B=class{constructor(e,r){this._session=e;this._notify=r}_session;_notify;_docs=new Map;_streams=new Map;get id(){return this._session.id}doc(e){let r=this._docs.get(e);return r||(r=new N(this._session.doc(e),this._notify),this._docs.set(e,r)),r}stream(e){let r=this._streams.get(e);return r||(r=new I(this._session.stream(e),this._notify),this._streams.set(e,r)),r}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._session.disconnect(),this._notify()}};function Q(){let t=(0,a.useContext)(_);if(!t)throw new Error("useApp must be used within <UrunProvider>");if(!t.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=(0,a.useReducer)(o=>o+1,0),r=(0,a.useRef)(new Map),n=(0,a.useMemo)(()=>(0,G.App)(t.appId,{baseUrl:t.baseUrl,orgId:t.orgId,jwt:t.jwt,authProvider:t.authProvider}),[t.appId,t.baseUrl,t.orgId,t.jwt,t.authProvider]);return(0,a.useMemo)(()=>new Proxy({},{get(o,s){if(typeof s=="string")return c=>{let C=Ce(s,c),R=r.current.get(C);if(R)return R;let w=new B(n[s](c),e);return r.current.set(C,w),w}}}),[n])}var Y=new Map;function ee(t,e,r){if(!r||typeof r.safeParse!="function")throw new Error(`registerComponent("${t}"): schema must be a valid Zod schema`);Y.set(t,{component:e,schema:r})}function re(t,e){let r=Y.get(t);if(!r)return{error:`Unknown component: "${t}"`};let n=r.schema.safeParse(e);return n.success?{Component:r.component,validatedProps:n.data}:{error:`Validation failed for "${t}": ${n.error.message}`}}var p=require("react/jsx-runtime");function te({name:t,props:e,fallback:r}){let n=re(t,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),r?(0,p.jsx)(p.Fragment,{children:r}):(0,p.jsx)("div",{className:"urun-component-error",role:"alert",children:(0,p.jsx)("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return(0,p.jsx)(o,{...n.validatedProps})}var l=require("zod"),d=require("react/jsx-runtime"),ne=l.z.object({step:l.z.number().min(0),total:l.z.number().min(1),label:l.z.string().optional(),variant:l.z.enum(["default","success","error"]).default("default")});function O(t){let{step:e,total:r,label:n,variant:o="default"}=t,s=Math.min(e/r*100,100),c=e>=r;return{step:e,total:r,label:n,variant:o,percentage:s,isComplete:c}}function oe(t){let{step:e,total:r,label:n,variant:o,percentage:s}=O(t);return(0,d.jsxs)("div",{className:"urun-progress-card","data-variant":o,children:[n&&(0,d.jsx)("div",{className:"urun-progress-label",children:n}),(0,d.jsx)("div",{className:"urun-progress-bar",children:(0,d.jsx)("div",{className:"urun-progress-fill",style:{width:`${s}%`}})}),(0,d.jsxs)("div",{className:"urun-progress-text",children:[e,"/",r]})]})}var E=require("zod"),y=require("react/jsx-runtime"),se=E.z.object({state:E.z.enum(["thinking","generating","idle","error"]),message:E.z.string().optional()}),Re={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function W(t){let{state:e,message:r}=t,n=e==="thinking"||e==="generating",o=r??Re[e]??e;return{state:e,message:o,isActive:n}}function ie(t){let{state:e,message:r,isActive:n}=W(t);return(0,y.jsxs)("span",{className:"urun-status-badge","data-state":e,children:[(0,y.jsx)("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),(0,y.jsx)("span",{className:"urun-status-message",children:r})]})}var k=require("react"),U=require("zod"),P=require("react/jsx-runtime"),ae=U.z.object({text:U.z.string(),streaming:U.z.boolean().default(!1)});function D(t){let{text:e,streaming:r=!1}=t,n=e.length===0;return{text:e,streaming:r,isEmpty:n}}function ue(t){let{text:e,streaming:r}=D(t),n=(0,k.useRef)(null),o=(0,k.useRef)(0);return(0,k.useEffect)(()=>{let s=n.current;s&&e.length!==o.current&&(s.textContent=e,o.current=e.length)},[e]),(0,P.jsxs)("div",{className:"urun-text-stream",children:[(0,P.jsx)("span",{ref:n,className:"urun-text-content"}),r&&(0,P.jsx)("span",{className:"urun-text-cursor"})]})}var x=require("zod"),b=require("react/jsx-runtime"),ce=x.z.object({src:x.z.string().url(),alt:x.z.string().optional(),caption:x.z.string().optional()});function F(t){let{src:e,alt:r,caption:n}=t;return{src:e,alt:r??"",caption:n}}function pe(t){let{src:e,alt:r,caption:n}=F(t);return(0,b.jsxs)("figure",{className:"urun-image-frame",children:[(0,b.jsx)("img",{className:"urun-image",src:e,alt:r}),n&&(0,b.jsx)("figcaption",{className:"urun-image-caption",children:n})]})}var u=require("zod"),g=require("react/jsx-runtime"),de=u.z.object({metrics:u.z.array(u.z.object({label:u.z.string(),value:u.z.union([u.z.string(),u.z.number()]),unit:u.z.string().optional()}))});function L(t){return{metrics:t.metrics.map(r=>({...r,displayValue:r.unit?`${r.value} ${r.unit}`:String(r.value)}))}}function me(t){let{metrics:e}=L(t);return(0,g.jsx)("div",{className:"urun-metrics-panel",children:e.map((r,n)=>(0,g.jsxs)("div",{className:"urun-metric-card",children:[(0,g.jsx)("div",{className:"urun-metric-label",children:r.label}),(0,g.jsx)("div",{className:"urun-metric-value",children:r.displayValue})]},n))})}0&&(module.exports={ComponentRenderer,ImageFrame,ImageFrameSchema,MetricsPanel,MetricsPanelSchema,ProgressCard,ProgressCardSchema,StatusBadge,StatusBadgeSchema,TextStream,TextStreamSchema,UrunErrorBoundary,UrunProvider,authMode,registerComponent,urunPublicEnv,useApp,useImageFrame,useMetricsPanel,useProgressCard,useStatusBadge,useTextStream,usesWorkOSAuth});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useMemo as
|
|
1
|
+
import{useMemo as re,useState as te}from"react";import{Component as Z}from"react";import{jsx as A,jsxs as K}from"react/jsx-runtime";var c=class extends Z{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,r){console.error("[urun] Error caught by UrunErrorBoundary:",e,r)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||K("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[A("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),A("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};import{createContext as q}from"react";var g=q(null);import{useEffect as E,useState as G}from"react";import{jsx as Y}from"react/jsx-runtime";function Q({module:t,onToken:e}){let r;try{r=t.useAuth()}catch{r={}}return E(()=>{let n=!1;async function o(){if(!(r.loading||r.isLoading))try{let i=r.getAccessToken?await r.getAccessToken():r.accessToken;n||e(i??void 0)}catch{n||e(void 0)}}o();let s=window.setInterval(()=>{o()},6e4);return()=>{n=!0,window.clearInterval(s)}},[r,r.accessToken,r.getAccessToken,r.isAuthenticated,r.isLoading,r.loading,r.user,e]),null}function U({onToken:t}){let[e,r]=G(null);return E(()=>{let n=!1;return import("@workos-inc/authkit-react").then(o=>{!n&&typeof o.useAuth=="function"&&r({useAuth:o.useAuth})}).catch(()=>{n||r(null)}),()=>{n=!0}},[]),e?Y(Q,{module:e,onToken:t}):null}function a(t){let r=(typeof process<"u"?process.env:void 0)?.[t];return r&&r.trim()?r.trim():void 0}function f(){if(a("VERCEL_ENV")==="production")return"workos";let t=a("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return t==="jwt"||t==="customer-jwt"||t==="test-jwt"?"jwt":t==="workos"?"workos":a("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function ee(){return f()==="workos"}import{jsx as M,jsxs as oe}from"react/jsx-runtime";function ne({baseUrl:t,orgId:e,appId:r,jwt:n,authProvider:o,fallback:s,children:i}){let[d,m]=te(),l=a("NEXT_PUBLIC_SESSION_TOKEN")??a("NEXT_PUBLIC_URUN_JWT"),w=f(),T=w==="workos"&&!n,S=n??(w==="jwt"?l:void 0)??d,_=o??a("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),X=T&&!S,H=re(()=>({appId:r,baseUrl:t,orgId:e,jwt:S,authProvider:_}),[r,t,_,S,e]);return oe(c,{fallback:s,children:[T?M(U,{onToken:m}):null,X?null:M(g.Provider,{value:H,children:i})]})}import{useContext as se,useMemo as N,useReducer as ie,useRef as ae}from"react";import{App as ue}from"@urun-sh/core";function ce(t,e){return`${t}:${JSON.stringify(e??{})}`}var y=class{constructor(e,r){this._doc=e;this._notify=r;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,r){return this._doc.get(e,r)}set(e){this._doc.set(e),this._notify()}on(e,r){return this._doc.on(e,n=>r(n))}dispose(){this._unsubscribeChange()}},k=class{constructor(e,r){this._stream=e;this._notify=r;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}detach(){return this._stream.detach()}seek(e){return this._stream.seek(e)}on(e,r){return this._stream.on(e,r)}dispose(){this._unsubscribeTrack()}},P=class{constructor(e,r){this._session=e;this._notify=r}_session;_notify;_docs=new Map;_streams=new Map;get id(){return this._session.id}doc(e){let r=this._docs.get(e);return r||(r=new y(this._session.doc(e),this._notify),this._docs.set(e,r)),r}stream(e){let r=this._streams.get(e);return r||(r=new k(this._session.stream(e),this._notify),this._streams.set(e,r)),r}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._session.disconnect(),this._notify()}};function pe(){let t=se(g);if(!t)throw new Error("useApp must be used within <UrunProvider>");if(!t.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=ie(o=>o+1,0),r=ae(new Map),n=N(()=>ue(t.appId,{baseUrl:t.baseUrl,orgId:t.orgId,jwt:t.jwt,authProvider:t.authProvider}),[t.appId,t.baseUrl,t.orgId,t.jwt,t.authProvider]);return N(()=>new Proxy({},{get(o,s){if(typeof s=="string")return i=>{let d=ce(s,i),m=r.current.get(d);if(m)return m;let l=new P(n[s](i),e);return r.current.set(d,l),l}}}),[n])}var I=new Map;function de(t,e,r){if(!r||typeof r.safeParse!="function")throw new Error(`registerComponent("${t}"): schema must be a valid Zod schema`);I.set(t,{component:e,schema:r})}function B(t,e){let r=I.get(t);if(!r)return{error:`Unknown component: "${t}"`};let n=r.schema.safeParse(e);return n.success?{Component:r.component,validatedProps:n.data}:{error:`Validation failed for "${t}": ${n.error.message}`}}import{Fragment as le,jsx as h}from"react/jsx-runtime";function me({name:t,props:e,fallback:r}){let n=B(t,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),r?h(le,{children:r}):h("div",{className:"urun-component-error",role:"alert",children:h("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return h(o,{...n.validatedProps})}import{z as p}from"zod";import{jsx as x,jsxs as O}from"react/jsx-runtime";var ge=p.object({step:p.number().min(0),total:p.number().min(1),label:p.string().optional(),variant:p.enum(["default","success","error"]).default("default")});function W(t){let{step:e,total:r,label:n,variant:o="default"}=t,s=Math.min(e/r*100,100),i=e>=r;return{step:e,total:r,label:n,variant:o,percentage:s,isComplete:i}}function fe(t){let{step:e,total:r,label:n,variant:o,percentage:s}=W(t);return O("div",{className:"urun-progress-card","data-variant":o,children:[n&&x("div",{className:"urun-progress-label",children:n}),x("div",{className:"urun-progress-bar",children:x("div",{className:"urun-progress-fill",style:{width:`${s}%`}})}),O("div",{className:"urun-progress-text",children:[e,"/",r]})]})}import{z as b}from"zod";import{jsx as D,jsxs as ye}from"react/jsx-runtime";var he=b.object({state:b.enum(["thinking","generating","idle","error"]),message:b.string().optional()}),ve={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function F(t){let{state:e,message:r}=t,n=e==="thinking"||e==="generating",o=r??ve[e]??e;return{state:e,message:o,isActive:n}}function Se(t){let{state:e,message:r,isActive:n}=F(t);return ye("span",{className:"urun-status-badge","data-state":e,children:[D("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),D("span",{className:"urun-status-message",children:r})]})}import{useRef as L,useEffect as ke}from"react";import{z as C}from"zod";import{jsx as j,jsxs as be}from"react/jsx-runtime";var Pe=C.object({text:C.string(),streaming:C.boolean().default(!1)});function z(t){let{text:e,streaming:r=!1}=t,n=e.length===0;return{text:e,streaming:r,isEmpty:n}}function xe(t){let{text:e,streaming:r}=z(t),n=L(null),o=L(0);return ke(()=>{let s=n.current;s&&e.length!==o.current&&(s.textContent=e,o.current=e.length)},[e]),be("div",{className:"urun-text-stream",children:[j("span",{ref:n,className:"urun-text-content"}),r&&j("span",{className:"urun-text-cursor"})]})}import{z as v}from"zod";import{jsx as $,jsxs as we}from"react/jsx-runtime";var Ce=v.object({src:v.string().url(),alt:v.string().optional(),caption:v.string().optional()});function V(t){let{src:e,alt:r,caption:n}=t;return{src:e,alt:r??"",caption:n}}function Re(t){let{src:e,alt:r,caption:n}=V(t);return we("figure",{className:"urun-image-frame",children:[$("img",{className:"urun-image",src:e,alt:r}),n&&$("figcaption",{className:"urun-image-caption",children:n})]})}import{z as u}from"zod";import{jsx as R,jsxs as Ae}from"react/jsx-runtime";var Te=u.object({metrics:u.array(u.object({label:u.string(),value:u.union([u.string(),u.number()]),unit:u.string().optional()}))});function J(t){return{metrics:t.metrics.map(r=>({...r,displayValue:r.unit?`${r.value} ${r.unit}`:String(r.value)}))}}function _e(t){let{metrics:e}=J(t);return R("div",{className:"urun-metrics-panel",children:e.map((r,n)=>Ae("div",{className:"urun-metric-card",children:[R("div",{className:"urun-metric-label",children:r.label}),R("div",{className:"urun-metric-value",children:r.displayValue})]},n))})}export{me as ComponentRenderer,Re as ImageFrame,Ce as ImageFrameSchema,_e as MetricsPanel,Te as MetricsPanelSchema,fe as ProgressCard,ge as ProgressCardSchema,Se as StatusBadge,he as StatusBadgeSchema,xe as TextStream,Pe as TextStreamSchema,c as UrunErrorBoundary,ne as UrunProvider,f as authMode,de as registerComponent,a as urunPublicEnv,pe as useApp,V as useImageFrame,J as useMetricsPanel,W as useProgressCard,F as useStatusBadge,z as useTextStream,ee as usesWorkOSAuth};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@urun-sh/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"description": "React bindings for the urun TypeScript SDK",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,6 +20,11 @@
|
|
|
20
20
|
"import": "./dist/index.mjs",
|
|
21
21
|
"require": "./dist/index.js"
|
|
22
22
|
},
|
|
23
|
+
"./auth": {
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"import": "./dist/index.mjs",
|
|
26
|
+
"require": "./dist/index.js"
|
|
27
|
+
},
|
|
23
28
|
"./styles.css": "./dist/styles.css",
|
|
24
29
|
"./package.json": "./package.json"
|
|
25
30
|
},
|
|
@@ -31,7 +36,7 @@
|
|
|
31
36
|
},
|
|
32
37
|
"peerDependencies": {
|
|
33
38
|
"react": "^18.2.0 || ^19.0.0",
|
|
34
|
-
"@urun-sh/core": "^0.1.
|
|
39
|
+
"@urun-sh/core": "^0.1.12",
|
|
35
40
|
"@workos-inc/authkit-react": "^0.15.0"
|
|
36
41
|
},
|
|
37
42
|
"dependencies": {
|