@nice2dev/ui 1.0.24 → 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 +57 -0
- package/dist/NiceErrorBoundary-B91z3IjT.cjs +1 -0
- package/dist/NiceErrorBoundary-CVybqo3l.js +770 -0
- package/dist/NiceErrorBoundary-D0NwBkFl.cjs +1 -0
- package/dist/NiceErrorBoundary-DQLk-68V.js +770 -0
- package/dist/NiceForm-8_p8P0uJ.js +5386 -0
- package/dist/NiceForm-BrBaLUkv.js +5386 -0
- package/dist/NiceForm-DkVFd5Z5.cjs +382 -0
- package/dist/NiceForm-DoiApS60.cjs +382 -0
- package/dist/NiceModal-C582SiK7.cjs +1 -0
- package/dist/NiceModal-CdiLaYTg.cjs +1 -0
- package/dist/NiceModal-D6Yj67eH.js +95 -0
- package/dist/NiceModal-sFJw1CWm.js +95 -0
- package/dist/NiceModuleLifecyclePanel-Bhd8VNjU.js +6856 -0
- package/dist/NiceModuleLifecyclePanel-Cn_nB4dg.cjs +1 -0
- package/dist/NiceModuleLifecyclePanel-D22ycAMQ.js +6817 -0
- package/dist/NiceModuleLifecyclePanel-shRuDyp3.cjs +1 -0
- package/dist/NiceModuleLifecyclePanel.css +1 -1
- package/dist/NicePagination-CtyaW_b4.cjs +1 -0
- package/dist/NicePagination-Dnlho_8O.cjs +1 -0
- package/dist/NicePagination-hGlKrWYL.js +171 -0
- package/dist/NicePagination-kokSP8ls.js +171 -0
- package/dist/NicePinCodeInput-1YGb7l2o.cjs +696 -0
- package/dist/NicePinCodeInput-CZpYON--.js +13097 -0
- package/dist/NicePinCodeInput-DPUlM3E1.cjs +696 -0
- package/dist/NicePinCodeInput-xSuOVhE8.js +13097 -0
- package/dist/NiceSavedQueryPanel-C6pPtOAf.js +6893 -0
- package/dist/NiceSavedQueryPanel-DOixGvLP.cjs +596 -0
- package/dist/NiceSavedQueryPanel-DzB0g0ak.cjs +596 -0
- package/dist/NiceSavedQueryPanel-Mz4jAsGJ.js +6893 -0
- package/dist/NiceTabs-1o8cpB_-.js +1657 -0
- package/dist/NiceTabs-B-FDOecP.cjs +1 -0
- package/dist/NiceTabs-DHiA02RD.cjs +1 -0
- package/dist/NiceTabs-MBVJomax.js +1657 -0
- package/dist/NiceWindow-9zQsi0zF.cjs +1 -0
- package/dist/NiceWindow-DUOkdKuX.js +1592 -0
- package/dist/NiceWindow-Dq-xx9cw.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-DNQXBPGB.js +4657 -0
- package/dist/charts-IP38F-wh.cjs +761 -0
- package/dist/charts.cjs +1 -1
- package/dist/charts.mjs +1 -1
- package/dist/core-BHZDvnBo.js +25364 -0
- package/dist/core-C7CI2mWz.js +25248 -0
- package/dist/core-C7PK1L9r.cjs +122 -0
- package/dist/core-CjUAwZ6z.cjs +122 -0
- package/dist/data-branching-BGw7O52F.js +6133 -0
- package/dist/data-branching-Bv-f_gZk.cjs +1 -0
- package/dist/data-branching-CNi8vtZ1.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.d.ts +19 -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-ZWKP6vRh.cjs +17 -0
- package/dist/devops-draw6Jrm.js +7684 -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-BkLJ4tzy.js +68026 -0
- package/dist/index-CTe-G23X.cjs +5518 -0
- package/dist/index-CwOe80Ws.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 +179 -1
- package/dist/index.mjs +822 -812
- package/dist/lazy.cjs +1 -1
- package/dist/lazy.mjs +24 -24
- package/dist/navigation.cjs +1 -1
- package/dist/navigation.d.ts +40 -0
- package/dist/navigation.mjs +4 -4
- package/dist/no-code-BndAN6hG.cjs +332 -0
- package/dist/no-code-CIf6wiUc.js +7133 -0
- package/dist/no-code-DKYzw5If.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 +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,60 @@
|
|
|
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
|
+
|
|
27
|
+
# [1.0.25] — 2026-06-07
|
|
28
|
+
|
|
29
|
+
### OmniVerk UX/layout batch (7 items)
|
|
30
|
+
|
|
31
|
+
- **`NiceSidebarNav`** — now **sticky full-height by default** (`sticky`, default
|
|
32
|
+
`true`): pins to the viewport (`100vh`) so the collapse button sits in the
|
|
33
|
+
screen's bottom-left corner. _Default-behavior change_ (pre-prod); pass
|
|
34
|
+
`sticky={false}` to opt out (NiceNavShell does this since it provides its own
|
|
35
|
+
full-height column). **`NiceTopNav`** stays `sticky` by default.
|
|
36
|
+
- **Transparency** — `surfaceOpacity` (0–1, default `1`) on `NiceSidebarNav`,
|
|
37
|
+
`NiceTopNav` and `NiceNavShell` (forwarded to the chrome + body) for
|
|
38
|
+
glass/floating-button backdrops; exposed as `--nice-*-surface-alpha` CSS vars.
|
|
39
|
+
- **`NiceSetupWizard`** — in the `sidebar` (stepper-side) layout the action
|
|
40
|
+
buttons are now a full-width **sticky footer under the body** instead of a
|
|
41
|
+
cramped side column. New **`theme`** prop self-scopes a `NiceThemeProvider` so
|
|
42
|
+
the wizard themes correctly even outside an app-level provider (fixes themes on
|
|
43
|
+
standalone /setup pages).
|
|
44
|
+
- **`NiceDataGrid`** — `stickyHeader` / `stickyFooter` (default `true`): keep the
|
|
45
|
+
column header / aggregate row pinned while scrolling the grid's own content
|
|
46
|
+
(engages only when the grid scrolls internally; each grid owns its scroll
|
|
47
|
+
context, so multi-grid views only stick the one being scrolled). New
|
|
48
|
+
**`autoPagination`**: the grid fills its container height and the page size is
|
|
49
|
+
computed from available height ÷ `rowHeight` (recomputed on resize); the
|
|
50
|
+
page-size control shows as a label instead of a select.
|
|
51
|
+
- **View standard** — typed **`NiceViewKind`** (`form | grid | detail | dashboard
|
|
52
|
+
| content | report | print | mix`) on `NiceViewDefinition`; `NiceViewEditor`
|
|
53
|
+
gains the new kinds + an **Export** control for `report`/`print`/`grid` views.
|
|
54
|
+
New **`exportView()`** (and `viewToHtml`/`resolveExportRows`/`deriveExportColumns`)
|
|
55
|
+
produces PDF (print), CSV, XLSX, DOCX and HTML dep-free (delegating to
|
|
56
|
+
`NiceExport`), with an `onExport` host hook for high-fidelity output.
|
|
57
|
+
|
|
1
58
|
# [1.0.24] — 2026-06-06
|
|
2
59
|
|
|
3
60
|
### Added — OmniVerk domain icons (`@nice2dev/icons`)
|
|
@@ -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;
|