aark-react-modalify 1.3.1 → 1.3.3
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/README.md +75 -11
- package/dist/aark-react-modalify.css +1 -1
- package/dist/index-no-styles.cjs.js +6 -5
- package/dist/index-no-styles.d.mts +8 -0
- package/dist/index-no-styles.d.ts +8 -0
- package/dist/index-no-styles.esm.js +6 -5
- package/dist/index.cjs.js +6 -5
- package/dist/index.d.mts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.esm.js +6 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,6 +11,7 @@ A lightweight, flexible React modal and notification library with TypeScript sup
|
|
|
11
11
|
- **TypeScript** — full type safety out of the box
|
|
12
12
|
- **Dual API** — pass raw JSX _or_ a plain props object
|
|
13
13
|
- **Size presets** — `sm / md / lg / xl / full` with explicit `width` / `maxWidth` override
|
|
14
|
+
- **Body padding control** — `bodyPadding` option lets header/footer borders span edge-to-edge
|
|
14
15
|
- **Responsive** — adapts automatically on tablet and mobile
|
|
15
16
|
- **CSS variables** — theme every visual property without touching JS
|
|
16
17
|
- **Imperative** — call `aark.fire()` / `aark.notification()` anywhere, no context required
|
|
@@ -186,17 +187,18 @@ aark.getTheme(); // same as getAarkModalTheme()
|
|
|
186
187
|
|
|
187
188
|
### `ModalOptions`
|
|
188
189
|
|
|
189
|
-
| Option | Type
|
|
190
|
-
| --------------------- |
|
|
191
|
-
| `position` | `ModalPosition`
|
|
192
|
-
| `size` | `ModalSize`
|
|
193
|
-
| `width` | `string\|number`
|
|
194
|
-
| `maxWidth` | `string\|number`
|
|
195
|
-
| `
|
|
196
|
-
| `
|
|
197
|
-
| `
|
|
198
|
-
| `
|
|
199
|
-
| `
|
|
190
|
+
| Option | Type | Default | Description |
|
|
191
|
+
| --------------------- | ----------------------------- | ---------- | --------------------------------------------------------------------------- |
|
|
192
|
+
| `position` | `ModalPosition` | `"center"` | Where the modal appears |
|
|
193
|
+
| `size` | `ModalSize` | — | Preset max-width (`sm/md/lg/xl/full`) |
|
|
194
|
+
| `width` | `string\|number` | — | Explicit width, overrides `size` |
|
|
195
|
+
| `maxWidth` | `string\|number` | — | Explicit max-width, overrides `size` |
|
|
196
|
+
| `bodyPadding` | `boolean\|string\|number` | `true` | Body card padding — see [bodyPadding](#bodypaddingcontrolling-body-padding) |
|
|
197
|
+
| `showCloseIcon` | `boolean` | `true` | Render the × close button |
|
|
198
|
+
| `className` | `string` | — | Extra class on the modal container |
|
|
199
|
+
| `overlayClassName` | `string` | — | Extra class on the backdrop |
|
|
200
|
+
| `preventOverlayClose` | `boolean` | `false` | Disable close on backdrop click |
|
|
201
|
+
| `preventEscClose` | `boolean` | `false` | Disable close on ESC key |
|
|
200
202
|
|
|
201
203
|
### `NotificationOptions`
|
|
202
204
|
|
|
@@ -249,6 +251,48 @@ type NotificationPosition =
|
|
|
249
251
|
|
|
250
252
|
## Customization
|
|
251
253
|
|
|
254
|
+
### `bodyPadding` — controlling body padding
|
|
255
|
+
|
|
256
|
+
By default the modal body card has `padding: var(--aark-modal-pad)` (16 px) on all sides. This means any `border-top` or `border-bottom` you add to a header or footer **inside** your content will be indented — it won't reach the card edges.
|
|
257
|
+
|
|
258
|
+
Use `bodyPadding` to control this:
|
|
259
|
+
|
|
260
|
+
| Value | Result |
|
|
261
|
+
| --------------- | ----------------------------------------- |
|
|
262
|
+
| `true` (default)| Default CSS variable padding (`16px`) |
|
|
263
|
+
| `false` or `0` | No padding — borders span edge-to-edge |
|
|
264
|
+
| `number` | Exact px value, e.g. `24` → `24px` |
|
|
265
|
+
| `string` | Any CSS value, e.g. `'8px 20px'` |
|
|
266
|
+
|
|
267
|
+
**Pattern — full-width header/footer borders with padded content:**
|
|
268
|
+
|
|
269
|
+
```tsx
|
|
270
|
+
aark.fire(
|
|
271
|
+
<div>
|
|
272
|
+
{/* Header — border goes edge-to-edge */}
|
|
273
|
+
<div style={{ padding: "12px 16px", borderBottom: "1px solid #e5e7eb" }}>
|
|
274
|
+
<h3 style={{ margin: 0 }}>Modal Title</h3>
|
|
275
|
+
</div>
|
|
276
|
+
|
|
277
|
+
{/* Content — add padding back only here */}
|
|
278
|
+
<div className="aark-body-pad">
|
|
279
|
+
<p>Body content with standard padding.</p>
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
{/* Footer — border goes edge-to-edge */}
|
|
283
|
+
<div style={{ padding: "12px 16px", borderTop: "1px solid #e5e7eb", display: "flex", justifyContent: "flex-end", gap: "8px" }}>
|
|
284
|
+
<button onClick={() => aark.close()}>Cancel</button>
|
|
285
|
+
<button onClick={() => aark.close()}>Confirm</button>
|
|
286
|
+
</div>
|
|
287
|
+
</div>,
|
|
288
|
+
{ bodyPadding: false }
|
|
289
|
+
);
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
> **`aark-body-pad`** is a CSS utility class provided by the library. It applies `padding: var(--aark-modal-pad)` — the same value as the body default — so your content section looks identical to a normally-padded modal while header/footer remain flush.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
252
296
|
### CSS variables (full list with defaults)
|
|
253
297
|
|
|
254
298
|
Override any of these in your global CSS to theme the library without touching JS:
|
|
@@ -473,6 +517,26 @@ aark.fire(<MyForm />, {
|
|
|
473
517
|
});
|
|
474
518
|
```
|
|
475
519
|
|
|
520
|
+
### Modal with full-width header/footer borders
|
|
521
|
+
|
|
522
|
+
```tsx
|
|
523
|
+
aark.fire(
|
|
524
|
+
<div>
|
|
525
|
+
<div style={{ padding: "12px 16px", borderBottom: "1px solid #e5e7eb" }}>
|
|
526
|
+
<h3 style={{ margin: 0 }}>Confirm Action</h3>
|
|
527
|
+
</div>
|
|
528
|
+
<div className="aark-body-pad">
|
|
529
|
+
<p>Are you sure you want to proceed?</p>
|
|
530
|
+
</div>
|
|
531
|
+
<div style={{ padding: "12px 16px", borderTop: "1px solid #e5e7eb", display: "flex", justifyContent: "flex-end", gap: "8px" }}>
|
|
532
|
+
<button onClick={() => aark.close()}>Cancel</button>
|
|
533
|
+
<button onClick={() => aark.close()}>Confirm</button>
|
|
534
|
+
</div>
|
|
535
|
+
</div>,
|
|
536
|
+
{ bodyPadding: false, size: "sm" }
|
|
537
|
+
);
|
|
538
|
+
```
|
|
539
|
+
|
|
476
540
|
### Dark theme
|
|
477
541
|
|
|
478
542
|
```tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--aark-modal-overlay-bg: rgba(0, 0, 0, .5);--aark-modal-overlay-blur: 0px;--aark-modal-bg: #fff;--aark-modal-radius: 8px;--aark-modal-shadow: 0 10px 25px rgba(0, 0, 0, .15);--aark-modal-pad: 16px;--aark-modal-max-width: 700px;--aark-modal-z: 9999;--aark-close-color: #666;--aark-close-hover: #f5f5f5;--aark-close-hover-color: #333;--aark-close-focus-outline: 2px solid #007bff;--aark-anim: .2s}.aark-modal-overlay{position:fixed;inset:0;z-index:var(--aark-modal-z);pointer-events:auto}.aark-modal-container{width:100%;max-width:var(--aark-modal-max-width);min-width:280px;position:relative;z-index:2;pointer-events:auto}.aark-modal-wrapper{width:100%;height:100%;position:relative;z-index:2;pointer-events:auto}.aark-modal-container.center{animation:scale-in var(--aark-anim)}.aark-modal-container.top-center{animation:slide-down var(--aark-anim)}.aark-modal-container.top-right{animation:slide-left var(--aark-anim)}.aark-modal-container.top-left{animation:slide-right var(--aark-anim)}.aark-modal-container.bottom-right{animation:slide-left var(--aark-anim)}.aark-modal-container.bottom-left{animation:slide-right var(--aark-anim)}.aark-modal-container.bottom-center{animation:slide-up var(--aark-anim)}.aark-modal-header{position:relative;padding-bottom:0;margin-bottom:0}.aark-modal-close{position:absolute;top:8px;right:8px;width:30px;height:30px;padding:.5rem;display:flex;align-items:center;justify-content:center;background:transparent;border:0;color:var(--aark-close-color);cursor:pointer;border-radius:50%;font-size:14px;line-height:1;transition:all var(--aark-anim);z-index:10}.aark-modal-close:hover{background:var(--aark-close-hover);color:var(--aark-close-hover-color)}.aark-modal-close:focus{outline:var(--aark-close-focus-outline);outline-offset:2px}.aark-modal-body{background:var(--aark-modal-bg);border-radius:var(--aark-modal-radius);box-shadow:var(--aark-modal-shadow);padding:var(--aark-modal-pad);width:100%;max-height:90vh;overflow-y:auto;margin:auto;position:relative;z-index:2;pointer-events:auto;box-sizing:border-box}.aark-modal-content{flex:1;margin:1rem 0}.aark-modal-footer{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.5rem}.aark-standard-modal{background:var(--aark-modal-bg);border-radius:var(--aark-modal-radius);box-shadow:var(--aark-modal-shadow);padding:var(--aark-modal-pad);max-height:90vh;overflow-y:auto;margin:auto;display:flex;flex-direction:column;position:relative;z-index:2;pointer-events:auto;box-sizing:border-box;width:100%;max-width:var(--aark-modal-max-width);min-width:280px}@media(max-width:768px){.aark-modal-container,.aark-standard-modal{width:calc(100vw - 24px);max-width:calc(100vw - 24px);margin:12px}.aark-modal-body{max-height:calc(100vh - 80px)}}@media(max-width:480px){.aark-modal-container,.aark-standard-modal{width:calc(100vw - 16px);max-width:calc(100vw - 16px);margin:8px;max-height:calc(100vh - 40px)}.aark-modal-body{max-height:calc(100vh - 40px);border-radius:calc(var(--aark-modal-radius) / 2)}}.aark-standard-modal .aark-modal-header{margin-bottom:1rem}.aark-standard-modal .aark-modal-title{margin:0;font-size:1.5rem;font-weight:600;color:#1f2937;text-align:center}.aark-standard-modal .aark-modal-content{flex:1;margin:1rem 0}.aark-standard-modal .aark-modal-icon{text-align:center;font-size:3rem;margin-bottom:1rem}.aark-standard-modal .aark-modal-content p{margin:0;font-size:1rem;color:#6b7280;line-height:1.5;text-align:center}.aark-standard-modal .aark-modal-footer{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.5rem}.aark-standard-modal .aark-modal-cancel-button,.aark-standard-modal .aark-modal-confirm-button{padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s;border:none}.aark-standard-modal .aark-modal-cancel-button{border:1px solid #d1d5db;background:#fff;color:#374151}.aark-standard-modal .aark-modal-cancel-button:hover{background:#f9fafb;border-color:#9ca3af}.aark-standard-modal .aark-modal-confirm-button{color:#fff}.aark-standard-modal .aark-modal-confirm-button:hover{opacity:.9}@keyframes fade-in{0%{opacity:0}to{opacity:1}}:root{--aark-notification-bg: #fff;--aark-notification-radius: 8px;--aark-notification-shadow: 0 4px 12px rgba(0, 0, 0, .1);--aark-notification-pad: 16px;--aark-notification-z: 10000;--aark-close-color: #666;--aark-close-hover: #f5f5f5;--aark-anim: .2s}.aark-notification-container{pointer-events:auto;width:auto;max-width:400px;min-width:280px;position:relative;z-index:10001}.aark-notification-wrapper{position:relative;z-index:10001;pointer-events:auto}.aark-notification-container.center{animation:scale-in var(--aark-anim)}.aark-notification-container.top-center{animation:slide-down var(--aark-anim)}.aark-notification-container.top-right{animation:slide-left var(--aark-anim)}.aark-notification-container.top-left{animation:slide-right var(--aark-anim)}.aark-notification-container.bottom-right{animation:slide-left var(--aark-anim)}.aark-notification-container.bottom-left{animation:slide-right var(--aark-anim)}.aark-notification-container.bottom-center{animation:slide-up var(--aark-anim)}.aark-standard-notification{background:var(--aark-notification-bg);border-radius:var(--aark-notification-radius);box-shadow:var(--aark-notification-shadow);padding:var(--aark-notification-pad);position:relative;overflow:hidden;cursor:pointer;transition:all var(--aark-anim);border:1px solid #e5e7eb;max-width:400px;min-width:280px;z-index:10001;pointer-events:auto}.aark-standard-notification:hover{box-shadow:0 8px 25px #00000026;transform:translateY(-1px)}.aark-notification-header{margin-bottom:.5rem;position:relative;z-index:10001;pointer-events:auto}.aark-notification-title{margin:0;font-size:.875rem;font-weight:600;color:#1f2937;line-height:1.25}.aark-notification-content{color:#6b7280;font-size:.75rem;line-height:1.4;background-color:var(--aark-notification-bg);position:relative;z-index:10001;pointer-events:auto}.aark-notification-body{background:var(--aark-notification-bg);border-radius:var(--aark-notification-radius);box-shadow:var(--aark-notification-shadow);padding:var(--aark-notification-pad);position:relative;z-index:10001;pointer-events:auto}.aark-notification-content p{margin:0}.aark-notification-icon{font-size:1.25rem;flex-shrink:0;margin-top:.125rem;position:relative;z-index:10001;pointer-events:auto}.aark-notification-close{background:none;border:none;font-size:1rem;color:#9ca3af;cursor:pointer;padding:0;line-height:1;flex-shrink:0;transition:color var(--aark-anim);position:relative;z-index:10002;pointer-events:auto}.aark-notification-close:hover{color:#6b7280}.aark-notification-close:focus{outline:2px solid #3b82f6;outline-offset:2px;border-radius:2px}.aark-notification-footer{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem;position:relative;z-index:10001;pointer-events:auto}.aark-notification-cancel-button,.aark-notification-confirm-button{padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s;border:none;position:relative;z-index:10001;pointer-events:auto}.aark-notification-cancel-button{border:1px solid #d1d5db;background:#fff;color:#374151}.aark-notification-cancel-button:hover{background:#f9fafb;border-color:#9ca3af}.aark-notification-confirm-button{color:#fff}.aark-notification-confirm-button:hover{opacity:.9}.aark-notification-progress{position:absolute;bottom:0;left:0;height:3px;transform-origin:left;border-radius:0 0 var(--aark-notification-radius) var(--aark-notification-radius)}.aark-notification-success{border-left:4px solid #4ade80}.aark-notification-error{border-left:4px solid #ef4444}.aark-notification-warning{border-left:4px solid #f59e0b}.aark-notification-info{border-left:4px solid #3b82f6}.aark-notification-question{border-left:4px solid #8b5cf6}@keyframes aark-notification-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes notification-fade-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes notification-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}@keyframes notification-slide-in-right{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes notification-slide-out-right{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}@keyframes notification-slide-in-left{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes notification-slide-out-left{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-100%)}}@keyframes scale-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-left{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slide-right{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@media(max-width:768px){.aark-notification-container,.aark-standard-notification{max-width:calc(100vw - 40px);min-width:auto}}@media(max-width:480px){.aark-notification-container{max-width:calc(100vw - 20px)}.aark-standard-notification{max-width:calc(100vw - 20px);min-width:auto}}
|
|
1
|
+
:root{--aark-modal-overlay-bg: rgba(0, 0, 0, .5);--aark-modal-overlay-blur: 0px;--aark-modal-bg: #fff;--aark-modal-radius: 8px;--aark-modal-shadow: 0 10px 25px rgba(0, 0, 0, .15);--aark-modal-pad: 16px;--aark-modal-max-width: 700px;--aark-modal-z: 9999;--aark-close-color: #666;--aark-close-hover: #f5f5f5;--aark-close-hover-color: #333;--aark-close-focus-outline: 2px solid #007bff;--aark-anim: .2s}.aark-modal-overlay{position:fixed;inset:0;z-index:var(--aark-modal-z);pointer-events:auto}.aark-modal-container{width:100%;max-width:var(--aark-modal-max-width);min-width:280px;position:relative;z-index:2;pointer-events:auto}.aark-modal-wrapper{width:100%;height:100%;position:relative;z-index:2;pointer-events:auto}.aark-modal-container.center{animation:scale-in var(--aark-anim)}.aark-modal-container.top-center{animation:slide-down var(--aark-anim)}.aark-modal-container.top-right{animation:slide-left var(--aark-anim)}.aark-modal-container.top-left{animation:slide-right var(--aark-anim)}.aark-modal-container.bottom-right{animation:slide-left var(--aark-anim)}.aark-modal-container.bottom-left{animation:slide-right var(--aark-anim)}.aark-modal-container.bottom-center{animation:slide-up var(--aark-anim)}.aark-modal-header{position:relative;padding-bottom:0;margin-bottom:0}.aark-modal-close{position:absolute;top:8px;right:8px;width:30px;height:30px;padding:.5rem;display:flex;align-items:center;justify-content:center;background:transparent;border:0;color:var(--aark-close-color);cursor:pointer;border-radius:50%;font-size:14px;line-height:1;transition:all var(--aark-anim);z-index:10}.aark-modal-close:hover{background:var(--aark-close-hover);color:var(--aark-close-hover-color)}.aark-modal-close:focus{outline:var(--aark-close-focus-outline);outline-offset:2px}.aark-modal-body{background:var(--aark-modal-bg);border-radius:var(--aark-modal-radius);box-shadow:var(--aark-modal-shadow);padding:var(--aark-modal-pad);width:100%;max-height:90vh;overflow-y:auto;margin:auto;position:relative;z-index:2;pointer-events:auto;box-sizing:border-box}.aark-modal-content{flex:1;margin:1rem 0}.aark-body-pad{padding:var(--aark-modal-pad)}.aark-modal-footer{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.5rem}.aark-standard-modal{background:var(--aark-modal-bg);border-radius:var(--aark-modal-radius);box-shadow:var(--aark-modal-shadow);padding:var(--aark-modal-pad);max-height:90vh;overflow-y:auto;margin:auto;display:flex;flex-direction:column;position:relative;z-index:2;pointer-events:auto;box-sizing:border-box;width:100%;max-width:var(--aark-modal-max-width);min-width:280px}@media(max-width:768px){.aark-modal-container,.aark-standard-modal{width:calc(100vw - 24px);max-width:calc(100vw - 24px);margin:12px}.aark-modal-body{max-height:calc(100vh - 80px)}}@media(max-width:480px){.aark-modal-container,.aark-standard-modal{width:calc(100vw - 16px);max-width:calc(100vw - 16px);margin:8px;max-height:calc(100vh - 40px)}.aark-modal-body{max-height:calc(100vh - 40px);border-radius:calc(var(--aark-modal-radius) / 2)}}.aark-standard-modal .aark-modal-header{margin-bottom:1rem}.aark-standard-modal .aark-modal-title{margin:0;font-size:1.5rem;font-weight:600;color:#1f2937;text-align:center}.aark-standard-modal .aark-modal-content{flex:1;margin:1rem 0}.aark-standard-modal .aark-modal-icon{text-align:center;font-size:3rem;margin-bottom:1rem}.aark-standard-modal .aark-modal-content p{margin:0;font-size:1rem;color:#6b7280;line-height:1.5;text-align:center}.aark-standard-modal .aark-modal-footer{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.5rem}.aark-standard-modal .aark-modal-cancel-button,.aark-standard-modal .aark-modal-confirm-button{padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s;border:none}.aark-standard-modal .aark-modal-cancel-button{border:1px solid #d1d5db;background:#fff;color:#374151}.aark-standard-modal .aark-modal-cancel-button:hover{background:#f9fafb;border-color:#9ca3af}.aark-standard-modal .aark-modal-confirm-button{color:#fff}.aark-standard-modal .aark-modal-confirm-button:hover{opacity:.9}@keyframes fade-in{0%{opacity:0}to{opacity:1}}:root{--aark-notification-bg: #fff;--aark-notification-radius: 8px;--aark-notification-shadow: 0 4px 12px rgba(0, 0, 0, .1);--aark-notification-pad: 16px;--aark-notification-z: 10000;--aark-close-color: #666;--aark-close-hover: #f5f5f5;--aark-anim: .2s}.aark-notification-container{pointer-events:auto;width:auto;max-width:400px;min-width:280px;position:relative;z-index:10001}.aark-notification-wrapper{position:relative;z-index:10001;pointer-events:auto}.aark-notification-container.center{animation:scale-in var(--aark-anim)}.aark-notification-container.top-center{animation:slide-down var(--aark-anim)}.aark-notification-container.top-right{animation:slide-left var(--aark-anim)}.aark-notification-container.top-left{animation:slide-right var(--aark-anim)}.aark-notification-container.bottom-right{animation:slide-left var(--aark-anim)}.aark-notification-container.bottom-left{animation:slide-right var(--aark-anim)}.aark-notification-container.bottom-center{animation:slide-up var(--aark-anim)}.aark-standard-notification{background:var(--aark-notification-bg);border-radius:var(--aark-notification-radius);box-shadow:var(--aark-notification-shadow);padding:var(--aark-notification-pad);position:relative;overflow:hidden;cursor:pointer;transition:all var(--aark-anim);border:1px solid #e5e7eb;max-width:400px;min-width:280px;z-index:10001;pointer-events:auto}.aark-standard-notification:hover{box-shadow:0 8px 25px #00000026;transform:translateY(-1px)}.aark-notification-header{margin-bottom:.5rem;position:relative;z-index:10001;pointer-events:auto}.aark-notification-title{margin:0;font-size:.875rem;font-weight:600;color:#1f2937;line-height:1.25}.aark-notification-content{color:#6b7280;font-size:.75rem;line-height:1.4;background-color:var(--aark-notification-bg);position:relative;z-index:10001;pointer-events:auto}.aark-notification-body{background:var(--aark-notification-bg);border-radius:var(--aark-notification-radius);box-shadow:var(--aark-notification-shadow);padding:var(--aark-notification-pad);position:relative;z-index:10001;pointer-events:auto}.aark-notification-content p{margin:0}.aark-notification-icon{font-size:1.25rem;flex-shrink:0;margin-top:.125rem;position:relative;z-index:10001;pointer-events:auto}.aark-notification-close{background:none;border:none;font-size:1rem;color:#9ca3af;cursor:pointer;padding:0;line-height:1;flex-shrink:0;transition:color var(--aark-anim);position:relative;z-index:10002;pointer-events:auto}.aark-notification-close:hover{color:#6b7280}.aark-notification-close:focus{outline:2px solid #3b82f6;outline-offset:2px;border-radius:2px}.aark-notification-footer{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem;position:relative;z-index:10001;pointer-events:auto}.aark-notification-cancel-button,.aark-notification-confirm-button{padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s;border:none;position:relative;z-index:10001;pointer-events:auto}.aark-notification-cancel-button{border:1px solid #d1d5db;background:#fff;color:#374151}.aark-notification-cancel-button:hover{background:#f9fafb;border-color:#9ca3af}.aark-notification-confirm-button{color:#fff}.aark-notification-confirm-button:hover{opacity:.9}.aark-notification-progress{position:absolute;bottom:0;left:0;height:3px;transform-origin:left;border-radius:0 0 var(--aark-notification-radius) var(--aark-notification-radius)}.aark-notification-success{border-left:4px solid #4ade80}.aark-notification-error{border-left:4px solid #ef4444}.aark-notification-warning{border-left:4px solid #f59e0b}.aark-notification-info{border-left:4px solid #3b82f6}.aark-notification-question{border-left:4px solid #8b5cf6}@keyframes aark-notification-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes notification-fade-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes notification-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}@keyframes notification-slide-in-right{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes notification-slide-out-right{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}@keyframes notification-slide-in-left{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes notification-slide-out-left{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-100%)}}@keyframes scale-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-left{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slide-right{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@media(max-width:768px){.aark-notification-container,.aark-standard-notification{max-width:calc(100vw - 40px);min-width:auto}}@media(max-width:480px){.aark-notification-container{max-width:calc(100vw - 20px)}.aark-standard-notification{max-width:calc(100vw - 20px);min-width:auto}}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var j=Object.defineProperty;var go=Object.getOwnPropertyDescriptor;var yo=Object.getOwnPropertyNames;var vo=Object.prototype.hasOwnProperty;var ko=(e,o)=>{for(var t in o)j(e,t,{get:o[t],enumerable:!0})},Co=(e,o,t,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of yo(o))!vo.call(e,n)&&n!==t&&j(e,n,{get:()=>o[n],enumerable:!(a=go(o,n))||a.enumerable});return e};var ho=e=>Co(j({},"__esModule",{value:!0}),e);var Oo={};ko(Oo,{Modal:()=>O,ModalProvider:()=>L,Notification:()=>W,aark:()=>uo,getAarkModalTheme:()=>Z,resetAarkModalTheme:()=>D,setAarkModalTheme:()=>K,useModal:()=>F});module.exports=ho(Oo);var lo=require("react"),so=require("react-dom/client");var S=require("react");function F(){let[e,o]=(0,S.useState)(!1),[t,a]=(0,S.useState)(null),n=(0,S.useCallback)(()=>{h.close()},[]);return(0,S.useEffect)(()=>{let l=s=>{switch(s.type){case"open":o(!0),a(s.config||null);break;case"close":o(!1),a(null);break;case"beforeClose":break}},u=h.subscribe(l);return o(h.isOpen()),a(h.getCurrentConfig()),u},[]),{isOpen:e,config:t,close:n}}var w=require("react"),ao=require("react-dom");var N=require("react"),z=require("react/jsx-runtime"),J={white:"#FFFFFF",black:"#0B071A"},Q=(0,N.memo)(({name:e,color:o="black",style:t,className:a="",noHoverEffect:n=!1,onClick:l,size:u=24,"aria-label":s,title:x})=>{let m=(0,N.useMemo)(()=>String(u),[u]),f=(0,N.useMemo)(()=>J[o]?J[o]:(o.startsWith("#"),o),[o]),y=(0,N.useMemo)(()=>{let r=f;return e==="close"?(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:m,height:m,viewBox:"0 0 16 16",fill:"none",children:(0,z.jsx)("path",{d:"M15.281 14.2198C15.3507 14.2895 15.406 14.3722 15.4437 14.4632C15.4814 14.5543 15.5008 14.6519 15.5008 14.7504C15.5008 14.849 15.4814 14.9465 15.4437 15.0376C15.406 15.1286 15.3507 15.2114 15.281 15.281C15.2114 15.3507 15.1286 15.406 15.0376 15.4437C14.9465 15.4814 14.849 15.5008 14.7504 15.5008C14.6519 15.5008 14.5543 15.4814 14.4632 15.4437C14.3722 15.406 14.2895 15.3507 14.2198 15.281L8.00042 9.06073L1.78104 15.281C1.64031 15.4218 1.44944 15.5008 1.25042 15.5008C1.05139 15.5008 0.860523 15.4218 0.719792 15.281C0.579062 15.1403 0.5 14.9494 0.5 14.7504C0.5 14.5514 0.579062 14.3605 0.719792 14.2198L6.9401 8.00042L0.719792 1.78104C0.579062 1.64031 0.5 1.44944 0.5 1.25042C0.5 1.05139 0.579062 0.860523 0.719792 0.719792C0.860523 0.579062 1.05139 0.5 1.25042 0.5C1.44944 0.5 1.64031 0.579062 1.78104 0.719792L8.00042 6.9401L14.2198 0.719792C14.3605 0.579062 14.5514 0.5 14.7504 0.5C14.9494 0.5 15.1403 0.579062 15.281 0.719792C15.4218 0.860523 15.5008 1.05139 15.5008 1.25042C15.5008 1.44944 15.4218 1.64031 15.281 1.78104L9.06073 8.00042L15.281 14.2198Z",fill:r})}):null},[e,f,m]),c=(0,N.useMemo)(()=>{let r={};return s?r["aria-label"]=s:r["aria-label"]=`${e} icon`,x&&(r.title=x),r.role=l?"button":"img",r},[s,x,e,l]),p=(0,N.useMemo)(()=>{if(l)return r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),l())}},[l]);return(0,z.jsx)("i",{className:`
|
|
2
2
|
inline-flex items-center justify-center bg-transparent outline-none border-none
|
|
3
|
-
${!n&&
|
|
4
|
-
${
|
|
3
|
+
${!n&&l&&"hover:opacity-80 cursor-pointer transition-opacity duration-200"}
|
|
4
|
+
${l&&"focus:outline-2 focus:outline-blue-500 focus:outline-offset-2"}
|
|
5
5
|
${a}
|
|
6
|
-
`.trim(),style:t,onClick:
|
|
6
|
+
`.trim(),style:t,onClick:l,onKeyDown:p,tabIndex:l?0:void 0,...c,children:y})});Q.displayName="Icon";var U=Q;var X=require("react"),k=require("react/jsx-runtime"),Mo={success:"\u2713",error:"\u2715",warning:"\u26A0",info:"\u24D8",question:"?"},oo={success:"#4ade80",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6",question:"#8b5cf6"},bo=({props:e,onClose:o})=>{let{title:t,text:a,type:n="info",cancelText:l="Cancel",confirmText:u="OK",onCancel:s,onConfirm:x,icon:m,html:f,showCancelButton:y=!1,showConfirmButton:c=!0,reverseButtons:p=!1,width:r="auto",fullWidth:d=!1,customClass:v={}}=e,C=()=>{s?.(),o()},_=()=>{x?.(),o()},B=(0,X.useMemo)(()=>m?typeof m=="string"?(0,k.jsx)("span",{children:m}):m:(0,k.jsx)("span",{style:{color:oo[n]},children:Mo[n]}),[m,n]),q=p?["confirm","cancel"]:["cancel","confirm"],V=(0,X.useMemo)(()=>{let i={};return d?(i.width="calc(100vw - 20px)",i.maxWidth="calc(100vw - 20px)"):typeof r=="number"?i.width=`${r}px`:i.width=r,i},[r,d]);return(0,k.jsxs)("div",{className:`aark-standard-modal ${v.popup||""}`,style:V,children:[(0,k.jsxs)("div",{className:`aark-modal-content ${v.content||""}`,children:[B&&(0,k.jsx)("div",{className:`aark-modal-icon ${v.icon||""}`,children:B}),t&&(0,k.jsx)("div",{className:`aark-modal-header ${v.header||""}`,children:(0,k.jsx)("h2",{className:`aark-modal-title ${v.title||""}`,children:t})}),f?typeof f=="string"?(0,k.jsx)("div",{dangerouslySetInnerHTML:{__html:f}}):(0,k.jsx)("div",{children:f}):a?(0,k.jsx)("p",{children:a}):null]}),(y||c)&&(0,k.jsx)("div",{className:`aark-modal-footer ${v.actions||""}`,children:q.map(i=>i==="cancel"&&y?(0,k.jsx)("button",{onClick:C,className:`aark-modal-cancel-button ${v.cancelButton||""}`,children:l},"cancel"):i==="confirm"&&c?(0,k.jsx)("button",{onClick:_,className:`aark-modal-confirm-button ${v.confirmButton||""}`,style:{background:oo[n]},children:u},"confirm"):null)})]})},eo=bo;var M=null,R=()=>(M||(M=document.getElementById("aark-react-modalify-root"),M||(M=document.createElement("div"),M.id="aark-react-modalify-root",M.style.cssText=`
|
|
7
7
|
position: fixed;
|
|
8
8
|
top: 0;
|
|
9
9
|
left: 0;
|
|
10
10
|
width: 100%;
|
|
11
11
|
height: 100%;
|
|
12
12
|
pointer-events: none;
|
|
13
|
-
|
|
13
|
+
z-index: var(--aark-modal-z, 9999);
|
|
14
|
+
`,document.body.appendChild(M))),M),to=()=>{M&&M.children.length===0&&(M.remove(),M=null)};var b=require("react/jsx-runtime"),xo={sm:"400px",md:"550px",lg:"700px",xl:"900px",full:"calc(100vw - 32px)"},No=({config:e,onClose:o})=>{let{content:t,props:a,options:n={}}=e,{position:l="center",showCloseIcon:u=!0,className:s="",overlayClassName:x="",preventEscClose:m=!1,preventOverlayClose:f=!1,width:y,maxWidth:c,size:p,bodyPadding:r}=n;(0,w.useEffect)(()=>{if(m)return;let i=I=>{I.key==="Escape"&&o()};return document.addEventListener("keydown",i),()=>document.removeEventListener("keydown",i)},[o,m]);let d=(0,w.useCallback)(i=>{i.target===i.currentTarget&&!f&&o()},[o,f]),v=(0,w.useCallback)(i=>{i.stopPropagation(),o()},[o]),C=(0,w.useMemo)(()=>{let i={};if(y!==void 0&&(i.width=typeof y=="number"?`${y}px`:y,c===void 0&&(i.maxWidth=i.width)),c!==void 0)i.maxWidth=typeof c=="number"?`${c}px`:c;else if(p){let I=xo[p];p==="full"&&(i.width=i.width??I),i.maxWidth=I}return i},[y,c,p]),_=(0,w.useMemo)(()=>r===void 0||r===!0?{}:r===!1||r===0?{padding:0}:typeof r=="number"?{padding:`${r}px`}:{padding:r},[r]),B=`aark-modal-container ${l} ${s}`.trim(),q=R(),V=()=>a?(0,b.jsxs)("div",{className:B,style:C,role:"dialog","aria-modal":"true",onClick:i=>i.stopPropagation(),children:[u&&(0,b.jsx)("button",{onClick:v,className:"aark-modal-close","aria-label":"Close Modal",type:"button",children:(0,b.jsx)(U,{name:"close",size:12})}),(0,b.jsx)("div",{className:"aark-modal-wrapper",children:(0,b.jsx)(eo,{props:a,onClose:o})})]}):t?(0,b.jsx)("div",{className:B,style:C,role:"dialog","aria-modal":"true",onClick:i=>i.stopPropagation(),children:(0,b.jsxs)("div",{className:"aark-modal-body",style:_,children:[u&&(0,b.jsx)("button",{onClick:v,className:"aark-modal-close","aria-label":"Close Modal",type:"button",children:(0,b.jsx)(U,{name:"close",size:12})}),t]})}):null;return(0,ao.createPortal)((0,b.jsx)("div",{className:`aark-modal-overlay ${x}`.trim(),onClick:d,style:{position:"fixed",inset:0,zIndex:"var(--aark-modal-z, 9999)",background:"var(--aark-modal-overlay-bg)",backdropFilter:"blur(var(--aark-modal-overlay-blur, 0px))",WebkitBackdropFilter:"blur(var(--aark-modal-overlay-blur, 0px))",animation:"fade-in var(--aark-anim)",display:"flex",alignItems:l==="center"?"center":l.startsWith("top")?"flex-start":"flex-end",justifyContent:l.endsWith("center")?"center":l.endsWith("right")?"flex-end":"flex-start",padding:"1rem",overflowY:"auto",boxSizing:"border-box"},children:V()}),q)},O=No;var A=require("react"),ro=require("react-dom");var $=require("react"),g=require("react/jsx-runtime"),no={success:"#4ade80",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6",question:"#8b5cf6"},wo={success:"\u2713",error:"\u2715",warning:"\u26A0",info:"\u24D8",question:"?"},Po=({props:e,onClose:o})=>{let{title:t,text:a,type:n="info",icon:l,html:u,timer:s=5e3,showCloseButton:x=!0,clickToClose:m=!0,width:f,fullWidth:y=!1,padding:c,customClass:p={}}=e;(0,$.useEffect)(()=>{if(s&&s>0){let C=setTimeout(o,s);return()=>clearTimeout(C)}},[s,o]);let r=()=>{m&&o()},d=(0,$.useMemo)(()=>l?typeof l=="string"?(0,g.jsx)("span",{children:l}):l:(0,g.jsx)("span",{style:{color:no[n]},children:wo[n]}),[l,n]),v=(0,$.useMemo)(()=>{let C={};return c!==void 0&&(C.padding=typeof c=="number"?`${c}px`:c),y?(C.width="calc(100vw - 40px)",C.maxWidth="calc(100vw - 40px)"):f!==void 0&&(C.width=typeof f=="number"?`${f}px`:f),C},[f,y,c]);return(0,g.jsxs)("div",{className:`aark-standard-notification aark-notification-${n} ${p.popup||""}`,style:v,onClick:r,children:[s&&s>0&&(0,g.jsx)("div",{className:"aark-notification-progress",style:{background:no[n],animation:`aark-notification-progress ${s}ms linear forwards`}}),(0,g.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:"0.75rem"},children:[d&&(0,g.jsx)("div",{className:`aark-notification-icon ${p.icon||""}`,children:d}),(0,g.jsxs)("div",{style:{flex:1,minWidth:0},children:[t&&(0,g.jsx)("div",{className:`aark-notification-header ${p.header||""}`,children:(0,g.jsx)("h4",{className:`aark-notification-title ${p.title||""}`,children:t})}),(0,g.jsx)("div",{className:`aark-notification-content ${p.content||""}`,style:{marginTop:t?"0.25rem":0},children:u?typeof u=="string"?(0,g.jsx)("div",{dangerouslySetInnerHTML:{__html:u}}):(0,g.jsx)("div",{children:u}):a?(0,g.jsx)("p",{children:a}):null})]}),x&&(0,g.jsx)("button",{onClick:C=>{C.stopPropagation(),o()},className:`aark-notification-close ${p.closeButton||""}`,"aria-label":"Close notification",type:"button",children:"\xD7"})]})]})},io=Po;var P=require("react/jsx-runtime"),So=({config:e,onClose:o})=>{let{content:t,props:a,options:n={}}=e,{position:l="top-right",showCloseIcon:u=!0,autoCloseTime:s=5e3,className:x="",preventEscClose:m=!1}=n;(0,A.useEffect)(()=>{if(s&&!a){let d=setTimeout(o,s);return()=>clearTimeout(d)}},[s,o,a]),(0,A.useEffect)(()=>{if(m)return;let d=v=>{v.key==="Escape"&&o()};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[o,m]);let f=(0,A.useCallback)(d=>{d.stopPropagation(),o()},[o]),y=`aark-notification-container ${l} ${x}`.trim(),c=R(),p=()=>{let d={position:"fixed",zIndex:1e4,margin:"1rem"};switch(l){case"top-left":return{...d,top:0,left:0};case"top-center":return{...d,top:0,left:"50%",transform:"translateX(-50%)"};case"top-right":return{...d,top:0,right:0};case"bottom-left":return{...d,bottom:0,left:0};case"bottom-center":return{...d,bottom:0,left:"50%",transform:"translateX(-50%)"};case"bottom-right":return{...d,bottom:0,right:0};default:return{...d,top:0,right:0}}},r=()=>a?(0,P.jsx)("div",{className:"aark-notification-wrapper",children:(0,P.jsx)(io,{props:a,onClose:o})}):t?(0,P.jsxs)("div",{className:y,role:"alert","aria-live":"polite",children:[u&&(0,P.jsx)("button",{onClick:f,className:"aark-notification-close","aria-label":"Close notification",type:"button",children:"\xD7"}),(0,P.jsx)("div",{className:"aark-notification-body",children:t})]}):null;return(0,ro.createPortal)((0,P.jsx)("div",{style:p(),children:r()}),c)},W=So;var Y=require("react/jsx-runtime"),Eo=()=>{let{isOpen:e,config:o,close:t}=F();return!e||!o?null:o.mode==="modal"?(0,Y.jsx)(O,{config:o,onClose:t}):o.mode==="notification"?(0,Y.jsx)(W,{config:o,onClose:t}):null},L=Eo;var G=new Set,E=null,T=null;function co(){if(T)return;let e=R();T=(0,so.createRoot)(e),T.render((0,lo.createElement)(L))}function Ro(e){return G.add(e),()=>G.delete(e)}function H(e,o){let t={type:e,config:o};G.forEach(a=>a(t))}function fo(e,o){co();let t,a;e&&typeof e=="object"&&!("$$typeof"in e)&&!Array.isArray(e)?(a=e,t=void 0):(t=e,a=void 0);let n={content:t,props:a,mode:"modal",options:Object.assign({position:"center",showCloseIcon:!0,preventEscClose:!1,preventOverlayClose:!1},o)};E=n,H("open",n)}function To(e,o){co();let t,a;e&&typeof e=="object"&&!("$$typeof"in e)&&!Array.isArray(e)?(a=e,t=void 0):(t=e,a=void 0);let n={content:t,props:a,mode:"notification",options:Object.assign({position:"top-right",showCloseIcon:!0,autoCloseTime:5e3,preventEscClose:!1},o)};E=n,H("open",n)}function Bo(e,o){fo(e,o)}function mo(){E&&(H("beforeClose",E),E=null,H("close"))}function Io(){return E!==null}function $o(){return E}function Ao(){mo()}function Fo(){T&&(T.unmount(),T=null),to()}var h={subscribe:Ro,fire:Bo,fireModal:fo,fireNotification:To,close:mo,isOpen:Io,getCurrentConfig:$o,closeAll:Ao,cleanup:Fo};var po={overlayBackground:"--aark-modal-overlay-bg",overlayBlur:"--aark-modal-overlay-blur",modalBackground:"--aark-modal-bg",modalBorderRadius:"--aark-modal-radius",modalShadow:"--aark-modal-shadow",modalPadding:"--aark-modal-pad",modalMaxWidth:"--aark-modal-max-width",modalZIndex:"--aark-modal-z",closeButtonColor:"--aark-close-color",closeButtonHoverBackground:"--aark-close-hover",closeButtonHoverColor:"--aark-close-hover-color",closeButtonFocusOutline:"--aark-close-focus-outline",animationDuration:"--aark-anim",notificationBackground:"--aark-notification-bg",notificationBorderRadius:"--aark-notification-radius",notificationShadow:"--aark-notification-shadow",notificationPadding:"--aark-notification-pad",notificationZIndex:"--aark-notification-z"};function K(e){let o=document.documentElement;Object.keys(e).forEach(t=>{let a=e[t],n=po[t];a!==void 0&&n&&o.style.setProperty(n,String(a))})}function D(){let e=document.documentElement;Object.values(po).forEach(o=>{e.style.removeProperty(o)})}function Z(){let e=document.documentElement,o=getComputedStyle(e),t=a=>o.getPropertyValue(a).trim()||void 0;return{overlayBackground:t("--aark-modal-overlay-bg"),overlayBlur:t("--aark-modal-overlay-blur"),modalBackground:t("--aark-modal-bg"),modalBorderRadius:t("--aark-modal-radius"),modalShadow:t("--aark-modal-shadow"),modalPadding:t("--aark-modal-pad"),modalMaxWidth:t("--aark-modal-max-width"),modalZIndex:parseInt(t("--aark-modal-z")??"0")||void 0,closeButtonColor:t("--aark-close-color"),closeButtonHoverBackground:t("--aark-close-hover"),closeButtonHoverColor:t("--aark-close-hover-color"),closeButtonFocusOutline:t("--aark-close-focus-outline"),animationDuration:t("--aark-anim"),notificationBackground:t("--aark-notification-bg"),notificationBorderRadius:t("--aark-notification-radius"),notificationShadow:t("--aark-notification-shadow"),notificationPadding:t("--aark-notification-pad"),notificationZIndex:parseInt(t("--aark-notification-z")??"0")||void 0}}var zo={fire:(e,o)=>h.fire(e,o),modal:(e,o)=>h.fireModal(e,o),notification:(e,o)=>h.fireNotification(e,o),close:()=>h.close(),isOpen:()=>h.isOpen(),closeAll:()=>h.closeAll(),setTheme:e=>K(e),resetTheme:()=>D(),getTheme:()=>Z()},uo=zo;0&&(module.exports={Modal,ModalProvider,Notification,aark,getAarkModalTheme,resetAarkModalTheme,setAarkModalTheme,useModal});
|
|
@@ -82,6 +82,14 @@ interface ModalOptions extends BaseOptions {
|
|
|
82
82
|
width?: string | number;
|
|
83
83
|
/** Explicit max-width (e.g. '600px', '90vw'). Overrides size preset. */
|
|
84
84
|
maxWidth?: string | number;
|
|
85
|
+
/**
|
|
86
|
+
* Controls padding on the modal body card (component-based modals only).
|
|
87
|
+
* - true / omitted → default CSS var (--aark-modal-pad, 16px)
|
|
88
|
+
* - false | 0 → no padding (useful when header/footer need edge-to-edge borders)
|
|
89
|
+
* - number → px value e.g. 24
|
|
90
|
+
* - string → any CSS value e.g. '8px 16px'
|
|
91
|
+
*/
|
|
92
|
+
bodyPadding?: boolean | string | number;
|
|
85
93
|
}
|
|
86
94
|
interface NotificationOptions extends BaseOptions {
|
|
87
95
|
position?: NotificationPosition;
|
|
@@ -82,6 +82,14 @@ interface ModalOptions extends BaseOptions {
|
|
|
82
82
|
width?: string | number;
|
|
83
83
|
/** Explicit max-width (e.g. '600px', '90vw'). Overrides size preset. */
|
|
84
84
|
maxWidth?: string | number;
|
|
85
|
+
/**
|
|
86
|
+
* Controls padding on the modal body card (component-based modals only).
|
|
87
|
+
* - true / omitted → default CSS var (--aark-modal-pad, 16px)
|
|
88
|
+
* - false | 0 → no padding (useful when header/footer need edge-to-edge borders)
|
|
89
|
+
* - number → px value e.g. 24
|
|
90
|
+
* - string → any CSS value e.g. '8px 16px'
|
|
91
|
+
*/
|
|
92
|
+
bodyPadding?: boolean | string | number;
|
|
85
93
|
}
|
|
86
94
|
interface NotificationOptions extends BaseOptions {
|
|
87
95
|
position?: NotificationPosition;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import{createElement as To}from"react";import{createRoot as Bo}from"react-dom/client";import{useEffect as
|
|
1
|
+
import{createElement as To}from"react";import{createRoot as Bo}from"react-dom/client";import{useEffect as po,useState as V,useCallback as uo}from"react";function F(){let[e,o]=V(!1),[t,a]=V(null),l=uo(()=>{k.close()},[]);return po(()=>{let r=s=>{switch(s.type){case"open":o(!0),a(s.config||null);break;case"close":o(!1),a(null);break;case"beforeClose":break}},u=k.subscribe(r);return o(k.isOpen()),a(k.getCurrentConfig()),u},[]),{isOpen:e,config:t,close:l}}import{useEffect as ko,useCallback as oo,useMemo as eo}from"react";import{createPortal as Co}from"react-dom";import{memo as go,useMemo as R}from"react";import{jsx as z}from"react/jsx-runtime";var j={white:"#FFFFFF",black:"#0B071A"},U=go(({name:e,color:o="black",style:t,className:a="",noHoverEffect:l=!1,onClick:r,size:u=24,"aria-label":s,title:h})=>{let m=R(()=>String(u),[u]),f=R(()=>j[o]?j[o]:(o.startsWith("#"),o),[o]),g=R(()=>{let i=f;return e==="close"?z("svg",{xmlns:"http://www.w3.org/2000/svg",width:m,height:m,viewBox:"0 0 16 16",fill:"none",children:z("path",{d:"M15.281 14.2198C15.3507 14.2895 15.406 14.3722 15.4437 14.4632C15.4814 14.5543 15.5008 14.6519 15.5008 14.7504C15.5008 14.849 15.4814 14.9465 15.4437 15.0376C15.406 15.1286 15.3507 15.2114 15.281 15.281C15.2114 15.3507 15.1286 15.406 15.0376 15.4437C14.9465 15.4814 14.849 15.5008 14.7504 15.5008C14.6519 15.5008 14.5543 15.4814 14.4632 15.4437C14.3722 15.406 14.2895 15.3507 14.2198 15.281L8.00042 9.06073L1.78104 15.281C1.64031 15.4218 1.44944 15.5008 1.25042 15.5008C1.05139 15.5008 0.860523 15.4218 0.719792 15.281C0.579062 15.1403 0.5 14.9494 0.5 14.7504C0.5 14.5514 0.579062 14.3605 0.719792 14.2198L6.9401 8.00042L0.719792 1.78104C0.579062 1.64031 0.5 1.44944 0.5 1.25042C0.5 1.05139 0.579062 0.860523 0.719792 0.719792C0.860523 0.579062 1.05139 0.5 1.25042 0.5C1.44944 0.5 1.64031 0.579062 1.78104 0.719792L8.00042 6.9401L14.2198 0.719792C14.3605 0.579062 14.5514 0.5 14.7504 0.5C14.9494 0.5 15.1403 0.579062 15.281 0.719792C15.4218 0.860523 15.5008 1.05139 15.5008 1.25042C15.5008 1.44944 15.4218 1.64031 15.281 1.78104L9.06073 8.00042L15.281 14.2198Z",fill:i})}):null},[e,f,m]),c=R(()=>{let i={};return s?i["aria-label"]=s:i["aria-label"]=`${e} icon`,h&&(i.title=h),i.role=r?"button":"img",i},[s,h,e,r]),p=R(()=>{if(r)return i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),r())}},[r]);return z("i",{className:`
|
|
2
2
|
inline-flex items-center justify-center bg-transparent outline-none border-none
|
|
3
|
-
${!
|
|
4
|
-
${
|
|
3
|
+
${!l&&r&&"hover:opacity-80 cursor-pointer transition-opacity duration-200"}
|
|
4
|
+
${r&&"focus:outline-2 focus:outline-blue-500 focus:outline-offset-2"}
|
|
5
5
|
${a}
|
|
6
|
-
`.trim(),style:t,onClick:
|
|
6
|
+
`.trim(),style:t,onClick:r,onKeyDown:p,tabIndex:r?0:void 0,...c,children:g})});U.displayName="Icon";var O=U;import{useMemo as X}from"react";import{jsx as M,jsxs as G}from"react/jsx-runtime";var yo={success:"\u2713",error:"\u2715",warning:"\u26A0",info:"\u24D8",question:"?"},Y={success:"#4ade80",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6",question:"#8b5cf6"},vo=({props:e,onClose:o})=>{let{title:t,text:a,type:l="info",cancelText:r="Cancel",confirmText:u="OK",onCancel:s,onConfirm:h,icon:m,html:f,showCancelButton:g=!1,showConfirmButton:c=!0,reverseButtons:p=!1,width:i="auto",fullWidth:d=!1,customClass:y={}}=e,v=()=>{s?.(),o()},I=()=>{h?.(),o()},S=X(()=>m?typeof m=="string"?M("span",{children:m}):m:M("span",{style:{color:Y[l]},children:yo[l]}),[m,l]),$=p?["confirm","cancel"]:["cancel","confirm"],A=X(()=>{let n={};return d?(n.width="calc(100vw - 20px)",n.maxWidth="calc(100vw - 20px)"):typeof i=="number"?n.width=`${i}px`:n.width=i,n},[i,d]);return G("div",{className:`aark-standard-modal ${y.popup||""}`,style:A,children:[G("div",{className:`aark-modal-content ${y.content||""}`,children:[S&&M("div",{className:`aark-modal-icon ${y.icon||""}`,children:S}),t&&M("div",{className:`aark-modal-header ${y.header||""}`,children:M("h2",{className:`aark-modal-title ${y.title||""}`,children:t})}),f?typeof f=="string"?M("div",{dangerouslySetInnerHTML:{__html:f}}):M("div",{children:f}):a?M("p",{children:a}):null]}),(g||c)&&M("div",{className:`aark-modal-footer ${y.actions||""}`,children:$.map(n=>n==="cancel"&&g?M("button",{onClick:v,className:`aark-modal-cancel-button ${y.cancelButton||""}`,children:r},"cancel"):n==="confirm"&&c?M("button",{onClick:I,className:`aark-modal-confirm-button ${y.confirmButton||""}`,style:{background:Y[l]},children:u},"confirm"):null)})]})},J=vo;var C=null,w=()=>(C||(C=document.getElementById("aark-react-modalify-root"),C||(C=document.createElement("div"),C.id="aark-react-modalify-root",C.style.cssText=`
|
|
7
7
|
position: fixed;
|
|
8
8
|
top: 0;
|
|
9
9
|
left: 0;
|
|
10
10
|
width: 100%;
|
|
11
11
|
height: 100%;
|
|
12
12
|
pointer-events: none;
|
|
13
|
-
|
|
13
|
+
z-index: var(--aark-modal-z, 9999);
|
|
14
|
+
`,document.body.appendChild(C))),C),Q=()=>{C&&C.children.length===0&&(C.remove(),C=null)};import{jsx as x,jsxs as to}from"react/jsx-runtime";var ho={sm:"400px",md:"550px",lg:"700px",xl:"900px",full:"calc(100vw - 32px)"},Mo=({config:e,onClose:o})=>{let{content:t,props:a,options:l={}}=e,{position:r="center",showCloseIcon:u=!0,className:s="",overlayClassName:h="",preventEscClose:m=!1,preventOverlayClose:f=!1,width:g,maxWidth:c,size:p,bodyPadding:i}=l;ko(()=>{if(m)return;let n=E=>{E.key==="Escape"&&o()};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[o,m]);let d=oo(n=>{n.target===n.currentTarget&&!f&&o()},[o,f]),y=oo(n=>{n.stopPropagation(),o()},[o]),v=eo(()=>{let n={};if(g!==void 0&&(n.width=typeof g=="number"?`${g}px`:g,c===void 0&&(n.maxWidth=n.width)),c!==void 0)n.maxWidth=typeof c=="number"?`${c}px`:c;else if(p){let E=ho[p];p==="full"&&(n.width=n.width??E),n.maxWidth=E}return n},[g,c,p]),I=eo(()=>i===void 0||i===!0?{}:i===!1||i===0?{padding:0}:typeof i=="number"?{padding:`${i}px`}:{padding:i},[i]),S=`aark-modal-container ${r} ${s}`.trim(),$=w(),A=()=>a?to("div",{className:S,style:v,role:"dialog","aria-modal":"true",onClick:n=>n.stopPropagation(),children:[u&&x("button",{onClick:y,className:"aark-modal-close","aria-label":"Close Modal",type:"button",children:x(O,{name:"close",size:12})}),x("div",{className:"aark-modal-wrapper",children:x(J,{props:a,onClose:o})})]}):t?x("div",{className:S,style:v,role:"dialog","aria-modal":"true",onClick:n=>n.stopPropagation(),children:to("div",{className:"aark-modal-body",style:I,children:[u&&x("button",{onClick:y,className:"aark-modal-close","aria-label":"Close Modal",type:"button",children:x(O,{name:"close",size:12})}),t]})}):null;return Co(x("div",{className:`aark-modal-overlay ${h}`.trim(),onClick:d,style:{position:"fixed",inset:0,zIndex:"var(--aark-modal-z, 9999)",background:"var(--aark-modal-overlay-bg)",backdropFilter:"blur(var(--aark-modal-overlay-blur, 0px))",WebkitBackdropFilter:"blur(var(--aark-modal-overlay-blur, 0px))",animation:"fade-in var(--aark-anim)",display:"flex",alignItems:r==="center"?"center":r.startsWith("top")?"flex-start":"flex-end",justifyContent:r.endsWith("center")?"center":r.endsWith("right")?"flex-end":"flex-start",padding:"1rem",overflowY:"auto",boxSizing:"border-box"},children:A()}),$)},W=Mo;import{useEffect as ro,useCallback as wo}from"react";import{createPortal as Po}from"react-dom";import{useMemo as ao,useEffect as bo}from"react";import{jsx as b,jsxs as L}from"react/jsx-runtime";var no={success:"#4ade80",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6",question:"#8b5cf6"},xo={success:"\u2713",error:"\u2715",warning:"\u26A0",info:"\u24D8",question:"?"},No=({props:e,onClose:o})=>{let{title:t,text:a,type:l="info",icon:r,html:u,timer:s=5e3,showCloseButton:h=!0,clickToClose:m=!0,width:f,fullWidth:g=!1,padding:c,customClass:p={}}=e;bo(()=>{if(s&&s>0){let v=setTimeout(o,s);return()=>clearTimeout(v)}},[s,o]);let i=()=>{m&&o()},d=ao(()=>r?typeof r=="string"?b("span",{children:r}):r:b("span",{style:{color:no[l]},children:xo[l]}),[r,l]),y=ao(()=>{let v={};return c!==void 0&&(v.padding=typeof c=="number"?`${c}px`:c),g?(v.width="calc(100vw - 40px)",v.maxWidth="calc(100vw - 40px)"):f!==void 0&&(v.width=typeof f=="number"?`${f}px`:f),v},[f,g,c]);return L("div",{className:`aark-standard-notification aark-notification-${l} ${p.popup||""}`,style:y,onClick:i,children:[s&&s>0&&b("div",{className:"aark-notification-progress",style:{background:no[l],animation:`aark-notification-progress ${s}ms linear forwards`}}),L("div",{style:{display:"flex",alignItems:"flex-start",gap:"0.75rem"},children:[d&&b("div",{className:`aark-notification-icon ${p.icon||""}`,children:d}),L("div",{style:{flex:1,minWidth:0},children:[t&&b("div",{className:`aark-notification-header ${p.header||""}`,children:b("h4",{className:`aark-notification-title ${p.title||""}`,children:t})}),b("div",{className:`aark-notification-content ${p.content||""}`,style:{marginTop:t?"0.25rem":0},children:u?typeof u=="string"?b("div",{dangerouslySetInnerHTML:{__html:u}}):b("div",{children:u}):a?b("p",{children:a}):null})]}),h&&b("button",{onClick:v=>{v.stopPropagation(),o()},className:`aark-notification-close ${p.closeButton||""}`,"aria-label":"Close notification",type:"button",children:"\xD7"})]})]})},io=No;import{jsx as T,jsxs as Eo}from"react/jsx-runtime";var So=({config:e,onClose:o})=>{let{content:t,props:a,options:l={}}=e,{position:r="top-right",showCloseIcon:u=!0,autoCloseTime:s=5e3,className:h="",preventEscClose:m=!1}=l;ro(()=>{if(s&&!a){let d=setTimeout(o,s);return()=>clearTimeout(d)}},[s,o,a]),ro(()=>{if(m)return;let d=y=>{y.key==="Escape"&&o()};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[o,m]);let f=wo(d=>{d.stopPropagation(),o()},[o]),g=`aark-notification-container ${r} ${h}`.trim(),c=w(),p=()=>{let d={position:"fixed",zIndex:1e4,margin:"1rem"};switch(r){case"top-left":return{...d,top:0,left:0};case"top-center":return{...d,top:0,left:"50%",transform:"translateX(-50%)"};case"top-right":return{...d,top:0,right:0};case"bottom-left":return{...d,bottom:0,left:0};case"bottom-center":return{...d,bottom:0,left:"50%",transform:"translateX(-50%)"};case"bottom-right":return{...d,bottom:0,right:0};default:return{...d,top:0,right:0}}},i=()=>a?T("div",{className:"aark-notification-wrapper",children:T(io,{props:a,onClose:o})}):t?Eo("div",{className:g,role:"alert","aria-live":"polite",children:[u&&T("button",{onClick:f,className:"aark-notification-close","aria-label":"Close notification",type:"button",children:"\xD7"}),T("div",{className:"aark-notification-body",children:t})]}):null;return Po(T("div",{style:p(),children:i()}),c)},H=So;import{jsx as lo}from"react/jsx-runtime";var Ro=()=>{let{isOpen:e,config:o,close:t}=F();return!e||!o?null:o.mode==="modal"?lo(W,{config:o,onClose:t}):o.mode==="notification"?lo(H,{config:o,onClose:t}):null},K=Ro;var D=new Set,N=null,P=null;function so(){if(P)return;let e=w();P=Bo(e),P.render(To(K))}function Io(e){return D.add(e),()=>D.delete(e)}function B(e,o){let t={type:e,config:o};D.forEach(a=>a(t))}function co(e,o){so();let t,a;e&&typeof e=="object"&&!("$$typeof"in e)&&!Array.isArray(e)?(a=e,t=void 0):(t=e,a=void 0);let l={content:t,props:a,mode:"modal",options:Object.assign({position:"center",showCloseIcon:!0,preventEscClose:!1,preventOverlayClose:!1},o)};N=l,B("open",l)}function $o(e,o){so();let t,a;e&&typeof e=="object"&&!("$$typeof"in e)&&!Array.isArray(e)?(a=e,t=void 0):(t=e,a=void 0);let l={content:t,props:a,mode:"notification",options:Object.assign({position:"top-right",showCloseIcon:!0,autoCloseTime:5e3,preventEscClose:!1},o)};N=l,B("open",l)}function Ao(e,o){co(e,o)}function fo(){N&&(B("beforeClose",N),N=null,B("close"))}function Fo(){return N!==null}function zo(){return N}function Oo(){fo()}function Wo(){P&&(P.unmount(),P=null),Q()}var k={subscribe:Io,fire:Ao,fireModal:co,fireNotification:$o,close:fo,isOpen:Fo,getCurrentConfig:zo,closeAll:Oo,cleanup:Wo};var mo={overlayBackground:"--aark-modal-overlay-bg",overlayBlur:"--aark-modal-overlay-blur",modalBackground:"--aark-modal-bg",modalBorderRadius:"--aark-modal-radius",modalShadow:"--aark-modal-shadow",modalPadding:"--aark-modal-pad",modalMaxWidth:"--aark-modal-max-width",modalZIndex:"--aark-modal-z",closeButtonColor:"--aark-close-color",closeButtonHoverBackground:"--aark-close-hover",closeButtonHoverColor:"--aark-close-hover-color",closeButtonFocusOutline:"--aark-close-focus-outline",animationDuration:"--aark-anim",notificationBackground:"--aark-notification-bg",notificationBorderRadius:"--aark-notification-radius",notificationShadow:"--aark-notification-shadow",notificationPadding:"--aark-notification-pad",notificationZIndex:"--aark-notification-z"};function Z(e){let o=document.documentElement;Object.keys(e).forEach(t=>{let a=e[t],l=mo[t];a!==void 0&&l&&o.style.setProperty(l,String(a))})}function _(){let e=document.documentElement;Object.values(mo).forEach(o=>{e.style.removeProperty(o)})}function q(){let e=document.documentElement,o=getComputedStyle(e),t=a=>o.getPropertyValue(a).trim()||void 0;return{overlayBackground:t("--aark-modal-overlay-bg"),overlayBlur:t("--aark-modal-overlay-blur"),modalBackground:t("--aark-modal-bg"),modalBorderRadius:t("--aark-modal-radius"),modalShadow:t("--aark-modal-shadow"),modalPadding:t("--aark-modal-pad"),modalMaxWidth:t("--aark-modal-max-width"),modalZIndex:parseInt(t("--aark-modal-z")??"0")||void 0,closeButtonColor:t("--aark-close-color"),closeButtonHoverBackground:t("--aark-close-hover"),closeButtonHoverColor:t("--aark-close-hover-color"),closeButtonFocusOutline:t("--aark-close-focus-outline"),animationDuration:t("--aark-anim"),notificationBackground:t("--aark-notification-bg"),notificationBorderRadius:t("--aark-notification-radius"),notificationShadow:t("--aark-notification-shadow"),notificationPadding:t("--aark-notification-pad"),notificationZIndex:parseInt(t("--aark-notification-z")??"0")||void 0}}var Lo={fire:(e,o)=>k.fire(e,o),modal:(e,o)=>k.fireModal(e,o),notification:(e,o)=>k.fireNotification(e,o),close:()=>k.close(),isOpen:()=>k.isOpen(),closeAll:()=>k.closeAll(),setTheme:e=>Z(e),resetTheme:()=>_(),getTheme:()=>q()},Ho=Lo;export{W as Modal,K as ModalProvider,H as Notification,Ho as aark,q as getAarkModalTheme,_ as resetAarkModalTheme,Z as setAarkModalTheme,F as useModal};
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var j=Object.defineProperty;var go=Object.getOwnPropertyDescriptor;var yo=Object.getOwnPropertyNames;var vo=Object.prototype.hasOwnProperty;var ko=(t,o)=>{for(var e in o)j(t,e,{get:o[e],enumerable:!0})},Co=(t,o,e,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of yo(o))!vo.call(t,n)&&n!==e&&j(t,n,{get:()=>o[n],enumerable:!(a=go(o,n))||a.enumerable});return t};var ho=t=>Co(j({},"__esModule",{value:!0}),t);var Oo={};ko(Oo,{Modal:()=>O,ModalProvider:()=>L,Notification:()=>W,aark:()=>uo,getAarkModalTheme:()=>Z,resetAarkModalTheme:()=>D,setAarkModalTheme:()=>K,useModal:()=>F});module.exports=ho(Oo);var lo=require("react"),so=require("react-dom/client");var S=require("react");function F(){let[t,o]=(0,S.useState)(!1),[e,a]=(0,S.useState)(null),n=(0,S.useCallback)(()=>{h.close()},[]);return(0,S.useEffect)(()=>{let l=s=>{switch(s.type){case"open":o(!0),a(s.config||null);break;case"close":o(!1),a(null);break;case"beforeClose":break}},u=h.subscribe(l);return o(h.isOpen()),a(h.getCurrentConfig()),u},[]),{isOpen:t,config:e,close:n}}var w=require("react"),ao=require("react-dom");var N=require("react"),z=require("react/jsx-runtime"),J={white:"#FFFFFF",black:"#0B071A"},Q=(0,N.memo)(({name:t,color:o="black",style:e,className:a="",noHoverEffect:n=!1,onClick:l,size:u=24,"aria-label":s,title:x})=>{let m=(0,N.useMemo)(()=>String(u),[u]),f=(0,N.useMemo)(()=>J[o]?J[o]:(o.startsWith("#"),o),[o]),y=(0,N.useMemo)(()=>{let r=f;return t==="close"?(0,z.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:m,height:m,viewBox:"0 0 16 16",fill:"none",children:(0,z.jsx)("path",{d:"M15.281 14.2198C15.3507 14.2895 15.406 14.3722 15.4437 14.4632C15.4814 14.5543 15.5008 14.6519 15.5008 14.7504C15.5008 14.849 15.4814 14.9465 15.4437 15.0376C15.406 15.1286 15.3507 15.2114 15.281 15.281C15.2114 15.3507 15.1286 15.406 15.0376 15.4437C14.9465 15.4814 14.849 15.5008 14.7504 15.5008C14.6519 15.5008 14.5543 15.4814 14.4632 15.4437C14.3722 15.406 14.2895 15.3507 14.2198 15.281L8.00042 9.06073L1.78104 15.281C1.64031 15.4218 1.44944 15.5008 1.25042 15.5008C1.05139 15.5008 0.860523 15.4218 0.719792 15.281C0.579062 15.1403 0.5 14.9494 0.5 14.7504C0.5 14.5514 0.579062 14.3605 0.719792 14.2198L6.9401 8.00042L0.719792 1.78104C0.579062 1.64031 0.5 1.44944 0.5 1.25042C0.5 1.05139 0.579062 0.860523 0.719792 0.719792C0.860523 0.579062 1.05139 0.5 1.25042 0.5C1.44944 0.5 1.64031 0.579062 1.78104 0.719792L8.00042 6.9401L14.2198 0.719792C14.3605 0.579062 14.5514 0.5 14.7504 0.5C14.9494 0.5 15.1403 0.579062 15.281 0.719792C15.4218 0.860523 15.5008 1.05139 15.5008 1.25042C15.5008 1.44944 15.4218 1.64031 15.281 1.78104L9.06073 8.00042L15.281 14.2198Z",fill:r})}):null},[t,f,m]),c=(0,N.useMemo)(()=>{let r={};return s?r["aria-label"]=s:r["aria-label"]=`${t} icon`,x&&(r.title=x),r.role=l?"button":"img",r},[s,x,t,l]),p=(0,N.useMemo)(()=>{if(l)return r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),l())}},[l]);return(0,z.jsx)("i",{className:`
|
|
2
2
|
inline-flex items-center justify-center bg-transparent outline-none border-none
|
|
3
|
-
${!n&&
|
|
4
|
-
${
|
|
3
|
+
${!n&&l&&"hover:opacity-80 cursor-pointer transition-opacity duration-200"}
|
|
4
|
+
${l&&"focus:outline-2 focus:outline-blue-500 focus:outline-offset-2"}
|
|
5
5
|
${a}
|
|
6
|
-
`.trim(),style:e,onClick:
|
|
6
|
+
`.trim(),style:e,onClick:l,onKeyDown:p,tabIndex:l?0:void 0,...c,children:y})});Q.displayName="Icon";var U=Q;var X=require("react"),k=require("react/jsx-runtime"),Mo={success:"\u2713",error:"\u2715",warning:"\u26A0",info:"\u24D8",question:"?"},oo={success:"#4ade80",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6",question:"#8b5cf6"},bo=({props:t,onClose:o})=>{let{title:e,text:a,type:n="info",cancelText:l="Cancel",confirmText:u="OK",onCancel:s,onConfirm:x,icon:m,html:f,showCancelButton:y=!1,showConfirmButton:c=!0,reverseButtons:p=!1,width:r="auto",fullWidth:d=!1,customClass:v={}}=t,C=()=>{s?.(),o()},_=()=>{x?.(),o()},B=(0,X.useMemo)(()=>m?typeof m=="string"?(0,k.jsx)("span",{children:m}):m:(0,k.jsx)("span",{style:{color:oo[n]},children:Mo[n]}),[m,n]),q=p?["confirm","cancel"]:["cancel","confirm"],V=(0,X.useMemo)(()=>{let i={};return d?(i.width="calc(100vw - 20px)",i.maxWidth="calc(100vw - 20px)"):typeof r=="number"?i.width=`${r}px`:i.width=r,i},[r,d]);return(0,k.jsxs)("div",{className:`aark-standard-modal ${v.popup||""}`,style:V,children:[(0,k.jsxs)("div",{className:`aark-modal-content ${v.content||""}`,children:[B&&(0,k.jsx)("div",{className:`aark-modal-icon ${v.icon||""}`,children:B}),e&&(0,k.jsx)("div",{className:`aark-modal-header ${v.header||""}`,children:(0,k.jsx)("h2",{className:`aark-modal-title ${v.title||""}`,children:e})}),f?typeof f=="string"?(0,k.jsx)("div",{dangerouslySetInnerHTML:{__html:f}}):(0,k.jsx)("div",{children:f}):a?(0,k.jsx)("p",{children:a}):null]}),(y||c)&&(0,k.jsx)("div",{className:`aark-modal-footer ${v.actions||""}`,children:q.map(i=>i==="cancel"&&y?(0,k.jsx)("button",{onClick:C,className:`aark-modal-cancel-button ${v.cancelButton||""}`,children:l},"cancel"):i==="confirm"&&c?(0,k.jsx)("button",{onClick:_,className:`aark-modal-confirm-button ${v.confirmButton||""}`,style:{background:oo[n]},children:u},"confirm"):null)})]})},to=bo;var M=null,R=()=>(M||(M=document.getElementById("aark-react-modalify-root"),M||(M=document.createElement("div"),M.id="aark-react-modalify-root",M.style.cssText=`
|
|
7
7
|
position: fixed;
|
|
8
8
|
top: 0;
|
|
9
9
|
left: 0;
|
|
10
10
|
width: 100%;
|
|
11
11
|
height: 100%;
|
|
12
12
|
pointer-events: none;
|
|
13
|
-
|
|
13
|
+
z-index: var(--aark-modal-z, 9999);
|
|
14
|
+
`,document.body.appendChild(M))),M),eo=()=>{M&&M.children.length===0&&(M.remove(),M=null)};var b=require("react/jsx-runtime"),xo={sm:"400px",md:"550px",lg:"700px",xl:"900px",full:"calc(100vw - 32px)"},No=({config:t,onClose:o})=>{let{content:e,props:a,options:n={}}=t,{position:l="center",showCloseIcon:u=!0,className:s="",overlayClassName:x="",preventEscClose:m=!1,preventOverlayClose:f=!1,width:y,maxWidth:c,size:p,bodyPadding:r}=n;(0,w.useEffect)(()=>{if(m)return;let i=I=>{I.key==="Escape"&&o()};return document.addEventListener("keydown",i),()=>document.removeEventListener("keydown",i)},[o,m]);let d=(0,w.useCallback)(i=>{i.target===i.currentTarget&&!f&&o()},[o,f]),v=(0,w.useCallback)(i=>{i.stopPropagation(),o()},[o]),C=(0,w.useMemo)(()=>{let i={};if(y!==void 0&&(i.width=typeof y=="number"?`${y}px`:y,c===void 0&&(i.maxWidth=i.width)),c!==void 0)i.maxWidth=typeof c=="number"?`${c}px`:c;else if(p){let I=xo[p];p==="full"&&(i.width=i.width??I),i.maxWidth=I}return i},[y,c,p]),_=(0,w.useMemo)(()=>r===void 0||r===!0?{}:r===!1||r===0?{padding:0}:typeof r=="number"?{padding:`${r}px`}:{padding:r},[r]),B=`aark-modal-container ${l} ${s}`.trim(),q=R(),V=()=>a?(0,b.jsxs)("div",{className:B,style:C,role:"dialog","aria-modal":"true",onClick:i=>i.stopPropagation(),children:[u&&(0,b.jsx)("button",{onClick:v,className:"aark-modal-close","aria-label":"Close Modal",type:"button",children:(0,b.jsx)(U,{name:"close",size:12})}),(0,b.jsx)("div",{className:"aark-modal-wrapper",children:(0,b.jsx)(to,{props:a,onClose:o})})]}):e?(0,b.jsx)("div",{className:B,style:C,role:"dialog","aria-modal":"true",onClick:i=>i.stopPropagation(),children:(0,b.jsxs)("div",{className:"aark-modal-body",style:_,children:[u&&(0,b.jsx)("button",{onClick:v,className:"aark-modal-close","aria-label":"Close Modal",type:"button",children:(0,b.jsx)(U,{name:"close",size:12})}),e]})}):null;return(0,ao.createPortal)((0,b.jsx)("div",{className:`aark-modal-overlay ${x}`.trim(),onClick:d,style:{position:"fixed",inset:0,zIndex:"var(--aark-modal-z, 9999)",background:"var(--aark-modal-overlay-bg)",backdropFilter:"blur(var(--aark-modal-overlay-blur, 0px))",WebkitBackdropFilter:"blur(var(--aark-modal-overlay-blur, 0px))",animation:"fade-in var(--aark-anim)",display:"flex",alignItems:l==="center"?"center":l.startsWith("top")?"flex-start":"flex-end",justifyContent:l.endsWith("center")?"center":l.endsWith("right")?"flex-end":"flex-start",padding:"1rem",overflowY:"auto",boxSizing:"border-box"},children:V()}),q)},O=No;var A=require("react"),ro=require("react-dom");var $=require("react"),g=require("react/jsx-runtime"),no={success:"#4ade80",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6",question:"#8b5cf6"},wo={success:"\u2713",error:"\u2715",warning:"\u26A0",info:"\u24D8",question:"?"},Po=({props:t,onClose:o})=>{let{title:e,text:a,type:n="info",icon:l,html:u,timer:s=5e3,showCloseButton:x=!0,clickToClose:m=!0,width:f,fullWidth:y=!1,padding:c,customClass:p={}}=t;(0,$.useEffect)(()=>{if(s&&s>0){let C=setTimeout(o,s);return()=>clearTimeout(C)}},[s,o]);let r=()=>{m&&o()},d=(0,$.useMemo)(()=>l?typeof l=="string"?(0,g.jsx)("span",{children:l}):l:(0,g.jsx)("span",{style:{color:no[n]},children:wo[n]}),[l,n]),v=(0,$.useMemo)(()=>{let C={};return c!==void 0&&(C.padding=typeof c=="number"?`${c}px`:c),y?(C.width="calc(100vw - 40px)",C.maxWidth="calc(100vw - 40px)"):f!==void 0&&(C.width=typeof f=="number"?`${f}px`:f),C},[f,y,c]);return(0,g.jsxs)("div",{className:`aark-standard-notification aark-notification-${n} ${p.popup||""}`,style:v,onClick:r,children:[s&&s>0&&(0,g.jsx)("div",{className:"aark-notification-progress",style:{background:no[n],animation:`aark-notification-progress ${s}ms linear forwards`}}),(0,g.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:"0.75rem"},children:[d&&(0,g.jsx)("div",{className:`aark-notification-icon ${p.icon||""}`,children:d}),(0,g.jsxs)("div",{style:{flex:1,minWidth:0},children:[e&&(0,g.jsx)("div",{className:`aark-notification-header ${p.header||""}`,children:(0,g.jsx)("h4",{className:`aark-notification-title ${p.title||""}`,children:e})}),(0,g.jsx)("div",{className:`aark-notification-content ${p.content||""}`,style:{marginTop:e?"0.25rem":0},children:u?typeof u=="string"?(0,g.jsx)("div",{dangerouslySetInnerHTML:{__html:u}}):(0,g.jsx)("div",{children:u}):a?(0,g.jsx)("p",{children:a}):null})]}),x&&(0,g.jsx)("button",{onClick:C=>{C.stopPropagation(),o()},className:`aark-notification-close ${p.closeButton||""}`,"aria-label":"Close notification",type:"button",children:"\xD7"})]})]})},io=Po;var P=require("react/jsx-runtime"),So=({config:t,onClose:o})=>{let{content:e,props:a,options:n={}}=t,{position:l="top-right",showCloseIcon:u=!0,autoCloseTime:s=5e3,className:x="",preventEscClose:m=!1}=n;(0,A.useEffect)(()=>{if(s&&!a){let d=setTimeout(o,s);return()=>clearTimeout(d)}},[s,o,a]),(0,A.useEffect)(()=>{if(m)return;let d=v=>{v.key==="Escape"&&o()};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[o,m]);let f=(0,A.useCallback)(d=>{d.stopPropagation(),o()},[o]),y=`aark-notification-container ${l} ${x}`.trim(),c=R(),p=()=>{let d={position:"fixed",zIndex:1e4,margin:"1rem"};switch(l){case"top-left":return{...d,top:0,left:0};case"top-center":return{...d,top:0,left:"50%",transform:"translateX(-50%)"};case"top-right":return{...d,top:0,right:0};case"bottom-left":return{...d,bottom:0,left:0};case"bottom-center":return{...d,bottom:0,left:"50%",transform:"translateX(-50%)"};case"bottom-right":return{...d,bottom:0,right:0};default:return{...d,top:0,right:0}}},r=()=>a?(0,P.jsx)("div",{className:"aark-notification-wrapper",children:(0,P.jsx)(io,{props:a,onClose:o})}):e?(0,P.jsxs)("div",{className:y,role:"alert","aria-live":"polite",children:[u&&(0,P.jsx)("button",{onClick:f,className:"aark-notification-close","aria-label":"Close notification",type:"button",children:"\xD7"}),(0,P.jsx)("div",{className:"aark-notification-body",children:e})]}):null;return(0,ro.createPortal)((0,P.jsx)("div",{style:p(),children:r()}),c)},W=So;var Y=require("react/jsx-runtime"),Eo=()=>{let{isOpen:t,config:o,close:e}=F();return!t||!o?null:o.mode==="modal"?(0,Y.jsx)(O,{config:o,onClose:e}):o.mode==="notification"?(0,Y.jsx)(W,{config:o,onClose:e}):null},L=Eo;var G=new Set,E=null,T=null;function co(){if(T)return;let t=R();T=(0,so.createRoot)(t),T.render((0,lo.createElement)(L))}function Ro(t){return G.add(t),()=>G.delete(t)}function H(t,o){let e={type:t,config:o};G.forEach(a=>a(e))}function fo(t,o){co();let e,a;t&&typeof t=="object"&&!("$$typeof"in t)&&!Array.isArray(t)?(a=t,e=void 0):(e=t,a=void 0);let n={content:e,props:a,mode:"modal",options:Object.assign({position:"center",showCloseIcon:!0,preventEscClose:!1,preventOverlayClose:!1},o)};E=n,H("open",n)}function To(t,o){co();let e,a;t&&typeof t=="object"&&!("$$typeof"in t)&&!Array.isArray(t)?(a=t,e=void 0):(e=t,a=void 0);let n={content:e,props:a,mode:"notification",options:Object.assign({position:"top-right",showCloseIcon:!0,autoCloseTime:5e3,preventEscClose:!1},o)};E=n,H("open",n)}function Bo(t,o){fo(t,o)}function mo(){E&&(H("beforeClose",E),E=null,H("close"))}function Io(){return E!==null}function $o(){return E}function Ao(){mo()}function Fo(){T&&(T.unmount(),T=null),eo()}var h={subscribe:Ro,fire:Bo,fireModal:fo,fireNotification:To,close:mo,isOpen:Io,getCurrentConfig:$o,closeAll:Ao,cleanup:Fo};var po={overlayBackground:"--aark-modal-overlay-bg",overlayBlur:"--aark-modal-overlay-blur",modalBackground:"--aark-modal-bg",modalBorderRadius:"--aark-modal-radius",modalShadow:"--aark-modal-shadow",modalPadding:"--aark-modal-pad",modalMaxWidth:"--aark-modal-max-width",modalZIndex:"--aark-modal-z",closeButtonColor:"--aark-close-color",closeButtonHoverBackground:"--aark-close-hover",closeButtonHoverColor:"--aark-close-hover-color",closeButtonFocusOutline:"--aark-close-focus-outline",animationDuration:"--aark-anim",notificationBackground:"--aark-notification-bg",notificationBorderRadius:"--aark-notification-radius",notificationShadow:"--aark-notification-shadow",notificationPadding:"--aark-notification-pad",notificationZIndex:"--aark-notification-z"};function K(t){let o=document.documentElement;Object.keys(t).forEach(e=>{let a=t[e],n=po[e];a!==void 0&&n&&o.style.setProperty(n,String(a))})}function D(){let t=document.documentElement;Object.values(po).forEach(o=>{t.style.removeProperty(o)})}function Z(){let t=document.documentElement,o=getComputedStyle(t),e=a=>o.getPropertyValue(a).trim()||void 0;return{overlayBackground:e("--aark-modal-overlay-bg"),overlayBlur:e("--aark-modal-overlay-blur"),modalBackground:e("--aark-modal-bg"),modalBorderRadius:e("--aark-modal-radius"),modalShadow:e("--aark-modal-shadow"),modalPadding:e("--aark-modal-pad"),modalMaxWidth:e("--aark-modal-max-width"),modalZIndex:parseInt(e("--aark-modal-z")??"0")||void 0,closeButtonColor:e("--aark-close-color"),closeButtonHoverBackground:e("--aark-close-hover"),closeButtonHoverColor:e("--aark-close-hover-color"),closeButtonFocusOutline:e("--aark-close-focus-outline"),animationDuration:e("--aark-anim"),notificationBackground:e("--aark-notification-bg"),notificationBorderRadius:e("--aark-notification-radius"),notificationShadow:e("--aark-notification-shadow"),notificationPadding:e("--aark-notification-pad"),notificationZIndex:parseInt(e("--aark-notification-z")??"0")||void 0}}var zo={fire:(t,o)=>h.fire(t,o),modal:(t,o)=>h.fireModal(t,o),notification:(t,o)=>h.fireNotification(t,o),close:()=>h.close(),isOpen:()=>h.isOpen(),closeAll:()=>h.closeAll(),setTheme:t=>K(t),resetTheme:()=>D(),getTheme:()=>Z()},uo=zo;0&&(module.exports={Modal,ModalProvider,Notification,aark,getAarkModalTheme,resetAarkModalTheme,setAarkModalTheme,useModal});
|
package/dist/index.d.mts
CHANGED
|
@@ -82,6 +82,14 @@ interface ModalOptions extends BaseOptions {
|
|
|
82
82
|
width?: string | number;
|
|
83
83
|
/** Explicit max-width (e.g. '600px', '90vw'). Overrides size preset. */
|
|
84
84
|
maxWidth?: string | number;
|
|
85
|
+
/**
|
|
86
|
+
* Controls padding on the modal body card (component-based modals only).
|
|
87
|
+
* - true / omitted → default CSS var (--aark-modal-pad, 16px)
|
|
88
|
+
* - false | 0 → no padding (useful when header/footer need edge-to-edge borders)
|
|
89
|
+
* - number → px value e.g. 24
|
|
90
|
+
* - string → any CSS value e.g. '8px 16px'
|
|
91
|
+
*/
|
|
92
|
+
bodyPadding?: boolean | string | number;
|
|
85
93
|
}
|
|
86
94
|
interface NotificationOptions extends BaseOptions {
|
|
87
95
|
position?: NotificationPosition;
|
package/dist/index.d.ts
CHANGED
|
@@ -82,6 +82,14 @@ interface ModalOptions extends BaseOptions {
|
|
|
82
82
|
width?: string | number;
|
|
83
83
|
/** Explicit max-width (e.g. '600px', '90vw'). Overrides size preset. */
|
|
84
84
|
maxWidth?: string | number;
|
|
85
|
+
/**
|
|
86
|
+
* Controls padding on the modal body card (component-based modals only).
|
|
87
|
+
* - true / omitted → default CSS var (--aark-modal-pad, 16px)
|
|
88
|
+
* - false | 0 → no padding (useful when header/footer need edge-to-edge borders)
|
|
89
|
+
* - number → px value e.g. 24
|
|
90
|
+
* - string → any CSS value e.g. '8px 16px'
|
|
91
|
+
*/
|
|
92
|
+
bodyPadding?: boolean | string | number;
|
|
85
93
|
}
|
|
86
94
|
interface NotificationOptions extends BaseOptions {
|
|
87
95
|
position?: NotificationPosition;
|
package/dist/index.esm.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import{createElement as
|
|
1
|
+
import{createElement as To}from"react";import{createRoot as Bo}from"react-dom/client";import{useEffect as po,useState as V,useCallback as uo}from"react";function F(){let[t,o]=V(!1),[e,a]=V(null),l=uo(()=>{k.close()},[]);return po(()=>{let r=s=>{switch(s.type){case"open":o(!0),a(s.config||null);break;case"close":o(!1),a(null);break;case"beforeClose":break}},u=k.subscribe(r);return o(k.isOpen()),a(k.getCurrentConfig()),u},[]),{isOpen:t,config:e,close:l}}import{useEffect as ko,useCallback as oo,useMemo as to}from"react";import{createPortal as Co}from"react-dom";import{memo as go,useMemo as R}from"react";import{jsx as z}from"react/jsx-runtime";var j={white:"#FFFFFF",black:"#0B071A"},U=go(({name:t,color:o="black",style:e,className:a="",noHoverEffect:l=!1,onClick:r,size:u=24,"aria-label":s,title:h})=>{let m=R(()=>String(u),[u]),f=R(()=>j[o]?j[o]:(o.startsWith("#"),o),[o]),g=R(()=>{let i=f;return t==="close"?z("svg",{xmlns:"http://www.w3.org/2000/svg",width:m,height:m,viewBox:"0 0 16 16",fill:"none",children:z("path",{d:"M15.281 14.2198C15.3507 14.2895 15.406 14.3722 15.4437 14.4632C15.4814 14.5543 15.5008 14.6519 15.5008 14.7504C15.5008 14.849 15.4814 14.9465 15.4437 15.0376C15.406 15.1286 15.3507 15.2114 15.281 15.281C15.2114 15.3507 15.1286 15.406 15.0376 15.4437C14.9465 15.4814 14.849 15.5008 14.7504 15.5008C14.6519 15.5008 14.5543 15.4814 14.4632 15.4437C14.3722 15.406 14.2895 15.3507 14.2198 15.281L8.00042 9.06073L1.78104 15.281C1.64031 15.4218 1.44944 15.5008 1.25042 15.5008C1.05139 15.5008 0.860523 15.4218 0.719792 15.281C0.579062 15.1403 0.5 14.9494 0.5 14.7504C0.5 14.5514 0.579062 14.3605 0.719792 14.2198L6.9401 8.00042L0.719792 1.78104C0.579062 1.64031 0.5 1.44944 0.5 1.25042C0.5 1.05139 0.579062 0.860523 0.719792 0.719792C0.860523 0.579062 1.05139 0.5 1.25042 0.5C1.44944 0.5 1.64031 0.579062 1.78104 0.719792L8.00042 6.9401L14.2198 0.719792C14.3605 0.579062 14.5514 0.5 14.7504 0.5C14.9494 0.5 15.1403 0.579062 15.281 0.719792C15.4218 0.860523 15.5008 1.05139 15.5008 1.25042C15.5008 1.44944 15.4218 1.64031 15.281 1.78104L9.06073 8.00042L15.281 14.2198Z",fill:i})}):null},[t,f,m]),c=R(()=>{let i={};return s?i["aria-label"]=s:i["aria-label"]=`${t} icon`,h&&(i.title=h),i.role=r?"button":"img",i},[s,h,t,r]),p=R(()=>{if(r)return i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),r())}},[r]);return z("i",{className:`
|
|
2
2
|
inline-flex items-center justify-center bg-transparent outline-none border-none
|
|
3
|
-
${!
|
|
4
|
-
${
|
|
3
|
+
${!l&&r&&"hover:opacity-80 cursor-pointer transition-opacity duration-200"}
|
|
4
|
+
${r&&"focus:outline-2 focus:outline-blue-500 focus:outline-offset-2"}
|
|
5
5
|
${a}
|
|
6
|
-
`.trim(),style:e,onClick:
|
|
6
|
+
`.trim(),style:e,onClick:r,onKeyDown:p,tabIndex:r?0:void 0,...c,children:g})});U.displayName="Icon";var O=U;import{useMemo as X}from"react";import{jsx as M,jsxs as G}from"react/jsx-runtime";var yo={success:"\u2713",error:"\u2715",warning:"\u26A0",info:"\u24D8",question:"?"},Y={success:"#4ade80",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6",question:"#8b5cf6"},vo=({props:t,onClose:o})=>{let{title:e,text:a,type:l="info",cancelText:r="Cancel",confirmText:u="OK",onCancel:s,onConfirm:h,icon:m,html:f,showCancelButton:g=!1,showConfirmButton:c=!0,reverseButtons:p=!1,width:i="auto",fullWidth:d=!1,customClass:y={}}=t,v=()=>{s?.(),o()},I=()=>{h?.(),o()},S=X(()=>m?typeof m=="string"?M("span",{children:m}):m:M("span",{style:{color:Y[l]},children:yo[l]}),[m,l]),$=p?["confirm","cancel"]:["cancel","confirm"],A=X(()=>{let n={};return d?(n.width="calc(100vw - 20px)",n.maxWidth="calc(100vw - 20px)"):typeof i=="number"?n.width=`${i}px`:n.width=i,n},[i,d]);return G("div",{className:`aark-standard-modal ${y.popup||""}`,style:A,children:[G("div",{className:`aark-modal-content ${y.content||""}`,children:[S&&M("div",{className:`aark-modal-icon ${y.icon||""}`,children:S}),e&&M("div",{className:`aark-modal-header ${y.header||""}`,children:M("h2",{className:`aark-modal-title ${y.title||""}`,children:e})}),f?typeof f=="string"?M("div",{dangerouslySetInnerHTML:{__html:f}}):M("div",{children:f}):a?M("p",{children:a}):null]}),(g||c)&&M("div",{className:`aark-modal-footer ${y.actions||""}`,children:$.map(n=>n==="cancel"&&g?M("button",{onClick:v,className:`aark-modal-cancel-button ${y.cancelButton||""}`,children:r},"cancel"):n==="confirm"&&c?M("button",{onClick:I,className:`aark-modal-confirm-button ${y.confirmButton||""}`,style:{background:Y[l]},children:u},"confirm"):null)})]})},J=vo;var C=null,w=()=>(C||(C=document.getElementById("aark-react-modalify-root"),C||(C=document.createElement("div"),C.id="aark-react-modalify-root",C.style.cssText=`
|
|
7
7
|
position: fixed;
|
|
8
8
|
top: 0;
|
|
9
9
|
left: 0;
|
|
10
10
|
width: 100%;
|
|
11
11
|
height: 100%;
|
|
12
12
|
pointer-events: none;
|
|
13
|
-
|
|
13
|
+
z-index: var(--aark-modal-z, 9999);
|
|
14
|
+
`,document.body.appendChild(C))),C),Q=()=>{C&&C.children.length===0&&(C.remove(),C=null)};import{jsx as x,jsxs as eo}from"react/jsx-runtime";var ho={sm:"400px",md:"550px",lg:"700px",xl:"900px",full:"calc(100vw - 32px)"},Mo=({config:t,onClose:o})=>{let{content:e,props:a,options:l={}}=t,{position:r="center",showCloseIcon:u=!0,className:s="",overlayClassName:h="",preventEscClose:m=!1,preventOverlayClose:f=!1,width:g,maxWidth:c,size:p,bodyPadding:i}=l;ko(()=>{if(m)return;let n=E=>{E.key==="Escape"&&o()};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[o,m]);let d=oo(n=>{n.target===n.currentTarget&&!f&&o()},[o,f]),y=oo(n=>{n.stopPropagation(),o()},[o]),v=to(()=>{let n={};if(g!==void 0&&(n.width=typeof g=="number"?`${g}px`:g,c===void 0&&(n.maxWidth=n.width)),c!==void 0)n.maxWidth=typeof c=="number"?`${c}px`:c;else if(p){let E=ho[p];p==="full"&&(n.width=n.width??E),n.maxWidth=E}return n},[g,c,p]),I=to(()=>i===void 0||i===!0?{}:i===!1||i===0?{padding:0}:typeof i=="number"?{padding:`${i}px`}:{padding:i},[i]),S=`aark-modal-container ${r} ${s}`.trim(),$=w(),A=()=>a?eo("div",{className:S,style:v,role:"dialog","aria-modal":"true",onClick:n=>n.stopPropagation(),children:[u&&x("button",{onClick:y,className:"aark-modal-close","aria-label":"Close Modal",type:"button",children:x(O,{name:"close",size:12})}),x("div",{className:"aark-modal-wrapper",children:x(J,{props:a,onClose:o})})]}):e?x("div",{className:S,style:v,role:"dialog","aria-modal":"true",onClick:n=>n.stopPropagation(),children:eo("div",{className:"aark-modal-body",style:I,children:[u&&x("button",{onClick:y,className:"aark-modal-close","aria-label":"Close Modal",type:"button",children:x(O,{name:"close",size:12})}),e]})}):null;return Co(x("div",{className:`aark-modal-overlay ${h}`.trim(),onClick:d,style:{position:"fixed",inset:0,zIndex:"var(--aark-modal-z, 9999)",background:"var(--aark-modal-overlay-bg)",backdropFilter:"blur(var(--aark-modal-overlay-blur, 0px))",WebkitBackdropFilter:"blur(var(--aark-modal-overlay-blur, 0px))",animation:"fade-in var(--aark-anim)",display:"flex",alignItems:r==="center"?"center":r.startsWith("top")?"flex-start":"flex-end",justifyContent:r.endsWith("center")?"center":r.endsWith("right")?"flex-end":"flex-start",padding:"1rem",overflowY:"auto",boxSizing:"border-box"},children:A()}),$)},W=Mo;import{useEffect as ro,useCallback as wo}from"react";import{createPortal as Po}from"react-dom";import{useMemo as ao,useEffect as bo}from"react";import{jsx as b,jsxs as L}from"react/jsx-runtime";var no={success:"#4ade80",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6",question:"#8b5cf6"},xo={success:"\u2713",error:"\u2715",warning:"\u26A0",info:"\u24D8",question:"?"},No=({props:t,onClose:o})=>{let{title:e,text:a,type:l="info",icon:r,html:u,timer:s=5e3,showCloseButton:h=!0,clickToClose:m=!0,width:f,fullWidth:g=!1,padding:c,customClass:p={}}=t;bo(()=>{if(s&&s>0){let v=setTimeout(o,s);return()=>clearTimeout(v)}},[s,o]);let i=()=>{m&&o()},d=ao(()=>r?typeof r=="string"?b("span",{children:r}):r:b("span",{style:{color:no[l]},children:xo[l]}),[r,l]),y=ao(()=>{let v={};return c!==void 0&&(v.padding=typeof c=="number"?`${c}px`:c),g?(v.width="calc(100vw - 40px)",v.maxWidth="calc(100vw - 40px)"):f!==void 0&&(v.width=typeof f=="number"?`${f}px`:f),v},[f,g,c]);return L("div",{className:`aark-standard-notification aark-notification-${l} ${p.popup||""}`,style:y,onClick:i,children:[s&&s>0&&b("div",{className:"aark-notification-progress",style:{background:no[l],animation:`aark-notification-progress ${s}ms linear forwards`}}),L("div",{style:{display:"flex",alignItems:"flex-start",gap:"0.75rem"},children:[d&&b("div",{className:`aark-notification-icon ${p.icon||""}`,children:d}),L("div",{style:{flex:1,minWidth:0},children:[e&&b("div",{className:`aark-notification-header ${p.header||""}`,children:b("h4",{className:`aark-notification-title ${p.title||""}`,children:e})}),b("div",{className:`aark-notification-content ${p.content||""}`,style:{marginTop:e?"0.25rem":0},children:u?typeof u=="string"?b("div",{dangerouslySetInnerHTML:{__html:u}}):b("div",{children:u}):a?b("p",{children:a}):null})]}),h&&b("button",{onClick:v=>{v.stopPropagation(),o()},className:`aark-notification-close ${p.closeButton||""}`,"aria-label":"Close notification",type:"button",children:"\xD7"})]})]})},io=No;import{jsx as T,jsxs as Eo}from"react/jsx-runtime";var So=({config:t,onClose:o})=>{let{content:e,props:a,options:l={}}=t,{position:r="top-right",showCloseIcon:u=!0,autoCloseTime:s=5e3,className:h="",preventEscClose:m=!1}=l;ro(()=>{if(s&&!a){let d=setTimeout(o,s);return()=>clearTimeout(d)}},[s,o,a]),ro(()=>{if(m)return;let d=y=>{y.key==="Escape"&&o()};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[o,m]);let f=wo(d=>{d.stopPropagation(),o()},[o]),g=`aark-notification-container ${r} ${h}`.trim(),c=w(),p=()=>{let d={position:"fixed",zIndex:1e4,margin:"1rem"};switch(r){case"top-left":return{...d,top:0,left:0};case"top-center":return{...d,top:0,left:"50%",transform:"translateX(-50%)"};case"top-right":return{...d,top:0,right:0};case"bottom-left":return{...d,bottom:0,left:0};case"bottom-center":return{...d,bottom:0,left:"50%",transform:"translateX(-50%)"};case"bottom-right":return{...d,bottom:0,right:0};default:return{...d,top:0,right:0}}},i=()=>a?T("div",{className:"aark-notification-wrapper",children:T(io,{props:a,onClose:o})}):e?Eo("div",{className:g,role:"alert","aria-live":"polite",children:[u&&T("button",{onClick:f,className:"aark-notification-close","aria-label":"Close notification",type:"button",children:"\xD7"}),T("div",{className:"aark-notification-body",children:e})]}):null;return Po(T("div",{style:p(),children:i()}),c)},H=So;import{jsx as lo}from"react/jsx-runtime";var Ro=()=>{let{isOpen:t,config:o,close:e}=F();return!t||!o?null:o.mode==="modal"?lo(W,{config:o,onClose:e}):o.mode==="notification"?lo(H,{config:o,onClose:e}):null},K=Ro;var D=new Set,N=null,P=null;function so(){if(P)return;let t=w();P=Bo(t),P.render(To(K))}function Io(t){return D.add(t),()=>D.delete(t)}function B(t,o){let e={type:t,config:o};D.forEach(a=>a(e))}function co(t,o){so();let e,a;t&&typeof t=="object"&&!("$$typeof"in t)&&!Array.isArray(t)?(a=t,e=void 0):(e=t,a=void 0);let l={content:e,props:a,mode:"modal",options:Object.assign({position:"center",showCloseIcon:!0,preventEscClose:!1,preventOverlayClose:!1},o)};N=l,B("open",l)}function $o(t,o){so();let e,a;t&&typeof t=="object"&&!("$$typeof"in t)&&!Array.isArray(t)?(a=t,e=void 0):(e=t,a=void 0);let l={content:e,props:a,mode:"notification",options:Object.assign({position:"top-right",showCloseIcon:!0,autoCloseTime:5e3,preventEscClose:!1},o)};N=l,B("open",l)}function Ao(t,o){co(t,o)}function fo(){N&&(B("beforeClose",N),N=null,B("close"))}function Fo(){return N!==null}function zo(){return N}function Oo(){fo()}function Wo(){P&&(P.unmount(),P=null),Q()}var k={subscribe:Io,fire:Ao,fireModal:co,fireNotification:$o,close:fo,isOpen:Fo,getCurrentConfig:zo,closeAll:Oo,cleanup:Wo};var mo={overlayBackground:"--aark-modal-overlay-bg",overlayBlur:"--aark-modal-overlay-blur",modalBackground:"--aark-modal-bg",modalBorderRadius:"--aark-modal-radius",modalShadow:"--aark-modal-shadow",modalPadding:"--aark-modal-pad",modalMaxWidth:"--aark-modal-max-width",modalZIndex:"--aark-modal-z",closeButtonColor:"--aark-close-color",closeButtonHoverBackground:"--aark-close-hover",closeButtonHoverColor:"--aark-close-hover-color",closeButtonFocusOutline:"--aark-close-focus-outline",animationDuration:"--aark-anim",notificationBackground:"--aark-notification-bg",notificationBorderRadius:"--aark-notification-radius",notificationShadow:"--aark-notification-shadow",notificationPadding:"--aark-notification-pad",notificationZIndex:"--aark-notification-z"};function Z(t){let o=document.documentElement;Object.keys(t).forEach(e=>{let a=t[e],l=mo[e];a!==void 0&&l&&o.style.setProperty(l,String(a))})}function _(){let t=document.documentElement;Object.values(mo).forEach(o=>{t.style.removeProperty(o)})}function q(){let t=document.documentElement,o=getComputedStyle(t),e=a=>o.getPropertyValue(a).trim()||void 0;return{overlayBackground:e("--aark-modal-overlay-bg"),overlayBlur:e("--aark-modal-overlay-blur"),modalBackground:e("--aark-modal-bg"),modalBorderRadius:e("--aark-modal-radius"),modalShadow:e("--aark-modal-shadow"),modalPadding:e("--aark-modal-pad"),modalMaxWidth:e("--aark-modal-max-width"),modalZIndex:parseInt(e("--aark-modal-z")??"0")||void 0,closeButtonColor:e("--aark-close-color"),closeButtonHoverBackground:e("--aark-close-hover"),closeButtonHoverColor:e("--aark-close-hover-color"),closeButtonFocusOutline:e("--aark-close-focus-outline"),animationDuration:e("--aark-anim"),notificationBackground:e("--aark-notification-bg"),notificationBorderRadius:e("--aark-notification-radius"),notificationShadow:e("--aark-notification-shadow"),notificationPadding:e("--aark-notification-pad"),notificationZIndex:parseInt(e("--aark-notification-z")??"0")||void 0}}var Lo={fire:(t,o)=>k.fire(t,o),modal:(t,o)=>k.fireModal(t,o),notification:(t,o)=>k.fireNotification(t,o),close:()=>k.close(),isOpen:()=>k.isOpen(),closeAll:()=>k.closeAll(),setTheme:t=>Z(t),resetTheme:()=>_(),getTheme:()=>q()},Ho=Lo;export{W as Modal,K as ModalProvider,H as Notification,Ho as aark,q as getAarkModalTheme,_ as resetAarkModalTheme,Z as setAarkModalTheme,F as useModal};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aark-react-modalify",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.3",
|
|
4
4
|
"description": "A lightweight, flexible React modal and notification library with TypeScript support. Features automatic DOM mounting, customizable styling via CSS variables, responsive size presets, and a simple imperative API.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "dist/index.cjs.js",
|