@donotdev/crud 0.0.29 → 0.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/CrudStore.js +1 -1
  2. package/dist/adapters/FunctionsAdapter.js +1 -1
  3. package/dist/components/CrudButton.js +1 -1
  4. package/dist/components/CrudCard.d.ts +1 -1
  5. package/dist/components/CrudCard.d.ts.map +1 -1
  6. package/dist/components/CrudCard.js +1 -1
  7. package/dist/components/DateFilter.js +1 -1
  8. package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
  9. package/dist/components/DisplayFieldRenderer.js +1 -1
  10. package/dist/components/DisplayThumbnail.js +1 -1
  11. package/dist/components/EntityFilters.js +1 -1
  12. package/dist/components/FormFieldRenderer.js +1 -1
  13. package/dist/components/FormLayout.js +1 -1
  14. package/dist/components/controlled/complex/ControlledDateField.js +1 -1
  15. package/dist/components/controlled/complex/ControlledFieldArrayField.js +1 -1
  16. package/dist/components/controlled/complex/ControlledMapField.js +1 -1
  17. package/dist/components/controlled/complex/ControlledMultiInputField.js +1 -1
  18. package/dist/components/controlled/complex/ControlledTimestampField.js +1 -1
  19. package/dist/components/controlled/file/ControlledDocumentField.js +1 -1
  20. package/dist/components/controlled/file/ControlledImageField.js +1 -1
  21. package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -1
  22. package/dist/components/controlled/file/ControlledMultiFileField.js +1 -1
  23. package/dist/components/controlled/file/ControlledMultiImageField.js +1 -1
  24. package/dist/components/controlled/input/ControlledCheckboxField.js +1 -1
  25. package/dist/components/controlled/input/ControlledCurrencyField.js +1 -1
  26. package/dist/components/controlled/input/ControlledDurationField.js +1 -1
  27. package/dist/components/controlled/input/ControlledGdprConsentField.js +1 -1
  28. package/dist/components/controlled/input/ControlledNumberField.js +1 -1
  29. package/dist/components/controlled/input/ControlledPhoneField.js +1 -1
  30. package/dist/components/controlled/input/ControlledRangeField.js +1 -1
  31. package/dist/components/controlled/input/ControlledRatingField.js +1 -1
  32. package/dist/components/controlled/input/ControlledSwitchField.js +1 -1
  33. package/dist/components/controlled/input/ControlledTextField.js +1 -1
  34. package/dist/components/controlled/select/ControlledComboboxField.js +1 -1
  35. package/dist/components/controlled/select/ControlledDropdownField.js +1 -1
  36. package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -1
  37. package/dist/components/controlled/select/ControlledRadioField.js +1 -1
  38. package/dist/components/controlled/select/ControlledReferenceField.js +1 -1
  39. package/dist/components/controlled/select/ControlledYearField.js +1 -1
  40. package/dist/components/controlled/types.js +1 -1
  41. package/dist/components/fields/display/AvatarFieldDisplay.js +1 -1
  42. package/dist/components/fields/display/BadgeFieldDisplay.js +1 -1
  43. package/dist/components/fields/display/CheckboxFieldDisplay.js +1 -1
  44. package/dist/components/fields/display/DateFieldDisplay.js +1 -1
  45. package/dist/components/fields/display/FileFieldDisplay.js +1 -1
  46. package/dist/components/fields/display/LinkFieldDisplay.js +1 -1
  47. package/dist/components/fields/display/MapFieldDisplay.js +1 -1
  48. package/dist/components/fields/display/NumberFieldDisplay.js +1 -1
  49. package/dist/components/fields/display/PasswordFieldDisplay.js +1 -1
  50. package/dist/components/fields/display/ReferenceFieldDisplay.js +1 -1
  51. package/dist/components/fields/display/TextAreaDisplay.js +1 -1
  52. package/dist/components/fields/display/TextFieldDisplay.js +1 -1
  53. package/dist/components/form/fields/AddressFieldComponent.js +1 -1
  54. package/dist/components/form/fields/AvatarFieldComponent.js +1 -1
  55. package/dist/components/form/fields/BadgeFieldComponent.js +1 -1
  56. package/dist/components/form/fields/ButtonFieldComponent.js +1 -1
  57. package/dist/components/form/fields/CheckboxFieldComponent.js +1 -1
  58. package/dist/components/form/fields/ComboboxComponent.js +1 -1
  59. package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
  60. package/dist/components/form/fields/DateFieldComponent.js +1 -1
  61. package/dist/components/form/fields/DocumentFieldComponent.js +1 -1
  62. package/dist/components/form/fields/DurationFieldComponent.js +1 -1
  63. package/dist/components/form/fields/FileFieldComponent.js +1 -1
  64. package/dist/components/form/fields/GdprConsentFieldComponent.js +1 -1
  65. package/dist/components/form/fields/GeoPointFieldComponent.js +1 -1
  66. package/dist/components/form/fields/ImageFieldComponent.js +1 -1
  67. package/dist/components/form/fields/MultiDropdownComponent.js +1 -1
  68. package/dist/components/form/fields/MultiInputTextFieldComponent.js +1 -1
  69. package/dist/components/form/fields/NumberFieldComponent.js +1 -1
  70. package/dist/components/form/fields/PasswordFieldComponent.js +1 -1
  71. package/dist/components/form/fields/PhoneNumberComponent.js +1 -1
  72. package/dist/components/form/fields/PriceFieldComponent.js +1 -1
  73. package/dist/components/form/fields/RadioFieldComponent.js +1 -1
  74. package/dist/components/form/fields/RatingFieldComponent.js +1 -1
  75. package/dist/components/form/fields/ReferenceFieldComponent.js +1 -1
  76. package/dist/components/form/fields/RichTextComponent.js +1 -1
  77. package/dist/components/form/fields/SwitchFieldComponent.js +1 -1
  78. package/dist/components/form/fields/TextAreaComponent.js +1 -1
  79. package/dist/components/form/fields/TextFieldComponent.js +1 -1
  80. package/dist/components/form/fields/TimestampFieldComponent.js +1 -1
  81. package/dist/components/form/fields/internal/TiptapEditor.js +2 -2
  82. package/dist/components/form/internal/ImageViewerDialog.js +1 -1
  83. package/dist/fieldTypeRegistry.store.js +1 -1
  84. package/dist/forms/hooks/useController.js +1 -1
  85. package/dist/forms/hooks/useEntityField.js +1 -1
  86. package/dist/forms/hooks/useEntityForm.d.ts.map +1 -1
  87. package/dist/forms/hooks/useEntityForm.js +1 -1
  88. package/dist/forms/utils/buildInitialValues.js +1 -1
  89. package/dist/forms/utils/getFieldsForOperation.js +1 -1
  90. package/dist/forms/utils/isFieldEditable.js +1 -1
  91. package/dist/forms/utils/translateFieldLabel.js +1 -1
  92. package/dist/forms/utils/validateEntity.js +1 -1
  93. package/dist/hooks/useEntityFavorites.js +1 -1
  94. package/dist/hooks/useFileUpload.js +1 -1
  95. package/dist/hooks/useReferenceResolver.js +1 -1
  96. package/dist/hooks/useRelatedItems.js +1 -1
  97. package/dist/hooks/useUnsavedChangesWarning.js +1 -1
  98. package/dist/stores/FormStore.d.ts.map +1 -1
  99. package/dist/stores/FormStore.js +1 -1
  100. package/dist/stores/UploadStore.js +1 -1
  101. package/dist/tsconfig.tsbuildinfo +1 -1
  102. package/dist/useBaseCrudList.js +1 -1
  103. package/dist/useCrud.js +1 -1
  104. package/dist/useCrudCardList.js +1 -1
  105. package/dist/useCrudList.js +1 -1
  106. package/dist/utils/collections.js +1 -1
  107. package/dist/utils/imageProcessing.js +1 -1
  108. package/dist/utils/imageStorage.js +1 -1
  109. package/dist/utils/matchesFilter.d.ts.map +1 -1
  110. package/dist/utils/matchesFilter.js +1 -1
  111. package/dist/utils/mergeWithOptimistic.js +1 -1
  112. package/dist/utils/sanitizeHtml.js +1 -1
  113. package/dist/utils/uploadValidation.js +1 -1
  114. package/dist/workflows/defineWorkflow.js +1 -1
  115. package/dist/workflows/useEntityWorkflow.js +1 -1
  116. package/package.json +3 -3
@@ -1 +1 @@
1
- import{jsx as e,jsxs as n}from"react/jsx-runtime";import{Mail as N,Calendar as L,Clock as k}from"lucide-react";import{useState as A}from"react";import{Skeleton as T,Badge as B,BADGE_VARIANT as E,Text as l,cn as f,CopyToClipboard as x,Stack as o}from"@donotdev/components";import{getWeekFromISOString as I}from"@donotdev/core";const b=({config:i,value:a,t:r,className:s,loading:C=!1,showCopy:u=!1,asBadge:w=!1,truncate:c=!1,maxLength:d=50,showLabel:p=!1})=>{const[V,g]=A(!1),j=async()=>{try{await navigator.clipboard.writeText(a),g(!0),setTimeout(()=>g(!1),2e3)}catch{}},h=()=>{switch(i.type){case"email":return e(N,{});case"month":case"week":return e(L,{});case"time":return e(k,{});default:return null}},v=t=>{if(!t)return null;switch(i.type){case"email":return n("a",{href:`mailto:${t}`,style:{display:"flex",alignItems:"center",gap:"var(--gap-sm)"},onMouseEnter:m=>m.currentTarget.style.textDecoration="underline",onMouseLeave:m=>m.currentTarget.style.textDecoration="none",children:[h(),t]});case"month":return new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"long"});case"week":return I(t);case"time":return new Date(`2000-01-01T${t}`).toLocaleTimeString();default:return t}},S=t=>!c||t.length<=d?t:`${t.substring(0,d)}...`;if(C)return n(o,{gap:"tight",children:[p&&e(T,{style:{height:"1rem",width:"6rem"}}),e(T,{className:"dndev-w-full",style:{height:"1.5rem"}})]});if(!a)return n(o,{gap:"tight",children:[p&&e(l,{as:"span",variant:"muted",children:i.label||i.name}),e(l,{as:"span",variant:"muted",className:f(s),style:{fontStyle:"italic"},children:r("common.noValue",{defaultValue:"No value"})})]});const D=v(a),y=S(String(D));return w?n(o,{direction:"row",align:"center",gap:"tight",children:[h(),e(B,{variant:E.SECONDARY,className:s,children:y}),u&&e(x,{text:a,tooltipText:r("copyToClipboard")||"Copy to clipboard",copiedTooltipText:r("copied")||"Copied!",ariaLabel:r("copyToClipboard")||"Copy to clipboard"})]}):n(o,{gap:"tight",children:[p&&e(l,{as:"span",variant:"muted",children:i.label||i.name}),n(o,{direction:"row",align:"center",gap:"tight",children:[e("div",{className:f("dndev-flex-1",c&&"truncate",s),title:c&&a.length>d?a:void 0,children:e(l,{as:"span",children:y})}),u&&e(x,{text:a,tooltipText:r("copyToClipboard")||"Copy to clipboard",copiedTooltipText:r("copied")||"Copied!",ariaLabel:r("copyToClipboard")||"Copy to clipboard"})]})]})};var M=b;export{b as TextFieldDisplay,M as default};
1
+ import{jsx as e,jsxs as n}from"react/jsx-runtime";import{Mail as N,Calendar as L,Clock as k}from"lucide-react";import{useState as A}from"react";import{Skeleton as T,Badge as B,BADGE_VARIANT as E,Text as l,cn as f,CopyToClipboard as x,Stack as i}from"@donotdev/components";import{getWeekFromISOString as I}from"@donotdev/core";const b=({config:o,value:a,t:r,className:s,loading:C=!1,showCopy:u=!1,asBadge:v=!1,truncate:c=!1,maxLength:d=50,showLabel:p=!1})=>{const[V,g]=A(!1),j=async()=>{try{await navigator.clipboard.writeText(a),g(!0),setTimeout(()=>g(!1),2e3)}catch{}},h=()=>{switch(o.type){case"email":return e(N,{});case"month":case"week":return e(L,{});case"time":return e(k,{});default:return null}},w=t=>{if(!t)return null;switch(o.type){case"email":return n("a",{href:`mailto:${t}`,style:{display:"flex",alignItems:"center",gap:"var(--gap-sm)"},onMouseEnter:m=>m.currentTarget.style.textDecoration="underline",onMouseLeave:m=>m.currentTarget.style.textDecoration="none",children:[h(),t]});case"month":return new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"long"});case"week":return I(t);case"time":return new Date(`2000-01-01T${t}`).toLocaleTimeString();default:return t}},S=t=>!c||t.length<=d?t:`${t.substring(0,d)}...`;if(C)return n(i,{gap:"tight",children:[p&&e(T,{style:{height:"1rem",width:"6rem"}}),e(T,{className:"dndev-w-full",style:{height:"1.5rem"}})]});if(!a)return n(i,{gap:"tight",children:[p&&e(l,{as:"span",variant:"muted",children:o.label||o.name}),e(l,{as:"span",variant:"muted",className:f(s),style:{fontStyle:"italic"},children:r("common.noValue",{defaultValue:"No value"})})]});const D=w(a),y=S(String(D));return v?n(i,{direction:"row",align:"center",gap:"tight",children:[h(),e(B,{variant:E.SECONDARY,className:s,children:y}),u&&e(x,{text:a,tooltipText:r("copyToClipboard")||"Copy to clipboard",copiedTooltipText:r("copied")||"Copied!",ariaLabel:r("copyToClipboard")||"Copy to clipboard"})]}):n(i,{gap:"tight",children:[p&&e(l,{as:"span",variant:"muted",children:o.label||o.name}),n(i,{direction:"row",align:"center",gap:"tight",children:[e("div",{className:f("dndev-flex-1",c&&"truncate",s),title:c&&a.length>d?a:void 0,children:e(l,{as:"span",children:y})}),u&&e(x,{text:a,tooltipText:r("copyToClipboard")||"Copy to clipboard",copiedTooltipText:r("copied")||"Copied!",ariaLabel:r("copyToClipboard")||"Copy to clipboard"})]})]})};var M=b;export{b as TextFieldDisplay,M as default};
@@ -1 +1 @@
1
- import{jsx as a,jsxs as m}from"react/jsx-runtime";import{MapPin as U}from"lucide-react";import{useState as y,useEffect as w,useRef as S,useMemo as N}from"react";import{Combobox as L,Stack as M}from"@donotdev/components";import{useTranslation as R,getPlatformEnvVar as W}from"@donotdev/core";const Y=({label:b,value:l,onChange:x,enableGoogleMaps:q=!1,extractDistrictCode:T,error:i,helperText:c,required:z})=>{const{t:o}=R("crud"),[n,u]=y(l?.formatted_address||""),[g,f]=y([]),[E,p]=y(!1),v=S(null),h=S(null),d=S(null),_=W("GOOGLE_MAPS_API_KEY")||"",s=q&&!!_,j=N(()=>g.map(e=>({value:e.place_id,label:e.description,description:e.structured_formatting?.secondary_text,content:m("div",{style:{display:"flex",alignItems:"center",gap:"var(--gap-sm)"},children:[a(U,{style:{width:"var(--size-icon-sm)",height:"var(--size-icon-sm)"}}),m("div",{children:[a("div",{children:e.description}),e.structured_formatting?.secondary_text&&a("div",{style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:e.structured_formatting.secondary_text})]})]})})),[g]),G=e=>{h.current&&(p(!0),h.current.getDetails({placeId:e,fields:["formatted_address","geometry","address_components"]},(r,t)=>{if(p(!1),t===window.google?.maps?.places?.PlacesServiceStatus.OK&&r){const I=r.formatted_address||"",O=r.geometry?.location?.lat(),V=r.geometry?.location?.lng(),P={formatted_address:I,latitude:O,longitude:V};if(T&&r.address_components){const A=r.address_components.find(D=>D.types.includes("postal_code"))?.long_name||"",k=A.startsWith("92")?92:parseInt(A.slice(-2),10)||null;P.district_code=k}u(I),x(P)}}))};w(()=>{l?.formatted_address&&u(l.formatted_address)},[l]),w(()=>{if(!s)return;let e=null;const r=()=>{window.google?.maps?.places&&(v.current=new window.google.maps.places.AutocompleteService,h.current=new window.google.maps.places.PlacesService(document.createElement("div")))};return(()=>{if(window.google?.maps?.places){r();return}if(document.querySelector("#google-maps-script")){e=setInterval(()=>{window.google?.maps?.places&&(clearInterval(e),e=null,r())},100);return}const t=document.createElement("script");t.id="google-maps-script",t.src=`https://maps.googleapis.com/maps/api/js?key=${_}&libraries=places`,t.async=!0,t.defer=!0,t.onload=()=>r(),document.head.appendChild(t)})(),()=>{e!==null&&(clearInterval(e),e=null)}},[s,_]),w(()=>{if(!s||!n||!v.current){f([]);return}return d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{p(!0),v.current.getPlacePredictions({input:n,types:["geocode","establishment"]},(e,r)=>{p(!1),r===window.google?.maps?.places?.PlacesServiceStatus.OK&&e?f(e):f([])})},300),()=>{d.current&&clearTimeout(d.current)}},[s,n]);const K=e=>{u(e),x({formatted_address:e})},C=e=>{const r=Array.isArray(e)?e[0]||"":e;if(!s){K(r);return}g.some(t=>t.place_id===r)&&G(r)};return s?m(M,{gap:"tight",children:[a(L,{label:b,value:n,onValueChange:C,onSearchChange:e=>{s&&u(e)},placeholder:o("address.placeholder","Enter address..."),emptyMessage:E?o("messages.loading","Loading..."):o("address.noResults","No addresses found"),options:j,required:z,variant:i?"destructive":void 0,isLoading:E,creatable:!0,createLabel:o("actions.use","Use this address")}),c&&a("p",{style:{fontSize:"var(--font-size-xs)",color:i?"var(--destructive-foreground)":"var(--muted-foreground)"},children:c})]}):m(M,{gap:"tight",children:[a(L,{label:b,value:n,onValueChange:C,placeholder:o("address.placeholder","Enter address..."),options:[],required:z,variant:i?"destructive":void 0,creatable:!0,createLabel:o("actions.use","Use this address")}),c&&a("p",{style:{fontSize:"var(--font-size-xs)",color:i?"var(--destructive-foreground)":"var(--muted-foreground)"},children:c})]})};var F=Y;export{F as default};
1
+ import{jsx as a,jsxs as m}from"react/jsx-runtime";import{MapPin as U}from"lucide-react";import{useState as y,useEffect as w,useRef as S,useMemo as D}from"react";import{Combobox as L,Stack as M}from"@donotdev/components";import{useTranslation as N,getPlatformEnvVar as W}from"@donotdev/core";const Y=({label:b,value:l,onChange:x,enableGoogleMaps:O=!1,extractDistrictCode:T,error:i,helperText:c,required:P})=>{const{t:o}=N("crud"),[n,u]=y(l?.formatted_address||""),[g,f]=y([]),[E,p]=y(!1),v=S(null),h=S(null),d=S(null),_=W("GOOGLE_MAPS_API_KEY")||"",s=O&&!!_,j=D(()=>g.map(e=>({value:e.place_id,label:e.description,description:e.structured_formatting?.secondary_text,content:m("div",{style:{display:"flex",alignItems:"center",gap:"var(--gap-sm)"},children:[a(U,{style:{width:"var(--size-icon-sm)",height:"var(--size-icon-sm)"}}),m("div",{children:[a("div",{children:e.description}),e.structured_formatting?.secondary_text&&a("div",{style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:e.structured_formatting.secondary_text})]})]})})),[g]),q=e=>{h.current&&(p(!0),h.current.getDetails({placeId:e,fields:["formatted_address","geometry","address_components"]},(t,r)=>{if(p(!1),r===window.google?.maps?.places?.PlacesServiceStatus.OK&&t){const I=t.formatted_address||"",K=t.geometry?.location?.lat(),V=t.geometry?.location?.lng(),z={formatted_address:I,latitude:K,longitude:V};if(T&&t.address_components){const A=t.address_components.find(R=>R.types.includes("postal_code"))?.long_name||"",k=A.startsWith("92")?92:parseInt(A.slice(-2),10)||null;z.district_code=k}u(I),x(z)}}))};w(()=>{l?.formatted_address&&u(l.formatted_address)},[l]),w(()=>{if(!s)return;let e=null;const t=()=>{window.google?.maps?.places&&(v.current=new window.google.maps.places.AutocompleteService,h.current=new window.google.maps.places.PlacesService(document.createElement("div")))};return(()=>{if(window.google?.maps?.places){t();return}if(document.querySelector("#google-maps-script")){e=setInterval(()=>{window.google?.maps?.places&&(clearInterval(e),e=null,t())},100);return}const r=document.createElement("script");r.id="google-maps-script",r.src=`https://maps.googleapis.com/maps/api/js?key=${_}&libraries=places`,r.async=!0,r.defer=!0,r.onload=()=>t(),document.head.appendChild(r)})(),()=>{e!==null&&(clearInterval(e),e=null)}},[s,_]),w(()=>{if(!s||!n||!v.current){f([]);return}return d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{p(!0),v.current.getPlacePredictions({input:n,types:["geocode","establishment"]},(e,t)=>{p(!1),t===window.google?.maps?.places?.PlacesServiceStatus.OK&&e?f(e):f([])})},300),()=>{d.current&&clearTimeout(d.current)}},[s,n]);const G=e=>{u(e),x({formatted_address:e})},C=e=>{const t=Array.isArray(e)?e[0]||"":e;if(!s){G(t);return}g.some(r=>r.place_id===t)&&q(t)};return s?m(M,{gap:"tight",children:[a(L,{label:b,value:n,onValueChange:C,onSearchChange:e=>{s&&u(e)},placeholder:o("address.placeholder","Enter address..."),emptyMessage:E?o("messages.loading","Loading..."):o("address.noResults","No addresses found"),options:j,required:P,variant:i?"destructive":void 0,isLoading:E,creatable:!0,createLabel:o("actions.use","Use this address")}),c&&a("p",{style:{fontSize:"var(--font-size-xs)",color:i?"var(--destructive-foreground)":"var(--muted-foreground)"},children:c})]}):m(M,{gap:"tight",children:[a(L,{label:b,value:n,onValueChange:C,placeholder:o("address.placeholder","Enter address..."),options:[],required:P,variant:i?"destructive":void 0,creatable:!0,createLabel:o("actions.use","Use this address")}),c&&a("p",{style:{fontSize:"var(--font-size-xs)",color:i?"var(--destructive-foreground)":"var(--muted-foreground)"},children:c})]})};var F=Y;export{F as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import{Avatar as p,Input as u,cn as f,Stack as n}from"@donotdev/components";const s=({config:r,value:t,onChange:c,error:A,helperText:l,t:i,className:d,...v})=>{const h=a=>a.split(" ").map(m=>m.charAt(0)).slice(0,2).join("").toUpperCase();return o(n,{children:[o(n,{direction:"row",align:"center",children:[e(p,{src:t,alt:r.label||"Avatar",fallback:h(r.label||"AV"),style:{height:"var(--touch-target)",width:"var(--touch-target)"}}),e("div",{className:"dndev-flex-1",children:e(u,{type:"url",className:f("dndev-w-full",d),placeholder:i("common.enterAvatarUrl"),value:t,onChange:a=>c(a.target.value),...v})})]}),l&&e("p",{style:{fontSize:"var(--font-size-sm)",color:"var(--muted-foreground)"},children:l})]})};var g=s;export{s as AvatarFieldComponent,g as default};
1
+ import{jsx as e,jsxs as o}from"react/jsx-runtime";import{Avatar as m,Input as u,cn as f,Stack as n}from"@donotdev/components";const s=({config:r,value:t,onChange:c,error:A,helperText:l,t:i,className:d,...h})=>{const v=a=>a.split(" ").map(p=>p.charAt(0)).slice(0,2).join("").toUpperCase();return o(n,{children:[o(n,{direction:"row",align:"center",children:[e(m,{src:t,alt:r.label||"Avatar",fallback:v(r.label||"AV"),style:{height:"var(--touch-target)",width:"var(--touch-target)"}}),e("div",{className:"dndev-flex-1",children:e(u,{type:"url",className:f("dndev-w-full",d),placeholder:i("common.enterAvatarUrl"),value:t,onChange:a=>c(a.target.value),...h})})]}),l&&e("p",{style:{fontSize:"var(--font-size-sm)",color:"var(--muted-foreground)"},children:l})]})};var g=s;export{s as AvatarFieldComponent,g as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as r}from"react/jsx-runtime";import{Badge as v,Input as f,cn as g,Stack as o}from"@donotdev/components";const l=({config:p,value:a,onChange:d,error:u,helperText:t,t:n,variant:s="default",className:i,...c})=>r(o,{children:[r(o,{direction:"row",align:"center",children:[e(v,{variant:s,style:{minWidth:0},children:a||n("common.badgePreview")}),e("div",{className:"dndev-flex-1",children:e(f,{type:"text",className:g("dndev-w-full",i),placeholder:n("common.enterBadgeText"),value:a,onChange:m=>d(m.target.value),...c})})]}),t&&e("p",{style:{fontSize:"var(--font-size-sm)",color:"var(--muted-foreground)"},children:t})]});var h=l;export{l as BadgeFieldComponent,h as default};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Badge as v,Input as f,cn as g,Stack as o}from"@donotdev/components";const l=({config:p,value:a,onChange:d,error:u,helperText:r,t:n,variant:s="default",className:i,...c})=>t(o,{children:[t(o,{direction:"row",align:"center",children:[e(v,{variant:s,style:{minWidth:0},children:a||n("common.badgePreview")}),e("div",{className:"dndev-flex-1",children:e(f,{type:"text",className:g("dndev-w-full",i),placeholder:n("common.enterBadgeText"),value:a,onChange:m=>d(m.target.value),...c})})]}),r&&e("p",{style:{fontSize:"var(--font-size-sm)",color:"var(--muted-foreground)"},children:r})]});var h=l;export{l as BadgeFieldComponent,h as default};
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Button as e}from"@donotdev/components";const n=({label:a,type:t,onClick:o,variant:i,disabled:l=!1})=>r(e,{type:t,onClick:o,variant:i,disabled:l,children:a});var s=n;export{s as default};
1
+ import{jsx as o}from"react/jsx-runtime";import{Button as l}from"@donotdev/components";const n=({label:a,type:t,onClick:r,variant:e,disabled:i=!1})=>o(l,{type:t,onClick:r,variant:e,disabled:i,children:a});var s=n;export{s as default};
@@ -1 +1 @@
1
- import{jsx as r,jsxs as h}from"react/jsx-runtime";import{Checkbox as i,Label as n,Stack as o}from"@donotdev/components";const s=({label:a,checked:c=!1,onChange:e,required:t})=>h(o,{direction:"row",align:"center",gap:"tight",children:[r(i,{checked:c,onCheckedChange:d=>{e&&e({target:{checked:d}})}}),r(n,{required:t,children:a})]});var l=s;export{l as default};
1
+ import{jsx as r,jsxs as h}from"react/jsx-runtime";import{Checkbox as i,Label as n,Stack as s}from"@donotdev/components";const d=({label:a,checked:c=!1,onChange:e,required:o})=>h(s,{direction:"row",align:"center",gap:"tight",children:[r(i,{checked:c,onCheckedChange:t=>{e&&e({target:{checked:t}})}}),r(n,{required:o,children:a})]});var l=d;export{l as default};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as c}from"react/jsx-runtime";import{useMemo as L,useId as N}from"react";import{Combobox as $,Stack as d}from"@donotdev/components";import{useTranslation as D}from"@donotdev/core";const I=({label:u,value:l,options:s,error:p,helperText:a,onChange:n,onBlur:m,required:g,placeholder:h,translationNamespace:v="dndev",placeholderKey:f="actions.select",placeholderDefault:b="Select",creatable:x=!1,createLabel:y,emptyMessage:S})=>{const{t:r}=D(v),i=N(),z=L(()=>s.map(e=>({value:String(e.value),label:e.label})),[s]),C=e=>{if(n){const q={target:{value:Array.isArray(e)?e[0]||"":e}};n(q)}},A=e=>{e||m?.()},t=!!p,M=`${i}-error`,j=`${i}-helper`;return c(d,{gap:"tight",children:[o($,{label:u,value:l||"",onValueChange:C,onOpenChange:A,placeholder:h||r(f,b),emptyMessage:S||r("messages.noResults","No results found"),creatable:x,createLabel:y||r("actions.create","Create"),options:z,required:g,variant:t?"destructive":void 0,clearable:!!l}),t&&c(d,{id:M,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[o("span",{children:"\u26A0"}),a]}),a&&!t&&o("p",{id:j,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:a})]})};var O=I;export{O as default};
1
+ import{jsx as o,jsxs as c}from"react/jsx-runtime";import{useMemo as L,useId as N}from"react";import{Combobox as $,Stack as d}from"@donotdev/components";import{useTranslation as D}from"@donotdev/core";const I=({label:u,value:l,options:s,error:p,helperText:r,onChange:n,onBlur:m,required:g,placeholder:h,translationNamespace:v="dndev",placeholderKey:f="actions.select",placeholderDefault:b="Select",creatable:x=!1,createLabel:y,emptyMessage:C})=>{const{t:a}=D(v),i=N(),z=L(()=>s.map(e=>({value:String(e.value),label:e.label})),[s]),S=e=>{if(n){const q={target:{value:Array.isArray(e)?e[0]||"":e}};n(q)}},A=e=>{e||m?.()},t=!!p,M=`${i}-error`,j=`${i}-helper`;return c(d,{gap:"tight",children:[o($,{label:u,value:l||"",onValueChange:S,onOpenChange:A,placeholder:h||a(f,b),emptyMessage:C||a("messages.noResults","No results found"),creatable:x,createLabel:y||a("actions.create","Create"),options:z,required:g,variant:t?"destructive":void 0,clearable:!!l}),t&&c(d,{id:M,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[o("span",{children:"\u26A0"}),r]}),r&&!t&&o("p",{id:j,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:r})]})};var O=I;export{O as default};
@@ -1 +1 @@
1
- import{jsx as t,jsxs as v}from"react/jsx-runtime";import{useState as I,useEffect as S,useId as z}from"react";import{Input as E,FloatingLabel as T,Stack as j}from"@donotdev/components";const C=({label:g,value:n,onChange:m,currency:o="EUR",locale:f,error:l,helperText:s,required:y=!1,disabled:i=!1,placeholder:h})=>{const d=z(),b=f||(typeof navigator<"u"?navigator.language:"en-US"),u=e=>e==null||isNaN(e)?"":(e/100).toFixed(2),x=e=>{if(!e||e.trim()==="")return null;const r=e.replace(/[^\d.,\-]/g,"").replace(",","."),a=parseFloat(r);return isNaN(a)?null:Math.round(a*100)},[F,c]=I(u(n));S(()=>{c(u(n))},[n]);const N=e=>{const r=e.target.value;c(r);const a={target:{value:x(r)}};m(a)},p=(()=>{try{return new Intl.NumberFormat(b,{style:"currency",currency:o,currencyDisplay:"symbol"}).formatToParts(0).find(e=>e.type==="currency")?.value||o}catch{return o}})();return v(j,{gap:"tight",children:[t(T,{htmlFor:d,label:g,disabled:i,required:y,children:v("div",{style:{position:"relative"},children:[t("span",{style:{position:"absolute",left:"var(--gap-md)",top:"50%",transform:"translateY(-50%)",color:"var(--muted-foreground)",pointerEvents:"none",zIndex:1},children:p}),t(E,{id:d,type:"text",inputMode:"decimal",value:F,onChange:N,disabled:i,placeholder:h||"0.00","data-variant":l?"destructive":void 0,style:{paddingLeft:`calc(var(--gap-md) + ${p.length*.6}em + var(--gap-sm))`}})]})}),s&&t("p",{style:{fontSize:"var(--font-size-xs)",color:l?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:s})]})};var L=C;export{L as default};
1
+ import{jsx as t,jsxs as v}from"react/jsx-runtime";import{useState as I,useEffect as S,useId as z}from"react";import{Input as E,FloatingLabel as T,Stack as j}from"@donotdev/components";const C=({label:g,value:n,onChange:m,currency:l="EUR",locale:f,error:o,helperText:s,required:y=!1,disabled:i=!1,placeholder:h})=>{const d=z(),b=f||(typeof navigator<"u"?navigator.language:"en-US"),u=e=>e==null||isNaN(e)?"":(e/100).toFixed(2),x=e=>{if(!e||e.trim()==="")return null;const r=e.replace(/[^\d.,\-]/g,"").replace(",","."),a=parseFloat(r);return isNaN(a)?null:Math.round(a*100)},[F,c]=I(u(n));S(()=>{c(u(n))},[n]);const N=e=>{const r=e.target.value;c(r);const a={target:{value:x(r)}};m(a)},p=(()=>{try{return new Intl.NumberFormat(b,{style:"currency",currency:l,currencyDisplay:"symbol"}).formatToParts(0).find(e=>e.type==="currency")?.value||l}catch{return l}})();return v(j,{gap:"tight",children:[t(T,{htmlFor:d,label:g,disabled:i,required:y,children:v("div",{style:{position:"relative"},children:[t("span",{style:{position:"absolute",left:"var(--gap-md)",top:"50%",transform:"translateY(-50%)",color:"var(--muted-foreground)",pointerEvents:"none",zIndex:1},children:p}),t(E,{id:d,type:"text",inputMode:"decimal",value:F,onChange:N,disabled:i,placeholder:h||"0.00","data-variant":o?"destructive":void 0,style:{paddingLeft:`calc(var(--gap-md) + ${p.length*.6}em + var(--gap-sm))`}})]})}),s&&t("p",{style:{fontSize:"var(--font-size-xs)",color:o?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:s})]})};var L=C;export{L as default};
@@ -1 +1 @@
1
- import{jsx as l,jsxs as S}from"react/jsx-runtime";import{Input as m,Stack as p}from"@donotdev/components";const v=({label:n,value:a,onChange:i,error:s,helperText:o,mode:e="date",required:d,...g})=>{const c=t=>{const u=t.target.value?new Date(t.target.value).toISOString():null;i(u)};let r="";if(a){const t=new Date(a);e==="date"?r=t.toISOString().split("T")[0]||"":e==="datetime-local"?r=t.toISOString().slice(0,16)||"":e==="month"?r=t.toISOString().slice(0,7):e==="time"?r=t.toISOString().slice(11,16):e==="week"&&(r=t.toISOString().split("T")[0]||"")}return S(p,{gap:"tight",children:[l(m,{label:n,type:e,value:r,onChange:c,required:d,className:"dndev-w-full",...g}),o&&l("p",{style:{fontSize:"var(--font-size-xs)",color:s?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:o})]})};var f=v;export{f as default};
1
+ import{jsx as l,jsxs as S}from"react/jsx-runtime";import{Input as m,Stack as p}from"@donotdev/components";const v=({label:n,value:a,onChange:i,error:s,helperText:o,mode:e="date",required:g,...u})=>{const c=t=>{const d=t.target.value?new Date(t.target.value).toISOString():null;i(d)};let r="";if(a){const t=new Date(a);e==="date"?r=t.toISOString().split("T")[0]||"":e==="datetime-local"?r=t.toISOString().slice(0,16)||"":e==="month"?r=t.toISOString().slice(0,7):e==="time"?r=t.toISOString().slice(11,16):e==="week"&&(r=t.toISOString().split("T")[0]||"")}return S(p,{gap:"tight",children:[l(m,{label:n,type:e,value:r,onChange:c,required:g,className:"dndev-w-full",...u}),o&&l("p",{style:{fontSize:"var(--font-size-xs)",color:s?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:o})]})};var f=v;export{f as default};
@@ -1 +1 @@
1
- "use client";import{jsx as t,jsxs as n,Fragment as le}from"react/jsx-runtime";import{Upload as se,X as oe,FileText as N,FileSpreadsheet as ie,File as ne,Loader2 as de,Eye as ce}from"lucide-react";import{useCallback as y,useState as E,useRef as T,useEffect as j,useImperativeHandle as ue,forwardRef as pe}from"react";import{Button as B,BUTTON_VARIANT as q,Text as g,Stack as x,Progress as me,Dialog as ge,DialogContent as fe,DialogHeader as ve,DialogTitle as he}from"@donotdev/components";import{handleError as P,useTranslation as ye}from"@donotdev/core";import{useUploadContext as xe}from"../../../contexts/UploadContext";import{useUploadStore as G}from"../../../stores/UploadStore";import{uploadFile as we,deleteFile as be,generateFileId as X,getFileIcon as Ne,formatFileSize as Te,getDocumentAcceptString as Pe}from"../../../utils/fileStorage";function Fe({type:m,className:d}){switch(m){case"pdf":return t(N,{className:d,style:{color:"var(--destructive)"}});case"doc":return t(N,{className:d,style:{color:"var(--primary)"}});case"xls":return t(ie,{className:d,style:{color:"var(--success)"}});case"ppt":return t(N,{className:d,style:{color:"var(--warning)"}});case"text":case"html":return t(N,{className:d});default:return t(ne,{className:d})}}const V=pe(({name:m,label:d,value:f,onChange:I,error:F,helperText:U,multiple:p=!1,maxFiles:D=10,maxSize:S=25*1024*1024,storagePath:H="uploads/documents",required:_,enablePreview:L=!0},K)=>{const{t:Q}=ye("crud"),i=Q,v=xe(),M=!!v,[o,c]=E([]),[O,k]=E(!1),[z,R]=E(null),h=T(null),C=T(!1),w=T(void 0),Y=Pe(),b=y(e=>{const r=e.filter(a=>a.uploaded&&!a.error).map(a=>a.uploaded);I(p?r:r[0]||null)},[p,I]);j(()=>{if(C.current){C.current=!1;return}if(f){const e=[];(Array.isArray(f)?f:[f]).forEach(r=>{r.url&&e.push({id:X(),file:new File([],r.filename),uploadProgress:null,uploaded:r,error:null})}),c(e)}else c([])},[f]);const Z=y(async()=>{const e=o.filter(r=>!r.uploaded&&!r.error&&r.uploadProgress===null);if(e.length!==0){c(r=>r.map(a=>e.some(l=>l.id===a.id)?{...a,uploadProgress:0}:a));for(const r of e)try{const a=await we(r.file,{storagePath:H,onProgress:l=>{c(u=>u.map(s=>s.id===r.id?{...s,uploadProgress:l.progress}:s))}});c(l=>{const u=l.map(s=>s.id===r.id?{...s,uploaded:a,uploadProgress:100,error:null}:s);return queueMicrotask(()=>b(u)),u})}catch{c(a=>a.map(l=>l.id===r.id?{...l,error:"Upload failed",uploadProgress:null}:l))}}},[o,H,b]);w.current=Z,j(()=>{if(!(!v||!m))return G.getState().registerUpload(v,m,async()=>{await w.current?.()}),()=>{G.getState().unregisterUpload(v,m)}},[v,m]),ue(K,()=>({upload:async()=>{await w.current?.()},getDocuments:()=>W.current||[]}),[]);const W=T(o);W.current=o;const $=e=>{const r=[".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".html",".csv"],a="."+e.name.split(".").pop()?.toLowerCase();return r.includes(a)},A=y(e=>{const r=(p?D:1)-o.length;if(r<=0){P(new Error("Maximum documents reached"),{userMessage:i("document.errors.maxFiles",{max:D}),severity:"warning",showNotification:!0});return}const a=e.slice(0,r),l=[],u=(S/(1024*1024)).toFixed(0);for(const s of a){if(!$(s)){P(new Error("Invalid document type"),{userMessage:i("document.errors.invalidType",{fileName:s.name}),severity:"warning",showNotification:!0});continue}if(s.size>S){P(new Error("Document too large"),{userMessage:i("document.errors.exceedsSize",{fileName:s.name,size:u}),severity:"warning",showNotification:!0});continue}l.push({id:X(),file:s,uploadProgress:null,uploaded:null,error:null})}l.length!==0&&(c(s=>p?[...s,...l]:l),M||setTimeout(()=>w.current?.(),0))},[o,p,D,S,i,M]),J=e=>{const r=Array.from(e.target.files||[]);r.length>0&&A(r),h.current&&(h.current.value="")},ee=y(e=>{e.preventDefault(),k(!1);const r=Array.from(e.dataTransfer.files);A(r)},[A]),re=y(async e=>{const r=o.find(a=>a.id===e);if(r)try{r.uploaded&&await be(r.uploaded);const a=o.filter(l=>l.id!==e);C.current=!0,c(a),setTimeout(()=>b(a),0)}catch(a){P(a,{userMessage:i("document.delete.failed"),severity:"error",showNotification:!0})}},[o,b,i]),ae=e=>{e.uploaded?.url&&e.uploaded.mimeType==="application/pdf"&&R(e.uploaded.url)},te=p||o.length===0;return n(le,{children:[n(x,{gap:"tight",children:[n(g,{level:"body",textAlign:"start",children:[d,_?"*":""]}),te&&n("div",{role:"button",tabIndex:0,"aria-label":i("document.upload.ariaLabel"),className:"dndev-surface","data-variant":F?"destructive":"default",style:{border:"var(--border-width) dashed",borderColor:O?"var(--primary)":F?"var(--destructive)":"var(--border)",borderRadius:"var(--radius-lg)",padding:"var(--gap-lg)",backgroundColor:O?"color-mix(in oklab, var(--primary) 5%, transparent)":"var(--surface)",transition:"border-color var(--dur-fast), background-color var(--dur-fast)",cursor:"pointer",outline:"none"},onDragOver:e=>{e.preventDefault(),k(!0)},onDragLeave:()=>k(!1),onDrop:ee,onClick:()=>h.current?.click(),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),h.current?.click())},children:[t("input",{ref:h,type:"file",accept:Y,multiple:p,style:{display:"none"},onChange:J}),n(x,{align:"center",justify:"center",children:[t(se,{className:"dndev-size-lg",style:{color:"var(--muted-foreground)"}}),t(g,{as:"p",variant:"muted",level:"small",textAlign:"center",children:i("document.upload.hint")}),t(g,{as:"p",variant:"muted",level:"caption",textAlign:"center",children:"PDF, Word, Excel, PowerPoint, TXT, Markdown, HTML"})]})]}),o.length>0&&t(x,{gap:"tight",children:o.map((e,r)=>{const a=Ne(e.uploaded?.mimeType||e.file.type,e.file.name),l=e.uploadProgress!==null&&e.uploadProgress<100,u=e.uploaded?.mimeType==="application/pdf"||e.file.name.toLowerCase().endsWith(".pdf");return n("div",{className:"dndev-surface","data-variant":"muted",style:{padding:"var(--gap-md)",borderRadius:"var(--radius-md)",display:"flex",alignItems:"center",gap:"var(--gap-md)"},children:[t(Fe,{type:a,className:"dndev-size-md"}),n(x,{gap:"none",style:{flex:1,minWidth:0},children:[t(g,{level:"small",style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.file.name}),n(g,{level:"caption",variant:"muted",children:[Te(e.uploaded?.size||e.file.size),e.error&&n("span",{style:{color:"var(--destructive)"},children:[" ","\xB7 ",e.error]})]}),l&&t(me,{value:e.uploadProgress||0,max:100,style:{marginTop:"var(--gap-xs)"}})]}),n(x,{direction:"row",gap:"tight",children:[L&&u&&e.uploaded&&t(B,{variant:q.GHOST,onClick:()=>ae(e),"aria-label":i("document.preview.ariaLabel"),children:t(ce,{className:"dndev-size-sm"})}),l?t(de,{className:"dndev-size-sm",style:{animation:"spin 1s linear infinite"}}):t(B,{variant:q.GHOST,onClick:()=>re(e.id),"aria-label":i("document.delete.ariaLabel"),children:t(oe,{className:"dndev-size-sm"})})]})]},e.id)})}),U&&t(g,{level:"caption",variant:F?"destructive":"muted",style:{marginTop:"var(--gap-xs)"},children:U})]}),L&&z&&t(ge,{open:!!z,onOpenChange:()=>R(null),children:n(fe,{style:{maxWidth:"90vw",maxHeight:"90vh",width:"900px",height:"80vh"},children:[t(ve,{children:t(he,{children:i("document.preview.title")})}),t("iframe",{src:z,sandbox:"allow-same-origin",style:{width:"100%",height:"100%",border:"none",borderRadius:"var(--radius-md)"},title:"PDF Preview"})]})})]})});V.displayName="DocumentFieldComponent";var De=V;export{De as default};
1
+ "use client";import{jsx as t,jsxs as n,Fragment as le}from"react/jsx-runtime";import{Upload as se,X as oe,FileText as N,FileSpreadsheet as ie,File as ne,Loader2 as de,Eye as ce}from"lucide-react";import{useCallback as y,useState as E,useRef as T,useEffect as j,useImperativeHandle as ue,forwardRef as pe}from"react";import{Button as B,BUTTON_VARIANT as q,Text as g,Stack as x,Progress as me,Dialog as ge,DialogContent as ve,DialogHeader as fe,DialogTitle as he}from"@donotdev/components";import{handleError as P,useTranslation as ye}from"@donotdev/core";import{useUploadContext as xe}from"../../../contexts/UploadContext";import{useUploadStore as G}from"../../../stores/UploadStore";import{uploadFile as we,deleteFile as be,generateFileId as X,getFileIcon as Ne,formatFileSize as Te,getDocumentAcceptString as Pe}from"../../../utils/fileStorage";function De({type:m,className:d}){switch(m){case"pdf":return t(N,{className:d,style:{color:"var(--destructive)"}});case"doc":return t(N,{className:d,style:{color:"var(--primary)"}});case"xls":return t(ie,{className:d,style:{color:"var(--success)"}});case"ppt":return t(N,{className:d,style:{color:"var(--warning)"}});case"text":case"html":return t(N,{className:d});default:return t(ne,{className:d})}}const V=pe(({name:m,label:d,value:v,onChange:L,error:D,helperText:M,multiple:p=!1,maxFiles:k=10,maxSize:C=25*1024*1024,storagePath:O="uploads/documents",required:J,enablePreview:R=!0},K)=>{const{t:Q}=ye("crud"),i=Q,f=xe(),I=!!f,[o,c]=E([]),[U,F]=E(!1),[z,H]=E(null),h=T(null),A=T(!1),w=T(void 0),Y=Pe(),b=y(e=>{const r=e.filter(a=>a.uploaded&&!a.error).map(a=>a.uploaded);L(p?r:r[0]||null)},[p,L]);j(()=>{if(A.current){A.current=!1;return}if(v){const e=[];(Array.isArray(v)?v:[v]).forEach(r=>{r.url&&e.push({id:X(),file:new File([],r.filename),uploadProgress:null,uploaded:r,error:null})}),c(e)}else c([])},[v]);const Z=y(async()=>{const e=o.filter(r=>!r.uploaded&&!r.error&&r.uploadProgress===null);if(e.length!==0){c(r=>r.map(a=>e.some(l=>l.id===a.id)?{...a,uploadProgress:0}:a));for(const r of e)try{const a=await we(r.file,{storagePath:O,onProgress:l=>{c(u=>u.map(s=>s.id===r.id?{...s,uploadProgress:l.progress}:s))}});c(l=>{const u=l.map(s=>s.id===r.id?{...s,uploaded:a,uploadProgress:100,error:null}:s);return queueMicrotask(()=>b(u)),u})}catch{c(a=>a.map(l=>l.id===r.id?{...l,error:"Upload failed",uploadProgress:null}:l))}}},[o,O,b]);w.current=Z,j(()=>{if(!(!f||!m))return G.getState().registerUpload(f,m,async()=>{await w.current?.()}),()=>{G.getState().unregisterUpload(f,m)}},[f,m]),ue(K,()=>({upload:async()=>{await w.current?.()},getDocuments:()=>W.current||[]}),[]);const W=T(o);W.current=o;const _=e=>{const r=[".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".html",".csv"],a="."+e.name.split(".").pop()?.toLowerCase();return r.includes(a)},S=y(e=>{const r=(p?k:1)-o.length;if(r<=0){P(new Error("Maximum documents reached"),{userMessage:i("document.errors.maxFiles",{max:k}),severity:"warning",showNotification:!0});return}const a=e.slice(0,r),l=[],u=(C/(1024*1024)).toFixed(0);for(const s of a){if(!_(s)){P(new Error("Invalid document type"),{userMessage:i("document.errors.invalidType",{fileName:s.name}),severity:"warning",showNotification:!0});continue}if(s.size>C){P(new Error("Document too large"),{userMessage:i("document.errors.exceedsSize",{fileName:s.name,size:u}),severity:"warning",showNotification:!0});continue}l.push({id:X(),file:s,uploadProgress:null,uploaded:null,error:null})}l.length!==0&&(c(s=>p?[...s,...l]:l),I||setTimeout(()=>w.current?.(),0))},[o,p,k,C,i,I]),$=e=>{const r=Array.from(e.target.files||[]);r.length>0&&S(r),h.current&&(h.current.value="")},ee=y(e=>{e.preventDefault(),F(!1);const r=Array.from(e.dataTransfer.files);S(r)},[S]),re=y(async e=>{const r=o.find(a=>a.id===e);if(r)try{r.uploaded&&await be(r.uploaded);const a=o.filter(l=>l.id!==e);A.current=!0,c(a),setTimeout(()=>b(a),0)}catch(a){P(a,{userMessage:i("document.delete.failed"),severity:"error",showNotification:!0})}},[o,b,i]),ae=e=>{e.uploaded?.url&&e.uploaded.mimeType==="application/pdf"&&H(e.uploaded.url)},te=p||o.length===0;return n(le,{children:[n(x,{gap:"tight",children:[n(g,{level:"body",textAlign:"start",children:[d,J?"*":""]}),te&&n("div",{role:"button",tabIndex:0,"aria-label":i("document.upload.ariaLabel"),className:"dndev-surface","data-variant":D?"destructive":"default",style:{border:"var(--border-width) dashed",borderColor:U?"var(--primary)":D?"var(--destructive)":"var(--border)",borderRadius:"var(--radius-lg)",padding:"var(--gap-lg)",backgroundColor:U?"color-mix(in oklab, var(--primary) 5%, transparent)":"var(--surface)",transition:"border-color var(--dur-fast), background-color var(--dur-fast)",cursor:"pointer",outline:"none"},onDragOver:e=>{e.preventDefault(),F(!0)},onDragLeave:()=>F(!1),onDrop:ee,onClick:()=>h.current?.click(),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),h.current?.click())},children:[t("input",{ref:h,type:"file",accept:Y,multiple:p,style:{display:"none"},onChange:$}),n(x,{align:"center",justify:"center",children:[t(se,{className:"dndev-size-lg",style:{color:"var(--muted-foreground)"}}),t(g,{as:"p",variant:"muted",level:"small",textAlign:"center",children:i("document.upload.hint")}),t(g,{as:"p",variant:"muted",level:"caption",textAlign:"center",children:"PDF, Word, Excel, PowerPoint, TXT, Markdown, HTML"})]})]}),o.length>0&&t(x,{gap:"tight",children:o.map((e,r)=>{const a=Ne(e.uploaded?.mimeType||e.file.type,e.file.name),l=e.uploadProgress!==null&&e.uploadProgress<100,u=e.uploaded?.mimeType==="application/pdf"||e.file.name.toLowerCase().endsWith(".pdf");return n("div",{className:"dndev-surface","data-variant":"muted",style:{padding:"var(--gap-md)",borderRadius:"var(--radius-md)",display:"flex",alignItems:"center",gap:"var(--gap-md)"},children:[t(De,{type:a,className:"dndev-size-md"}),n(x,{gap:"none",style:{flex:1,minWidth:0},children:[t(g,{level:"small",style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.file.name}),n(g,{level:"caption",variant:"muted",children:[Te(e.uploaded?.size||e.file.size),e.error&&n("span",{style:{color:"var(--destructive)"},children:[" ","\xB7 ",e.error]})]}),l&&t(me,{value:e.uploadProgress||0,max:100,style:{marginTop:"var(--gap-xs)"}})]}),n(x,{direction:"row",gap:"tight",children:[R&&u&&e.uploaded&&t(B,{variant:q.GHOST,onClick:()=>ae(e),"aria-label":i("document.preview.ariaLabel"),children:t(ce,{className:"dndev-size-sm"})}),l?t(de,{className:"dndev-size-sm",style:{animation:"spin 1s linear infinite"}}):t(B,{variant:q.GHOST,onClick:()=>re(e.id),"aria-label":i("document.delete.ariaLabel"),children:t(oe,{className:"dndev-size-sm"})})]})]},e.id)})}),M&&t(g,{level:"caption",variant:D?"destructive":"muted",style:{marginTop:"var(--gap-xs)"},children:M})]}),R&&z&&t(ge,{open:!!z,onOpenChange:()=>H(null),children:n(ve,{style:{maxWidth:"90vw",maxHeight:"90vh",width:"900px",height:"80vh"},children:[t(fe,{children:t(he,{children:i("document.preview.title")})}),t("iframe",{src:z,sandbox:"allow-same-origin",style:{width:"100%",height:"100%",border:"none",borderRadius:"var(--radius-md)"},title:"PDF Preview"})]})})]})});V.displayName="DocumentFieldComponent";var ke=V;export{ke as default};
@@ -1 +1 @@
1
- import{jsx as i,jsxs as l}from"react/jsx-runtime";import{Clock as x}from"lucide-react";import{useState as V,useMemo as k}from"react";import{Label as z,Stack as s,Button as S,Slider as w}from"@donotdev/components";const f=[15,30,45,60,90,120,150,180],N={15:"duration.15m",30:"duration.30m",45:"duration.45m",60:"duration.1h",90:"duration.1h30",120:"duration.2h",150:"duration.2h30",180:"duration.3h"};function q(e,n){const o=e<60?`${e}m`:e%60===0?`${e/60}h`:`${Math.floor(e/60)}h${e%60}`,u=N[e];return!n||!u?o:n(`crud:${u}`,{defaultValue:o})??o}const W=({label:e,value:n,onChange:o,error:u,helperText:d,disabled:m,required:p,readonly:C,min:g=0,max:v=480,step:M=5,t})=>{const r=typeof n=="number"&&!Number.isNaN(n)?n:0,h=f.includes(r),[c,b]=V(!h&&r>0),T=k(()=>f.map(a=>({minutes:a,label:q(a,t)})),[t]),y=t?t("crud:duration.custom",{defaultValue:"Custom"}):"Custom";if(C){const a=r===0?t?t("crud:duration.zero",{defaultValue:"\u2014"}):"\u2014":r<60?t?t("crud:duration.minutes",{count:r,defaultValue:`${r} min`}):`${r} min`:t?t("crud:duration.hoursMinutes",{hours:Math.floor(r/60),minutes:r%60,defaultValue:`${Math.floor(r/60)}h${r%60?` ${r%60}min`:""}`}):`${Math.floor(r/60)}h${r%60?` ${r%60}m`:""}`;return l(s,{gap:"tight",children:[i(z,{required:p,style:{fontSize:"var(--font-size-sm)",fontWeight:500},children:e}),l(s,{direction:"row",gap:"tight",align:"center",children:[i(x,{size:18,style:{color:"var(--muted-foreground)"},"aria-hidden":!0}),i("span",{style:{color:"var(--muted-foreground)",fontSize:"var(--font-size-sm)"},children:a})]}),d&&i("p",{style:{fontSize:"var(--font-size-xs)",color:u?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:d})]})}return l(s,{children:[i(z,{required:p,style:{fontSize:"var(--font-size-sm)",fontWeight:500},children:e}),l(s,{direction:"row",gap:"tight",align:"center",style:{flexWrap:"wrap"},children:[T.map(({minutes:a,label:$})=>l(S,{type:"button",variant:r===a?"primary":"outline",disabled:m,onClick:()=>{b(!1),o(a)},"aria-pressed":r===a,"aria-label":$,children:[i(x,{size:14,style:{marginRight:"var(--gap-xs)"},"aria-hidden":!0}),$]},a)),i(S,{type:"button",variant:c?"primary":"outline",disabled:m,onClick:()=>{b(!0),!h&&r>0?o(r):o(30)},"aria-pressed":c,"aria-label":y,children:y})]}),c&&i(s,{gap:"tight",style:{marginTop:"var(--gap-sm)"},children:i(w,{value:[h?30:r],onValueChange:([a])=>o(Math.max(g,Math.min(v,a??0))),min:g,max:v,step:M,showValue:!0,disabled:m,"aria-label":e})}),d&&i("p",{style:{fontSize:"var(--font-size-xs)",color:u?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:d})]})};var j=W;export{f as DURATION_PRESETS,j as default};
1
+ import{jsx as i,jsxs as u}from"react/jsx-runtime";import{Clock as x}from"lucide-react";import{useState as T,useMemo as k}from"react";import{Label as $,Stack as s,Button as S,Slider as w}from"@donotdev/components";const f=[15,30,45,60,90,120,150,180],N={15:"duration.15m",30:"duration.30m",45:"duration.45m",60:"duration.1h",90:"duration.1h30",120:"duration.2h",150:"duration.2h30",180:"duration.3h"};function q(e,n){const o=e<60?`${e}m`:e%60===0?`${e/60}h`:`${Math.floor(e/60)}h${e%60}`,l=N[e];return!n||!l?o:n(`crud:${l}`,{defaultValue:o})??o}const W=({label:e,value:n,onChange:o,error:l,helperText:d,disabled:m,required:p,readonly:M,min:g=0,max:v=480,step:V=5,t})=>{const r=typeof n=="number"&&!Number.isNaN(n)?n:0,h=f.includes(r),[c,b]=T(!h&&r>0),C=k(()=>f.map(a=>({minutes:a,label:q(a,t)})),[t]),y=t?t("crud:duration.custom",{defaultValue:"Custom"}):"Custom";if(M){const a=r===0?t?t("crud:duration.zero",{defaultValue:"\u2014"}):"\u2014":r<60?t?t("crud:duration.minutes",{count:r,defaultValue:`${r} min`}):`${r} min`:t?t("crud:duration.hoursMinutes",{hours:Math.floor(r/60),minutes:r%60,defaultValue:`${Math.floor(r/60)}h${r%60?` ${r%60}min`:""}`}):`${Math.floor(r/60)}h${r%60?` ${r%60}m`:""}`;return u(s,{gap:"tight",children:[i($,{required:p,style:{fontSize:"var(--font-size-sm)",fontWeight:500},children:e}),u(s,{direction:"row",gap:"tight",align:"center",children:[i(x,{size:18,style:{color:"var(--muted-foreground)"},"aria-hidden":!0}),i("span",{style:{color:"var(--muted-foreground)",fontSize:"var(--font-size-sm)"},children:a})]}),d&&i("p",{style:{fontSize:"var(--font-size-xs)",color:l?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:d})]})}return u(s,{children:[i($,{required:p,style:{fontSize:"var(--font-size-sm)",fontWeight:500},children:e}),u(s,{direction:"row",gap:"tight",align:"center",style:{flexWrap:"wrap"},children:[C.map(({minutes:a,label:z})=>u(S,{type:"button",variant:r===a?"primary":"outline",disabled:m,onClick:()=>{b(!1),o(a)},"aria-pressed":r===a,"aria-label":z,children:[i(x,{size:14,style:{marginRight:"var(--gap-xs)"},"aria-hidden":!0}),z]},a)),i(S,{type:"button",variant:c?"primary":"outline",disabled:m,onClick:()=>{b(!0),!h&&r>0?o(r):o(30)},"aria-pressed":c,"aria-label":y,children:y})]}),c&&i(s,{gap:"tight",style:{marginTop:"var(--gap-sm)"},children:i(w,{value:[h?30:r],onValueChange:([a])=>o(Math.max(g,Math.min(v,a??0))),min:g,max:v,step:V,showValue:!0,disabled:m,"aria-label":e})}),d&&i("p",{style:{fontSize:"var(--font-size-xs)",color:l?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:d})]})};var j=W;export{f as DURATION_PRESETS,j as default};
@@ -1 +1 @@
1
- "use client";import{jsx as l,jsxs as c}from"react/jsx-runtime";import{Upload as Y,X as Z,File as $,Loader2 as ee,FileText as C,FileSpreadsheet as re,FileImage as ae,FileVideo as le,FileAudio as se,FileArchive as te,FileCode as ie}from"lucide-react";import{useCallback as h,useState as E,useRef as w,useEffect as O,useImperativeHandle as oe,forwardRef as ne}from"react";import{Button as de,BUTTON_VARIANT as ue,Text as y,Stack as F,Progress as ce}from"@donotdev/components";import{handleError as k,useTranslation as pe}from"@donotdev/core";import{useUploadContext as me}from"../../../contexts/UploadContext";import{useUploadStore as j}from"../../../stores/UploadStore";import{uploadFile as fe,deleteFile as ge,generateFileId as B,getFileIcon as ve,formatFileSize as he}from"../../../utils/fileStorage";function ye({type:m,className:o}){switch(m){case"pdf":return l(C,{className:o,style:{color:"var(--destructive)"}});case"doc":return l(C,{className:o,style:{color:"var(--primary)"}});case"xls":return l(re,{className:o,style:{color:"var(--success)"}});case"ppt":return l(C,{className:o,style:{color:"var(--warning)"}});case"image":return l(ae,{className:o});case"video":return l(le,{className:o});case"audio":return l(se,{className:o});case"archive":return l(te,{className:o});case"html":case"text":return l(ie,{className:o});default:return l($,{className:o})}}const H=ne(({name:m,label:o,value:f,onChange:D,error:b,helperText:I,accept:q,multiple:n=!1,maxFiles:P=10,maxSize:S=50*1024*1024,storagePath:U="uploads/files",required:K},V)=>{const{t:W}=pe("crud"),d=W,g=me(),L=!!g,[t,u]=E([]),[M,z]=E(!1),v=w(null),T=w(!1),x=w(void 0),N=h(e=>{const r=e.filter(a=>a.uploaded&&!a.error).map(a=>a.uploaded);D(n?r:r[0]||null)},[n,D]);O(()=>{if(T.current){T.current=!1;return}if(f){const e=[];(Array.isArray(f)?f:[f]).forEach(r=>{r.url&&e.push({id:B(),file:new File([],r.filename),uploadProgress:null,uploaded:r,error:null})}),u(e)}else u([])},[f]);const X=h(async()=>{const e=t.filter(r=>!r.uploaded&&!r.error&&r.uploadProgress===null);if(e.length!==0){u(r=>r.map(a=>e.some(s=>s.id===a.id)?{...a,uploadProgress:0}:a));for(const r of e)try{const a=await fe(r.file,{storagePath:U,onProgress:s=>{u(p=>p.map(i=>i.id===r.id?{...i,uploadProgress:s.progress}:i))}});u(s=>{const p=s.map(i=>i.id===r.id?{...i,uploaded:a,uploadProgress:100,error:null}:i);return queueMicrotask(()=>N(p)),p})}catch{u(a=>a.map(s=>s.id===r.id?{...s,error:"Upload failed",uploadProgress:null}:s))}}},[t,U,N]);x.current=X,O(()=>{if(!(!g||!m))return j.getState().registerUpload(g,m,async e=>{await x.current?.()}),()=>{j.getState().unregisterUpload(g,m)}},[g,m]),oe(V,()=>({upload:async()=>{await x.current?.()},getFiles:()=>R.current||[]}),[]);const R=w(t);R.current=t;const A=h(e=>{const r=(n?P:1)-t.length;if(r<=0){k(new Error("Maximum files reached"),{userMessage:d("file.errors.maxFiles",{max:P}),severity:"warning",showNotification:!0});return}const a=e.slice(0,r),s=[],p=(S/(1024*1024)).toFixed(0);for(const i of a){if(i.size>S){k(new Error("File too large"),{userMessage:d("file.errors.exceedsSize",{fileName:i.name,size:p}),severity:"warning",showNotification:!0});continue}s.push({id:B(),file:i,uploadProgress:null,uploaded:null,error:null})}s.length!==0&&(u(i=>n?[...i,...s]:s),L||setTimeout(()=>x.current?.(),0))},[t,n,P,S,d,L]),_=e=>{const r=Array.from(e.target.files||[]);r.length>0&&A(r),v.current&&(v.current.value="")},G=h(e=>{e.preventDefault(),z(!1);const r=Array.from(e.dataTransfer.files);A(r)},[A]),J=h(async e=>{const r=t.find(a=>a.id===e);if(r)try{r.uploaded&&await ge(r.uploaded);const a=t.filter(s=>s.id!==e);T.current=!0,u(a),setTimeout(()=>N(a),0)}catch(a){k(a,{userMessage:d("file.delete.failed"),severity:"error",showNotification:!0})}},[t,N,d]),Q=n||t.length===0,Ne=t.some(e=>!e.uploaded&&!e.error&&e.uploadProgress===null);return c(F,{gap:"tight",children:[c(y,{level:"body",textAlign:"start",children:[o,K?"*":""]}),Q&&c("div",{role:"button",tabIndex:0,"aria-label":d(n?"file.upload.ariaLabelMultiple":"file.upload.ariaLabelSingle"),className:"dndev-surface","data-variant":b?"destructive":"default",style:{border:"var(--border-width) dashed",borderColor:M?"var(--primary)":b?"var(--destructive)":"var(--border)",borderRadius:"var(--radius-lg)",padding:"var(--gap-lg)",backgroundColor:M?"color-mix(in oklab, var(--primary) 5%, transparent)":"var(--surface)",transition:"border-color var(--dur-fast), background-color var(--dur-fast)",cursor:"pointer",outline:"none"},onDragOver:e=>{e.preventDefault(),z(!0)},onDragLeave:()=>z(!1),onDrop:G,onClick:()=>v.current?.click(),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),v.current?.click())},children:[l("input",{ref:v,type:"file",accept:q,multiple:n,style:{display:"none"},onChange:_}),c(F,{align:"center",justify:"center",children:[l(Y,{className:"dndev-size-lg",style:{color:"var(--muted-foreground)"}}),l(y,{as:"p",variant:"muted",level:"small",textAlign:"center",children:d(n?"file.upload.dragDropMultiple":"file.upload.dragDropSingle")})]})]}),t.length>0&&l(F,{gap:"tight",children:t.map((e,r)=>{const a=ve(e.uploaded?.mimeType||e.file.type,e.file.name),s=e.uploadProgress!==null&&e.uploadProgress<100,p=e.uploaded&&!e.error;return c("div",{className:"dndev-surface","data-variant":"muted",style:{padding:"var(--gap-md)",borderRadius:"var(--radius-md)",display:"flex",alignItems:"center",gap:"var(--gap-md)"},children:[l(ye,{type:a,className:"dndev-size-md"}),c(F,{gap:"none",style:{flex:1,minWidth:0},children:[l(y,{level:"small",style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.file.name}),c(y,{level:"caption",variant:"muted",children:[he(e.uploaded?.size||e.file.size),e.error&&c("span",{style:{color:"var(--destructive)"},children:[" ","\xB7 ",e.error]})]}),s&&l(ce,{value:e.uploadProgress||0,max:100,style:{marginTop:"var(--gap-xs)"}})]}),s?l(ee,{className:"dndev-size-sm",style:{animation:"spin 1s linear infinite"}}):l(de,{variant:ue.GHOST,onClick:()=>J(e.id),"aria-label":d("file.delete.ariaLabel"),children:l(Z,{className:"dndev-size-sm"})})]},e.id)})}),I&&l(y,{level:"caption",variant:b?"destructive":"muted",style:{marginTop:"var(--gap-xs)"},children:I})]})});H.displayName="FileFieldComponent";var xe=H;export{xe as default};
1
+ "use client";import{jsx as l,jsxs as c}from"react/jsx-runtime";import{Upload as Y,X as Z,File as $,Loader2 as ee,FileText as C,FileSpreadsheet as re,FileImage as ae,FileVideo as le,FileAudio as se,FileArchive as te,FileCode as ie}from"lucide-react";import{useCallback as h,useState as U,useRef as w,useEffect as O,useImperativeHandle as oe,forwardRef as ne}from"react";import{Button as de,BUTTON_VARIANT as ue,Text as y,Stack as F,Progress as ce}from"@donotdev/components";import{handleError as S,useTranslation as pe}from"@donotdev/core";import{useUploadContext as me}from"../../../contexts/UploadContext";import{useUploadStore as j}from"../../../stores/UploadStore";import{uploadFile as fe,deleteFile as ge,generateFileId as B,getFileIcon as ve,formatFileSize as he}from"../../../utils/fileStorage";function ye({type:m,className:o}){switch(m){case"pdf":return l(C,{className:o,style:{color:"var(--destructive)"}});case"doc":return l(C,{className:o,style:{color:"var(--primary)"}});case"xls":return l(re,{className:o,style:{color:"var(--success)"}});case"ppt":return l(C,{className:o,style:{color:"var(--warning)"}});case"image":return l(ae,{className:o});case"video":return l(le,{className:o});case"audio":return l(se,{className:o});case"archive":return l(te,{className:o});case"html":case"text":return l(ie,{className:o});default:return l($,{className:o})}}const H=ne(({name:m,label:o,value:f,onChange:D,error:b,helperText:M,accept:q,multiple:n=!1,maxFiles:T=10,maxSize:k=50*1024*1024,storagePath:E="uploads/files",required:G},V)=>{const{t:W}=pe("crud"),d=W,g=me(),I=!!g,[t,u]=U([]),[L,P]=U(!1),v=w(null),z=w(!1),x=w(void 0),N=h(e=>{const r=e.filter(a=>a.uploaded&&!a.error).map(a=>a.uploaded);D(n?r:r[0]||null)},[n,D]);O(()=>{if(z.current){z.current=!1;return}if(f){const e=[];(Array.isArray(f)?f:[f]).forEach(r=>{r.url&&e.push({id:B(),file:new File([],r.filename),uploadProgress:null,uploaded:r,error:null})}),u(e)}else u([])},[f]);const X=h(async()=>{const e=t.filter(r=>!r.uploaded&&!r.error&&r.uploadProgress===null);if(e.length!==0){u(r=>r.map(a=>e.some(s=>s.id===a.id)?{...a,uploadProgress:0}:a));for(const r of e)try{const a=await fe(r.file,{storagePath:E,onProgress:s=>{u(p=>p.map(i=>i.id===r.id?{...i,uploadProgress:s.progress}:i))}});u(s=>{const p=s.map(i=>i.id===r.id?{...i,uploaded:a,uploadProgress:100,error:null}:i);return queueMicrotask(()=>N(p)),p})}catch{u(a=>a.map(s=>s.id===r.id?{...s,error:"Upload failed",uploadProgress:null}:s))}}},[t,E,N]);x.current=X,O(()=>{if(!(!g||!m))return j.getState().registerUpload(g,m,async e=>{await x.current?.()}),()=>{j.getState().unregisterUpload(g,m)}},[g,m]),oe(V,()=>({upload:async()=>{await x.current?.()},getFiles:()=>R.current||[]}),[]);const R=w(t);R.current=t;const A=h(e=>{const r=(n?T:1)-t.length;if(r<=0){S(new Error("Maximum files reached"),{userMessage:d("file.errors.maxFiles",{max:T}),severity:"warning",showNotification:!0});return}const a=e.slice(0,r),s=[],p=(k/(1024*1024)).toFixed(0);for(const i of a){if(i.size>k){S(new Error("File too large"),{userMessage:d("file.errors.exceedsSize",{fileName:i.name,size:p}),severity:"warning",showNotification:!0});continue}s.push({id:B(),file:i,uploadProgress:null,uploaded:null,error:null})}s.length!==0&&(u(i=>n?[...i,...s]:s),I||setTimeout(()=>x.current?.(),0))},[t,n,T,k,d,I]),_=e=>{const r=Array.from(e.target.files||[]);r.length>0&&A(r),v.current&&(v.current.value="")},J=h(e=>{e.preventDefault(),P(!1);const r=Array.from(e.dataTransfer.files);A(r)},[A]),K=h(async e=>{const r=t.find(a=>a.id===e);if(r)try{r.uploaded&&await ge(r.uploaded);const a=t.filter(s=>s.id!==e);z.current=!0,u(a),setTimeout(()=>N(a),0)}catch(a){S(a,{userMessage:d("file.delete.failed"),severity:"error",showNotification:!0})}},[t,N,d]),Q=n||t.length===0,Ne=t.some(e=>!e.uploaded&&!e.error&&e.uploadProgress===null);return c(F,{gap:"tight",children:[c(y,{level:"body",textAlign:"start",children:[o,G?"*":""]}),Q&&c("div",{role:"button",tabIndex:0,"aria-label":d(n?"file.upload.ariaLabelMultiple":"file.upload.ariaLabelSingle"),className:"dndev-surface","data-variant":b?"destructive":"default",style:{border:"var(--border-width) dashed",borderColor:L?"var(--primary)":b?"var(--destructive)":"var(--border)",borderRadius:"var(--radius-lg)",padding:"var(--gap-lg)",backgroundColor:L?"color-mix(in oklab, var(--primary) 5%, transparent)":"var(--surface)",transition:"border-color var(--dur-fast), background-color var(--dur-fast)",cursor:"pointer",outline:"none"},onDragOver:e=>{e.preventDefault(),P(!0)},onDragLeave:()=>P(!1),onDrop:J,onClick:()=>v.current?.click(),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),v.current?.click())},children:[l("input",{ref:v,type:"file",accept:q,multiple:n,style:{display:"none"},onChange:_}),c(F,{align:"center",justify:"center",children:[l(Y,{className:"dndev-size-lg",style:{color:"var(--muted-foreground)"}}),l(y,{as:"p",variant:"muted",level:"small",textAlign:"center",children:d(n?"file.upload.dragDropMultiple":"file.upload.dragDropSingle")})]})]}),t.length>0&&l(F,{gap:"tight",children:t.map((e,r)=>{const a=ve(e.uploaded?.mimeType||e.file.type,e.file.name),s=e.uploadProgress!==null&&e.uploadProgress<100,p=e.uploaded&&!e.error;return c("div",{className:"dndev-surface","data-variant":"muted",style:{padding:"var(--gap-md)",borderRadius:"var(--radius-md)",display:"flex",alignItems:"center",gap:"var(--gap-md)"},children:[l(ye,{type:a,className:"dndev-size-md"}),c(F,{gap:"none",style:{flex:1,minWidth:0},children:[l(y,{level:"small",style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.file.name}),c(y,{level:"caption",variant:"muted",children:[he(e.uploaded?.size||e.file.size),e.error&&c("span",{style:{color:"var(--destructive)"},children:[" ","\xB7 ",e.error]})]}),s&&l(ce,{value:e.uploadProgress||0,max:100,style:{marginTop:"var(--gap-xs)"}})]}),s?l(ee,{className:"dndev-size-sm",style:{animation:"spin 1s linear infinite"}}):l(de,{variant:ue.GHOST,onClick:()=>K(e.id),"aria-label":d("file.delete.ariaLabel"),children:l(Z,{className:"dndev-size-sm"})})]},e.id)})}),M&&l(y,{level:"caption",variant:b?"destructive":"muted",style:{marginTop:"var(--gap-xs)"},children:M})]})});H.displayName="FileFieldComponent";var xe=H;export{xe as default};
@@ -1 +1 @@
1
- import{jsx as t,jsxs as a,Fragment as b}from"react/jsx-runtime";import{useState as m}from"react";import{Checkbox as D,Label as H,Sheet as f,Stack as P,Text as V}from"@donotdev/components";import{useTranslation as j}from"@donotdev/core";const q=({checked:o=!1,onChange:l,required:u,privacyPolicyPath:s="/legal/privacy",termsPath:c="/legal/terms"})=>{const{t:r}=j("crud"),[y,d]=m(!1),[x,h]=m(!1),p=e=>{l&&l({target:{checked:e}})},v=e=>{e.target.tagName!=="A"&&(e.target.closest('[data-type="checkbox"]')||p(!o))},g=(e,w)=>{e.preventDefault(),w==="privacy"?d(!0):h(!0)},C=r("gdprConsent.consent",{defaultValue:"I agree to the"}),n=r("gdprConsent.privacyPolicy",{defaultValue:"privacy policy"}),i=r("gdprConsent.terms",{defaultValue:"terms of use"}),k=r("gdprConsent.and",{defaultValue:"and consent to the processing of my personal data."});return a(b,{children:[a(P,{direction:"row",align:"center",gap:"tight",children:[t(D,{checked:o,onCheckedChange:p}),t(H,{required:u,plain:!0,onClick:v,style:{cursor:"pointer"},children:a(V,{level:"small",children:[C," ",t("a",{href:s,onClick:e=>g(e,"privacy"),style:{textDecoration:"underline",cursor:"pointer"},children:n})," / ",t("a",{href:c,onClick:e=>g(e,"terms"),style:{textDecoration:"underline",cursor:"pointer"},children:i})," ",k]})})]}),t(f,{open:y,onOpenChange:d,side:"bottom",title:n,style:{width:"100%",height:"90%",maxHeight:"90dvh",display:"flex",flexDirection:"column",overflow:"hidden"},children:t("iframe",{src:s,style:{width:"100%",height:"100%",border:"none",flex:1,minHeight:0},title:n})}),t(f,{open:x,onOpenChange:h,side:"bottom",title:i,style:{width:"100%",height:"90%",maxHeight:"90dvh",display:"flex",flexDirection:"column",overflow:"hidden"},children:t("iframe",{src:c,style:{width:"100%",height:"100%",border:"none",flex:1,minHeight:0},title:i})})]})};var O=q;export{O as default};
1
+ import{jsx as t,jsxs as a,Fragment as w}from"react/jsx-runtime";import{useState as m}from"react";import{Checkbox as D,Label as H,Sheet as f,Stack as P,Text as V}from"@donotdev/components";import{useTranslation as j}from"@donotdev/core";const q=({checked:o=!1,onChange:l,required:u,privacyPolicyPath:s="/legal/privacy",termsPath:c="/legal/terms"})=>{const{t:r}=j("crud"),[y,d]=m(!1),[x,h]=m(!1),p=e=>{l&&l({target:{checked:e}})},v=e=>{e.target.tagName!=="A"&&(e.target.closest('[data-type="checkbox"]')||p(!o))},g=(e,b)=>{e.preventDefault(),b==="privacy"?d(!0):h(!0)},C=r("gdprConsent.consent",{defaultValue:"I agree to the"}),n=r("gdprConsent.privacyPolicy",{defaultValue:"privacy policy"}),i=r("gdprConsent.terms",{defaultValue:"terms of use"}),k=r("gdprConsent.and",{defaultValue:"and consent to the processing of my personal data."});return a(w,{children:[a(P,{direction:"row",align:"center",gap:"tight",children:[t(D,{checked:o,onCheckedChange:p}),t(H,{required:u,plain:!0,onClick:v,style:{cursor:"pointer"},children:a(V,{level:"small",children:[C," ",t("a",{href:s,onClick:e=>g(e,"privacy"),style:{textDecoration:"underline",cursor:"pointer"},children:n})," / ",t("a",{href:c,onClick:e=>g(e,"terms"),style:{textDecoration:"underline",cursor:"pointer"},children:i})," ",k]})})]}),t(f,{open:y,onOpenChange:d,side:"bottom",title:n,style:{width:"100%",height:"90%",maxHeight:"90dvh",display:"flex",flexDirection:"column",overflow:"hidden"},children:t("iframe",{src:s,style:{width:"100%",height:"100%",border:"none",flex:1,minHeight:0},title:n})}),t(f,{open:x,onOpenChange:h,side:"bottom",title:i,style:{width:"100%",height:"90%",maxHeight:"90dvh",display:"flex",flexDirection:"column",overflow:"hidden"},children:t("iframe",{src:c,style:{width:"100%",height:"100%",border:"none",flex:1,minHeight:0},title:i})})]})};var O=q;export{O as default};
@@ -1 +1 @@
1
- import{jsx as a,jsxs as u}from"react/jsx-runtime";import{Label as b,Input as v,Stack as g}from"@donotdev/components";const h=({label:c,value:t={lat:0,lng:0},onChange:i,error:r,helperText:o,disabled:d,required:m})=>{const p=n=>{const e=parseFloat(n.target.value)||0;if(e>=-90&&e<=90){const l={...t,lat:e},s={target:{value:JSON.stringify(l)}};i(s)}},f=n=>{const e=parseFloat(n.target.value)||0;if(e>=-180&&e<=180){const l={...t,lng:e},s={target:{value:JSON.stringify(l)}};i(s)}};return u(g,{gap:"tight",children:[a(b,{required:m,style:{display:"block",fontSize:"var(--font-size-sm)",fontWeight:500},children:c}),u(g,{direction:"row",children:[a(v,{label:"Latitude",type:"number",value:t.lat,onChange:p,min:"-90",max:"90",step:"0.000001",disabled:d,"data-variant":r?"destructive":void 0,className:"dndev-w-full"}),a(v,{label:"Longitude",type:"number",value:t.lng,onChange:f,min:"-180",max:"180",step:"0.000001",disabled:d,"data-variant":r?"destructive":void 0,className:"dndev-w-full"})]}),o&&a("p",{style:{fontSize:"var(--font-size-xs)",color:r?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:o})]})};var y=h;export{y as default};
1
+ import{jsx as t,jsxs as u}from"react/jsx-runtime";import{Label as b,Input as v,Stack as g}from"@donotdev/components";const h=({label:c,value:a={lat:0,lng:0},onChange:i,error:r,helperText:o,disabled:d,required:f})=>{const m=l=>{const e=parseFloat(l.target.value)||0;if(e>=-90&&e<=90){const n={...a,lat:e},s={target:{value:JSON.stringify(n)}};i(s)}},p=l=>{const e=parseFloat(l.target.value)||0;if(e>=-180&&e<=180){const n={...a,lng:e},s={target:{value:JSON.stringify(n)}};i(s)}};return u(g,{gap:"tight",children:[t(b,{required:f,style:{display:"block",fontSize:"var(--font-size-sm)",fontWeight:500},children:c}),u(g,{direction:"row",children:[t(v,{label:"Latitude",type:"number",value:a.lat,onChange:m,min:"-90",max:"90",step:"0.000001",disabled:d,"data-variant":r?"destructive":void 0,className:"dndev-w-full"}),t(v,{label:"Longitude",type:"number",value:a.lng,onChange:p,min:"-180",max:"180",step:"0.000001",disabled:d,"data-variant":r?"destructive":void 0,className:"dndev-w-full"})]}),o&&t("p",{style:{fontSize:"var(--font-size-xs)",color:r?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:o})]})};var y=h;export{y as default};
@@ -1 +1 @@
1
- "use client";import{jsx as r,jsxs as d,Fragment as J}from"react/jsx-runtime";import{DndContext as Q,closestCenter as Y,PointerSensor as Z,TouchSensor as _,useSensor as z,useSensors as ee}from"@dnd-kit/core";import{SortableContext as re,useSortable as te,rectSortingStrategy as oe,arrayMove as ae}from"@dnd-kit/sortable";import{CSS as ie}from"@dnd-kit/utilities";import{Upload as ne,X as A,Loader2 as le,GripVertical as se}from"lucide-react";import{forwardRef as de,useCallback as U,useImperativeHandle as ue,useRef as ce,useState as j}from"react";import{Text as f,Stack as S,Progress as pe}from"@donotdev/components";import{useTranslation as ge}from"@donotdev/core";import{useFileUpload as me}from"../../../hooks/useFileUpload";import{processImage as he}from"../../../utils/imageProcessing";import{uploadImage as fe}from"../../../utils/imageStorage";import{ImageViewerDialog as ve}from"../internal/ImageViewerDialog";const be=["image/*"];function ye(t){return{id:t.id,file:t.file,previewURL:t.previewURL,hash:"",rotation:0,uploadProgress:t.progress,uploaded:t.uploaded,error:t.error}}function xe({file:t,index:v,multiple:b,onImageClick:c,onRemove:y,t:p}){const{attributes:a,listeners:R,setNodeRef:D,transform:g,transition:I,isDragging:x}=te({id:t.id}),w=t.progress!==null&&t.progress<100,l=b&&!w,n={transform:ie.Transform.toString(g),transition:I,position:"relative",width:100,height:100,borderRadius:"var(--radius-md)",border:"var(--border-width) solid var(--border)",overflow:"hidden",backgroundColor:"var(--surface)",opacity:x?.5:1,cursor:l?"grab":"pointer",userSelect:"none",touchAction:l?"none":"auto"};return r("div",{ref:D,style:n,...a,...l?R:{},onClick:()=>{x||c(v)},children:w?d(S,{align:"center",justify:"center",style:{width:"100%",height:"100%"},children:[r(le,{style:{animation:"spin 1s linear infinite"}}),r(pe,{value:t.progress||0,style:{width:"80%"}})]}):t.error?d(S,{align:"center",justify:"center",style:{width:"100%",height:"100%"},children:[r(A,{style:{color:"var(--destructive)"}}),r(f,{variant:"destructive",level:"small",children:t.error})]}):d(J,{children:[b&&r("div",{style:{position:"absolute",top:4,left:4,padding:2,background:"rgba(0,0,0,0.5)",borderRadius:"var(--radius-sm)",display:"flex",zIndex:2,pointerEvents:"none"},children:r(se,{style:{color:"white",width:14,height:14}})}),r("img",{src:t.previewURL,alt:p("image.alt.upload",{index:v+1}),draggable:!1,style:{width:"100%",height:"100%",objectFit:"cover",pointerEvents:"none",userSelect:"none"}}),r("button",{type:"button",onClick:m=>{m.stopPropagation(),y(t.id)},onPointerDown:m=>m.stopPropagation(),style:{position:"absolute",top:4,right:4,padding:4,background:"rgba(0,0,0,0.5)",border:"none",borderRadius:"var(--radius-sm)",cursor:"pointer",display:"flex",zIndex:2},children:r(A,{style:{color:"white",width:16,height:16}})}),!t.uploaded&&r("div",{style:{position:"absolute",bottom:0,left:0,right:0,padding:4,background:"rgba(0,0,0,0.7)",textAlign:"center",pointerEvents:"none"},children:r(f,{variant:"muted",level:"small",style:{color:"white"},children:p("image.upload.pending",{defaultValue:"Pending"})})})]})})}const E=de(({name:t="image",label:v,value:b,onChange:c,error:y,helperText:p,multiple:a=!1,maxFiles:R=10,maxSize:D=10*1024*1024,storagePath:g="uploads/images",required:I,capture:x},w)=>{const{t:l}=ge("crud"),n=ce(null),[m,F]=j(!1),[V,L]=j(0),N=ee(z(Z,{activationConstraint:{distance:8}}),z(_,{activationConstraint:{delay:200,tolerance:5}})),B=U(async(e,o)=>{const{fullBlob:h,thumbBlob:C}=await he(e);return fe(h,C,e.name,{storagePath:g,onProgress:k=>o(k.progress)})},[g]),{files:i,addFiles:P,removeFile:T}=me({name:t,value:b,onChange:c,multiple:a,maxFiles:R,maxSize:D,accept:be,storagePath:g,uploadFn:B}),M=e=>{const o=Array.from(e.target.files||[]);o.length>0&&P(o),n.current&&(n.current.value="")},q=U(e=>{e.preventDefault(),e.stopPropagation(),e.dataTransfer.files.length>0&&P(Array.from(e.dataTransfer.files))},[P]),G=U(e=>{const{active:o,over:h}=e;if(h&&o.id!==h.id){const C=i.findIndex(s=>s.id===o.id),k=i.findIndex(s=>s.id===h.id);if(C!==-1&&k!==-1){const s=ae(i,C,k).filter(u=>u.uploaded||u.previewURL).map(u=>u.uploaded||{fullUrl:u.previewURL,thumbUrl:u.previewURL});c(a?s.length>0?s:null:s[0]||null)}}},[i,a,c]),H=e=>{L(e),F(!0)},K=(e,o)=>{},O=e=>{const o=i[e];o&&T(o.id)},W=e=>{L(e)},X=a||i.length===0;ue(w,()=>({upload:async()=>{},focus:()=>n.current?.focus()}),[]);const $=i.map(ye);return d(S,{gap:"tight",children:[d(f,{level:"body",textAlign:"start",children:[v,I&&"*"]}),X&&d("div",{role:"button",tabIndex:0,onClick:()=>n.current?.click(),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&n.current?.click()},onDragOver:e=>e.preventDefault(),onDrop:q,style:{border:`var(--border-width) dashed ${y?"var(--destructive)":"var(--border)"}`,borderRadius:"var(--radius-lg)",padding:"var(--gap-lg)",backgroundColor:"var(--surface)",cursor:"pointer",textAlign:"center"},children:[r("input",{ref:n,type:"file",accept:"image/*",capture:x,multiple:a,style:{display:"none"},onChange:M}),d(S,{align:"center",children:[r(ne,{style:{color:"var(--muted-foreground)"}}),r(f,{variant:"muted",level:"small",children:a?l("image.upload.dropzoneMultiple",{defaultValue:"Drop images here or click to upload"}):l("image.upload.dropzoneSingle",{defaultValue:"Drop image here or click to upload"})})]})]}),i.length>0&&r(Q,{sensors:N,collisionDetection:Y,onDragEnd:G,children:r(re,{items:i.map(e=>e.id),strategy:oe,children:r("div",{style:{display:"flex",flexWrap:"wrap",gap:"var(--gap-md)"},children:i.map((e,o)=>r(xe,{file:e,index:o,multiple:a,onImageClick:H,onRemove:T,t:l},e.id))})})}),p&&r(f,{variant:y?"destructive":"muted",level:"small",children:p}),r(ve,{images:$,selectedIndex:V,open:m,onClose:()=>F(!1),onUpdate:K,onDelete:O,onNavigate:W,multiple:a})]})});E.displayName="ImageFieldComponent";var we=E;export{we as default};
1
+ "use client";import{jsx as r,jsxs as d,Fragment as J}from"react/jsx-runtime";import{DndContext as Q,closestCenter as Y,PointerSensor as Z,TouchSensor as _,useSensor as z,useSensors as ee}from"@dnd-kit/core";import{SortableContext as re,useSortable as te,rectSortingStrategy as oe,arrayMove as ae}from"@dnd-kit/sortable";import{CSS as ie}from"@dnd-kit/utilities";import{Upload as ne,X as A,Loader2 as le,GripVertical as se}from"lucide-react";import{forwardRef as de,useCallback as U,useImperativeHandle as ue,useRef as pe,useState as j}from"react";import{Text as f,Stack as S,Progress as ce}from"@donotdev/components";import{useTranslation as ge}from"@donotdev/core";import{useFileUpload as me}from"../../../hooks/useFileUpload";import{processImage as he}from"../../../utils/imageProcessing";import{uploadImage as fe}from"../../../utils/imageStorage";import{ImageViewerDialog as ve}from"../internal/ImageViewerDialog";const be=["image/*"];function ye(t){return{id:t.id,file:t.file,previewURL:t.previewURL,hash:"",rotation:0,uploadProgress:t.progress,uploaded:t.uploaded,error:t.error}}function xe({file:t,index:v,multiple:b,onImageClick:p,onRemove:y,t:c}){const{attributes:a,listeners:R,setNodeRef:D,transform:g,transition:I,isDragging:x}=te({id:t.id}),w=t.progress!==null&&t.progress<100,l=b&&!w,n={transform:ie.Transform.toString(g),transition:I,position:"relative",width:100,height:100,borderRadius:"var(--radius-md)",border:"var(--border-width) solid var(--border)",overflow:"hidden",backgroundColor:"var(--surface)",opacity:x?.5:1,cursor:l?"grab":"pointer",userSelect:"none",touchAction:l?"none":"auto"};return r("div",{ref:D,style:n,...a,...l?R:{},onClick:()=>{x||p(v)},children:w?d(S,{align:"center",justify:"center",style:{width:"100%",height:"100%"},children:[r(le,{style:{animation:"spin 1s linear infinite"}}),r(ce,{value:t.progress||0,style:{width:"80%"}})]}):t.error?d(S,{align:"center",justify:"center",style:{width:"100%",height:"100%"},children:[r(A,{style:{color:"var(--destructive)"}}),r(f,{variant:"destructive",level:"small",children:t.error})]}):d(J,{children:[b&&r("div",{style:{position:"absolute",top:4,left:4,padding:2,background:"rgba(0,0,0,0.5)",borderRadius:"var(--radius-sm)",display:"flex",zIndex:2,pointerEvents:"none"},children:r(se,{style:{color:"white",width:14,height:14}})}),r("img",{src:t.previewURL,alt:c("image.alt.upload",{index:v+1}),draggable:!1,style:{width:"100%",height:"100%",objectFit:"cover",pointerEvents:"none",userSelect:"none"}}),r("button",{type:"button",onClick:m=>{m.stopPropagation(),y(t.id)},onPointerDown:m=>m.stopPropagation(),style:{position:"absolute",top:4,right:4,padding:4,background:"rgba(0,0,0,0.5)",border:"none",borderRadius:"var(--radius-sm)",cursor:"pointer",display:"flex",zIndex:2},children:r(A,{style:{color:"white",width:16,height:16}})}),!t.uploaded&&r("div",{style:{position:"absolute",bottom:0,left:0,right:0,padding:4,background:"rgba(0,0,0,0.7)",textAlign:"center",pointerEvents:"none"},children:r(f,{variant:"muted",level:"small",style:{color:"white"},children:c("image.upload.pending",{defaultValue:"Pending"})})})]})})}const E=de(({name:t="image",label:v,value:b,onChange:p,error:y,helperText:c,multiple:a=!1,maxFiles:R=10,maxSize:D=10*1024*1024,storagePath:g="uploads/images",required:I,capture:x},w)=>{const{t:l}=ge("crud"),n=pe(null),[m,F]=j(!1),[V,L]=j(0),N=ee(z(Z,{activationConstraint:{distance:8}}),z(_,{activationConstraint:{delay:200,tolerance:5}})),B=U(async(e,o)=>{const{fullBlob:h,thumbBlob:C}=await he(e);return fe(h,C,e.name,{storagePath:g,onProgress:k=>o(k.progress)})},[g]),{files:i,addFiles:P,removeFile:T}=me({name:t,value:b,onChange:p,multiple:a,maxFiles:R,maxSize:D,accept:be,storagePath:g,uploadFn:B}),M=e=>{const o=Array.from(e.target.files||[]);o.length>0&&P(o),n.current&&(n.current.value="")},q=U(e=>{e.preventDefault(),e.stopPropagation(),e.dataTransfer.files.length>0&&P(Array.from(e.dataTransfer.files))},[P]),G=U(e=>{const{active:o,over:h}=e;if(h&&o.id!==h.id){const C=i.findIndex(s=>s.id===o.id),k=i.findIndex(s=>s.id===h.id);if(C!==-1&&k!==-1){const s=ae(i,C,k).filter(u=>u.uploaded||u.previewURL).map(u=>u.uploaded||{fullUrl:u.previewURL,thumbUrl:u.previewURL});p(a?s.length>0?s:null:s[0]||null)}}},[i,a,p]),H=e=>{L(e),F(!0)},K=(e,o)=>{},O=e=>{const o=i[e];o&&T(o.id)},W=e=>{L(e)},X=a||i.length===0;ue(w,()=>({upload:async()=>{},focus:()=>n.current?.focus()}),[]);const $=i.map(ye);return d(S,{gap:"tight",children:[d(f,{level:"body",textAlign:"start",children:[v,I&&"*"]}),X&&d("div",{role:"button",tabIndex:0,onClick:()=>n.current?.click(),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&n.current?.click()},onDragOver:e=>e.preventDefault(),onDrop:q,style:{border:`var(--border-width) dashed ${y?"var(--destructive)":"var(--border)"}`,borderRadius:"var(--radius-lg)",padding:"var(--gap-lg)",backgroundColor:"var(--surface)",cursor:"pointer",textAlign:"center"},children:[r("input",{ref:n,type:"file",accept:"image/*",capture:x,multiple:a,style:{display:"none"},onChange:M}),d(S,{align:"center",children:[r(ne,{style:{color:"var(--muted-foreground)"}}),r(f,{variant:"muted",level:"small",children:a?l("image.upload.dropzoneMultiple",{defaultValue:"Drop images here or click to upload"}):l("image.upload.dropzoneSingle",{defaultValue:"Drop image here or click to upload"})})]})]}),i.length>0&&r(Q,{sensors:N,collisionDetection:Y,onDragEnd:G,children:r(re,{items:i.map(e=>e.id),strategy:oe,children:r("div",{style:{display:"flex",flexWrap:"wrap",gap:"var(--gap-md)"},children:i.map((e,o)=>r(xe,{file:e,index:o,multiple:a,onImageClick:H,onRemove:T,t:l},e.id))})})}),c&&r(f,{variant:y?"destructive":"muted",level:"small",children:c}),r(ve,{images:$,selectedIndex:V,open:m,onClose:()=>F(!1),onUpdate:K,onDelete:O,onNavigate:W,multiple:a})]})});E.displayName="ImageFieldComponent";var we=E;export{we as default};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as t,Fragment as q}from"react/jsx-runtime";import{useMemo as J,useId as M}from"react";import{Combobox as R,Tag as p,Stack as h}from"@donotdev/components";import{useTranslation as k}from"@donotdev/core";const d=4,v=3,B=({label:f,value:r=[],options:n,error:b,helperText:l,onChange:u,onBlur:S,required:x,className:y})=>{const{t:g}=k("crud"),m=M(),z=J(()=>n.map(e=>({value:String(e.value),label:e.label})),[n]),N=e=>{const s=Array.isArray(e)?e:[e],a={target:{value:JSON.stringify(s)}};u(a)},C=e=>{e||S?.()},O=e=>{const s=r.filter(c=>c!==e),a={target:{value:JSON.stringify(s)}};u(a)},i=!!b,A=`${m}-error`,T=`${m}-helper`,j=r.length>0?t(q,{children:[r.slice(0,r.length>d?v:d).map((e,s)=>{const a=n.find(c=>String(c.value)===e)?.label||e;return o(p,{size:"sm",onRemove:()=>O(e),children:a},s)}),r.length>d&&t(p,{size:"sm",variant:"outline",disabled:!0,children:["+",r.length-v," more"]})]}):void 0;return t(h,{gap:"tight",className:y,children:[o(R,{label:f,value:r,onValueChange:N,onOpenChange:C,placeholder:g("actions.selectOptions","Select options..."),emptyMessage:g("messages.noResults","No results found"),options:z,multiple:!0,required:x,variant:i?"destructive":void 0,chips:j}),i&&t(h,{id:A,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[o("span",{children:"\u26A0"}),l]}),l&&!i&&o("p",{id:T,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:l})]})};var I=B;export{I as default};
1
+ import{jsx as t,jsxs as o,Fragment as q}from"react/jsx-runtime";import{useMemo as J,useId as M}from"react";import{Combobox as R,Tag as p,Stack as h}from"@donotdev/components";import{useTranslation as k}from"@donotdev/core";const d=4,v=3,B=({label:f,value:a=[],options:n,error:b,helperText:i,onChange:u,onBlur:S,required:x,className:y})=>{const{t:g}=k("crud"),m=M(),z=J(()=>n.map(e=>({value:String(e.value),label:e.label})),[n]),N=e=>{const r=Array.isArray(e)?e:[e],s={target:{value:JSON.stringify(r)}};u(s)},C=e=>{e||S?.()},O=e=>{const r=a.filter(c=>c!==e),s={target:{value:JSON.stringify(r)}};u(s)},l=!!b,A=`${m}-error`,T=`${m}-helper`,j=a.length>0?o(q,{children:[a.slice(0,a.length>d?v:d).map((e,r)=>{const s=n.find(c=>String(c.value)===e)?.label||e;return t(p,{size:"sm",onRemove:()=>O(e),children:s},r)}),a.length>d&&o(p,{size:"sm",variant:"outline",disabled:!0,children:["+",a.length-v," more"]})]}):void 0;return o(h,{gap:"tight",className:y,children:[t(R,{label:f,value:a,onValueChange:N,onOpenChange:C,placeholder:g("actions.selectOptions","Select options..."),emptyMessage:g("messages.noResults","No results found"),options:z,multiple:!0,required:x,variant:l?"destructive":void 0,chips:j}),l&&o(h,{id:A,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[t("span",{children:"\u26A0"}),i]}),i&&!l&&t("p",{id:T,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:i})]})};var I=B;export{I as default};
@@ -1 +1 @@
1
- "use client";import{jsx as n,jsxs as i}from"react/jsx-runtime";import{useState as y}from"react";import{Input as h,Button as b,Stack as d}from"@donotdev/components";import{useTranslation as x}from"@donotdev/core";const N=({label:m,value:s=[],onChange:l,className:c,required:g})=>{const{t:o}=x("crud"),[t,u]=y(""),p=()=>{if(t.trim()){const e=[...s,t.trim()],r={target:{value:JSON.stringify(e)}};l(r),u("")}},f=e=>{const r=s.filter((w,v)=>v!==e),a={target:{value:JSON.stringify(r)}};l(a)};return i(d,{className:c,children:[i(d,{direction:"row",align:"end",children:[n(h,{label:m,type:"text",value:t,onChange:e=>u(e.target.value),required:g,className:"dndev-flex-1",placeholder:o("form.typeAndPressAdd","Type and press Add...")}),n(b,{type:"button",onClick:p,disabled:!t.trim(),children:o("form.add","Add")})]}),n(d,{direction:"row",wrap:"wrap",children:s.map((e,r)=>i("span",{className:"dndev-surface","data-variant":"muted",style:{display:"inline-flex",alignItems:"center",gap:"var(--gap-sm)",padding:"var(--gap-sm) var(--gap-md)",fontSize:"var(--font-size-sm)",fontWeight:500,borderRadius:"var(--radius-lg)"},children:[e,n("button",{type:"button",onClick:()=>f(r),style:{color:"var(--muted-foreground)",marginInlineStart:"var(--gap-sm)"},onMouseEnter:a=>{a.currentTarget.style.color="var(--foreground)"},onMouseLeave:a=>{a.currentTarget.style.color="var(--muted-foreground)"},"aria-label":`${o("form.remove","Remove")} ${e}`,children:"\xD7"})]},r))})]})};var S=N;export{S as default};
1
+ "use client";import{jsx as n,jsxs as i}from"react/jsx-runtime";import{useState as y}from"react";import{Input as h,Button as b,Stack as d}from"@donotdev/components";import{useTranslation as x}from"@donotdev/core";const N=({label:m,value:o=[],onChange:l,className:c,required:p})=>{const{t:s}=x("crud"),[t,u]=y(""),g=()=>{if(t.trim()){const e=[...o,t.trim()],r={target:{value:JSON.stringify(e)}};l(r),u("")}},f=e=>{const r=o.filter((w,v)=>v!==e),a={target:{value:JSON.stringify(r)}};l(a)};return i(d,{className:c,children:[i(d,{direction:"row",align:"end",children:[n(h,{label:m,type:"text",value:t,onChange:e=>u(e.target.value),required:p,className:"dndev-flex-1",placeholder:s("form.typeAndPressAdd","Type and press Add...")}),n(b,{type:"button",onClick:g,disabled:!t.trim(),children:s("form.add","Add")})]}),n(d,{direction:"row",wrap:"wrap",children:o.map((e,r)=>i("span",{className:"dndev-surface","data-variant":"muted",style:{display:"inline-flex",alignItems:"center",gap:"var(--gap-sm)",padding:"var(--gap-sm) var(--gap-md)",fontSize:"var(--font-size-sm)",fontWeight:500,borderRadius:"var(--radius-lg)"},children:[e,n("button",{type:"button",onClick:()=>f(r),style:{color:"var(--muted-foreground)",marginInlineStart:"var(--gap-sm)"},onMouseEnter:a=>{a.currentTarget.style.color="var(--foreground)"},onMouseLeave:a=>{a.currentTarget.style.color="var(--muted-foreground)"},"aria-label":`${s("form.remove","Remove")} ${e}`,children:"\xD7"})]},r))})]})};var S=N;export{S as default};
@@ -1 +1 @@
1
- import{jsx as v,jsxs as j}from"react/jsx-runtime";import{useState as q,useEffect as z,useCallback as f}from"react";import{Input as D,cn as E,Stack as I}from"@donotdev/components";import{useTranslation as L}from"@donotdev/core";const M=({label:b,value:l,onChange:i,error:g,helperText:c,min:x,max:y,step:N,disabled:s,required:S,className:h,mask:r="number",...w})=>{const{i18n:F}=L(),n=F?.language||(typeof navigator<"u"?navigator.language:"en-US"),u=f(a=>a==null||isNaN(a)?"":r==="currency"?a.toLocaleString(n,{minimumFractionDigits:2,maximumFractionDigits:2}):r==="mileage"?Math.round(a).toLocaleString(n):a.toString(),[r,n]),T=f(a=>{if(!a||a.trim()==="")return null;const t=new Intl.NumberFormat(n).formatToParts(1234.56),e=t.find(m=>m.type==="group")?.value||",",C=t.find(m=>m.type==="decimal")?.value||".";let o=a.replace(new RegExp(`\\${e}`,"g"),"");o=o.replace(C,"."),o=o.replace(/[^\d.\-]/g,"");const p=parseFloat(o);return isNaN(p)?null:p},[n]),[k,d]=q(()=>u(l));return z(()=>{d(u(l))},[l,u]),j(I,{gap:"tight",children:[v(D,{type:r==="number"?"number":"text",inputMode:r==="number"?void 0:"decimal",label:b,value:k,onChange:a=>{const t=a.target.value;if(d(t),r==="number"){const e=parseFloat(t);isNaN(e)?i(a):i({...a,target:{...a.target,value:e.toString()}})}else{const e=T(t);e!==null?i({...a,target:{...a.target,value:e.toString()}}):t===""&&i({...a,target:{...a.target,value:""}})}},min:x,max:y,step:N,disabled:s,required:S,className:E("dndev-w-full",h),"data-variant":g?"destructive":void 0,style:{opacity:s?"var(--opacity-muted)":void 0,cursor:s?"not-allowed":void 0},...w}),c&&v("p",{style:{fontSize:"var(--font-size-xs)",color:g?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:c})]})};var G=M;export{G as default};
1
+ import{jsx as v,jsxs as j}from"react/jsx-runtime";import{useState as q,useEffect as z,useCallback as f}from"react";import{Input as D,cn as E,Stack as I}from"@donotdev/components";import{useTranslation as L}from"@donotdev/core";const M=({label:b,value:l,onChange:i,error:g,helperText:c,min:x,max:y,step:N,disabled:s,required:S,className:h,mask:r="number",...F})=>{const{i18n:T}=L(),n=T?.language||(typeof navigator<"u"?navigator.language:"en-US"),u=f(e=>e==null||isNaN(e)?"":r==="currency"?e.toLocaleString(n,{minimumFractionDigits:2,maximumFractionDigits:2}):r==="mileage"?Math.round(e).toLocaleString(n):e.toString(),[r,n]),k=f(e=>{if(!e||e.trim()==="")return null;const t=new Intl.NumberFormat(n).formatToParts(1234.56),a=t.find(m=>m.type==="group")?.value||",",C=t.find(m=>m.type==="decimal")?.value||".";let o=e.replace(new RegExp(`\\${a}`,"g"),"");o=o.replace(C,"."),o=o.replace(/[^\d.\-]/g,"");const p=parseFloat(o);return isNaN(p)?null:p},[n]),[w,d]=q(()=>u(l));return z(()=>{d(u(l))},[l,u]),j(I,{gap:"tight",children:[v(D,{type:r==="number"?"number":"text",inputMode:r==="number"?void 0:"decimal",label:b,value:w,onChange:e=>{const t=e.target.value;if(d(t),r==="number"){const a=parseFloat(t);isNaN(a)?i(e):i({...e,target:{...e.target,value:a.toString()}})}else{const a=k(t);a!==null?i({...e,target:{...e.target,value:a.toString()}}):t===""&&i({...e,target:{...e.target,value:""}})}},min:x,max:y,step:N,disabled:s,required:S,className:E("dndev-w-full",h),"data-variant":g?"destructive":void 0,style:{opacity:s?"var(--opacity-muted)":void 0,cursor:s?"not-allowed":void 0},...F}),c&&v("p",{style:{fontSize:"var(--font-size-xs)",color:g?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:c})]})};var G=M;export{G as default};
@@ -1 +1 @@
1
- "use client";import{jsx as a,jsxs as d}from"react/jsx-runtime";import{useId as i}from"react";import{PasswordInput as u,Stack as m}from"@donotdev/components";const p=({label:o,value:s,onChange:t,error:l,helperText:e,...r})=>{const n=i();return d(m,{gap:"tight",children:[a(u,{id:n,value:s??"",onChange:t,label:o,className:"dndev-w-full",required:r.required,...r}),e&&a("p",{style:{fontSize:"var(--font-size-xs)",color:l?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:e})]})};var c=p;export{c as default};
1
+ "use client";import{jsx as a,jsxs as d}from"react/jsx-runtime";import{useId as i}from"react";import{PasswordInput as u,Stack as m}from"@donotdev/components";const p=({label:o,value:s,onChange:t,error:n,helperText:e,...r})=>{const l=i();return d(m,{gap:"tight",children:[a(u,{id:l,value:s??"",onChange:t,label:o,className:"dndev-w-full",required:r.required,...r}),e&&a("p",{style:{fontSize:"var(--font-size-xs)",color:n?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:e})]})};var c=p;export{c as default};
@@ -1 +1 @@
1
- "use client";import{jsx as i,jsxs as s}from"react/jsx-runtime";import{useState as L,useMemo as h,useEffect as k,useId as E}from"react";import{Input as M,FloatingLabel as O,Button as U,BUTTON_VARIANT as j,DropdownMenu as q,Stack as g,cn as D}from"@donotdev/components";import{Flag as z,COUNTRIES as y}from"@donotdev/core";const V=({label:w,value:d="",onChange:C,error:R,helperText:f,required:S=!1,disabled:v=!1,defaultCountry:N="FR",showFlags:T=!0,preferredCountries:c,countries:m})=>{const o=E(),p=h(()=>m&&m.length>0?m.map(e=>y.find(r=>r.code===e)).filter(e=>e!==void 0):Array.from(y),[m]),n=h(()=>{if(!c||c.length===0)return p;const e=c.map(t=>p.find(I=>I.code===t)).filter(t=>t!==void 0),r=p.filter(t=>!c.includes(t.code));return[...e,...r]},[p,c]),u=h(()=>n.find(e=>e.code===N)||n[0]||y[0],[N,n]),{country:b,phoneNumber:$}=h(()=>{if(!d)return{country:u,phoneNumber:""};const e=n.find(t=>d.startsWith(t.dialCode));if(e){let t=d.slice(e.dialCode.length).trim();return t.startsWith("0")&&(t=t.slice(1).trim()),t=t.replace(/\s+/g," ").trim(),{country:e,phoneNumber:t}}if(d.startsWith("+"))return{country:u,phoneNumber:d};let r=d.trim();return r.startsWith("0")&&(r=r.slice(1).trim()),r=r.replace(/\s+/g," ").trim(),{country:u,phoneNumber:r}},[d,u,n]),[a,W]=L(u);k(()=>{b.code!==a.code&&W(b)},[b,a.code]);const x=$,A=e=>{W(e);let r=x;r.startsWith("0")&&(r=r.slice(1).trim()),r=r.replace(/\s+/g," ").trim();const t={target:{value:e.dialCode+(r?" "+r:"")}};C(t)},B=e=>{let r=e.target.value;r.startsWith("0")&&(r=r.slice(1).trim()),r=r.replace(/\s+/g," ").trim();const t={target:{value:a.dialCode+(r?" "+r:"")}};C(t)},F=n.map(e=>({label:e.dialCode,onClick:()=>A(e),checked:e.code===a.code,children:T?s(g,{direction:"row",align:"center",gap:"tight",children:[i(z,{code:e.flagCode,title:e.name}),i("span",{children:e.dialCode}),i("span",{style:{color:"var(--muted-foreground)",fontSize:"var(--font-size-xs)"},children:e.name})]}):s("span",{children:[e.dialCode," ",e.name]})})),l=!!R;return s(g,{gap:"tight",children:[i(O,{htmlFor:o,label:w,disabled:v,required:S,children:s("div",{className:"dndev-relative",style:{display:"flex",gap:0},children:[i(q,{trigger:i(U,{type:"button",variant:j.OUTLINE,disabled:v,style:{minWidth:"fit-content",padding:"0 var(--gap-md)",borderRight:"none",borderTopRightRadius:0,borderBottomRightRadius:0,borderRadius:"var(--radius-md) 0 0 var(--radius-md)"},"aria-label":`Country code: ${a.dialCode}`,children:s(g,{direction:"row",align:"center",gap:"tight",children:[T&&i(z,{code:a.flagCode,title:a.name}),i("span",{children:a.dialCode})]})}),items:F,contentWidth:"16rem"}),i(M,{id:o,type:"tel",inputMode:"tel",value:x,onChange:B,disabled:v,placeholder:"6 12 34 56 78",bare:!0,"data-variant":l?"destructive":void 0,className:"dndev-flex-1",style:{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderRadius:"0 var(--radius-md) var(--radius-md) 0"},"aria-describedby":D(l&&`${o}-error`,f&&!l&&`${o}-helper`),"aria-invalid":l})]})}),l&&s(g,{id:`${o}-error`,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[i("span",{children:"\u26A0"}),R]}),f&&!l&&i("p",{id:`${o}-helper`,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:f})]})};var _=V;export{_ as default};
1
+ "use client";import{jsx as i,jsxs as s}from"react/jsx-runtime";import{useState as L,useMemo as p,useEffect as k,useId as E}from"react";import{Input as M,FloatingLabel as O,Button as U,BUTTON_VARIANT as j,DropdownMenu as q,Stack as g,cn as D}from"@donotdev/components";import{Flag as S,COUNTRIES as y}from"@donotdev/core";const V=({label:T,value:d="",onChange:C,error:R,helperText:f,required:F=!1,disabled:v=!1,defaultCountry:x="FR",showFlags:N=!0,preferredCountries:c,countries:h})=>{const o=E(),m=p(()=>h&&h.length>0?h.map(e=>y.find(r=>r.code===e)).filter(e=>e!==void 0):Array.from(y),[h]),n=p(()=>{if(!c||c.length===0)return m;const e=c.map(t=>m.find(I=>I.code===t)).filter(t=>t!==void 0),r=m.filter(t=>!c.includes(t.code));return[...e,...r]},[m,c]),u=p(()=>n.find(e=>e.code===x)||n[0]||y[0],[x,n]),{country:b,phoneNumber:$}=p(()=>{if(!d)return{country:u,phoneNumber:""};const e=n.find(t=>d.startsWith(t.dialCode));if(e){let t=d.slice(e.dialCode.length).trim();return t.startsWith("0")&&(t=t.slice(1).trim()),t=t.replace(/\s+/g," ").trim(),{country:e,phoneNumber:t}}if(d.startsWith("+"))return{country:u,phoneNumber:d};let r=d.trim();return r.startsWith("0")&&(r=r.slice(1).trim()),r=r.replace(/\s+/g," ").trim(),{country:u,phoneNumber:r}},[d,u,n]),[a,W]=L(u);k(()=>{b.code!==a.code&&W(b)},[b,a.code]);const z=$,w=e=>{W(e);let r=z;r.startsWith("0")&&(r=r.slice(1).trim()),r=r.replace(/\s+/g," ").trim();const t={target:{value:e.dialCode+(r?" "+r:"")}};C(t)},A=e=>{let r=e.target.value;r.startsWith("0")&&(r=r.slice(1).trim()),r=r.replace(/\s+/g," ").trim();const t={target:{value:a.dialCode+(r?" "+r:"")}};C(t)},B=n.map(e=>({label:e.dialCode,onClick:()=>w(e),checked:e.code===a.code,children:N?s(g,{direction:"row",align:"center",gap:"tight",children:[i(S,{code:e.flagCode,title:e.name}),i("span",{children:e.dialCode}),i("span",{style:{color:"var(--muted-foreground)",fontSize:"var(--font-size-xs)"},children:e.name})]}):s("span",{children:[e.dialCode," ",e.name]})})),l=!!R;return s(g,{gap:"tight",children:[i(O,{htmlFor:o,label:T,disabled:v,required:F,children:s("div",{className:"dndev-relative",style:{display:"flex",gap:0},children:[i(q,{trigger:i(U,{type:"button",variant:j.OUTLINE,disabled:v,style:{minWidth:"fit-content",padding:"0 var(--gap-md)",borderRight:"none",borderTopRightRadius:0,borderBottomRightRadius:0,borderRadius:"var(--radius-md) 0 0 var(--radius-md)"},"aria-label":`Country code: ${a.dialCode}`,children:s(g,{direction:"row",align:"center",gap:"tight",children:[N&&i(S,{code:a.flagCode,title:a.name}),i("span",{children:a.dialCode})]})}),items:B,contentWidth:"16rem"}),i(M,{id:o,type:"tel",inputMode:"tel",value:z,onChange:A,disabled:v,placeholder:"6 12 34 56 78",bare:!0,"data-variant":l?"destructive":void 0,className:"dndev-flex-1",style:{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderRadius:"0 var(--radius-md) var(--radius-md) 0"},"aria-describedby":D(l&&`${o}-error`,f&&!l&&`${o}-helper`),"aria-invalid":l})]})}),l&&s(g,{id:`${o}-error`,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[i("span",{children:"\u26A0"}),R]}),f&&!l&&i("p",{id:`${o}-helper`,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:f})]})};var _=V;export{_ as default};
@@ -1 +1 @@
1
- "use client";import{jsx as l,jsxs as c}from"react/jsx-runtime";import{CirclePlus as R,CircleMinus as U}from"lucide-react";import{useId as q,useState as z}from"react";import{Input as C,Checkbox as D,Stack as E,Select as A,CollapsiblePrimitive as B,CollapsibleTrigger as G,CollapsibleContent as H}from"@donotdev/components";import{useTranslation as J,getCurrencySymbol as L}from"@donotdev/core";const O=["EUR","USD","GBP","CHF","JPY","KRW"],Y=({label:f,value:a,onChange:I,error:s,helperText:g,required:P=!1,disabled:o=!1,placeholder:N="0",defaultCurrency:i="EUR",optionsTitle:x="Price options",currencies:b})=>{const u=q(),{t:p}=J("crud"),r=b?.length?b:[...O],h=a?.currency??i,m=r.includes(h)?h:r[0]??i,T=a?.vatIncluded??!0,y=a?.discountPercent??0,S=`${f} (${L(m)})`,d=e=>{const n=e.amount!==void 0?e.amount:a?.amount??0;let t=e.currency!==void 0?e.currency:a?.currency??i;r.includes(t)||(t=m);const F=e.vatIncluded!==void 0?e.vatIncluded:a?.vatIncluded??!0,M=e.discountPercent!==void 0?e.discountPercent:a?.discountPercent??0;I({amount:Number(n),currency:t,vatIncluded:F,discountPercent:Number(M)})},k=e=>{const n=e.target.value;if(n===""||n===null){d({amount:0});return}const t=parseFloat(n);d({amount:isNaN(t)?0:t})},V=e=>{d({currency:e||i})},$=e=>{const n=e.target.value;if(n===""||n===null){d({discountPercent:0});return}const t=parseFloat(n);d({discountPercent:isNaN(t)?0:t})},[v,j]=z(!1);return c(B,{open:v,onOpenChange:j,children:[c(E,{children:[c("div",{style:{display:"grid",gridTemplateColumns:"1fr auto",gap:"var(--gap-sm)",alignItems:"end"},children:[l(C,{id:u,type:"number",inputMode:"decimal",label:S,value:a?.amount!==void 0&&a?.amount!==null?a.amount:"",onChange:k,disabled:o,placeholder:N,required:P,min:0,step:.01,"data-variant":s?"destructive":void 0,"aria-invalid":s}),l(G,{asChild:!0,children:l("button",{type:"button","aria-label":x,"aria-expanded":v,className:"dndev-collapsible-trigger",style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"var(--gap-sm)",background:"none",border:"none",cursor:"pointer"},children:v?l(U,{className:"dndev-collapsible-icon","aria-hidden":"true"}):l(R,{className:"dndev-collapsible-icon","aria-hidden":"true"})})})]}),l(H,{className:"dndev-collapsible-content",children:c("div",{style:{display:"grid",gridTemplateColumns:r.length>1?"1fr auto 1fr":"auto 1fr",gap:"var(--gap-sm)",alignItems:"end",paddingTop:"var(--gap-md)"},children:[r.length>1&&l(A,{value:m,onValueChange:V,placeholder:i,options:r.map(e=>({value:e,label:e})),disabled:o,label:p("price.currency",{defaultValue:"Currency"})}),l(D,{id:`${u}-vat`,label:p("price.vatIncluded",{defaultValue:"VAT Incl."}),checked:T,onCheckedChange:e=>d({vatIncluded:e===!0}),disabled:o}),l(C,{id:`${u}-discount`,type:"number",inputMode:"decimal",min:0,max:100,step:1,value:y===0?"":y,onChange:$,disabled:o,placeholder:"0",label:p("price.discountLabel",{defaultValue:"Discount (%)"})})]})})]}),g&&l("p",{style:{fontSize:"var(--font-size-xs)",color:s?"var(--destructive-foreground)":"var(--muted-foreground)"},children:g})]})};var w=Y;export{w as default};
1
+ "use client";import{jsx as a,jsxs as o}from"react/jsx-runtime";import{CirclePlus as R,CircleMinus as U}from"lucide-react";import{useId as q,useState as z}from"react";import{Input as C,Checkbox as D,Stack as E,Select as A,CollapsiblePrimitive as B,CollapsibleTrigger as G,CollapsibleContent as H}from"@donotdev/components";import{useTranslation as J,getCurrencySymbol as L}from"@donotdev/core";const O=["EUR","USD","GBP","CHF","JPY","KRW"],Y=({label:f,value:n,onChange:I,error:s,helperText:g,required:P=!1,disabled:c=!1,placeholder:N="0",defaultCurrency:i="EUR",optionsTitle:x="Price options",currencies:b})=>{const u=q(),{t:p}=J("crud"),r=b?.length?b:[...O],h=n?.currency??i,m=r.includes(h)?h:r[0]??i,T=n?.vatIncluded??!0,y=n?.discountPercent??0,S=`${f} (${L(m)})`,d=e=>{const l=e.amount!==void 0?e.amount:n?.amount??0;let t=e.currency!==void 0?e.currency:n?.currency??i;r.includes(t)||(t=m);const F=e.vatIncluded!==void 0?e.vatIncluded:n?.vatIncluded??!0,M=e.discountPercent!==void 0?e.discountPercent:n?.discountPercent??0;I({amount:Number(l),currency:t,vatIncluded:F,discountPercent:Number(M)})},k=e=>{const l=e.target.value;if(l===""||l===null){d({amount:0});return}const t=parseFloat(l);d({amount:isNaN(t)?0:t})},V=e=>{d({currency:e||i})},$=e=>{const l=e.target.value;if(l===""||l===null){d({discountPercent:0});return}const t=parseFloat(l);d({discountPercent:isNaN(t)?0:t})},[v,j]=z(!1);return o(B,{open:v,onOpenChange:j,children:[o(E,{children:[o("div",{style:{display:"grid",gridTemplateColumns:"1fr auto",gap:"var(--gap-sm)",alignItems:"end"},children:[a(C,{id:u,type:"number",inputMode:"decimal",label:S,value:n?.amount!==void 0&&n?.amount!==null?n.amount:"",onChange:k,disabled:c,placeholder:N,required:P,min:0,step:.01,"data-variant":s?"destructive":void 0,"aria-invalid":s}),a(G,{asChild:!0,children:a("button",{type:"button","aria-label":x,"aria-expanded":v,className:"dndev-collapsible-trigger",style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"var(--gap-sm)",background:"none",border:"none",cursor:"pointer"},children:v?a(U,{className:"dndev-collapsible-icon","aria-hidden":"true"}):a(R,{className:"dndev-collapsible-icon","aria-hidden":"true"})})})]}),a(H,{className:"dndev-collapsible-content",children:o("div",{style:{display:"grid",gridTemplateColumns:r.length>1?"1fr auto 1fr":"auto 1fr",gap:"var(--gap-sm)",alignItems:"end",paddingTop:"var(--gap-md)"},children:[r.length>1&&a(A,{value:m,onValueChange:V,placeholder:i,options:r.map(e=>({value:e,label:e})),disabled:c,label:p("price.currency",{defaultValue:"Currency"})}),a(D,{id:`${u}-vat`,label:p("price.vatIncluded",{defaultValue:"VAT Incl."}),checked:T,onCheckedChange:e=>d({vatIncluded:e===!0}),disabled:c}),a(C,{id:`${u}-discount`,type:"number",inputMode:"decimal",min:0,max:100,step:1,value:y===0?"":y,onChange:$,disabled:c,placeholder:"0",label:p("price.discountLabel",{defaultValue:"Discount (%)"})})]})})]}),g&&a("p",{style:{fontSize:"var(--font-size-xs)",color:s?"var(--destructive-foreground)":"var(--muted-foreground)"},children:g})]})};var w=Y;export{w as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as d}from"react/jsx-runtime";import{RadioGroup as f,Label as c,Stack as p}from"@donotdev/components";const v=({label:o,value:t,onChange:a,options:s,error:n,helperText:r,required:i})=>{const l=u=>{a({target:{value:u}})};return d(p,{gap:"tight",children:[e(c,{required:i,style:{display:"block",fontSize:"var(--font-size-sm)",fontWeight:500},children:o}),e(f,{value:t,onValueChange:l,items:s}),r&&e("p",{style:{fontSize:"var(--font-size-xs)",color:n?"var(--destructive-foreground)":"var(--muted-foreground)"},children:r})]})};var h=v;export{h as default};
1
+ import{jsx as e,jsxs as u}from"react/jsx-runtime";import{RadioGroup as f,Label as c,Stack as p}from"@donotdev/components";const v=({label:o,value:t,onChange:a,options:s,error:i,helperText:r,required:l})=>{const n=d=>{a({target:{value:d}})};return u(p,{gap:"tight",children:[e(c,{required:l,style:{display:"block",fontSize:"var(--font-size-sm)",fontWeight:500},children:o}),e(f,{value:t,onValueChange:n,items:s}),r&&e("p",{style:{fontSize:"var(--font-size-xs)",color:i?"var(--destructive-foreground)":"var(--muted-foreground)"},children:r})]})};var h=v;export{h as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as g}from"react/jsx-runtime";import{Label as h,Rating as m,Stack as f}from"@donotdev/components";const v=({label:a,value:o=0,onChange:s,error:l,helperText:r,max:t=5,disabled:i,required:n,readonly:d,showValue:u=!1})=>g(f,{gap:"tight",children:[e(h,{required:n,style:{fontSize:"var(--font-size-sm)",fontWeight:500},children:a}),e(m,{value:o,onChange:s,max:t,disabled:i,readonly:d,showValue:u,"aria-label":a}),r&&e("p",{style:{fontSize:"var(--font-size-xs)",color:l?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:r})]});var p=v;export{p as default};
1
+ import{jsx as e,jsxs as g}from"react/jsx-runtime";import{Label as h,Rating as m,Stack as u}from"@donotdev/components";const v=({label:a,value:o=0,onChange:s,error:l,helperText:r,max:t=5,disabled:i,required:n,readonly:d,showValue:f=!1})=>g(u,{gap:"tight",children:[e(h,{required:n,style:{fontSize:"var(--font-size-sm)",fontWeight:500},children:a}),e(m,{value:o,onChange:s,max:t,disabled:i,readonly:d,showValue:f,"aria-label":a}),r&&e("p",{style:{fontSize:"var(--font-size-xs)",color:l?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:r})]});var p=v;export{p as default};
@@ -1 +1 @@
1
- import{jsx as t,jsxs as d}from"react/jsx-runtime";import"lucide-react";import{useMemo as S,useId as A}from"react";import{Combobox as $,Stack as c}from"@donotdev/components";import{useTranslation as j}from"@donotdev/core";const q=({label:r,value:l,onChange:p,options:n,isLoading:u=!1,error:f,helperText:o,required:h,onBlur:m,onCreate:I,placeholder:g})=>{const{t:s}=j("crud"),i=A(),v=S(()=>n.map(e=>({value:e.id,label:e.label,description:e.description})),[n]),b=e=>{const z=Array.isArray(e)?e[0]||"":e;p(z)},x=e=>{e||m?.()},a=!!f,y=`${i}-error`,C=`${i}-helper`;return d(c,{gap:"tight",children:[t($,{label:r,value:l||"",onValueChange:b,onOpenChange:x,placeholder:g||s("reference.placeholder",{label:r})||`Select ${r}`,emptyMessage:s("reference.noResults")||"No results found",options:v,required:h,variant:a?"destructive":void 0,isLoading:u,clearable:!!l}),a&&d(c,{id:y,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[t("span",{children:"\u26A0"}),o]}),o&&!a&&t("p",{id:C,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:o})]})};var L=q;export{L as default};
1
+ import{jsx as t,jsxs as d}from"react/jsx-runtime";import"lucide-react";import{useMemo as S,useId as A}from"react";import{Combobox as $,Stack as c}from"@donotdev/components";import{useTranslation as j}from"@donotdev/core";const q=({label:r,value:s,onChange:p,options:i,isLoading:u=!1,error:f,helperText:o,required:h,onBlur:m,onCreate:I,placeholder:g})=>{const{t:l}=j("crud"),n=A(),v=S(()=>i.map(e=>({value:e.id,label:e.label,description:e.description})),[i]),b=e=>{const z=Array.isArray(e)?e[0]||"":e;p(z)},x=e=>{e||m?.()},a=!!f,y=`${n}-error`,C=`${n}-helper`;return d(c,{gap:"tight",children:[t($,{label:r,value:s||"",onValueChange:b,onOpenChange:x,placeholder:g||l("reference.placeholder",{label:r})||`Select ${r}`,emptyMessage:l("reference.noResults")||"No results found",options:v,required:h,variant:a?"destructive":void 0,isLoading:u,clearable:!!s}),a&&d(c,{id:y,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[t("span",{children:"\u26A0"}),o]}),o&&!a&&t("p",{id:C,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:o})]})};var L=q;export{L as default};
@@ -1 +1 @@
1
- "use client";import{jsx as e}from"react/jsx-runtime";import{lazy as m,Suspense as b,useState as f,useEffect as g}from"react";import{Stack as v}from"@donotdev/components";import h from"./TextAreaComponent";const p=m(()=>typeof window<"u"?import("./internal/TiptapEditor").catch(()=>({default:()=>null})):Promise.resolve({default:()=>null})),x=({label:l,value:a="",onChange:r,error:s,helperText:o,required:d,disabled:t,placeholder:c,className:n})=>{const[i,u]=f(!1);return g(()=>{u(!0)},[]),i?e(v,{gap:"tight",children:e(b,{fallback:e(h,{label:l,value:a,onChange:r,error:s,helperText:o,required:d,disabled:t,placeholder:c,className:n}),children:p?e(p,{label:l,value:a,onChange:r,error:s,helperText:o,required:d,disabled:t,placeholder:c,className:n}):e(h,{label:l,value:a,onChange:r,error:s,helperText:o,required:d,disabled:t,placeholder:c,className:n})})}):e(h,{label:l,value:a,onChange:r,error:s,helperText:o,required:d,disabled:t,placeholder:c,className:n})};var C=x;export{C as default};
1
+ "use client";import{jsx as e}from"react/jsx-runtime";import{lazy as m,Suspense as b,useState as f,useEffect as g}from"react";import{Stack as v}from"@donotdev/components";import n from"./TextAreaComponent";const p=m(()=>typeof window<"u"?import("./internal/TiptapEditor").catch(()=>({default:()=>null})):Promise.resolve({default:()=>null})),x=({label:l,value:a="",onChange:r,error:s,helperText:o,required:d,disabled:t,placeholder:i,className:u})=>{const[c,h]=f(!1);return g(()=>{h(!0)},[]),c?e(v,{gap:"tight",children:e(b,{fallback:e(n,{label:l,value:a,onChange:r,error:s,helperText:o,required:d,disabled:t,placeholder:i,className:u}),children:p?e(p,{label:l,value:a,onChange:r,error:s,helperText:o,required:d,disabled:t,placeholder:i,className:u}):e(n,{label:l,value:a,onChange:r,error:s,helperText:o,required:d,disabled:t,placeholder:i,className:u})})}):e(n,{label:l,value:a,onChange:r,error:s,helperText:o,required:d,disabled:t,placeholder:i,className:u})};var C=x;export{C as default};
@@ -1 +1 @@
1
- import{jsxs as e,jsx as c}from"react/jsx-runtime";import{Switch as k,Text as r,Stack as n}from"@donotdev/components";const p=({label:a,checked:d=!1,onChange:l,uncheckedLabel:h,checkedLabel:i,helperText:t})=>{const s=o=>{l&&l({target:{checked:o}})};return e(n,{gap:"tight",children:[e(n,{direction:"row",align:"center",style:{flexWrap:"wrap"},children:[e(r,{level:"body",textAlign:"start",children:[a,":"]}),c(k,{checked:d,onCheckedChange:s,"aria-label":a,variant:"muted",uncheckedLabel:h,checkedLabel:i})]}),t&&c(r,{as:"p",variant:"muted",level:"small",children:t})]})};var g=p;export{g as default};
1
+ import{jsxs as e,jsx as r}from"react/jsx-runtime";import{Switch as k,Text as l,Stack as n}from"@donotdev/components";const p=({label:a,checked:d=!1,onChange:t,uncheckedLabel:h,checkedLabel:s,helperText:c})=>{const i=o=>{t&&t({target:{checked:o}})};return e(n,{gap:"tight",children:[e(n,{direction:"row",align:"center",style:{flexWrap:"wrap"},children:[e(l,{level:"body",textAlign:"start",children:[a,":"]}),r(k,{checked:d,onCheckedChange:i,"aria-label":a,variant:"muted",uncheckedLabel:h,checkedLabel:s})]}),c&&r(l,{as:"p",variant:"muted",level:"small",children:c})]})};var g=p;export{g as default};
@@ -1 +1 @@
1
- "use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import{useState as L,useId as N,useRef as F,useEffect as j}from"react";import{Textarea as q,FloatingLabel as A,Spinner as k,cn as m,Stack as p}from"@donotdev/components";const B=({label:x,value:o="",onChange:b,error:h,helperText:s,rows:y=3,loading:n=!1,maxLength:r,showCharCount:v=!1,autoResize:i=!1,required:z=!1,disabled:g=!1,className:$,...w})=>{const e=N(),[I,f]=L(!1),d=F(null),a=!!h,c=o.length,S=r&&c>r*.8,C=r&&c>r;return j(()=>{if(i&&d.current){const u=d.current;u.style.height="auto",u.style.height=`${u.scrollHeight}px`}},[o,i]),l(p,{gap:"tight",children:[t(A,{htmlFor:e,label:x,disabled:g||n,required:z,children:l("div",{className:"dndev-relative",children:[t(q,{ref:d,id:e,value:o,onChange:b,onFocus:()=>f(!0),onBlur:()=>f(!1),disabled:g||n,maxLength:r,rows:i?1:y,bare:!0,"aria-describedby":m(a&&`${e}-error`,s&&!a&&`${e}-helper`,v&&`${e}-count`),"aria-invalid":a,className:m("dndev-w-full",i&&"dndev-overflow-hidden",$),"data-variant":a?"destructive":void 0,style:{resize:i?"none":void 0},...w}),n&&t("div",{className:"dndev-absolute",style:{right:"var(--gap-md)",top:"var(--gap-md)"},children:t(k,{"aria-label":"Loading"})})]})}),v&&r&&l("div",{id:`${e}-count`,style:{fontSize:"var(--font-size-xs)",textAlign:"right",color:C?"var(--destructive-foreground)":S?"var(--warning)":"var(--muted-foreground)"},children:[c,"/",r]}),a&&l(p,{as:"p",id:`${e}-error`,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[t("span",{children:"\u26A0"}),h]}),s&&!a&&t("p",{id:`${e}-helper`,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:s})]})};var E=B;export{E as default};
1
+ "use client";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{useState as L,useId as N,useRef as F,useEffect as j}from"react";import{Textarea as q,FloatingLabel as A,Spinner as k,cn as m,Stack as p}from"@donotdev/components";const B=({label:x,value:o="",onChange:b,error:h,helperText:s,rows:y=3,loading:l=!1,maxLength:r,showCharCount:v=!1,autoResize:i=!1,required:z=!1,disabled:g=!1,className:w,...S})=>{const e=N(),[I,f]=L(!1),d=F(null),a=!!h,c=o.length,$=r&&c>r*.8,C=r&&c>r;return j(()=>{if(i&&d.current){const u=d.current;u.style.height="auto",u.style.height=`${u.scrollHeight}px`}},[o,i]),n(p,{gap:"tight",children:[t(A,{htmlFor:e,label:x,disabled:g||l,required:z,children:n("div",{className:"dndev-relative",children:[t(q,{ref:d,id:e,value:o,onChange:b,onFocus:()=>f(!0),onBlur:()=>f(!1),disabled:g||l,maxLength:r,rows:i?1:y,bare:!0,"aria-describedby":m(a&&`${e}-error`,s&&!a&&`${e}-helper`,v&&`${e}-count`),"aria-invalid":a,className:m("dndev-w-full",i&&"dndev-overflow-hidden",w),"data-variant":a?"destructive":void 0,style:{resize:i?"none":void 0},...S}),l&&t("div",{className:"dndev-absolute",style:{right:"var(--gap-md)",top:"var(--gap-md)"},children:t(k,{"aria-label":"Loading"})})]})}),v&&r&&n("div",{id:`${e}-count`,style:{fontSize:"var(--font-size-xs)",textAlign:"right",color:C?"var(--destructive-foreground)":$?"var(--warning)":"var(--muted-foreground)"},children:[c,"/",r]}),a&&n(p,{as:"p",id:`${e}-error`,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[t("span",{children:"\u26A0"}),h]}),s&&!a&&t("p",{id:`${e}-helper`,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:s})]})};var E=B;export{E as default};
@@ -1 +1 @@
1
- "use client";import{jsx as n,jsxs as o}from"react/jsx-runtime";import{useId as w}from"react";import{Input as C,cn as c,Stack as u}from"@donotdev/components";const S=({label:h,value:d="",onChange:v,error:l,helperText:a,type:g="text",loading:f=!1,maxLength:e,showCharCount:s=!1,required:p=!1,disabled:m=!1,className:x,...b})=>{const r=w(),t=!!l,i=d.length,z=e&&i>e*.8,$=e&&i>e,{children:q,...y}=b;return o(u,{gap:"tight",children:[n(C,{id:r,type:g,value:d,onChange:v,label:h,disabled:m||f,maxLength:e,required:p,"aria-describedby":c(t&&`${r}-error`,a&&!t&&`${r}-helper`,s&&`${r}-count`),"aria-invalid":t,className:c("dndev-w-full",x),"data-variant":t?"destructive":void 0,...y}),s&&e&&o("div",{id:`${r}-count`,style:{fontSize:"var(--font-size-xs)",textAlign:"right",color:$?"var(--destructive-foreground)":z?"var(--warning)":"var(--muted-foreground)"},children:[i,"/",e]}),t&&o(u,{id:`${r}-error`,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[n("span",{children:"\u26A0"}),l]}),a&&!t&&n("p",{id:`${r}-helper`,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:a})]})};var j=S;export{j as default};
1
+ "use client";import{jsx as n,jsxs as o}from"react/jsx-runtime";import{useId as w}from"react";import{Input as C,cn as c,Stack as u}from"@donotdev/components";const S=({label:h,value:d="",onChange:v,error:l,helperText:a,type:g="text",loading:f=!1,maxLength:r,showCharCount:s=!1,required:p=!1,disabled:m=!1,className:x,...y})=>{const e=w(),t=!!l,i=d.length,z=r&&i>r*.8,$=r&&i>r,{children:q,...b}=y;return o(u,{gap:"tight",children:[n(C,{id:e,type:g,value:d,onChange:v,label:h,disabled:m||f,maxLength:r,required:p,"aria-describedby":c(t&&`${e}-error`,a&&!t&&`${e}-helper`,s&&`${e}-count`),"aria-invalid":t,className:c("dndev-w-full",x),"data-variant":t?"destructive":void 0,...b}),s&&r&&o("div",{id:`${e}-count`,style:{fontSize:"var(--font-size-xs)",textAlign:"right",color:$?"var(--destructive-foreground)":z?"var(--warning)":"var(--muted-foreground)"},children:[i,"/",r]}),t&&o(u,{id:`${e}-error`,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[n("span",{children:"\u26A0"}),l]}),a&&!t&&n("p",{id:`${e}-helper`,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:a})]})};var j=S;export{j as default};
@@ -1 +1 @@
1
- import{jsx as u}from"react/jsx-runtime";import d from"./DateFieldComponent";const g=({label:a,value:e,onChange:r,error:o,helperText:l,mode:n="datetime-local",required:i})=>{const m=e?new Date(e).toISOString():"";return u(d,{label:a,value:m,onChange:t=>{if(t){const s={target:{value:new Date(t).toISOString()}};r(s)}else r({target:{value:""}})},error:o,helperText:l,mode:n,required:i})};var p=g;export{p as default};
1
+ import{jsx as s}from"react/jsx-runtime";import d from"./DateFieldComponent";const g=({label:a,value:e,onChange:r,error:o,helperText:l,mode:n="datetime-local",required:u})=>{const i=e?new Date(e).toISOString():"";return s(d,{label:a,value:i,onChange:t=>{if(t){const m={target:{value:new Date(t).toISOString()}};r(m)}else r({target:{value:""}})},error:o,helperText:l,mode:n,required:u})};var p=g;export{p as default};
@@ -1,4 +1,4 @@
1
- "use client";import{jsx as i,jsxs as m}from"react/jsx-runtime";import{useEffect as u,useState as f}from"react";import{Stack as P}from"@donotdev/components";const x=({label:d,value:r="",onChange:s,error:e,helperText:n,required:o,disabled:a,placeholder:l,className:c,modules:g})=>{const{useEditor:v,EditorContent:p,StarterKit:h,Placeholder:b}=g,t=v({extensions:[h.configure({heading:{levels:[1,2,3]}}),b.configure({placeholder:l||"Start typing..."})],content:r,editable:!a,onUpdate:({editor:y})=>{const M={target:{value:y.getHTML()}};s(M)}});return u(()=>{t&&r!==t.getHTML()&&t.commands.setContent(r||"")},[r,t]),t?m(P,{gap:"tight",children:[m("label",{style:{fontSize:"var(--font-size-sm)",fontWeight:500,color:e?"var(--destructive-foreground)":"var(--foreground)"},children:[d,o&&i("span",{style:{color:"var(--destructive)"},children:" *"})]}),i("div",{className:c,"data-variant":e?"destructive":void 0,style:{border:"var(--border-hairline) solid",borderColor:e?"var(--destructive)":"var(--line-2)",borderRadius:"var(--radius-interactive)",padding:"var(--gap-md)",minHeight:"200px",backgroundColor:a?"var(--muted)":"transparent",opacity:a?"var(--opacity-muted)":void 0},children:i(p,{editor:t})}),n&&i("p",{style:{fontSize:"var(--font-size-xs)",color:e?"var(--destructive-foreground)":"var(--muted-foreground)"},children:n}),i("style",{children:`
1
+ "use client";import{jsx as i,jsxs as m}from"react/jsx-runtime";import{useEffect as u,useState as f}from"react";import{Stack as M}from"@donotdev/components";const x=({label:s,value:r="",onChange:d,error:e,helperText:n,required:o,disabled:a,placeholder:l,className:c,modules:g})=>{const{useEditor:v,EditorContent:p,StarterKit:h,Placeholder:b}=g,t=v({extensions:[h.configure({heading:{levels:[1,2,3]}}),b.configure({placeholder:l||"Start typing..."})],content:r,editable:!a,onUpdate:({editor:P})=>{const y={target:{value:P.getHTML()}};d(y)}});return u(()=>{t&&r!==t.getHTML()&&t.commands.setContent(r||"")},[r,t]),t?m(M,{gap:"tight",children:[m("label",{style:{fontSize:"var(--font-size-sm)",fontWeight:500,color:e?"var(--destructive-foreground)":"var(--foreground)"},children:[s,o&&i("span",{style:{color:"var(--destructive)"},children:" *"})]}),i("div",{className:c,"data-variant":e?"destructive":void 0,style:{border:"var(--border-hairline) solid",borderColor:e?"var(--destructive)":"var(--line-2)",borderRadius:"var(--radius-interactive)",padding:"var(--gap-md)",minHeight:"200px",backgroundColor:a?"var(--muted)":"transparent",opacity:a?"var(--opacity-muted)":void 0},children:i(p,{editor:t})}),n&&i("p",{style:{fontSize:"var(--font-size-xs)",color:e?"var(--destructive-foreground)":"var(--muted-foreground)"},children:n}),i("style",{children:`
2
2
  .ProseMirror {
3
3
  outline: none;
4
4
  min-height: 150px;
@@ -49,4 +49,4 @@
49
49
  margin: 0.5em 0;
50
50
  color: var(--muted-foreground);
51
51
  }
52
- `})]}):null},z=d=>{const[r,s]=f(null),[e,n]=f(!1);return u(()=>{r||e||(async()=>{try{const[{useEditor:o,EditorContent:a},l,c]=await Promise.all([import("@tiptap/react"),import("@tiptap/starter-kit"),import("@tiptap/extension-placeholder")]);s({useEditor:o,EditorContent:a,StarterKit:l.default,Placeholder:c.default})}catch(o){o instanceof Error&&(o.message.includes("Cannot find module '@tiptap")||o.message.includes("Failed to fetch dynamically imported module")),n(!0)}})()},[r,e]),e||!r?null:i(x,{...d,modules:r})};var C=z;export{C as default};
52
+ `})]}):null},z=s=>{const[r,d]=f(null),[e,n]=f(!1);return u(()=>{r||e||(async()=>{try{const[{useEditor:o,EditorContent:a},l,c]=await Promise.all([import("@tiptap/react"),import("@tiptap/starter-kit"),import("@tiptap/extension-placeholder")]);d({useEditor:o,EditorContent:a,StarterKit:l.default,Placeholder:c.default})}catch(o){o instanceof Error&&(o.message.includes("Cannot find module '@tiptap")||o.message.includes("Failed to fetch dynamically imported module")),n(!0)}})()},[r,e]),e||!r?null:i(x,{...s,modules:r})};var C=z;export{C as default};
@@ -1 +1 @@
1
- "use client";import{jsx as e,Fragment as re,jsxs as a}from"react/jsx-runtime";import{ChevronLeft as le,ChevronRight as ne,RotateCcw as M,RotateCw as B,Trash2 as de,Check as ce,Undo2 as se,ZoomIn as ge,ZoomOut as me,Maximize2 as pe,Grid3X3 as he}from"lucide-react";import{useCallback as g,useEffect as H,useState as c,useRef as ue}from"react";import ve from"react-easy-crop";import{Button as o,BUTTON_VARIANT as r,Sheet as fe,Stack as n,Text as u,Slider as F,ToggleGroup as ye}from"@donotdev/components";import{useTranslation as we}from"@donotdev/core";import{processImage as Ce}from"../../../utils/imageProcessing";import{createPreviewURL as be,revokePreviewURL as ke}from"../../../utils/imageUtils";const xe={free:void 0,"1:1":1,"4:3":4/3,"16:9":16/9,"3:2":3/2};function Y({images:h,selectedIndex:l,open:R,onClose:T,onUpdate:D,onDelete:E,onNavigate:m,multiple:L=!1}){const{t}=we("crud"),[Z,C]=c({x:0,y:0}),[v,p]=c(1),[b,f]=c(0),[N,$]=c(null),[S,z]=c("free"),[k,q]=c(!0),[y,w]=c(!1),[A,G]=c(!1),[X,x]=c(!1),I=ue({crop:{x:0,y:0},zoom:1,rotation:0}),d=h[l],U=L&&l>0,O=L&&l<h.length-1;H(()=>{if(d){const i={x:0,y:0};C(i),p(1),f(d.rotation*90),z("free"),w(!1),x(!1),I.current={crop:i,zoom:1,rotation:d.rotation*90}}},[d]);const _=g((i,s)=>{$(s)},[]),J=g(()=>{C(I.current.crop),p(I.current.zoom),f(I.current.rotation)},[]),P=g(()=>{f(i=>(i-90+360)%360)},[]),V=g(()=>{f(i=>(i+90)%360)},[]),K=g(()=>{p(i=>Math.min(i+.25,3))},[]),Q=g(()=>{p(i=>Math.max(i-.25,1))},[]),ee=g(()=>{p(1),C({x:0,y:0})},[]),ie=async()=>{if(!(!d||!N)){G(!0);try{const i=await Ce(d.file,{crop:N,maxWidth:2048,maxHeight:2048,quality:.95}),s=new File([i.fullBlob],d.file.name,{type:"image/webp"}),oe=be(s);d.previewURL.startsWith("blob:")&&ke(d.previewURL),D(l,{file:s,previewURL:oe,uploaded:null,uploadProgress:null,error:null,rotation:0}),w(!1)}catch{}finally{G(!1)}}},te=g(()=>{E(l),x(!1),h.length===1?T():l>=h.length-1&&m(l-1)},[l,h.length,E,T,m]);if(H(()=>{if(!R)return;const i=s=>{s.key==="ArrowLeft"&&U?m(l-1):s.key==="ArrowRight"&&O?m(l+1):s.key==="Escape"&&y&&w(!1)};return window.addEventListener("keydown",i),()=>window.removeEventListener("keydown",i)},[R,U,O,l,m,y]),!d)return null;const W=d.uploadProgress!==null&&d.uploadProgress<100,j=d.uploaded?.fullUrl||d.previewURL,ae=L?t("image.editor.titleWithIndex",{current:l+1,total:h.length}):t("image.editor.title");return e(fe,{open:R,onOpenChange:i=>!i&&T(),side:"right",title:ae,description:t("image.editor.description"),noSwipe:y,children:a(n,{gap:"large",style:{height:"100%"},children:[e("div",{style:{position:"relative",flex:1,minHeight:300,backgroundColor:"var(--surface-muted)",borderRadius:"var(--radius-lg)",overflow:"hidden"},children:y?e(ve,{image:j,crop:Z,zoom:v,rotation:b,aspect:xe[S],onCropChange:C,onCropComplete:_,onZoomChange:p,showGrid:k,style:{containerStyle:{position:"absolute",top:0,left:0,right:0,bottom:0},cropAreaStyle:{border:"2px solid var(--primary)",boxShadow:"0 0 0 9999px rgba(0,0,0,0.5)"}}}):a(re,{children:[U&&e(o,{variant:r.GHOST,icon:le,onClick:()=>m(l-1),"aria-label":t("image.editor.previousImage"),style:{position:"absolute",left:"var(--gap-sm)",top:"50%",transform:"translateY(-50%)",zIndex:10,backgroundColor:"rgba(0,0,0,0.3)",color:"white"}}),e("img",{src:j,alt:`Image ${l+1}`,style:{width:"100%",height:"100%",objectFit:"contain",transform:`rotate(${b}deg)`,transition:"transform var(--dur-normal) var(--ease-out)"}}),O&&e(o,{variant:r.GHOST,icon:ne,onClick:()=>m(l+1),"aria-label":t("image.editor.nextImage"),style:{position:"absolute",right:"var(--gap-sm)",top:"50%",transform:"translateY(-50%)",zIndex:10,backgroundColor:"rgba(0,0,0,0.3)",color:"white"}})]})}),y?a(n,{children:[a(n,{gap:"tight",children:[e(u,{level:"small",variant:"muted",children:t("image.editor.aspectRatio")}),e(ye,{type:"single",value:S,onValueChange:i=>i&&z(i),items:[{value:"free",label:t("image.editor.aspectFree")},{value:"1:1",label:"1:1"},{value:"4:3",label:"4:3"},{value:"16:9",label:"16:9"}]})]}),a(n,{gap:"tight",children:[a(n,{direction:"row",justify:"between",align:"center",children:[e(u,{level:"small",variant:"muted",children:t("image.editor.zoom")}),a(u,{level:"small",variant:"muted",children:[Math.round(v*100),"%"]})]}),a(n,{direction:"row",gap:"tight",align:"center",children:[e(o,{variant:r.OUTLINE,icon:me,display:"compact",onClick:Q,disabled:v<=1}),e(F,{value:[v],min:1,max:3,step:.05,onValueChange:i=>p(i[0]??1),style:{flex:1}}),e(o,{variant:r.OUTLINE,icon:ge,display:"compact",onClick:K,disabled:v>=3})]})]}),a(n,{gap:"tight",children:[a(n,{direction:"row",justify:"between",align:"center",children:[e(u,{level:"small",variant:"muted",children:t("image.editor.rotation")}),a(u,{level:"small",variant:"muted",children:[b,"\xB0"]})]}),a(n,{direction:"row",gap:"tight",align:"center",children:[e(o,{variant:r.OUTLINE,icon:M,display:"compact",onClick:P,tooltip:t("image.editor.rotateLeft")}),e(F,{value:[b],min:0,max:360,step:1,onValueChange:i=>f(i[0]??0),style:{flex:1}}),e(o,{variant:r.OUTLINE,icon:B,display:"compact",onClick:V,tooltip:t("image.editor.rotateRight")})]})]}),a(n,{direction:"row",gap:"tight",children:[e(o,{variant:r.OUTLINE,icon:pe,display:"compact",onClick:ee,tooltip:t("image.editor.fitToView")}),e(o,{variant:r.OUTLINE,icon:he,display:"compact",onClick:()=>q(!k),tooltip:t(k?"image.editor.hideGrid":"image.editor.showGrid"),"data-active":k||void 0}),e(o,{variant:r.OUTLINE,icon:se,display:"compact",onClick:J,tooltip:t("image.editor.reset")})]}),a(n,{direction:"row",style:{marginTop:"var(--gap-md)"},children:[e(o,{variant:r.OUTLINE,onClick:()=>w(!1),fullWidth:!0,children:t("image.editor.cancel")}),e(o,{variant:r.PRIMARY,icon:ce,onClick:ie,disabled:A,fullWidth:!0,children:t(A?"image.editor.processing":"image.editor.apply")})]})]}):a(n,{children:[a(n,{direction:"row",gap:"tight",justify:"center",children:[e(o,{variant:r.OUTLINE,icon:M,display:"compact",onClick:P,tooltip:t("image.editor.rotateLeft")}),e(o,{variant:r.PRIMARY,onClick:()=>w(!0),disabled:W,children:t("image.editor.editButton")}),e(o,{variant:r.OUTLINE,icon:B,display:"compact",onClick:V,tooltip:t("image.editor.rotateRight")})]}),X?a(n,{style:{border:"1px solid var(--destructive)",padding:"var(--gap-md)",borderRadius:"var(--radius-md)"},children:[e(u,{variant:"destructive",level:"small",textAlign:"center",children:t("image.editor.deleteConfirm")}),a(n,{direction:"row",gap:"tight",children:[e(o,{variant:r.OUTLINE,onClick:()=>x(!1),fullWidth:!0,children:t("image.editor.cancel")}),e(o,{variant:r.DESTRUCTIVE,onClick:te,fullWidth:!0,children:t("actions.delete")})]})]}):e(o,{variant:r.GHOST,icon:de,onClick:()=>x(!0),disabled:W,style:{color:"var(--destructive)"},children:t("image.editor.deleteImage")})]})]})})}var Ie=Y;export{Y as ImageViewerDialog,Ie as default};
1
+ "use client";import{jsx as e,Fragment as re,jsxs as a}from"react/jsx-runtime";import{ChevronLeft as ne,ChevronRight as le,RotateCcw as M,RotateCw as B,Trash2 as de,Check as ce,Undo2 as se,ZoomIn as ge,ZoomOut as me,Maximize2 as pe,Grid3X3 as he}from"lucide-react";import{useCallback as g,useEffect as H,useState as c,useRef as ue}from"react";import ve from"react-easy-crop";import{Button as o,BUTTON_VARIANT as r,Sheet as fe,Stack as l,Text as u,Slider as F,ToggleGroup as ye}from"@donotdev/components";import{useTranslation as we}from"@donotdev/core";import{processImage as Ce}from"../../../utils/imageProcessing";import{createPreviewURL as be,revokePreviewURL as ke}from"../../../utils/imageUtils";const xe={free:void 0,"1:1":1,"4:3":4/3,"16:9":16/9,"3:2":3/2};function Y({images:h,selectedIndex:n,open:T,onClose:U,onUpdate:Z,onDelete:E,onNavigate:m,multiple:L=!1}){const{t}=we("crud"),[D,C]=c({x:0,y:0}),[v,p]=c(1),[b,f]=c(0),[N,$]=c(null),[S,z]=c("free"),[k,q]=c(!0),[y,w]=c(!1),[A,G]=c(!1),[X,x]=c(!1),I=ue({crop:{x:0,y:0},zoom:1,rotation:0}),d=h[n],R=L&&n>0,O=L&&n<h.length-1;H(()=>{if(d){const i={x:0,y:0};C(i),p(1),f(d.rotation*90),z("free"),w(!1),x(!1),I.current={crop:i,zoom:1,rotation:d.rotation*90}}},[d]);const _=g((i,s)=>{$(s)},[]),J=g(()=>{C(I.current.crop),p(I.current.zoom),f(I.current.rotation)},[]),P=g(()=>{f(i=>(i-90+360)%360)},[]),V=g(()=>{f(i=>(i+90)%360)},[]),K=g(()=>{p(i=>Math.min(i+.25,3))},[]),Q=g(()=>{p(i=>Math.max(i-.25,1))},[]),ee=g(()=>{p(1),C({x:0,y:0})},[]),ie=async()=>{if(!(!d||!N)){G(!0);try{const i=await Ce(d.file,{crop:N,maxWidth:2048,maxHeight:2048,quality:.95}),s=new File([i.fullBlob],d.file.name,{type:"image/webp"}),oe=be(s);d.previewURL.startsWith("blob:")&&ke(d.previewURL),Z(n,{file:s,previewURL:oe,uploaded:null,uploadProgress:null,error:null,rotation:0}),w(!1)}catch{}finally{G(!1)}}},te=g(()=>{E(n),x(!1),h.length===1?U():n>=h.length-1&&m(n-1)},[n,h.length,E,U,m]);if(H(()=>{if(!T)return;const i=s=>{s.key==="ArrowLeft"&&R?m(n-1):s.key==="ArrowRight"&&O?m(n+1):s.key==="Escape"&&y&&w(!1)};return window.addEventListener("keydown",i),()=>window.removeEventListener("keydown",i)},[T,R,O,n,m,y]),!d)return null;const W=d.uploadProgress!==null&&d.uploadProgress<100,j=d.uploaded?.fullUrl||d.previewURL,ae=L?t("image.editor.titleWithIndex",{current:n+1,total:h.length}):t("image.editor.title");return e(fe,{open:T,onOpenChange:i=>!i&&U(),side:"right",title:ae,description:t("image.editor.description"),noSwipe:y,children:a(l,{gap:"large",style:{height:"100%"},children:[e("div",{style:{position:"relative",flex:1,minHeight:300,backgroundColor:"var(--surface-muted)",borderRadius:"var(--radius-lg)",overflow:"hidden"},children:y?e(ve,{image:j,crop:D,zoom:v,rotation:b,aspect:xe[S],onCropChange:C,onCropComplete:_,onZoomChange:p,showGrid:k,style:{containerStyle:{position:"absolute",top:0,left:0,right:0,bottom:0},cropAreaStyle:{border:"2px solid var(--primary)",boxShadow:"0 0 0 9999px rgba(0,0,0,0.5)"}}}):a(re,{children:[R&&e(o,{variant:r.GHOST,icon:ne,onClick:()=>m(n-1),"aria-label":t("image.editor.previousImage"),style:{position:"absolute",left:"var(--gap-sm)",top:"50%",transform:"translateY(-50%)",zIndex:10,backgroundColor:"rgba(0,0,0,0.3)",color:"white"}}),e("img",{src:j,alt:`Image ${n+1}`,style:{width:"100%",height:"100%",objectFit:"contain",transform:`rotate(${b}deg)`,transition:"transform var(--dur-normal) var(--ease-out)"}}),O&&e(o,{variant:r.GHOST,icon:le,onClick:()=>m(n+1),"aria-label":t("image.editor.nextImage"),style:{position:"absolute",right:"var(--gap-sm)",top:"50%",transform:"translateY(-50%)",zIndex:10,backgroundColor:"rgba(0,0,0,0.3)",color:"white"}})]})}),y?a(l,{children:[a(l,{gap:"tight",children:[e(u,{level:"small",variant:"muted",children:t("image.editor.aspectRatio")}),e(ye,{type:"single",value:S,onValueChange:i=>i&&z(i),items:[{value:"free",label:t("image.editor.aspectFree")},{value:"1:1",label:"1:1"},{value:"4:3",label:"4:3"},{value:"16:9",label:"16:9"}]})]}),a(l,{gap:"tight",children:[a(l,{direction:"row",justify:"between",align:"center",children:[e(u,{level:"small",variant:"muted",children:t("image.editor.zoom")}),a(u,{level:"small",variant:"muted",children:[Math.round(v*100),"%"]})]}),a(l,{direction:"row",gap:"tight",align:"center",children:[e(o,{variant:r.OUTLINE,icon:me,display:"compact",onClick:Q,disabled:v<=1}),e(F,{value:[v],min:1,max:3,step:.05,onValueChange:i=>p(i[0]??1),style:{flex:1}}),e(o,{variant:r.OUTLINE,icon:ge,display:"compact",onClick:K,disabled:v>=3})]})]}),a(l,{gap:"tight",children:[a(l,{direction:"row",justify:"between",align:"center",children:[e(u,{level:"small",variant:"muted",children:t("image.editor.rotation")}),a(u,{level:"small",variant:"muted",children:[b,"\xB0"]})]}),a(l,{direction:"row",gap:"tight",align:"center",children:[e(o,{variant:r.OUTLINE,icon:M,display:"compact",onClick:P,tooltip:t("image.editor.rotateLeft")}),e(F,{value:[b],min:0,max:360,step:1,onValueChange:i=>f(i[0]??0),style:{flex:1}}),e(o,{variant:r.OUTLINE,icon:B,display:"compact",onClick:V,tooltip:t("image.editor.rotateRight")})]})]}),a(l,{direction:"row",gap:"tight",children:[e(o,{variant:r.OUTLINE,icon:pe,display:"compact",onClick:ee,tooltip:t("image.editor.fitToView")}),e(o,{variant:r.OUTLINE,icon:he,display:"compact",onClick:()=>q(!k),tooltip:t(k?"image.editor.hideGrid":"image.editor.showGrid"),"data-active":k||void 0}),e(o,{variant:r.OUTLINE,icon:se,display:"compact",onClick:J,tooltip:t("image.editor.reset")})]}),a(l,{direction:"row",style:{marginTop:"var(--gap-md)"},children:[e(o,{variant:r.OUTLINE,onClick:()=>w(!1),fullWidth:!0,children:t("image.editor.cancel")}),e(o,{variant:r.PRIMARY,icon:ce,onClick:ie,disabled:A,fullWidth:!0,children:t(A?"image.editor.processing":"image.editor.apply")})]})]}):a(l,{children:[a(l,{direction:"row",gap:"tight",justify:"center",children:[e(o,{variant:r.OUTLINE,icon:M,display:"compact",onClick:P,tooltip:t("image.editor.rotateLeft")}),e(o,{variant:r.PRIMARY,onClick:()=>w(!0),disabled:W,children:t("image.editor.editButton")}),e(o,{variant:r.OUTLINE,icon:B,display:"compact",onClick:V,tooltip:t("image.editor.rotateRight")})]}),X?a(l,{style:{border:"1px solid var(--destructive)",padding:"var(--gap-md)",borderRadius:"var(--radius-md)"},children:[e(u,{variant:"destructive",level:"small",textAlign:"center",children:t("image.editor.deleteConfirm")}),a(l,{direction:"row",gap:"tight",children:[e(o,{variant:r.OUTLINE,onClick:()=>x(!1),fullWidth:!0,children:t("image.editor.cancel")}),e(o,{variant:r.DESTRUCTIVE,onClick:te,fullWidth:!0,children:t("actions.delete")})]})]}):e(o,{variant:r.GHOST,icon:de,onClick:()=>x(!0),disabled:W,style:{color:"var(--destructive)"},children:t("image.editor.deleteImage")})]})]})})}var Ie=Y;export{Y as ImageViewerDialog,Ie as default};
@@ -1 +1 @@
1
- "use client";import{getFieldRegistry as a}from"./FieldRegistry";var r=null,i=!1,n=null;function l(t){n=t}function e(){return r||(r=new Map),i||(i=!0,n?.(r)),r}function s(t){return e().get(t)}function u(t){return a().getFilterType(t)||e().get(t)?.filterType}function g(t){return a().getDisplayFormatter(t)||e().get(t)?.displayFormatter}function o(t){return a().isFilterable(t)?!0:e().get(t)?.filterable??!1}function p(t){return e().get(t)?.valueType}function y(){e().clear()}export{y as clearFieldTypeRegistry,g as getDisplayFormatter,s as getFieldTypeMetadata,u as getFilterType,e as getMetadataRegistry,p as getValueType,o as isFilterable,l as setRegistrationInit};
1
+ "use client";import{getFieldRegistry as a}from"./FieldRegistry";var r=null,i=!1,n=null;function l(e){n=e}function t(){return r||(r=new Map),i||(i=!0,n?.(r)),r}function s(e){return t().get(e)}function u(e){return a().getFilterType(e)||t().get(e)?.filterType}function g(e){return a().getDisplayFormatter(e)||t().get(e)?.displayFormatter}function o(e){return a().isFilterable(e)?!0:t().get(e)?.filterable??!1}function p(e){return t().get(e)?.valueType}function y(){t().clear()}export{y as clearFieldTypeRegistry,g as getDisplayFormatter,s as getFieldTypeMetadata,u as getFilterType,t as getMetadataRegistry,p as getValueType,o as isFilterable,l as setRegistrationInit};
@@ -1 +1 @@
1
- "use client";import{useController as o}from"react-hook-form";function r(e){return o(e)}export{r as useController};
1
+ "use client";import{useController as o}from"react-hook-form";function e(r){return o(r)}export{e as useController};
@@ -1 +1 @@
1
- "use client";import{useMemo as o,useCallback as p}from"react";import{useController as v}from"./useController";import{formatValue as h}from"../../components/DisplayFieldRenderer";import{isFieldEditable as g}from"../utils";function D(a,i){const{entity:b,operation:r,viewerRole:n,fields:u}=a,l=b.fields[i],e=o(()=>l?{...l,name:l.name||i,label:l.label||i}:{name:i,type:"text",label:i,visibility:"user"},[i,l]),s=o(()=>u.some(d=>d.name===i),[u,i]),c=o(()=>!s||r==="edit"&&e.visibility==="technical"&&e.editable===void 0?!1:g(e.editable,n,r),[s,r,e.visibility,e.editable,n]),{field:m,fieldState:t}=v({name:i,control:a.control}),f=o(()=>({error:t.error?.message,touched:t.isTouched,isDirty:t.isDirty}),[t.error?.message,t.isTouched,t.isDirty]),y=p(d=>h(m.value,e,a.t,d),[m.value,e,a.t]);return{field:m,meta:f,config:e,isEditable:c,isVisible:s,display:y}}export{D as useEntityField};
1
+ "use client";import{useMemo as o,useCallback as p}from"react";import{useController as v}from"./useController";import{formatValue as h}from"../../components/DisplayFieldRenderer";import{isFieldEditable as g}from"../utils";function D(s,e){const{entity:b,operation:r,viewerRole:d,fields:u}=s,l=b.fields[e],i=o(()=>l?{...l,name:l.name||e,label:l.label||e}:{name:e,type:"text",label:e,visibility:"user"},[e,l]),a=o(()=>u.some(n=>n.name===e),[u,e]),c=o(()=>!a||r==="edit"&&i.visibility==="technical"&&i.editable===void 0?!1:g(i.editable,d,r),[a,r,i.visibility,i.editable,d]),{field:m,fieldState:t}=v({name:e,control:s.control}),f=o(()=>({error:t.error?.message,touched:t.isTouched,isDirty:t.isDirty}),[t.error?.message,t.isTouched,t.isDirty]),y=p(n=>h(m.value,i,s.t,n),[m.value,i,s.t]);return{field:m,meta:f,config:i,isEditable:c,isVisible:a,display:y}}export{D as useEntityField};
@@ -1 +1 @@
1
- {"version":3,"file":"useEntityForm.d.ts","sourceRoot":"","sources":["../../../src/forms/hooks/useEntityForm.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAW7C,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AA2ClB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACpC,gBAAgB,CAAC,CAAC,CAAC,CA0frB"}
1
+ {"version":3,"file":"useEntityForm.d.ts","sourceRoot":"","sources":["../../../src/forms/hooks/useEntityForm.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAW7C,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AA2ClB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACpC,gBAAgB,CAAC,CAAC,CAAC,CAmerB"}