@remit/web-client 0.0.229 → 0.0.231
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/package.json +1 -1
- package/src/components/calendar/CalendarComposePane.stories.tsx +25 -0
- package/src/components/calendar/CalendarComposePane.tsx +34 -0
- package/src/components/calendar/CalendarEventPane.stories.tsx +81 -0
- package/src/components/calendar/CalendarEventPane.tsx +67 -0
- package/src/components/calendar/CalendarShell.tsx +83 -0
- package/src/components/calendar/CalendarViewPlaceholder.tsx +37 -0
- package/src/components/calendar/CalendarWorkspace.stories.tsx +197 -0
- package/src/components/calendar/CalendarWorkspace.tsx +162 -0
- package/src/components/calendar/OpenCalendarEvent.tsx +39 -0
- package/src/components/calendar/calendar-workspace.render.test.ts +193 -0
- package/src/components/config-import/ConfigImportWizard.flow.test.ts +338 -0
- package/src/components/config-import/ConfigImportWizard.tsx +720 -0
- package/src/components/config-import/config-import.fixtures.ts +229 -0
- package/src/components/config-import/config-import.stories.tsx +449 -0
- package/src/components/config-import/steps.tsx +772 -0
- package/src/components/mail/MailSidebarAdapter.tsx +17 -0
- package/src/components/onboarding/OnboardingWizard.tsx +64 -390
- package/src/components/onboarding/credential-steps.tsx +441 -0
- package/src/components/settings/ConfigExportCard.tsx +114 -0
- package/src/components/settings/ConfigTransferPanel.tsx +72 -0
- package/src/hooks/useCalendarData.ts +72 -0
- package/src/lib/calendar-density.ts +34 -0
- package/src/lib/calendar-fixtures.ts +207 -0
- package/src/lib/calendar-format.ts +29 -0
- package/src/lib/calendar-route.test.ts +210 -0
- package/src/lib/calendar-route.ts +183 -0
- package/src/lib/config-import.test.ts +306 -0
- package/src/lib/config-import.ts +492 -0
- package/src/lib/json.ts +11 -0
- package/src/lib/search-params.test.ts +77 -0
- package/src/lib/search-params.ts +59 -0
- package/src/routeTree.gen.ts +220 -0
- package/src/router.tsx +5 -0
- package/src/routes/calendar/$view.$date/$calendarObjectId/$recurrenceId.tsx +26 -0
- package/src/routes/calendar/$view.$date/$calendarObjectId/index.tsx +18 -0
- package/src/routes/calendar/$view.$date/$calendarObjectId.tsx +15 -0
- package/src/routes/calendar/$view.$date/index.tsx +25 -0
- package/src/routes/calendar/$view.$date/new.tsx +20 -0
- package/src/routes/calendar/$view.$date.tsx +100 -0
- package/src/routes/calendar/-calendar-tree.test.ts +267 -0
- package/src/routes/calendar/index.tsx +27 -0
- package/src/routes/calendar.tsx +98 -0
- package/src/routes/import.tsx +51 -0
- package/src/routes/onboarding.tsx +9 -2
- package/src/routes/settings/accounts.tsx +30 -8
- package/src/routes/settings/advanced.tsx +5 -1
- package/src/routing/calendar-fragment.test.ts +66 -0
- package/src/routing/calendar.ts +139 -0
- package/src/routing/fragment.ts +19 -0
- package/src/routing/index.ts +10 -0
- package/src/routing/nav-selection.ts +2 -0
- package/src/routing/sections.ts +3 -1
package/src/routeTree.gen.ts
CHANGED
|
@@ -10,9 +10,12 @@
|
|
|
10
10
|
|
|
11
11
|
import { Route as rootRouteImport } from './routes/__root'
|
|
12
12
|
import { Route as IndexRouteImport } from './routes/index'
|
|
13
|
+
import { Route as CalendarRouteImport } from './routes/calendar'
|
|
14
|
+
import { Route as ImportRouteImport } from './routes/import'
|
|
13
15
|
import { Route as MailRouteImport } from './routes/mail'
|
|
14
16
|
import { Route as OnboardingRouteImport } from './routes/onboarding'
|
|
15
17
|
import { Route as SettingsRouteImport } from './routes/settings'
|
|
18
|
+
import { Route as CalendarIndexRouteImport } from './routes/calendar/index'
|
|
16
19
|
import { Route as MailIndexRouteImport } from './routes/mail/index'
|
|
17
20
|
import { Route as MailMailboxIdRouteImport } from './routes/mail/$mailboxId'
|
|
18
21
|
import { Route as MailBriefRouteImport } from './routes/mail/brief'
|
|
@@ -27,6 +30,7 @@ import { Route as SettingsFoldersRouteImport } from './routes/settings/folders'
|
|
|
27
30
|
import { Route as SettingsLabelsRouteImport } from './routes/settings/labels'
|
|
28
31
|
import { Route as SettingsSendersRouteImport } from './routes/settings/senders'
|
|
29
32
|
import { Route as SettingsSuggestedVipsRouteImport } from './routes/settings/suggested-vips'
|
|
33
|
+
import { Route as CalendarViewDateRouteImport } from './routes/calendar/$view.$date'
|
|
30
34
|
import { Route as MailMailboxIdIndexRouteImport } from './routes/mail/$mailboxId/index'
|
|
31
35
|
import { Route as MailMailboxIdThreadIdRouteImport } from './routes/mail/$mailboxId/$threadId'
|
|
32
36
|
import { Route as MailBriefIndexRouteImport } from './routes/mail/brief/index'
|
|
@@ -34,6 +38,9 @@ import { Route as MailBriefThreadIdRouteImport } from './routes/mail/brief/$thre
|
|
|
34
38
|
import { Route as MailFlaggedIndexRouteImport } from './routes/mail/flagged/index'
|
|
35
39
|
import { Route as MailFlaggedThreadIdRouteImport } from './routes/mail/flagged/$threadId'
|
|
36
40
|
import { Route as MailOutboxIndexRouteImport } from './routes/mail/outbox/index'
|
|
41
|
+
import { Route as CalendarViewDateIndexRouteImport } from './routes/calendar/$view.$date/index'
|
|
42
|
+
import { Route as CalendarViewDateCalendarObjectIdRouteImport } from './routes/calendar/$view.$date/$calendarObjectId'
|
|
43
|
+
import { Route as CalendarViewDateNewRouteImport } from './routes/calendar/$view.$date/new'
|
|
37
44
|
import { Route as MailMailboxIdThreadIdIndexRouteImport } from './routes/mail/$mailboxId/$threadId/index'
|
|
38
45
|
import { Route as MailMailboxIdThreadIdMessageIdRouteImport } from './routes/mail/$mailboxId/$threadId/$messageId'
|
|
39
46
|
import { Route as MailMailboxIdComposeChar123OutboxMessageIdChar125RouteImport } from './routes/mail/$mailboxId/compose.{-$outboxMessageId}'
|
|
@@ -45,6 +52,8 @@ import { Route as MailFlaggedThreadIdMessageIdRouteImport } from './routes/mail/
|
|
|
45
52
|
import { Route as MailFlaggedComposeChar123OutboxMessageIdChar125RouteImport } from './routes/mail/flagged/compose.{-$outboxMessageId}'
|
|
46
53
|
import { Route as MailOutboxComposeChar123OutboxMessageIdChar125RouteImport } from './routes/mail/outbox/compose.{-$outboxMessageId}'
|
|
47
54
|
import { Route as MailOutboxDraftOutboxMessageIdRouteImport } from './routes/mail/outbox/draft/$outboxMessageId'
|
|
55
|
+
import { Route as CalendarViewDateCalendarObjectIdIndexRouteImport } from './routes/calendar/$view.$date/$calendarObjectId/index'
|
|
56
|
+
import { Route as CalendarViewDateCalendarObjectIdRecurrenceIdRouteImport } from './routes/calendar/$view.$date/$calendarObjectId/$recurrenceId'
|
|
48
57
|
import { Route as MailMailboxIdThreadIdMessageIdModeChar123OutboxMessageIdChar125RouteImport } from './routes/mail/$mailboxId/$threadId/$messageId/$mode.{-$outboxMessageId}'
|
|
49
58
|
import { Route as MailBriefThreadIdMessageIdModeChar123OutboxMessageIdChar125RouteImport } from './routes/mail/brief/$threadId/$messageId/$mode.{-$outboxMessageId}'
|
|
50
59
|
import { Route as MailFlaggedThreadIdMessageIdModeChar123OutboxMessageIdChar125RouteImport } from './routes/mail/flagged/$threadId/$messageId/$mode.{-$outboxMessageId}'
|
|
@@ -54,6 +63,16 @@ const IndexRoute = IndexRouteImport.update({
|
|
|
54
63
|
path: '/',
|
|
55
64
|
getParentRoute: () => rootRouteImport,
|
|
56
65
|
} as any)
|
|
66
|
+
const CalendarRoute = CalendarRouteImport.update({
|
|
67
|
+
id: '/calendar',
|
|
68
|
+
path: '/calendar',
|
|
69
|
+
getParentRoute: () => rootRouteImport,
|
|
70
|
+
} as any)
|
|
71
|
+
const ImportRoute = ImportRouteImport.update({
|
|
72
|
+
id: '/import',
|
|
73
|
+
path: '/import',
|
|
74
|
+
getParentRoute: () => rootRouteImport,
|
|
75
|
+
} as any)
|
|
57
76
|
const MailRoute = MailRouteImport.update({
|
|
58
77
|
id: '/mail',
|
|
59
78
|
path: '/mail',
|
|
@@ -69,6 +88,11 @@ const SettingsRoute = SettingsRouteImport.update({
|
|
|
69
88
|
path: '/settings',
|
|
70
89
|
getParentRoute: () => rootRouteImport,
|
|
71
90
|
} as any)
|
|
91
|
+
const CalendarIndexRoute = CalendarIndexRouteImport.update({
|
|
92
|
+
id: '/',
|
|
93
|
+
path: '/',
|
|
94
|
+
getParentRoute: () => CalendarRoute,
|
|
95
|
+
} as any)
|
|
72
96
|
const MailIndexRoute = MailIndexRouteImport.update({
|
|
73
97
|
id: '/',
|
|
74
98
|
path: '/',
|
|
@@ -139,6 +163,11 @@ const SettingsSuggestedVipsRoute = SettingsSuggestedVipsRouteImport.update({
|
|
|
139
163
|
path: '/suggested-vips',
|
|
140
164
|
getParentRoute: () => SettingsRoute,
|
|
141
165
|
} as any)
|
|
166
|
+
const CalendarViewDateRoute = CalendarViewDateRouteImport.update({
|
|
167
|
+
id: '/$view/$date',
|
|
168
|
+
path: '/$view/$date',
|
|
169
|
+
getParentRoute: () => CalendarRoute,
|
|
170
|
+
} as any)
|
|
142
171
|
const MailMailboxIdIndexRoute = MailMailboxIdIndexRouteImport.update({
|
|
143
172
|
id: '/',
|
|
144
173
|
path: '/',
|
|
@@ -174,6 +203,22 @@ const MailOutboxIndexRoute = MailOutboxIndexRouteImport.update({
|
|
|
174
203
|
path: '/',
|
|
175
204
|
getParentRoute: () => MailOutboxRoute,
|
|
176
205
|
} as any)
|
|
206
|
+
const CalendarViewDateIndexRoute = CalendarViewDateIndexRouteImport.update({
|
|
207
|
+
id: '/',
|
|
208
|
+
path: '/',
|
|
209
|
+
getParentRoute: () => CalendarViewDateRoute,
|
|
210
|
+
} as any)
|
|
211
|
+
const CalendarViewDateCalendarObjectIdRoute =
|
|
212
|
+
CalendarViewDateCalendarObjectIdRouteImport.update({
|
|
213
|
+
id: '/$calendarObjectId',
|
|
214
|
+
path: '/$calendarObjectId',
|
|
215
|
+
getParentRoute: () => CalendarViewDateRoute,
|
|
216
|
+
} as any)
|
|
217
|
+
const CalendarViewDateNewRoute = CalendarViewDateNewRouteImport.update({
|
|
218
|
+
id: '/new',
|
|
219
|
+
path: '/new',
|
|
220
|
+
getParentRoute: () => CalendarViewDateRoute,
|
|
221
|
+
} as any)
|
|
177
222
|
const MailMailboxIdThreadIdIndexRoute =
|
|
178
223
|
MailMailboxIdThreadIdIndexRouteImport.update({
|
|
179
224
|
id: '/',
|
|
@@ -239,6 +284,18 @@ const MailOutboxDraftOutboxMessageIdRoute =
|
|
|
239
284
|
path: '/draft/$outboxMessageId',
|
|
240
285
|
getParentRoute: () => MailOutboxRoute,
|
|
241
286
|
} as any)
|
|
287
|
+
const CalendarViewDateCalendarObjectIdIndexRoute =
|
|
288
|
+
CalendarViewDateCalendarObjectIdIndexRouteImport.update({
|
|
289
|
+
id: '/',
|
|
290
|
+
path: '/',
|
|
291
|
+
getParentRoute: () => CalendarViewDateCalendarObjectIdRoute,
|
|
292
|
+
} as any)
|
|
293
|
+
const CalendarViewDateCalendarObjectIdRecurrenceIdRoute =
|
|
294
|
+
CalendarViewDateCalendarObjectIdRecurrenceIdRouteImport.update({
|
|
295
|
+
id: '/$recurrenceId',
|
|
296
|
+
path: '/$recurrenceId',
|
|
297
|
+
getParentRoute: () => CalendarViewDateCalendarObjectIdRoute,
|
|
298
|
+
} as any)
|
|
242
299
|
const MailMailboxIdThreadIdMessageIdModeChar123OutboxMessageIdChar125Route =
|
|
243
300
|
MailMailboxIdThreadIdMessageIdModeChar123OutboxMessageIdChar125RouteImport.update(
|
|
244
301
|
{
|
|
@@ -266,6 +323,8 @@ const MailFlaggedThreadIdMessageIdModeChar123OutboxMessageIdChar125Route =
|
|
|
266
323
|
|
|
267
324
|
export interface FileRoutesByFullPath {
|
|
268
325
|
'/': typeof IndexRoute
|
|
326
|
+
'/calendar': typeof CalendarRouteWithChildren
|
|
327
|
+
'/import': typeof ImportRoute
|
|
269
328
|
'/mail': typeof MailRouteWithChildren
|
|
270
329
|
'/onboarding': typeof OnboardingRoute
|
|
271
330
|
'/settings': typeof SettingsRouteWithChildren
|
|
@@ -281,8 +340,10 @@ export interface FileRoutesByFullPath {
|
|
|
281
340
|
'/settings/labels': typeof SettingsLabelsRoute
|
|
282
341
|
'/settings/senders': typeof SettingsSendersRoute
|
|
283
342
|
'/settings/suggested-vips': typeof SettingsSuggestedVipsRoute
|
|
343
|
+
'/calendar/': typeof CalendarIndexRoute
|
|
284
344
|
'/mail/': typeof MailIndexRoute
|
|
285
345
|
'/settings/': typeof SettingsIndexRoute
|
|
346
|
+
'/calendar/$view/$date': typeof CalendarViewDateRouteWithChildren
|
|
286
347
|
'/mail/$mailboxId/$threadId': typeof MailMailboxIdThreadIdRouteWithChildren
|
|
287
348
|
'/mail/brief/$threadId': typeof MailBriefThreadIdRouteWithChildren
|
|
288
349
|
'/mail/flagged/$threadId': typeof MailFlaggedThreadIdRouteWithChildren
|
|
@@ -290,6 +351,8 @@ export interface FileRoutesByFullPath {
|
|
|
290
351
|
'/mail/brief/': typeof MailBriefIndexRoute
|
|
291
352
|
'/mail/flagged/': typeof MailFlaggedIndexRoute
|
|
292
353
|
'/mail/outbox/': typeof MailOutboxIndexRoute
|
|
354
|
+
'/calendar/$view/$date/$calendarObjectId': typeof CalendarViewDateCalendarObjectIdRouteWithChildren
|
|
355
|
+
'/calendar/$view/$date/new': typeof CalendarViewDateNewRoute
|
|
293
356
|
'/mail/$mailboxId/$threadId/$messageId': typeof MailMailboxIdThreadIdMessageIdRouteWithChildren
|
|
294
357
|
'/mail/$mailboxId/compose/{-$outboxMessageId}': typeof MailMailboxIdComposeChar123OutboxMessageIdChar125Route
|
|
295
358
|
'/mail/brief/$threadId/$messageId': typeof MailBriefThreadIdMessageIdRouteWithChildren
|
|
@@ -298,15 +361,19 @@ export interface FileRoutesByFullPath {
|
|
|
298
361
|
'/mail/flagged/compose/{-$outboxMessageId}': typeof MailFlaggedComposeChar123OutboxMessageIdChar125Route
|
|
299
362
|
'/mail/outbox/compose/{-$outboxMessageId}': typeof MailOutboxComposeChar123OutboxMessageIdChar125Route
|
|
300
363
|
'/mail/outbox/draft/$outboxMessageId': typeof MailOutboxDraftOutboxMessageIdRoute
|
|
364
|
+
'/calendar/$view/$date/': typeof CalendarViewDateIndexRoute
|
|
301
365
|
'/mail/$mailboxId/$threadId/': typeof MailMailboxIdThreadIdIndexRoute
|
|
302
366
|
'/mail/brief/$threadId/': typeof MailBriefThreadIdIndexRoute
|
|
303
367
|
'/mail/flagged/$threadId/': typeof MailFlaggedThreadIdIndexRoute
|
|
368
|
+
'/calendar/$view/$date/$calendarObjectId/$recurrenceId': typeof CalendarViewDateCalendarObjectIdRecurrenceIdRoute
|
|
369
|
+
'/calendar/$view/$date/$calendarObjectId/': typeof CalendarViewDateCalendarObjectIdIndexRoute
|
|
304
370
|
'/mail/$mailboxId/$threadId/$messageId/$mode/{-$outboxMessageId}': typeof MailMailboxIdThreadIdMessageIdModeChar123OutboxMessageIdChar125Route
|
|
305
371
|
'/mail/brief/$threadId/$messageId/$mode/{-$outboxMessageId}': typeof MailBriefThreadIdMessageIdModeChar123OutboxMessageIdChar125Route
|
|
306
372
|
'/mail/flagged/$threadId/$messageId/$mode/{-$outboxMessageId}': typeof MailFlaggedThreadIdMessageIdModeChar123OutboxMessageIdChar125Route
|
|
307
373
|
}
|
|
308
374
|
export interface FileRoutesByTo {
|
|
309
375
|
'/': typeof IndexRoute
|
|
376
|
+
'/import': typeof ImportRoute
|
|
310
377
|
'/onboarding': typeof OnboardingRoute
|
|
311
378
|
'/settings/accounts': typeof SettingsAccountsRoute
|
|
312
379
|
'/settings/advanced': typeof SettingsAdvancedRoute
|
|
@@ -316,12 +383,14 @@ export interface FileRoutesByTo {
|
|
|
316
383
|
'/settings/labels': typeof SettingsLabelsRoute
|
|
317
384
|
'/settings/senders': typeof SettingsSendersRoute
|
|
318
385
|
'/settings/suggested-vips': typeof SettingsSuggestedVipsRoute
|
|
386
|
+
'/calendar': typeof CalendarIndexRoute
|
|
319
387
|
'/mail': typeof MailIndexRoute
|
|
320
388
|
'/settings': typeof SettingsIndexRoute
|
|
321
389
|
'/mail/$mailboxId': typeof MailMailboxIdIndexRoute
|
|
322
390
|
'/mail/brief': typeof MailBriefIndexRoute
|
|
323
391
|
'/mail/flagged': typeof MailFlaggedIndexRoute
|
|
324
392
|
'/mail/outbox': typeof MailOutboxIndexRoute
|
|
393
|
+
'/calendar/$view/$date/new': typeof CalendarViewDateNewRoute
|
|
325
394
|
'/mail/$mailboxId/$threadId/$messageId': typeof MailMailboxIdThreadIdMessageIdRouteWithChildren
|
|
326
395
|
'/mail/$mailboxId/compose/{-$outboxMessageId}': typeof MailMailboxIdComposeChar123OutboxMessageIdChar125Route
|
|
327
396
|
'/mail/brief/$threadId/$messageId': typeof MailBriefThreadIdMessageIdRouteWithChildren
|
|
@@ -330,9 +399,12 @@ export interface FileRoutesByTo {
|
|
|
330
399
|
'/mail/flagged/compose/{-$outboxMessageId}': typeof MailFlaggedComposeChar123OutboxMessageIdChar125Route
|
|
331
400
|
'/mail/outbox/compose/{-$outboxMessageId}': typeof MailOutboxComposeChar123OutboxMessageIdChar125Route
|
|
332
401
|
'/mail/outbox/draft/$outboxMessageId': typeof MailOutboxDraftOutboxMessageIdRoute
|
|
402
|
+
'/calendar/$view/$date': typeof CalendarViewDateIndexRoute
|
|
333
403
|
'/mail/$mailboxId/$threadId': typeof MailMailboxIdThreadIdIndexRoute
|
|
334
404
|
'/mail/brief/$threadId': typeof MailBriefThreadIdIndexRoute
|
|
335
405
|
'/mail/flagged/$threadId': typeof MailFlaggedThreadIdIndexRoute
|
|
406
|
+
'/calendar/$view/$date/$calendarObjectId/$recurrenceId': typeof CalendarViewDateCalendarObjectIdRecurrenceIdRoute
|
|
407
|
+
'/calendar/$view/$date/$calendarObjectId': typeof CalendarViewDateCalendarObjectIdIndexRoute
|
|
336
408
|
'/mail/$mailboxId/$threadId/$messageId/$mode/{-$outboxMessageId}': typeof MailMailboxIdThreadIdMessageIdModeChar123OutboxMessageIdChar125Route
|
|
337
409
|
'/mail/brief/$threadId/$messageId/$mode/{-$outboxMessageId}': typeof MailBriefThreadIdMessageIdModeChar123OutboxMessageIdChar125Route
|
|
338
410
|
'/mail/flagged/$threadId/$messageId/$mode/{-$outboxMessageId}': typeof MailFlaggedThreadIdMessageIdModeChar123OutboxMessageIdChar125Route
|
|
@@ -340,6 +412,8 @@ export interface FileRoutesByTo {
|
|
|
340
412
|
export interface FileRoutesById {
|
|
341
413
|
__root__: typeof rootRouteImport
|
|
342
414
|
'/': typeof IndexRoute
|
|
415
|
+
'/calendar': typeof CalendarRouteWithChildren
|
|
416
|
+
'/import': typeof ImportRoute
|
|
343
417
|
'/mail': typeof MailRouteWithChildren
|
|
344
418
|
'/onboarding': typeof OnboardingRoute
|
|
345
419
|
'/settings': typeof SettingsRouteWithChildren
|
|
@@ -355,8 +429,10 @@ export interface FileRoutesById {
|
|
|
355
429
|
'/settings/labels': typeof SettingsLabelsRoute
|
|
356
430
|
'/settings/senders': typeof SettingsSendersRoute
|
|
357
431
|
'/settings/suggested-vips': typeof SettingsSuggestedVipsRoute
|
|
432
|
+
'/calendar/': typeof CalendarIndexRoute
|
|
358
433
|
'/mail/': typeof MailIndexRoute
|
|
359
434
|
'/settings/': typeof SettingsIndexRoute
|
|
435
|
+
'/calendar/$view/$date': typeof CalendarViewDateRouteWithChildren
|
|
360
436
|
'/mail/$mailboxId/$threadId': typeof MailMailboxIdThreadIdRouteWithChildren
|
|
361
437
|
'/mail/brief/$threadId': typeof MailBriefThreadIdRouteWithChildren
|
|
362
438
|
'/mail/flagged/$threadId': typeof MailFlaggedThreadIdRouteWithChildren
|
|
@@ -364,6 +440,8 @@ export interface FileRoutesById {
|
|
|
364
440
|
'/mail/brief/': typeof MailBriefIndexRoute
|
|
365
441
|
'/mail/flagged/': typeof MailFlaggedIndexRoute
|
|
366
442
|
'/mail/outbox/': typeof MailOutboxIndexRoute
|
|
443
|
+
'/calendar/$view/$date/$calendarObjectId': typeof CalendarViewDateCalendarObjectIdRouteWithChildren
|
|
444
|
+
'/calendar/$view/$date/new': typeof CalendarViewDateNewRoute
|
|
367
445
|
'/mail/$mailboxId/$threadId/$messageId': typeof MailMailboxIdThreadIdMessageIdRouteWithChildren
|
|
368
446
|
'/mail/$mailboxId/compose/{-$outboxMessageId}': typeof MailMailboxIdComposeChar123OutboxMessageIdChar125Route
|
|
369
447
|
'/mail/brief/$threadId/$messageId': typeof MailBriefThreadIdMessageIdRouteWithChildren
|
|
@@ -372,9 +450,12 @@ export interface FileRoutesById {
|
|
|
372
450
|
'/mail/flagged/compose/{-$outboxMessageId}': typeof MailFlaggedComposeChar123OutboxMessageIdChar125Route
|
|
373
451
|
'/mail/outbox/compose/{-$outboxMessageId}': typeof MailOutboxComposeChar123OutboxMessageIdChar125Route
|
|
374
452
|
'/mail/outbox/draft/$outboxMessageId': typeof MailOutboxDraftOutboxMessageIdRoute
|
|
453
|
+
'/calendar/$view/$date/': typeof CalendarViewDateIndexRoute
|
|
375
454
|
'/mail/$mailboxId/$threadId/': typeof MailMailboxIdThreadIdIndexRoute
|
|
376
455
|
'/mail/brief/$threadId/': typeof MailBriefThreadIdIndexRoute
|
|
377
456
|
'/mail/flagged/$threadId/': typeof MailFlaggedThreadIdIndexRoute
|
|
457
|
+
'/calendar/$view/$date/$calendarObjectId/$recurrenceId': typeof CalendarViewDateCalendarObjectIdRecurrenceIdRoute
|
|
458
|
+
'/calendar/$view/$date/$calendarObjectId/': typeof CalendarViewDateCalendarObjectIdIndexRoute
|
|
378
459
|
'/mail/$mailboxId/$threadId/$messageId/$mode/{-$outboxMessageId}': typeof MailMailboxIdThreadIdMessageIdModeChar123OutboxMessageIdChar125Route
|
|
379
460
|
'/mail/brief/$threadId/$messageId/$mode/{-$outboxMessageId}': typeof MailBriefThreadIdMessageIdModeChar123OutboxMessageIdChar125Route
|
|
380
461
|
'/mail/flagged/$threadId/$messageId/$mode/{-$outboxMessageId}': typeof MailFlaggedThreadIdMessageIdModeChar123OutboxMessageIdChar125Route
|
|
@@ -383,6 +464,8 @@ export interface FileRouteTypes {
|
|
|
383
464
|
fileRoutesByFullPath: FileRoutesByFullPath
|
|
384
465
|
fullPaths:
|
|
385
466
|
| '/'
|
|
467
|
+
| '/calendar'
|
|
468
|
+
| '/import'
|
|
386
469
|
| '/mail'
|
|
387
470
|
| '/onboarding'
|
|
388
471
|
| '/settings'
|
|
@@ -398,8 +481,10 @@ export interface FileRouteTypes {
|
|
|
398
481
|
| '/settings/labels'
|
|
399
482
|
| '/settings/senders'
|
|
400
483
|
| '/settings/suggested-vips'
|
|
484
|
+
| '/calendar/'
|
|
401
485
|
| '/mail/'
|
|
402
486
|
| '/settings/'
|
|
487
|
+
| '/calendar/$view/$date'
|
|
403
488
|
| '/mail/$mailboxId/$threadId'
|
|
404
489
|
| '/mail/brief/$threadId'
|
|
405
490
|
| '/mail/flagged/$threadId'
|
|
@@ -407,6 +492,8 @@ export interface FileRouteTypes {
|
|
|
407
492
|
| '/mail/brief/'
|
|
408
493
|
| '/mail/flagged/'
|
|
409
494
|
| '/mail/outbox/'
|
|
495
|
+
| '/calendar/$view/$date/$calendarObjectId'
|
|
496
|
+
| '/calendar/$view/$date/new'
|
|
410
497
|
| '/mail/$mailboxId/$threadId/$messageId'
|
|
411
498
|
| '/mail/$mailboxId/compose/{-$outboxMessageId}'
|
|
412
499
|
| '/mail/brief/$threadId/$messageId'
|
|
@@ -415,15 +502,19 @@ export interface FileRouteTypes {
|
|
|
415
502
|
| '/mail/flagged/compose/{-$outboxMessageId}'
|
|
416
503
|
| '/mail/outbox/compose/{-$outboxMessageId}'
|
|
417
504
|
| '/mail/outbox/draft/$outboxMessageId'
|
|
505
|
+
| '/calendar/$view/$date/'
|
|
418
506
|
| '/mail/$mailboxId/$threadId/'
|
|
419
507
|
| '/mail/brief/$threadId/'
|
|
420
508
|
| '/mail/flagged/$threadId/'
|
|
509
|
+
| '/calendar/$view/$date/$calendarObjectId/$recurrenceId'
|
|
510
|
+
| '/calendar/$view/$date/$calendarObjectId/'
|
|
421
511
|
| '/mail/$mailboxId/$threadId/$messageId/$mode/{-$outboxMessageId}'
|
|
422
512
|
| '/mail/brief/$threadId/$messageId/$mode/{-$outboxMessageId}'
|
|
423
513
|
| '/mail/flagged/$threadId/$messageId/$mode/{-$outboxMessageId}'
|
|
424
514
|
fileRoutesByTo: FileRoutesByTo
|
|
425
515
|
to:
|
|
426
516
|
| '/'
|
|
517
|
+
| '/import'
|
|
427
518
|
| '/onboarding'
|
|
428
519
|
| '/settings/accounts'
|
|
429
520
|
| '/settings/advanced'
|
|
@@ -433,12 +524,14 @@ export interface FileRouteTypes {
|
|
|
433
524
|
| '/settings/labels'
|
|
434
525
|
| '/settings/senders'
|
|
435
526
|
| '/settings/suggested-vips'
|
|
527
|
+
| '/calendar'
|
|
436
528
|
| '/mail'
|
|
437
529
|
| '/settings'
|
|
438
530
|
| '/mail/$mailboxId'
|
|
439
531
|
| '/mail/brief'
|
|
440
532
|
| '/mail/flagged'
|
|
441
533
|
| '/mail/outbox'
|
|
534
|
+
| '/calendar/$view/$date/new'
|
|
442
535
|
| '/mail/$mailboxId/$threadId/$messageId'
|
|
443
536
|
| '/mail/$mailboxId/compose/{-$outboxMessageId}'
|
|
444
537
|
| '/mail/brief/$threadId/$messageId'
|
|
@@ -447,15 +540,20 @@ export interface FileRouteTypes {
|
|
|
447
540
|
| '/mail/flagged/compose/{-$outboxMessageId}'
|
|
448
541
|
| '/mail/outbox/compose/{-$outboxMessageId}'
|
|
449
542
|
| '/mail/outbox/draft/$outboxMessageId'
|
|
543
|
+
| '/calendar/$view/$date'
|
|
450
544
|
| '/mail/$mailboxId/$threadId'
|
|
451
545
|
| '/mail/brief/$threadId'
|
|
452
546
|
| '/mail/flagged/$threadId'
|
|
547
|
+
| '/calendar/$view/$date/$calendarObjectId/$recurrenceId'
|
|
548
|
+
| '/calendar/$view/$date/$calendarObjectId'
|
|
453
549
|
| '/mail/$mailboxId/$threadId/$messageId/$mode/{-$outboxMessageId}'
|
|
454
550
|
| '/mail/brief/$threadId/$messageId/$mode/{-$outboxMessageId}'
|
|
455
551
|
| '/mail/flagged/$threadId/$messageId/$mode/{-$outboxMessageId}'
|
|
456
552
|
id:
|
|
457
553
|
| '__root__'
|
|
458
554
|
| '/'
|
|
555
|
+
| '/calendar'
|
|
556
|
+
| '/import'
|
|
459
557
|
| '/mail'
|
|
460
558
|
| '/onboarding'
|
|
461
559
|
| '/settings'
|
|
@@ -471,8 +569,10 @@ export interface FileRouteTypes {
|
|
|
471
569
|
| '/settings/labels'
|
|
472
570
|
| '/settings/senders'
|
|
473
571
|
| '/settings/suggested-vips'
|
|
572
|
+
| '/calendar/'
|
|
474
573
|
| '/mail/'
|
|
475
574
|
| '/settings/'
|
|
575
|
+
| '/calendar/$view/$date'
|
|
476
576
|
| '/mail/$mailboxId/$threadId'
|
|
477
577
|
| '/mail/brief/$threadId'
|
|
478
578
|
| '/mail/flagged/$threadId'
|
|
@@ -480,6 +580,8 @@ export interface FileRouteTypes {
|
|
|
480
580
|
| '/mail/brief/'
|
|
481
581
|
| '/mail/flagged/'
|
|
482
582
|
| '/mail/outbox/'
|
|
583
|
+
| '/calendar/$view/$date/$calendarObjectId'
|
|
584
|
+
| '/calendar/$view/$date/new'
|
|
483
585
|
| '/mail/$mailboxId/$threadId/$messageId'
|
|
484
586
|
| '/mail/$mailboxId/compose/{-$outboxMessageId}'
|
|
485
587
|
| '/mail/brief/$threadId/$messageId'
|
|
@@ -488,9 +590,12 @@ export interface FileRouteTypes {
|
|
|
488
590
|
| '/mail/flagged/compose/{-$outboxMessageId}'
|
|
489
591
|
| '/mail/outbox/compose/{-$outboxMessageId}'
|
|
490
592
|
| '/mail/outbox/draft/$outboxMessageId'
|
|
593
|
+
| '/calendar/$view/$date/'
|
|
491
594
|
| '/mail/$mailboxId/$threadId/'
|
|
492
595
|
| '/mail/brief/$threadId/'
|
|
493
596
|
| '/mail/flagged/$threadId/'
|
|
597
|
+
| '/calendar/$view/$date/$calendarObjectId/$recurrenceId'
|
|
598
|
+
| '/calendar/$view/$date/$calendarObjectId/'
|
|
494
599
|
| '/mail/$mailboxId/$threadId/$messageId/$mode/{-$outboxMessageId}'
|
|
495
600
|
| '/mail/brief/$threadId/$messageId/$mode/{-$outboxMessageId}'
|
|
496
601
|
| '/mail/flagged/$threadId/$messageId/$mode/{-$outboxMessageId}'
|
|
@@ -498,6 +603,8 @@ export interface FileRouteTypes {
|
|
|
498
603
|
}
|
|
499
604
|
export interface RootRouteChildren {
|
|
500
605
|
IndexRoute: typeof IndexRoute
|
|
606
|
+
CalendarRoute: typeof CalendarRouteWithChildren
|
|
607
|
+
ImportRoute: typeof ImportRoute
|
|
501
608
|
MailRoute: typeof MailRouteWithChildren
|
|
502
609
|
OnboardingRoute: typeof OnboardingRoute
|
|
503
610
|
SettingsRoute: typeof SettingsRouteWithChildren
|
|
@@ -512,6 +619,20 @@ declare module '@tanstack/react-router' {
|
|
|
512
619
|
preLoaderRoute: typeof IndexRouteImport
|
|
513
620
|
parentRoute: typeof rootRouteImport
|
|
514
621
|
}
|
|
622
|
+
'/calendar': {
|
|
623
|
+
id: '/calendar'
|
|
624
|
+
path: '/calendar'
|
|
625
|
+
fullPath: '/calendar'
|
|
626
|
+
preLoaderRoute: typeof CalendarRouteImport
|
|
627
|
+
parentRoute: typeof rootRouteImport
|
|
628
|
+
}
|
|
629
|
+
'/import': {
|
|
630
|
+
id: '/import'
|
|
631
|
+
path: '/import'
|
|
632
|
+
fullPath: '/import'
|
|
633
|
+
preLoaderRoute: typeof ImportRouteImport
|
|
634
|
+
parentRoute: typeof rootRouteImport
|
|
635
|
+
}
|
|
515
636
|
'/mail': {
|
|
516
637
|
id: '/mail'
|
|
517
638
|
path: '/mail'
|
|
@@ -533,6 +654,13 @@ declare module '@tanstack/react-router' {
|
|
|
533
654
|
preLoaderRoute: typeof SettingsRouteImport
|
|
534
655
|
parentRoute: typeof rootRouteImport
|
|
535
656
|
}
|
|
657
|
+
'/calendar/': {
|
|
658
|
+
id: '/calendar/'
|
|
659
|
+
path: '/'
|
|
660
|
+
fullPath: '/calendar/'
|
|
661
|
+
preLoaderRoute: typeof CalendarIndexRouteImport
|
|
662
|
+
parentRoute: typeof CalendarRoute
|
|
663
|
+
}
|
|
536
664
|
'/mail/': {
|
|
537
665
|
id: '/mail/'
|
|
538
666
|
path: '/'
|
|
@@ -631,6 +759,13 @@ declare module '@tanstack/react-router' {
|
|
|
631
759
|
preLoaderRoute: typeof SettingsSuggestedVipsRouteImport
|
|
632
760
|
parentRoute: typeof SettingsRoute
|
|
633
761
|
}
|
|
762
|
+
'/calendar/$view/$date': {
|
|
763
|
+
id: '/calendar/$view/$date'
|
|
764
|
+
path: '/$view/$date'
|
|
765
|
+
fullPath: '/calendar/$view/$date'
|
|
766
|
+
preLoaderRoute: typeof CalendarViewDateRouteImport
|
|
767
|
+
parentRoute: typeof CalendarRoute
|
|
768
|
+
}
|
|
634
769
|
'/mail/$mailboxId/': {
|
|
635
770
|
id: '/mail/$mailboxId/'
|
|
636
771
|
path: '/'
|
|
@@ -680,6 +815,27 @@ declare module '@tanstack/react-router' {
|
|
|
680
815
|
preLoaderRoute: typeof MailOutboxIndexRouteImport
|
|
681
816
|
parentRoute: typeof MailOutboxRoute
|
|
682
817
|
}
|
|
818
|
+
'/calendar/$view/$date/': {
|
|
819
|
+
id: '/calendar/$view/$date/'
|
|
820
|
+
path: '/'
|
|
821
|
+
fullPath: '/calendar/$view/$date/'
|
|
822
|
+
preLoaderRoute: typeof CalendarViewDateIndexRouteImport
|
|
823
|
+
parentRoute: typeof CalendarViewDateRoute
|
|
824
|
+
}
|
|
825
|
+
'/calendar/$view/$date/$calendarObjectId': {
|
|
826
|
+
id: '/calendar/$view/$date/$calendarObjectId'
|
|
827
|
+
path: '/$calendarObjectId'
|
|
828
|
+
fullPath: '/calendar/$view/$date/$calendarObjectId'
|
|
829
|
+
preLoaderRoute: typeof CalendarViewDateCalendarObjectIdRouteImport
|
|
830
|
+
parentRoute: typeof CalendarViewDateRoute
|
|
831
|
+
}
|
|
832
|
+
'/calendar/$view/$date/new': {
|
|
833
|
+
id: '/calendar/$view/$date/new'
|
|
834
|
+
path: '/new'
|
|
835
|
+
fullPath: '/calendar/$view/$date/new'
|
|
836
|
+
preLoaderRoute: typeof CalendarViewDateNewRouteImport
|
|
837
|
+
parentRoute: typeof CalendarViewDateRoute
|
|
838
|
+
}
|
|
683
839
|
'/mail/$mailboxId/$threadId/': {
|
|
684
840
|
id: '/mail/$mailboxId/$threadId/'
|
|
685
841
|
path: '/'
|
|
@@ -757,6 +913,20 @@ declare module '@tanstack/react-router' {
|
|
|
757
913
|
preLoaderRoute: typeof MailOutboxDraftOutboxMessageIdRouteImport
|
|
758
914
|
parentRoute: typeof MailOutboxRoute
|
|
759
915
|
}
|
|
916
|
+
'/calendar/$view/$date/$calendarObjectId/': {
|
|
917
|
+
id: '/calendar/$view/$date/$calendarObjectId/'
|
|
918
|
+
path: '/'
|
|
919
|
+
fullPath: '/calendar/$view/$date/$calendarObjectId/'
|
|
920
|
+
preLoaderRoute: typeof CalendarViewDateCalendarObjectIdIndexRouteImport
|
|
921
|
+
parentRoute: typeof CalendarViewDateCalendarObjectIdRoute
|
|
922
|
+
}
|
|
923
|
+
'/calendar/$view/$date/$calendarObjectId/$recurrenceId': {
|
|
924
|
+
id: '/calendar/$view/$date/$calendarObjectId/$recurrenceId'
|
|
925
|
+
path: '/$recurrenceId'
|
|
926
|
+
fullPath: '/calendar/$view/$date/$calendarObjectId/$recurrenceId'
|
|
927
|
+
preLoaderRoute: typeof CalendarViewDateCalendarObjectIdRecurrenceIdRouteImport
|
|
928
|
+
parentRoute: typeof CalendarViewDateCalendarObjectIdRoute
|
|
929
|
+
}
|
|
760
930
|
'/mail/$mailboxId/$threadId/$messageId/$mode/{-$outboxMessageId}': {
|
|
761
931
|
id: '/mail/$mailboxId/$threadId/$messageId/$mode/{-$outboxMessageId}'
|
|
762
932
|
path: '/$mode/{-$outboxMessageId}'
|
|
@@ -781,6 +951,54 @@ declare module '@tanstack/react-router' {
|
|
|
781
951
|
}
|
|
782
952
|
}
|
|
783
953
|
|
|
954
|
+
interface CalendarViewDateCalendarObjectIdRouteChildren {
|
|
955
|
+
CalendarViewDateCalendarObjectIdRecurrenceIdRoute: typeof CalendarViewDateCalendarObjectIdRecurrenceIdRoute
|
|
956
|
+
CalendarViewDateCalendarObjectIdIndexRoute: typeof CalendarViewDateCalendarObjectIdIndexRoute
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
const CalendarViewDateCalendarObjectIdRouteChildren: CalendarViewDateCalendarObjectIdRouteChildren =
|
|
960
|
+
{
|
|
961
|
+
CalendarViewDateCalendarObjectIdRecurrenceIdRoute:
|
|
962
|
+
CalendarViewDateCalendarObjectIdRecurrenceIdRoute,
|
|
963
|
+
CalendarViewDateCalendarObjectIdIndexRoute:
|
|
964
|
+
CalendarViewDateCalendarObjectIdIndexRoute,
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
const CalendarViewDateCalendarObjectIdRouteWithChildren =
|
|
968
|
+
CalendarViewDateCalendarObjectIdRoute._addFileChildren(
|
|
969
|
+
CalendarViewDateCalendarObjectIdRouteChildren,
|
|
970
|
+
)
|
|
971
|
+
|
|
972
|
+
interface CalendarViewDateRouteChildren {
|
|
973
|
+
CalendarViewDateCalendarObjectIdRoute: typeof CalendarViewDateCalendarObjectIdRouteWithChildren
|
|
974
|
+
CalendarViewDateNewRoute: typeof CalendarViewDateNewRoute
|
|
975
|
+
CalendarViewDateIndexRoute: typeof CalendarViewDateIndexRoute
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
const CalendarViewDateRouteChildren: CalendarViewDateRouteChildren = {
|
|
979
|
+
CalendarViewDateCalendarObjectIdRoute:
|
|
980
|
+
CalendarViewDateCalendarObjectIdRouteWithChildren,
|
|
981
|
+
CalendarViewDateNewRoute: CalendarViewDateNewRoute,
|
|
982
|
+
CalendarViewDateIndexRoute: CalendarViewDateIndexRoute,
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
const CalendarViewDateRouteWithChildren =
|
|
986
|
+
CalendarViewDateRoute._addFileChildren(CalendarViewDateRouteChildren)
|
|
987
|
+
|
|
988
|
+
interface CalendarRouteChildren {
|
|
989
|
+
CalendarIndexRoute: typeof CalendarIndexRoute
|
|
990
|
+
CalendarViewDateRoute: typeof CalendarViewDateRouteWithChildren
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
const CalendarRouteChildren: CalendarRouteChildren = {
|
|
994
|
+
CalendarIndexRoute: CalendarIndexRoute,
|
|
995
|
+
CalendarViewDateRoute: CalendarViewDateRouteWithChildren,
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
const CalendarRouteWithChildren = CalendarRoute._addFileChildren(
|
|
999
|
+
CalendarRouteChildren,
|
|
1000
|
+
)
|
|
1001
|
+
|
|
784
1002
|
interface MailMailboxIdThreadIdMessageIdRouteChildren {
|
|
785
1003
|
MailMailboxIdThreadIdMessageIdModeChar123OutboxMessageIdChar125Route: typeof MailMailboxIdThreadIdMessageIdModeChar123OutboxMessageIdChar125Route
|
|
786
1004
|
}
|
|
@@ -985,6 +1203,8 @@ const SettingsRouteWithChildren = SettingsRoute._addFileChildren(
|
|
|
985
1203
|
|
|
986
1204
|
const rootRouteChildren: RootRouteChildren = {
|
|
987
1205
|
IndexRoute: IndexRoute,
|
|
1206
|
+
CalendarRoute: CalendarRouteWithChildren,
|
|
1207
|
+
ImportRoute: ImportRoute,
|
|
988
1208
|
MailRoute: MailRouteWithChildren,
|
|
989
1209
|
OnboardingRoute: OnboardingRoute,
|
|
990
1210
|
SettingsRoute: SettingsRouteWithChildren,
|
package/src/router.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import type { QueryClient } from "@tanstack/react-query";
|
|
|
2
2
|
import { createRouter } from "@tanstack/react-router";
|
|
3
3
|
import { AppShellSkeleton } from "./components/layout/AppShellSkeleton";
|
|
4
4
|
import { recordRoute } from "./lib/route-breadcrumbs";
|
|
5
|
+
import { stringifySearch } from "./lib/search-params";
|
|
5
6
|
import type { Telemetry } from "./lib/telemetry";
|
|
6
7
|
import { routeTree } from "./routeTree.gen";
|
|
7
8
|
|
|
@@ -16,6 +17,10 @@ export const createAppRouter = (
|
|
|
16
17
|
const router = createRouter({
|
|
17
18
|
routeTree,
|
|
18
19
|
context: { queryClient },
|
|
20
|
+
// A query param that carries a list writes one param per value
|
|
21
|
+
// (`lib/search-params.ts`), which is what the router's own reader already
|
|
22
|
+
// expects and what a hand-written link says.
|
|
23
|
+
stringifySearch,
|
|
19
24
|
defaultPreload: "intent",
|
|
20
25
|
// A route arrives with its own code, and each mail list carries a whole pane
|
|
21
26
|
// in it. Without a pending state the router keeps the previous route on
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// biome-ignore lint/style/useFilenamingConvention: TanStack Router convention
|
|
2
|
+
/**
|
|
3
|
+
* One occurrence of a repeating event, under the series it belongs to.
|
|
4
|
+
*
|
|
5
|
+
* A segment rather than a param on the event, because an edit asks which
|
|
6
|
+
* instances it applies to and the answer starts from the one on screen: the
|
|
7
|
+
* series stays matched behind the occurrence, so the address names both.
|
|
8
|
+
*/
|
|
9
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
10
|
+
import { OpenCalendarEvent } from "@/components/calendar/OpenCalendarEvent";
|
|
11
|
+
|
|
12
|
+
function CalendarOccurrenceRoute() {
|
|
13
|
+
const { calendarObjectId, recurrenceId } = Route.useParams();
|
|
14
|
+
return (
|
|
15
|
+
<OpenCalendarEvent
|
|
16
|
+
calendarObjectId={calendarObjectId}
|
|
17
|
+
recurrenceId={recurrenceId}
|
|
18
|
+
/>
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const Route = createFileRoute(
|
|
23
|
+
"/calendar/$view/$date/$calendarObjectId/$recurrenceId",
|
|
24
|
+
)({
|
|
25
|
+
component: CalendarOccurrenceRoute,
|
|
26
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// biome-ignore lint/style/useFilenamingConvention: TanStack Router convention
|
|
2
|
+
/**
|
|
3
|
+
* The event itself — the series, where it repeats. An occurrence of it is the
|
|
4
|
+
* `$recurrenceId` segment beside this one.
|
|
5
|
+
*/
|
|
6
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
7
|
+
import { OpenCalendarEvent } from "@/components/calendar/OpenCalendarEvent";
|
|
8
|
+
|
|
9
|
+
function CalendarEventRoute() {
|
|
10
|
+
const { calendarObjectId } = Route.useParams();
|
|
11
|
+
return <OpenCalendarEvent calendarObjectId={calendarObjectId} />;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const Route = createFileRoute(
|
|
15
|
+
"/calendar/$view/$date/$calendarObjectId/",
|
|
16
|
+
)({
|
|
17
|
+
component: CalendarEventRoute,
|
|
18
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// biome-ignore lint/style/useFilenamingConvention: TanStack Router convention
|
|
2
|
+
/**
|
|
3
|
+
* /calendar/{view}/{date}/{calendarObjectId} — an event open in the reading
|
|
4
|
+
* pane, mirroring `$threadId` under a mail list.
|
|
5
|
+
*
|
|
6
|
+
* A layout, because one instance of a series nests under it: the series is what
|
|
7
|
+
* the address names, and the occurrence is the segment below.
|
|
8
|
+
*/
|
|
9
|
+
import { createFileRoute, Outlet } from "@tanstack/react-router";
|
|
10
|
+
|
|
11
|
+
export const Route = createFileRoute("/calendar/$view/$date/$calendarObjectId")(
|
|
12
|
+
{
|
|
13
|
+
component: Outlet,
|
|
14
|
+
},
|
|
15
|
+
);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// biome-ignore lint/style/useFilenamingConvention: TanStack Router convention
|
|
2
|
+
/**
|
|
3
|
+
* The calendar's reading pane with nothing open. It is a route because the pane
|
|
4
|
+
* belongs to the view it was opened from, and the event and the composer arrive
|
|
5
|
+
* as segments beside it.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
9
|
+
import { CalendarDays } from "lucide-react";
|
|
10
|
+
import { EmptyState } from "@/components/ui/EmptyState";
|
|
11
|
+
|
|
12
|
+
function CalendarReadingPane() {
|
|
13
|
+
return (
|
|
14
|
+
<div className="flex h-full items-center justify-center bg-surface">
|
|
15
|
+
<EmptyState
|
|
16
|
+
message="Pick an event to read it here."
|
|
17
|
+
icon={<CalendarDays className="size-8" />}
|
|
18
|
+
/>
|
|
19
|
+
</div>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const Route = createFileRoute("/calendar/$view/$date/")({
|
|
24
|
+
component: CalendarReadingPane,
|
|
25
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* /calendar/{view}/{date}/new — writing an event.
|
|
3
|
+
*
|
|
4
|
+
* A sibling of the event route, so navigating here unmatches whatever the
|
|
5
|
+
* calendar had open in the same transition: nothing has to be closed first, and
|
|
6
|
+
* a composer over an open event is unrepresentable. The address is exactly the
|
|
7
|
+
* move `compose` makes over a mail list.
|
|
8
|
+
*/
|
|
9
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
10
|
+
import { CalendarComposePane } from "@/components/calendar/CalendarComposePane";
|
|
11
|
+
import { useCalendarNavigation } from "@/routing";
|
|
12
|
+
|
|
13
|
+
function CalendarComposeRoute() {
|
|
14
|
+
const { closeEvent } = useCalendarNavigation();
|
|
15
|
+
return <CalendarComposePane onClose={closeEvent} />;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const Route = createFileRoute("/calendar/$view/$date/new")({
|
|
19
|
+
component: CalendarComposeRoute,
|
|
20
|
+
});
|