universal-modal-monorepo 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/AUTHORS +5 -0
  2. package/CHANGELOG.md +10 -0
  3. package/LICENSE +21 -0
  4. package/NOTICE +6 -0
  5. package/README.md +239 -0
  6. package/SECURITY.md +21 -0
  7. package/docs/ACCESSIBILITY.md +43 -0
  8. package/docs/API.md +56 -0
  9. package/docs/THEMING.md +65 -0
  10. package/examples/angular/app.component.html +137 -0
  11. package/examples/angular/app.component.ts +53 -0
  12. package/examples/angular/index.html +99 -0
  13. package/examples/angular/main.js +121 -0
  14. package/examples/angular/styles.css +25 -0
  15. package/examples/index.html +53 -0
  16. package/examples/react/App.tsx +242 -0
  17. package/examples/react/index.html +26 -0
  18. package/examples/react/main.js +144 -0
  19. package/examples/react/styles.css +1 -0
  20. package/examples/shared/gallery.css +177 -0
  21. package/examples/vanilla/index.html +89 -0
  22. package/examples/vanilla/main.js +174 -0
  23. package/examples/vanilla/styles.css +1 -0
  24. package/examples/vue/App.vue +190 -0
  25. package/examples/vue/index.html +23 -0
  26. package/examples/vue/main.js +174 -0
  27. package/examples/vue/styles.css +1 -0
  28. package/examples/web-component/index.html +190 -0
  29. package/examples/web-component/main.js +58 -0
  30. package/examples/web-component/styles.css +11 -0
  31. package/package.json +36 -0
  32. package/packages/universal-modal/AUTHORS +5 -0
  33. package/packages/universal-modal/CHANGELOG.md +10 -0
  34. package/packages/universal-modal/LICENSE +21 -0
  35. package/packages/universal-modal/NOTICE +6 -0
  36. package/packages/universal-modal/README.md +29 -0
  37. package/packages/universal-modal/package.json +83 -0
  38. package/packages/universal-modal/scripts/copy-styles.mjs +11 -0
  39. package/packages/universal-modal/src/core/constants.ts +50 -0
  40. package/packages/universal-modal/src/core/event-emitter.ts +46 -0
  41. package/packages/universal-modal/src/core/focus-trap.ts +101 -0
  42. package/packages/universal-modal/src/core/index.ts +39 -0
  43. package/packages/universal-modal/src/core/modal-engine.ts +410 -0
  44. package/packages/universal-modal/src/core/modal-stack.ts +68 -0
  45. package/packages/universal-modal/src/core/scroll-lock.ts +78 -0
  46. package/packages/universal-modal/src/core/theme.ts +50 -0
  47. package/packages/universal-modal/src/core/types.ts +196 -0
  48. package/packages/universal-modal/src/core/utils.ts +114 -0
  49. package/packages/universal-modal/src/dom/index.ts +1 -0
  50. package/packages/universal-modal/src/dom/modal-renderer.ts +191 -0
  51. package/packages/universal-modal/src/index.ts +2 -0
  52. package/packages/universal-modal/src/styles/modal.css +368 -0
  53. package/packages/universal-modal/tsconfig.json +24 -0
  54. package/packages/universal-modal/tsup.config.ts +12 -0
  55. package/packages/universal-modal-angular/AUTHORS +5 -0
  56. package/packages/universal-modal-angular/CHANGELOG.md +9 -0
  57. package/packages/universal-modal-angular/LICENSE +21 -0
  58. package/packages/universal-modal-angular/NOTICE +6 -0
  59. package/packages/universal-modal-angular/README.md +12 -0
  60. package/packages/universal-modal-angular/package.json +85 -0
  61. package/packages/universal-modal-angular/src/index.ts +10 -0
  62. package/packages/universal-modal-angular/src/universal-modal.component.ts +275 -0
  63. package/packages/universal-modal-angular/tsconfig.json +20 -0
  64. package/packages/universal-modal-angular/tsup.config.ts +10 -0
  65. package/packages/universal-modal-react/AUTHORS +5 -0
  66. package/packages/universal-modal-react/CHANGELOG.md +9 -0
  67. package/packages/universal-modal-react/LICENSE +21 -0
  68. package/packages/universal-modal-react/NOTICE +6 -0
  69. package/packages/universal-modal-react/README.md +12 -0
  70. package/packages/universal-modal-react/package.json +87 -0
  71. package/packages/universal-modal-react/src/UniversalModal.tsx +340 -0
  72. package/packages/universal-modal-react/src/index.ts +10 -0
  73. package/packages/universal-modal-react/tsconfig.json +19 -0
  74. package/packages/universal-modal-react/tsup.config.ts +13 -0
  75. package/packages/universal-modal-vanilla/AUTHORS +5 -0
  76. package/packages/universal-modal-vanilla/CHANGELOG.md +9 -0
  77. package/packages/universal-modal-vanilla/LICENSE +21 -0
  78. package/packages/universal-modal-vanilla/NOTICE +6 -0
  79. package/packages/universal-modal-vanilla/README.md +12 -0
  80. package/packages/universal-modal-vanilla/package.json +79 -0
  81. package/packages/universal-modal-vanilla/src/create-modal.ts +125 -0
  82. package/packages/universal-modal-vanilla/src/index.ts +14 -0
  83. package/packages/universal-modal-vanilla/tsconfig.json +18 -0
  84. package/packages/universal-modal-vanilla/tsup.config.ts +10 -0
  85. package/packages/universal-modal-vue/AUTHORS +5 -0
  86. package/packages/universal-modal-vue/CHANGELOG.md +9 -0
  87. package/packages/universal-modal-vue/LICENSE +21 -0
  88. package/packages/universal-modal-vue/NOTICE +6 -0
  89. package/packages/universal-modal-vue/README.md +12 -0
  90. package/packages/universal-modal-vue/package.json +83 -0
  91. package/packages/universal-modal-vue/src/UniversalModal.ts +342 -0
  92. package/packages/universal-modal-vue/src/index.ts +10 -0
  93. package/packages/universal-modal-vue/tsconfig.json +18 -0
  94. package/packages/universal-modal-vue/tsup.config.ts +10 -0
  95. package/packages/universal-modal-web-component/AUTHORS +5 -0
  96. package/packages/universal-modal-web-component/CHANGELOG.md +9 -0
  97. package/packages/universal-modal-web-component/LICENSE +21 -0
  98. package/packages/universal-modal-web-component/NOTICE +6 -0
  99. package/packages/universal-modal-web-component/README.md +12 -0
  100. package/packages/universal-modal-web-component/package.json +83 -0
  101. package/packages/universal-modal-web-component/src/index.ts +11 -0
  102. package/packages/universal-modal-web-component/src/universal-modal-element.ts +424 -0
  103. package/packages/universal-modal-web-component/tsconfig.json +18 -0
  104. package/packages/universal-modal-web-component/tsup.config.ts +10 -0
  105. package/scripts/copy-styles.mjs +11 -0
  106. package/scripts/serve-examples.mjs +48 -0
@@ -0,0 +1,368 @@
1
+ /**
2
+ * @poluru-labs/universal-modal styles
3
+ *
4
+ * Brand / button theming (override on :root, [data-um-theme], or .um-modal):
5
+ * --um-color-brand
6
+ * --um-color-brand-fg
7
+ * --um-btn-confirm-bg | --um-btn-confirm-fg | --um-btn-confirm-border
8
+ * --um-btn-cancel-bg | --um-btn-cancel-fg | --um-btn-cancel-border
9
+ */
10
+
11
+ :root,
12
+ [data-um-theme='light'] {
13
+ --um-color-bg: #ffffff;
14
+ --um-color-fg: #111827;
15
+ --um-color-muted: #6b7280;
16
+ --um-color-border: #e5e7eb;
17
+ --um-color-brand: #0d47a1;
18
+ --um-color-brand-fg: #ffffff;
19
+ --um-color-accent: var(--um-color-brand);
20
+ --um-color-accent-fg: var(--um-color-brand-fg);
21
+ --um-color-danger: #b91c1c;
22
+ --um-backdrop-bg: rgba(15, 23, 42, 0.55);
23
+ --um-shadow: 0 24px 48px rgba(15, 23, 42, 0.18), 0 8px 16px rgba(15, 23, 42, 0.08);
24
+ --um-focus-ring: 0 0 0 3px color-mix(in srgb, var(--um-color-brand) 35%, transparent);
25
+
26
+ --um-btn-confirm-bg: var(--um-color-brand);
27
+ --um-btn-confirm-fg: var(--um-color-brand-fg);
28
+ --um-btn-confirm-border: var(--um-color-brand);
29
+ --um-btn-cancel-bg: var(--um-color-bg);
30
+ --um-btn-cancel-fg: var(--um-color-fg);
31
+ --um-btn-cancel-border: var(--um-color-border);
32
+ }
33
+
34
+ [data-um-theme='dark'],
35
+ .um-theme-dark {
36
+ --um-color-bg: #111827;
37
+ --um-color-fg: #f9fafb;
38
+ --um-color-muted: #9ca3af;
39
+ --um-color-border: #374151;
40
+ --um-color-brand: #0d47a1;
41
+ --um-color-brand-fg: #ffffff;
42
+ --um-color-accent: var(--um-color-brand);
43
+ --um-color-accent-fg: var(--um-color-brand-fg);
44
+ --um-color-danger: #f87171;
45
+ --um-backdrop-bg: rgba(2, 6, 23, 0.72);
46
+ --um-shadow: 0 24px 48px rgba(0, 0, 0, 0.45), 0 8px 16px rgba(0, 0, 0, 0.3);
47
+ --um-focus-ring: 0 0 0 3px color-mix(in srgb, var(--um-color-brand) 45%, transparent);
48
+
49
+ --um-btn-confirm-bg: var(--um-color-brand);
50
+ --um-btn-confirm-fg: var(--um-color-brand-fg);
51
+ --um-btn-confirm-border: var(--um-color-brand);
52
+ --um-btn-cancel-bg: var(--um-color-bg);
53
+ --um-btn-cancel-fg: var(--um-color-fg);
54
+ --um-btn-cancel-border: var(--um-color-border);
55
+ }
56
+
57
+ .um-modal {
58
+ --um-radius: 12px;
59
+ --um-spacing: 1.25rem;
60
+ --um-spacing-sm: 0.75rem;
61
+ --um-font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
62
+ --um-font-size: 1rem;
63
+ --um-font-size-title: 1.25rem;
64
+ --um-line-height: 1.5;
65
+ --um-width-sm: 360px;
66
+ --um-width-md: 480px;
67
+ --um-width-lg: 640px;
68
+ --um-width-xl: 800px;
69
+ --um-max-width: min(96vw, var(--um-width-md));
70
+ --um-max-height: min(90vh, 900px);
71
+ --um-z-index: 1000;
72
+ --um-animation-duration: 200ms;
73
+ --um-animation-easing: cubic-bezier(0.22, 1, 0.36, 1);
74
+ --um-panel-padding: var(--um-spacing);
75
+ --um-backdrop-opacity: 1;
76
+
77
+ position: fixed;
78
+ inset: 0;
79
+ z-index: var(--um-z-index);
80
+ display: grid;
81
+ place-items: center;
82
+ padding: var(--um-spacing);
83
+ font-family: var(--um-font-family);
84
+ font-size: var(--um-font-size);
85
+ line-height: var(--um-line-height);
86
+ color: var(--um-color-fg);
87
+ pointer-events: none;
88
+ }
89
+
90
+ .um-modal[hidden] {
91
+ display: none !important;
92
+ }
93
+
94
+ .um-modal--open,
95
+ .um-modal--closing {
96
+ pointer-events: auto;
97
+ }
98
+
99
+ .um-modal__backdrop {
100
+ position: absolute;
101
+ inset: 0;
102
+ background: var(--um-backdrop-bg);
103
+ opacity: 0;
104
+ transition: opacity var(--um-animation-duration) var(--um-animation-easing);
105
+ }
106
+
107
+ .um-modal--open .um-modal__backdrop {
108
+ opacity: var(--um-backdrop-opacity);
109
+ }
110
+
111
+ .um-modal--closing .um-modal__backdrop {
112
+ opacity: 0;
113
+ }
114
+
115
+ .um-modal__dialog {
116
+ position: relative;
117
+ z-index: 1;
118
+ width: 100%;
119
+ max-width: var(--um-max-width);
120
+ max-height: var(--um-max-height);
121
+ outline: none;
122
+ display: flex;
123
+ justify-content: center;
124
+ align-items: center;
125
+ pointer-events: none;
126
+ }
127
+
128
+ .um-modal__panel {
129
+ position: relative;
130
+ display: flex;
131
+ flex-direction: column;
132
+ width: 100%;
133
+ max-height: var(--um-max-height);
134
+ background: var(--um-color-bg);
135
+ color: var(--um-color-fg);
136
+ border: 1px solid var(--um-color-border);
137
+ border-radius: var(--um-radius);
138
+ box-shadow: var(--um-shadow);
139
+ pointer-events: auto;
140
+ transform: translateY(8px) scale(0.98);
141
+ opacity: 0;
142
+ transition:
143
+ transform var(--um-animation-duration) var(--um-animation-easing),
144
+ opacity var(--um-animation-duration) var(--um-animation-easing);
145
+ overflow: hidden;
146
+ }
147
+
148
+ .um-modal--open .um-modal__panel {
149
+ transform: translateY(0) scale(1);
150
+ opacity: 1;
151
+ }
152
+
153
+ .um-modal--closing .um-modal__panel {
154
+ transform: translateY(8px) scale(0.98);
155
+ opacity: 0;
156
+ }
157
+
158
+ /* Sizes */
159
+ .um-modal__panel[data-size='sm'] {
160
+ --um-max-width: min(96vw, var(--um-width-sm));
161
+ }
162
+ .um-modal__panel[data-size='md'] {
163
+ --um-max-width: min(96vw, var(--um-width-md));
164
+ }
165
+ .um-modal__panel[data-size='lg'] {
166
+ --um-max-width: min(96vw, var(--um-width-lg));
167
+ }
168
+ .um-modal__panel[data-size='xl'] {
169
+ --um-max-width: min(96vw, var(--um-width-xl));
170
+ }
171
+ .um-modal__panel[data-size='fullscreen'] {
172
+ --um-max-width: 100vw;
173
+ --um-max-height: 100vh;
174
+ width: 100vw;
175
+ height: 100vh;
176
+ max-width: 100vw;
177
+ max-height: 100vh;
178
+ border-radius: 0;
179
+ }
180
+
181
+ /* Placements */
182
+ .um-modal[data-placement='top'],
183
+ .um-modal:has(.um-modal__panel[data-placement='top']) {
184
+ place-items: start center;
185
+ padding-top: clamp(1rem, 6vh, 3rem);
186
+ }
187
+
188
+ .um-modal:has(.um-modal__panel[data-placement='bottom']) {
189
+ place-items: end center;
190
+ padding-bottom: clamp(1rem, 6vh, 3rem);
191
+ }
192
+
193
+ .um-modal:has(.um-modal__panel[data-placement='left']) {
194
+ place-items: stretch start;
195
+ padding: 0;
196
+ }
197
+
198
+ .um-modal:has(.um-modal__panel[data-placement='right']) {
199
+ place-items: stretch end;
200
+ padding: 0;
201
+ }
202
+
203
+ .um-modal__panel[data-placement='left'],
204
+ .um-modal__panel[data-placement='right'] {
205
+ height: 100vh;
206
+ max-height: 100vh;
207
+ border-radius: 0;
208
+ --um-max-width: min(92vw, var(--um-width-md));
209
+ }
210
+
211
+ .um-modal__panel[data-placement='left'] {
212
+ transform: translateX(-16px);
213
+ }
214
+ .um-modal__panel[data-placement='right'] {
215
+ transform: translateX(16px);
216
+ }
217
+ .um-modal--open .um-modal__panel[data-placement='left'],
218
+ .um-modal--open .um-modal__panel[data-placement='right'] {
219
+ transform: translateX(0);
220
+ }
221
+
222
+ .um-modal__header {
223
+ display: flex;
224
+ flex-direction: column;
225
+ gap: 0.35rem;
226
+ padding: var(--um-panel-padding);
227
+ padding-bottom: var(--um-spacing-sm);
228
+ padding-right: calc(var(--um-panel-padding) + 2rem);
229
+ }
230
+
231
+ .um-modal__header[hidden],
232
+ .um-modal__footer[hidden],
233
+ .um-modal__close[hidden] {
234
+ display: none !important;
235
+ }
236
+
237
+ .um-modal__title {
238
+ margin: 0;
239
+ font-size: var(--um-font-size-title);
240
+ font-weight: 650;
241
+ letter-spacing: -0.01em;
242
+ color: var(--um-color-fg);
243
+ }
244
+
245
+ .um-modal__description {
246
+ margin: 0;
247
+ color: var(--um-color-muted);
248
+ font-size: 0.95rem;
249
+ }
250
+
251
+ .um-modal__body {
252
+ padding: 0 var(--um-panel-padding) var(--um-panel-padding);
253
+ overflow: auto;
254
+ flex: 1 1 auto;
255
+ }
256
+
257
+ .um-modal__footer {
258
+ padding: var(--um-spacing-sm) var(--um-panel-padding) var(--um-panel-padding);
259
+ border-top: 1px solid var(--um-color-border);
260
+ background: color-mix(in srgb, var(--um-color-bg) 92%, var(--um-color-border));
261
+ }
262
+
263
+ .um-modal__actions {
264
+ display: flex;
265
+ justify-content: flex-end;
266
+ flex-wrap: wrap;
267
+ gap: 0.65rem;
268
+ }
269
+
270
+ .um-modal__close {
271
+ position: absolute;
272
+ top: 0.7rem;
273
+ right: 0.7rem;
274
+ display: inline-flex;
275
+ align-items: center;
276
+ justify-content: center;
277
+ width: 2rem;
278
+ height: 2rem;
279
+ border: 0;
280
+ border-radius: calc(var(--um-radius) - 4px);
281
+ background: transparent;
282
+ color: var(--um-color-muted);
283
+ cursor: pointer;
284
+ transition: background 120ms ease, color 120ms ease;
285
+ }
286
+
287
+ .um-modal__close:hover {
288
+ background: color-mix(in srgb, var(--um-color-border) 65%, transparent);
289
+ color: var(--um-color-fg);
290
+ }
291
+
292
+ .um-modal__close:focus-visible,
293
+ .um-modal__btn:focus-visible {
294
+ outline: none;
295
+ box-shadow: var(--um-focus-ring);
296
+ }
297
+
298
+ .um-modal__btn {
299
+ appearance: none;
300
+ border: 1px solid var(--um-btn-cancel-border);
301
+ border-radius: calc(var(--um-radius) - 4px);
302
+ padding: 0.55rem 1rem;
303
+ font: inherit;
304
+ font-weight: 600;
305
+ cursor: pointer;
306
+ background: var(--um-btn-cancel-bg);
307
+ color: var(--um-btn-cancel-fg);
308
+ transition: background 120ms ease, border-color 120ms ease, opacity 120ms ease, filter 120ms ease;
309
+ }
310
+
311
+ .um-modal__btn:disabled {
312
+ opacity: 0.6;
313
+ cursor: not-allowed;
314
+ }
315
+
316
+ .um-modal__btn--cancel {
317
+ background: var(--um-btn-cancel-bg);
318
+ border-color: var(--um-btn-cancel-border);
319
+ color: var(--um-btn-cancel-fg);
320
+ }
321
+
322
+ .um-modal__btn--cancel:hover:not(:disabled) {
323
+ background: color-mix(in srgb, var(--um-btn-cancel-border) 45%, var(--um-btn-cancel-bg));
324
+ }
325
+
326
+ .um-modal__btn--confirm {
327
+ position: relative;
328
+ background: var(--um-btn-confirm-bg);
329
+ border-color: var(--um-btn-confirm-border);
330
+ color: var(--um-btn-confirm-fg);
331
+ }
332
+
333
+ .um-modal__btn--confirm:hover:not(:disabled) {
334
+ filter: brightness(1.05);
335
+ }
336
+
337
+ .um-modal__spinner {
338
+ display: none;
339
+ width: 0.95rem;
340
+ height: 0.95rem;
341
+ margin-left: 0.5rem;
342
+ border: 2px solid color-mix(in srgb, var(--um-btn-confirm-fg) 35%, transparent);
343
+ border-top-color: var(--um-btn-confirm-fg);
344
+ border-radius: 50%;
345
+ vertical-align: -0.15em;
346
+ animation: um-spin 0.7s linear infinite;
347
+ }
348
+
349
+ .um-modal--loading .um-modal__spinner {
350
+ display: inline-block;
351
+ }
352
+
353
+ @keyframes um-spin {
354
+ to {
355
+ transform: rotate(360deg);
356
+ }
357
+ }
358
+
359
+ @media (prefers-reduced-motion: reduce) {
360
+ .um-modal__backdrop,
361
+ .um-modal__panel {
362
+ transition: none !important;
363
+ }
364
+
365
+ .um-modal__spinner {
366
+ animation: none;
367
+ }
368
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
7
+ "declaration": true,
8
+ "declarationMap": true,
9
+ "sourceMap": true,
10
+ "strict": true,
11
+ "noUnusedLocals": true,
12
+ "noUnusedParameters": true,
13
+ "noFallthroughCasesInSwitch": true,
14
+ "noImplicitOverride": true,
15
+ "skipLibCheck": true,
16
+ "esModuleInterop": true,
17
+ "forceConsistentCasingInFileNames": true,
18
+ "isolatedModules": true,
19
+ "rootDir": "src",
20
+ "outDir": "dist"
21
+ },
22
+ "include": ["src/**/*"],
23
+ "exclude": ["node_modules", "dist"]
24
+ }
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from 'tsup';
2
+
3
+ export default defineConfig({
4
+ entry: {
5
+ index: 'src/index.ts',
6
+ },
7
+ format: ['esm', 'cjs'],
8
+ dts: true,
9
+ sourcemap: true,
10
+ clean: true,
11
+ treeshake: true,
12
+ });
@@ -0,0 +1,5 @@
1
+ # Authors
2
+
3
+ Subrahmanyam Poluru <mail.polurus@gmail.com>
4
+ https://polurus.com
5
+ https://www.linkedin.com/in/polurus/
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+
3
+ ## 1.0.0 — 2026-08-01
4
+
5
+ ### Added
6
+ - Initial public release
7
+ - Depends on `@poluru-labs/universal-modal@1.0.0`
8
+ - MIT licensed (see LICENSE)
9
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Subrahmanyam Poluru
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,6 @@
1
+ @poluru-labs/universal-modal
2
+ Copyright (c) 2026 Subrahmanyam Poluru
3
+
4
+ This product is developed and maintained by .
5
+ Homepage: https://polurus.com
6
+ Contact: mail.polurus@gmail.com
@@ -0,0 +1,12 @@
1
+ # @poluru-labs/universal-modal-angular
2
+
3
+ ```bash
4
+ npm install @poluru-labs/universal-modal-angular
5
+ ```
6
+
7
+ ```ts
8
+ import { UniversalModalComponent } from '@poluru-labs/universal-modal-angular';
9
+ import '@poluru-labs/universal-modal/styles.css';
10
+ ```
11
+
12
+ Author: Subrahmanyam Poluru · mail.polurus@gmail.com
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "@poluru-labs/universal-modal-angular",
3
+ "version": "1.0.0",
4
+ "description": "Angular adapter for @poluru-labs/universal-modal",
5
+ "author": {
6
+ "name": "Subrahmanyam Poluru",
7
+ "email": "mail.polurus@gmail.com",
8
+ "url": "https://polurus.com"
9
+ },
10
+ "contributors": [
11
+ {
12
+ "name": "Subrahmanyam Poluru",
13
+ "email": "mail.polurus@gmail.com",
14
+ "url": "https://www.linkedin.com/in/polurus/"
15
+ }
16
+ ],
17
+ "license": "MIT",
18
+ "homepage": "https://github.com/poluru-labs/universal-modal#readme",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/poluru-labs/universal-modal.git",
22
+ "directory": "packages/universal-modal-angular"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/poluru-labs/universal-modal/issues",
26
+ "email": "mail.polurus@gmail.com"
27
+ },
28
+ "publishConfig": {
29
+ "access": "public",
30
+ "registry": "https://registry.npmjs.org/"
31
+ },
32
+ "keywords": [
33
+ "modal",
34
+ "dialog",
35
+ "angular",
36
+ "poluru-labs",
37
+ "accessibility"
38
+ ],
39
+ "type": "module",
40
+ "main": "./dist/index.cjs",
41
+ "module": "./dist/index.js",
42
+ "types": "./dist/index.d.ts",
43
+ "exports": {
44
+ ".": {
45
+ "types": "./dist/index.d.ts",
46
+ "import": "./dist/index.js",
47
+ "require": "./dist/index.cjs"
48
+ },
49
+ "./package.json": "./package.json"
50
+ },
51
+ "files": [
52
+ "dist",
53
+ "LICENSE",
54
+ "AUTHORS",
55
+ "NOTICE",
56
+ "README.md",
57
+ "CHANGELOG.md"
58
+ ],
59
+ "scripts": {
60
+ "build": "tsup",
61
+ "typecheck": "tsc --noEmit",
62
+ "clean": "rm -rf dist *.tgz",
63
+ "prepublishOnly": "npm run clean && npm run typecheck && npm run build"
64
+ },
65
+ "dependencies": {
66
+ "@poluru-labs/universal-modal": "1.0.0"
67
+ },
68
+ "peerDependencies": {
69
+ "@angular/common": ">=16.0.0",
70
+ "@angular/core": ">=16.0.0"
71
+ },
72
+ "devDependencies": {
73
+ "@angular/common": "^19.0.0",
74
+ "@angular/core": "^19.0.0",
75
+ "tsup": "^8.3.5",
76
+ "typescript": "^5.7.2"
77
+ },
78
+ "engines": {
79
+ "node": ">=18"
80
+ },
81
+ "funding": {
82
+ "type": "individual",
83
+ "url": "https://polurus.com"
84
+ }
85
+ }
@@ -0,0 +1,10 @@
1
+ export { UniversalModalComponent } from './universal-modal.component';
2
+ export type {
3
+ CloseReason,
4
+ ModalOptions,
5
+ ModalPlacement,
6
+ ModalRole,
7
+ ModalSize,
8
+ ModalState,
9
+ ModalTheme,
10
+ } from '@poluru-labs/universal-modal';