@object-ui/fields 4.0.8 → 4.0.10
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 +22 -0
- package/dist/index.cjs +3 -3
- package/dist/index.js +895 -775
- package/dist/packages/fields/src/index.d.ts +42 -2
- package/package.json +7 -7
- package/src/index.tsx +271 -46
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @object-ui/fields
|
|
2
2
|
|
|
3
|
+
## 4.0.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- @object-ui/types@4.0.10
|
|
8
|
+
- @object-ui/core@4.0.10
|
|
9
|
+
- @object-ui/i18n@4.0.10
|
|
10
|
+
- @object-ui/react@4.0.10
|
|
11
|
+
- @object-ui/components@4.0.10
|
|
12
|
+
- @object-ui/providers@4.0.10
|
|
13
|
+
|
|
14
|
+
## 4.0.9
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- @object-ui/types@4.0.9
|
|
19
|
+
- @object-ui/core@4.0.9
|
|
20
|
+
- @object-ui/i18n@4.0.9
|
|
21
|
+
- @object-ui/react@4.0.9
|
|
22
|
+
- @object-ui/components@4.0.9
|
|
23
|
+
- @object-ui/providers@4.0.9
|
|
24
|
+
|
|
3
25
|
## 4.0.8
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(e&&(t=e(e=0)),t),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let u=require(`react`);u=l(u,1);let d=require(`@object-ui/core`),f=require(`@object-ui/components`),p=require(`lucide-react`),m=require(`@object-ui/react`),h=require(`react/jsx-runtime`),g=require(`@object-ui/i18n`),_=require(`@object-ui/providers`);var v=s({TextField:()=>y});function y({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema;if(r)return(0,h.jsx)(`span`,{className:`text-sm`,children:e||(0,h.jsx)(f.EmptyValue,{})});let o=a?.rows,{inputType:s,...c}=i;return o&&o>1?(0,h.jsx)(f.Textarea,{...c,value:e||``,onChange:e=>t(e.target.value),placeholder:a?.placeholder,disabled:r||c.disabled}):(0,h.jsx)(f.Input,{...c,type:a?.type===`password`?`password`:`text`,value:e||``,onChange:e=>t(e.target.value),placeholder:a?.placeholder,disabled:r||c.disabled})}var b=o((()=>{})),x=s({NumberField:()=>S});function S({value:e,onChange:t,field:n,readonly:r,...i}){if(r)return e==null?(0,h.jsx)(f.EmptyValue,{}):(0,h.jsx)(`span`,{className:`text-sm`,children:e});let a=n||i.schema,o=a?.precision,{inputType:s,...c}=i;return(0,h.jsx)(f.Input,{...c,type:`number`,value:e??``,onChange:e=>{let n=e.target.value;t(n===``?null:Number(n))},placeholder:a?.placeholder,disabled:r||c.disabled,step:o?10**-o:`any`})}var C=o((()=>{})),w=s({BooleanField:()=>T});function T({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,o=a?.widget,s=(0,u.useId)(),c=a?.name||s,l=a?.label||`Checkbox`;if(r)return(0,h.jsx)(`span`,{className:`text-sm`,children:e?`Yes`:`No`});let{inputType:d,...p}=i;return o===`checkbox`?(0,h.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,h.jsx)(f.Checkbox,{...p,id:c,checked:!!e,onCheckedChange:e=>t(!!e),disabled:r||p.disabled}),(0,h.jsx)(f.Label,{htmlFor:c,children:l})]}):(0,h.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,h.jsx)(f.Switch,{...p,id:c,checked:!!e,onCheckedChange:t,disabled:r||p.disabled}),(0,h.jsx)(f.Label,{htmlFor:c,children:l})]})}var E=o((()=>{})),D,ee,O=o((()=>{D={"common.selectOption":`Select an option`,"common.select":`Select...`,"common.search":`Search`,"table.selected":`{{count}} selected`},ee=(0,g.createSafeTranslation)(D,`common.selectOption`)})),k=s({SelectField:()=>A});function A({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,o=a?.options||[],{t:s}=ee();if(r){let t=o.find(t=>t.value===e)?.label||e;return t?(0,h.jsx)(`span`,{className:`text-sm`,children:t}):(0,h.jsx)(f.EmptyValue,{})}return(0,h.jsxs)(f.Select,{...i,value:e,onValueChange:t,disabled:r||i.disabled,children:[(0,h.jsx)(f.SelectTrigger,{className:i.className,id:i.id,children:(0,h.jsx)(f.SelectValue,{placeholder:a?.placeholder||s(`common.selectOption`)})}),(0,h.jsx)(f.SelectContent,{position:`popper`,children:o.map(e=>(0,h.jsx)(f.SelectItem,{value:e.value,children:e.label},e.value))})]})}var j=o((()=>{O()})),M=s({DateField:()=>N});function N({value:e,onChange:t,field:n,readonly:r,...i}){if(r)return e?(0,h.jsx)(`span`,{className:`text-sm`,children:new Date(e).toLocaleDateString()}):(0,h.jsx)(f.EmptyValue,{});let{inputType:a,...o}=i;return(0,h.jsx)(f.Input,{...o,type:`date`,value:e||``,onChange:e=>t(e.target.value),disabled:r||o.disabled})}var P=o((()=>{})),F=s({EmailField:()=>I});function I({value:e,onChange:t,field:n,readonly:r,errorMessage:i,...a}){let o=n||a.schema;if(r)return e?(0,h.jsx)(`a`,{href:`mailto:${e}`,className:`text-sm text-blue-600 hover:text-blue-800 hover:underline`,children:e}):(0,h.jsx)(f.EmptyValue,{});let{inputType:s,...c}=a;return(0,h.jsx)(f.Input,{...c,type:`email`,value:e||``,onChange:e=>t(e.target.value),placeholder:o?.placeholder||`email@example.com`,disabled:r||c.disabled,"aria-invalid":!!i})}var L=o((()=>{})),te=s({PhoneField:()=>R});function R({value:e,onChange:t,field:n,readonly:r,errorMessage:i,...a}){let o=n||a.schema;if(r)return e?(0,h.jsx)(`a`,{href:`tel:${e}`,className:`text-sm text-blue-600 hover:text-blue-800 hover:underline`,children:e}):(0,h.jsx)(f.EmptyValue,{});let{inputType:s,...c}=a;return(0,h.jsx)(f.Input,{...c,type:`tel`,value:e||``,onChange:e=>t(e.target.value),placeholder:o?.placeholder||`(555) 123-4567`,disabled:r||c.disabled,"aria-invalid":!!i})}var z=o((()=>{})),ne=s({UrlField:()=>B});function B({value:e,onChange:t,field:n,readonly:r,errorMessage:i,...a}){let o=n||a.schema;if(r)return e?e.startsWith(`http://`)||e.startsWith(`https://`)?(0,h.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`text-sm text-blue-600 hover:text-blue-800 hover:underline`,children:e}):(0,h.jsx)(`span`,{className:`text-sm`,children:e}):(0,h.jsx)(f.EmptyValue,{});let{inputType:s,...c}=a;return(0,h.jsx)(f.Input,{...c,type:`url`,value:e||``,onChange:e=>t(e.target.value),placeholder:o?.placeholder||`https://example.com`,disabled:r||c.disabled,"aria-invalid":!!i})}var V=o((()=>{})),re=s({CurrencyField:()=>U});function H(e,t,n){if(t)try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t,minimumFractionDigits:n,maximumFractionDigits:n}).format(e)}catch{return`${t} ${e.toFixed(n)}`}try{return new Intl.NumberFormat(`en-US`,{minimumFractionDigits:n,maximumFractionDigits:n}).format(e)}catch{return e.toFixed(n)}}function U({value:e,onChange:t,field:n,readonly:r,errorMessage:i,className:a,...o}){let s=n||o.schema,c=s?.currency,l=s?.precision??2;if(r)return e==null?(0,h.jsx)(f.EmptyValue,{}):(0,h.jsx)(`span`,{className:`text-sm font-medium tabular-nums`,children:H(Number(e),c,l)});let u=e=>{let n=parseFloat(e.target.value);isNaN(n)||t(parseFloat(n.toFixed(l)))},d=c?c===`USD`?`$`:c:``;return(0,h.jsxs)(`div`,{className:`relative`,children:[d&&(0,h.jsx)(`span`,{className:`absolute left-3 top-1/2 -translate-y-1/2 text-sm text-gray-500`,children:d}),(0,h.jsx)(f.Input,{...o,type:`number`,value:e??``,onChange:e=>{t(e.target.value===``?null:parseFloat(e.target.value))},onBlur:u,placeholder:s?.placeholder||`0.00`,disabled:r||o.disabled,className:`${d?`pl-8`:``} ${a||``}`,step:(10**-l).toFixed(l),"aria-invalid":!!i})]})}var W=o((()=>{})),G=s({TextAreaField:()=>ie});function ie({value:e,onChange:t,field:n,readonly:r,errorMessage:i,...a}){if(r)return(0,h.jsx)(`div`,{className:`text-sm whitespace-pre-wrap`,children:e||(0,h.jsx)(f.EmptyValue,{})});let o=n||a.schema,s=o?.rows||4,c=o?.max_length,l=!!(a.mobileFullscreen??o?.mobile_fullscreen??a.mobile_fullscreen??a.schema?.mobile_fullscreen),[d,m]=(0,u.useState)(!1),[g,_]=(0,u.useState)(e??``),v=()=>{_(e??``),m(!0)},y=()=>m(!1),b=()=>{t(g),m(!1)},{inputType:x,mobileFullscreen:S,...C}=a;return(0,h.jsxs)(`div`,{className:`relative`,children:[(0,h.jsx)(f.Textarea,{...C,value:e||``,onChange:e=>t(e.target.value),placeholder:o?.placeholder,disabled:r||C.disabled,rows:s,maxLength:c,"aria-invalid":!!i,className:C.className}),l&&(0,h.jsx)(`button`,{type:`button`,onClick:v,className:`absolute top-1.5 right-1.5 inline-flex items-center justify-center size-7 rounded-md bg-background/80 text-muted-foreground hover:text-foreground hover:bg-background border shadow-sm transition-colors`,"aria-label":`Edit ${o?.label??`text`} fullscreen`,"data-testid":`textarea-fullscreen-toggle`,children:(0,h.jsx)(p.Maximize2,{className:`size-3.5`})}),c&&(0,h.jsxs)(`div`,{className:`absolute bottom-2 right-2 text-xs text-gray-400`,"aria-live":`polite`,"aria-label":`Character count: ${(e||``).length} of ${c}`,children:[(e||``).length,`/`,c]}),l&&(0,h.jsx)(f.Dialog,{open:d,onOpenChange:m,children:(0,h.jsxs)(f.DialogContent,{className:`sm:max-w-3xl h-[100dvh] sm:h-[80vh] max-h-[100dvh] sm:max-h-[80vh] flex flex-col p-0 gap-0`,"data-testid":`textarea-fullscreen-dialog`,children:[(0,h.jsx)(f.DialogHeader,{className:`p-4 border-b`,children:(0,h.jsx)(f.DialogTitle,{className:`text-base`,children:o?.label??`Edit text`})}),(0,h.jsx)(`div`,{className:`flex-1 min-h-0 p-4`,children:(0,h.jsx)(f.Textarea,{autoFocus:!0,value:g,onChange:e=>_(e.target.value),maxLength:c,placeholder:o?.placeholder,className:`h-full min-h-full resize-none text-base`,"data-testid":`textarea-fullscreen-input`})}),(0,h.jsxs)(f.DialogFooter,{className:`p-3 border-t flex-row justify-between sm:justify-end gap-2`,children:[c&&(0,h.jsxs)(`span`,{className:`text-xs text-muted-foreground self-center`,children:[g.length,`/`,c]}),(0,h.jsxs)(`div`,{className:`flex gap-2 ml-auto`,children:[(0,h.jsxs)(f.Button,{type:`button`,variant:`ghost`,onClick:y,children:[(0,h.jsx)(p.X,{className:`size-4 mr-1`}),` Cancel`]}),(0,h.jsxs)(f.Button,{type:`button`,onClick:b,"data-testid":`textarea-fullscreen-save`,children:[(0,h.jsx)(p.Check,{className:`size-4 mr-1`}),` Done`]})]})]})]})})]})}var ae=o((()=>{})),K=s({RichTextField:()=>q});function q({value:e,onChange:t,field:n,readonly:r,errorMessage:i,...a}){if(r)return(0,h.jsx)(`div`,{className:`text-sm prose prose-sm max-w-none`,children:e||(0,h.jsx)(f.EmptyValue,{})});let o=n||a.schema,s=o?.rows||8;return(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-gray-500`,children:[(0,h.jsxs)(`span`,{children:[`Format: `,o?.format||`markdown`]}),(0,h.jsx)(`span`,{className:`italic`,children:`Rich text editor (basic)`})]}),(0,h.jsx)(f.Textarea,{value:e||``,onChange:e=>t(e.target.value),placeholder:o?.placeholder||`Enter text...`,disabled:r||a.disabled,rows:s,className:`font-mono text-sm ${a.className||``}`,"aria-invalid":!!i})]})}var oe=o((()=>{}));function se(e){return typeof e==`string`?{field:e}:e}function ce(e){return e.replace(/_/g,` `).replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase())}function J(e){let t={};for(let n of e)switch(n.operator){case`eq`:t[n.field]=n.value;break;case`ne`:t[n.field]={$ne:n.value};break;case`gt`:t[n.field]={$gt:n.value};break;case`lt`:t[n.field]={$lt:n.value};break;case`gte`:t[n.field]={$gte:n.value};break;case`lte`:t[n.field]={$lte:n.value};break;case`contains`:t[n.field]={$contains:n.value};break;case`in`:t[n.field]={$in:n.value};break;case`notIn`:t[n.field]={$nin:n.value};break}return t}function le(e,t){let n={};for(let r of t){let t=e[r.field];t==null||t===``||(r.type===`boolean`?n[r.field]=!!t:r.type===`text`?n[r.field]={$contains:t}:n[r.field]=t)}return n}function ue({open:e,onOpenChange:t,title:n=`Select Record`,multiple:r=!1,dataSource:i,objectName:a,columns:o,displayField:s=`name`,titleFormat:c,idField:l=`id`,pageSize:d=de,value:m,onSelect:g,onSelectRecords:_,lookupFilters:v,cellRenderer:y,filterColumns:b,renderFilterBar:x,renderGrid:S}){let[C,w]=(0,u.useState)([]),[T,E]=(0,u.useState)(!1),[D,ee]=(0,u.useState)(null),[O,k]=(0,u.useState)(0),[A,j]=(0,u.useState)(``),[M,N]=(0,u.useState)(1),P=(0,u.useRef)(null),[F,I]=(0,u.useState)(null),[L,te]=(0,u.useState)(`asc`),[R,z]=(0,u.useState)(new Set),ne=(0,u.useRef)(new Map),[B,V]=(0,u.useState)(-1),re=(0,u.useRef)(null),[H,U]=(0,u.useState)(!1),[W,G]=(0,u.useState)({}),[ie,ae]=(0,u.useState)({}),K=(0,u.useRef)(null),[q,oe]=(0,u.useState)(``),ue=(0,u.useMemo)(()=>o&&o.length>0?o.map(se):[{field:s,label:ce(s)}],[o,s]),X=(0,u.useMemo)(()=>{if(b&&b.length>0)return b;if(v&&v.length>0)return v.map(e=>{let t=`text`;return typeof e.value==`boolean`?t=`boolean`:Array.isArray(e.value)?t=`select`:typeof e.value==`number`||e.operator===`gt`||e.operator===`lt`||e.operator===`gte`||e.operator===`lte`?t=`number`:(e.operator===`in`||e.operator===`notIn`)&&(t=`select`),{field:e.field,label:ce(e.field),type:t,...Array.isArray(e.value)?{options:e.value.map(e=>{if(typeof e==`object`&&e){let t=e;return{label:String(t.name||t.label||t.title||e),value:e}}return{label:String(e),value:e}})}:{}}})},[b,v]),pe=(0,u.useMemo)(()=>{let e=v?.length?J(v):{},t=X?.length?le(W,X):{},n={...e,...t};return Object.keys(n).length>0?n:void 0},[v,X,W]),me=Math.max(1,Math.ceil(O/d)),he=(0,u.useCallback)(async(e,t=1,n,r)=>{if(!(!i||!a)){E(!0),ee(null);try{let o={$top:d,$skip:(t-1)*d};e&&e.trim()&&(o.$search=e.trim()),n&&(o.$orderby={[n.field]:n.direction});let s=r===void 0?pe:r;s&&Object.keys(s).length>0&&(o.$filter=s);let c=await i.find(a,o),l=c?.data??c??[];w(l),k(c?.total??l.length),V(-1)}catch(e){ee(e instanceof Error?e.message:String(e)),w([])}finally{E(!1)}}},[i,a,d,pe]),ge=(0,u.useMemo)(()=>F?{field:F,direction:L}:null,[F,L]);(0,u.useEffect)(()=>{e||(j(``),N(1),ee(null),w([]),I(null),te(`asc`),V(-1),U(!1),G({}),ae({}),oe(``),z(new Set(r&&Array.isArray(m)?m:[])),ne.current.clear())},[e]),(0,u.useEffect)(()=>{e&&he(A||void 0,M,ge)},[e,M,ge,pe]),(0,u.useEffect)(()=>{e&&r&&z(new Set(Array.isArray(m)?m:[]))},[e,r,m]);let _e=(0,u.useCallback)(e=>{j(e),N(1),P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{he(e||void 0,1,ge)},300)},[he,ge]);(0,u.useEffect)(()=>()=>{P.current&&clearTimeout(P.current)},[]);let ve=(0,u.useCallback)(e=>{I(t=>t===e?(te(e=>e===`asc`?`desc`:`asc`),e):(te(`asc`),e)),N(1)},[]),ye=(0,u.useCallback)(e=>e[l]??e.id??e._id,[l]),be=(0,u.useCallback)(e=>{let t=ye(e);return r?R.has(t):m===t},[r,m,R,ye]),xe=(0,u.useCallback)(e=>{let n=ye(e);r?z(t=>{let r=new Set(t);return r.has(n)?(r.delete(n),ne.current.delete(n)):(r.add(n),ne.current.set(n,e)),r}):(g(n),_?.([e]),t(!1))},[r,ye,g,_,t]),Se=(0,u.useCallback)(()=>{let e=Array.from(R);g(e);let n=e.map(e=>ne.current.get(e)).filter(Boolean);_?.(n),t(!1)},[R,g,_,t]),Ce=(0,u.useCallback)(()=>{N(e=>Math.max(1,e-1))},[]),we=(0,u.useCallback)(()=>{N(e=>Math.min(me,e+1))},[me]),Te=(0,u.useCallback)(e=>{if(e.key!==`Enter`)return;let t=parseInt(q,10);!isNaN(t)&&t>=1&&t<=me&&N(t),oe(``)},[q,me]),Ee=(0,u.useCallback)(e=>{C.length!==0&&(e.key===`ArrowDown`?(e.preventDefault(),V(e=>Math.min(e+1,C.length-1))):e.key===`ArrowUp`?(e.preventDefault(),V(e=>Math.max(e-1,0))):(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),B>=0&&B<C.length&&xe(C[B])))},[C,B,xe]);(0,u.useEffect)(()=>{if(B>=0&&re.current){let e=re.current.querySelector(`[data-row-index="${B}"]`);e&&typeof e.scrollIntoView==`function`&&e.scrollIntoView({block:`nearest`})}},[B]);let De=(0,u.useCallback)((e,t)=>{if(c&&t.field===s){let t=`[-\\u2013\\u2014|/·,:]`,n=!1,r=c.replace(/\{([^{}]+)\}/g,(t,r)=>{let i=e[r.trim()];return i!=null&&i!==``?(n=!0,String(i)):`\0`});if(n){let e=r.replace(RegExp(`\\s*${t}\\s*`,`g`),``).replace(RegExp(`\\s*${t}\\s*`,`g`),``).replace(RegExp(`\0`,`g`),``).replace(/\s+/g,` `).trim();if(e)return e}}let n=e[t.field];if(t.type&&y){let e=y(t.type);if(e)return(0,h.jsx)(e,{value:n,field:{name:t.field,type:t.type}})}return n==null?``:typeof n==`object`?n.$numberDecimal?String(Number(n.$numberDecimal)):n.$oid?String(n.$oid):n.$date?new Date(n.$date).toLocaleDateString():n.name||n.label?String(n.name||n.label):JSON.stringify(n):typeof n==`boolean`?n?`Yes`:`No`:String(n)},[y,c,s]),Oe=(0,u.useCallback)(e=>F===e?L===`asc`?(0,h.jsx)(p.ArrowUp,{className:`ml-1 size-3`}):(0,h.jsx)(p.ArrowDown,{className:`ml-1 size-3`}):(0,h.jsx)(p.ArrowUpDown,{className:`ml-1 size-3 opacity-40`}),[F,L]),ke=(0,u.useCallback)((e,t,n)=>{e.preventDefault(),e.stopPropagation(),K.current={field:t,startX:e.clientX,startWidth:n};let r=e=>{if(!K.current)return;let t=e.clientX-K.current.startX,n=Math.max(fe,K.current.startWidth+t);ae(e=>({...e,[K.current.field]:n}))},i=()=>{K.current=null,document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)},[]),Z=(0,u.useCallback)((e,t)=>{G(n=>({...n,[e]:t})),N(1)},[]),Ae=(0,u.useCallback)(()=>{G({}),N(1)},[]),je=(0,u.useMemo)(()=>Object.values(W).filter(e=>e!=null&&e!==``).length,[W]),Me=(0,u.useCallback)(e=>{let t=W[e.field],n=e.label||ce(e.field);switch(e.type){case`select`:return(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Label,{className:`text-xs text-muted-foreground`,children:n}),(0,h.jsxs)(f.Select,{value:t==null?``:String(t),onValueChange:t=>Z(e.field,t),children:[(0,h.jsx)(f.SelectTrigger,{className:`h-8 text-xs`,children:(0,h.jsx)(f.SelectValue,{placeholder:`Filter ${n}`})}),(0,h.jsx)(f.SelectContent,{children:e.options?.map(e=>(0,h.jsx)(f.SelectItem,{value:String(e.value),children:e.label},String(e.value)))})]})]});case`number`:return(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Label,{className:`text-xs text-muted-foreground`,children:n}),(0,h.jsx)(f.Input,{type:`number`,className:`h-8 text-xs`,value:t??``,placeholder:`Filter ${n}`,onChange:t=>{let n=t.target.value;Z(e.field,n===``?``:Number(n))}})]});case`date`:return(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Label,{className:`text-xs text-muted-foreground`,children:n}),(0,h.jsx)(f.Input,{type:`date`,className:`h-8 text-xs`,value:t??``,onChange:t=>Z(e.field,t.target.value)})]});case`boolean`:return(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Label,{className:`text-xs text-muted-foreground`,children:n}),(0,h.jsxs)(`div`,{className:`flex items-center gap-2 h-8`,children:[(0,h.jsx)(f.Checkbox,{checked:!!t,onCheckedChange:t=>Z(e.field,!!t)}),(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Yes`})]})]});default:return(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Label,{className:`text-xs text-muted-foreground`,children:n}),(0,h.jsx)(f.Input,{className:`h-8 text-xs`,value:t??``,placeholder:`Filter ${n}`,onChange:t=>Z(e.field,t.target.value)})]})}},[W,Z]),Ne=(0,u.useCallback)((e,t)=>e?`bg-primary/5 hover:bg-primary/10`:t%2==1?`bg-muted/20 hover:bg-accent/30`:`hover:bg-accent/30`,[]);return(0,h.jsx)(f.Dialog,{open:e,onOpenChange:t,children:(0,h.jsxs)(f.DialogContent,{className:`w-[95vw] sm:max-w-3xl lg:max-w-5xl max-h-[85vh] sm:max-h-[80vh] flex flex-col gap-0`,"data-testid":`record-picker-dialog`,children:[(0,h.jsx)(f.DialogHeader,{children:(0,h.jsxs)(f.DialogTitle,{children:[n,r&&(0,h.jsx)(`span`,{className:`sr-only`,children:` (multiple selection)`})]})}),(0,h.jsxs)(`div`,{className:`relative rounded-md border bg-muted/30 mb-3`,children:[(0,h.jsx)(p.Search,{className:`absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground`}),(0,h.jsx)(f.Input,{placeholder:`Search...`,value:A,onChange:e=>_e(e.target.value),className:`pl-9 border-0 bg-transparent shadow-none focus-visible:ring-0`,"data-testid":`record-picker-search`}),T&&(0,h.jsx)(p.Loader2,{className:`absolute right-3 top-1/2 -translate-y-1/2 size-4 animate-spin text-muted-foreground`,"data-testid":`record-picker-loading-indicator`})]}),X&&X.length>0&&(0,h.jsx)(`div`,{className:`py-2`,children:x?(0,h.jsx)(`div`,{"data-testid":`record-picker-filter-bar`,children:x({filterColumns:X,values:W,onChange:Z,onClear:Ae,activeCount:je})}):(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,"data-testid":`record-picker-filter-bar`,children:[(0,h.jsxs)(f.Button,{type:`button`,variant:je>0?`secondary`:`outline`,size:`sm`,className:`gap-1.5 shrink-0`,onClick:()=>U(e=>!e),children:[(0,h.jsx)(p.SlidersHorizontal,{className:`size-3.5`}),`Filters`,je>0&&(0,h.jsx)(`span`,{className:`inline-flex h-5 min-w-[20px] items-center justify-center rounded-full bg-primary/10 px-1 text-xs font-medium text-primary`,children:je})]}),je>0&&(0,h.jsxs)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,className:`gap-1 text-xs`,onClick:Ae,children:[(0,h.jsx)(p.X,{className:`size-3`}),`Clear`]})]}),H&&(0,h.jsx)(`div`,{className:`mt-2 grid gap-3 sm:grid-cols-2 lg:grid-cols-3 border rounded-md p-3 bg-muted/30`,"data-testid":`record-picker-filter-panel`,children:X.map(e=>(0,h.jsx)(`div`,{children:Me(e)},e.field))})]})}),D&&(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-4`,role:`alert`,children:[(0,h.jsx)(p.AlertCircle,{className:`size-5 text-destructive`}),(0,h.jsx)(`p`,{className:`text-sm text-destructive`,children:D}),(0,h.jsx)(f.Button,{variant:`outline`,size:`sm`,onClick:()=>he(A||void 0,M,ge),type:`button`,children:`Retry`})]}),S?(0,h.jsx)(`div`,{className:`flex-1 min-h-0`,"data-testid":`record-picker-grid-slot`,children:S({columns:ue,records:C,loading:T,totalCount:O,currentPage:M,pageSize:d,sortField:F,sortDirection:L,onSort:ve,onPageChange:N,onRowClick:xe,isSelected:be,multiple:r,idField:l,cellRenderer:y})}):(0,h.jsxs)(h.Fragment,{children:[T&&C.length===0&&!D&&(0,h.jsx)(`div`,{className:`flex-1 overflow-hidden min-h-0 border rounded-md`,role:`status`,"aria-live":`polite`,"data-testid":`record-picker-skeleton`,children:(0,h.jsxs)(f.Table,{children:[(0,h.jsx)(f.TableHeader,{children:(0,h.jsxs)(f.TableRow,{className:`bg-muted/40`,children:[r&&(0,h.jsx)(f.TableHead,{className:`w-10`}),ue.map(e=>(0,h.jsx)(f.TableHead,{children:(0,h.jsx)(f.Skeleton,{className:`h-4 w-20`})},e.field))]})}),(0,h.jsx)(f.TableBody,{children:Array.from({length:Y},(e,t)=>(0,h.jsxs)(f.TableRow,{children:[r&&(0,h.jsx)(f.TableCell,{className:`w-10`,children:(0,h.jsx)(f.Skeleton,{className:`size-4 rounded`})}),ue.map(e=>(0,h.jsx)(f.TableCell,{children:(0,h.jsx)(f.Skeleton,{className:`h-4 w-full`})},e.field))]},t))})]})}),!T&&!D&&C.length===0&&(0,h.jsx)(`div`,{className:`py-8 text-center`,children:(0,h.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No records found`})}),!D&&C.length>0&&(0,h.jsxs)(`div`,{className:`relative flex-1 overflow-auto min-h-0 border rounded-md`,tabIndex:0,onKeyDown:Ee,role:`grid`,"aria-label":`Records`,children:[T&&(0,h.jsx)(`div`,{className:`absolute inset-0 z-10 flex items-center justify-center bg-background/60`,"data-testid":`record-picker-loading-overlay`,children:(0,h.jsx)(p.Loader2,{className:`size-6 animate-spin text-muted-foreground`})}),(0,h.jsxs)(f.Table,{style:Object.keys(ie).length>0?{tableLayout:`fixed`}:void 0,children:[(0,h.jsx)(f.TableHeader,{className:`sticky top-0 z-[5] bg-muted/50 [&_tr]:border-b`,"data-testid":`record-picker-sticky-header`,children:(0,h.jsxs)(f.TableRow,{children:[r&&(0,h.jsx)(f.TableHead,{className:`w-10`}),ue.map(e=>{let t=ie[e.field];return(0,h.jsxs)(f.TableHead,{style:t?{width:`${t}px`,minWidth:`${t}px`}:e.width?{width:e.width}:void 0,className:`cursor-pointer select-none relative group text-xs font-semibold uppercase tracking-wider`,onClick:()=>ve(e.field),"aria-sort":F===e.field?L===`asc`?`ascending`:`descending`:`none`,children:[(0,h.jsxs)(`span`,{className:`inline-flex items-center`,children:[e.label||ce(e.field),Oe(e.field)]}),(0,h.jsx)(`span`,{role:`separator`,"aria-orientation":`vertical`,className:`absolute right-0 top-0 bottom-0 w-1 cursor-col-resize opacity-0 group-hover:opacity-100 bg-border hover:bg-primary/50 transition-opacity`,onMouseDown:t=>{let n=t.currentTarget.parentElement?.getBoundingClientRect();ke(t,e.field,n?.width??100)},onClick:e=>e.stopPropagation(),"data-testid":`resize-handle-${e.field}`})]},e.field)})]})}),(0,h.jsx)(f.TableBody,{ref:re,children:C.map((e,t)=>{let n=ye(e),i=be(e),a=t===B;return(0,h.jsxs)(f.TableRow,{"data-row-index":t,className:(0,f.cn)(`cursor-pointer transition-colors`,Ne(i,t),a&&`ring-2 ring-primary ring-inset`),onClick:()=>xe(e),"data-testid":`record-row-${n}`,"aria-selected":i,children:[r&&(0,h.jsx)(f.TableCell,{className:`w-10`,children:i&&(0,h.jsx)(p.Check,{className:`size-4 text-primary`})}),ue.map(t=>(0,h.jsx)(f.TableCell,{className:`py-2.5`,children:De(e,t)},t.field))]},n??t)})})]})]}),!D&&O>0&&(0,h.jsxs)(`div`,{className:`flex items-center justify-between text-sm text-muted-foreground border-t pt-3 mt-2 px-1`,"data-testid":`record-picker-pagination`,children:[(0,h.jsxs)(`span`,{children:[O,` `,O===1?`record`:`records`,me>1&&` · Page ${M} of ${me}`]}),me>1&&(0,h.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,h.jsx)(f.Button,{variant:`outline`,size:`icon`,className:`size-7`,onClick:Ce,disabled:M<=1,type:`button`,"aria-label":`Previous page`,children:(0,h.jsx)(p.ChevronLeft,{className:`size-4`})}),(0,h.jsx)(f.Input,{className:`h-7 w-12 text-center text-xs px-1`,placeholder:String(M),value:q,onChange:e=>oe(e.target.value),onKeyDown:Te,"aria-label":`Jump to page`,"data-testid":`record-picker-page-jump`}),(0,h.jsx)(f.Button,{variant:`outline`,size:`icon`,className:`size-7`,onClick:we,disabled:M>=me,type:`button`,"aria-label":`Next page`,children:(0,h.jsx)(p.ChevronRight,{className:`size-4`})})]})]})]}),r&&(0,h.jsx)(f.DialogFooter,{children:(0,h.jsxs)(`div`,{className:`flex items-center gap-2 w-full justify-between`,children:[(0,h.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[R.size,` selected`]}),(0,h.jsxs)(`div`,{className:`flex gap-2`,children:[(0,h.jsx)(f.Button,{variant:`outline`,type:`button`,onClick:()=>t(!1),children:`Cancel`}),(0,h.jsx)(f.Button,{type:`button`,onClick:Se,children:`Confirm`})]})]})})]})})}var de,fe,Y,X=o((()=>{de=10,fe=60,Y=5}));function pe(e){he=e}function me(){return he}var he,ge=o((()=>{})),_e=s({LookupField:()=>xe});function ve(e,t){if(!e||typeof e!=`object`||!t)return null;let n=`[-\\u2013\\u2014|/·,:]`,r=!1,i=t.replace(/\{([^{}]+)\}/g,(t,n)=>{let i=e[n.trim()];return i!=null&&i!==``?(r=!0,String(i)):`\0`});return r&&i.replace(RegExp(`\\s*${n}\\s*`,`g`),``).replace(RegExp(`\\s*${n}\\s*`,`g`),``).replace(RegExp(`\0`,`g`),``).replace(/\s+/g,` `).trim()||null}function ye(e,t,n,r,i){let a=e[n]??e.id??e._id,o=(i?ve(e,i):null)??e[t]??e.label??e.name??e.full_name??e.title??e.subject??String(a),s=r?e[r]:void 0;return{value:a,label:String(o),description:s,...e}}function be(e){return{text:`text`,number:`number`,currency:`number`,percent:`number`,select:`select`,status:`select`,date:`date`,datetime:`date`,boolean:`boolean`}[e]}function xe({value:e,onChange:t,field:n,readonly:r,...i}){let[a,o]=(0,u.useState)(!1),[s,c]=(0,u.useState)(``),{t:l}=ee(),[d,m]=(0,u.useState)([]),[g,_]=(0,u.useState)(!1),[v,y]=(0,u.useState)(null),[b,x]=(0,u.useState)(0),S=(0,u.useRef)(null),[C,w]=(0,u.useState)([]),[T,E]=(0,u.useState)(-1),D=(0,u.useRef)(null),O=n||i.schema,k=O?.field,A=k&&typeof k==`object`&&(`reference_to`in k||`reference`in k||`type`in k)?k:O,j=A?.options||[],M=A?.multiple||!1,N=A?.display_field||A?.reference_field||`name`,P=A?.description_field,F=A?.id_field||`id`,I=A?.reference_to||A?.reference,L=A?.lookup_columns,te=A?.lookup_page_size,R=A?.lookup_filters,z=(0,u.useMemo)(()=>{let e=A?.depends_on??A?.dependsOn;return e&&Array.isArray(e)?e.map(e=>typeof e==`string`?{field:e,param:e}:{field:e.field,param:e.param??e.field}):[]},[A?.depends_on,A?.dependsOn]),ne=i.dependentValues,B=(0,u.useMemo)(()=>{if(!L)return;let e=[];for(let t of L)if(typeof t==`object`&&t.type){let n=be(t.type);n&&e.push({field:t.field,label:t.label,type:n})}return e.length>0?e:void 0},[L]),V=(0,u.useContext)(Ce),re=V?.dataSource??null,H=i.dataSource??O?.dataSource??A?.dataSource??re,U=(0,u.useMemo)(()=>ne||(V?.formValues??V?.data??{}),[ne,V?.formValues,V?.data]),W=(0,u.useMemo)(()=>z.length===0?!1:z.some(({field:e})=>{let t=U[e];return t==null||t===``||Array.isArray(t)&&t.length===0}),[z,U]),G=H!=null&&typeof H.find==`function`&&!!I,[ie,ae]=(0,u.useState)(null);(0,u.useEffect)(()=>{if(!H||!I)return;let e=H.getObjectSchema;if(typeof e!=`function`)return;let t=!0;return Promise.resolve(e.call(H,I)).then(e=>{t&&ae(e)}).catch(()=>{}),()=>{t=!1}},[H,I]);let K=(0,u.useMemo)(()=>{let e=ie?.titleFormat;return typeof e==`string`?e:e&&typeof e==`object`&&typeof e.source==`string`?e.source:null},[ie]),q=i.onCreateNew??O?.onCreateNew,[oe,se]=(0,u.useState)(!1),ce=G?d:j,J=(0,u.useMemo)(()=>{if(G||!s)return ce;let e=s.toLowerCase();return ce.filter(t=>t.label.toLowerCase().includes(e)||t.description&&t.description.toLowerCase().includes(e))},[G,ce,s]);(0,u.useEffect)(()=>{E(-1)},[J.length]);let le=(0,u.useCallback)(async e=>{if(!(!H||!I)){if(W){m([]),x(0);return}_(!0),y(null);try{let t={$top:Se};if(e&&e.trim()&&(t.$search=e.trim()),z.length>0){let e={};for(let{field:t,param:n}of z){let r=U[t];r==null||r===``||(e[n]=typeof r==`number`?r:String(r))}Object.keys(e).length>0&&(t.$filter=e)}let n=await H.find(I,t),r=n?.data??n??[];m(r.map(e=>ye(e,N,F,P,K))),x(n?.total??r.length)}catch(e){y(e instanceof Error?e.message:String(e)),m([])}finally{_(!1)}}},[H,I,N,F,P,K,W,z,U]);(0,u.useEffect)(()=>{a&&G&&z.length>0&&le(s||void 0)},[(0,u.useMemo)(()=>z.map(e=>`${e.param}=${U[e.field]??``}`).join(`|`),[z,U])]),(0,u.useEffect)(()=>{a&&G&&le(s||void 0),a||(c(``),y(null),E(-1))},[a]);let de=(0,u.useCallback)(e=>{c(e),G&&(S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{le(e||void 0)},300))},[G,le]);(0,u.useEffect)(()=>()=>{S.current&&clearTimeout(S.current)},[]),(0,u.useEffect)(()=>{if(!G||!H||!I)return;let t=M?Array.isArray(e)?e:[]:e!=null&&e!==``?[e]:[];if(!t.length)return;let n=t.filter(e=>!fe(e));if(!n.length)return;let r=!1;return(async()=>{try{let e=[];for(let t of n)if(typeof H.findOne==`function`){let n=await H.findOne(I,t);n&&e.push(ye(n,N,F,P,K))}else{let n=await H.find(I,{$filter:{[F]:t},$top:1}),r=n?.data??n??[];r[0]&&e.push(ye(r[0],N,F,P,K))}!r&&e.length&&w(t=>{let n=new Map(t.map(e=>[e.value,e]));for(let t of e)n.set(t.value,t);return Array.from(n.values())})}catch{}})(),()=>{r=!0}},[e,G,I,N,F,P,M]);let fe=(0,u.useCallback)(e=>j.find(t=>t.value===e)??d.find(t=>t.value===e)??C.find(t=>t.value===e),[j,d,C]),Y=M?(Array.isArray(e)?e:[]).map(fe).filter(Boolean):e?[fe(e)].filter(Boolean):[],X=(0,u.useCallback)(n=>{if(M){let r=Array.isArray(e)?e:[];r.includes(n.value)?t(r.filter(e=>e!==n.value)):t([...r,n.value])}else t(n.value),o(!1)},[M,e,t]),pe=n=>{t(M?(Array.isArray(e)?e:[]).filter(e=>e!==n):null)},he=(0,u.useCallback)(e=>{w(e.map(e=>ye(e,N,F,P,K)))},[N,F,P,K]),ge=(0,u.useCallback)(e=>{e.key===`ArrowDown`?(e.preventDefault(),E(e=>e<J.length-1?e+1:e)):e.key===`ArrowUp`?(e.preventDefault(),E(e=>e>0?e-1:0)):e.key===`Enter`&&(e.preventDefault(),T>=0&&T<J.length&&X(J[T]))},[J,T,X]);return(0,u.useEffect)(()=>{T>=0&&D.current&&D.current.querySelector(`[data-lookup-index="${T}"]`)?.scrollIntoView({block:`nearest`})},[T]),r?Y.length?M?(0,h.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:Y.map((e,t)=>(0,h.jsx)(f.Badge,{variant:`outline`,children:e?.label||e?.[N]},t))}):(0,h.jsx)(`span`,{className:`text-sm`,children:Y[0]?.label||Y[0]?.[N]}):(0,h.jsx)(f.EmptyValue,{}):(0,h.jsxs)(`div`,{className:`space-y-2`,children:[Y.length>0&&(0,h.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:Y.map((e,t)=>(0,h.jsxs)(f.Badge,{variant:`outline`,className:`gap-1`,children:[e?.label||e?.[N],(0,h.jsx)(`button`,{onClick:()=>pe(e?.value),className:`ml-1 hover:text-destructive`,type:`button`,"aria-label":`Remove ${e?.label||e?.[N]}`,children:(0,h.jsx)(p.X,{className:`size-3`})})]},t))}),(0,h.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,h.jsxs)(f.Popover,{open:a,onOpenChange:e=>!W&&o(e),children:[(0,h.jsx)(f.PopoverTrigger,{asChild:!0,children:(0,h.jsxs)(f.Button,{variant:`outline`,className:`min-w-0 flex-1 justify-start text-left font-normal`,type:`button`,disabled:W||i.disabled,"data-testid":W?`lookup-trigger-gated`:void 0,title:W?`Select ${z.map(e=>e.field).join(`, `)} first`:void 0,children:[(0,h.jsx)(p.Search,{className:`mr-2 size-4`}),W?`Select ${z.map(e=>e.field).join(`, `)} first`:Y.length===0?O?.placeholder||l(`common.select`):M?l(`table.selected`,{count:Y.length}):l(`common.select`)]})}),(0,h.jsxs)(f.PopoverContent,{className:`w-[var(--radix-popover-trigger-width)] p-0`,align:`start`,children:[(0,h.jsx)(`div`,{className:`p-2`,children:(0,h.jsxs)(`div`,{className:`relative`,children:[(0,h.jsx)(p.Search,{className:`absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground`}),(0,h.jsx)(f.Input,{placeholder:l(`common.search`)+`...`,value:s,onChange:e=>de(e.target.value),onKeyDown:ge,className:`w-full pl-9 h-8 text-sm`}),g&&(0,h.jsx)(p.Loader2,{className:`absolute right-3 top-1/2 -translate-y-1/2 size-4 animate-spin text-muted-foreground`,"data-testid":`lookup-loading`})]})}),v&&(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-4 px-2`,role:`alert`,children:[(0,h.jsx)(p.AlertCircle,{className:`size-5 text-destructive`}),(0,h.jsx)(`p`,{className:`text-sm text-destructive`,children:v}),(0,h.jsx)(f.Button,{variant:`outline`,size:`sm`,onClick:()=>le(s||void 0),type:`button`,children:`Retry`})]}),g&&J.length===0&&!v&&(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-6`,role:`status`,"aria-live":`polite`,children:[(0,h.jsx)(p.Loader2,{className:`size-6 animate-spin text-muted-foreground`}),(0,h.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading…`})]}),!v&&!(g&&J.length===0)&&(0,h.jsx)(`div`,{ref:D,className:`max-h-64 overflow-y-auto px-1 pb-1`,role:`listbox`,children:J.length===0?(0,h.jsxs)(`div`,{className:`py-4 text-center`,children:[(0,h.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No options found`}),q&&(0,h.jsxs)(f.Button,{variant:`ghost`,size:`sm`,className:`mt-2 gap-1`,type:`button`,onClick:()=>{q(s),o(!1)},children:[(0,h.jsx)(p.Plus,{className:`size-4`}),`Create new`]})]}):(0,h.jsxs)(h.Fragment,{children:[J.map((t,n)=>{let r=M?(Array.isArray(e)?e:[]).includes(t.value):e===t.value;return(0,h.jsxs)(`button`,{"data-lookup-index":n,role:`option`,"aria-selected":r,onClick:()=>X(t),className:`w-full text-left px-3 py-2 rounded-md text-sm hover:bg-accent flex items-center justify-between ${n===T?`bg-accent text-accent-foreground`:r?`bg-accent/50 text-accent-foreground`:``}`,type:`button`,children:[(0,h.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,h.jsx)(`span`,{className:`block truncate`,children:t.label}),t.description&&(0,h.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:t.description})]}),r&&(0,h.jsx)(f.Badge,{variant:`default`,className:`ml-2 shrink-0`,children:`Selected`})]},t.value)}),G&&b>J.length&&(0,h.jsxs)(`p`,{className:`text-xs text-muted-foreground text-center py-2`,children:[`Showing `,J.length,` of `,b,` results.`]}),G&&b>J.length&&(0,h.jsxs)(`button`,{type:`button`,className:`w-full text-center px-3 py-2 rounded-md text-sm font-medium text-primary hover:bg-accent flex items-center justify-center gap-1.5`,onClick:()=>{o(!1),se(!0)},"data-testid":`show-all-results`,children:[(0,h.jsx)(p.TableProperties,{className:`size-3.5`}),`Show All Results (`,b,`)`]}),q&&(0,h.jsxs)(`button`,{type:`button`,className:`w-full text-left px-3 py-2 rounded-md text-sm hover:bg-accent flex items-center gap-1.5 text-muted-foreground`,onClick:()=>{q(s),o(!1)},children:[(0,h.jsx)(p.Plus,{className:`size-3.5`}),`Create new`,s?` "${s}"`:``]})]})})]})]}),G&&(0,h.jsx)(f.Button,{variant:`outline`,size:`icon`,className:`shrink-0`,type:`button`,onClick:()=>se(!0),"aria-label":`Browse all records`,title:`Browse all records`,"data-testid":`browse-all-records`,children:(0,h.jsx)(p.TableProperties,{className:`size-4`})})]}),G&&H&&I&&(0,h.jsx)(ue,{open:oe,onOpenChange:se,title:O?.label||`Select`,multiple:M,dataSource:H,objectName:I,columns:L,displayField:N,titleFormat:K,idField:F,pageSize:te,value:e,onSelect:t,onSelectRecords:he,lookupFilters:R,cellRenderer:me(),filterColumns:B})]})}var Se,Ce,we=o((()=>{X(),ge(),O(),Se=50,Ce=m.SchemaRendererContext})),Te=s({DateTimeField:()=>Ee});function Ee({value:e,onChange:t,field:n,readonly:r,...i}){if(r){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=new Date(e);return(0,h.jsxs)(`span`,{className:`text-sm`,children:[t.toLocaleDateString(),` `,t.toLocaleTimeString()]})}let{inputType:a,...o}=i;return(0,h.jsx)(f.Input,{...o,type:`datetime-local`,value:e||``,onChange:e=>t(e.target.value),disabled:r||o.disabled})}var De=o((()=>{})),Oe=s({TimeField:()=>ke});function ke({value:e,onChange:t,field:n,readonly:r,...i}){if(r)return(0,h.jsx)(`span`,{className:`text-sm`,children:e||(0,h.jsx)(f.EmptyValue,{})});let{inputType:a,...o}=i;return(0,h.jsx)(f.Input,{...o,type:`time`,value:e||``,onChange:e=>t(e.target.value),disabled:r||o.disabled})}var Z=o((()=>{})),Ae=s({PercentField:()=>je});function je({value:e,onChange:t,field:n,readonly:r,errorMessage:i,className:a,...o}){let s=n||o.schema,c=s?.precision??2;if(r)return e==null?(0,h.jsx)(f.EmptyValue,{}):(0,h.jsxs)(`span`,{className:`text-sm font-medium tabular-nums`,children:[(e*100).toFixed(c),`%`]});let l=e==null?``:e*100,u=e==null?0:e*100,d=e=>{if(e.target.value===``){t(null);return}let n=parseFloat(e.target.value);t(isNaN(n)?null:n/100)},p=e=>{if(r||o.disabled)return;if(!Array.isArray(e)||e.length===0){t(null);return}let n=e[0];t(typeof n==`number`?n/100:null)},m=10**-c;return(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{className:`relative`,children:[(0,h.jsx)(f.Input,{...o,type:`number`,value:l,onChange:d,placeholder:s?.placeholder||`0`,disabled:r||o.disabled,className:`pr-8 ${a||``}`,step:(10**-c).toFixed(c),"aria-invalid":!!i}),(0,h.jsx)(`span`,{className:`absolute right-3 top-1/2 -translate-y-1/2 text-sm text-gray-500`,children:`%`})]}),(0,h.jsx)(f.Slider,{value:[u],onValueChange:p,min:0,max:100,step:m,disabled:r||o.disabled,className:`w-full`,"aria-label":`Percentage`,"data-testid":`percent-slider`})]})}var Me=o((()=>{})),Ne=s({PasswordField:()=>Pe});function Pe({value:e,onChange:t,field:n,readonly:r,className:i,...a}){let[o,s]=(0,u.useState)(!1),c=n||a.schema;if(r)return(0,h.jsx)(`span`,{className:`text-sm`,children:`••••••••`});let{inputType:l,...d}=a;return(0,h.jsxs)(`div`,{className:`relative`,children:[(0,h.jsx)(f.Input,{...d,type:o?`text`:`password`,value:e||``,onChange:e=>t(e.target.value),placeholder:c?.placeholder,disabled:r||d.disabled,className:`pr-10 ${i||``}`}),(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,className:`absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent`,onClick:()=>s(!o),tabIndex:-1,children:o?(0,h.jsx)(p.EyeOff,{className:`size-4 text-gray-500`}):(0,h.jsx)(p.Eye,{className:`size-4 text-gray-500`})})]})}var Fe=o((()=>{})),Ie=s({FileField:()=>Le});function Le({value:e,onChange:t,field:n,readonly:r,...i}){let a=(0,u.useRef)(null),o=(0,u.useRef)(null),s=n||i.schema,c=s?.multiple||!1,l=s?.accept?s.accept.join(`,`):void 0,d=s?.maxSize,m=s?.capture??null,g=!l||l.split(`,`).some(e=>e.trim().startsWith(`image/`)||e.trim()===`image/*`||e.trim().startsWith(`.jp`)||e.trim().startsWith(`.png`)||e.trim().startsWith(`.gif`)||e.trim().startsWith(`.webp`)),v=typeof navigator<`u`&&(navigator.maxTouchPoints>0||/Mobi|Android/i.test(navigator.userAgent)),y=m===!1?!1:m??(g&&v?`environment`:null),[b,x]=(0,u.useState)(!1),[S,C]=(0,u.useState)([]),{upload:w}=(0,_.useUpload)(),[T,E]=(0,u.useState)({}),[D,ee]=(0,u.useState)(!1),O=e?Array.isArray(e)?e:[e]:[],k=(0,u.useCallback)(async e=>{if(e.length===0)return;let n=[],r=e.filter(e=>{if(d&&e.size>d){let t=(d/(1024*1024)).toFixed(1);return n.push(`"${e.name}" exceeds max size (${t} MB)`),!1}return!0});if(C(n),r.length!==0){ee(!0);try{let e=(await Promise.all(r.map(async e=>{try{let t=await w(e,{onProgress:t=>E(n=>({...n,[e.name]:t}))});return{name:t.name,original_name:e.name,size:t.size,mime_type:t.mimeType,url:t.url}}catch(t){return n.push(`Failed to upload "${e.name}": ${t.message}`),C([...n]),null}}))).filter(Boolean);if(e.length===0)return;t(c?[...O,...e]:e[0])}finally{ee(!1),E({})}}},[O,c,t,d,w]),A=(0,u.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),x(!0)},[]),j=(0,u.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),x(!1)},[]),M=(0,u.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),x(!1);let t=Array.from(e.dataTransfer.files);if(l){let e=l.split(`,`).map(e=>e.trim().toLowerCase());k(t.filter(t=>{let n=t.name.split(`.`),r=n.length>1?`.`+n.pop()?.toLowerCase():``;return e.some(e=>e===t.type||r&&e===r||e.endsWith(`/*`)&&t.type.startsWith(e.replace(`/*`,`/`)))}))}else k(t)},[l,k]);if(r)return e?(0,h.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(Array.isArray(e)?e:[e]).map((e,t)=>(0,h.jsx)(`span`,{className:`text-sm truncate max-w-xs`,children:e.name||e.original_name||`File`},t))}):(0,h.jsx)(f.EmptyValue,{});let N=e=>{k(Array.from(e.target.files||[]))},P=e=>{if(c){let n=O.filter((t,n)=>n!==e);t(n.length>0?n:null)}else t(null)},F=e=>(e.mime_type||``).startsWith(`image/`);return(0,h.jsxs)(`div`,{className:i.className,children:[(0,h.jsx)(`input`,{ref:a,type:`file`,multiple:c,accept:l,onChange:N,className:`hidden`}),y&&(0,h.jsx)(`input`,{ref:o,type:`file`,accept:`image/*`,capture:y,onChange:N,className:`hidden`,"aria-label":`Camera capture`,"data-testid":`file-field-camera-input`}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{onDragOver:A,onDragLeave:j,onDrop:M,onClick:()=>a.current?.click(),className:`
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(e&&(t=e(e=0)),t),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let u=require(`react`);u=l(u,1);let d=require(`@object-ui/core`),f=require(`@object-ui/components`),p=require(`lucide-react`),m=require(`@object-ui/react`),h=require(`react/jsx-runtime`),g=require(`@object-ui/i18n`),_=require(`@object-ui/providers`);var v=s({TextField:()=>y});function y({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema;if(r)return(0,h.jsx)(`span`,{className:`text-sm`,children:e||(0,h.jsx)(f.EmptyValue,{})});let o=a?.rows,{inputType:s,...c}=i;return o&&o>1?(0,h.jsx)(f.Textarea,{...c,value:e||``,onChange:e=>t(e.target.value),placeholder:a?.placeholder,disabled:r||c.disabled}):(0,h.jsx)(f.Input,{...c,type:a?.type===`password`?`password`:`text`,value:e||``,onChange:e=>t(e.target.value),placeholder:a?.placeholder,disabled:r||c.disabled})}var b=o((()=>{})),x=s({NumberField:()=>S});function S({value:e,onChange:t,field:n,readonly:r,...i}){if(r)return e==null?(0,h.jsx)(f.EmptyValue,{}):(0,h.jsx)(`span`,{className:`text-sm`,children:e});let a=n||i.schema,o=a?.precision,{inputType:s,...c}=i;return(0,h.jsx)(f.Input,{...c,type:`number`,value:e??``,onChange:e=>{let n=e.target.value;t(n===``?null:Number(n))},placeholder:a?.placeholder,disabled:r||c.disabled,step:o?10**-o:`any`})}var C=o((()=>{})),w=s({BooleanField:()=>T});function T({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,o=a?.widget,s=(0,u.useId)(),c=a?.name||s,l=a?.label||`Checkbox`;if(r)return(0,h.jsx)(`span`,{className:`text-sm`,children:e?`Yes`:`No`});let{inputType:d,...p}=i;return o===`checkbox`?(0,h.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,h.jsx)(f.Checkbox,{...p,id:c,checked:!!e,onCheckedChange:e=>t(!!e),disabled:r||p.disabled}),(0,h.jsx)(f.Label,{htmlFor:c,children:l})]}):(0,h.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,h.jsx)(f.Switch,{...p,id:c,checked:!!e,onCheckedChange:t,disabled:r||p.disabled}),(0,h.jsx)(f.Label,{htmlFor:c,children:l})]})}var E=o((()=>{})),D,ee,O=o((()=>{D={"common.selectOption":`Select an option`,"common.select":`Select...`,"common.search":`Search`,"table.selected":`{{count}} selected`},ee=(0,g.createSafeTranslation)(D,`common.selectOption`)})),k=s({SelectField:()=>A});function A({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,o=a?.options||[],{t:s}=ee();if(r){let t=o.find(t=>t.value===e)?.label||e;return t?(0,h.jsx)(`span`,{className:`text-sm`,children:t}):(0,h.jsx)(f.EmptyValue,{})}return(0,h.jsxs)(f.Select,{...i,value:e,onValueChange:t,disabled:r||i.disabled,children:[(0,h.jsx)(f.SelectTrigger,{className:i.className,id:i.id,children:(0,h.jsx)(f.SelectValue,{placeholder:a?.placeholder||s(`common.selectOption`)})}),(0,h.jsx)(f.SelectContent,{position:`popper`,children:o.map(e=>(0,h.jsx)(f.SelectItem,{value:e.value,children:e.label},e.value))})]})}var te=o((()=>{O()})),j=s({DateField:()=>M});function M({value:e,onChange:t,field:n,readonly:r,...i}){if(r)return e?(0,h.jsx)(`span`,{className:`text-sm`,children:new Date(e).toLocaleDateString()}):(0,h.jsx)(f.EmptyValue,{});let{inputType:a,...o}=i;return(0,h.jsx)(f.Input,{...o,type:`date`,value:e||``,onChange:e=>t(e.target.value),disabled:r||o.disabled})}var N=o((()=>{})),P=s({EmailField:()=>F});function F({value:e,onChange:t,field:n,readonly:r,errorMessage:i,...a}){let o=n||a.schema;if(r)return e?(0,h.jsx)(`a`,{href:`mailto:${e}`,className:`text-sm text-blue-600 hover:text-blue-800 hover:underline`,children:e}):(0,h.jsx)(f.EmptyValue,{});let{inputType:s,...c}=a;return(0,h.jsx)(f.Input,{...c,type:`email`,value:e||``,onChange:e=>t(e.target.value),placeholder:o?.placeholder||`email@example.com`,disabled:r||c.disabled,"aria-invalid":!!i})}var I=o((()=>{})),ne=s({PhoneField:()=>L});function L({value:e,onChange:t,field:n,readonly:r,errorMessage:i,...a}){let o=n||a.schema;if(r)return e?(0,h.jsx)(`a`,{href:`tel:${e}`,className:`text-sm text-blue-600 hover:text-blue-800 hover:underline`,children:e}):(0,h.jsx)(f.EmptyValue,{});let{inputType:s,...c}=a;return(0,h.jsx)(f.Input,{...c,type:`tel`,value:e||``,onChange:e=>t(e.target.value),placeholder:o?.placeholder||`(555) 123-4567`,disabled:r||c.disabled,"aria-invalid":!!i})}var R=o((()=>{})),re=s({UrlField:()=>z});function z({value:e,onChange:t,field:n,readonly:r,errorMessage:i,...a}){let o=n||a.schema;if(r)return e?e.startsWith(`http://`)||e.startsWith(`https://`)?(0,h.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`text-sm text-blue-600 hover:text-blue-800 hover:underline`,children:e}):(0,h.jsx)(`span`,{className:`text-sm`,children:e}):(0,h.jsx)(f.EmptyValue,{});let{inputType:s,...c}=a;return(0,h.jsx)(f.Input,{...c,type:`url`,value:e||``,onChange:e=>t(e.target.value),placeholder:o?.placeholder||`https://example.com`,disabled:r||c.disabled,"aria-invalid":!!i})}var B=o((()=>{})),ie=s({CurrencyField:()=>H});function V(e,t,n){if(t)try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t,minimumFractionDigits:n,maximumFractionDigits:n}).format(e)}catch{return`${t} ${e.toFixed(n)}`}try{return new Intl.NumberFormat(`en-US`,{minimumFractionDigits:n,maximumFractionDigits:n}).format(e)}catch{return e.toFixed(n)}}function H({value:e,onChange:t,field:n,readonly:r,errorMessage:i,className:a,...o}){let s=n||o.schema,c=s?.currency,l=s?.precision??2;if(r)return e==null?(0,h.jsx)(f.EmptyValue,{}):(0,h.jsx)(`span`,{className:`text-sm font-medium tabular-nums`,children:V(Number(e),c,l)});let u=e=>{let n=parseFloat(e.target.value);isNaN(n)||t(parseFloat(n.toFixed(l)))},d=c?c===`USD`?`$`:c:``;return(0,h.jsxs)(`div`,{className:`relative`,children:[d&&(0,h.jsx)(`span`,{className:`absolute left-3 top-1/2 -translate-y-1/2 text-sm text-gray-500`,children:d}),(0,h.jsx)(f.Input,{...o,type:`number`,value:e??``,onChange:e=>{t(e.target.value===``?null:parseFloat(e.target.value))},onBlur:u,placeholder:s?.placeholder||`0.00`,disabled:r||o.disabled,className:`${d?`pl-8`:``} ${a||``}`,step:(10**-l).toFixed(l),"aria-invalid":!!i})]})}var U=o((()=>{})),W=s({TextAreaField:()=>ae});function ae({value:e,onChange:t,field:n,readonly:r,errorMessage:i,...a}){if(r)return(0,h.jsx)(`div`,{className:`text-sm whitespace-pre-wrap`,children:e||(0,h.jsx)(f.EmptyValue,{})});let o=n||a.schema,s=o?.rows||4,c=o?.max_length,l=!!(a.mobileFullscreen??o?.mobile_fullscreen??a.mobile_fullscreen??a.schema?.mobile_fullscreen),[d,m]=(0,u.useState)(!1),[g,_]=(0,u.useState)(e??``),v=()=>{_(e??``),m(!0)},y=()=>m(!1),b=()=>{t(g),m(!1)},{inputType:x,mobileFullscreen:S,...C}=a;return(0,h.jsxs)(`div`,{className:`relative`,children:[(0,h.jsx)(f.Textarea,{...C,value:e||``,onChange:e=>t(e.target.value),placeholder:o?.placeholder,disabled:r||C.disabled,rows:s,maxLength:c,"aria-invalid":!!i,className:C.className}),l&&(0,h.jsx)(`button`,{type:`button`,onClick:v,className:`absolute top-1.5 right-1.5 inline-flex items-center justify-center size-7 rounded-md bg-background/80 text-muted-foreground hover:text-foreground hover:bg-background border shadow-sm transition-colors`,"aria-label":`Edit ${o?.label??`text`} fullscreen`,"data-testid":`textarea-fullscreen-toggle`,children:(0,h.jsx)(p.Maximize2,{className:`size-3.5`})}),c&&(0,h.jsxs)(`div`,{className:`absolute bottom-2 right-2 text-xs text-gray-400`,"aria-live":`polite`,"aria-label":`Character count: ${(e||``).length} of ${c}`,children:[(e||``).length,`/`,c]}),l&&(0,h.jsx)(f.Dialog,{open:d,onOpenChange:m,children:(0,h.jsxs)(f.DialogContent,{className:`sm:max-w-3xl h-[100dvh] sm:h-[80vh] max-h-[100dvh] sm:max-h-[80vh] flex flex-col p-0 gap-0`,"data-testid":`textarea-fullscreen-dialog`,children:[(0,h.jsx)(f.DialogHeader,{className:`p-4 border-b`,children:(0,h.jsx)(f.DialogTitle,{className:`text-base`,children:o?.label??`Edit text`})}),(0,h.jsx)(`div`,{className:`flex-1 min-h-0 p-4`,children:(0,h.jsx)(f.Textarea,{autoFocus:!0,value:g,onChange:e=>_(e.target.value),maxLength:c,placeholder:o?.placeholder,className:`h-full min-h-full resize-none text-base`,"data-testid":`textarea-fullscreen-input`})}),(0,h.jsxs)(f.DialogFooter,{className:`p-3 border-t flex-row justify-between sm:justify-end gap-2`,children:[c&&(0,h.jsxs)(`span`,{className:`text-xs text-muted-foreground self-center`,children:[g.length,`/`,c]}),(0,h.jsxs)(`div`,{className:`flex gap-2 ml-auto`,children:[(0,h.jsxs)(f.Button,{type:`button`,variant:`ghost`,onClick:y,children:[(0,h.jsx)(p.X,{className:`size-4 mr-1`}),` Cancel`]}),(0,h.jsxs)(f.Button,{type:`button`,onClick:b,"data-testid":`textarea-fullscreen-save`,children:[(0,h.jsx)(p.Check,{className:`size-4 mr-1`}),` Done`]})]})]})]})})]})}var oe=o((()=>{})),G=s({RichTextField:()=>K});function K({value:e,onChange:t,field:n,readonly:r,errorMessage:i,...a}){if(r)return(0,h.jsx)(`div`,{className:`text-sm prose prose-sm max-w-none`,children:e||(0,h.jsx)(f.EmptyValue,{})});let o=n||a.schema,s=o?.rows||8;return(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-gray-500`,children:[(0,h.jsxs)(`span`,{children:[`Format: `,o?.format||`markdown`]}),(0,h.jsx)(`span`,{className:`italic`,children:`Rich text editor (basic)`})]}),(0,h.jsx)(f.Textarea,{value:e||``,onChange:e=>t(e.target.value),placeholder:o?.placeholder||`Enter text...`,disabled:r||a.disabled,rows:s,className:`font-mono text-sm ${a.className||``}`,"aria-invalid":!!i})]})}var se=o((()=>{}));function ce(e){return typeof e==`string`?{field:e}:e}function le(e){return e.replace(/_/g,` `).replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase())}function q(e){let t={};for(let n of e)switch(n.operator){case`eq`:t[n.field]=n.value;break;case`ne`:t[n.field]={$ne:n.value};break;case`gt`:t[n.field]={$gt:n.value};break;case`lt`:t[n.field]={$lt:n.value};break;case`gte`:t[n.field]={$gte:n.value};break;case`lte`:t[n.field]={$lte:n.value};break;case`contains`:t[n.field]={$contains:n.value};break;case`in`:t[n.field]={$in:n.value};break;case`notIn`:t[n.field]={$nin:n.value};break}return t}function ue(e,t){let n={};for(let r of t){let t=e[r.field];t==null||t===``||(r.type===`boolean`?n[r.field]=!!t:r.type===`text`?n[r.field]={$contains:t}:n[r.field]=t)}return n}function de({open:e,onOpenChange:t,title:n=`Select Record`,multiple:r=!1,dataSource:i,objectName:a,columns:o,displayField:s=`name`,titleFormat:c,idField:l=`id`,pageSize:d=fe,value:m,onSelect:g,onSelectRecords:_,lookupFilters:v,cellRenderer:y,filterColumns:b,renderFilterBar:x,renderGrid:S}){let[C,w]=(0,u.useState)([]),[T,E]=(0,u.useState)(!1),[D,ee]=(0,u.useState)(null),[O,k]=(0,u.useState)(0),[A,te]=(0,u.useState)(``),[j,M]=(0,u.useState)(1),N=(0,u.useRef)(null),[P,F]=(0,u.useState)(null),[I,ne]=(0,u.useState)(`asc`),[L,R]=(0,u.useState)(new Set),re=(0,u.useRef)(new Map),[z,B]=(0,u.useState)(-1),ie=(0,u.useRef)(null),[V,H]=(0,u.useState)(!1),[U,W]=(0,u.useState)({}),[ae,oe]=(0,u.useState)({}),G=(0,u.useRef)(null),[K,se]=(0,u.useState)(``),de=(0,u.useMemo)(()=>o&&o.length>0?o.map(ce):[{field:s,label:le(s)}],[o,s]),Y=(0,u.useMemo)(()=>{if(b&&b.length>0)return b;if(v&&v.length>0)return v.map(e=>{let t=`text`;return typeof e.value==`boolean`?t=`boolean`:Array.isArray(e.value)?t=`select`:typeof e.value==`number`||e.operator===`gt`||e.operator===`lt`||e.operator===`gte`||e.operator===`lte`?t=`number`:(e.operator===`in`||e.operator===`notIn`)&&(t=`select`),{field:e.field,label:le(e.field),type:t,...Array.isArray(e.value)?{options:e.value.map(e=>{if(typeof e==`object`&&e){let t=e;return{label:String(t.name||t.label||t.title||e),value:e}}return{label:String(e),value:e}})}:{}}})},[b,v]),me=(0,u.useMemo)(()=>{let e=v?.length?q(v):{},t=Y?.length?ue(U,Y):{},n={...e,...t};return Object.keys(n).length>0?n:void 0},[v,Y,U]),he=Math.max(1,Math.ceil(O/d)),ge=(0,u.useCallback)(async(e,t=1,n,r)=>{if(!(!i||!a)){E(!0),ee(null);try{let o={$top:d,$skip:(t-1)*d};e&&e.trim()&&(o.$search=e.trim()),n&&(o.$orderby={[n.field]:n.direction});let s=r===void 0?me:r;s&&Object.keys(s).length>0&&(o.$filter=s);let c=await i.find(a,o),l=c?.data??c??[];w(l),k(c?.total??l.length),B(-1)}catch(e){ee(e instanceof Error?e.message:String(e)),w([])}finally{E(!1)}}},[i,a,d,me]),_e=(0,u.useMemo)(()=>P?{field:P,direction:I}:null,[P,I]);(0,u.useEffect)(()=>{e||(te(``),M(1),ee(null),w([]),F(null),ne(`asc`),B(-1),H(!1),W({}),oe({}),se(``),R(new Set(r&&Array.isArray(m)?m:[])),re.current.clear())},[e]),(0,u.useEffect)(()=>{e&&ge(A||void 0,j,_e)},[e,j,_e,me]),(0,u.useEffect)(()=>{e&&r&&R(new Set(Array.isArray(m)?m:[]))},[e,r,m]);let ve=(0,u.useCallback)(e=>{te(e),M(1),N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{ge(e||void 0,1,_e)},300)},[ge,_e]);(0,u.useEffect)(()=>()=>{N.current&&clearTimeout(N.current)},[]);let ye=(0,u.useCallback)(e=>{F(t=>t===e?(ne(e=>e===`asc`?`desc`:`asc`),e):(ne(`asc`),e)),M(1)},[]),be=(0,u.useCallback)(e=>e[l]??e.id??e._id,[l]),xe=(0,u.useCallback)(e=>{let t=be(e);return r?L.has(t):m===t},[r,m,L,be]),Se=(0,u.useCallback)(e=>{let n=be(e);r?R(t=>{let r=new Set(t);return r.has(n)?(r.delete(n),re.current.delete(n)):(r.add(n),re.current.set(n,e)),r}):(g(n),_?.([e]),t(!1))},[r,be,g,_,t]),Ce=(0,u.useCallback)(()=>{let e=Array.from(L);g(e);let n=e.map(e=>re.current.get(e)).filter(Boolean);_?.(n),t(!1)},[L,g,_,t]),we=(0,u.useCallback)(()=>{M(e=>Math.max(1,e-1))},[]),Te=(0,u.useCallback)(()=>{M(e=>Math.min(he,e+1))},[he]),Ee=(0,u.useCallback)(e=>{if(e.key!==`Enter`)return;let t=parseInt(K,10);!isNaN(t)&&t>=1&&t<=he&&M(t),se(``)},[K,he]),De=(0,u.useCallback)(e=>{C.length!==0&&(e.key===`ArrowDown`?(e.preventDefault(),B(e=>Math.min(e+1,C.length-1))):e.key===`ArrowUp`?(e.preventDefault(),B(e=>Math.max(e-1,0))):(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),z>=0&&z<C.length&&Se(C[z])))},[C,z,Se]);(0,u.useEffect)(()=>{if(z>=0&&ie.current){let e=ie.current.querySelector(`[data-row-index="${z}"]`);e&&typeof e.scrollIntoView==`function`&&e.scrollIntoView({block:`nearest`})}},[z]);let Oe=(0,u.useCallback)((e,t)=>{if(c&&t.field===s){let t=`[-\\u2013\\u2014|/·,:]`,n=!1,r=c.replace(/\{([^{}]+)\}/g,(t,r)=>{let i=e[r.trim()];return i!=null&&i!==``?(n=!0,String(i)):`\0`});if(n){let e=r.replace(RegExp(`\\s*${t}\\s*`,`g`),``).replace(RegExp(`\\s*${t}\\s*`,`g`),``).replace(RegExp(`\0`,`g`),``).replace(/\s+/g,` `).trim();if(e)return e}}let n=e[t.field];if(t.type&&y){let e=y(t.type);if(e)return(0,h.jsx)(e,{value:n,field:{name:t.field,type:t.type}})}return n==null?``:typeof n==`object`?n.$numberDecimal?String(Number(n.$numberDecimal)):n.$oid?String(n.$oid):n.$date?new Date(n.$date).toLocaleDateString():n.name||n.label?String(n.name||n.label):JSON.stringify(n):typeof n==`boolean`?n?`Yes`:`No`:String(n)},[y,c,s]),ke=(0,u.useCallback)(e=>P===e?I===`asc`?(0,h.jsx)(p.ArrowUp,{className:`ml-1 size-3`}):(0,h.jsx)(p.ArrowDown,{className:`ml-1 size-3`}):(0,h.jsx)(p.ArrowUpDown,{className:`ml-1 size-3 opacity-40`}),[P,I]),Ae=(0,u.useCallback)((e,t,n)=>{e.preventDefault(),e.stopPropagation(),G.current={field:t,startX:e.clientX,startWidth:n};let r=e=>{if(!G.current)return;let t=e.clientX-G.current.startX,n=Math.max(pe,G.current.startWidth+t);oe(e=>({...e,[G.current.field]:n}))},i=()=>{G.current=null,document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)},[]),X=(0,u.useCallback)((e,t)=>{W(n=>({...n,[e]:t})),M(1)},[]),je=(0,u.useCallback)(()=>{W({}),M(1)},[]),Me=(0,u.useMemo)(()=>Object.values(U).filter(e=>e!=null&&e!==``).length,[U]),Ne=(0,u.useCallback)(e=>{let t=U[e.field],n=e.label||le(e.field);switch(e.type){case`select`:return(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Label,{className:`text-xs text-muted-foreground`,children:n}),(0,h.jsxs)(f.Select,{value:t==null?``:String(t),onValueChange:t=>X(e.field,t),children:[(0,h.jsx)(f.SelectTrigger,{className:`h-8 text-xs`,children:(0,h.jsx)(f.SelectValue,{placeholder:`Filter ${n}`})}),(0,h.jsx)(f.SelectContent,{children:e.options?.map(e=>(0,h.jsx)(f.SelectItem,{value:String(e.value),children:e.label},String(e.value)))})]})]});case`number`:return(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Label,{className:`text-xs text-muted-foreground`,children:n}),(0,h.jsx)(f.Input,{type:`number`,className:`h-8 text-xs`,value:t??``,placeholder:`Filter ${n}`,onChange:t=>{let n=t.target.value;X(e.field,n===``?``:Number(n))}})]});case`date`:return(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Label,{className:`text-xs text-muted-foreground`,children:n}),(0,h.jsx)(f.Input,{type:`date`,className:`h-8 text-xs`,value:t??``,onChange:t=>X(e.field,t.target.value)})]});case`boolean`:return(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Label,{className:`text-xs text-muted-foreground`,children:n}),(0,h.jsxs)(`div`,{className:`flex items-center gap-2 h-8`,children:[(0,h.jsx)(f.Checkbox,{checked:!!t,onCheckedChange:t=>X(e.field,!!t)}),(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Yes`})]})]});default:return(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Label,{className:`text-xs text-muted-foreground`,children:n}),(0,h.jsx)(f.Input,{className:`h-8 text-xs`,value:t??``,placeholder:`Filter ${n}`,onChange:t=>X(e.field,t.target.value)})]})}},[U,X]),Pe=(0,u.useCallback)((e,t)=>e?`bg-primary/5 hover:bg-primary/10`:t%2==1?`bg-muted/20 hover:bg-accent/30`:`hover:bg-accent/30`,[]);return(0,h.jsx)(f.Dialog,{open:e,onOpenChange:t,children:(0,h.jsxs)(f.DialogContent,{className:`w-[95vw] sm:max-w-3xl lg:max-w-5xl max-h-[85vh] sm:max-h-[80vh] flex flex-col gap-0`,"data-testid":`record-picker-dialog`,children:[(0,h.jsx)(f.DialogHeader,{children:(0,h.jsxs)(f.DialogTitle,{children:[n,r&&(0,h.jsx)(`span`,{className:`sr-only`,children:` (multiple selection)`})]})}),(0,h.jsxs)(`div`,{className:`relative rounded-md border bg-muted/30 mb-3`,children:[(0,h.jsx)(p.Search,{className:`absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground`}),(0,h.jsx)(f.Input,{placeholder:`Search...`,value:A,onChange:e=>ve(e.target.value),className:`pl-9 border-0 bg-transparent shadow-none focus-visible:ring-0`,"data-testid":`record-picker-search`}),T&&(0,h.jsx)(p.Loader2,{className:`absolute right-3 top-1/2 -translate-y-1/2 size-4 animate-spin text-muted-foreground`,"data-testid":`record-picker-loading-indicator`})]}),Y&&Y.length>0&&(0,h.jsx)(`div`,{className:`py-2`,children:x?(0,h.jsx)(`div`,{"data-testid":`record-picker-filter-bar`,children:x({filterColumns:Y,values:U,onChange:X,onClear:je,activeCount:Me})}):(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,"data-testid":`record-picker-filter-bar`,children:[(0,h.jsxs)(f.Button,{type:`button`,variant:Me>0?`secondary`:`outline`,size:`sm`,className:`gap-1.5 shrink-0`,onClick:()=>H(e=>!e),children:[(0,h.jsx)(p.SlidersHorizontal,{className:`size-3.5`}),`Filters`,Me>0&&(0,h.jsx)(`span`,{className:`inline-flex h-5 min-w-[20px] items-center justify-center rounded-full bg-primary/10 px-1 text-xs font-medium text-primary`,children:Me})]}),Me>0&&(0,h.jsxs)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,className:`gap-1 text-xs`,onClick:je,children:[(0,h.jsx)(p.X,{className:`size-3`}),`Clear`]})]}),V&&(0,h.jsx)(`div`,{className:`mt-2 grid gap-3 sm:grid-cols-2 lg:grid-cols-3 border rounded-md p-3 bg-muted/30`,"data-testid":`record-picker-filter-panel`,children:Y.map(e=>(0,h.jsx)(`div`,{children:Ne(e)},e.field))})]})}),D&&(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-4`,role:`alert`,children:[(0,h.jsx)(p.AlertCircle,{className:`size-5 text-destructive`}),(0,h.jsx)(`p`,{className:`text-sm text-destructive`,children:D}),(0,h.jsx)(f.Button,{variant:`outline`,size:`sm`,onClick:()=>ge(A||void 0,j,_e),type:`button`,children:`Retry`})]}),S?(0,h.jsx)(`div`,{className:`flex-1 min-h-0`,"data-testid":`record-picker-grid-slot`,children:S({columns:de,records:C,loading:T,totalCount:O,currentPage:j,pageSize:d,sortField:P,sortDirection:I,onSort:ye,onPageChange:M,onRowClick:Se,isSelected:xe,multiple:r,idField:l,cellRenderer:y})}):(0,h.jsxs)(h.Fragment,{children:[T&&C.length===0&&!D&&(0,h.jsx)(`div`,{className:`flex-1 overflow-hidden min-h-0 border rounded-md`,role:`status`,"aria-live":`polite`,"data-testid":`record-picker-skeleton`,children:(0,h.jsxs)(f.Table,{children:[(0,h.jsx)(f.TableHeader,{children:(0,h.jsxs)(f.TableRow,{className:`bg-muted/40`,children:[r&&(0,h.jsx)(f.TableHead,{className:`w-10`}),de.map(e=>(0,h.jsx)(f.TableHead,{children:(0,h.jsx)(f.Skeleton,{className:`h-4 w-20`})},e.field))]})}),(0,h.jsx)(f.TableBody,{children:Array.from({length:J},(e,t)=>(0,h.jsxs)(f.TableRow,{children:[r&&(0,h.jsx)(f.TableCell,{className:`w-10`,children:(0,h.jsx)(f.Skeleton,{className:`size-4 rounded`})}),de.map(e=>(0,h.jsx)(f.TableCell,{children:(0,h.jsx)(f.Skeleton,{className:`h-4 w-full`})},e.field))]},t))})]})}),!T&&!D&&C.length===0&&(0,h.jsx)(`div`,{className:`py-8 text-center`,children:(0,h.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No records found`})}),!D&&C.length>0&&(0,h.jsxs)(`div`,{className:`relative flex-1 overflow-auto min-h-0 border rounded-md`,tabIndex:0,onKeyDown:De,role:`grid`,"aria-label":`Records`,children:[T&&(0,h.jsx)(`div`,{className:`absolute inset-0 z-10 flex items-center justify-center bg-background/60`,"data-testid":`record-picker-loading-overlay`,children:(0,h.jsx)(p.Loader2,{className:`size-6 animate-spin text-muted-foreground`})}),(0,h.jsxs)(f.Table,{style:Object.keys(ae).length>0?{tableLayout:`fixed`}:void 0,children:[(0,h.jsx)(f.TableHeader,{className:`sticky top-0 z-[5] bg-muted/50 [&_tr]:border-b`,"data-testid":`record-picker-sticky-header`,children:(0,h.jsxs)(f.TableRow,{children:[r&&(0,h.jsx)(f.TableHead,{className:`w-10`}),de.map(e=>{let t=ae[e.field];return(0,h.jsxs)(f.TableHead,{style:t?{width:`${t}px`,minWidth:`${t}px`}:e.width?{width:e.width}:void 0,className:`cursor-pointer select-none relative group text-xs font-semibold uppercase tracking-wider`,onClick:()=>ye(e.field),"aria-sort":P===e.field?I===`asc`?`ascending`:`descending`:`none`,children:[(0,h.jsxs)(`span`,{className:`inline-flex items-center`,children:[e.label||le(e.field),ke(e.field)]}),(0,h.jsx)(`span`,{role:`separator`,"aria-orientation":`vertical`,className:`absolute right-0 top-0 bottom-0 w-1 cursor-col-resize opacity-0 group-hover:opacity-100 bg-border hover:bg-primary/50 transition-opacity`,onMouseDown:t=>{let n=t.currentTarget.parentElement?.getBoundingClientRect();Ae(t,e.field,n?.width??100)},onClick:e=>e.stopPropagation(),"data-testid":`resize-handle-${e.field}`})]},e.field)})]})}),(0,h.jsx)(f.TableBody,{ref:ie,children:C.map((e,t)=>{let n=be(e),i=xe(e),a=t===z;return(0,h.jsxs)(f.TableRow,{"data-row-index":t,className:(0,f.cn)(`cursor-pointer transition-colors`,Pe(i,t),a&&`ring-2 ring-primary ring-inset`),onClick:()=>Se(e),"data-testid":`record-row-${n}`,"aria-selected":i,children:[r&&(0,h.jsx)(f.TableCell,{className:`w-10`,children:i&&(0,h.jsx)(p.Check,{className:`size-4 text-primary`})}),de.map(t=>(0,h.jsx)(f.TableCell,{className:`py-2.5`,children:Oe(e,t)},t.field))]},n??t)})})]})]}),!D&&O>0&&(0,h.jsxs)(`div`,{className:`flex items-center justify-between text-sm text-muted-foreground border-t pt-3 mt-2 px-1`,"data-testid":`record-picker-pagination`,children:[(0,h.jsxs)(`span`,{children:[O,` `,O===1?`record`:`records`,he>1&&` · Page ${j} of ${he}`]}),he>1&&(0,h.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,h.jsx)(f.Button,{variant:`outline`,size:`icon`,className:`size-7`,onClick:we,disabled:j<=1,type:`button`,"aria-label":`Previous page`,children:(0,h.jsx)(p.ChevronLeft,{className:`size-4`})}),(0,h.jsx)(f.Input,{className:`h-7 w-12 text-center text-xs px-1`,placeholder:String(j),value:K,onChange:e=>se(e.target.value),onKeyDown:Ee,"aria-label":`Jump to page`,"data-testid":`record-picker-page-jump`}),(0,h.jsx)(f.Button,{variant:`outline`,size:`icon`,className:`size-7`,onClick:Te,disabled:j>=he,type:`button`,"aria-label":`Next page`,children:(0,h.jsx)(p.ChevronRight,{className:`size-4`})})]})]})]}),r&&(0,h.jsx)(f.DialogFooter,{children:(0,h.jsxs)(`div`,{className:`flex items-center gap-2 w-full justify-between`,children:[(0,h.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[L.size,` selected`]}),(0,h.jsxs)(`div`,{className:`flex gap-2`,children:[(0,h.jsx)(f.Button,{variant:`outline`,type:`button`,onClick:()=>t(!1),children:`Cancel`}),(0,h.jsx)(f.Button,{type:`button`,onClick:Ce,children:`Confirm`})]})]})})]})})}var fe,pe,J,Y=o((()=>{fe=10,pe=60,J=5}));function me(e){ge=e}function he(){return ge}var ge,_e=o((()=>{})),ve=s({LookupField:()=>Se});function ye(e,t){if(!e||typeof e!=`object`||!t)return null;let n=`[-\\u2013\\u2014|/·,:]`,r=!1,i=t.replace(/\{([^{}]+)\}/g,(t,n)=>{let i=e[n.trim()];return i!=null&&i!==``?(r=!0,String(i)):`\0`});return r&&i.replace(RegExp(`\\s*${n}\\s*`,`g`),``).replace(RegExp(`\\s*${n}\\s*`,`g`),``).replace(RegExp(`\0`,`g`),``).replace(/\s+/g,` `).trim()||null}function be(e,t,n,r,i){let a=e[n]??e.id??e._id,o=(i?ye(e,i):null)??e[t]??e.label??e.name??e.full_name??e.title??e.subject??String(a),s=r?e[r]:void 0;return{value:a,label:String(o),description:s,...e}}function xe(e){return{text:`text`,number:`number`,currency:`number`,percent:`number`,select:`select`,status:`select`,date:`date`,datetime:`date`,boolean:`boolean`}[e]}function Se({value:e,onChange:t,field:n,readonly:r,...i}){let[a,o]=(0,u.useState)(!1),[s,c]=(0,u.useState)(``),{t:l}=ee(),[d,m]=(0,u.useState)([]),[g,_]=(0,u.useState)(!1),[v,y]=(0,u.useState)(null),[b,x]=(0,u.useState)(0),S=(0,u.useRef)(null),[C,w]=(0,u.useState)([]),[T,E]=(0,u.useState)(-1),D=(0,u.useRef)(null),O=n||i.schema,k=O?.field,A=k&&typeof k==`object`&&(`reference_to`in k||`reference`in k||`type`in k)?k:O,te=A?.options||[],j=A?.multiple||!1,M=A?.display_field||A?.reference_field||`name`,N=A?.description_field,P=A?.id_field||`id`,F=A?.reference_to||A?.reference,I=A?.lookup_columns,ne=A?.lookup_page_size,L=A?.lookup_filters,R=(0,u.useMemo)(()=>{let e=A?.depends_on??A?.dependsOn;return e&&Array.isArray(e)?e.map(e=>typeof e==`string`?{field:e,param:e}:{field:e.field,param:e.param??e.field}):[]},[A?.depends_on,A?.dependsOn]),re=i.dependentValues,z=(0,u.useMemo)(()=>{if(!I)return;let e=[];for(let t of I)if(typeof t==`object`&&t.type){let n=xe(t.type);n&&e.push({field:t.field,label:t.label,type:n})}return e.length>0?e:void 0},[I]),B=(0,u.useContext)(we),ie=B?.dataSource??null,V=i.dataSource??O?.dataSource??A?.dataSource??ie,H=(0,u.useMemo)(()=>re||(B?.formValues??B?.data??{}),[re,B?.formValues,B?.data]),U=(0,u.useMemo)(()=>R.length===0?!1:R.some(({field:e})=>{let t=H[e];return t==null||t===``||Array.isArray(t)&&t.length===0}),[R,H]),W=V!=null&&typeof V.find==`function`&&!!F,[ae,oe]=(0,u.useState)(null);(0,u.useEffect)(()=>{if(!V||!F)return;let e=V.getObjectSchema;if(typeof e!=`function`)return;let t=!0;return Promise.resolve(e.call(V,F)).then(e=>{t&&oe(e)}).catch(()=>{}),()=>{t=!1}},[V,F]);let G=(0,u.useMemo)(()=>{let e=ae?.titleFormat;return typeof e==`string`?e:e&&typeof e==`object`&&typeof e.source==`string`?e.source:null},[ae]),K=i.onCreateNew??O?.onCreateNew,[se,ce]=(0,u.useState)(!1),le=W?d:te,q=(0,u.useMemo)(()=>{if(W||!s)return le;let e=s.toLowerCase();return le.filter(t=>t.label.toLowerCase().includes(e)||t.description&&t.description.toLowerCase().includes(e))},[W,le,s]);(0,u.useEffect)(()=>{E(-1)},[q.length]);let ue=(0,u.useCallback)(async e=>{if(!(!V||!F)){if(U){m([]),x(0);return}_(!0),y(null);try{let t={$top:Ce};if(e&&e.trim()&&(t.$search=e.trim()),R.length>0){let e={};for(let{field:t,param:n}of R){let r=H[t];r==null||r===``||(e[n]=typeof r==`number`?r:String(r))}Object.keys(e).length>0&&(t.$filter=e)}let n=await V.find(F,t),r=n?.data??n??[];m(r.map(e=>be(e,M,P,N,G))),x(n?.total??r.length)}catch(e){y(e instanceof Error?e.message:String(e)),m([])}finally{_(!1)}}},[V,F,M,P,N,G,U,R,H]);(0,u.useEffect)(()=>{a&&W&&R.length>0&&ue(s||void 0)},[(0,u.useMemo)(()=>R.map(e=>`${e.param}=${H[e.field]??``}`).join(`|`),[R,H])]),(0,u.useEffect)(()=>{a&&W&&ue(s||void 0),a||(c(``),y(null),E(-1))},[a]);let fe=(0,u.useCallback)(e=>{c(e),W&&(S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{ue(e||void 0)},300))},[W,ue]);(0,u.useEffect)(()=>()=>{S.current&&clearTimeout(S.current)},[]),(0,u.useEffect)(()=>{if(!W||!V||!F)return;let t=j?Array.isArray(e)?e:[]:e!=null&&e!==``?[e]:[];if(!t.length)return;let n=t.filter(e=>!pe(e));if(!n.length)return;let r=!1;return(async()=>{try{let e=[];for(let t of n)if(typeof V.findOne==`function`){let n=await V.findOne(F,t);n&&e.push(be(n,M,P,N,G))}else{let n=await V.find(F,{$filter:{[P]:t},$top:1}),r=n?.data??n??[];r[0]&&e.push(be(r[0],M,P,N,G))}!r&&e.length&&w(t=>{let n=new Map(t.map(e=>[e.value,e]));for(let t of e)n.set(t.value,t);return Array.from(n.values())})}catch{}})(),()=>{r=!0}},[e,W,F,M,P,N,j]);let pe=(0,u.useCallback)(e=>te.find(t=>t.value===e)??d.find(t=>t.value===e)??C.find(t=>t.value===e),[te,d,C]),J=j?(Array.isArray(e)?e:[]).map(pe).filter(Boolean):e?[pe(e)].filter(Boolean):[],Y=(0,u.useCallback)(n=>{if(j){let r=Array.isArray(e)?e:[];r.includes(n.value)?t(r.filter(e=>e!==n.value)):t([...r,n.value])}else t(n.value),o(!1)},[j,e,t]),me=n=>{t(j?(Array.isArray(e)?e:[]).filter(e=>e!==n):null)},ge=(0,u.useCallback)(e=>{w(e.map(e=>be(e,M,P,N,G)))},[M,P,N,G]),_e=(0,u.useCallback)(e=>{e.key===`ArrowDown`?(e.preventDefault(),E(e=>e<q.length-1?e+1:e)):e.key===`ArrowUp`?(e.preventDefault(),E(e=>e>0?e-1:0)):e.key===`Enter`&&(e.preventDefault(),T>=0&&T<q.length&&Y(q[T]))},[q,T,Y]);return(0,u.useEffect)(()=>{T>=0&&D.current&&D.current.querySelector(`[data-lookup-index="${T}"]`)?.scrollIntoView({block:`nearest`})},[T]),r?J.length?j?(0,h.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:J.map((e,t)=>(0,h.jsx)(f.Badge,{variant:`outline`,children:e?.label||e?.[M]},t))}):(0,h.jsx)(`span`,{className:`text-sm`,children:J[0]?.label||J[0]?.[M]}):(0,h.jsx)(f.EmptyValue,{}):(0,h.jsxs)(`div`,{className:`space-y-2`,children:[J.length>0&&(0,h.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:J.map((e,t)=>(0,h.jsxs)(f.Badge,{variant:`outline`,className:`gap-1`,children:[e?.label||e?.[M],(0,h.jsx)(`button`,{onClick:()=>me(e?.value),className:`ml-1 hover:text-destructive`,type:`button`,"aria-label":`Remove ${e?.label||e?.[M]}`,children:(0,h.jsx)(p.X,{className:`size-3`})})]},t))}),(0,h.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,h.jsxs)(f.Popover,{open:a,onOpenChange:e=>!U&&o(e),children:[(0,h.jsx)(f.PopoverTrigger,{asChild:!0,children:(0,h.jsxs)(f.Button,{variant:`outline`,className:`min-w-0 flex-1 justify-start text-left font-normal`,type:`button`,disabled:U||i.disabled,"data-testid":U?`lookup-trigger-gated`:void 0,title:U?`Select ${R.map(e=>e.field).join(`, `)} first`:void 0,children:[(0,h.jsx)(p.Search,{className:`mr-2 size-4`}),U?`Select ${R.map(e=>e.field).join(`, `)} first`:J.length===0?O?.placeholder||l(`common.select`):j?l(`table.selected`,{count:J.length}):l(`common.select`)]})}),(0,h.jsxs)(f.PopoverContent,{className:`w-[var(--radix-popover-trigger-width)] p-0`,align:`start`,children:[(0,h.jsx)(`div`,{className:`p-2`,children:(0,h.jsxs)(`div`,{className:`relative`,children:[(0,h.jsx)(p.Search,{className:`absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground`}),(0,h.jsx)(f.Input,{placeholder:l(`common.search`)+`...`,value:s,onChange:e=>fe(e.target.value),onKeyDown:_e,className:`w-full pl-9 h-8 text-sm`}),g&&(0,h.jsx)(p.Loader2,{className:`absolute right-3 top-1/2 -translate-y-1/2 size-4 animate-spin text-muted-foreground`,"data-testid":`lookup-loading`})]})}),v&&(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-4 px-2`,role:`alert`,children:[(0,h.jsx)(p.AlertCircle,{className:`size-5 text-destructive`}),(0,h.jsx)(`p`,{className:`text-sm text-destructive`,children:v}),(0,h.jsx)(f.Button,{variant:`outline`,size:`sm`,onClick:()=>ue(s||void 0),type:`button`,children:`Retry`})]}),g&&q.length===0&&!v&&(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-6`,role:`status`,"aria-live":`polite`,children:[(0,h.jsx)(p.Loader2,{className:`size-6 animate-spin text-muted-foreground`}),(0,h.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading…`})]}),!v&&!(g&&q.length===0)&&(0,h.jsx)(`div`,{ref:D,className:`max-h-64 overflow-y-auto px-1 pb-1`,role:`listbox`,children:q.length===0?(0,h.jsxs)(`div`,{className:`py-4 text-center`,children:[(0,h.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No options found`}),K&&(0,h.jsxs)(f.Button,{variant:`ghost`,size:`sm`,className:`mt-2 gap-1`,type:`button`,onClick:()=>{K(s),o(!1)},children:[(0,h.jsx)(p.Plus,{className:`size-4`}),`Create new`]})]}):(0,h.jsxs)(h.Fragment,{children:[q.map((t,n)=>{let r=j?(Array.isArray(e)?e:[]).includes(t.value):e===t.value;return(0,h.jsxs)(`button`,{"data-lookup-index":n,role:`option`,"aria-selected":r,onClick:()=>Y(t),className:`w-full text-left px-3 py-2 rounded-md text-sm hover:bg-accent flex items-center justify-between ${n===T?`bg-accent text-accent-foreground`:r?`bg-accent/50 text-accent-foreground`:``}`,type:`button`,children:[(0,h.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,h.jsx)(`span`,{className:`block truncate`,children:t.label}),t.description&&(0,h.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:t.description})]}),r&&(0,h.jsx)(f.Badge,{variant:`default`,className:`ml-2 shrink-0`,children:`Selected`})]},t.value)}),W&&b>q.length&&(0,h.jsxs)(`p`,{className:`text-xs text-muted-foreground text-center py-2`,children:[`Showing `,q.length,` of `,b,` results.`]}),W&&b>q.length&&(0,h.jsxs)(`button`,{type:`button`,className:`w-full text-center px-3 py-2 rounded-md text-sm font-medium text-primary hover:bg-accent flex items-center justify-center gap-1.5`,onClick:()=>{o(!1),ce(!0)},"data-testid":`show-all-results`,children:[(0,h.jsx)(p.TableProperties,{className:`size-3.5`}),`Show All Results (`,b,`)`]}),K&&(0,h.jsxs)(`button`,{type:`button`,className:`w-full text-left px-3 py-2 rounded-md text-sm hover:bg-accent flex items-center gap-1.5 text-muted-foreground`,onClick:()=>{K(s),o(!1)},children:[(0,h.jsx)(p.Plus,{className:`size-3.5`}),`Create new`,s?` "${s}"`:``]})]})})]})]}),W&&(0,h.jsx)(f.Button,{variant:`outline`,size:`icon`,className:`shrink-0`,type:`button`,onClick:()=>ce(!0),"aria-label":`Browse all records`,title:`Browse all records`,"data-testid":`browse-all-records`,children:(0,h.jsx)(p.TableProperties,{className:`size-4`})})]}),W&&V&&F&&(0,h.jsx)(de,{open:se,onOpenChange:ce,title:O?.label||`Select`,multiple:j,dataSource:V,objectName:F,columns:I,displayField:M,titleFormat:G,idField:P,pageSize:ne,value:e,onSelect:t,onSelectRecords:ge,lookupFilters:L,cellRenderer:he(),filterColumns:z})]})}var Ce,we,Te=o((()=>{Y(),_e(),O(),Ce=50,we=m.SchemaRendererContext})),Ee=s({DateTimeField:()=>De});function De({value:e,onChange:t,field:n,readonly:r,...i}){if(r){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=new Date(e);return(0,h.jsxs)(`span`,{className:`text-sm`,children:[t.toLocaleDateString(),` `,t.toLocaleTimeString()]})}let{inputType:a,...o}=i;return(0,h.jsx)(f.Input,{...o,type:`datetime-local`,value:e||``,onChange:e=>t(e.target.value),disabled:r||o.disabled})}var Oe=o((()=>{})),ke=s({TimeField:()=>Ae});function Ae({value:e,onChange:t,field:n,readonly:r,...i}){if(r)return(0,h.jsx)(`span`,{className:`text-sm`,children:e||(0,h.jsx)(f.EmptyValue,{})});let{inputType:a,...o}=i;return(0,h.jsx)(f.Input,{...o,type:`time`,value:e||``,onChange:e=>t(e.target.value),disabled:r||o.disabled})}var X=o((()=>{})),je=s({PercentField:()=>Me});function Me({value:e,onChange:t,field:n,readonly:r,errorMessage:i,className:a,...o}){let s=n||o.schema,c=s?.precision??2;if(r)return e==null?(0,h.jsx)(f.EmptyValue,{}):(0,h.jsxs)(`span`,{className:`text-sm font-medium tabular-nums`,children:[(e*100).toFixed(c),`%`]});let l=e==null?``:e*100,u=e==null?0:e*100,d=e=>{if(e.target.value===``){t(null);return}let n=parseFloat(e.target.value);t(isNaN(n)?null:n/100)},p=e=>{if(r||o.disabled)return;if(!Array.isArray(e)||e.length===0){t(null);return}let n=e[0];t(typeof n==`number`?n/100:null)},m=10**-c;return(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{className:`relative`,children:[(0,h.jsx)(f.Input,{...o,type:`number`,value:l,onChange:d,placeholder:s?.placeholder||`0`,disabled:r||o.disabled,className:`pr-8 ${a||``}`,step:(10**-c).toFixed(c),"aria-invalid":!!i}),(0,h.jsx)(`span`,{className:`absolute right-3 top-1/2 -translate-y-1/2 text-sm text-gray-500`,children:`%`})]}),(0,h.jsx)(f.Slider,{value:[u],onValueChange:p,min:0,max:100,step:m,disabled:r||o.disabled,className:`w-full`,"aria-label":`Percentage`,"data-testid":`percent-slider`})]})}var Ne=o((()=>{})),Pe=s({PasswordField:()=>Fe});function Fe({value:e,onChange:t,field:n,readonly:r,className:i,...a}){let[o,s]=(0,u.useState)(!1),c=n||a.schema;if(r)return(0,h.jsx)(`span`,{className:`text-sm`,children:`••••••••`});let{inputType:l,...d}=a;return(0,h.jsxs)(`div`,{className:`relative`,children:[(0,h.jsx)(f.Input,{...d,type:o?`text`:`password`,value:e||``,onChange:e=>t(e.target.value),placeholder:c?.placeholder,disabled:r||d.disabled,className:`pr-10 ${i||``}`}),(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,className:`absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent`,onClick:()=>s(!o),tabIndex:-1,children:o?(0,h.jsx)(p.EyeOff,{className:`size-4 text-gray-500`}):(0,h.jsx)(p.Eye,{className:`size-4 text-gray-500`})})]})}var Ie=o((()=>{})),Le=s({FileField:()=>Re});function Re({value:e,onChange:t,field:n,readonly:r,...i}){let a=(0,u.useRef)(null),o=(0,u.useRef)(null),s=n||i.schema,c=s?.multiple||!1,l=s?.accept?s.accept.join(`,`):void 0,d=s?.maxSize,m=s?.capture??null,g=!l||l.split(`,`).some(e=>e.trim().startsWith(`image/`)||e.trim()===`image/*`||e.trim().startsWith(`.jp`)||e.trim().startsWith(`.png`)||e.trim().startsWith(`.gif`)||e.trim().startsWith(`.webp`)),v=typeof navigator<`u`&&(navigator.maxTouchPoints>0||/Mobi|Android/i.test(navigator.userAgent)),y=m===!1?!1:m??(g&&v?`environment`:null),[b,x]=(0,u.useState)(!1),[S,C]=(0,u.useState)([]),{upload:w}=(0,_.useUpload)(),[T,E]=(0,u.useState)({}),[D,ee]=(0,u.useState)(!1),O=e?Array.isArray(e)?e:[e]:[],k=(0,u.useCallback)(async e=>{if(e.length===0)return;let n=[],r=e.filter(e=>{if(d&&e.size>d){let t=(d/(1024*1024)).toFixed(1);return n.push(`"${e.name}" exceeds max size (${t} MB)`),!1}return!0});if(C(n),r.length!==0){ee(!0);try{let e=(await Promise.all(r.map(async e=>{try{let t=await w(e,{onProgress:t=>E(n=>({...n,[e.name]:t}))});return{name:t.name,original_name:e.name,size:t.size,mime_type:t.mimeType,url:t.url}}catch(t){return n.push(`Failed to upload "${e.name}": ${t.message}`),C([...n]),null}}))).filter(Boolean);if(e.length===0)return;t(c?[...O,...e]:e[0])}finally{ee(!1),E({})}}},[O,c,t,d,w]),A=(0,u.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),x(!0)},[]),te=(0,u.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),x(!1)},[]),j=(0,u.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),x(!1);let t=Array.from(e.dataTransfer.files);if(l){let e=l.split(`,`).map(e=>e.trim().toLowerCase());k(t.filter(t=>{let n=t.name.split(`.`),r=n.length>1?`.`+n.pop()?.toLowerCase():``;return e.some(e=>e===t.type||r&&e===r||e.endsWith(`/*`)&&t.type.startsWith(e.replace(`/*`,`/`)))}))}else k(t)},[l,k]);if(r)return e?(0,h.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(Array.isArray(e)?e:[e]).map((e,t)=>(0,h.jsx)(`span`,{className:`text-sm truncate max-w-xs`,children:e.name||e.original_name||`File`},t))}):(0,h.jsx)(f.EmptyValue,{});let M=e=>{k(Array.from(e.target.files||[]))},N=e=>{if(c){let n=O.filter((t,n)=>n!==e);t(n.length>0?n:null)}else t(null)},P=e=>(e.mime_type||``).startsWith(`image/`);return(0,h.jsxs)(`div`,{className:i.className,children:[(0,h.jsx)(`input`,{ref:a,type:`file`,multiple:c,accept:l,onChange:M,className:`hidden`}),y&&(0,h.jsx)(`input`,{ref:o,type:`file`,accept:`image/*`,capture:y,onChange:M,className:`hidden`,"aria-label":`Camera capture`,"data-testid":`file-field-camera-input`}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{onDragOver:A,onDragLeave:te,onDrop:j,onClick:()=>a.current?.click(),className:`
|
|
2
2
|
flex flex-col items-center justify-center gap-2 p-6
|
|
3
3
|
border-2 border-dashed rounded-lg cursor-pointer
|
|
4
4
|
transition-colors duration-200
|
|
5
5
|
${b?`border-primary bg-primary/5 text-primary`:`border-muted-foreground/25 hover:border-primary/50 text-muted-foreground hover:text-foreground`}
|
|
6
|
-
`,role:`button`,tabIndex:0,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a.current?.click())},children:[(0,h.jsx)(p.Upload,{className:`size-8 ${b?`text-primary`:`text-muted-foreground`}`}),(0,h.jsxs)(`div`,{className:`text-center`,children:[(0,h.jsx)(`p`,{className:`text-sm font-medium`,children:b?`Drop files here`:`Drag & drop files here`}),(0,h.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[`or click to browse`,y?` • use the camera button below`:``]})]})]}),y&&(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,size:`sm`,className:`w-full`,onClick:e=>{e.stopPropagation(),o.current?.click()},"data-testid":`file-field-camera-button`,children:[(0,h.jsx)(p.Camera,{className:`size-4 mr-2`}),y===`user`?`Take selfie`:`Take photo`]}),D&&(0,h.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,"data-testid":`file-field-uploading`,children:[(0,h.jsx)(p.Loader2,{className:`size-3 animate-spin`}),(0,h.jsxs)(`span`,{children:[`Uploading…`,Object.keys(T).length>0&&` (${Math.round(Object.values(T).reduce((e,t)=>e+t,0)/Object.keys(T).length*100)}%)`]})]}),S.length>0&&(0,h.jsx)(`div`,{className:`space-y-0.5`,children:S.map((e,t)=>(0,h.jsx)(`p`,{className:`text-xs text-destructive`,children:e},t))}),O.length>0&&(0,h.jsx)(`div`,{className:`space-y-1`,children:O.map((e,t)=>(0,h.jsxs)(`div`,{className:`flex items-center justify-between gap-2 p-2 bg-muted/50 rounded-md border`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[F(e)&&e.url?(0,h.jsx)(`img`,{src:e.url,alt:e.name,className:`size-8 object-cover rounded shrink-0`}):F(e)?(0,h.jsx)(p.ImageIcon,{className:`size-4 text-muted-foreground shrink-0`}):(0,h.jsx)(p.File,{className:`size-4 text-muted-foreground shrink-0`}),(0,h.jsx)(`span`,{className:`text-sm truncate`,children:e.name||e.original_name||`File`}),e.size&&(0,h.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`(`,(e.size/1024).toFixed(1),` KB)`]})]}),(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:e=>{e.stopPropagation(),P(t)},className:`h-6 w-6 p-0`,children:(0,h.jsx)(p.X,{className:`size-3`})})]},t))})]})]})}var Re=o((()=>{})),ze=s({ImageCropperDialog:()=>Be}),Be,Ve=o((()=>{Be=({open:e,onOpenChange:t,src:n,outputType:r=`image/png`,outputName:i=`cropped.png`,onConfirm:a})=>{let o=(0,u.useRef)(null),s=(0,u.useRef)(null),[c,l]=(0,u.useState)(0),[d,m]=(0,u.useState)({x:0,y:0,width:100,height:100}),[g,_]=(0,u.useState)(null),[v,y]=(0,u.useState)(!1);(0,u.useEffect)(()=>{if(!e||!n)return;y(!1);let t=new Image;t.crossOrigin=`anonymous`,t.onload=()=>{s.current=t;let e=t.naturalWidth*.8,n=t.naturalHeight*.8;m({x:(t.naturalWidth-e)/2,y:(t.naturalHeight-n)/2,width:e,height:n}),l(0),y(!0)},t.onerror=()=>y(!1),t.src=n},[e,n]),(0,u.useEffect)(()=>{if(!v||!s.current||!o.current)return;let e=s.current,t=o.current,n=t.getContext(`2d`);if(!n)return;let r=480/e.naturalWidth,i=e.naturalHeight*r;t.width=480,t.height=i,n.clearRect(0,0,480,i),n.save(),n.translate(480/2,i/2),n.rotate(c*Math.PI/180);let a=c%180==0?480:i,l=c%180==0?i:480;n.drawImage(e,-a/2,-l/2,a,l),n.restore();let u=d.x*r,f=d.y*r,p=d.width*r,m=d.height*r;n.fillStyle=`rgba(0,0,0,0.45)`,n.fillRect(0,0,480,f),n.fillRect(0,f+m,480,i-f-m),n.fillRect(0,f,u,m),n.fillRect(u+p,f,480-u-p,m),n.strokeStyle=`#3b82f6`,n.lineWidth=2,n.strokeRect(u,f,p,m)},[v,d,c]);let b=(0,u.useCallback)(e=>{if(!s.current||!o.current)return;let t=o.current.getBoundingClientRect(),n=s.current.naturalWidth/t.width;_({ox:(e.clientX-t.left)*n,oy:(e.clientY-t.top)*n,cx:d.x,cy:d.y}),e.target.setPointerCapture(e.pointerId)},[d]),x=(0,u.useCallback)(e=>{if(!g||!s.current||!o.current)return;let t=o.current.getBoundingClientRect(),n=s.current.naturalWidth/t.width,r=(e.clientX-t.left)*n-g.ox,i=(e.clientY-t.top)*n-g.oy,a=Math.max(0,Math.min(g.cx+r,s.current.naturalWidth-d.width)),c=Math.max(0,Math.min(g.cy+i,s.current.naturalHeight-d.height));m(e=>({...e,x:a,y:c}))},[g,d.width,d.height]),S=(0,u.useCallback)(()=>_(null),[]),C=(0,u.useCallback)(()=>l(e=>(e+90)%360),[]),w=(0,u.useCallback)(async()=>{if(!s.current)return;let e=s.current,n=document.createElement(`canvas`),o=d.width,l=d.height;n.width=c%180==0?o:l,n.height=c%180==0?l:o;let u=n.getContext(`2d`);if(!u)return;u.save(),u.translate(n.width/2,n.height/2),u.rotate(c*Math.PI/180),u.drawImage(e,d.x,d.y,o,l,-o/2,-l/2,o,l),u.restore();let f=await new Promise(e=>n.toBlob(e,r));f&&(a(f,i),t(!1))},[d,c,i,r,a,t]);return(0,h.jsx)(f.Dialog,{open:e,onOpenChange:t,children:(0,h.jsxs)(f.DialogContent,{className:`max-w-xl`,children:[(0,h.jsxs)(f.DialogHeader,{children:[(0,h.jsx)(f.DialogTitle,{children:`Crop & rotate image`}),(0,h.jsx)(f.DialogDescription,{children:`Drag the highlighted box to reposition the crop. Use the rotate button to spin the image in 90° increments.`})]}),(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[v?(0,h.jsx)(`canvas`,{ref:o,"data-testid":`image-cropper-canvas`,role:`img`,"aria-label":`Image crop preview`,className:`border rounded-md cursor-move touch-none max-w-full`,onPointerDown:b,onPointerMove:x,onPointerUp:S,onPointerCancel:S}):(0,h.jsx)(`div`,{className:`flex h-[270px] w-full items-center justify-center text-sm text-muted-foreground`,children:`Loading image…`}),(0,h.jsxs)(`div`,{className:`flex w-full items-center justify-between text-xs text-muted-foreground`,children:[(0,h.jsxs)(`span`,{children:[`Crop: `,Math.round(d.width),` × `,Math.round(d.height),` px`]}),(0,h.jsxs)(`span`,{children:[`Rotation: `,c,`°`]})]})]}),(0,h.jsxs)(f.DialogFooter,{className:`flex justify-between sm:justify-between`,children:[(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,onClick:C,"data-testid":`image-cropper-rotate`,children:[(0,h.jsx)(p.RotateCw,{className:`size-4 mr-2`}),`Rotate 90°`]}),(0,h.jsxs)(`div`,{className:`flex gap-2`,children:[(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,onClick:()=>t(!1),children:`Cancel`}),(0,h.jsxs)(f.Button,{type:`button`,onClick:w,disabled:!v,"data-testid":`image-cropper-confirm`,children:[(0,h.jsx)(p.Crop,{className:`size-4 mr-2`}),`Apply crop`]})]})]})]})})}})),He=s({ImageField:()=>Ue});function Ue({value:e,onChange:t,field:n,readonly:r,...i}){let a=(0,u.useRef)(null),o=n||i.schema,s=o?.multiple||!1,c=o?.accept?o.accept.join(`,`):`image/*`,l=o?.crop!==!1,[d,m]=(0,u.useState)(null),{upload:g}=(0,_.useUpload)(),[v,y]=(0,u.useState)(!1);if(r)return e?(0,h.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(Array.isArray(e)?e:[e]).map((e,t)=>(0,h.jsx)(`img`,{src:e.url||``,alt:e.name||`Image ${t+1}`,className:`size-20 rounded-md object-cover border border-gray-200`},t))}):(0,h.jsx)(f.EmptyValue,{});let b=e?Array.isArray(e)?e:[e]:[],x=async e=>{let n=Array.from(e.target.files||[]);if(n.length!==0){y(!0);try{let e=await Promise.all(n.map(async e=>{let t=await g(e);return{name:t.name,original_name:e.name,size:t.size,mime_type:t.mimeType,url:t.url}}));t(s?[...b,...e]:e[0])}finally{y(!1),a.current&&(a.current.value=``)}}},S=e=>{if(s){let n=b.filter((t,n)=>n!==e);t(n.length>0?n:null)}else t(null)},C=(0,u.useCallback)(async(e,n)=>{if(d){y(!0);try{let r=await g(e),i={name:r.name||n,original_name:n,size:r.size,mime_type:r.mimeType,url:r.url};if(s){let e=[...b];e[d.index]=i,t(e)}else t(i)}finally{y(!1),m(null)}}},[d,b,s,t,g]),w=(0,u.useCallback)(e=>{let t=b[e];t?.url&&m({index:e,src:t.url,name:t.name||`image-${e}.png`})},[b]);return(0,h.jsxs)(`div`,{className:i.className,children:[(0,h.jsx)(`input`,{ref:a,type:`file`,multiple:s,accept:c,onChange:x,className:`hidden`}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[b.length>0&&(0,h.jsx)(`div`,{className:`grid grid-cols-4 gap-2`,children:b.map((e,t)=>(0,h.jsxs)(`div`,{className:`relative group`,children:[(0,h.jsx)(`img`,{src:e.url||``,alt:e.name||`Image ${t+1}`,className:`size-20 rounded-md object-cover border border-gray-200`}),(0,h.jsxs)(`div`,{className:`absolute top-1 right-1 flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity`,children:[l&&(0,h.jsx)(f.Button,{type:`button`,variant:`secondary`,size:`sm`,onClick:()=>w(t),className:`h-6 w-6 p-0`,"aria-label":`Crop image ${t+1}`,"data-testid":`image-field-crop-${t}`,children:(0,h.jsx)(p.Crop,{className:`size-3`})}),(0,h.jsx)(f.Button,{type:`button`,variant:`destructive`,size:`sm`,onClick:()=>S(t),className:`h-6 w-6 p-0`,children:(0,h.jsx)(p.X,{className:`size-3`})})]})]},t))}),(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,onClick:()=>a.current?.click(),className:`w-full`,disabled:v,"data-testid":`image-field-upload-button`,children:[v?(0,h.jsx)(p.Loader2,{className:`size-4 mr-2 animate-spin`}):(0,h.jsx)(p.Image,{className:`size-4 mr-2`}),v?`Uploading…`:b.length>0?`Add More Images`:`Upload Image`]})]}),l&&d&&(0,h.jsx)(u.Suspense,{fallback:null,children:(0,h.jsx)(We,{open:!0,onOpenChange:e=>!e&&m(null),src:d.src,outputName:d.name,onConfirm:C})})]})}var We,Ge=o((()=>{We=(0,u.lazy)(()=>Promise.resolve().then(()=>(Ve(),ze)).then(e=>({default:e.ImageCropperDialog})))})),Ke=s({LocationField:()=>qe});function qe({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,o=e&&typeof e==`object`?`${e.latitude||0}, ${e.longitude||0}`:``;return r?(0,h.jsx)(`span`,{className:`text-sm`,children:o||(0,h.jsx)(f.EmptyValue,{})}):(0,h.jsx)(f.Input,{type:`text`,value:o,onChange:e=>{let n=e.target.value;if(!n.trim()){t(null);return}let r=n.split(`,`).map(e=>e.trim());if(r.length===2){let e=parseFloat(r[0]),n=parseFloat(r[1]);!isNaN(e)&&!isNaN(n)&&t({latitude:e,longitude:n})}},placeholder:a?.placeholder||`latitude, longitude`,disabled:r||i.disabled,className:i.className})}var Je=o((()=>{})),Ye=s({FormulaField:()=>Xe});function Xe({value:e,field:t,...n}){let r=(t||n.schema)?.return_type||`text`;if(e==null)return(0,h.jsx)(f.EmptyValue,{className:n.className});let i;return i=r===`number`||r===`currency`?typeof e==`number`?e.toFixed(2):String(e):r===`boolean`?e?`Yes`:`No`:r===`date`?new Date(e).toLocaleDateString():String(e),(0,h.jsx)(`span`,{className:`text-sm font-mono text-gray-700 ${n.className||``}`,children:i})}var Ze=o((()=>{})),Qe=s({SummaryField:()=>$e});function $e({value:e,field:t,...n}){let r=(t||n.schema)?.summary_type||`count`;if(e==null)return(0,h.jsx)(f.EmptyValue,{className:n.className});let i;return i=r===`count`?String(e):[`sum`,`avg`,`min`,`max`].includes(r)&&typeof e==`number`?e.toFixed(2):String(e),(0,h.jsx)(`span`,{className:`text-sm font-medium tabular-nums text-gray-700 ${n.className||``}`,children:i})}var et=o((()=>{})),tt=s({AutoNumberField:()=>nt});function nt({value:e,field:t,...n}){return e==null?(0,h.jsx)(f.EmptyValue,{className:n.className}):(0,h.jsx)(`span`,{className:`text-sm font-mono text-gray-700 ${n.className||``}`,children:String(e)})}var rt=o((()=>{})),it=s({UserField:()=>at});function at({value:e,onChange:t,field:n,readonly:r,...i}){let a=(n||i.schema)?.multiple||!1;if(r){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=Array.isArray(e)?e:[e];return(0,h.jsxs)(`div`,{className:`flex -space-x-2`,children:[t.slice(0,3).map((e,t)=>{let n=e.name||e.username||`User`;return(0,h.jsx)(f.Avatar,{className:`size-8 border-2 border-white`,title:n,children:(0,h.jsx)(f.AvatarFallback,{className:`bg-blue-500 text-white text-xs`,children:n.split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2)})},t)}),t.length>3&&(0,h.jsx)(f.Avatar,{className:`size-8 border-2 border-white`,children:(0,h.jsxs)(f.AvatarFallback,{className:`bg-gray-200 text-gray-600 text-xs`,children:[`+`,t.length-3]})})]})}let o=e?Array.isArray(e)?e:[e]:[],s=e=>{if(a){let n=o.filter((t,n)=>n!==e);t(n.length>0?n:null)}else t(null)};return(0,h.jsxs)(`div`,{className:i.className,children:[o.length>0&&(0,h.jsx)(`div`,{className:`flex flex-wrap gap-2 mb-2`,children:o.map((e,t)=>{let n=e.name||e.username||`User`;return(0,h.jsxs)(f.Badge,{variant:`outline`,className:`gap-2 pr-1`,children:[(0,h.jsx)(f.Avatar,{className:`size-5`,children:(0,h.jsx)(f.AvatarFallback,{className:`bg-blue-500 text-white text-xs`,children:n.split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2)})}),(0,h.jsx)(`span`,{className:`text-sm`,children:n}),(0,h.jsx)(`button`,{type:`button`,onClick:()=>s(t),className:`ml-1 rounded-full hover:bg-gray-200 p-0.5`,children:(0,h.jsx)(p.X,{className:`size-3`})})]},t)})}),(0,h.jsx)(`div`,{className:`text-sm text-gray-500 italic`,children:`User selection component requires integration with user management system`})]})}var ot=o((()=>{})),st=s({ObjectField:()=>ct});function ct({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,[o,s]=(0,u.useState)(()=>e==null?``:JSON.stringify(e,null,2)),[c,l]=(0,u.useState)(null);return(0,u.useEffect)(()=>{try{if(e==null){s(``);return}let t=o?JSON.parse(o):null;JSON.stringify(t)!==JSON.stringify(e)&&s(JSON.stringify(e,null,2))}catch{s(JSON.stringify(e,null,2))}},[e,o]),r?e?(0,h.jsx)(`pre`,{className:(0,f.cn)(`text-xs bg-gray-50 p-2 rounded border border-gray-200 overflow-auto max-h-40`,i.className),children:JSON.stringify(e,null,2)}):(0,h.jsx)(f.EmptyValue,{}):(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Textarea,{value:o,onChange:e=>{let n=e.target.value;if(s(n),l(null),!n.trim()){t(null);return}try{t(JSON.parse(n))}catch{l(`Invalid JSON`)}},placeholder:a?.placeholder||`{
|
|
6
|
+
`,role:`button`,tabIndex:0,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a.current?.click())},children:[(0,h.jsx)(p.Upload,{className:`size-8 ${b?`text-primary`:`text-muted-foreground`}`}),(0,h.jsxs)(`div`,{className:`text-center`,children:[(0,h.jsx)(`p`,{className:`text-sm font-medium`,children:b?`Drop files here`:`Drag & drop files here`}),(0,h.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[`or click to browse`,y?` • use the camera button below`:``]})]})]}),y&&(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,size:`sm`,className:`w-full`,onClick:e=>{e.stopPropagation(),o.current?.click()},"data-testid":`file-field-camera-button`,children:[(0,h.jsx)(p.Camera,{className:`size-4 mr-2`}),y===`user`?`Take selfie`:`Take photo`]}),D&&(0,h.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,"data-testid":`file-field-uploading`,children:[(0,h.jsx)(p.Loader2,{className:`size-3 animate-spin`}),(0,h.jsxs)(`span`,{children:[`Uploading…`,Object.keys(T).length>0&&` (${Math.round(Object.values(T).reduce((e,t)=>e+t,0)/Object.keys(T).length*100)}%)`]})]}),S.length>0&&(0,h.jsx)(`div`,{className:`space-y-0.5`,children:S.map((e,t)=>(0,h.jsx)(`p`,{className:`text-xs text-destructive`,children:e},t))}),O.length>0&&(0,h.jsx)(`div`,{className:`space-y-1`,children:O.map((e,t)=>(0,h.jsxs)(`div`,{className:`flex items-center justify-between gap-2 p-2 bg-muted/50 rounded-md border`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[P(e)&&e.url?(0,h.jsx)(`img`,{src:e.url,alt:e.name,className:`size-8 object-cover rounded shrink-0`}):P(e)?(0,h.jsx)(p.ImageIcon,{className:`size-4 text-muted-foreground shrink-0`}):(0,h.jsx)(p.File,{className:`size-4 text-muted-foreground shrink-0`}),(0,h.jsx)(`span`,{className:`text-sm truncate`,children:e.name||e.original_name||`File`}),e.size&&(0,h.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`(`,(e.size/1024).toFixed(1),` KB)`]})]}),(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:e=>{e.stopPropagation(),N(t)},className:`h-6 w-6 p-0`,children:(0,h.jsx)(p.X,{className:`size-3`})})]},t))})]})]})}var ze=o((()=>{})),Be=s({ImageCropperDialog:()=>Ve}),Ve,He=o((()=>{Ve=({open:e,onOpenChange:t,src:n,outputType:r=`image/png`,outputName:i=`cropped.png`,onConfirm:a})=>{let o=(0,u.useRef)(null),s=(0,u.useRef)(null),[c,l]=(0,u.useState)(0),[d,m]=(0,u.useState)({x:0,y:0,width:100,height:100}),[g,_]=(0,u.useState)(null),[v,y]=(0,u.useState)(!1);(0,u.useEffect)(()=>{if(!e||!n)return;y(!1);let t=new Image;t.crossOrigin=`anonymous`,t.onload=()=>{s.current=t;let e=t.naturalWidth*.8,n=t.naturalHeight*.8;m({x:(t.naturalWidth-e)/2,y:(t.naturalHeight-n)/2,width:e,height:n}),l(0),y(!0)},t.onerror=()=>y(!1),t.src=n},[e,n]),(0,u.useEffect)(()=>{if(!v||!s.current||!o.current)return;let e=s.current,t=o.current,n=t.getContext(`2d`);if(!n)return;let r=480/e.naturalWidth,i=e.naturalHeight*r;t.width=480,t.height=i,n.clearRect(0,0,480,i),n.save(),n.translate(480/2,i/2),n.rotate(c*Math.PI/180);let a=c%180==0?480:i,l=c%180==0?i:480;n.drawImage(e,-a/2,-l/2,a,l),n.restore();let u=d.x*r,f=d.y*r,p=d.width*r,m=d.height*r;n.fillStyle=`rgba(0,0,0,0.45)`,n.fillRect(0,0,480,f),n.fillRect(0,f+m,480,i-f-m),n.fillRect(0,f,u,m),n.fillRect(u+p,f,480-u-p,m),n.strokeStyle=`#3b82f6`,n.lineWidth=2,n.strokeRect(u,f,p,m)},[v,d,c]);let b=(0,u.useCallback)(e=>{if(!s.current||!o.current)return;let t=o.current.getBoundingClientRect(),n=s.current.naturalWidth/t.width;_({ox:(e.clientX-t.left)*n,oy:(e.clientY-t.top)*n,cx:d.x,cy:d.y}),e.target.setPointerCapture(e.pointerId)},[d]),x=(0,u.useCallback)(e=>{if(!g||!s.current||!o.current)return;let t=o.current.getBoundingClientRect(),n=s.current.naturalWidth/t.width,r=(e.clientX-t.left)*n-g.ox,i=(e.clientY-t.top)*n-g.oy,a=Math.max(0,Math.min(g.cx+r,s.current.naturalWidth-d.width)),c=Math.max(0,Math.min(g.cy+i,s.current.naturalHeight-d.height));m(e=>({...e,x:a,y:c}))},[g,d.width,d.height]),S=(0,u.useCallback)(()=>_(null),[]),C=(0,u.useCallback)(()=>l(e=>(e+90)%360),[]),w=(0,u.useCallback)(async()=>{if(!s.current)return;let e=s.current,n=document.createElement(`canvas`),o=d.width,l=d.height;n.width=c%180==0?o:l,n.height=c%180==0?l:o;let u=n.getContext(`2d`);if(!u)return;u.save(),u.translate(n.width/2,n.height/2),u.rotate(c*Math.PI/180),u.drawImage(e,d.x,d.y,o,l,-o/2,-l/2,o,l),u.restore();let f=await new Promise(e=>n.toBlob(e,r));f&&(a(f,i),t(!1))},[d,c,i,r,a,t]);return(0,h.jsx)(f.Dialog,{open:e,onOpenChange:t,children:(0,h.jsxs)(f.DialogContent,{className:`max-w-xl`,children:[(0,h.jsxs)(f.DialogHeader,{children:[(0,h.jsx)(f.DialogTitle,{children:`Crop & rotate image`}),(0,h.jsx)(f.DialogDescription,{children:`Drag the highlighted box to reposition the crop. Use the rotate button to spin the image in 90° increments.`})]}),(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[v?(0,h.jsx)(`canvas`,{ref:o,"data-testid":`image-cropper-canvas`,role:`img`,"aria-label":`Image crop preview`,className:`border rounded-md cursor-move touch-none max-w-full`,onPointerDown:b,onPointerMove:x,onPointerUp:S,onPointerCancel:S}):(0,h.jsx)(`div`,{className:`flex h-[270px] w-full items-center justify-center text-sm text-muted-foreground`,children:`Loading image…`}),(0,h.jsxs)(`div`,{className:`flex w-full items-center justify-between text-xs text-muted-foreground`,children:[(0,h.jsxs)(`span`,{children:[`Crop: `,Math.round(d.width),` × `,Math.round(d.height),` px`]}),(0,h.jsxs)(`span`,{children:[`Rotation: `,c,`°`]})]})]}),(0,h.jsxs)(f.DialogFooter,{className:`flex justify-between sm:justify-between`,children:[(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,onClick:C,"data-testid":`image-cropper-rotate`,children:[(0,h.jsx)(p.RotateCw,{className:`size-4 mr-2`}),`Rotate 90°`]}),(0,h.jsxs)(`div`,{className:`flex gap-2`,children:[(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,onClick:()=>t(!1),children:`Cancel`}),(0,h.jsxs)(f.Button,{type:`button`,onClick:w,disabled:!v,"data-testid":`image-cropper-confirm`,children:[(0,h.jsx)(p.Crop,{className:`size-4 mr-2`}),`Apply crop`]})]})]})]})})}})),Ue=s({ImageField:()=>We});function We({value:e,onChange:t,field:n,readonly:r,...i}){let a=(0,u.useRef)(null),o=n||i.schema,s=o?.multiple||!1,c=o?.accept?o.accept.join(`,`):`image/*`,l=o?.crop!==!1,[d,m]=(0,u.useState)(null),{upload:g}=(0,_.useUpload)(),[v,y]=(0,u.useState)(!1);if(r)return e?(0,h.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(Array.isArray(e)?e:[e]).map((e,t)=>(0,h.jsx)(`img`,{src:e.url||``,alt:e.name||`Image ${t+1}`,className:`size-20 rounded-md object-cover border border-gray-200`},t))}):(0,h.jsx)(f.EmptyValue,{});let b=e?Array.isArray(e)?e:[e]:[],x=async e=>{let n=Array.from(e.target.files||[]);if(n.length!==0){y(!0);try{let e=await Promise.all(n.map(async e=>{let t=await g(e);return{name:t.name,original_name:e.name,size:t.size,mime_type:t.mimeType,url:t.url}}));t(s?[...b,...e]:e[0])}finally{y(!1),a.current&&(a.current.value=``)}}},S=e=>{if(s){let n=b.filter((t,n)=>n!==e);t(n.length>0?n:null)}else t(null)},C=(0,u.useCallback)(async(e,n)=>{if(d){y(!0);try{let r=await g(e),i={name:r.name||n,original_name:n,size:r.size,mime_type:r.mimeType,url:r.url};if(s){let e=[...b];e[d.index]=i,t(e)}else t(i)}finally{y(!1),m(null)}}},[d,b,s,t,g]),w=(0,u.useCallback)(e=>{let t=b[e];t?.url&&m({index:e,src:t.url,name:t.name||`image-${e}.png`})},[b]);return(0,h.jsxs)(`div`,{className:i.className,children:[(0,h.jsx)(`input`,{ref:a,type:`file`,multiple:s,accept:c,onChange:x,className:`hidden`}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[b.length>0&&(0,h.jsx)(`div`,{className:`grid grid-cols-4 gap-2`,children:b.map((e,t)=>(0,h.jsxs)(`div`,{className:`relative group`,children:[(0,h.jsx)(`img`,{src:e.url||``,alt:e.name||`Image ${t+1}`,className:`size-20 rounded-md object-cover border border-gray-200`}),(0,h.jsxs)(`div`,{className:`absolute top-1 right-1 flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity`,children:[l&&(0,h.jsx)(f.Button,{type:`button`,variant:`secondary`,size:`sm`,onClick:()=>w(t),className:`h-6 w-6 p-0`,"aria-label":`Crop image ${t+1}`,"data-testid":`image-field-crop-${t}`,children:(0,h.jsx)(p.Crop,{className:`size-3`})}),(0,h.jsx)(f.Button,{type:`button`,variant:`destructive`,size:`sm`,onClick:()=>S(t),className:`h-6 w-6 p-0`,children:(0,h.jsx)(p.X,{className:`size-3`})})]})]},t))}),(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,onClick:()=>a.current?.click(),className:`w-full`,disabled:v,"data-testid":`image-field-upload-button`,children:[v?(0,h.jsx)(p.Loader2,{className:`size-4 mr-2 animate-spin`}):(0,h.jsx)(p.Image,{className:`size-4 mr-2`}),v?`Uploading…`:b.length>0?`Add More Images`:`Upload Image`]})]}),l&&d&&(0,h.jsx)(u.Suspense,{fallback:null,children:(0,h.jsx)(Ge,{open:!0,onOpenChange:e=>!e&&m(null),src:d.src,outputName:d.name,onConfirm:C})})]})}var Ge,Ke=o((()=>{Ge=(0,u.lazy)(()=>Promise.resolve().then(()=>(He(),Be)).then(e=>({default:e.ImageCropperDialog})))})),qe=s({LocationField:()=>Je});function Je({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,o=e&&typeof e==`object`?`${e.latitude||0}, ${e.longitude||0}`:``;return r?(0,h.jsx)(`span`,{className:`text-sm`,children:o||(0,h.jsx)(f.EmptyValue,{})}):(0,h.jsx)(f.Input,{type:`text`,value:o,onChange:e=>{let n=e.target.value;if(!n.trim()){t(null);return}let r=n.split(`,`).map(e=>e.trim());if(r.length===2){let e=parseFloat(r[0]),n=parseFloat(r[1]);!isNaN(e)&&!isNaN(n)&&t({latitude:e,longitude:n})}},placeholder:a?.placeholder||`latitude, longitude`,disabled:r||i.disabled,className:i.className})}var Ye=o((()=>{})),Xe=s({FormulaField:()=>Ze});function Ze({value:e,field:t,...n}){let r=(t||n.schema)?.return_type||`text`;if(e==null)return(0,h.jsx)(f.EmptyValue,{className:n.className});let i;return i=r===`number`||r===`currency`?typeof e==`number`?e.toFixed(2):String(e):r===`boolean`?e?`Yes`:`No`:r===`date`?new Date(e).toLocaleDateString():String(e),(0,h.jsx)(`span`,{className:`text-sm font-mono text-gray-700 ${n.className||``}`,children:i})}var Qe=o((()=>{})),$e=s({SummaryField:()=>et});function et({value:e,field:t,...n}){let r=(t||n.schema)?.summary_type||`count`;if(e==null)return(0,h.jsx)(f.EmptyValue,{className:n.className});let i;return i=r===`count`?String(e):[`sum`,`avg`,`min`,`max`].includes(r)&&typeof e==`number`?e.toFixed(2):String(e),(0,h.jsx)(`span`,{className:`text-sm font-medium tabular-nums text-gray-700 ${n.className||``}`,children:i})}var tt=o((()=>{})),nt=s({AutoNumberField:()=>rt});function rt({value:e,field:t,...n}){return e==null?(0,h.jsx)(f.EmptyValue,{className:n.className}):(0,h.jsx)(`span`,{className:`text-sm font-mono text-gray-700 ${n.className||``}`,children:String(e)})}var it=o((()=>{})),at=s({UserField:()=>ot});function ot({value:e,onChange:t,field:n,readonly:r,...i}){let a=(n||i.schema)?.multiple||!1;if(r){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=Array.isArray(e)?e:[e];return(0,h.jsxs)(`div`,{className:`flex -space-x-2`,children:[t.slice(0,3).map((e,t)=>{let n=e.name||e.username||`User`;return(0,h.jsx)(f.Avatar,{className:`size-8 border-2 border-white`,title:n,children:(0,h.jsx)(f.AvatarFallback,{className:`bg-blue-500 text-white text-xs`,children:n.split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2)})},t)}),t.length>3&&(0,h.jsx)(f.Avatar,{className:`size-8 border-2 border-white`,children:(0,h.jsxs)(f.AvatarFallback,{className:`bg-gray-200 text-gray-600 text-xs`,children:[`+`,t.length-3]})})]})}let o=e?Array.isArray(e)?e:[e]:[],s=e=>{if(a){let n=o.filter((t,n)=>n!==e);t(n.length>0?n:null)}else t(null)};return(0,h.jsxs)(`div`,{className:i.className,children:[o.length>0&&(0,h.jsx)(`div`,{className:`flex flex-wrap gap-2 mb-2`,children:o.map((e,t)=>{let n=e.name||e.username||`User`;return(0,h.jsxs)(f.Badge,{variant:`outline`,className:`gap-2 pr-1`,children:[(0,h.jsx)(f.Avatar,{className:`size-5`,children:(0,h.jsx)(f.AvatarFallback,{className:`bg-blue-500 text-white text-xs`,children:n.split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2)})}),(0,h.jsx)(`span`,{className:`text-sm`,children:n}),(0,h.jsx)(`button`,{type:`button`,onClick:()=>s(t),className:`ml-1 rounded-full hover:bg-gray-200 p-0.5`,children:(0,h.jsx)(p.X,{className:`size-3`})})]},t)})}),(0,h.jsx)(`div`,{className:`text-sm text-gray-500 italic`,children:`User selection component requires integration with user management system`})]})}var st=o((()=>{})),ct=s({ObjectField:()=>lt});function lt({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,[o,s]=(0,u.useState)(()=>e==null?``:JSON.stringify(e,null,2)),[c,l]=(0,u.useState)(null);return(0,u.useEffect)(()=>{try{if(e==null){s(``);return}let t=o?JSON.parse(o):null;JSON.stringify(t)!==JSON.stringify(e)&&s(JSON.stringify(e,null,2))}catch{s(JSON.stringify(e,null,2))}},[e,o]),r?e?(0,h.jsx)(`pre`,{className:(0,f.cn)(`text-xs bg-gray-50 p-2 rounded border border-gray-200 overflow-auto max-h-40`,i.className),children:JSON.stringify(e,null,2)}):(0,h.jsx)(f.EmptyValue,{}):(0,h.jsxs)(`div`,{className:`space-y-1`,children:[(0,h.jsx)(f.Textarea,{value:o,onChange:e=>{let n=e.target.value;if(s(n),l(null),!n.trim()){t(null);return}try{t(JSON.parse(n))}catch{l(`Invalid JSON`)}},placeholder:a?.placeholder||`{
|
|
7
7
|
"key": "value"
|
|
8
|
-
}`,disabled:r||i.disabled,className:(0,f.cn)(`font-mono text-xs`,c?`border-red-500 focus-visible:ring-red-500`:``,i.className),rows:6}),c&&(0,h.jsx)(`p`,{className:`text-xs text-red-500`,children:c})]})}var lt=o((()=>{})),ut=s({VectorField:()=>dt});function dt({value:e,field:t,...n}){let r=(t||n.schema)?.dimensions||(Array.isArray(e)?e.length:0);if(!e||!Array.isArray(e))return(0,h.jsx)(f.EmptyValue,{});let i=e.slice(0,3).map(e=>{let t=Number(e);return isNaN(t)?`0`:t.toFixed(4)}).join(`, `);return(0,h.jsxs)(`div`,{className:`text-sm ${n.className||``}`,children:[(0,h.jsxs)(`span`,{className:`font-mono text-gray-700`,children:[`[`,i,`...]`]}),(0,h.jsxs)(`span`,{className:`text-gray-500 ml-2`,children:[`(`,r,`D)`]})]})}var ft=o((()=>{})),pt=s({GridField:()=>mt});function mt({value:e,field:t,readonly:n,...r}){let i=(t||r.schema)?.columns||[];return!e||!Array.isArray(e)?(0,h.jsx)(f.EmptyValue,{}):n?(0,h.jsx)(`div`,{className:(0,f.cn)(`text-sm`,r.className),children:(0,h.jsxs)(`span`,{className:`text-foreground`,children:[e.length,` rows`]})}):(0,h.jsxs)(`div`,{className:(0,f.cn)(`border border-border rounded-lg overflow-hidden`,r.className),children:[(0,h.jsx)(`div`,{className:`overflow-auto max-h-60`,children:(0,h.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,h.jsx)(`thead`,{className:`bg-muted border-b border-border`,children:(0,h.jsx)(`tr`,{children:i.map((e,t)=>(0,h.jsx)(`th`,{className:`px-3 py-2 text-left text-xs font-medium text-muted-foreground`,children:e.label||e.name},t))})}),(0,h.jsx)(`tbody`,{className:`divide-y divide-border`,children:e.slice(0,5).map((e,t)=>(0,h.jsx)(`tr`,{className:`hover:bg-muted/50 transition-colors`,children:i.map((t,n)=>(0,h.jsx)(`td`,{className:`px-3 py-2 text-foreground`,children:e[t.name]==null?(0,h.jsx)(f.EmptyValue,{}):String(e[t.name])},n))},t))})]})}),e.length>5&&(0,h.jsxs)(`div`,{className:`bg-muted px-3 py-2 text-xs text-muted-foreground border-t border-border`,children:[`Showing 5 of `,e.length,` rows`]})]})}var ht=o((()=>{})),gt=s({ColorField:()=>_t});function _t({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema;return r?(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`div`,{className:`w-6 h-6 rounded border border-input`,style:{backgroundColor:e||`#000000`}}),(0,h.jsx)(`span`,{className:`text-sm`,children:e||(0,h.jsx)(f.EmptyValue,{})})]}):(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`input`,{type:`color`,value:e||`#000000`,onChange:e=>t(e.target.value),disabled:r||i.disabled,className:`w-10 h-10 rounded border border-input cursor-pointer`}),(0,h.jsx)(f.Input,{type:`text`,value:e||``,onChange:e=>t(e.target.value),placeholder:a?.placeholder||`#000000`,disabled:r||i.disabled,className:i.className,pattern:`^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$`})]})}var vt=o((()=>{})),yt=s({SliderField:()=>bt});function bt({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,o=a?.min??0,s=a?.max??100,c=a?.step??1;return r?(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`span`,{className:`text-sm font-medium`,children:e??o}),(0,h.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`/ `,s]})]}):(0,h.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,h.jsx)(f.Slider,{value:[e??o],onValueChange:e=>t(e[0]),min:o,max:s,step:c,disabled:r||i.disabled,className:i.className}),(0,h.jsx)(`span`,{className:`text-sm font-medium w-12 text-right`,children:e??o})]})}var xt=o((()=>{})),St=s({RatingField:()=>Ct});function Ct({value:e,onChange:t,field:n,readonly:r,className:i,...a}){let o=(n||a.schema)?.max??5,s=e??0,[c,l]=u.default.useState(null),d=c===null?s:c;return r?(0,h.jsxs)(`div`,{className:(0,f.cn)(`flex items-center gap-1`,i),children:[Array.from({length:o},(e,t)=>(0,h.jsx)(p.Star,{className:`w-5 h-5 ${t<s?`fill-yellow-400 text-yellow-400`:`text-muted-foreground`}`},t)),(0,h.jsxs)(`span`,{className:`ml-2 text-sm text-muted-foreground`,children:[s,` / `,o]})]}):(0,h.jsxs)(`div`,{className:(0,f.cn)(`flex items-center gap-1`,i),children:[Array.from({length:o},(e,n)=>(0,h.jsx)(`button`,{type:`button`,onClick:()=>t(n+1),onMouseEnter:()=>l(n+1),onMouseLeave:()=>l(null),className:`focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 rounded`,disabled:r||a.disabled,children:(0,h.jsx)(p.Star,{className:`w-5 h-5 transition-colors ${n<d?`fill-yellow-400 text-yellow-400 hover:fill-yellow-500 hover:text-yellow-500`:`text-muted-foreground hover:text-yellow-400`}`})},n)),(0,h.jsxs)(`span`,{className:`ml-2 text-sm text-muted-foreground`,children:[s,` / `,o]})]})}var wt=o((()=>{})),Tt=s({CodeField:()=>Et});function Et({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,o=a?.language??`javascript`;return r?(0,h.jsx)(`pre`,{className:(0,f.cn)(`text-sm bg-muted p-2 rounded overflow-x-auto border`,i.className),children:(0,h.jsx)(`code`,{children:e||(0,h.jsx)(f.EmptyValue,{})})}):(0,h.jsx)(f.Textarea,{value:e||``,onChange:e=>t(e.target.value),placeholder:a?.placeholder||`// Write ${o} code here...`,disabled:r||i.disabled,className:(0,f.cn)(`font-mono text-sm`,i.className),rows:12,spellCheck:!1})}var Dt=o((()=>{})),Ot=s({AvatarField:()=>kt});function kt({value:e,onChange:t,field:n,readonly:r,...i}){let[a,o]=u.default.useState(!1),s=u.default.useRef(null),c=n||i.schema,l=e=>{let n=e.target.files?.[0];if(!n)return;if(!n.type.startsWith(`image/`)){console.error(`Please select an image file`);return}if(n.size>5*1024*1024){console.error(`File size must be less than 5MB`);return}let r=new FileReader;r.onloadend=()=>{t(r.result)},r.readAsDataURL(n)},d=()=>{t(``)},m=()=>(c?.defaultName||c?.label||`User`).split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2);return r?(0,h.jsxs)(f.Avatar,{className:`w-16 h-16`,children:[e&&(0,h.jsx)(f.AvatarImage,{src:e,alt:c?.label}),(0,h.jsx)(f.AvatarFallback,{children:m()})]}):(0,h.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,h.jsxs)(`div`,{className:`relative`,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:[(0,h.jsxs)(f.Avatar,{className:`w-16 h-16`,children:[e&&(0,h.jsx)(f.AvatarImage,{src:e,alt:c?.label}),(0,h.jsx)(f.AvatarFallback,{children:m()})]}),!r&&a&&e&&(0,h.jsx)(`button`,{type:`button`,onClick:d,className:`absolute -top-1 -right-1 bg-destructive text-destructive-foreground rounded-full p-1 hover:bg-destructive/90`,children:(0,h.jsx)(p.X,{className:`w-3 h-3`})})]}),(0,h.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,h.jsx)(`input`,{ref:s,type:`file`,accept:`image/*`,onChange:l,className:`hidden`}),(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>s.current?.click(),disabled:r||i.disabled,children:[(0,h.jsx)(p.Upload,{className:`w-4 h-4 mr-2`}),e?`Change`:`Upload`,` Avatar`]}),(0,h.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`PNG, JPG up to 5MB`})]})]})}var At=o((()=>{})),jt=s({AddressField:()=>Mt});function Mt({value:e,onChange:t,field:n,readonly:r,...i}){let a=e||{},o=(e,n)=>{t({...a,[e]:n})},s=e=>[e.street,e.city,[e.state,e.zipCode].filter(Boolean).join(` `),e.country].filter(Boolean).join(`, `);if(r){let e=s(a);return e?(0,h.jsx)(`span`,{className:`text-sm`,children:e}):(0,h.jsx)(f.EmptyValue,{})}return(0,h.jsxs)(`div`,{className:`space-y-3`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`street`,className:`text-xs`,children:`Street Address`}),(0,h.jsx)(f.Input,{id:`street`,type:`text`,value:a.street||``,onChange:e=>o(`street`,e.target.value),placeholder:`123 Main St`,disabled:r||i.disabled,className:i.className})]}),(0,h.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`city`,className:`text-xs`,children:`City`}),(0,h.jsx)(f.Input,{id:`city`,type:`text`,value:a.city||``,onChange:e=>o(`city`,e.target.value),placeholder:`San Francisco`,disabled:r||i.disabled})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`state`,className:`text-xs`,children:`State / Province`}),(0,h.jsx)(f.Input,{id:`state`,type:`text`,value:a.state||``,onChange:e=>o(`state`,e.target.value),placeholder:`CA`,disabled:r||i.disabled})]})]}),(0,h.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`zipCode`,className:`text-xs`,children:`ZIP / Postal Code`}),(0,h.jsx)(f.Input,{id:`zipCode`,type:`text`,value:a.zipCode||``,onChange:e=>o(`zipCode`,e.target.value),placeholder:`94102`,disabled:r||i.disabled})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`country`,className:`text-xs`,children:`Country`}),(0,h.jsx)(f.Input,{id:`country`,type:`text`,value:a.country||``,onChange:e=>o(`country`,e.target.value),placeholder:`United States`,disabled:r||i.disabled})]})]})]})}var Nt=o((()=>{})),Pt=s({GeolocationField:()=>Ft});function Ft({value:e,onChange:t,field:n,readonly:r,...i}){let[a,o]=u.default.useState(!1),s=e||{},c=(e,n)=>{t({...s,[e]:n?Number(n):void 0})},l=()=>{if(!navigator.geolocation){console.error(`Geolocation is not supported by this browser`);return}o(!0),navigator.geolocation.getCurrentPosition(e=>{t({latitude:e.coords.latitude,longitude:e.coords.longitude,accuracy:e.coords.accuracy}),o(!1)},e=>{console.error(`Error getting location:`,e.message),o(!1)},{enableHighAccuracy:!0,timeout:5e3,maximumAge:0})},d=e=>!e.latitude||!e.longitude?``:`${e.latitude.toFixed(6)}, ${e.longitude.toFixed(6)}`,m=()=>{if(!s.latitude||!s.longitude)return;let e=`https://www.google.com/maps?q=${s.latitude},${s.longitude}`;window.open(e,`_blank`)};if(r){let e=d(s);return(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(p.MapPin,{className:`w-4 h-4 text-muted-foreground`}),e?(0,h.jsx)(`span`,{className:`text-sm`,children:e}):(0,h.jsx)(f.EmptyValue,{}),s.latitude&&s.longitude&&(0,h.jsx)(f.Button,{type:`button`,variant:`link`,size:`sm`,onClick:m,className:`p-0 h-auto`,children:`View on map`})]})}return(0,h.jsxs)(`div`,{className:`space-y-3`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:l,disabled:r||a,children:[(0,h.jsx)(p.Crosshair,{className:`w-4 h-4 mr-2`}),a?`Getting location...`:`Use Current Location`]}),s.latitude&&s.longitude&&(0,h.jsxs)(f.Button,{type:`button`,variant:`link`,size:`sm`,onClick:m,children:[(0,h.jsx)(p.MapPin,{className:`w-4 h-4 mr-2`}),`View on map`]})]}),(0,h.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`latitude`,className:`text-xs`,children:`Latitude`}),(0,h.jsx)(f.Input,{id:`latitude`,type:`number`,value:s.latitude??``,onChange:e=>c(`latitude`,e.target.value),placeholder:`37.7749`,disabled:r||i.disabled,step:`any`,className:i.className})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`longitude`,className:`text-xs`,children:`Longitude`}),(0,h.jsx)(f.Input,{id:`longitude`,type:`number`,value:s.longitude??``,onChange:e=>c(`longitude`,e.target.value),placeholder:`-122.4194`,disabled:r||i.disabled,step:`any`})]})]}),s.accuracy&&(0,h.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Accuracy: ±`,s.accuracy.toFixed(0),`m`]})]})}var It=o((()=>{})),Lt=s({SignatureField:()=>Rt});function Rt({value:e,onChange:t,readonly:n}){let r=(0,u.useRef)(null),[i,a]=u.default.useState(!1),[o,s]=u.default.useState(!e);(0,u.useEffect)(()=>{if(e&&r.current){let t=r.current.getContext(`2d`);if(t){let n=new Image;n.onload=()=>{t.drawImage(n,0,0),s(!1)},n.src=e}}},[e]);let c=e=>{if(n)return;a(!0),s(!1);let t=r.current;if(!t)return;let i=t.getContext(`2d`);if(!i)return;let o=t.getBoundingClientRect(),c=`touches`in e?e.touches[0].clientX-o.left:e.clientX-o.left,l=`touches`in e?e.touches[0].clientY-o.top:e.clientY-o.top;i.beginPath(),i.moveTo(c,l)},l=e=>{if(!i||n)return;let t=r.current;if(!t)return;let a=t.getContext(`2d`);if(!a)return;let o=t.getBoundingClientRect(),s=`touches`in e?e.touches[0].clientX-o.left:e.clientX-o.left,c=`touches`in e?e.touches[0].clientY-o.top:e.clientY-o.top;a.lineTo(s,c),a.strokeStyle=`#000`,a.lineWidth=2,a.lineCap=`round`,a.lineJoin=`round`,a.stroke()},d=()=>{if(!i)return;a(!1);let e=r.current;e&&t(e.toDataURL(`image/png`))};return n&&e?(0,h.jsx)(`div`,{className:`border rounded p-2 bg-white`,children:(0,h.jsx)(`img`,{src:e,alt:`Signature`,loading:`lazy`,className:`max-w-full h-auto`})}):n&&!e?(0,h.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`No signature`}):(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsx)(`div`,{className:`border rounded bg-white`,children:(0,h.jsx)(`canvas`,{ref:r,width:400,height:200,className:`w-full touch-none cursor-crosshair`,onMouseDown:c,onMouseMove:l,onMouseUp:d,onMouseLeave:d,onTouchStart:c,onTouchMove:l,onTouchEnd:d})}),(0,h.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,h.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o?`Sign above`:`Signature captured`}),(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{let e=r.current;if(!e)return;let n=e.getContext(`2d`);n&&(n.clearRect(0,0,e.width,e.height),s(!0),t(``))},disabled:n||o,children:[(0,h.jsx)(p.Eraser,{className:`w-4 h-4 mr-2`}),`Clear`]})]})]})}var zt=o((()=>{})),Bt=s({QRCodeField:()=>Vt});function Vt({value:e,onChange:t,field:n,readonly:r,...i}){let[a,o]=u.default.useState(!1),s=n||i.schema;return r?(0,h.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,h.jsx)(`span`,{className:`text-sm flex-1 truncate`,children:e||(0,h.jsx)(f.EmptyValue,{})}),e&&(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>o(!a),children:[(0,h.jsx)(p.QrCode,{className:`w-4 h-4 mr-2`}),a?`Hide`:`Show`,` QR`]})]}):(0,h.jsxs)(`div`,{className:`space-y-3`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(f.Input,{type:`text`,value:e||``,onChange:e=>t(e.target.value),placeholder:s?.placeholder||`Enter text for QR code`,disabled:r||i.disabled,className:i.className}),e&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{e&&navigator.clipboard.writeText(e)},children:(0,h.jsx)(p.Copy,{className:`w-4 h-4`})}),(0,h.jsx)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>o(!a),children:(0,h.jsx)(p.QrCode,{className:`w-4 h-4`})})]})]}),a&&e&&(0,h.jsx)(`div`,{className:`border rounded p-4 bg-white flex justify-center`,children:(0,h.jsx)(`img`,{src:(e=>`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(e)}`)(e),alt:`QR Code`,className:`w-48 h-48`})}),e&&(0,h.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`QR code contains: `,e.length,` characters`]})]})}var Ht=o((()=>{}));b(),C(),E(),j(),P(),L(),z(),V(),W(),ae(),oe(),we(),De(),Z(),Me(),Fe(),Re(),Ge(),Je(),Ze(),et(),rt(),ot(),lt(),ft(),ht(),vt(),xt(),wt(),Dt(),At(),Nt(),It(),zt(),Ht(),Ve();function Ut({value:e,onChange:t,field:n,readonly:r,className:i,...a}){let o=e||[],s=n||a.schema,c=()=>{let e={id:`new-${Date.now()}`,label:`New Related Record`};t([...o,e])},l=e=>{t(o.filter(t=>t.id!==e))},u=e=>{console.log(`View detail:`,e)};return r?(0,h.jsxs)(`div`,{className:(0,f.cn)(`space-y-2`,i),children:[o.length===0?(0,h.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`No related records`}):o.map(e=>(0,h.jsxs)(`div`,{className:`flex items-center justify-between p-2 border rounded hover:bg-muted/50`,children:[(0,h.jsx)(`span`,{className:`text-sm`,children:e.label}),(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>u(e),children:(0,h.jsx)(p.ExternalLink,{className:`w-4 h-4`})})]},e.id)),(0,h.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[o.length,` `,o.length===1?`record`:`records`]})]}):(0,h.jsxs)(`div`,{className:(0,f.cn)(`space-y-3`,i),children:[(0,h.jsxs)(`div`,{className:`space-y-2`,children:[o.map(e=>(0,h.jsxs)(`div`,{className:`flex items-center justify-between gap-2 p-2 border rounded hover:bg-muted/50`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,h.jsx)(f.Badge,{variant:`outline`,children:e.id}),(0,h.jsx)(`span`,{className:`text-sm flex-1`,children:e.label})]}),(0,h.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>u(e),children:(0,h.jsx)(p.ExternalLink,{className:`w-4 h-4`})}),(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>l(e.id),disabled:a.disabled,children:(0,h.jsx)(p.X,{className:`w-4 h-4`})})]})]},e.id)),o.length===0&&(0,h.jsx)(`div`,{className:`text-sm text-muted-foreground text-center py-4 border border-dashed rounded bg-muted/20`,children:`No related records`})]}),(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,className:`w-full`,onClick:c,disabled:a.disabled,children:[(0,h.jsx)(p.Plus,{className:`w-4 h-4 mr-2`}),`Add `,s?.label||`Record`]})]})}ge(),b(),C(),E(),j(),P(),De(),Z(),L(),z(),V(),W(),Me(),Fe(),ae(),oe(),we(),X(),Re(),Ge(),Je(),Ze(),et(),rt(),ot(),lt(),ft(),ht(),vt(),xt(),wt(),Dt(),At(),Nt(),It(),zt(),Ht();function Wt(){try{let{t:e}=(0,m.useObjectTranslation)();return(t,n)=>{let r=e(t);return!r||r===t?n:r}}catch{return(e,t)=>t}}function Q(e){if(e==null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(e=>{if(typeof e==`object`&&e){let t=e;return String(t.name||t.label||t.id||t._id||`[Object]`)}return String(e)}).join(`, `);if(typeof e==`object`){let t=e;return`$numberDecimal`in t?Number(t.$numberDecimal):`$oid`in t?String(t.$oid):`$date`in t?String(t.$date):String(t.name||t.label||t.id||t._id||`[Object]`)}return String(e)}function Gt(e,t=`USD`){try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t}).format(e)}catch{return`${t} ${e.toFixed(2)}`}}function Kt(e,t=`USD`){try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t,notation:`compact`,maximumFractionDigits:1}).format(e).replace(/\.0(?=[KMBT])/,``)}catch{return`${t} ${e}`}}function qt(e,t=2){try{return new Intl.NumberFormat(`en-US`,{minimumFractionDigits:t,maximumFractionDigits:t}).format(e)}catch{return e.toFixed(t)}}function Jt(e,t=0){return`${(e>-1&&e<1?e*100:e).toFixed(t)}%`}function Yt(e){return e.replace(/[_-]/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Xt(e){if(e==null||e===``)return`—`;let t=e instanceof Date?e:new Date(e);if(!(t instanceof Date)||isNaN(t.getTime()))return`—`;let n=new Date,r=new Date(n.getFullYear(),n.getMonth(),n.getDate()),i=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-r.getTime(),a=Math.round(i/(1e3*60*60*24));if(a===0)return`Today`;if(a===1)return`Tomorrow`;if(a===-1)return`Yesterday`;if(a<-1){let e=Math.abs(a);return e<=7?`Overdue ${e}d`:Zt(t)}return a>1&&a<=7?`In ${a} days`:Zt(t)}function Zt(e,t){if(e==null||e===``)return`—`;let n=e instanceof Date?e:new Date(e);return!(n instanceof Date)||isNaN(n.getTime())?`—`:t===`short`?`${n.toLocaleDateString(`en-US`,{month:`short`})} ${n.getDate()}, '${String(n.getFullYear()).slice(-2)}`:t===`relative`?Xt(n):n.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}function Qt(e){if(e==null||e===``)return`—`;let t=e instanceof Date?e:new Date(e);return!(t instanceof Date)||isNaN(t.getTime())?`—`:t.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function $t({value:e}){let t=Q(e);return t==null||t===``?(0,h.jsx)(f.EmptyValue,{}):(0,h.jsx)(`span`,{className:`truncate`,children:String(t)})}function en({value:e,field:t}){if(e==null)return(0,h.jsx)(f.EmptyValue,{});let n=Q(e),r=t.precision??0,i=Number(n);return(0,h.jsx)(`span`,{className:`tabular-nums`,children:isNaN(i)?String(n):new Intl.NumberFormat(`en-US`,{minimumFractionDigits:r,maximumFractionDigits:r}).format(i)})}function tn({value:e,field:t}){if(e==null)return(0,h.jsx)(f.EmptyValue,{});let n=Q(e),r=t,i=r.currency||r.defaultCurrency,a=Number(n),o=r.precision??r.scale??r.decimals??2;return(0,h.jsx)(`span`,{className:`tabular-nums font-medium whitespace-nowrap`,children:isNaN(a)?String(n):i?Gt(a,i):qt(a,o)})}var nn=/progress|completion/;function rn({value:e,field:t}){if(e==null)return(0,h.jsx)(f.EmptyValue,{});let n=Q(e),r=t.precision??0,i=Number(n);if(isNaN(i))return(0,h.jsx)(`span`,{className:`tabular-nums whitespace-nowrap`,children:String(n)});let a=nn.test(t?.name?.toLowerCase()||``),o=a?i:i>-1&&i<1?i*100:i,s=a?`${i.toFixed(r)}%`:Jt(i,r),c=Math.max(0,Math.min(100,o));return(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`div`,{className:`h-1.5 w-16 rounded-full bg-muted overflow-hidden shrink-0`,role:`progressbar`,"aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":100,children:(0,h.jsx)(`div`,{className:`h-full rounded-full bg-primary transition-all`,style:{width:`${c}%`}})}),(0,h.jsx)(`span`,{className:`tabular-nums whitespace-nowrap`,children:s})]})}var an=new Set([`active`,`is_active`,`enabled`,`is_enabled`,`verified`,`is_verified`]);function on({value:e,field:t}){if(e==null)return(0,h.jsx)(`span`,{className:`flex items-center justify-center`,children:(0,h.jsx)(f.EmptyValue,{})});let n=t?.name?.toLowerCase()||``;return n===`completed`||n===`is_completed`||n===`done`||n===`is_done`?(0,h.jsx)(`div`,{className:`flex items-center justify-center`,children:e?(0,h.jsx)(`div`,{className:`size-5 rounded-full bg-green-500 flex items-center justify-center`,role:`img`,"aria-label":`Completed`,"data-testid":`completion-indicator`,children:(0,h.jsx)(p.Check,{className:`size-3 text-white`})}):(0,h.jsx)(`div`,{className:`size-5 rounded-full border-2 border-muted-foreground/30`,role:`img`,"aria-label":`Not completed`,"data-testid":`completion-indicator`})}):an.has(n)&&!e?(0,h.jsxs)(f.Badge,{variant:`destructive`,className:`text-xs`,"data-testid":`boolean-warning-badge`,children:[t?.label||Yt(n),` — Off`]}):(0,h.jsx)(`div`,{className:`flex items-center justify-start`,children:(0,h.jsx)(f.Checkbox,{checked:!!e,disabled:!0,className:`pointer-events-none`})})}function sn({value:e,field:t}){if(!e)return(0,h.jsx)(f.EmptyValue,{});let n=Q(e),r=t,i=Zt(n,r.format||`relative`),a=n==null?null:new Date(n),o=a!==null&&!isNaN(a.getTime()),s=new Date;s.setHours(0,0,0,0);let c=String(r?.name||r?.accessorKey||r?.key||``).toLowerCase(),l=(r?.dueLike===!0||/(^|_)(due|deadline|expires?|expiry|expiration|expected_close|target_close|sla|return_by|renewal|next_action)(_|$)/.test(c))&&o&&a<s,u=o?a.toISOString():String(n);return(0,h.jsx)(`span`,{className:`tabular-nums${l?` text-red-600`:``}`,title:u,children:i})}function cn({value:e}){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=Q(e),n=t==null?null:new Date(t);if(n===null||isNaN(n.getTime()))return(0,h.jsx)(f.EmptyValue,{});let r=n.toLocaleDateString(void 0,{month:`numeric`,day:`numeric`,year:`numeric`}),i=n.toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`,hour12:!0}).toLowerCase();return(0,h.jsxs)(`span`,{className:`tabular-nums text-sm whitespace-nowrap`,children:[(0,h.jsx)(`span`,{children:r}),(0,h.jsx)(`span`,{className:`ml-2 text-muted-foreground`,children:i})]})}var ln={critical:`red`,urgent:`red`,high:`orange`,medium:`yellow`,normal:`blue`,low:`gray`,none:`gray`,paid:`green`,completed:`green`,done:`green`,active:`green`,approved:`green`,resolved:`green`,pending:`yellow`,waiting:`yellow`,on_hold:`yellow`,shipped:`blue`,in_progress:`blue`,open:`blue`,processing:`blue`,draft:`gray`,new:`gray`,inactive:`gray`,closed:`gray`,cancelled:`red`,canceled:`red`,rejected:`red`,failed:`red`,overdue:`red`,delivered:`purple`,archived:`indigo`,contacted:`blue`,qualified:`purple`,converted:`green`,won:`green`,lost:`red`,紧急:`red`,严重:`red`,高:`orange`,中:`yellow`,普通:`blue`,低:`gray`,无:`gray`,新建:`gray`,草稿:`gray`,待处理:`yellow`,待审核:`yellow`,待联系:`yellow`,挂起:`yellow`,进行中:`blue`,处理中:`blue`,已联系:`blue`,跟进中:`blue`,已发货:`blue`,打开:`blue`,已确认:`green`,已审核:`green`,已通过:`green`,已完成:`green`,已支付:`green`,已签收:`green`,已转化:`green`,成单:`green`,赢得:`green`,已签约:`green`,已交付:`purple`,已归档:`indigo`,已关闭:`gray`,已取消:`red`,已拒绝:`red`,失败:`red`,逾期:`red`,流失:`red`,丢失:`red`},un={gray:`bg-gray-50 text-gray-700 border-gray-200 dark:bg-gray-800/50 dark:text-gray-200 dark:border-gray-700/60`,red:`bg-red-50 text-red-700 border-red-200 dark:bg-red-950/40 dark:text-red-300 dark:border-red-900/60`,orange:`bg-orange-50 text-orange-700 border-orange-200 dark:bg-orange-950/40 dark:text-orange-300 dark:border-orange-900/60`,yellow:`bg-yellow-50 text-yellow-800 border-yellow-200 dark:bg-yellow-950/40 dark:text-yellow-300 dark:border-yellow-900/60`,green:`bg-green-50 text-green-700 border-green-200 dark:bg-green-950/40 dark:text-green-300 dark:border-green-900/60`,blue:`bg-blue-50 text-blue-700 border-blue-200 dark:bg-blue-950/40 dark:text-blue-300 dark:border-blue-900/60`,indigo:`bg-indigo-50 text-indigo-700 border-indigo-200 dark:bg-indigo-950/40 dark:text-indigo-300 dark:border-indigo-900/60`,purple:`bg-purple-50 text-purple-700 border-purple-200 dark:bg-purple-950/40 dark:text-purple-300 dark:border-purple-900/60`,pink:`bg-pink-50 text-pink-700 border-pink-200 dark:bg-pink-950/40 dark:text-pink-300 dark:border-pink-900/60`},dn=[`blue`,`green`,`purple`,`orange`,`pink`,`indigo`,`yellow`,`red`];function fn(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t^e.charCodeAt(n);return dn[Math.abs(t)%dn.length]}function pn(e,t){if(e&&un[e])return un[e];if(t==null||t===``)return`bg-muted text-muted-foreground border-border`;let n=String(t).toLowerCase().replace(/[\s-]/g,`_`),r=ln[n];return r&&un[r]?un[r]:un[fn(n)]}function mn({value:e,field:t}){let n=t.options||[];if(e==null||e===``)return(0,h.jsx)(f.EmptyValue,{});let r=e=>{let t=n.find(t=>t.value===e);if(t)return t;let r=String(e).toLowerCase();return n.find(e=>String(e.value).toLowerCase()===r)};if(Array.isArray(e))return(0,h.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.map((e,t)=>{let n=r(e),i=n?.label||Yt(String(e));return(0,h.jsx)(f.Badge,{variant:`outline`,className:pn(n?.color,e),children:i},t)})});let i=r(e),a=i?.label||Yt(String(e));return(0,h.jsx)(f.Badge,{variant:`outline`,className:pn(i?.color,e),children:a})}function hn({value:e}){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=Wt(),n=String(Q(e)??``),[r,i]=u.default.useState(!1);return(0,h.jsxs)(`span`,{className:`inline-flex items-center gap-1 group/email`,children:[(0,h.jsx)(f.Button,{variant:`link`,className:`p-0 h-auto font-normal text-blue-600 hover:text-blue-800`,asChild:!0,children:(0,h.jsx)(`a`,{href:`mailto:${n}`,onClick:e=>e.stopPropagation(),children:n})}),(0,h.jsx)(`button`,{type:`button`,className:`opacity-0 group-hover/email:opacity-100 transition-opacity p-0.5 rounded hover:bg-muted`,onClick:e=>{e.stopPropagation(),e.preventDefault(),navigator.clipboard.writeText(n).then(()=>{i(!0),setTimeout(()=>i(!1),2e3)}).catch(()=>{})},"aria-label":t(`detail.copyEmail`,`Copy email`),children:r?(0,h.jsx)(p.Check,{className:`h-3 w-3 text-green-600`}):(0,h.jsx)(p.Copy,{className:`h-3 w-3 text-muted-foreground`})})]})}function gn({value:e}){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=String(Q(e)??``);return(0,h.jsx)(f.Button,{variant:`link`,className:`p-0 h-auto font-normal text-blue-600 hover:text-blue-800`,asChild:!0,children:(0,h.jsx)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>e.stopPropagation(),children:t})})}function _n({value:e}){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=Wt(),n=String(Q(e)??``),[r,i]=u.default.useState(!1);return(0,h.jsxs)(`span`,{className:`inline-flex items-center gap-1 group/phone`,children:[(0,h.jsxs)(`a`,{href:`tel:${n}`,className:`inline-flex items-center gap-1 text-blue-600 hover:text-blue-800`,onClick:e=>e.stopPropagation(),children:[(0,h.jsx)(p.Phone,{className:`h-3 w-3`}),n]}),(0,h.jsx)(`button`,{type:`button`,className:`opacity-0 group-hover/phone:opacity-100 transition-opacity p-0.5 rounded hover:bg-muted`,onClick:e=>{e.stopPropagation(),e.preventDefault(),navigator.clipboard.writeText(n).then(()=>{i(!0),setTimeout(()=>i(!1),2e3)}).catch(()=>{})},"aria-label":t(`detail.copyPhone`,`Copy phone number`),children:r?(0,h.jsx)(p.Check,{className:`h-3 w-3 text-green-600`}):(0,h.jsx)(p.Copy,{className:`h-3 w-3 text-muted-foreground`})})]})}function vn({value:e,field:t}){if(!e)return(0,h.jsx)(f.EmptyValue,{});if(t.multiple,Array.isArray(e)){let t=e.length;return(0,h.jsxs)(`span`,{className:`text-sm text-gray-600`,children:[t,` `,t===1?`file`:`files`]})}return(0,h.jsx)(`span`,{className:`text-sm truncate`,children:e.name||e.original_name||`File`})}function yn({value:e}){return e?Array.isArray(e)?(0,h.jsxs)(`div`,{className:`flex -space-x-2`,children:[e.slice(0,3).map((e,t)=>(0,h.jsx)(`img`,{src:e.url||``,alt:e.name||`Image ${t+1}`,className:`size-8 rounded-md border-2 border-white object-cover`},t)),e.length>3&&(0,h.jsxs)(`div`,{className:`size-8 rounded-md border-2 border-white bg-gray-100 flex items-center justify-center text-xs font-medium text-gray-600`,children:[`+`,e.length-3]})]}):(0,h.jsx)(`img`,{src:e.url||``,alt:e.name||`Image`,className:`size-10 rounded-md object-cover`}):(0,h.jsx)(f.EmptyValue,{})}function bn({value:e,field:t}){if(e==null||e===``)return(0,h.jsx)(f.EmptyValue,{});let n=t.options||[],r=e=>{if(n.length>0){let t=n.find(t=>String(t.value)===String(e));if(t)return t.label}return String(e)};return Array.isArray(e)?(0,h.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.map((e,t)=>{let n;return n=typeof e==`object`&&e?e.name||e.label||e.id||e._id||String(e):r(e),(0,h.jsx)(`span`,{className:`inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-gray-50 text-gray-700 dark:bg-gray-800/50 dark:text-gray-200`,children:n},t)})}):typeof e==`object`&&e?(0,h.jsx)(`span`,{className:`truncate`,children:e.name||e.label||e.id||e._id||`[Object]`}):(0,h.jsx)(`span`,{className:`truncate`,children:r(e)})}function xn({value:e}){let t=Q(e);return t==null||t===``?(0,h.jsx)(f.EmptyValue,{}):(0,h.jsx)(`span`,{className:`text-gray-700 font-mono text-sm`,children:String(t)})}function Sn({value:e}){if(!e)return(0,h.jsx)(f.EmptyValue,{});if(typeof e!=`object`)return(0,h.jsx)(`span`,{className:`truncate`,children:String(e)});if(Array.isArray(e))return(0,h.jsxs)(`div`,{className:`flex -space-x-2`,children:[e.slice(0,3).map((e,t)=>{if(typeof e!=`object`||!e)return(0,h.jsx)(`span`,{className:`truncate text-sm`,children:String(e)},t);let n=e.name||e.username||`User`;return(0,h.jsx)(f.Avatar,{className:`size-8 border-2 border-white`,title:n,children:(0,h.jsx)(f.AvatarFallback,{className:`bg-blue-500 text-white text-xs`,children:n.split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2)})},t)}),e.length>3&&(0,h.jsx)(f.Avatar,{className:`size-8 border-2 border-white`,children:(0,h.jsxs)(f.AvatarFallback,{className:`bg-gray-200 text-gray-600 text-xs`,children:[`+`,e.length-3]})})]});let t=e.name||e.username||`User`;return(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(f.Avatar,{className:`size-8`,children:(0,h.jsx)(f.AvatarFallback,{className:`bg-blue-500 text-white text-xs`,children:t.split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2)})}),(0,h.jsx)(`span`,{className:`truncate`,children:t})]})}var Cn=new Map;function wn(e,t){Cn.set(e,t)}var Tn={phone:`phone`,tel:`phone`,telephone:`phone`,email:`email`,url:`url`,uri:`url`,link:`url`,currency:`currency`,money:`currency`,percent:`percent`,percentage:`percent`},En=new Set([`text`,`textarea`,`string`,`longtext`,``]);function Dn(e){if(!e)return`text`;if(typeof e==`string`)return e;let t=(e.type||``).toLowerCase(),n=e.format,r=typeof n==`string`?n.toLowerCase():``;return r&&Tn[r]&&En.has(t)?Tn[r]:e.type||`text`}function On(e){return Cn.has(e)?Cn.get(e):{text:$t,textarea:$t,markdown:$t,html:$t,number:en,currency:tn,percent:rn,boolean:on,date:sn,datetime:cn,time:$t,select:mn,status:mn,lookup:bn,master_detail:bn,email:hn,url:gn,phone:_n,file:vn,image:yn,formula:xn,summary:xn,auto_number:$t,user:Sn,owner:Sn,password:()=>(0,h.jsx)(`span`,{children:`••••••`}),location:$t,object:()=>(0,h.jsx)(`span`,{className:`text-gray-500 italic`,children:`[Object]`}),vector:()=>(0,h.jsx)(`span`,{className:`text-gray-500 italic`,children:`[Vector]`}),grid:()=>(0,h.jsx)(`span`,{className:`text-gray-500 italic`,children:`[Grid]`})}[e]||$t}wn(`lookup`,bn),wn(`master_detail`,bn),wn(`select`,mn),wn(`status`,mn),wn(`user`,Sn),wn(`owner`,Sn),pe(On);function kn(e){return{text:`field:text`,textarea:`field:textarea`,markdown:`field:markdown`,html:`field:html`,number:`field:number`,currency:`field:currency`,percent:`field:percent`,date:`field:date`,datetime:`field:datetime`,time:`field:time`,boolean:`field:boolean`,select:`field:select`,lookup:`field:lookup`,master_detail:`field:master_detail`,email:`field:email`,phone:`field:phone`,url:`field:url`,file:`field:file`,image:`field:image`,password:`field:password`,location:`field:location`,formula:`field:formula`,summary:`field:summary`,auto_number:`field:auto_number`}[e]||`field:text`}function An(e){if(e<0||!Number.isFinite(e)||e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(+(r>0))} ${t[r]}`}function jn(e){let t={};return e.required&&(t.required=typeof e.required_message==`string`?e.required_message:`${e.label||e.name} is required`),e.min_length&&(t.minLength={value:e.min_length,message:e.min_length_message||`Minimum length is ${e.min_length} characters`}),e.max_length&&(t.maxLength={value:e.max_length,message:e.max_length_message||`Maximum length is ${e.max_length} characters`}),e.min!==void 0&&(t.min={value:e.min,message:e.min_message||`Minimum value is ${e.min}`}),e.max!==void 0&&(t.max={value:e.max,message:e.max_message||`Maximum value is ${e.max}`}),e.pattern&&(t.pattern={value:typeof e.pattern==`string`?new RegExp(e.pattern):e.pattern,message:e.pattern_message||`Invalid format`}),e.type===`email`&&(t.pattern={value:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,message:`Please enter a valid email address`}),e.type===`url`&&(t.pattern={value:/^https?:\/\/.+/,message:`Please enter a valid URL`}),e.validate&&(t.validate=e.validate),Object.keys(t).length>0?t:void 0}function Mn(e,t){if(!e)return!0;if(e.field&&e.value!==void 0){let n=t[e.field];if(e.operator===`=`||e.operator===`==`)return n===e.value;if(e.operator===`!=`)return n!==e.value;if(e.operator===`>`)return n>e.value;if(e.operator===`>=`)return n>=e.value;if(e.operator===`<`)return n<e.value;if(e.operator===`<=`)return n<=e.value;if(e.operator===`in`)return Array.isArray(e.value)&&e.value.includes(n)}return e.and&&Array.isArray(e.and)?e.and.every(e=>Mn(e,t)):e.or&&Array.isArray(e.or)?e.or.some(e=>Mn(e,t)):!0}function $(e){let t=({schema:t,className:n,value:r,...i})=>{let[a,o]=u.default.useState(r??t?.value??``),s={name:t?.name||`field`,label:t?.label,type:t?.type,placeholder:t?.placeholder,required:t?.required,readonly:t?.readonly||t?.readOnly,help:t?.help,description:t?.description,defaultValue:t?.defaultValue||t?.value,...t},c=u.default.useCallback(e=>{o(e),i.onChange&&i.onChange(e)},[i]),l=t?.readonly||t?.readOnly||!1;return(0,h.jsxs)(`div`,{className:`grid w-full items-center gap-1.5`,"data-obj-id":t?.id,"data-obj-type":t?.type,children:[t?.label&&(0,h.jsx)(`label`,{htmlFor:t.id,className:t.required?`after:content-['*'] after:ml-0.5 after:text-red-500`:``,children:t.label}),(0,h.jsx)(e,{value:a,onChange:c,field:s,readonly:l,className:n}),t?.description&&(0,h.jsx)(`p`,{className:`text-sm text-gray-500`,children:t.description})]})};return t.displayName=`FieldRenderer(${e.displayName||e.name||`Component`})`,t}var Nn={text:()=>Promise.resolve().then(()=>(b(),v)).then(e=>({default:e.TextField})),textarea:()=>Promise.resolve().then(()=>(ae(),G)).then(e=>({default:e.TextAreaField})),number:()=>Promise.resolve().then(()=>(C(),x)).then(e=>({default:e.NumberField})),boolean:()=>Promise.resolve().then(()=>(E(),w)).then(e=>({default:e.BooleanField})),select:()=>Promise.resolve().then(()=>(j(),k)).then(e=>({default:e.SelectField})),date:()=>Promise.resolve().then(()=>(P(),M)).then(e=>({default:e.DateField})),datetime:()=>Promise.resolve().then(()=>(De(),Te)).then(e=>({default:e.DateTimeField})),time:()=>Promise.resolve().then(()=>(Z(),Oe)).then(e=>({default:e.TimeField})),email:()=>Promise.resolve().then(()=>(L(),F)).then(e=>({default:e.EmailField})),phone:()=>Promise.resolve().then(()=>(z(),te)).then(e=>({default:e.PhoneField})),url:()=>Promise.resolve().then(()=>(V(),ne)).then(e=>({default:e.UrlField})),currency:()=>Promise.resolve().then(()=>(W(),re)).then(e=>({default:e.CurrencyField})),percent:()=>Promise.resolve().then(()=>(Me(),Ae)).then(e=>({default:e.PercentField})),password:()=>Promise.resolve().then(()=>(Fe(),Ne)).then(e=>({default:e.PasswordField})),markdown:()=>Promise.resolve().then(()=>(oe(),K)).then(e=>({default:e.RichTextField})),html:()=>Promise.resolve().then(()=>(oe(),K)).then(e=>({default:e.RichTextField})),lookup:()=>Promise.resolve().then(()=>(we(),_e)).then(e=>({default:e.LookupField})),master_detail:()=>Promise.resolve().then(()=>(we(),_e)).then(e=>({default:e.LookupField})),file:()=>Promise.resolve().then(()=>(Re(),Ie)).then(e=>({default:e.FileField})),image:()=>Promise.resolve().then(()=>(Ge(),He)).then(e=>({default:e.ImageField})),location:()=>Promise.resolve().then(()=>(Je(),Ke)).then(e=>({default:e.LocationField})),formula:()=>Promise.resolve().then(()=>(Ze(),Ye)).then(e=>({default:e.FormulaField})),summary:()=>Promise.resolve().then(()=>(et(),Qe)).then(e=>({default:e.SummaryField})),auto_number:()=>Promise.resolve().then(()=>(rt(),tt)).then(e=>({default:e.AutoNumberField})),user:()=>Promise.resolve().then(()=>(ot(),it)).then(e=>({default:e.UserField})),owner:()=>Promise.resolve().then(()=>(ot(),it)).then(e=>({default:e.UserField})),object:()=>Promise.resolve().then(()=>(lt(),st)).then(e=>({default:e.ObjectField})),vector:()=>Promise.resolve().then(()=>(ft(),ut)).then(e=>({default:e.VectorField})),grid:()=>Promise.resolve().then(()=>(ht(),pt)).then(e=>({default:e.GridField})),color:()=>Promise.resolve().then(()=>(vt(),gt)).then(e=>({default:e.ColorField})),slider:()=>Promise.resolve().then(()=>(xt(),yt)).then(e=>({default:e.SliderField})),rating:()=>Promise.resolve().then(()=>(wt(),St)).then(e=>({default:e.RatingField})),code:()=>Promise.resolve().then(()=>(Dt(),Tt)).then(e=>({default:e.CodeField})),avatar:()=>Promise.resolve().then(()=>(At(),Ot)).then(e=>({default:e.AvatarField})),address:()=>Promise.resolve().then(()=>(Nt(),jt)).then(e=>({default:e.AddressField})),geolocation:()=>Promise.resolve().then(()=>(It(),Pt)).then(e=>({default:e.GeolocationField})),signature:()=>Promise.resolve().then(()=>(zt(),Lt)).then(e=>({default:e.SignatureField})),qrcode:()=>Promise.resolve().then(()=>(Ht(),Bt)).then(e=>({default:e.QRCodeField}))};function Pn(e){let t=Nn[e];if(!t){console.warn(`Unknown field type: ${e}`);return}let n=u.default.lazy(t);d.ComponentRegistry.register(e,n,{namespace:`field`})}function Fn(){Object.keys(Nn).forEach(e=>{Pn(e)})}function In(){d.ComponentRegistry.register(`text`,$(y),{namespace:`field`}),d.ComponentRegistry.register(`textarea`,$(ie),{namespace:`field`}),d.ComponentRegistry.register(`number`,$(S),{namespace:`field`}),d.ComponentRegistry.register(`boolean`,$(T),{namespace:`field`}),d.ComponentRegistry.register(`select`,$(A),{namespace:`field`}),d.ComponentRegistry.register(`date`,$(N),{namespace:`field`}),d.ComponentRegistry.register(`datetime`,$(Ee),{namespace:`field`}),d.ComponentRegistry.register(`time`,$(ke),{namespace:`field`}),d.ComponentRegistry.register(`email`,$(I),{namespace:`field`}),d.ComponentRegistry.register(`phone`,$(R),{namespace:`field`}),d.ComponentRegistry.register(`url`,$(B),{namespace:`field`}),d.ComponentRegistry.register(`currency`,$(U),{namespace:`field`}),d.ComponentRegistry.register(`percent`,$(je),{namespace:`field`}),d.ComponentRegistry.register(`password`,$(Pe),{namespace:`field`}),d.ComponentRegistry.register(`markdown`,$(q),{namespace:`field`}),d.ComponentRegistry.register(`html`,$(q),{namespace:`field`}),d.ComponentRegistry.register(`lookup`,$(xe),{namespace:`field`}),d.ComponentRegistry.register(`master_detail`,$(xe),{namespace:`field`}),d.ComponentRegistry.register(`file`,$(Le),{namespace:`field`}),d.ComponentRegistry.register(`image`,$(Ue),{namespace:`field`}),d.ComponentRegistry.register(`location`,$(qe),{namespace:`field`}),d.ComponentRegistry.register(`formula`,$(Xe),{namespace:`field`}),d.ComponentRegistry.register(`summary`,$($e),{namespace:`field`}),d.ComponentRegistry.register(`auto_number`,$(nt),{namespace:`field`}),d.ComponentRegistry.register(`user`,$(at),{namespace:`field`}),d.ComponentRegistry.register(`owner`,$(at),{namespace:`field`}),d.ComponentRegistry.register(`object`,$(ct),{namespace:`field`}),d.ComponentRegistry.register(`vector`,$(dt),{namespace:`field`}),d.ComponentRegistry.register(`grid`,$(mt),{namespace:`field`}),d.ComponentRegistry.register(`color`,$(_t),{namespace:`field`}),d.ComponentRegistry.register(`slider`,$(bt),{namespace:`field`}),d.ComponentRegistry.register(`rating`,$(Ct),{namespace:`field`}),d.ComponentRegistry.register(`code`,$(Et),{namespace:`field`}),d.ComponentRegistry.register(`avatar`,$(kt),{namespace:`field`}),d.ComponentRegistry.register(`address`,$(Mt),{namespace:`field`}),d.ComponentRegistry.register(`geolocation`,$(Ft),{namespace:`field`}),d.ComponentRegistry.register(`signature`,$(Rt),{namespace:`field`}),d.ComponentRegistry.register(`qrcode`,$(Vt),{namespace:`field`})}Fn(),exports.AddressField=Mt,exports.AutoNumberField=nt,exports.AvatarField=kt,exports.BooleanCellRenderer=on,exports.BooleanField=T,exports.CodeField=Et,exports.ColorField=_t,exports.CurrencyCellRenderer=tn,exports.CurrencyField=U,exports.DateCellRenderer=sn,exports.DateField=N,exports.DateTimeCellRenderer=cn,exports.DateTimeField=Ee,exports.EmailCellRenderer=hn,exports.EmailField=I,exports.FileCellRenderer=vn,exports.FileField=Le,exports.FormulaCellRenderer=xn,exports.FormulaField=Xe,exports.GeolocationField=Ft,exports.GridField=mt,exports.ImageCellRenderer=yn,exports.ImageCropperDialog=Be,exports.ImageField=Ue,exports.LocationField=qe,exports.LookupCellRenderer=bn,exports.LookupField=xe,exports.MasterDetailField=Ut,exports.NumberCellRenderer=en,exports.NumberField=S,exports.ObjectField=ct,exports.PasswordField=Pe,exports.PercentCellRenderer=rn,exports.PercentField=je,exports.PhoneCellRenderer=_n,exports.PhoneField=R,exports.QRCodeField=Vt,exports.RatingField=Ct,exports.RecordPickerDialog=ue,exports.RichTextField=q,exports.SelectCellRenderer=mn,exports.SelectField=A,exports.SignatureField=Rt,exports.SliderField=bt,exports.SummaryField=$e,exports.TextAreaField=ie,exports.TextCellRenderer=$t,exports.TextField=y,exports.TimeField=ke,exports.UrlCellRenderer=gn,exports.UrlField=B,exports.UserCellRenderer=Sn,exports.UserField=at,exports.VectorField=dt,exports.buildValidationRules=jn,exports.coerceToSafeValue=Q,exports.evaluateCondition=Mn,exports.formatCompactCurrency=Kt,exports.formatCurrency=Gt,exports.formatDate=Zt,exports.formatDateTime=Qt,exports.formatFileSize=An,exports.formatNumber=qt,exports.formatPercent=Jt,exports.formatRelativeDate=Xt,exports.getCellRenderer=On,exports.humanizeLabel=Yt,exports.mapFieldTypeToFormType=kn,exports.registerAllFields=Fn,exports.registerField=Pn,exports.registerFieldRenderer=wn,exports.registerFields=In,exports.resolveCellRendererType=Dn;
|
|
8
|
+
}`,disabled:r||i.disabled,className:(0,f.cn)(`font-mono text-xs`,c?`border-red-500 focus-visible:ring-red-500`:``,i.className),rows:6}),c&&(0,h.jsx)(`p`,{className:`text-xs text-red-500`,children:c})]})}var ut=o((()=>{})),dt=s({VectorField:()=>ft});function ft({value:e,field:t,...n}){let r=(t||n.schema)?.dimensions||(Array.isArray(e)?e.length:0);if(!e||!Array.isArray(e))return(0,h.jsx)(f.EmptyValue,{});let i=e.slice(0,3).map(e=>{let t=Number(e);return isNaN(t)?`0`:t.toFixed(4)}).join(`, `);return(0,h.jsxs)(`div`,{className:`text-sm ${n.className||``}`,children:[(0,h.jsxs)(`span`,{className:`font-mono text-gray-700`,children:[`[`,i,`...]`]}),(0,h.jsxs)(`span`,{className:`text-gray-500 ml-2`,children:[`(`,r,`D)`]})]})}var pt=o((()=>{})),mt=s({GridField:()=>ht});function ht({value:e,field:t,readonly:n,...r}){let i=(t||r.schema)?.columns||[];return!e||!Array.isArray(e)?(0,h.jsx)(f.EmptyValue,{}):n?(0,h.jsx)(`div`,{className:(0,f.cn)(`text-sm`,r.className),children:(0,h.jsxs)(`span`,{className:`text-foreground`,children:[e.length,` rows`]})}):(0,h.jsxs)(`div`,{className:(0,f.cn)(`border border-border rounded-lg overflow-hidden`,r.className),children:[(0,h.jsx)(`div`,{className:`overflow-auto max-h-60`,children:(0,h.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,h.jsx)(`thead`,{className:`bg-muted border-b border-border`,children:(0,h.jsx)(`tr`,{children:i.map((e,t)=>(0,h.jsx)(`th`,{className:`px-3 py-2 text-left text-xs font-medium text-muted-foreground`,children:e.label||e.name},t))})}),(0,h.jsx)(`tbody`,{className:`divide-y divide-border`,children:e.slice(0,5).map((e,t)=>(0,h.jsx)(`tr`,{className:`hover:bg-muted/50 transition-colors`,children:i.map((t,n)=>(0,h.jsx)(`td`,{className:`px-3 py-2 text-foreground`,children:e[t.name]==null?(0,h.jsx)(f.EmptyValue,{}):String(e[t.name])},n))},t))})]})}),e.length>5&&(0,h.jsxs)(`div`,{className:`bg-muted px-3 py-2 text-xs text-muted-foreground border-t border-border`,children:[`Showing 5 of `,e.length,` rows`]})]})}var gt=o((()=>{})),_t=s({ColorField:()=>vt});function vt({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema;return r?(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`div`,{className:`w-6 h-6 rounded border border-input`,style:{backgroundColor:e||`#000000`}}),(0,h.jsx)(`span`,{className:`text-sm`,children:e||(0,h.jsx)(f.EmptyValue,{})})]}):(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`input`,{type:`color`,value:e||`#000000`,onChange:e=>t(e.target.value),disabled:r||i.disabled,className:`w-10 h-10 rounded border border-input cursor-pointer`}),(0,h.jsx)(f.Input,{type:`text`,value:e||``,onChange:e=>t(e.target.value),placeholder:a?.placeholder||`#000000`,disabled:r||i.disabled,className:i.className,pattern:`^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$`})]})}var yt=o((()=>{})),bt=s({SliderField:()=>xt});function xt({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,o=a?.min??0,s=a?.max??100,c=a?.step??1;return r?(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`span`,{className:`text-sm font-medium`,children:e??o}),(0,h.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`/ `,s]})]}):(0,h.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,h.jsx)(f.Slider,{value:[e??o],onValueChange:e=>t(e[0]),min:o,max:s,step:c,disabled:r||i.disabled,className:i.className}),(0,h.jsx)(`span`,{className:`text-sm font-medium w-12 text-right`,children:e??o})]})}var St=o((()=>{})),Ct=s({RatingField:()=>wt});function wt({value:e,onChange:t,field:n,readonly:r,className:i,...a}){let o=(n||a.schema)?.max??5,s=e??0,[c,l]=u.default.useState(null),d=c===null?s:c;return r?(0,h.jsxs)(`div`,{className:(0,f.cn)(`flex items-center gap-1`,i),children:[Array.from({length:o},(e,t)=>(0,h.jsx)(p.Star,{className:`w-5 h-5 ${t<s?`fill-yellow-400 text-yellow-400`:`text-muted-foreground`}`},t)),(0,h.jsxs)(`span`,{className:`ml-2 text-sm text-muted-foreground`,children:[s,` / `,o]})]}):(0,h.jsxs)(`div`,{className:(0,f.cn)(`flex items-center gap-1`,i),children:[Array.from({length:o},(e,n)=>(0,h.jsx)(`button`,{type:`button`,onClick:()=>t(n+1),onMouseEnter:()=>l(n+1),onMouseLeave:()=>l(null),className:`focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 rounded`,disabled:r||a.disabled,children:(0,h.jsx)(p.Star,{className:`w-5 h-5 transition-colors ${n<d?`fill-yellow-400 text-yellow-400 hover:fill-yellow-500 hover:text-yellow-500`:`text-muted-foreground hover:text-yellow-400`}`})},n)),(0,h.jsxs)(`span`,{className:`ml-2 text-sm text-muted-foreground`,children:[s,` / `,o]})]})}var Tt=o((()=>{})),Et=s({CodeField:()=>Dt});function Dt({value:e,onChange:t,field:n,readonly:r,...i}){let a=n||i.schema,o=a?.language??`javascript`;return r?(0,h.jsx)(`pre`,{className:(0,f.cn)(`text-sm bg-muted p-2 rounded overflow-x-auto border`,i.className),children:(0,h.jsx)(`code`,{children:e||(0,h.jsx)(f.EmptyValue,{})})}):(0,h.jsx)(f.Textarea,{value:e||``,onChange:e=>t(e.target.value),placeholder:a?.placeholder||`// Write ${o} code here...`,disabled:r||i.disabled,className:(0,f.cn)(`font-mono text-sm`,i.className),rows:12,spellCheck:!1})}var Ot=o((()=>{})),kt=s({AvatarField:()=>At});function At({value:e,onChange:t,field:n,readonly:r,...i}){let[a,o]=u.default.useState(!1),s=u.default.useRef(null),c=n||i.schema,l=e=>{let n=e.target.files?.[0];if(!n)return;if(!n.type.startsWith(`image/`)){console.error(`Please select an image file`);return}if(n.size>5*1024*1024){console.error(`File size must be less than 5MB`);return}let r=new FileReader;r.onloadend=()=>{t(r.result)},r.readAsDataURL(n)},d=()=>{t(``)},m=()=>(c?.defaultName||c?.label||`User`).split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2);return r?(0,h.jsxs)(f.Avatar,{className:`w-16 h-16`,children:[e&&(0,h.jsx)(f.AvatarImage,{src:e,alt:c?.label}),(0,h.jsx)(f.AvatarFallback,{children:m()})]}):(0,h.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,h.jsxs)(`div`,{className:`relative`,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:[(0,h.jsxs)(f.Avatar,{className:`w-16 h-16`,children:[e&&(0,h.jsx)(f.AvatarImage,{src:e,alt:c?.label}),(0,h.jsx)(f.AvatarFallback,{children:m()})]}),!r&&a&&e&&(0,h.jsx)(`button`,{type:`button`,onClick:d,className:`absolute -top-1 -right-1 bg-destructive text-destructive-foreground rounded-full p-1 hover:bg-destructive/90`,children:(0,h.jsx)(p.X,{className:`w-3 h-3`})})]}),(0,h.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,h.jsx)(`input`,{ref:s,type:`file`,accept:`image/*`,onChange:l,className:`hidden`}),(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>s.current?.click(),disabled:r||i.disabled,children:[(0,h.jsx)(p.Upload,{className:`w-4 h-4 mr-2`}),e?`Change`:`Upload`,` Avatar`]}),(0,h.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`PNG, JPG up to 5MB`})]})]})}var jt=o((()=>{})),Mt=s({AddressField:()=>Nt});function Nt({value:e,onChange:t,field:n,readonly:r,...i}){let a=e||{},o=(e,n)=>{t({...a,[e]:n})},s=e=>[e.street,e.city,[e.state,e.zipCode].filter(Boolean).join(` `),e.country].filter(Boolean).join(`, `);if(r){let e=s(a);return e?(0,h.jsx)(`span`,{className:`text-sm`,children:e}):(0,h.jsx)(f.EmptyValue,{})}return(0,h.jsxs)(`div`,{className:`space-y-3`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`street`,className:`text-xs`,children:`Street Address`}),(0,h.jsx)(f.Input,{id:`street`,type:`text`,value:a.street||``,onChange:e=>o(`street`,e.target.value),placeholder:`123 Main St`,disabled:r||i.disabled,className:i.className})]}),(0,h.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`city`,className:`text-xs`,children:`City`}),(0,h.jsx)(f.Input,{id:`city`,type:`text`,value:a.city||``,onChange:e=>o(`city`,e.target.value),placeholder:`San Francisco`,disabled:r||i.disabled})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`state`,className:`text-xs`,children:`State / Province`}),(0,h.jsx)(f.Input,{id:`state`,type:`text`,value:a.state||``,onChange:e=>o(`state`,e.target.value),placeholder:`CA`,disabled:r||i.disabled})]})]}),(0,h.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`zipCode`,className:`text-xs`,children:`ZIP / Postal Code`}),(0,h.jsx)(f.Input,{id:`zipCode`,type:`text`,value:a.zipCode||``,onChange:e=>o(`zipCode`,e.target.value),placeholder:`94102`,disabled:r||i.disabled})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`country`,className:`text-xs`,children:`Country`}),(0,h.jsx)(f.Input,{id:`country`,type:`text`,value:a.country||``,onChange:e=>o(`country`,e.target.value),placeholder:`United States`,disabled:r||i.disabled})]})]})]})}var Pt=o((()=>{})),Ft=s({GeolocationField:()=>It});function It({value:e,onChange:t,field:n,readonly:r,...i}){let[a,o]=u.default.useState(!1),s=e||{},c=(e,n)=>{t({...s,[e]:n?Number(n):void 0})},l=()=>{if(!navigator.geolocation){console.error(`Geolocation is not supported by this browser`);return}o(!0),navigator.geolocation.getCurrentPosition(e=>{t({latitude:e.coords.latitude,longitude:e.coords.longitude,accuracy:e.coords.accuracy}),o(!1)},e=>{console.error(`Error getting location:`,e.message),o(!1)},{enableHighAccuracy:!0,timeout:5e3,maximumAge:0})},d=e=>!e.latitude||!e.longitude?``:`${e.latitude.toFixed(6)}, ${e.longitude.toFixed(6)}`,m=()=>{if(!s.latitude||!s.longitude)return;let e=`https://www.google.com/maps?q=${s.latitude},${s.longitude}`;window.open(e,`_blank`)};if(r){let e=d(s);return(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(p.MapPin,{className:`w-4 h-4 text-muted-foreground`}),e?(0,h.jsx)(`span`,{className:`text-sm`,children:e}):(0,h.jsx)(f.EmptyValue,{}),s.latitude&&s.longitude&&(0,h.jsx)(f.Button,{type:`button`,variant:`link`,size:`sm`,onClick:m,className:`p-0 h-auto`,children:`View on map`})]})}return(0,h.jsxs)(`div`,{className:`space-y-3`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:l,disabled:r||a,children:[(0,h.jsx)(p.Crosshair,{className:`w-4 h-4 mr-2`}),a?`Getting location...`:`Use Current Location`]}),s.latitude&&s.longitude&&(0,h.jsxs)(f.Button,{type:`button`,variant:`link`,size:`sm`,onClick:m,children:[(0,h.jsx)(p.MapPin,{className:`w-4 h-4 mr-2`}),`View on map`]})]}),(0,h.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`latitude`,className:`text-xs`,children:`Latitude`}),(0,h.jsx)(f.Input,{id:`latitude`,type:`number`,value:s.latitude??``,onChange:e=>c(`latitude`,e.target.value),placeholder:`37.7749`,disabled:r||i.disabled,step:`any`,className:i.className})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(f.Label,{htmlFor:`longitude`,className:`text-xs`,children:`Longitude`}),(0,h.jsx)(f.Input,{id:`longitude`,type:`number`,value:s.longitude??``,onChange:e=>c(`longitude`,e.target.value),placeholder:`-122.4194`,disabled:r||i.disabled,step:`any`})]})]}),s.accuracy&&(0,h.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Accuracy: ±`,s.accuracy.toFixed(0),`m`]})]})}var Lt=o((()=>{})),Rt=s({SignatureField:()=>zt});function zt({value:e,onChange:t,readonly:n}){let r=(0,u.useRef)(null),[i,a]=u.default.useState(!1),[o,s]=u.default.useState(!e);(0,u.useEffect)(()=>{if(e&&r.current){let t=r.current.getContext(`2d`);if(t){let n=new Image;n.onload=()=>{t.drawImage(n,0,0),s(!1)},n.src=e}}},[e]);let c=e=>{if(n)return;a(!0),s(!1);let t=r.current;if(!t)return;let i=t.getContext(`2d`);if(!i)return;let o=t.getBoundingClientRect(),c=`touches`in e?e.touches[0].clientX-o.left:e.clientX-o.left,l=`touches`in e?e.touches[0].clientY-o.top:e.clientY-o.top;i.beginPath(),i.moveTo(c,l)},l=e=>{if(!i||n)return;let t=r.current;if(!t)return;let a=t.getContext(`2d`);if(!a)return;let o=t.getBoundingClientRect(),s=`touches`in e?e.touches[0].clientX-o.left:e.clientX-o.left,c=`touches`in e?e.touches[0].clientY-o.top:e.clientY-o.top;a.lineTo(s,c),a.strokeStyle=`#000`,a.lineWidth=2,a.lineCap=`round`,a.lineJoin=`round`,a.stroke()},d=()=>{if(!i)return;a(!1);let e=r.current;e&&t(e.toDataURL(`image/png`))};return n&&e?(0,h.jsx)(`div`,{className:`border rounded p-2 bg-white`,children:(0,h.jsx)(`img`,{src:e,alt:`Signature`,loading:`lazy`,className:`max-w-full h-auto`})}):n&&!e?(0,h.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`No signature`}):(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsx)(`div`,{className:`border rounded bg-white`,children:(0,h.jsx)(`canvas`,{ref:r,width:400,height:200,className:`w-full touch-none cursor-crosshair`,onMouseDown:c,onMouseMove:l,onMouseUp:d,onMouseLeave:d,onTouchStart:c,onTouchMove:l,onTouchEnd:d})}),(0,h.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,h.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o?`Sign above`:`Signature captured`}),(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{let e=r.current;if(!e)return;let n=e.getContext(`2d`);n&&(n.clearRect(0,0,e.width,e.height),s(!0),t(``))},disabled:n||o,children:[(0,h.jsx)(p.Eraser,{className:`w-4 h-4 mr-2`}),`Clear`]})]})]})}var Bt=o((()=>{})),Vt=s({QRCodeField:()=>Ht});function Ht({value:e,onChange:t,field:n,readonly:r,...i}){let[a,o]=u.default.useState(!1),s=n||i.schema;return r?(0,h.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,h.jsx)(`span`,{className:`text-sm flex-1 truncate`,children:e||(0,h.jsx)(f.EmptyValue,{})}),e&&(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>o(!a),children:[(0,h.jsx)(p.QrCode,{className:`w-4 h-4 mr-2`}),a?`Hide`:`Show`,` QR`]})]}):(0,h.jsxs)(`div`,{className:`space-y-3`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(f.Input,{type:`text`,value:e||``,onChange:e=>t(e.target.value),placeholder:s?.placeholder||`Enter text for QR code`,disabled:r||i.disabled,className:i.className}),e&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{e&&navigator.clipboard.writeText(e)},children:(0,h.jsx)(p.Copy,{className:`w-4 h-4`})}),(0,h.jsx)(f.Button,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>o(!a),children:(0,h.jsx)(p.QrCode,{className:`w-4 h-4`})})]})]}),a&&e&&(0,h.jsx)(`div`,{className:`border rounded p-4 bg-white flex justify-center`,children:(0,h.jsx)(`img`,{src:(e=>`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(e)}`)(e),alt:`QR Code`,className:`w-48 h-48`})}),e&&(0,h.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`QR code contains: `,e.length,` characters`]})]})}var Ut=o((()=>{}));b(),C(),E(),te(),N(),I(),R(),B(),U(),oe(),se(),Te(),Oe(),X(),Ne(),Ie(),ze(),Ke(),Ye(),Qe(),tt(),it(),st(),ut(),pt(),gt(),yt(),St(),Tt(),Ot(),jt(),Pt(),Lt(),Bt(),Ut(),He();function Wt({value:e,onChange:t,field:n,readonly:r,className:i,...a}){let o=e||[],s=n||a.schema,c=()=>{let e={id:`new-${Date.now()}`,label:`New Related Record`};t([...o,e])},l=e=>{t(o.filter(t=>t.id!==e))},u=e=>{console.log(`View detail:`,e)};return r?(0,h.jsxs)(`div`,{className:(0,f.cn)(`space-y-2`,i),children:[o.length===0?(0,h.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`No related records`}):o.map(e=>(0,h.jsxs)(`div`,{className:`flex items-center justify-between p-2 border rounded hover:bg-muted/50`,children:[(0,h.jsx)(`span`,{className:`text-sm`,children:e.label}),(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>u(e),children:(0,h.jsx)(p.ExternalLink,{className:`w-4 h-4`})})]},e.id)),(0,h.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[o.length,` `,o.length===1?`record`:`records`]})]}):(0,h.jsxs)(`div`,{className:(0,f.cn)(`space-y-3`,i),children:[(0,h.jsxs)(`div`,{className:`space-y-2`,children:[o.map(e=>(0,h.jsxs)(`div`,{className:`flex items-center justify-between gap-2 p-2 border rounded hover:bg-muted/50`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,h.jsx)(f.Badge,{variant:`outline`,children:e.id}),(0,h.jsx)(`span`,{className:`text-sm flex-1`,children:e.label})]}),(0,h.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>u(e),children:(0,h.jsx)(p.ExternalLink,{className:`w-4 h-4`})}),(0,h.jsx)(f.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>l(e.id),disabled:a.disabled,children:(0,h.jsx)(p.X,{className:`w-4 h-4`})})]})]},e.id)),o.length===0&&(0,h.jsx)(`div`,{className:`text-sm text-muted-foreground text-center py-4 border border-dashed rounded bg-muted/20`,children:`No related records`})]}),(0,h.jsxs)(f.Button,{type:`button`,variant:`outline`,className:`w-full`,onClick:c,disabled:a.disabled,children:[(0,h.jsx)(p.Plus,{className:`w-4 h-4 mr-2`}),`Add `,s?.label||`Record`]})]})}_e(),b(),C(),E(),te(),N(),Oe(),X(),I(),R(),B(),U(),Ne(),Ie(),oe(),se(),Te(),Y(),ze(),Ke(),Ye(),Qe(),tt(),it(),st(),ut(),pt(),gt(),yt(),St(),Tt(),Ot(),jt(),Pt(),Lt(),Bt(),Ut();var Gt=new Map;function Kt(e){if(!(!e||typeof e!=`object`))for(let t of[`name`,`full_name`,`display_name`,`label`,`title`,`subject`,`username`,`email`]){let n=e[t];if(typeof n==`string`&&n.trim())return n.trim();if(typeof n==`number`)return String(n)}}function qt(e){if(typeof e!=`string`||!/^[A-Za-z0-9_-]{12,32}$/.test(e))return!1;let t=/[A-Z]/.test(e),n=/[a-z]/.test(e),r=/[0-9_-]/.test(e);return t&&n||t&&r||n&&r}function Jt(e,t){let n=u.default.useContext(m.SchemaRendererContext)?.dataSource,[,r]=u.default.useState(0),i=!!e&&!!n&&typeof n.find==`function`&&(typeof t==`string`||typeof t==`number`)&&t!==``,a=i?`${e}:${String(t)}`:``;if(u.default.useEffect(()=>{if(!i)return;let o=Gt.get(a);if(o&&o.state!==`pending`&&o.promise==null||o?.state===`pending`)return;let s=(async()=>{try{let r;if(typeof n.findOne==`function`)r=await n.findOne(e,t);else{let i=await n.find(e,{$filter:{id:t},options:{$top:1}});r=(Array.isArray(i)?i:i?.value||i?.data||[])[0]}let i=Kt(r);Gt.set(a,{state:`ok`,name:i})}catch{Gt.set(a,{state:`err`})}r(e=>e+1)})();Gt.set(a,{state:`pending`,promise:s})},[a,i,e,t,n]),!i)return;let o=Gt.get(a);return o?.state===`ok`?o.name:void 0}function Yt(){try{let{t:e}=(0,m.useObjectTranslation)();return(t,n)=>{let r=e(t);return!r||r===t?n:r}}catch{return(e,t)=>t}}function Z(e){if(e==null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(e=>{if(typeof e==`object`&&e){let t=e;return String(t.name||t.label||t.id||t._id||`[Object]`)}return String(e)}).join(`, `);if(typeof e==`object`){let t=e;return`$numberDecimal`in t?Number(t.$numberDecimal):`$oid`in t?String(t.$oid):`$date`in t?String(t.$date):String(t.name||t.label||t.id||t._id||`[Object]`)}return String(e)}function Xt(e,t=`USD`){try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t}).format(e)}catch{return`${t} ${e.toFixed(2)}`}}function Zt(e,t=`USD`){try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t,notation:`compact`,maximumFractionDigits:1}).format(e).replace(/\.0(?=[KMBT])/,``)}catch{return`${t} ${e}`}}function Qt(e,t=2){try{return new Intl.NumberFormat(`en-US`,{minimumFractionDigits:t,maximumFractionDigits:t}).format(e)}catch{return e.toFixed(t)}}function $t(e,t=0){return`${(e>-1&&e<1?e*100:e).toFixed(t)}%`}function en(e){return e.replace(/[_-]/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function tn(e){if(e==null||e===``)return`—`;let t=e instanceof Date?e:new Date(e);if(!(t instanceof Date)||isNaN(t.getTime()))return`—`;let n=new Date,r=new Date(n.getFullYear(),n.getMonth(),n.getDate()),i=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-r.getTime(),a=Math.round(i/(1e3*60*60*24));if(a===0)return`Today`;if(a===1)return`Tomorrow`;if(a===-1)return`Yesterday`;if(a<-1){let e=Math.abs(a);return e<=7?`Overdue ${e}d`:nn(t)}return a>1&&a<=7?`In ${a} days`:nn(t)}function nn(e,t){if(e==null||e===``)return`—`;let n=e instanceof Date?e:new Date(e);return!(n instanceof Date)||isNaN(n.getTime())?`—`:t===`short`?`${n.toLocaleDateString(`en-US`,{month:`short`})} ${n.getDate()}, '${String(n.getFullYear()).slice(-2)}`:t===`relative`?tn(n):n.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}function rn(e){if(e==null||e===``)return`—`;let t=e instanceof Date?e:new Date(e);return!(t instanceof Date)||isNaN(t.getTime())?`—`:t.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function Q({value:e}){let t=Z(e);return t==null||t===``?(0,h.jsx)(f.EmptyValue,{}):(0,h.jsx)(`span`,{className:`truncate`,children:String(t)})}function an({value:e,field:t}){if(e==null)return(0,h.jsx)(f.EmptyValue,{});let n=Z(e),r=t.precision??0,i=Number(n);return(0,h.jsx)(`span`,{className:`tabular-nums`,children:isNaN(i)?String(n):new Intl.NumberFormat(`en-US`,{minimumFractionDigits:r,maximumFractionDigits:r}).format(i)})}function on({value:e,field:t}){if(e==null)return(0,h.jsx)(f.EmptyValue,{});let n=Z(e),r=t,i=r.currency||r.defaultCurrency,a=Number(n),o=r.precision??r.scale??r.decimals??2;return(0,h.jsx)(`span`,{className:`tabular-nums font-medium whitespace-nowrap`,children:isNaN(a)?String(n):i?Xt(a,i):Qt(a,o)})}var sn=/progress|completion/;function cn({value:e,field:t}){if(e==null)return(0,h.jsx)(f.EmptyValue,{});let n=Z(e),r=t.precision??0,i=Number(n);if(isNaN(i))return(0,h.jsx)(`span`,{className:`tabular-nums whitespace-nowrap`,children:String(n)});let a=sn.test(t?.name?.toLowerCase()||``),o=a?i:i>-1&&i<1?i*100:i,s=a?`${i.toFixed(r)}%`:$t(i,r),c=Math.max(0,Math.min(100,o));return(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`div`,{className:`h-1.5 w-16 rounded-full bg-muted ring-1 ring-inset ring-border/60 overflow-hidden shrink-0`,role:`progressbar`,"aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":100,children:(0,h.jsx)(`div`,{className:`h-full rounded-full bg-primary transition-all`,style:{width:`${c}%`}})}),(0,h.jsx)(`span`,{className:`tabular-nums whitespace-nowrap`,children:s})]})}var ln=new Set([`active`,`is_active`,`enabled`,`is_enabled`,`verified`,`is_verified`]);function un({value:e,field:t}){if(e==null)return(0,h.jsx)(`span`,{className:`flex items-center justify-center`,children:(0,h.jsx)(f.EmptyValue,{})});let n=t?.name?.toLowerCase()||``;return n===`completed`||n===`is_completed`||n===`done`||n===`is_done`?(0,h.jsx)(`div`,{className:`flex items-center justify-center`,children:e?(0,h.jsx)(`div`,{className:`size-5 rounded-full bg-green-500 flex items-center justify-center`,role:`img`,"aria-label":`Completed`,"data-testid":`completion-indicator`,children:(0,h.jsx)(p.Check,{className:`size-3 text-white`})}):(0,h.jsx)(`div`,{className:`size-5 rounded-full border-2 border-muted-foreground/30`,role:`img`,"aria-label":`Not completed`,"data-testid":`completion-indicator`})}):ln.has(n)&&!e?(0,h.jsxs)(f.Badge,{variant:`destructive`,className:`text-xs`,"data-testid":`boolean-warning-badge`,children:[t?.label||en(n),` — Off`]}):(0,h.jsx)(`div`,{className:`flex items-center justify-start`,children:(0,h.jsx)(f.Checkbox,{checked:!!e,disabled:!0,className:`pointer-events-none`})})}function dn({value:e,field:t}){if(!e)return(0,h.jsx)(f.EmptyValue,{});let n=Z(e),r=t,i=nn(n,r.format||`relative`),a=n==null?null:new Date(n),o=a!==null&&!isNaN(a.getTime()),s=new Date;s.setHours(0,0,0,0);let c=String(r?.name||r?.accessorKey||r?.key||``).toLowerCase(),l=(r?.dueLike===!0||/(^|_)(due|deadline|expires?|expiry|expiration|expected_close|target_close|sla|return_by|renewal|next_action)(_|$)/.test(c))&&o&&a<s,u=o?a.toISOString():String(n);return(0,h.jsx)(`span`,{className:`tabular-nums${l?` text-red-600`:``}`,title:u,children:i})}function fn({value:e}){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=Z(e),n=t==null?null:new Date(t);if(n===null||isNaN(n.getTime()))return(0,h.jsx)(f.EmptyValue,{});let r=n.toLocaleDateString(void 0,{month:`numeric`,day:`numeric`,year:`numeric`}),i=n.toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`,hour12:!0}).toLowerCase();return(0,h.jsxs)(`span`,{className:`tabular-nums text-sm whitespace-nowrap`,children:[(0,h.jsx)(`span`,{children:r}),(0,h.jsx)(`span`,{className:`ml-2 text-muted-foreground`,children:i})]})}var pn={critical:`red`,urgent:`red`,high:`orange`,medium:`yellow`,normal:`blue`,low:`gray`,none:`gray`,paid:`green`,completed:`green`,done:`green`,active:`green`,approved:`green`,resolved:`green`,pending:`yellow`,waiting:`yellow`,on_hold:`yellow`,shipped:`blue`,in_progress:`blue`,open:`blue`,processing:`blue`,draft:`gray`,new:`gray`,inactive:`gray`,closed:`gray`,cancelled:`red`,canceled:`red`,rejected:`red`,failed:`red`,overdue:`red`,delivered:`purple`,archived:`indigo`,contacted:`blue`,qualified:`purple`,converted:`green`,won:`green`,lost:`red`,紧急:`red`,严重:`red`,高:`orange`,中:`yellow`,普通:`blue`,低:`gray`,无:`gray`,新建:`gray`,草稿:`gray`,待处理:`yellow`,待审核:`yellow`,待联系:`yellow`,挂起:`yellow`,进行中:`blue`,处理中:`blue`,已联系:`blue`,跟进中:`blue`,已发货:`blue`,打开:`blue`,已确认:`green`,已审核:`green`,已通过:`green`,已完成:`green`,已支付:`green`,已签收:`green`,已转化:`green`,成单:`green`,赢得:`green`,已签约:`green`,已交付:`purple`,已归档:`indigo`,已关闭:`gray`,已取消:`red`,已拒绝:`red`,失败:`red`,逾期:`red`,流失:`red`,丢失:`red`},mn={gray:`bg-gray-50 text-gray-700 border-gray-200 dark:bg-gray-800/50 dark:text-gray-200 dark:border-gray-700/60`,red:`bg-red-50 text-red-700 border-red-200 dark:bg-red-950/40 dark:text-red-300 dark:border-red-900/60`,orange:`bg-orange-50 text-orange-700 border-orange-200 dark:bg-orange-950/40 dark:text-orange-300 dark:border-orange-900/60`,yellow:`bg-yellow-50 text-yellow-800 border-yellow-200 dark:bg-yellow-950/40 dark:text-yellow-300 dark:border-yellow-900/60`,green:`bg-green-50 text-green-700 border-green-200 dark:bg-green-950/40 dark:text-green-300 dark:border-green-900/60`,blue:`bg-blue-50 text-blue-700 border-blue-200 dark:bg-blue-950/40 dark:text-blue-300 dark:border-blue-900/60`,indigo:`bg-indigo-50 text-indigo-700 border-indigo-200 dark:bg-indigo-950/40 dark:text-indigo-300 dark:border-indigo-900/60`,purple:`bg-purple-50 text-purple-700 border-purple-200 dark:bg-purple-950/40 dark:text-purple-300 dark:border-purple-900/60`,pink:`bg-pink-50 text-pink-700 border-pink-200 dark:bg-pink-950/40 dark:text-pink-300 dark:border-pink-900/60`},hn={gray:`bg-gray-400 dark:bg-gray-500`,red:`bg-red-500`,orange:`bg-orange-500`,yellow:`bg-yellow-500`,green:`bg-green-500`,blue:`bg-blue-500`,indigo:`bg-indigo-500`,purple:`bg-purple-500`,pink:`bg-pink-500`},gn=[`blue`,`green`,`purple`,`orange`,`pink`,`indigo`,`yellow`,`red`];function _n(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t^e.charCodeAt(n);return gn[Math.abs(t)%gn.length]}function vn(e,t){if(e&&mn[e])return mn[e];if(t==null||t===``)return`bg-muted text-muted-foreground border-border`;let n=String(t).toLowerCase().replace(/[\s-]/g,`_`),r=pn[n];return r&&mn[r]?mn[r]:mn[_n(n)]}function yn(e,t){if(e&&mn[e])return e;if(t==null||t===``)return;let n=String(t).toLowerCase().replace(/[\s-]/g,`_`);return pn[n]||_n(n)}var bn={gray:`#6b7280`,red:`#ef4444`,orange:`#f97316`,yellow:`#eab308`,green:`#22c55e`,blue:`#3b82f6`,indigo:`#6366f1`,purple:`#a855f7`,pink:`#ec4899`};function xn(e,t=`#3b82f6`){return e?bn[e]??t:t}function Sn({value:e,field:t}){let n=t,r=n.options||[],i=n.appearance===`dot`?`dot`:`badge`;if(e==null||e===``)return(0,h.jsx)(f.EmptyValue,{});let a=e=>{let t=r.find(t=>t.value===e);if(t)return t;let n=String(e).toLowerCase();return r.find(e=>String(e.value).toLowerCase()===n)},o=(e,t)=>{let n=a(e),r=n?.label||en(String(e));return i===`dot`?(0,h.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-sm`,children:[(0,h.jsx)(`span`,{className:(0,f.cn)(`h-1.5 w-1.5 rounded-full shrink-0`,hn[n?.color||pn[String(e).toLowerCase().replace(/[\s-]/g,`_`)]||_n(String(e).toLowerCase().replace(/[\s-]/g,`_`))]||hn.gray),"aria-hidden":`true`}),(0,h.jsx)(`span`,{className:`truncate`,children:r})]},t):(0,h.jsx)(f.Badge,{variant:`outline`,className:vn(n?.color,e),children:r},t)};return Array.isArray(e)?(0,h.jsx)(`div`,{className:(0,f.cn)(`flex flex-wrap`,i===`dot`?`gap-x-3 gap-y-1`:`gap-1`),children:e.map((e,t)=>o(e,t))}):o(e)}function Cn({value:e}){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=Yt(),n=String(Z(e)??``),[r,i]=u.default.useState(!1);return(0,h.jsxs)(`span`,{className:`inline-flex items-center gap-1 group/email`,children:[(0,h.jsx)(f.Button,{variant:`link`,className:`p-0 h-auto font-normal text-blue-600 hover:text-blue-800`,asChild:!0,children:(0,h.jsx)(`a`,{href:`mailto:${n}`,onClick:e=>e.stopPropagation(),children:n})}),(0,h.jsx)(`button`,{type:`button`,className:`opacity-0 group-hover/email:opacity-100 transition-opacity p-0.5 rounded hover:bg-muted`,onClick:e=>{e.stopPropagation(),e.preventDefault(),navigator.clipboard.writeText(n).then(()=>{i(!0),setTimeout(()=>i(!1),2e3)}).catch(()=>{})},"aria-label":t(`detail.copyEmail`,`Copy email`),children:r?(0,h.jsx)(p.Check,{className:`h-3 w-3 text-green-600`}):(0,h.jsx)(p.Copy,{className:`h-3 w-3 text-muted-foreground`})})]})}function wn({value:e}){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=String(Z(e)??``);return(0,h.jsx)(f.Button,{variant:`link`,className:`p-0 h-auto font-normal text-blue-600 hover:text-blue-800`,asChild:!0,children:(0,h.jsx)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>e.stopPropagation(),children:t})})}function Tn({value:e}){if(!e)return(0,h.jsx)(f.EmptyValue,{});let t=Yt(),n=String(Z(e)??``),[r,i]=u.default.useState(!1);return(0,h.jsxs)(`span`,{className:`inline-flex items-center gap-1 group/phone`,children:[(0,h.jsxs)(`a`,{href:`tel:${n}`,className:`inline-flex items-center gap-1 text-blue-600 hover:text-blue-800`,onClick:e=>e.stopPropagation(),children:[(0,h.jsx)(p.Phone,{className:`h-3 w-3`}),n]}),(0,h.jsx)(`button`,{type:`button`,className:`opacity-0 group-hover/phone:opacity-100 transition-opacity p-0.5 rounded hover:bg-muted`,onClick:e=>{e.stopPropagation(),e.preventDefault(),navigator.clipboard.writeText(n).then(()=>{i(!0),setTimeout(()=>i(!1),2e3)}).catch(()=>{})},"aria-label":t(`detail.copyPhone`,`Copy phone number`),children:r?(0,h.jsx)(p.Check,{className:`h-3 w-3 text-green-600`}):(0,h.jsx)(p.Copy,{className:`h-3 w-3 text-muted-foreground`})})]})}function En({value:e,field:t}){if(!e)return(0,h.jsx)(f.EmptyValue,{});if(t.multiple,Array.isArray(e)){let t=e.length;return(0,h.jsxs)(`span`,{className:`text-sm text-gray-600`,children:[t,` `,t===1?`file`:`files`]})}return(0,h.jsx)(`span`,{className:`text-sm truncate`,children:e.name||e.original_name||`File`})}function Dn({value:e}){return e?Array.isArray(e)?(0,h.jsxs)(`div`,{className:`flex -space-x-2`,children:[e.slice(0,3).map((e,t)=>(0,h.jsx)(`img`,{src:e.url||``,alt:e.name||`Image ${t+1}`,className:`size-8 rounded-md border-2 border-white object-cover`},t)),e.length>3&&(0,h.jsxs)(`div`,{className:`size-8 rounded-md border-2 border-white bg-gray-100 flex items-center justify-center text-xs font-medium text-gray-600`,children:[`+`,e.length-3]})]}):(0,h.jsx)(`img`,{src:e.url||``,alt:e.name||`Image`,className:`size-10 rounded-md object-cover`}):(0,h.jsx)(f.EmptyValue,{})}function On({value:e,field:t}){let n=t.reference_to,r=(()=>{if(Array.isArray(e))return e.find(e=>e!=null&&(typeof e==`string`||typeof e==`number`)&&e!==``);if(e!=null&&e!==``&&(typeof e==`string`||typeof e==`number`)&&typeof e!=`object`)return e})(),i=Jt(n,r);if(e==null||e===``)return(0,h.jsx)(f.EmptyValue,{});let a=t.options||[],o=e=>{if(a.length>0){let t=a.find(t=>String(t.value)===String(e));if(t)return{text:t.label,muted:!1}}return e===r&&i?{text:i,muted:!1}:qt(e)?{text:`—`,muted:!0}:{text:String(e),muted:!1}};if(Array.isArray(e))return(0,h.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.map((e,t)=>{let n,r=!1;if(typeof e==`object`&&e)n=Kt(e)||String(e.id||e._id||`[Object]`);else{let t=o(e);n=t.text,r=t.muted}return(0,h.jsx)(`span`,{className:(0,f.cn)(`inline-flex items-center px-2 py-0.5 rounded text-xs font-medium`,r?`bg-muted/40 text-muted-foreground`:`bg-gray-50 text-gray-700 dark:bg-gray-800/50 dark:text-gray-200`),children:n},t)})});if(typeof e==`object`&&e)return(0,h.jsx)(`span`,{className:`truncate`,children:Kt(e)||String(e.id||e._id||`[Object]`)});let{text:s,muted:c}=o(e);return(0,h.jsx)(`span`,{className:(0,f.cn)(`truncate`,c&&`text-muted-foreground`),children:s})}function kn({value:e}){let t=Z(e);return t==null||t===``?(0,h.jsx)(f.EmptyValue,{}):(0,h.jsx)(`span`,{className:`text-gray-700 font-mono text-sm`,children:String(t)})}function An({value:e}){if(!e)return(0,h.jsx)(f.EmptyValue,{});if(typeof e!=`object`)return(0,h.jsx)(`span`,{className:`truncate`,children:String(e)});if(Array.isArray(e))return(0,h.jsxs)(`div`,{className:`flex -space-x-2`,children:[e.slice(0,3).map((e,t)=>{if(typeof e!=`object`||!e)return(0,h.jsx)(`span`,{className:`truncate text-sm`,children:String(e)},t);let n=e.name||e.username||`User`;return(0,h.jsx)(f.Avatar,{className:`size-8 border-2 border-white`,title:n,children:(0,h.jsx)(f.AvatarFallback,{className:`bg-blue-500 text-white text-xs`,children:n.split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2)})},t)}),e.length>3&&(0,h.jsx)(f.Avatar,{className:`size-8 border-2 border-white`,children:(0,h.jsxs)(f.AvatarFallback,{className:`bg-gray-200 text-gray-600 text-xs`,children:[`+`,e.length-3]})})]});let t=e.name||e.username||`User`;return(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(f.Avatar,{className:`size-8`,children:(0,h.jsx)(f.AvatarFallback,{className:`bg-blue-500 text-white text-xs`,children:t.split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2)})}),(0,h.jsx)(`span`,{className:`truncate`,children:t})]})}var jn=new Map;function Mn(e,t){jn.set(e,t)}var Nn={phone:`phone`,tel:`phone`,telephone:`phone`,email:`email`,url:`url`,uri:`url`,link:`url`,currency:`currency`,money:`currency`,percent:`percent`,percentage:`percent`},Pn=new Set([`text`,`textarea`,`string`,`longtext`,``]);function Fn(e){if(!e)return`text`;if(typeof e==`string`)return e;let t=(e.type||``).toLowerCase(),n=e.format,r=typeof n==`string`?n.toLowerCase():``;return r&&Nn[r]&&Pn.has(t)?Nn[r]:e.type||`text`}function In(e){return jn.has(e)?jn.get(e):{text:Q,textarea:Q,markdown:Q,html:Q,number:an,currency:on,percent:cn,boolean:un,date:dn,datetime:fn,time:Q,select:Sn,status:Sn,lookup:On,master_detail:On,email:Cn,url:wn,phone:Tn,file:En,image:Dn,formula:kn,summary:kn,auto_number:Q,user:An,owner:An,password:()=>(0,h.jsx)(`span`,{children:`••••••`}),location:Q,object:()=>(0,h.jsx)(`span`,{className:`text-gray-500 italic`,children:`[Object]`}),vector:()=>(0,h.jsx)(`span`,{className:`text-gray-500 italic`,children:`[Vector]`}),grid:()=>(0,h.jsx)(`span`,{className:`text-gray-500 italic`,children:`[Grid]`})}[e]||Q}Mn(`lookup`,On),Mn(`master_detail`,On),Mn(`select`,Sn),Mn(`status`,Sn),Mn(`user`,An),Mn(`owner`,An),me(In);function Ln(e){return{text:`field:text`,textarea:`field:textarea`,markdown:`field:markdown`,html:`field:html`,number:`field:number`,currency:`field:currency`,percent:`field:percent`,date:`field:date`,datetime:`field:datetime`,time:`field:time`,boolean:`field:boolean`,select:`field:select`,lookup:`field:lookup`,master_detail:`field:master_detail`,email:`field:email`,phone:`field:phone`,url:`field:url`,file:`field:file`,image:`field:image`,password:`field:password`,location:`field:location`,formula:`field:formula`,summary:`field:summary`,auto_number:`field:auto_number`}[e]||`field:text`}function Rn(e){if(e<0||!Number.isFinite(e)||e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(+(r>0))} ${t[r]}`}function zn(e){let t={};return e.required&&(t.required=typeof e.required_message==`string`?e.required_message:`${e.label||e.name} is required`),e.min_length&&(t.minLength={value:e.min_length,message:e.min_length_message||`Minimum length is ${e.min_length} characters`}),e.max_length&&(t.maxLength={value:e.max_length,message:e.max_length_message||`Maximum length is ${e.max_length} characters`}),e.min!==void 0&&(t.min={value:e.min,message:e.min_message||`Minimum value is ${e.min}`}),e.max!==void 0&&(t.max={value:e.max,message:e.max_message||`Maximum value is ${e.max}`}),e.pattern&&(t.pattern={value:typeof e.pattern==`string`?new RegExp(e.pattern):e.pattern,message:e.pattern_message||`Invalid format`}),e.type===`email`&&(t.pattern={value:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,message:`Please enter a valid email address`}),e.type===`url`&&(t.pattern={value:/^https?:\/\/.+/,message:`Please enter a valid URL`}),e.validate&&(t.validate=e.validate),Object.keys(t).length>0?t:void 0}function Bn(e,t){if(!e)return!0;if(e.field&&e.value!==void 0){let n=t[e.field];if(e.operator===`=`||e.operator===`==`)return n===e.value;if(e.operator===`!=`)return n!==e.value;if(e.operator===`>`)return n>e.value;if(e.operator===`>=`)return n>=e.value;if(e.operator===`<`)return n<e.value;if(e.operator===`<=`)return n<=e.value;if(e.operator===`in`)return Array.isArray(e.value)&&e.value.includes(n)}return e.and&&Array.isArray(e.and)?e.and.every(e=>Bn(e,t)):e.or&&Array.isArray(e.or)?e.or.some(e=>Bn(e,t)):!0}function $(e){let t=({schema:t,className:n,value:r,...i})=>{let[a,o]=u.default.useState(r??t?.value??``),s={name:t?.name||`field`,label:t?.label,type:t?.type,placeholder:t?.placeholder,required:t?.required,readonly:t?.readonly||t?.readOnly,help:t?.help,description:t?.description,defaultValue:t?.defaultValue||t?.value,...t},c=u.default.useCallback(e=>{o(e),i.onChange&&i.onChange(e)},[i]),l=t?.readonly||t?.readOnly||!1;return(0,h.jsxs)(`div`,{className:`grid w-full items-center gap-1.5`,"data-obj-id":t?.id,"data-obj-type":t?.type,children:[t?.label&&(0,h.jsx)(`label`,{htmlFor:t.id,className:t.required?`after:content-['*'] after:ml-0.5 after:text-red-500`:``,children:t.label}),(0,h.jsx)(e,{value:a,onChange:c,field:s,readonly:l,className:n}),t?.description&&(0,h.jsx)(`p`,{className:`text-sm text-gray-500`,children:t.description})]})};return t.displayName=`FieldRenderer(${e.displayName||e.name||`Component`})`,t}var Vn={text:()=>Promise.resolve().then(()=>(b(),v)).then(e=>({default:e.TextField})),textarea:()=>Promise.resolve().then(()=>(oe(),W)).then(e=>({default:e.TextAreaField})),number:()=>Promise.resolve().then(()=>(C(),x)).then(e=>({default:e.NumberField})),boolean:()=>Promise.resolve().then(()=>(E(),w)).then(e=>({default:e.BooleanField})),select:()=>Promise.resolve().then(()=>(te(),k)).then(e=>({default:e.SelectField})),date:()=>Promise.resolve().then(()=>(N(),j)).then(e=>({default:e.DateField})),datetime:()=>Promise.resolve().then(()=>(Oe(),Ee)).then(e=>({default:e.DateTimeField})),time:()=>Promise.resolve().then(()=>(X(),ke)).then(e=>({default:e.TimeField})),email:()=>Promise.resolve().then(()=>(I(),P)).then(e=>({default:e.EmailField})),phone:()=>Promise.resolve().then(()=>(R(),ne)).then(e=>({default:e.PhoneField})),url:()=>Promise.resolve().then(()=>(B(),re)).then(e=>({default:e.UrlField})),currency:()=>Promise.resolve().then(()=>(U(),ie)).then(e=>({default:e.CurrencyField})),percent:()=>Promise.resolve().then(()=>(Ne(),je)).then(e=>({default:e.PercentField})),password:()=>Promise.resolve().then(()=>(Ie(),Pe)).then(e=>({default:e.PasswordField})),markdown:()=>Promise.resolve().then(()=>(se(),G)).then(e=>({default:e.RichTextField})),html:()=>Promise.resolve().then(()=>(se(),G)).then(e=>({default:e.RichTextField})),lookup:()=>Promise.resolve().then(()=>(Te(),ve)).then(e=>({default:e.LookupField})),master_detail:()=>Promise.resolve().then(()=>(Te(),ve)).then(e=>({default:e.LookupField})),file:()=>Promise.resolve().then(()=>(ze(),Le)).then(e=>({default:e.FileField})),image:()=>Promise.resolve().then(()=>(Ke(),Ue)).then(e=>({default:e.ImageField})),location:()=>Promise.resolve().then(()=>(Ye(),qe)).then(e=>({default:e.LocationField})),formula:()=>Promise.resolve().then(()=>(Qe(),Xe)).then(e=>({default:e.FormulaField})),summary:()=>Promise.resolve().then(()=>(tt(),$e)).then(e=>({default:e.SummaryField})),auto_number:()=>Promise.resolve().then(()=>(it(),nt)).then(e=>({default:e.AutoNumberField})),user:()=>Promise.resolve().then(()=>(st(),at)).then(e=>({default:e.UserField})),owner:()=>Promise.resolve().then(()=>(st(),at)).then(e=>({default:e.UserField})),object:()=>Promise.resolve().then(()=>(ut(),ct)).then(e=>({default:e.ObjectField})),vector:()=>Promise.resolve().then(()=>(pt(),dt)).then(e=>({default:e.VectorField})),grid:()=>Promise.resolve().then(()=>(gt(),mt)).then(e=>({default:e.GridField})),color:()=>Promise.resolve().then(()=>(yt(),_t)).then(e=>({default:e.ColorField})),slider:()=>Promise.resolve().then(()=>(St(),bt)).then(e=>({default:e.SliderField})),rating:()=>Promise.resolve().then(()=>(Tt(),Ct)).then(e=>({default:e.RatingField})),code:()=>Promise.resolve().then(()=>(Ot(),Et)).then(e=>({default:e.CodeField})),avatar:()=>Promise.resolve().then(()=>(jt(),kt)).then(e=>({default:e.AvatarField})),address:()=>Promise.resolve().then(()=>(Pt(),Mt)).then(e=>({default:e.AddressField})),geolocation:()=>Promise.resolve().then(()=>(Lt(),Ft)).then(e=>({default:e.GeolocationField})),signature:()=>Promise.resolve().then(()=>(Bt(),Rt)).then(e=>({default:e.SignatureField})),qrcode:()=>Promise.resolve().then(()=>(Ut(),Vt)).then(e=>({default:e.QRCodeField}))};function Hn(e){let t=Vn[e];if(!t){console.warn(`Unknown field type: ${e}`);return}let n=u.default.lazy(t);d.ComponentRegistry.register(e,n,{namespace:`field`})}function Un(){Object.keys(Vn).forEach(e=>{Hn(e)})}function Wn(){d.ComponentRegistry.register(`text`,$(y),{namespace:`field`}),d.ComponentRegistry.register(`textarea`,$(ae),{namespace:`field`}),d.ComponentRegistry.register(`number`,$(S),{namespace:`field`}),d.ComponentRegistry.register(`boolean`,$(T),{namespace:`field`}),d.ComponentRegistry.register(`select`,$(A),{namespace:`field`}),d.ComponentRegistry.register(`date`,$(M),{namespace:`field`}),d.ComponentRegistry.register(`datetime`,$(De),{namespace:`field`}),d.ComponentRegistry.register(`time`,$(Ae),{namespace:`field`}),d.ComponentRegistry.register(`email`,$(F),{namespace:`field`}),d.ComponentRegistry.register(`phone`,$(L),{namespace:`field`}),d.ComponentRegistry.register(`url`,$(z),{namespace:`field`}),d.ComponentRegistry.register(`currency`,$(H),{namespace:`field`}),d.ComponentRegistry.register(`percent`,$(Me),{namespace:`field`}),d.ComponentRegistry.register(`password`,$(Fe),{namespace:`field`}),d.ComponentRegistry.register(`markdown`,$(K),{namespace:`field`}),d.ComponentRegistry.register(`html`,$(K),{namespace:`field`}),d.ComponentRegistry.register(`lookup`,$(Se),{namespace:`field`}),d.ComponentRegistry.register(`master_detail`,$(Se),{namespace:`field`}),d.ComponentRegistry.register(`file`,$(Re),{namespace:`field`}),d.ComponentRegistry.register(`image`,$(We),{namespace:`field`}),d.ComponentRegistry.register(`location`,$(Je),{namespace:`field`}),d.ComponentRegistry.register(`formula`,$(Ze),{namespace:`field`}),d.ComponentRegistry.register(`summary`,$(et),{namespace:`field`}),d.ComponentRegistry.register(`auto_number`,$(rt),{namespace:`field`}),d.ComponentRegistry.register(`user`,$(ot),{namespace:`field`}),d.ComponentRegistry.register(`owner`,$(ot),{namespace:`field`}),d.ComponentRegistry.register(`object`,$(lt),{namespace:`field`}),d.ComponentRegistry.register(`vector`,$(ft),{namespace:`field`}),d.ComponentRegistry.register(`grid`,$(ht),{namespace:`field`}),d.ComponentRegistry.register(`color`,$(vt),{namespace:`field`}),d.ComponentRegistry.register(`slider`,$(xt),{namespace:`field`}),d.ComponentRegistry.register(`rating`,$(wt),{namespace:`field`}),d.ComponentRegistry.register(`code`,$(Dt),{namespace:`field`}),d.ComponentRegistry.register(`avatar`,$(At),{namespace:`field`}),d.ComponentRegistry.register(`address`,$(Nt),{namespace:`field`}),d.ComponentRegistry.register(`geolocation`,$(It),{namespace:`field`}),d.ComponentRegistry.register(`signature`,$(zt),{namespace:`field`}),d.ComponentRegistry.register(`qrcode`,$(Ht),{namespace:`field`})}Un(),exports.AddressField=Nt,exports.AutoNumberField=rt,exports.AvatarField=At,exports.BooleanCellRenderer=un,exports.BooleanField=T,exports.CodeField=Dt,exports.ColorField=vt,exports.CurrencyCellRenderer=on,exports.CurrencyField=H,exports.DateCellRenderer=dn,exports.DateField=M,exports.DateTimeCellRenderer=fn,exports.DateTimeField=De,exports.EmailCellRenderer=Cn,exports.EmailField=F,exports.FileCellRenderer=En,exports.FileField=Re,exports.FormulaCellRenderer=kn,exports.FormulaField=Ze,exports.GeolocationField=It,exports.GridField=ht,exports.ImageCellRenderer=Dn,exports.ImageCropperDialog=Ve,exports.ImageField=We,exports.LocationField=Je,exports.LookupCellRenderer=On,exports.LookupField=Se,exports.MasterDetailField=Wt,exports.NumberCellRenderer=an,exports.NumberField=S,exports.ObjectField=lt,exports.PasswordField=Fe,exports.PercentCellRenderer=cn,exports.PercentField=Me,exports.PhoneCellRenderer=Tn,exports.PhoneField=L,exports.QRCodeField=Ht,exports.RatingField=wt,exports.RecordPickerDialog=de,exports.RichTextField=K,exports.SelectCellRenderer=Sn,exports.SelectField=A,exports.SignatureField=zt,exports.SliderField=xt,exports.SummaryField=et,exports.TextAreaField=ae,exports.TextCellRenderer=Q,exports.TextField=y,exports.TimeField=Ae,exports.UrlCellRenderer=wn,exports.UrlField=z,exports.UserCellRenderer=An,exports.UserField=ot,exports.VectorField=ft,exports.buildValidationRules=zn,exports.coerceToSafeValue=Z,exports.evaluateCondition=Bn,exports.formatCompactCurrency=Zt,exports.formatCurrency=Xt,exports.formatDate=nn,exports.formatDateTime=rn,exports.formatFileSize=Rn,exports.formatNumber=Qt,exports.formatPercent=$t,exports.formatRelativeDate=tn,exports.getBadgeColorClasses=vn,exports.getCellRenderer=In,exports.getSemanticColorName=yn,exports.getSemanticHex=xn,exports.humanizeLabel=en,exports.isLikelyOpaqueId=qt,exports.mapFieldTypeToFormType=Ln,exports.registerAllFields=Un,exports.registerField=Hn,exports.registerFieldRenderer=Mn,exports.registerFields=Wn,exports.resolveCellRendererType=Fn;
|