@happyvertical/smrt-events 0.30.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 (64) hide show
  1. package/AGENTS.md +20 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +151 -0
  5. package/dist/__smrt-register__.d.ts +2 -0
  6. package/dist/__smrt-register__.d.ts.map +1 -0
  7. package/dist/collections/EventAssetCollection.d.ts +16 -0
  8. package/dist/collections/EventAssetCollection.d.ts.map +1 -0
  9. package/dist/collections/EventCollection.d.ts +108 -0
  10. package/dist/collections/EventCollection.d.ts.map +1 -0
  11. package/dist/collections/EventParticipantCollection.d.ts +42 -0
  12. package/dist/collections/EventParticipantCollection.d.ts.map +1 -0
  13. package/dist/collections/EventSeriesCollection.d.ts +62 -0
  14. package/dist/collections/EventSeriesCollection.d.ts.map +1 -0
  15. package/dist/collections/EventTypeCollection.d.ts +53 -0
  16. package/dist/collections/EventTypeCollection.d.ts.map +1 -0
  17. package/dist/index.d.ts +15 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +1419 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/manifest.json +4067 -0
  22. package/dist/models/Event.d.ts +92 -0
  23. package/dist/models/Event.d.ts.map +1 -0
  24. package/dist/models/EventAsset.d.ts +17 -0
  25. package/dist/models/EventAsset.d.ts.map +1 -0
  26. package/dist/models/EventParticipant.d.ts +65 -0
  27. package/dist/models/EventParticipant.d.ts.map +1 -0
  28. package/dist/models/EventSeries.d.ts +73 -0
  29. package/dist/models/EventSeries.d.ts.map +1 -0
  30. package/dist/models/EventType.d.ts +44 -0
  31. package/dist/models/EventType.d.ts.map +1 -0
  32. package/dist/playground.d.ts +2 -0
  33. package/dist/playground.d.ts.map +1 -0
  34. package/dist/playground.js +47 -0
  35. package/dist/playground.js.map +1 -0
  36. package/dist/smrt-knowledge.json +1662 -0
  37. package/dist/svelte/components/MeetingView.svelte +321 -0
  38. package/dist/svelte/components/MeetingView.svelte.d.ts +9 -0
  39. package/dist/svelte/components/MeetingView.svelte.d.ts.map +1 -0
  40. package/dist/svelte/i18n.d.ts +10 -0
  41. package/dist/svelte/i18n.d.ts.map +1 -0
  42. package/dist/svelte/i18n.js +11 -0
  43. package/dist/svelte/index.d.ts +11 -0
  44. package/dist/svelte/index.d.ts.map +1 -0
  45. package/dist/svelte/index.js +18 -0
  46. package/dist/svelte/playground.d.ts +40 -0
  47. package/dist/svelte/playground.d.ts.map +1 -0
  48. package/dist/svelte/playground.js +43 -0
  49. package/dist/svelte/types.d.ts +37 -0
  50. package/dist/svelte/types.d.ts.map +1 -0
  51. package/dist/svelte/types.js +6 -0
  52. package/dist/types.d.ts +127 -0
  53. package/dist/types.d.ts.map +1 -0
  54. package/dist/types.js +2 -0
  55. package/dist/types.js.map +1 -0
  56. package/dist/ui.d.ts +10 -0
  57. package/dist/ui.d.ts.map +1 -0
  58. package/dist/ui.js +28 -0
  59. package/dist/ui.js.map +1 -0
  60. package/dist/utils.d.ts +93 -0
  61. package/dist/utils.d.ts.map +1 -0
  62. package/dist/utils.js +127 -0
  63. package/dist/utils.js.map +1 -0
  64. package/package.json +102 -0
@@ -0,0 +1,321 @@
1
+ <script lang="ts">
2
+ /**
3
+ * MeetingView Component
4
+ * Displays details for a council meeting with links to agenda, minutes, video
5
+ */
6
+
7
+ import { useI18n } from '@happyvertical/smrt-ui/i18n';
8
+ import { M } from '../i18n.js';
9
+ import type { Meeting } from '../types.js';
10
+
11
+ const { t } = useI18n();
12
+
13
+ interface Props {
14
+ meeting: Meeting;
15
+ calendarUrl?: string;
16
+ }
17
+
18
+ const { meeting, calendarUrl = '/events' }: Props = $props();
19
+
20
+ // Format full date
21
+ const formattedDate = $derived(
22
+ new Date(meeting.startDate).toLocaleDateString('en-US', {
23
+ weekday: 'long',
24
+ year: 'numeric',
25
+ month: 'long',
26
+ day: 'numeric',
27
+ }),
28
+ );
29
+
30
+ // Format time
31
+ const formattedTime = $derived(
32
+ new Date(meeting.startDate).toLocaleTimeString('en-US', {
33
+ hour: 'numeric',
34
+ minute: '2-digit',
35
+ hour12: true,
36
+ }),
37
+ );
38
+
39
+ // Check if meeting has any documents
40
+ const hasDocuments = $derived(
41
+ meeting.agendaUrl ||
42
+ meeting.minutesUrl ||
43
+ meeting.videoUrl ||
44
+ meeting.highlightsUrl,
45
+ );
46
+ </script>
47
+
48
+ <div class="meeting-view">
49
+ <header class="meeting-header">
50
+ <a href={calendarUrl} class="back-link">
51
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
52
+ <path d="M10 12L6 8L10 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
53
+ </svg>
54
+ {t(M['events.meeting_view.back_to_calendar'])}
55
+ </a>
56
+
57
+ {#if meeting.council}
58
+ <div class="council-badge">
59
+ <span class="council-icon">{'\u{1F3DB}'}</span>
60
+ {meeting.council.name}
61
+ </div>
62
+ {/if}
63
+
64
+ <h1 class="meeting-title">{meeting.name}</h1>
65
+
66
+ <div class="meeting-meta">
67
+ <time class="meeting-date">{formattedDate}</time>
68
+ <span class="meeting-time">{formattedTime}</span>
69
+ </div>
70
+ </header>
71
+
72
+ <div class="meeting-content">
73
+ {#if hasDocuments}
74
+ <section class="documents-section">
75
+ <h2 class="section-title">{t(M['events.meeting_view.documents_and_resources'])}</h2>
76
+
77
+ <div class="documents-grid">
78
+ {#if meeting.agendaUrl}
79
+ <a href={meeting.agendaUrl} class="document-card" target="_blank" rel="noopener noreferrer">
80
+ <span class="document-icon">{'\u{1F4CB}'}</span>
81
+ <div class="document-info">
82
+ <span class="document-name">Agenda</span>
83
+ <span class="document-desc">{t(M['events.meeting_view.agenda_desc'])}</span>
84
+ </div>
85
+ <span class="document-arrow">{'\u2197'}</span>
86
+ </a>
87
+ {/if}
88
+
89
+ {#if meeting.minutesUrl}
90
+ <a href={meeting.minutesUrl} class="document-card" target="_blank" rel="noopener noreferrer">
91
+ <span class="document-icon">{'\u{1F4DD}'}</span>
92
+ <div class="document-info">
93
+ <span class="document-name">Minutes</span>
94
+ <span class="document-desc">{t(M['events.meeting_view.minutes_desc'])}</span>
95
+ </div>
96
+ <span class="document-arrow">{'\u2197'}</span>
97
+ </a>
98
+ {/if}
99
+
100
+ {#if meeting.videoUrl}
101
+ <a href={meeting.videoUrl} class="document-card" target="_blank" rel="noopener noreferrer">
102
+ <span class="document-icon">{'\u{1F3AC}'}</span>
103
+ <div class="document-info">
104
+ <span class="document-name">Video</span>
105
+ <span class="document-desc">{t(M['events.meeting_view.video_desc'])}</span>
106
+ </div>
107
+ <span class="document-arrow">{'\u2197'}</span>
108
+ </a>
109
+ {/if}
110
+
111
+ {#if meeting.highlightsUrl}
112
+ <a href={meeting.highlightsUrl} class="document-card" target="_blank" rel="noopener noreferrer">
113
+ <span class="document-icon">{'\u{2728}'}</span>
114
+ <div class="document-info">
115
+ <span class="document-name">Highlights</span>
116
+ <span class="document-desc">{t(M['events.meeting_view.highlights_desc'])}</span>
117
+ </div>
118
+ <span class="document-arrow">{'\u2197'}</span>
119
+ </a>
120
+ {/if}
121
+ </div>
122
+ </section>
123
+ {:else}
124
+ <div class="empty-state">
125
+ <span class="empty-icon">{'\u{1F4C4}'}</span>
126
+ <p class="empty-text">{t(M['events.meeting_view.no_documents'])}</p>
127
+ </div>
128
+ {/if}
129
+ </div>
130
+ </div>
131
+
132
+ <style>
133
+ .meeting-view {
134
+ --view-bg: var(--color-neutral-white, #ffffff);
135
+ --view-border: var(--color-neutral-gray200, #e5e7eb);
136
+ --header-bg: var(--color-neutral-gray100, #f5f5f5);
137
+ --card-hover: var(--color-neutral-gray100, #f5f5f5);
138
+
139
+ background: var(--view-bg);
140
+ }
141
+
142
+ .meeting-header {
143
+ padding: var(--spacing-lg, 1.5rem);
144
+ background: var(--header-bg);
145
+ border-bottom: 1px solid var(--view-border);
146
+ }
147
+
148
+ .back-link {
149
+ display: inline-flex;
150
+ align-items: center;
151
+ gap: var(--spacing-xs, 0.25rem);
152
+ color: var(--color-primary-main, #1976d2);
153
+ text-decoration: none;
154
+ font-size: var(--smrt-typography-label-large-size, 0.875rem);
155
+ margin-bottom: var(--spacing-md, 1rem);
156
+ transition: color var(--transition-fast, 150ms);
157
+ }
158
+
159
+ .back-link:hover {
160
+ color: var(--color-primary-dark, #0d47a1);
161
+ }
162
+
163
+ .council-badge {
164
+ display: inline-flex;
165
+ align-items: center;
166
+ gap: var(--spacing-xs, 0.25rem);
167
+ padding: var(--spacing-xs, 0.25rem) var(--spacing-sm, 0.5rem);
168
+ background: var(--view-bg);
169
+ border: 1px solid var(--view-border);
170
+ border-radius: var(--smrt-radius-full, 9999px);
171
+ font-size: var(--smrt-typography-label-large-size, 0.875rem);
172
+ color: var(--color-text-secondary, #666);
173
+ margin-bottom: var(--spacing-sm, 0.5rem);
174
+ }
175
+
176
+ .council-icon {
177
+ font-size: var(--smrt-typography-label-large-size, 14px);
178
+ }
179
+
180
+ .meeting-title {
181
+ margin: 0;
182
+ font-size: var(--smrt-typography-headline-small-size, 1.5rem);
183
+ font-weight: var(--smrt-typography-weight-semibold, 600);
184
+ color: var(--color-text-primary, #333);
185
+ line-height: var(--smrt-typography-headline-small-line-height, 1.3);
186
+ }
187
+
188
+ .meeting-meta {
189
+ display: flex;
190
+ align-items: center;
191
+ gap: var(--spacing-md, 1rem);
192
+ margin-top: var(--spacing-sm, 0.5rem);
193
+ color: var(--color-text-secondary, #666);
194
+ font-size: var(--smrt-typography-body-large-size, 1rem);
195
+ }
196
+
197
+ .meeting-date {
198
+ font-weight: var(--smrt-typography-weight-medium, 500);
199
+ }
200
+
201
+ .meeting-time::before {
202
+ content: '\2022';
203
+ margin-right: var(--spacing-md, 1rem);
204
+ }
205
+
206
+ .meeting-content {
207
+ padding: var(--spacing-lg, 1.5rem);
208
+ }
209
+
210
+ .section-title {
211
+ margin: 0 0 var(--spacing-md, 1rem) 0;
212
+ font-size: var(--smrt-typography-title-medium-size, 1.125rem);
213
+ font-weight: var(--smrt-typography-weight-semibold, 600);
214
+ color: var(--color-text-primary, #333);
215
+ }
216
+
217
+ .documents-grid {
218
+ display: grid;
219
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
220
+ gap: var(--spacing-md, 1rem);
221
+ }
222
+
223
+ .document-card {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: var(--spacing-md, 1rem);
227
+ padding: var(--spacing-md, 1rem);
228
+ background: var(--view-bg);
229
+ border: 1px solid var(--view-border);
230
+ border-radius: var(--smrt-radius-md, 8px);
231
+ text-decoration: none;
232
+ color: var(--color-text-primary, #333);
233
+ transition: all var(--transition-fast, 150ms);
234
+ }
235
+
236
+ .document-card:hover {
237
+ background: var(--card-hover);
238
+ border-color: var(--color-neutral-gray300, #d1d5db);
239
+ transform: translateY(-1px);
240
+ }
241
+
242
+ .document-card:hover .document-arrow {
243
+ transform: translate(2px, -2px);
244
+ }
245
+
246
+ .document-icon {
247
+ font-size: var(--smrt-typography-headline-small-size, 24px);
248
+ flex-shrink: 0;
249
+ }
250
+
251
+ .document-info {
252
+ flex: 1;
253
+ min-width: 0;
254
+ }
255
+
256
+ .document-name {
257
+ display: block;
258
+ font-weight: var(--smrt-typography-weight-medium, 500);
259
+ font-size: var(--smrt-typography-title-medium-size, 1rem);
260
+ }
261
+
262
+ .document-desc {
263
+ display: block;
264
+ font-size: var(--smrt-typography-body-medium-size, 0.875rem);
265
+ color: var(--color-text-secondary, #666);
266
+ margin-top: var(--smrt-spacing-1, 4px);
267
+ }
268
+
269
+ .document-arrow {
270
+ flex-shrink: 0;
271
+ font-size: var(--smrt-typography-body-large-size, 16px);
272
+ color: var(--color-text-secondary, #666);
273
+ transition: transform var(--transition-fast, 150ms);
274
+ }
275
+
276
+ .empty-state {
277
+ text-align: center;
278
+ padding: var(--spacing-3xl, 4rem) var(--spacing-lg, 1.5rem);
279
+ color: var(--color-text-secondary, #666);
280
+ }
281
+
282
+ .empty-icon {
283
+ font-size: var(--smrt-typography-display-medium-size, 48px);
284
+ display: block;
285
+ margin-bottom: var(--spacing-md, 1rem);
286
+ opacity: 0.5;
287
+ }
288
+
289
+ .empty-text {
290
+ margin: 0;
291
+ font-size: var(--smrt-typography-body-large-size, 1.125rem);
292
+ }
293
+
294
+ @media (max-width: 640px) {
295
+ .meeting-header {
296
+ padding: var(--spacing-md, 1rem);
297
+ }
298
+
299
+ .meeting-title {
300
+ font-size: var(--smrt-typography-title-large-size, 1.25rem);
301
+ }
302
+
303
+ .meeting-meta {
304
+ flex-direction: column;
305
+ align-items: flex-start;
306
+ gap: var(--spacing-xs, 0.25rem);
307
+ }
308
+
309
+ .meeting-time::before {
310
+ display: none;
311
+ }
312
+
313
+ .meeting-content {
314
+ padding: var(--spacing-md, 1rem);
315
+ }
316
+
317
+ .documents-grid {
318
+ grid-template-columns: 1fr;
319
+ }
320
+ }
321
+ </style>
@@ -0,0 +1,9 @@
1
+ import type { Meeting } from '../types.js';
2
+ interface Props {
3
+ meeting: Meeting;
4
+ calendarUrl?: string;
5
+ }
6
+ declare const MeetingView: import("svelte").Component<Props, {}, "">;
7
+ type MeetingView = ReturnType<typeof MeetingView>;
8
+ export default MeetingView;
9
+ //# sourceMappingURL=MeetingView.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeetingView.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/MeetingView.svelte.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,UAAU,KAAK;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiID,QAAA,MAAM,WAAW,2CAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare const M: {
2
+ readonly 'events.meeting_view.back_to_calendar': "events.meeting_view.back_to_calendar";
3
+ readonly 'events.meeting_view.documents_and_resources': "events.meeting_view.documents_and_resources";
4
+ readonly 'events.meeting_view.agenda_desc': "events.meeting_view.agenda_desc";
5
+ readonly 'events.meeting_view.minutes_desc': "events.meeting_view.minutes_desc";
6
+ readonly 'events.meeting_view.video_desc': "events.meeting_view.video_desc";
7
+ readonly 'events.meeting_view.highlights_desc': "events.meeting_view.highlights_desc";
8
+ readonly 'events.meeting_view.no_documents': "events.meeting_view.no_documents";
9
+ };
10
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/svelte/i18n.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,CAAC;;;;;;;;CAUZ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { defineMessages } from '@happyvertical/smrt-ui/i18n';
2
+ export const M = defineMessages({
3
+ // MeetingView
4
+ 'events.meeting_view.back_to_calendar': 'Back to Calendar',
5
+ 'events.meeting_view.documents_and_resources': 'Documents & Resources',
6
+ 'events.meeting_view.agenda_desc': 'Meeting agenda and items',
7
+ 'events.meeting_view.minutes_desc': 'Official meeting minutes',
8
+ 'events.meeting_view.video_desc': 'Watch the recording',
9
+ 'events.meeting_view.highlights_desc': 'Key decisions summary',
10
+ 'events.meeting_view.no_documents': 'No documents available yet for this meeting',
11
+ });
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Events Module Svelte Components
3
+ *
4
+ * Optional Svelte UI components for the events module.
5
+ * Auto-registers components with ModuleUIRegistry on import.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export { default as MeetingView } from './components/MeetingView.svelte';
10
+ export * from './types.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/svelte/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGzE,cAAc,YAAY,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Events Module Svelte Components
3
+ *
4
+ * Optional Svelte UI components for the events module.
5
+ * Auto-registers components with ModuleUIRegistry on import.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { ModuleUIRegistry } from '@happyvertical/smrt-ui/registry';
10
+ import { EVENTS_MODULE_META } from '../ui.js';
11
+ // Export components
12
+ export { default as MeetingView } from './components/MeetingView.svelte';
13
+ // Export types
14
+ export * from './types.js';
15
+ // Auto-register with ModuleUIRegistry
16
+ import MeetingView from './components/MeetingView.svelte';
17
+ ModuleUIRegistry.registerModule(EVENTS_MODULE_META);
18
+ ModuleUIRegistry.register('@happyvertical/smrt-events', 'meeting-view', MeetingView);
@@ -0,0 +1,40 @@
1
+ declare const _default: {
2
+ packageName: string;
3
+ displayName: string;
4
+ description: string | undefined;
5
+ moduleMeta: import("@happyvertical/smrt-types").SmrtModuleMeta;
6
+ entries: {
7
+ id: string;
8
+ title: string;
9
+ description: string;
10
+ loadComponent: () => Promise<typeof import("./components/MeetingView.svelte")>;
11
+ order: number;
12
+ props: {
13
+ meeting: {
14
+ id: string;
15
+ slug: string;
16
+ name: string;
17
+ startDate: string;
18
+ status: string;
19
+ agendaUrl: string;
20
+ minutesUrl: string;
21
+ videoUrl: string;
22
+ highlightsUrl: string;
23
+ council: {
24
+ id: string;
25
+ slug: string;
26
+ name: string;
27
+ timezone: string;
28
+ };
29
+ };
30
+ calendarUrl: string;
31
+ };
32
+ modes: {
33
+ mock: {
34
+ label: string;
35
+ };
36
+ };
37
+ }[];
38
+ };
39
+ export default _default;
40
+ //# sourceMappingURL=playground.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../../src/svelte/playground.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,wBAwBE"}
@@ -0,0 +1,43 @@
1
+ import { EVENTS_MODULE_META } from '../ui.js';
2
+ const sampleMeeting = {
3
+ id: 'meeting-council-2026-03-18',
4
+ slug: 'council-march-18-2026',
5
+ name: 'March 18, 2026 Council Meeting',
6
+ startDate: '2026-03-18T19:00:00.000Z',
7
+ status: 'published',
8
+ agendaUrl: 'https://example.com/meetings/council-mar-18/agenda.pdf',
9
+ minutesUrl: 'https://example.com/meetings/council-mar-18/minutes.pdf',
10
+ videoUrl: 'https://example.com/meetings/council-mar-18/video',
11
+ highlightsUrl: 'https://example.com/meetings/council-mar-18/highlights',
12
+ council: {
13
+ id: 'council-town',
14
+ slug: 'town-council',
15
+ name: 'Town Council',
16
+ timezone: 'America/Edmonton',
17
+ },
18
+ };
19
+ const loadMeetingView = () => import('./components/MeetingView.svelte');
20
+ export default {
21
+ packageName: '@happyvertical/smrt-events',
22
+ displayName: EVENTS_MODULE_META.displayName,
23
+ description: EVENTS_MODULE_META.description,
24
+ moduleMeta: EVENTS_MODULE_META,
25
+ entries: [
26
+ {
27
+ id: 'meeting-view',
28
+ title: 'Meeting View',
29
+ description: 'Full meeting detail page with agenda, minutes, video, and highlights links.',
30
+ loadComponent: loadMeetingView,
31
+ order: 1,
32
+ props: {
33
+ meeting: sampleMeeting,
34
+ calendarUrl: '/events/calendar',
35
+ },
36
+ modes: {
37
+ mock: {
38
+ label: 'Mock',
39
+ },
40
+ },
41
+ },
42
+ ],
43
+ };
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Events Module Svelte Types
3
+ *
4
+ * TypeScript interfaces for events module UI components.
5
+ */
6
+ /**
7
+ * Council/organization that holds meetings
8
+ */
9
+ export interface Council {
10
+ id: string;
11
+ slug: string;
12
+ name: string;
13
+ timezone?: string;
14
+ }
15
+ /**
16
+ * Meeting details for MeetingView
17
+ */
18
+ export interface Meeting {
19
+ id: string;
20
+ slug: string;
21
+ name: string;
22
+ startDate: string;
23
+ status?: string;
24
+ agendaUrl?: string;
25
+ minutesUrl?: string;
26
+ videoUrl?: string;
27
+ highlightsUrl?: string;
28
+ council?: Council;
29
+ }
30
+ /**
31
+ * Props for MeetingView component
32
+ */
33
+ export interface MeetingViewProps {
34
+ meeting: Meeting;
35
+ calendarUrl?: string;
36
+ }
37
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/svelte/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Events Module Svelte Types
3
+ *
4
+ * TypeScript interfaces for events module UI components.
5
+ */
6
+ export {};
@@ -0,0 +1,127 @@
1
+ import { SmrtObjectOptions } from '@happyvertical/smrt-core';
2
+ /**
3
+ * Event status lifecycle
4
+ */
5
+ export type EventStatus = 'scheduled' | 'in_progress' | 'completed' | 'cancelled' | 'postponed';
6
+ /**
7
+ * Common participant roles
8
+ */
9
+ export type ParticipantRole = 'home' | 'away' | 'competitor' | 'headliner' | 'opener' | 'performer' | 'speaker' | 'panelist' | 'moderator' | 'presenter' | 'organizer' | 'attendee' | 'volunteer' | 'host';
10
+ /**
11
+ * Recurrence frequency
12
+ */
13
+ export type RecurrenceFrequency = 'daily' | 'weekly' | 'monthly' | 'yearly';
14
+ /**
15
+ * Recurrence pattern for repeating events
16
+ */
17
+ export interface RecurrencePattern {
18
+ frequency: RecurrenceFrequency;
19
+ interval?: number;
20
+ count?: number;
21
+ until?: Date;
22
+ byDay?: string[];
23
+ byMonthDay?: number[];
24
+ byMonth?: number[];
25
+ bySetPos?: number[];
26
+ }
27
+ /**
28
+ * Options for creating EventType
29
+ */
30
+ export interface EventTypeOptions extends SmrtObjectOptions {
31
+ id?: string;
32
+ slug?: string;
33
+ name?: string;
34
+ description?: string;
35
+ schema?: Record<string, any> | string;
36
+ participantSchema?: Record<string, any> | string;
37
+ createdAt?: Date;
38
+ updatedAt?: Date;
39
+ }
40
+ /**
41
+ * Options for creating EventSeries
42
+ */
43
+ export interface EventSeriesOptions extends SmrtObjectOptions {
44
+ id?: string;
45
+ typeId?: string;
46
+ organizerId?: string;
47
+ name?: string;
48
+ slug?: string;
49
+ description?: string;
50
+ startDate?: Date | null;
51
+ endDate?: Date | null;
52
+ recurrence?: RecurrencePattern | string;
53
+ metadata?: Record<string, any> | string;
54
+ externalId?: string;
55
+ source?: string;
56
+ createdAt?: Date;
57
+ updatedAt?: Date;
58
+ }
59
+ /**
60
+ * Options for creating Event
61
+ */
62
+ export interface EventOptions extends SmrtObjectOptions {
63
+ id?: string;
64
+ seriesId?: string;
65
+ parentId?: string | null;
66
+ typeId?: string;
67
+ placeId?: string;
68
+ name?: string;
69
+ slug?: string;
70
+ description?: string;
71
+ startDate?: Date | null;
72
+ endDate?: Date | null;
73
+ status?: EventStatus;
74
+ round?: number | null;
75
+ metadata?: Record<string, any> | string;
76
+ externalId?: string;
77
+ source?: string;
78
+ createdAt?: Date;
79
+ updatedAt?: Date;
80
+ }
81
+ /**
82
+ * Options for creating EventParticipant
83
+ */
84
+ export interface EventParticipantOptions extends SmrtObjectOptions {
85
+ id?: string;
86
+ eventId?: string;
87
+ profileId?: string;
88
+ role?: ParticipantRole | string;
89
+ placement?: number | null;
90
+ groupId?: string;
91
+ metadata?: Record<string, any> | string;
92
+ externalId?: string;
93
+ source?: string;
94
+ createdAt?: Date;
95
+ updatedAt?: Date;
96
+ }
97
+ /**
98
+ * Search filters for events
99
+ */
100
+ export interface EventSearchFilters {
101
+ typeId?: string;
102
+ seriesId?: string;
103
+ placeId?: string;
104
+ status?: EventStatus | EventStatus[];
105
+ startDate?: Date;
106
+ endDate?: Date;
107
+ organizerId?: string;
108
+ }
109
+ /**
110
+ * Search filters for event series
111
+ */
112
+ export interface EventSeriesSearchFilters {
113
+ typeId?: string;
114
+ organizerId?: string;
115
+ startDate?: Date;
116
+ endDate?: Date;
117
+ }
118
+ /**
119
+ * Search filters for participants
120
+ */
121
+ export interface ParticipantSearchFilters {
122
+ eventId?: string;
123
+ profileId?: string;
124
+ role?: ParticipantRole | string;
125
+ groupId?: string;
126
+ }
127
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}