@nice2dev/ui 1.0.25 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/NiceErrorBoundary-B91z3IjT.cjs +1 -0
- package/dist/NiceErrorBoundary-DQLk-68V.js +770 -0
- package/dist/NiceForm-8_p8P0uJ.js +5386 -0
- package/dist/NiceForm-DkVFd5Z5.cjs +382 -0
- package/dist/NiceModal-CdiLaYTg.cjs +1 -0
- package/dist/NiceModal-D6Yj67eH.js +95 -0
- package/dist/NiceModuleLifecyclePanel-Bhd8VNjU.js +6856 -0
- package/dist/NiceModuleLifecyclePanel-Cn_nB4dg.cjs +1 -0
- package/dist/NicePagination-Dnlho_8O.cjs +1 -0
- package/dist/NicePagination-kokSP8ls.js +171 -0
- package/dist/NicePinCodeInput-1YGb7l2o.cjs +696 -0
- package/dist/NicePinCodeInput-CZpYON--.js +13097 -0
- package/dist/NiceSavedQueryPanel-C6pPtOAf.js +6893 -0
- package/dist/NiceSavedQueryPanel-DOixGvLP.cjs +596 -0
- package/dist/NiceTabs-DHiA02RD.cjs +1 -0
- package/dist/NiceTabs-MBVJomax.js +1657 -0
- package/dist/NiceWindow-DUOkdKuX.js +1592 -0
- package/dist/NiceWindow-ZAAUD3LJ.cjs +1 -0
- package/dist/charts-B_lYNVMJ.cjs +761 -0
- package/dist/charts-CABhvyAA.js +4657 -0
- package/dist/charts.cjs +1 -1
- package/dist/charts.mjs +1 -1
- package/dist/core-BHZDvnBo.js +25364 -0
- package/dist/core-C7PK1L9r.cjs +122 -0
- package/dist/data-branching-BGw7O52F.js +6133 -0
- package/dist/data-branching-Dz3xLUZM.cjs +1 -0
- package/dist/data-branching.cjs +1 -1
- package/dist/data-branching.mjs +1 -1
- package/dist/data.cjs +1 -1
- package/dist/data.mjs +1 -1
- package/dist/devops-CX538_rA.js +7684 -0
- package/dist/devops-JwBTMk0A.cjs +17 -0
- package/dist/devops.cjs +1 -1
- package/dist/devops.mjs +1 -1
- package/dist/editors.cjs +1 -1
- package/dist/editors.mjs +3 -3
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.mjs +2 -2
- package/dist/index-CTe-G23X.cjs +5518 -0
- package/dist/index-DGjd42Q9.js +68223 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +75 -0
- package/dist/index.mjs +803 -797
- package/dist/lazy.cjs +1 -1
- package/dist/lazy.mjs +24 -24
- package/dist/navigation.cjs +1 -1
- package/dist/navigation.d.ts +18 -1
- package/dist/navigation.mjs +4 -4
- package/dist/no-code-CIf6wiUc.js +7133 -0
- package/dist/no-code-DSa5Yn6l.cjs +332 -0
- package/dist/no-code.cjs +1 -1
- package/dist/no-code.mjs +1 -1
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.mjs +55 -55
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
# [1.0.26] — 2026-06-07
|
|
2
|
+
|
|
3
|
+
### Entity validation builder + selectable cards
|
|
4
|
+
|
|
5
|
+
- **Validation rule engine** (`@nice2dev/ui-core`) — new declarative model
|
|
6
|
+
**`NiceFieldValidationRule`** (`required | minLength | maxLength | min | max |
|
|
7
|
+
pattern | email | url | equals | notEquals | greaterThan | lessThan |
|
|
8
|
+
matchesField | greaterThanField | lessThanField | custom`) with a conditional
|
|
9
|
+
**`when`** clause (reuses the filter model) + a runtime evaluator
|
|
10
|
+
**`evaluateValidation()`** / `evaluateValidationRule()` / `isRecordValid()`.
|
|
11
|
+
- **`NiceValidationBuilder`** (`@nice2dev/ui`) — a visual builder mirroring
|
|
12
|
+
`NiceFilterBuilder` for authoring those rules (embeds the filter builder for the
|
|
13
|
+
per-rule `when` condition).
|
|
14
|
+
- **Forms now enforce all rule types** — `NiceSchemaForm` previously only enforced
|
|
15
|
+
`required`; it now evaluates every `FormFieldValidation` type and accepts an
|
|
16
|
+
entity-level **`validationRules`** prop (cross-field + conditional). _Behavior
|
|
17
|
+
change_: forms may surface validation errors that were silently ignored before.
|
|
18
|
+
- **`NiceEntityEditor`** (`@nice2dev/ui-forms`) — a **Validation** panel per entity
|
|
19
|
+
(`entity.validations`), surfaced inside `NiceModuleEditor`'s entities tab; the
|
|
20
|
+
rules feed the generated forms.
|
|
21
|
+
- **`NiceCard` selectable + `NiceCardRadioGroup`** — `NiceCard` gains
|
|
22
|
+
`selectable`/`selected`/`value`/`onSelect`/`name` (radio role, hover/cursor/
|
|
23
|
+
selected ring, keyboard select). New `NiceCardRadioGroup` coordinates
|
|
24
|
+
single-select and reports the chosen `value` via `onChange` — for card-style
|
|
25
|
+
option pickers (e.g. the setup wizard).
|
|
26
|
+
|
|
1
27
|
# [1.0.25] — 2026-06-07
|
|
2
28
|
|
|
3
29
|
### OmniVerk UX/layout batch (7 items)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),C=require("./core-C7PK1L9r.cjs"),i=require("react"),F={info:e.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})}),success:e.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})}),warning:e.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})}),error:e.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z",clipRule:"evenodd"})})},Z=({variant:s="info",title:t,children:c,closable:r,onClose:n,icon:a,size:l="md",className:h,style:d,displayStyle:p})=>{const f=C.Hs("card",p);return e.jsxs("div",{className:`nice-alert nice-alert--${s} nice-alert--${l} nice-alert--ds-${f} ${h||""}`,style:d,role:"alert",children:[e.jsx("div",{className:`nice-alert__icon nice-alert__icon--${s}`,children:a||F[s]}),e.jsxs("div",{className:"nice-alert__content",children:[t&&e.jsx("div",{className:"nice-alert__title",children:t}),e.jsx("div",{children:c})]}),r&&e.jsx("button",{type:"button",className:"nice-alert__close",onClick:n,"aria-label":"Close",children:"✕"})]})},U=({open:s,onClose:t,title:c,position:r="right",size:n="md",children:a,footer:l,transitionDuration:h,className:d,style:p,displayStyle:f})=>{const g=C.Fs("modal",f),x=C.Hs("modal",f),{t:b}=C.Zt(),v=i.useRef(null);return C.Qs(v,s),i.useEffect(()=>{if(!s)return;const u=o=>{o.key==="Escape"&&t()};return document.addEventListener("keydown",u),document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",u),document.body.style.overflow=""}},[s,t]),s?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"nice-drawer-overlay",onMouseDown:u=>{u.target===u.currentTarget&&t()}}),e.jsxs("div",{ref:v,className:`nice-drawer nice-drawer--${r} nice-drawer--${n} nice-drawer--ds-${x} ${d||""}`,style:{...g,...p,...h!=null?{transitionDuration:`${h}ms`}:{}},role:"dialog","aria-modal":"true","aria-label":c,children:[c&&e.jsxs("div",{className:"nice-drawer__header",children:[e.jsx("h3",{className:"nice-drawer__title",children:c}),e.jsx("button",{type:"button",className:"nice-drawer__close",onClick:t,"aria-label":b("controls.close","Close"),children:e.jsx("svg",{width:"18",height:"18",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{d:"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"})})})]}),e.jsx("div",{className:"nice-drawer__body",children:a}),l&&e.jsx("div",{className:"nice-drawer__footer",children:l})]})]}):null},G=({toasts:s,onDismiss:t,position:c="top-right"})=>e.jsx("div",{className:`nice-toast-container nice-toast-container--${c}`,children:s.map(r=>e.jsx(Y,{toast:r,onDismiss:t},r.id))}),Y=({toast:s,onDismiss:t})=>{const[c,r]=i.useState(!1);return i.useEffect(()=>{if(!s.duration&&s.duration!==0){const n=setTimeout(()=>r(!0),4e3);return()=>clearTimeout(n)}if(s.duration>0){const n=setTimeout(()=>r(!0),s.duration);return()=>clearTimeout(n)}},[s.duration]),i.useEffect(()=>{if(c){const n=setTimeout(()=>t(s.id),200);return()=>clearTimeout(n)}},[c,s.id,t]),e.jsxs("div",{className:`nice-toast nice-toast--${s.variant} ${c?"nice-toast--exiting":""}`,role:"alert",style:{position:"relative"},children:[e.jsx("div",{className:"nice-toast__icon",children:F[s.variant]}),e.jsxs("div",{className:"nice-toast__content",children:[s.title&&e.jsx("div",{className:"nice-toast__title",children:s.title}),e.jsx("div",{className:"nice-toast__message",children:s.message})]}),e.jsx("button",{type:"button",className:"nice-toast__close",onClick:()=>r(!0),children:"✕"})]})};let Q=0;function W(){const[s,t]=i.useState([]),c=i.useCallback((n,a,l)=>{const h=`toast-${++Q}`;return t(d=>[...d,{id:h,variant:n,message:a,title:l?.title,duration:l?.duration}]),h},[]),r=i.useCallback(n=>{t(a=>a.filter(l=>l.id!==n))},[]);return{toasts:s,dismiss:r,info:(n,a)=>c("info",n,a),success:(n,a)=>c("success",n,a),warning:(n,a)=>c("warning",n,a),error:(n,a)=>c("error",n,a)}}const J={info:e.jsx("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"})}),warning:e.jsx("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"})}),error:e.jsx("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})}),success:e.jsx("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})})},K=({visible:s,message:t,header:c,icon:r,variant:n="warning",acceptLabel:a,rejectLabel:l,onAccept:h,onReject:d,closeOnOverlay:p=!1,closeOnEscape:f=!0,size:g="md",className:x,style:b})=>{const{t:v}=C.Zt();if(i.useEffect(()=>{if(!s||!f)return;const j=N=>{N.key==="Escape"&&d()};return document.addEventListener("keydown",j),()=>document.removeEventListener("keydown",j)},[s,f,d]),i.useEffect(()=>(s?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[s]),!s)return null;const u=r??J[n],o=a??v("confirm.accept","Yes"),w=l??v("confirm.reject","No");return e.jsx("div",{className:"nice-modal-overlay",onClick:p?d:void 0,children:e.jsxs("div",{className:`nice-confirm nice-confirm--${n} nice-confirm--${g} ${x||""}`,style:b,role:"alertdialog","aria-modal":"true","aria-label":c,"aria-describedby":"nice-confirm-message",onClick:j=>j.stopPropagation(),children:[c&&e.jsx("div",{className:"nice-confirm__header",children:e.jsx("h3",{className:"nice-confirm__title",children:c})}),e.jsxs("div",{className:"nice-confirm__body",children:[u&&e.jsx("div",{className:`nice-confirm__icon nice-confirm__icon--${n}`,children:u}),e.jsx("div",{id:"nice-confirm-message",className:"nice-confirm__message",children:t})]}),e.jsxs("div",{className:"nice-confirm__footer",children:[e.jsx("button",{type:"button",className:"nice-btn nice-btn--ghost nice-btn--md",onClick:d,children:w}),e.jsx("button",{type:"button",className:`nice-btn nice-btn--${n==="error"?"error":"primary"} nice-btn--md`,onClick:h,autoFocus:!0,children:o})]})]})})},X=({error:s,onRetry:t,retryLabel:c="Retry",title:r="Operation failed",autoRetrySeconds:n,variant:a="error",icon:l,size:h="md",className:d,style:p,"data-testid":f})=>{const[g,x]=i.useState(n??0),b=i.useRef(),v=typeof s=="string"?s:s.message,u=i.useCallback(()=>{x(n??0),t()},[t,n]);return i.useEffect(()=>{if(!(!n||n<=0))return x(n),b.current=setInterval(()=>{x(o=>o<=1?(clearInterval(b.current),t(),0):o-1)},1e3),()=>clearInterval(b.current)},[n,t]),e.jsxs("div",{className:`nice-retry-panel nice-retry-panel--${a} nice-retry-panel--${h} ${d||""}`,style:p,role:"alert","data-testid":f,children:[e.jsx("div",{className:"nice-retry-panel__icon",children:l??"⚠️"}),e.jsxs("div",{className:"nice-retry-panel__content",children:[e.jsx("div",{className:"nice-retry-panel__title",children:r}),e.jsx("p",{className:"nice-retry-panel__message",children:v})]}),e.jsxs("div",{className:"nice-retry-panel__actions",children:[e.jsx("button",{type:"button",className:"nice-btn nice-btn--primary nice-btn--sm",onClick:u,children:c}),n&&g>0&&e.jsxs("span",{className:"nice-retry-panel__countdown",children:["Auto-retry in ",g,"s"]})]})]})};function ee(s){return window.addEventListener("online",s),window.addEventListener("offline",s),()=>{window.removeEventListener("online",s),window.removeEventListener("offline",s)}}function se(){return navigator.onLine}function ne(){return!0}const te=({message:s="You are offline. Some features may be unavailable.",variant:t="warning",icon:c,size:r="md",className:n,style:a,"data-testid":l})=>i.useSyncExternalStore(ee,se,ne)?null:e.jsxs("div",{className:`nice-offline-banner nice-offline-banner--${t} nice-offline-banner--${r} ${n||""}`,style:a,role:"alert","aria-live":"assertive","data-testid":l,children:[e.jsx("span",{className:"nice-offline-banner__icon",children:c??"📡"}),e.jsx("span",{className:"nice-offline-banner__message",children:s})]});function q({timeoutMs:s=1e4,slowThresholdMs:t=3e3,onTimeout:c,autoRetry:r=!1,autoRetryCount:n=3}={}){const[a,l]=i.useState(!1),[h,d]=i.useState(!1),[p,f]=i.useState(!1),[g,x]=i.useState(0),[b,v]=i.useState(0),u=i.useRef(null),o=i.useRef(null),w=i.useRef(null),j=i.useRef(0),N=i.useCallback(()=>{u.current&&clearTimeout(u.current),o.current&&clearTimeout(o.current),w.current&&clearInterval(w.current)},[]),k=i.useCallback(()=>{N(),l(!0),d(!1),f(!1),x(0),j.current=Date.now(),w.current=setInterval(()=>{x(Date.now()-j.current)},200),u.current=setTimeout(()=>{d(!0)},t),o.current=setTimeout(()=>{f(!0),l(!1),d(!1),N(),c?.()},s)},[N,t,s,c]),$=i.useCallback(()=>{N(),l(!1),d(!1)},[N]),m=i.useCallback(()=>{v(y=>y+1),f(!1),k()},[k]);return i.useEffect(()=>()=>N(),[N]),i.useEffect(()=>{if(r&&p&&b<n){const y=Math.pow(2,b)*1e3,L=setTimeout(()=>m(),y);return()=>clearTimeout(L)}},[r,n,p,b,m]),{isLoading:a,isSlow:h,isTimedOut:p,elapsed:g,retryCount:b,start:k,stop:$,retry:m}}const ie=({timeoutMs:s=1e4,slowThresholdMs:t=3e3,onTimeout:c,onRetry:r,autoRetry:n=!1,autoRetryCount:a=3,showProgress:l=!0,slowMessage:h="Operacja trwa dłużej niż zwykle…",timeoutMessage:d="Przekroczono limit czasu. Spróbuj ponownie.",loading:p,children:f,size:g="md",className:x,style:b,"data-testid":v})=>{const{isSlow:u,isTimedOut:o,elapsed:w,retry:j}=q({timeoutMs:s,slowThresholdMs:t,onTimeout:c,autoRetry:n,autoRetryCount:a}),N=()=>{j(),r?.()};if(!p)return e.jsx(e.Fragment,{children:f});if(o)return e.jsxs("div",{className:`nice-timeout-feedback nice-timeout-feedback--timeout nice-timeout-feedback--${g} ${x??""}`,style:b,role:"alert","data-testid":v,children:[e.jsx("p",{className:"nice-timeout-feedback__message",children:d}),e.jsx("button",{className:"nice-timeout-feedback__retry-btn",onClick:N,type:"button",children:"Spróbuj ponownie"})]});const k=Math.min(100,w/s*100);return e.jsxs("div",{className:`nice-timeout-feedback nice-timeout-feedback--${g} ${u?"nice-timeout-feedback--slow":""} ${x??""}`,style:b,"data-testid":v,children:[e.jsx("div",{className:"nice-timeout-feedback__spinner","aria-busy":"true"}),u&&e.jsx("p",{className:"nice-timeout-feedback__slow-msg",children:h}),l&&e.jsx("div",{className:"nice-timeout-feedback__progress",role:"progressbar","aria-valuenow":k,"aria-valuemin":0,"aria-valuemax":100,children:e.jsx("div",{className:"nice-timeout-feedback__progress-bar",style:{width:`${k}%`}})})]})},O=i.forwardRef(({visible:s,onAcceptAll:t,onRejectAll:c,onSave:r,categories:n=["necessary","analytics","marketing","preferences"],defaults:a,position:l="bottom",size:h="md",policyUrl:d,showDetails:p=!1,className:f,style:g,id:x,...b},v)=>{const u=C.Gs(x),{t:o}=C.Zt(),[w,j]=i.useState(!0),N=s??w,[k,$]=i.useState(p),[m,y]=i.useState(()=>{const _={necessary:!0,analytics:!1,marketing:!1,preferences:!1};return a&&Object.assign(_,a),_.necessary=!0,_}),L={necessary:o("cookie.necessary","Necessary"),analytics:o("cookie.analytics","Analytics"),marketing:o("cookie.marketing","Marketing"),preferences:o("cookie.preferences","Preferences")},T={necessary:o("cookie.necessaryDesc","Required for the website to function. Cannot be disabled."),analytics:o("cookie.analyticsDesc","Help us understand how visitors interact with the website."),marketing:o("cookie.marketingDesc","Used to deliver relevant advertisements."),preferences:o("cookie.preferencesDesc","Allow the website to remember your choices.")},I=i.useCallback(()=>{const _={necessary:!0,analytics:!0,marketing:!0,preferences:!0};t?.(),r?.(_),j(!1)},[t,r]),E=i.useCallback(()=>{const _={necessary:!0,analytics:!1,marketing:!1,preferences:!1};c?.(),r?.(_),j(!1)},[c,r]),R=i.useCallback(()=>{r?.({...m,necessary:!0}),j(!1)},[m,r]);return N?e.jsx("div",{ref:v,id:u,className:`nice-cookie-consent nice-cookie-consent--${l} nice-cookie-consent--${h} ${f??""}`,style:g,role:"dialog","aria-label":o("cookie.label","Cookie Consent"),"aria-modal":"true",...b,children:e.jsxs("div",{className:"nice-cookie-consent__content",children:[e.jsxs("p",{className:"nice-cookie-consent__message",children:[o("cookie.message","We use cookies to enhance your experience. By continuing to visit this site you agree to our use of cookies."),d&&e.jsxs(e.Fragment,{children:[" ",e.jsx("a",{href:d,className:"nice-cookie-consent__link",target:"_blank",rel:"noopener noreferrer",children:o("cookie.learnMore","Learn more")})]})]}),k&&e.jsx("div",{className:"nice-cookie-consent__details",children:n.map(_=>e.jsxs("label",{className:"nice-cookie-consent__category",children:[e.jsx("input",{type:"checkbox",checked:m[_],disabled:_==="necessary",onChange:D=>y(z=>({...z,[_]:D.target.checked})),className:"nice-cookie-consent__checkbox"}),e.jsxs("div",{className:"nice-cookie-consent__cat-info",children:[e.jsx("strong",{children:L[_]}),e.jsx("span",{className:"nice-cookie-consent__cat-desc",children:T[_]})]})]},_))}),e.jsxs("div",{className:"nice-cookie-consent__actions",children:[!k&&e.jsx("button",{type:"button",className:"nice-cookie-consent__btn nice-cookie-consent__btn--details",onClick:()=>$(!0),children:o("cookie.customize","Customize")}),k&&e.jsx("button",{type:"button",className:"nice-cookie-consent__btn nice-cookie-consent__btn--save",onClick:R,children:o("cookie.savePreferences","Save preferences")}),e.jsx("button",{type:"button",className:"nice-cookie-consent__btn nice-cookie-consent__btn--reject",onClick:E,children:o("cookie.rejectAll","Reject all")}),e.jsx("button",{type:"button",className:"nice-cookie-consent__btn nice-cookie-consent__btn--accept",onClick:I,children:o("cookie.acceptAll","Accept all")})]})]})}):null});O.displayName="NiceCookieConsent";const H=i.forwardRef(({onSubmit:s,onForgotPassword:t,onRegister:c,loading:r=!1,error:n,variant:a="primary",size:l="md",showRememberMe:h=!0,showForgotPassword:d=!0,showRegister:p=!1,title:f,logo:g,usernameLabel:x,passwordLabel:b,usernamePlaceholder:v,passwordPlaceholder:u,className:o,style:w,id:j,...N},k)=>{const $=C.Gs(j),{t:m}=C.Zt(),[y,L]=i.useState(""),[T,I]=i.useState(""),[E,R]=i.useState(!1),[_,D]=i.useState(!1),z=`${$}-user`,A=`${$}-pass`,B=`${$}-remember`,V=i.useCallback(S=>{S.preventDefault(),!r&&s?.({username:y,password:T,rememberMe:E})},[r,y,T,E,s]);return e.jsxs("form",{ref:k,id:$,className:`nice-login nice-login--${a} nice-login--${l} ${o??""}`,style:w,onSubmit:V,noValidate:!0,...N,children:[g&&e.jsx("div",{className:"nice-login__logo",children:g}),f&&e.jsx("h2",{className:"nice-login__title",children:f??m("login.title","Sign In")}),n&&e.jsx("div",{className:"nice-login__error",role:"alert",children:n}),e.jsxs("div",{className:"nice-login__field",children:[e.jsx("label",{htmlFor:z,className:"nice-login__label",children:x??m("login.username","Username")}),e.jsx("input",{id:z,className:"nice-login__input",type:"text",value:y,onChange:S=>L(S.target.value),placeholder:v??m("login.usernamePlaceholder","Enter your username"),autoComplete:"username",required:!0,disabled:r,"aria-required":"true"})]}),e.jsxs("div",{className:"nice-login__field",children:[e.jsx("label",{htmlFor:A,className:"nice-login__label",children:b??m("login.password","Password")}),e.jsxs("div",{className:"nice-login__password-wrap",children:[e.jsx("input",{id:A,className:"nice-login__input",type:_?"text":"password",value:T,onChange:S=>I(S.target.value),placeholder:u??m("login.passwordPlaceholder","Enter your password"),autoComplete:"current-password",required:!0,disabled:r,"aria-required":"true"}),e.jsx("button",{type:"button",className:"nice-login__toggle-password",onClick:()=>D(!_),"aria-label":_?m("login.hidePassword","Hide password"):m("login.showPassword","Show password"),tabIndex:-1,children:_?"🙈":"👁"})]})]}),e.jsxs("div",{className:"nice-login__options",children:[h&&e.jsxs("label",{className:"nice-login__remember",htmlFor:B,children:[e.jsx("input",{id:B,type:"checkbox",checked:E,onChange:S=>R(S.target.checked),disabled:r}),e.jsx("span",{children:m("login.rememberMe","Remember me")})]}),d&&t&&e.jsx("button",{type:"button",className:"nice-login__forgot",onClick:t,disabled:r,children:m("login.forgotPassword","Forgot password?")})]}),e.jsx("button",{type:"submit",className:`nice-login__submit nice-login__submit--${a}`,disabled:r||!y||!T,children:r?m("login.loading","Signing in..."):m("login.submit","Sign In")}),p&&c&&e.jsxs("p",{className:"nice-login__register",children:[m("login.noAccount","Don't have an account?")," ",e.jsx("button",{type:"button",className:"nice-login__register-link",onClick:c,disabled:r,children:m("login.register","Register")})]})]})});H.displayName="NiceLoginForm";const P=class P extends i.Component{constructor(){super(...arguments),this.state={hasError:!1,error:null},this.handleReset=()=>{this.setState({hasError:!1,error:null})}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,c){this.props.onError?.(t,c)}render(){if(this.state.hasError&&this.state.error){const{fallback:t,showRetry:c=!0,retryLabel:r="Retry",title:n="Something went wrong"}=this.props;return typeof t=="function"?t(this.state.error,this.handleReset):t||e.jsxs("div",{className:"nice-error-boundary",role:"alert",children:[e.jsx("div",{className:"nice-error-boundary__icon",children:"⚠️"}),e.jsx("h2",{className:"nice-error-boundary__title",children:n}),e.jsx("p",{className:"nice-error-boundary__message",children:this.state.error.message}),c&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--primary",onClick:this.handleReset,children:r})]})}return this.props.children}};P.displayName="NiceErrorBoundary";let M=P;exports.NiceAlert=Z;exports.NiceConfirmDialog=K;exports.NiceCookieConsent=O;exports.NiceDrawer=U;exports.NiceErrorBoundary=M;exports.NiceLoginForm=H;exports.NiceOfflineBanner=te;exports.NiceRetryPanel=X;exports.NiceTimeoutFeedback=ie;exports.NiceToastContainer=G;exports.alertIcons=F;exports.useNiceTimeout=q;exports.useNiceToast=W;
|