@mappoh/nova 0.2.2 → 0.3.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 (90) hide show
  1. package/LICENSE +21 -0
  2. package/dist/a11y/index.d.ts +40 -0
  3. package/dist/a11y/index.d.ts.map +1 -0
  4. package/dist/a11y/index.js +162 -0
  5. package/dist/a11y/index.js.map +1 -0
  6. package/dist/animation/flip.d.ts +28 -0
  7. package/dist/animation/flip.d.ts.map +1 -0
  8. package/dist/animation/flip.js +106 -0
  9. package/dist/animation/flip.js.map +1 -0
  10. package/dist/animation/spring.d.ts +34 -0
  11. package/dist/animation/spring.d.ts.map +1 -0
  12. package/dist/animation/spring.js +86 -0
  13. package/dist/animation/spring.js.map +1 -0
  14. package/dist/chart/chart.d.ts +27 -0
  15. package/dist/chart/chart.d.ts.map +1 -0
  16. package/dist/chart/chart.js +289 -0
  17. package/dist/chart/chart.js.map +1 -0
  18. package/dist/chart/index.d.ts +3 -0
  19. package/dist/chart/index.d.ts.map +1 -0
  20. package/dist/chart/index.js +2 -0
  21. package/dist/chart/index.js.map +1 -0
  22. package/dist/color-picker/color-picker.d.ts +18 -0
  23. package/dist/color-picker/color-picker.d.ts.map +1 -0
  24. package/dist/color-picker/color-picker.js +243 -0
  25. package/dist/color-picker/color-picker.js.map +1 -0
  26. package/dist/color-picker/index.d.ts +3 -0
  27. package/dist/color-picker/index.d.ts.map +1 -0
  28. package/dist/color-picker/index.js +2 -0
  29. package/dist/color-picker/index.js.map +1 -0
  30. package/dist/combobox/combobox.d.ts +26 -0
  31. package/dist/combobox/combobox.d.ts.map +1 -0
  32. package/dist/combobox/combobox.js +262 -0
  33. package/dist/combobox/combobox.js.map +1 -0
  34. package/dist/combobox/index.d.ts +3 -0
  35. package/dist/combobox/index.d.ts.map +1 -0
  36. package/dist/combobox/index.js +2 -0
  37. package/dist/combobox/index.js.map +1 -0
  38. package/dist/data-table/data-table.d.ts +34 -0
  39. package/dist/data-table/data-table.d.ts.map +1 -0
  40. package/dist/data-table/data-table.js +256 -0
  41. package/dist/data-table/data-table.js.map +1 -0
  42. package/dist/data-table/index.d.ts +3 -0
  43. package/dist/data-table/index.d.ts.map +1 -0
  44. package/dist/data-table/index.js +2 -0
  45. package/dist/data-table/index.js.map +1 -0
  46. package/dist/date-picker/date-picker.d.ts +22 -0
  47. package/dist/date-picker/date-picker.d.ts.map +1 -0
  48. package/dist/date-picker/date-picker.js +282 -0
  49. package/dist/date-picker/date-picker.js.map +1 -0
  50. package/dist/date-picker/index.d.ts +3 -0
  51. package/dist/date-picker/index.d.ts.map +1 -0
  52. package/dist/date-picker/index.js +2 -0
  53. package/dist/date-picker/index.js.map +1 -0
  54. package/dist/file-upload/file-upload.d.ts +24 -0
  55. package/dist/file-upload/file-upload.d.ts.map +1 -0
  56. package/dist/file-upload/file-upload.js +177 -0
  57. package/dist/file-upload/file-upload.js.map +1 -0
  58. package/dist/file-upload/index.d.ts +3 -0
  59. package/dist/file-upload/index.d.ts.map +1 -0
  60. package/dist/file-upload/index.js +2 -0
  61. package/dist/file-upload/index.js.map +1 -0
  62. package/dist/forms/form-engine.d.ts +19 -6
  63. package/dist/forms/form-engine.d.ts.map +1 -1
  64. package/dist/forms/form-engine.js +97 -11
  65. package/dist/forms/form-engine.js.map +1 -1
  66. package/dist/forms/validators.d.ts +4 -0
  67. package/dist/forms/validators.d.ts.map +1 -1
  68. package/dist/forms/validators.js +6 -0
  69. package/dist/forms/validators.js.map +1 -1
  70. package/dist/router/index.d.ts +1 -1
  71. package/dist/router/index.d.ts.map +1 -1
  72. package/dist/router/index.js +1 -1
  73. package/dist/router/index.js.map +1 -1
  74. package/dist/router/router.d.ts +14 -0
  75. package/dist/router/router.d.ts.map +1 -1
  76. package/dist/router/router.js +44 -6
  77. package/dist/router/router.js.map +1 -1
  78. package/dist/state/store.d.ts +4 -0
  79. package/dist/state/store.d.ts.map +1 -1
  80. package/dist/state/store.js +27 -7
  81. package/dist/state/store.js.map +1 -1
  82. package/dist/tree-view/index.d.ts +3 -0
  83. package/dist/tree-view/index.d.ts.map +1 -0
  84. package/dist/tree-view/index.js +2 -0
  85. package/dist/tree-view/index.js.map +1 -0
  86. package/dist/tree-view/tree-view.d.ts +29 -0
  87. package/dist/tree-view/tree-view.d.ts.map +1 -0
  88. package/dist/tree-view/tree-view.js +273 -0
  89. package/dist/tree-view/tree-view.js.map +1 -0
  90. package/package.json +65 -3
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Nova Engine — Date Picker
3
+ *
4
+ * Accessible calendar-based date picker with locale support and keyboard navigation.
5
+ */
6
+ export interface DatePickerOptions {
7
+ value?: Date;
8
+ min?: Date;
9
+ max?: Date;
10
+ locale?: string;
11
+ /** First day of week: 0 = Sunday, 1 = Monday. Default: 0 */
12
+ firstDay?: 0 | 1;
13
+ format?: (date: Date) => string;
14
+ onChange?: (date: Date) => void;
15
+ }
16
+ export interface DatePickerInstance {
17
+ getValue(): Date | null;
18
+ setValue(date: Date): void;
19
+ destroy(): void;
20
+ }
21
+ export declare function createDatePicker(container: HTMLElement, options?: DatePickerOptions): DatePickerInstance;
22
+ //# sourceMappingURL=date-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../src/date-picker/date-picker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC;CACjB;AAsCD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,iBAAsB,GAC9B,kBAAkB,CA8OpB"}
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Nova Engine — Date Picker
3
+ *
4
+ * Accessible calendar-based date picker with locale support and keyboard navigation.
5
+ */
6
+ const STYLE_ID = 'nova-datepicker-styles';
7
+ function injectStyles() {
8
+ if (document.getElementById(STYLE_ID))
9
+ return;
10
+ const style = document.createElement('style');
11
+ style.id = STYLE_ID;
12
+ style.textContent = `
13
+ .nova-dp{position:relative;display:inline-block;font-family:inherit}
14
+ .nova-dp-input{padding:0.5rem;border:1px solid #d1d5db;border-radius:6px;font-size:inherit;width:100%;box-sizing:border-box;outline:none;cursor:pointer}
15
+ .nova-dp-input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px rgba(59,130,246,0.2)}
16
+ .nova-dp-cal{position:absolute;top:100%;left:0;margin-top:4px;background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.1);padding:0.75rem;z-index:1000;display:none;min-width:280px}
17
+ .nova-dp-cal[data-open]{display:block}
18
+ .nova-dp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:0.5rem}
19
+ .nova-dp-header button{background:none;border:none;cursor:pointer;padding:0.25rem 0.5rem;border-radius:4px;font-size:1rem}
20
+ .nova-dp-header button:hover{background:#f3f4f6}
21
+ .nova-dp-title{font-weight:600;font-size:0.875rem}
22
+ .nova-dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
23
+ .nova-dp-weekday{font-size:0.75rem;font-weight:600;color:#6b7280;padding:4px}
24
+ .nova-dp-day{padding:6px;border-radius:6px;cursor:pointer;font-size:0.875rem;border:none;background:none;width:100%}
25
+ .nova-dp-day:hover{background:#f3f4f6}
26
+ .nova-dp-day[data-today]{font-weight:700}
27
+ .nova-dp-day[aria-current="date"]{background:#3b82f6;color:#fff}
28
+ .nova-dp-day[aria-current="date"]:hover{background:#2563eb}
29
+ .nova-dp-day[data-outside]{color:#d1d5db}
30
+ .nova-dp-day:disabled{opacity:0.3;cursor:default}`;
31
+ document.head.appendChild(style);
32
+ }
33
+ function sameDay(a, b) {
34
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
35
+ }
36
+ function formatDefault(d) {
37
+ return d.toLocaleDateString();
38
+ }
39
+ export function createDatePicker(container, options = {}) {
40
+ injectStyles();
41
+ const locale = options.locale ?? navigator.language;
42
+ const firstDay = options.firstDay ?? 0;
43
+ const formatFn = options.format ?? formatDefault;
44
+ let selected = options.value ?? null;
45
+ let viewYear = selected?.getFullYear() ?? new Date().getFullYear();
46
+ let viewMonth = selected?.getMonth() ?? new Date().getMonth();
47
+ let open = false;
48
+ const root = document.createElement('div');
49
+ root.className = 'nova-dp';
50
+ const input = document.createElement('input');
51
+ input.type = 'text';
52
+ input.className = 'nova-dp-input';
53
+ input.readOnly = true;
54
+ input.placeholder = 'Select date...';
55
+ input.setAttribute('aria-label', 'Date picker');
56
+ if (selected)
57
+ input.value = formatFn(selected);
58
+ const cal = document.createElement('div');
59
+ cal.className = 'nova-dp-cal';
60
+ cal.setAttribute('role', 'dialog');
61
+ cal.setAttribute('aria-label', 'Calendar');
62
+ root.appendChild(input);
63
+ root.appendChild(cal);
64
+ container.appendChild(root);
65
+ function getMonthName(year, month) {
66
+ return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(new Date(year, month));
67
+ }
68
+ function getWeekdays() {
69
+ const days = [];
70
+ const formatter = new Intl.DateTimeFormat(locale, { weekday: 'short' });
71
+ for (let i = 0; i < 7; i++) {
72
+ const d = new Date(2024, 0, firstDay + i); // Jan 2024 starts on Monday
73
+ days.push(formatter.format(d));
74
+ }
75
+ return days;
76
+ }
77
+ function getDays() {
78
+ const days = [];
79
+ const firstOfMonth = new Date(viewYear, viewMonth, 1);
80
+ let startDay = firstOfMonth.getDay() - firstDay;
81
+ if (startDay < 0)
82
+ startDay += 7;
83
+ // Fill in days from previous month
84
+ for (let i = startDay - 1; i >= 0; i--) {
85
+ days.push({ date: new Date(viewYear, viewMonth, -i), outside: true });
86
+ }
87
+ // Days in current month
88
+ const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();
89
+ for (let i = 1; i <= daysInMonth; i++) {
90
+ days.push({ date: new Date(viewYear, viewMonth, i), outside: false });
91
+ }
92
+ // Fill remaining cells to complete grid (6 rows)
93
+ const remaining = 42 - days.length;
94
+ for (let i = 1; i <= remaining; i++) {
95
+ days.push({ date: new Date(viewYear, viewMonth + 1, i), outside: true });
96
+ }
97
+ return days;
98
+ }
99
+ function isDisabled(date) {
100
+ if (options.min && date < options.min)
101
+ return true;
102
+ if (options.max && date > options.max)
103
+ return true;
104
+ return false;
105
+ }
106
+ function renderCal() {
107
+ while (cal.firstChild)
108
+ cal.removeChild(cal.firstChild);
109
+ // Header
110
+ const header = document.createElement('div');
111
+ header.className = 'nova-dp-header';
112
+ const prevBtn = document.createElement('button');
113
+ prevBtn.textContent = '\u2190';
114
+ prevBtn.setAttribute('aria-label', 'Previous month');
115
+ prevBtn.addEventListener('click', () => {
116
+ viewMonth--;
117
+ if (viewMonth < 0) {
118
+ viewMonth = 11;
119
+ viewYear--;
120
+ }
121
+ renderCal();
122
+ });
123
+ const title = document.createElement('span');
124
+ title.className = 'nova-dp-title';
125
+ title.textContent = getMonthName(viewYear, viewMonth);
126
+ const nextBtn = document.createElement('button');
127
+ nextBtn.textContent = '\u2192';
128
+ nextBtn.setAttribute('aria-label', 'Next month');
129
+ nextBtn.addEventListener('click', () => {
130
+ viewMonth++;
131
+ if (viewMonth > 11) {
132
+ viewMonth = 0;
133
+ viewYear++;
134
+ }
135
+ renderCal();
136
+ });
137
+ header.appendChild(prevBtn);
138
+ header.appendChild(title);
139
+ header.appendChild(nextBtn);
140
+ cal.appendChild(header);
141
+ // Grid
142
+ const grid = document.createElement('div');
143
+ grid.className = 'nova-dp-grid';
144
+ grid.setAttribute('role', 'grid');
145
+ // Weekday headers
146
+ for (const day of getWeekdays()) {
147
+ const wd = document.createElement('div');
148
+ wd.className = 'nova-dp-weekday';
149
+ wd.textContent = day;
150
+ grid.appendChild(wd);
151
+ }
152
+ // Day cells
153
+ const today = new Date();
154
+ const days = getDays();
155
+ for (const { date, outside } of days) {
156
+ const btn = document.createElement('button');
157
+ btn.className = 'nova-dp-day';
158
+ btn.textContent = String(date.getDate());
159
+ btn.setAttribute('aria-label', date.toLocaleDateString(locale, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }));
160
+ if (outside)
161
+ btn.setAttribute('data-outside', '');
162
+ if (sameDay(date, today))
163
+ btn.setAttribute('data-today', '');
164
+ if (selected && sameDay(date, selected))
165
+ btn.setAttribute('aria-current', 'date');
166
+ if (isDisabled(date)) {
167
+ btn.disabled = true;
168
+ }
169
+ else {
170
+ btn.addEventListener('click', () => {
171
+ selected = date;
172
+ input.value = formatFn(date);
173
+ options.onChange?.(date);
174
+ closeCal();
175
+ });
176
+ }
177
+ grid.appendChild(btn);
178
+ }
179
+ // Keyboard nav
180
+ grid.addEventListener('keydown', (e) => {
181
+ const current = document.activeElement;
182
+ const buttons = Array.from(grid.querySelectorAll('.nova-dp-day:not(:disabled)'));
183
+ const idx = buttons.indexOf(current);
184
+ if (idx === -1)
185
+ return;
186
+ let next = idx;
187
+ switch (e.key) {
188
+ case 'ArrowRight':
189
+ next = idx + 1;
190
+ break;
191
+ case 'ArrowLeft':
192
+ next = idx - 1;
193
+ break;
194
+ case 'ArrowDown':
195
+ next = idx + 7;
196
+ break;
197
+ case 'ArrowUp':
198
+ next = idx - 7;
199
+ break;
200
+ case 'PageDown':
201
+ e.preventDefault();
202
+ viewMonth++;
203
+ if (viewMonth > 11) {
204
+ viewMonth = 0;
205
+ viewYear++;
206
+ }
207
+ renderCal();
208
+ return;
209
+ case 'PageUp':
210
+ e.preventDefault();
211
+ viewMonth--;
212
+ if (viewMonth < 0) {
213
+ viewMonth = 11;
214
+ viewYear--;
215
+ }
216
+ renderCal();
217
+ return;
218
+ default: return;
219
+ }
220
+ e.preventDefault();
221
+ if (next >= 0 && next < buttons.length)
222
+ buttons[next].focus();
223
+ });
224
+ cal.appendChild(grid);
225
+ }
226
+ function openCal() {
227
+ if (open)
228
+ return;
229
+ open = true;
230
+ if (selected) {
231
+ viewYear = selected.getFullYear();
232
+ viewMonth = selected.getMonth();
233
+ }
234
+ renderCal();
235
+ cal.setAttribute('data-open', '');
236
+ }
237
+ function closeCal() {
238
+ open = false;
239
+ cal.removeAttribute('data-open');
240
+ }
241
+ input.addEventListener('click', () => {
242
+ if (open)
243
+ closeCal();
244
+ else
245
+ openCal();
246
+ });
247
+ input.addEventListener('keydown', (e) => {
248
+ if (e.key === 'Enter' || e.key === ' ') {
249
+ e.preventDefault();
250
+ if (open)
251
+ closeCal();
252
+ else
253
+ openCal();
254
+ }
255
+ else if (e.key === 'Escape') {
256
+ closeCal();
257
+ }
258
+ });
259
+ function handleOutsideClick(e) {
260
+ if (!root.contains(e.target))
261
+ closeCal();
262
+ }
263
+ document.addEventListener('click', handleOutsideClick);
264
+ return {
265
+ getValue() {
266
+ return selected;
267
+ },
268
+ setValue(date) {
269
+ selected = date;
270
+ input.value = formatFn(date);
271
+ viewYear = date.getFullYear();
272
+ viewMonth = date.getMonth();
273
+ if (open)
274
+ renderCal();
275
+ },
276
+ destroy() {
277
+ document.removeEventListener('click', handleOutsideClick);
278
+ root.remove();
279
+ },
280
+ };
281
+ }
282
+ //# sourceMappingURL=date-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAE1C,SAAS,YAAY;IACnB,IAAI,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;QAAE,OAAO;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC;IACpB,KAAK,CAAC,WAAW,GAAG;;;;;;;;;;;;;;;;;;kDAkB4B,CAAC;IACjD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,OAAO,CAAC,CAAO,EAAE,CAAO;IAC/B,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAC7G,CAAC;AAED,SAAS,aAAa,CAAC,CAAO;IAC5B,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,SAAsB,EACtB,UAA6B,EAAE;IAE/B,YAAY,EAAE,CAAC;IAEf,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IACjD,IAAI,QAAQ,GAAgB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IAClD,IAAI,QAAQ,GAAG,QAAQ,EAAE,WAAW,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnE,IAAI,SAAS,GAAG,QAAQ,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9D,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAE3B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC;IAClC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC;IACrC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAChD,IAAI,QAAQ;QAAE,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE/C,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,SAAS,GAAG,aAAa,CAAC;IAC9B,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnC,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAE3C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAE5B,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;QAC/C,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED,SAAS,WAAW;QAClB,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B;YACvE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,OAAO;QACd,MAAM,IAAI,GAAuC,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC;QAChD,IAAI,QAAQ,GAAG,CAAC;YAAE,QAAQ,IAAI,CAAC,CAAC;QAEhC,mCAAmC;QACnC,KAAK,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,wBAAwB;QACxB,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,iDAAiD;QACjD,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,UAAU,CAAC,IAAU;QAC5B,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACnD,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,SAAS;QAChB,OAAO,GAAG,CAAC,UAAU;YAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEvD,SAAS;QACT,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC;QAEpC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC/B,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QACrD,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACrC,SAAS,EAAE,CAAC;YACZ,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAAC,SAAS,GAAG,EAAE,CAAC;gBAAC,QAAQ,EAAE,CAAC;YAAC,CAAC;YAClD,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC;QAClC,KAAK,CAAC,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEtD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC/B,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACjD,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACrC,SAAS,EAAE,CAAC;YACZ,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;gBAAC,SAAS,GAAG,CAAC,CAAC;gBAAC,QAAQ,EAAE,CAAC;YAAC,CAAC;YAClD,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5B,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAExB,OAAO;QACP,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElC,kBAAkB;QAClB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,EAAE,CAAC,SAAS,GAAG,iBAAiB,CAAC;YACjC,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QAED,YAAY;QACZ,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QAEvB,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7C,GAAG,CAAC,SAAS,GAAG,aAAa,CAAC;YAC9B,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAErI,IAAI,OAAO;gBAAE,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;gBAAE,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC7D,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;gBAAE,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAClF,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;oBACjC,QAAQ,GAAG,IAAI,CAAC;oBAChB,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC7B,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;oBACzB,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QAED,eAAe;QACf,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAA4B,CAAC;YACtD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAkB,CAAC;YAClG,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,OAAO;YAEvB,IAAI,IAAI,GAAG,GAAG,CAAC;YACf,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;gBACd,KAAK,YAAY;oBAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;oBAAC,MAAM;gBACzC,KAAK,WAAW;oBAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;oBAAC,MAAM;gBACxC,KAAK,WAAW;oBAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;oBAAC,MAAM;gBACxC,KAAK,SAAS;oBAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;oBAAC,MAAM;gBACtC,KAAK,UAAU;oBACb,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,SAAS,EAAE,CAAC;oBACZ,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;wBAAC,SAAS,GAAG,CAAC,CAAC;wBAAC,QAAQ,EAAE,CAAC;oBAAC,CAAC;oBAClD,SAAS,EAAE,CAAC;oBACZ,OAAO;gBACT,KAAK,QAAQ;oBACX,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,SAAS,EAAE,CAAC;oBACZ,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;wBAAC,SAAS,GAAG,EAAE,CAAC;wBAAC,QAAQ,EAAE,CAAC;oBAAC,CAAC;oBAClD,SAAS,EAAE,CAAC;oBACZ,OAAO;gBACT,OAAO,CAAC,CAAC,OAAO;YAClB,CAAC;YAED,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,SAAS,OAAO;QACd,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,GAAG,IAAI,CAAC;QACZ,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;YAClC,SAAS,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAClC,CAAC;QACD,SAAS,EAAE,CAAC;QACZ,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,QAAQ;QACf,IAAI,GAAG,KAAK,CAAC;QACb,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACnC,IAAI,IAAI;YAAE,QAAQ,EAAE,CAAC;;YAAM,OAAO,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACvC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,IAAI;gBAAE,QAAQ,EAAE,CAAC;;gBAAM,OAAO,EAAE,CAAC;QACvC,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC9B,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,kBAAkB,CAAC,CAAa;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;YAAE,QAAQ,EAAE,CAAC;IACnD,CAAC;IACD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAEvD,OAAO;QACL,QAAQ;YACN,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,QAAQ,CAAC,IAAU;YACjB,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7B,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9B,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI;gBAAE,SAAS,EAAE,CAAC;QACxB,CAAC;QAED,OAAO;YACL,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createDatePicker } from './date-picker';
2
+ export type { DatePickerOptions, DatePickerInstance } from './date-picker';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/date-picker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createDatePicker } from './date-picker';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Nova Engine — File Upload
3
+ *
4
+ * Drag-and-drop file upload zone with validation and file list.
5
+ */
6
+ export interface FileUploadOptions {
7
+ /** MIME type filter (e.g. 'image/*,.pdf'). */
8
+ accept?: string;
9
+ /** Allow multiple files. Default: false */
10
+ multiple?: boolean;
11
+ /** Max file size in bytes. */
12
+ maxSize?: number;
13
+ /** Max number of files. */
14
+ maxFiles?: number;
15
+ onSelect?: (files: File[]) => void;
16
+ onError?: (error: string) => void;
17
+ }
18
+ export interface FileUploadInstance {
19
+ getFiles(): File[];
20
+ clear(): void;
21
+ destroy(): void;
22
+ }
23
+ export declare function createFileUpload(container: HTMLElement, options?: FileUploadOptions): FileUploadInstance;
24
+ //# sourceMappingURL=file-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../src/file-upload/file-upload.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,IAAI,IAAI,EAAE,CAAC;IACnB,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;CACjB;AA4BD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,iBAAsB,GAC9B,kBAAkB,CAgKpB"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Nova Engine — File Upload
3
+ *
4
+ * Drag-and-drop file upload zone with validation and file list.
5
+ */
6
+ const STYLE_ID = 'nova-file-upload-styles';
7
+ function injectStyles() {
8
+ if (document.getElementById(STYLE_ID))
9
+ return;
10
+ const style = document.createElement('style');
11
+ style.id = STYLE_ID;
12
+ style.textContent = `
13
+ .nova-fu{font-family:inherit}
14
+ .nova-fu-zone{border:2px dashed #d1d5db;border-radius:8px;padding:2rem;text-align:center;cursor:pointer;transition:border-color 0.2s,background 0.2s}
15
+ .nova-fu-zone:hover,.nova-fu-zone[data-dragover]{border-color:#3b82f6;background:#eff6ff}
16
+ .nova-fu-zone-text{color:#6b7280;font-size:0.875rem}
17
+ .nova-fu-zone-text strong{color:#3b82f6}
18
+ .nova-fu-list{margin-top:0.5rem;display:flex;flex-direction:column;gap:0.25rem}
19
+ .nova-fu-item{display:flex;align-items:center;justify-content:space-between;padding:0.5rem;background:#f9fafb;border-radius:6px;font-size:0.875rem}
20
+ .nova-fu-item-info{display:flex;align-items:center;gap:0.5rem}
21
+ .nova-fu-item-size{color:#9ca3af;font-size:0.75rem}
22
+ .nova-fu-remove{background:none;border:none;cursor:pointer;color:#ef4444;font-weight:bold;font-size:1rem;padding:0 0.25rem}`;
23
+ document.head.appendChild(style);
24
+ }
25
+ function formatSize(bytes) {
26
+ if (bytes < 1024)
27
+ return `${bytes} B`;
28
+ if (bytes < 1024 * 1024)
29
+ return `${(bytes / 1024).toFixed(1)} KB`;
30
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
31
+ }
32
+ export function createFileUpload(container, options = {}) {
33
+ injectStyles();
34
+ let files = [];
35
+ const root = document.createElement('div');
36
+ root.className = 'nova-fu';
37
+ // Drop zone
38
+ const zone = document.createElement('div');
39
+ zone.className = 'nova-fu-zone';
40
+ zone.setAttribute('role', 'button');
41
+ zone.setAttribute('tabindex', '0');
42
+ zone.setAttribute('aria-label', 'Upload files');
43
+ const text = document.createElement('div');
44
+ text.className = 'nova-fu-zone-text';
45
+ const strong = document.createElement('strong');
46
+ strong.textContent = 'Click to browse';
47
+ text.appendChild(strong);
48
+ text.appendChild(document.createTextNode(' or drag and drop'));
49
+ zone.appendChild(text);
50
+ // Hidden file input
51
+ const fileInput = document.createElement('input');
52
+ fileInput.type = 'file';
53
+ fileInput.style.display = 'none';
54
+ if (options.accept)
55
+ fileInput.accept = options.accept;
56
+ if (options.multiple)
57
+ fileInput.multiple = true;
58
+ // File list
59
+ const fileList = document.createElement('div');
60
+ fileList.className = 'nova-fu-list';
61
+ root.appendChild(zone);
62
+ root.appendChild(fileInput);
63
+ root.appendChild(fileList);
64
+ container.appendChild(root);
65
+ function validate(newFiles) {
66
+ const valid = [];
67
+ for (const file of newFiles) {
68
+ if (options.maxSize && file.size > options.maxSize) {
69
+ options.onError?.(`"${file.name}" exceeds max size of ${formatSize(options.maxSize)}`);
70
+ continue;
71
+ }
72
+ if (options.accept) {
73
+ const types = options.accept.split(',').map((t) => t.trim());
74
+ const matches = types.some((type) => {
75
+ if (type.startsWith('.'))
76
+ return file.name.toLowerCase().endsWith(type.toLowerCase());
77
+ if (type.endsWith('/*'))
78
+ return file.type.startsWith(type.slice(0, -1));
79
+ return file.type === type;
80
+ });
81
+ if (!matches) {
82
+ options.onError?.(`"${file.name}" is not an accepted file type`);
83
+ continue;
84
+ }
85
+ }
86
+ valid.push(file);
87
+ }
88
+ return valid;
89
+ }
90
+ function addFiles(newFiles) {
91
+ const validated = validate(newFiles);
92
+ if (validated.length === 0)
93
+ return;
94
+ if (options.multiple) {
95
+ files = [...files, ...validated];
96
+ if (options.maxFiles && files.length > options.maxFiles) {
97
+ files = files.slice(0, options.maxFiles);
98
+ options.onError?.(`Maximum ${options.maxFiles} files allowed`);
99
+ }
100
+ }
101
+ else {
102
+ files = [validated[0]];
103
+ }
104
+ renderList();
105
+ options.onSelect?.([...files]);
106
+ }
107
+ function renderList() {
108
+ while (fileList.firstChild)
109
+ fileList.removeChild(fileList.firstChild);
110
+ for (let i = 0; i < files.length; i++) {
111
+ const file = files[i];
112
+ const item = document.createElement('div');
113
+ item.className = 'nova-fu-item';
114
+ const info = document.createElement('div');
115
+ info.className = 'nova-fu-item-info';
116
+ const name = document.createElement('span');
117
+ name.textContent = file.name;
118
+ const size = document.createElement('span');
119
+ size.className = 'nova-fu-item-size';
120
+ size.textContent = formatSize(file.size);
121
+ info.appendChild(name);
122
+ info.appendChild(size);
123
+ const removeBtn = document.createElement('button');
124
+ removeBtn.className = 'nova-fu-remove';
125
+ removeBtn.textContent = '\u00D7';
126
+ removeBtn.setAttribute('aria-label', `Remove ${file.name}`);
127
+ removeBtn.addEventListener('click', () => {
128
+ files.splice(i, 1);
129
+ renderList();
130
+ options.onSelect?.([...files]);
131
+ });
132
+ item.appendChild(info);
133
+ item.appendChild(removeBtn);
134
+ fileList.appendChild(item);
135
+ }
136
+ }
137
+ // Click to browse
138
+ zone.addEventListener('click', () => fileInput.click());
139
+ zone.addEventListener('keydown', (e) => {
140
+ if (e.key === 'Enter' || e.key === ' ') {
141
+ e.preventDefault();
142
+ fileInput.click();
143
+ }
144
+ });
145
+ fileInput.addEventListener('change', () => {
146
+ if (fileInput.files)
147
+ addFiles(Array.from(fileInput.files));
148
+ fileInput.value = '';
149
+ });
150
+ // Drag events
151
+ zone.addEventListener('dragover', (e) => {
152
+ e.preventDefault();
153
+ zone.setAttribute('data-dragover', '');
154
+ });
155
+ zone.addEventListener('dragleave', () => {
156
+ zone.removeAttribute('data-dragover');
157
+ });
158
+ zone.addEventListener('drop', (e) => {
159
+ e.preventDefault();
160
+ zone.removeAttribute('data-dragover');
161
+ if (e.dataTransfer?.files)
162
+ addFiles(Array.from(e.dataTransfer.files));
163
+ });
164
+ return {
165
+ getFiles() {
166
+ return [...files];
167
+ },
168
+ clear() {
169
+ files = [];
170
+ renderList();
171
+ },
172
+ destroy() {
173
+ root.remove();
174
+ },
175
+ };
176
+ }
177
+ //# sourceMappingURL=file-upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-upload.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { createFileUpload } from './file-upload';
2
+ export type { FileUploadOptions, FileUploadInstance } from './file-upload';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/file-upload/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createFileUpload } from './file-upload';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import type { Validator, AsyncValidator } from './validators';
8
8
  export interface FieldSchema {
9
- type?: 'text' | 'email' | 'password' | 'number' | 'textarea' | 'select' | 'checkbox';
9
+ type?: 'text' | 'email' | 'password' | 'number' | 'textarea' | 'select' | 'checkbox' | 'array';
10
10
  label?: string;
11
11
  placeholder?: string;
12
12
  required?: boolean;
@@ -17,6 +17,8 @@ export interface FieldSchema {
17
17
  label: string;
18
18
  value: string;
19
19
  }[];
20
+ /** Schema for each item in a field array (only used when type is 'array') */
21
+ itemSchema?: Record<string, FieldSchema>;
20
22
  }
21
23
  export interface StepSchema {
22
24
  title?: string;
@@ -49,6 +51,7 @@ export declare class NovaForm {
49
51
  private submitting;
50
52
  private submitError;
51
53
  private listeners;
54
+ private asyncTimers;
52
55
  constructor(schema: FormSchema);
53
56
  /** Initialize field states from schema */
54
57
  private initFields;
@@ -60,22 +63,32 @@ export declare class NovaForm {
60
63
  setValue(name: string, value: unknown): void;
61
64
  /** Mark a field as touched (blurred) */
62
65
  touch(name: string): void;
63
- /** Validate a single field */
64
- validateField(name: string): string | null;
66
+ /** Run sync validators for a single field */
67
+ private validateFieldSync;
68
+ /** Run async validators for a field */
69
+ private runAsyncValidators;
70
+ /** Validate a single field (sync + async) */
71
+ validateField(name: string): Promise<string | null>;
65
72
  /** Validate all fields in the current step */
66
- validateStep(): boolean;
73
+ validateStep(): Promise<boolean>;
67
74
  /** Validate all fields across all steps */
68
- validateAll(): boolean;
75
+ validateAll(): Promise<boolean>;
69
76
  /** Check if form is valid (no errors) */
70
77
  isValid(): boolean;
71
78
  /** Go to next step (validates current step first) */
72
- nextStep(): boolean;
79
+ nextStep(): Promise<boolean>;
73
80
  /** Go to previous step */
74
81
  prevStep(): boolean;
75
82
  /** Go to specific step */
76
83
  goToStep(index: number): void;
77
84
  /** Submit the form */
78
85
  submit(): Promise<boolean>;
86
+ /** Add an item to a field array */
87
+ addItem(fieldName: string, defaults?: Record<string, unknown>): void;
88
+ /** Remove an item from a field array by index */
89
+ removeItem(fieldName: string, index: number): void;
90
+ /** Get items from a field array */
91
+ getItems(fieldName: string): unknown[];
79
92
  /** Get all form data */
80
93
  getData(): Record<string, unknown>;
81
94
  /** Reset form to initial state */
@@ -1 +1 @@
1
- {"version":3,"file":"form-engine.d.ts","sourceRoot":"","sources":["../../src/forms/form-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-engine.d.ts","sourceRoot":"","sources":["../../src/forms/form-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC/F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AAE/C,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,WAAW,CAAoD;gBAE3D,MAAM,EAAE,UAAU;IAK9B,0CAA0C;IAC1C,OAAO,CAAC,UAAU;IAclB,sCAAsC;IACtC,IAAI,KAAK,IAAI,SAAS,CASrB;IAED,kCAAkC;IAClC,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAe5C,wCAAwC;IACxC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAsBzB,6CAA6C;IAC7C,OAAO,CAAC,iBAAiB;IAoDzB,uCAAuC;YACzB,kBAAkB;IAyBhC,6CAA6C;IACvC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUzD,8CAA8C;IACxC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IActC,2CAA2C;IACrC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAarC,yCAAyC;IACzC,OAAO,IAAI,OAAO;IAIlB,qDAAqD;IAC/C,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAUlC,0BAA0B;IAC1B,QAAQ,IAAI,OAAO;IASnB,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO7B,sBAAsB;IAChB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAyBhC,mCAAmC;IACnC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiBpE,iDAAiD;IACjD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAUlD,mCAAmC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAKtC,wBAAwB;IACxB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQlC,kCAAkC;IAClC,KAAK,IAAI,IAAI;IAQb,iCAAiC;IACjC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,IAAI;IAK7C,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,cAAc;CAMvB;AAED,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAEvD"}