@ankhorage/templates 9.4.1 → 9.6.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 (40) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -1
  3. package/dist/templates/catalog.generated.d.ts.map +1 -1
  4. package/dist/templates/catalog.generated.js +7 -0
  5. package/dist/templates/catalog.generated.js.map +1 -1
  6. package/dist/templates/categories/education-learning/sharkprey/createAppManifest.d.ts +1 -1
  7. package/dist/templates/categories/education-learning/sharkprey/createAppManifest.d.ts.map +1 -1
  8. package/dist/templates/categories/education-learning/sharkprey/createAppManifest.js +4422 -1062
  9. package/dist/templates/categories/education-learning/sharkprey/createAppManifest.js.map +1 -1
  10. package/dist/templates/categories/social-community/chat/createAppManifest.d.ts +4 -0
  11. package/dist/templates/categories/social-community/chat/createAppManifest.d.ts.map +1 -0
  12. package/dist/templates/categories/social-community/chat/createAppManifest.js +686 -0
  13. package/dist/templates/categories/social-community/chat/createAppManifest.js.map +1 -0
  14. package/package.json +3 -2
  15. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/appearance.svg +1 -0
  16. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/cards.svg +1 -0
  17. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/chip.svg +1 -0
  18. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/correct.svg +1 -0
  19. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/fundamentals.svg +1 -0
  20. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/globe.svg +1 -0
  21. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/graduation.svg +1 -0
  22. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/haptics.svg +1 -0
  23. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/incorrect.svg +1 -0
  24. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/players-four.svg +1 -0
  25. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/players-two.svg +1 -0
  26. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/position.svg +1 -0
  27. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/reset.svg +1 -0
  28. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/star.svg +1 -0
  29. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/target.svg +1 -0
  30. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/timer.svg +1 -0
  31. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/trend.svg +1 -0
  32. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/trophy.svg +1 -0
  33. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/warning.svg +1 -0
  34. package/src/templates/categories/social-community/chat/assets/images/lake.png +0 -0
  35. package/src/templates/categories/social-community/chat/assets/images/svg/chats.svg +1 -0
  36. package/src/templates/categories/social-community/chat/assets/images/svg/friends.svg +1 -0
  37. package/src/templates/categories/social-community/chat/assets/screens/chats.png +0 -0
  38. package/src/templates/categories/social-community/chat/assets/screens/direct.png +0 -0
  39. package/src/templates/categories/social-community/chat/assets/screens/friends.png +0 -0
  40. package/src/templates/categories/social-community/chat/assets/screens/prompts.json +7 -0
@@ -0,0 +1,686 @@
1
+ import { validateNavigatorManifest } from '@ankhorage/navigator';
2
+ /*** Return the portable Close social and direct-chat design with owner-validated mobile navigation. */
3
+ export default function createAppManifest() {
4
+ const diagnostics = validateNavigatorManifest(manifest.navigator, {
5
+ platform: 'ios',
6
+ expoRouterVersion: '57.0.18',
7
+ });
8
+ if (diagnostics.some((diagnostic) => diagnostic.severity === 'error')) {
9
+ throw new Error(diagnostics.map((diagnostic) => diagnostic.message).join(' '));
10
+ }
11
+ return structuredClone(manifest);
12
+ }
13
+ const manifest = {
14
+ metadata: {
15
+ name: 'Close',
16
+ slug: 'chat',
17
+ version: '1.0.0',
18
+ category: 'social_community',
19
+ themeId: 'close',
20
+ },
21
+ themes: [
22
+ {
23
+ id: 'close',
24
+ name: 'Close',
25
+ light: {
26
+ primaryColor: '#4F46E5',
27
+ harmony: 'analogous',
28
+ },
29
+ dark: {
30
+ primaryColor: '#4F46E5',
31
+ harmony: 'analogous',
32
+ },
33
+ tokens: {
34
+ spacing: {
35
+ none: 0,
36
+ xs: 4,
37
+ s: 8,
38
+ m: 16,
39
+ l: 24,
40
+ xl: 32,
41
+ xxl: 48,
42
+ },
43
+ radii: {
44
+ none: 0,
45
+ s: 8,
46
+ m: 12,
47
+ l: 24,
48
+ full: 9999,
49
+ },
50
+ },
51
+ },
52
+ ],
53
+ activeThemeId: 'close',
54
+ splashScreen: {
55
+ backgroundColor: '#4F46E5',
56
+ image: './assets/splash/icon.png',
57
+ imageWidth: 160,
58
+ resizeMode: 'contain',
59
+ dark: {
60
+ backgroundColor: '#4F46E5',
61
+ image: './assets/splash/icon-dark.png',
62
+ imageWidth: 160,
63
+ resizeMode: 'contain',
64
+ },
65
+ },
66
+ infra: {
67
+ database: {
68
+ provider: 'supabase',
69
+ tier: 'dev',
70
+ },
71
+ storage: {
72
+ provider: 'auto',
73
+ buckets: ['media'],
74
+ },
75
+ secretStore: {
76
+ provider: 'supabase-vault',
77
+ },
78
+ deployment: {
79
+ target: 'minikube',
80
+ monitoring: false,
81
+ },
82
+ auth: {
83
+ provider: 'supabase',
84
+ scope: 'global',
85
+ flow: {
86
+ signInRoute: 'sign-in',
87
+ signUpRoute: 'sign-up',
88
+ signOutRoute: 'sign-out',
89
+ forgotPasswordRoute: 'forgot-password',
90
+ postSignInRoute: '/',
91
+ unauthorizedRoute: 'sign-in',
92
+ },
93
+ signIn: {
94
+ identifiers: ['email'],
95
+ },
96
+ signUp: {
97
+ requiredFields: ['email', 'password'],
98
+ optionalFields: ['firstName', 'lastName'],
99
+ signUpPolicy: 'autoSignIn',
100
+ },
101
+ profile: {
102
+ fields: ['email', 'firstName', 'lastName'],
103
+ },
104
+ },
105
+ networking: {
106
+ cdn: false,
107
+ },
108
+ modules: [],
109
+ },
110
+ settings: {
111
+ localization: {
112
+ defaultLocale: 'en',
113
+ locales: ['en'],
114
+ },
115
+ },
116
+ navigator: {
117
+ type: 'stack',
118
+ implementation: 'native',
119
+ options: {
120
+ headerShown: false,
121
+ },
122
+ initialRouteName: '(tabs)',
123
+ routes: [
124
+ {
125
+ name: '(tabs)',
126
+ navigator: {
127
+ type: 'tabs',
128
+ implementation: 'headless',
129
+ presentation: 'bottom',
130
+ initialRouteName: 'friends',
131
+ routes: [
132
+ {
133
+ name: 'friends',
134
+ label: 'Friends',
135
+ screenId: 'friends',
136
+ icon: {
137
+ source: {
138
+ mediaId: 'friends',
139
+ },
140
+ },
141
+ path: '/',
142
+ },
143
+ {
144
+ name: 'chats',
145
+ path: '/chats',
146
+ label: 'Chats',
147
+ screenId: 'chats',
148
+ icon: {
149
+ source: {
150
+ mediaId: 'chats',
151
+ },
152
+ },
153
+ },
154
+ ],
155
+ },
156
+ },
157
+ {
158
+ name: 'chat-maya',
159
+ screenId: 'direct',
160
+ stackOptions: {
161
+ headerShown: false,
162
+ },
163
+ },
164
+ ],
165
+ },
166
+ screens: {
167
+ friends: {
168
+ id: 'friends',
169
+ name: 'Friends',
170
+ title: 'Friends',
171
+ description: 'Friends-only wall. Sample posts; publishing and likes are visibly unbound pending owned operations.',
172
+ root: {
173
+ id: 'friends-root',
174
+ type: 'Screen',
175
+ props: {
176
+ scroll: true,
177
+ },
178
+ children: [
179
+ {
180
+ id: 'wall-eyebrow',
181
+ type: 'Text',
182
+ props: {
183
+ text: 'YOUR PEOPLE, A LITTLE CLOSER',
184
+ variant: 'eyebrow',
185
+ },
186
+ },
187
+ {
188
+ id: 'wall-title',
189
+ type: 'Heading',
190
+ props: {
191
+ text: 'Friends',
192
+ level: 1,
193
+ size: 'h1',
194
+ },
195
+ },
196
+ {
197
+ id: 'wall-subtitle',
198
+ type: 'Text',
199
+ props: {
200
+ text: 'Little moments. Good company.',
201
+ variant: 'body',
202
+ },
203
+ },
204
+ {
205
+ id: 'post-composer',
206
+ type: 'Box',
207
+ children: [
208
+ {
209
+ id: 'post-draft',
210
+ type: 'Input',
211
+ props: {
212
+ placeholder: 'What\u2019s on your mind?',
213
+ value: '',
214
+ },
215
+ },
216
+ {
217
+ id: 'publish-post',
218
+ type: 'Button',
219
+ props: {
220
+ children: 'Share a moment',
221
+ variant: 'soft',
222
+ size: 'm',
223
+ },
224
+ style: {
225
+ minHeight: 44,
226
+ },
227
+ },
228
+ ],
229
+ style: {
230
+ gap: 8,
231
+ padding: 16,
232
+ borderRadius: 24,
233
+ },
234
+ },
235
+ {
236
+ id: 'maya-post',
237
+ type: 'PostCard',
238
+ props: {
239
+ author: {
240
+ name: 'Maya Chen',
241
+ subtitle: '1 hour ago \u00b7 Friends',
242
+ },
243
+ text: 'Found our spot for Saturday. Who\u2019s in?',
244
+ tone: 'subtle',
245
+ },
246
+ children: [
247
+ {
248
+ id: 'lake-post',
249
+ type: 'Image',
250
+ props: {
251
+ source: {
252
+ mediaId: 'lake',
253
+ },
254
+ alt: 'Turquoise alpine lake with a wooden picnic jetty',
255
+ },
256
+ style: {
257
+ width: '100%',
258
+ height: 196,
259
+ borderRadius: 12,
260
+ },
261
+ },
262
+ {
263
+ id: 'post-likes',
264
+ type: 'Text',
265
+ props: {
266
+ text: '12 friends liked this',
267
+ variant: 'bodySmall',
268
+ },
269
+ },
270
+ {
271
+ id: 'post-actions',
272
+ type: 'Stack',
273
+ children: [
274
+ {
275
+ id: 'like-post',
276
+ type: 'Button',
277
+ props: {
278
+ children: 'Like \u00b7 12',
279
+ variant: 'soft',
280
+ size: 'm',
281
+ },
282
+ style: {
283
+ minHeight: 44,
284
+ },
285
+ },
286
+ {
287
+ id: 'message-maya',
288
+ type: 'Button',
289
+ props: {
290
+ children: 'Message Maya',
291
+ variant: 'soft',
292
+ size: 'm',
293
+ },
294
+ style: {
295
+ minHeight: 44,
296
+ },
297
+ },
298
+ ],
299
+ style: {
300
+ flexDirection: 'row',
301
+ gap: 8,
302
+ },
303
+ },
304
+ ],
305
+ },
306
+ {
307
+ id: 'leo-post',
308
+ type: 'PostCard',
309
+ props: {
310
+ author: {
311
+ name: 'Leo Martin',
312
+ subtitle: '2 hours ago \u00b7 Friends',
313
+ },
314
+ text: 'Slow mornings, strong coffee. That\u2019s the plan.',
315
+ tone: 'subtle',
316
+ },
317
+ },
318
+ ],
319
+ style: {
320
+ padding: 20,
321
+ gap: 16,
322
+ },
323
+ },
324
+ },
325
+ chats: {
326
+ id: 'chats',
327
+ name: 'Chats',
328
+ title: 'Chats',
329
+ description: 'Direct-message overview. Maya opens through a supported Button; row press and search await metadata support.',
330
+ root: {
331
+ id: 'chats-root',
332
+ type: 'Screen',
333
+ props: {
334
+ scroll: true,
335
+ },
336
+ children: [
337
+ {
338
+ id: 'chats-eyebrow',
339
+ type: 'Text',
340
+ props: {
341
+ text: 'KEEP THE CONVERSATION GOING',
342
+ variant: 'eyebrow',
343
+ },
344
+ },
345
+ {
346
+ id: 'chats-title',
347
+ type: 'Heading',
348
+ props: {
349
+ text: 'Chats',
350
+ level: 1,
351
+ size: 'h1',
352
+ },
353
+ },
354
+ {
355
+ id: 'chats-subtitle',
356
+ type: 'Text',
357
+ props: {
358
+ text: 'Good friends are one message away.',
359
+ variant: 'body',
360
+ },
361
+ },
362
+ {
363
+ id: 'chat-search',
364
+ type: 'Input',
365
+ props: {
366
+ placeholder: 'Search conversations',
367
+ value: '',
368
+ },
369
+ },
370
+ {
371
+ id: 'maya-row',
372
+ type: 'ChatListItem',
373
+ props: {
374
+ title: 'Maya Chen',
375
+ preview: 'Perfect! See you at 9?',
376
+ timestamp: '9:41',
377
+ unread: true,
378
+ unreadCount: '2',
379
+ },
380
+ },
381
+ {
382
+ id: 'open-maya',
383
+ type: 'Button',
384
+ props: {
385
+ children: 'Open conversation with Maya',
386
+ variant: 'soft',
387
+ size: 'm',
388
+ },
389
+ style: {
390
+ minHeight: 44,
391
+ },
392
+ },
393
+ {
394
+ id: 'leo-row',
395
+ type: 'ChatListItem',
396
+ props: {
397
+ title: 'Leo Martin',
398
+ preview: 'You: Coffee on Sunday?',
399
+ timestamp: '8:32',
400
+ },
401
+ },
402
+ {
403
+ id: 'nina-row',
404
+ type: 'ChatListItem',
405
+ props: {
406
+ title: 'Nina Patel',
407
+ preview: 'That photo is so good!',
408
+ timestamp: 'Yesterday',
409
+ },
410
+ },
411
+ {
412
+ id: 'sam-row',
413
+ type: 'ChatListItem',
414
+ props: {
415
+ title: 'Sam Rivera',
416
+ preview: 'Thanks for a lovely evening.',
417
+ timestamp: 'Yesterday',
418
+ },
419
+ },
420
+ {
421
+ id: 'ella-row',
422
+ type: 'ChatListItem',
423
+ props: {
424
+ title: 'Ella Brooks',
425
+ preview: 'See you next week',
426
+ timestamp: 'Monday',
427
+ },
428
+ },
429
+ ],
430
+ style: {
431
+ padding: 20,
432
+ gap: 16,
433
+ },
434
+ },
435
+ },
436
+ direct: {
437
+ id: 'direct',
438
+ name: 'Maya',
439
+ title: 'Maya',
440
+ description: 'One-to-one conversation with Maya. Reuses the wall photo. Composer and send remain unbound; keyboard avoidance and pinned composer require owner support.',
441
+ root: {
442
+ id: 'direct-root',
443
+ type: 'Screen',
444
+ props: {
445
+ scroll: true,
446
+ },
447
+ children: [
448
+ {
449
+ id: 'back-chats',
450
+ type: 'Button',
451
+ props: {
452
+ children: 'Back to chats',
453
+ variant: 'soft',
454
+ size: 'm',
455
+ },
456
+ style: {
457
+ minHeight: 44,
458
+ },
459
+ },
460
+ {
461
+ id: 'direct-title',
462
+ type: 'Heading',
463
+ props: {
464
+ text: 'Maya',
465
+ level: 1,
466
+ size: 'h1',
467
+ },
468
+ },
469
+ {
470
+ id: 'direct-subtitle',
471
+ type: 'Text',
472
+ props: {
473
+ text: 'Maya Chen \u00b7 Your friend',
474
+ variant: 'bodySmall',
475
+ },
476
+ },
477
+ {
478
+ id: 'day-divider',
479
+ type: 'Text',
480
+ props: {
481
+ text: 'TODAY',
482
+ variant: 'label',
483
+ },
484
+ },
485
+ {
486
+ id: 'message-1',
487
+ type: 'MessageBubble',
488
+ props: {
489
+ direction: 'incoming',
490
+ text: 'Saturday by the lake? I found the perfect spot.',
491
+ timestamp: '9:32',
492
+ },
493
+ },
494
+ {
495
+ id: 'message-2',
496
+ type: 'MessageBubble',
497
+ props: {
498
+ direction: 'outgoing',
499
+ text: 'Yes! Send me a little preview.',
500
+ timestamp: '9:33',
501
+ status: 'read',
502
+ },
503
+ },
504
+ {
505
+ id: 'message-3',
506
+ type: 'MessageBubble',
507
+ props: {
508
+ direction: 'incoming',
509
+ text: 'Morning coffee here?',
510
+ timestamp: '9:34',
511
+ },
512
+ children: [
513
+ {
514
+ id: 'lake-message',
515
+ type: 'Image',
516
+ props: {
517
+ source: {
518
+ mediaId: 'lake',
519
+ },
520
+ alt: 'The same lakeside picnic spot Maya shared with friends',
521
+ },
522
+ style: {
523
+ width: 240,
524
+ height: 128,
525
+ borderRadius: 12,
526
+ },
527
+ },
528
+ ],
529
+ },
530
+ {
531
+ id: 'message-4',
532
+ type: 'MessageBubble',
533
+ props: {
534
+ direction: 'outgoing',
535
+ text: 'I\u2019m in. I\u2019ll bring the pastries.',
536
+ timestamp: '9:40',
537
+ status: 'read',
538
+ },
539
+ },
540
+ {
541
+ id: 'message-5',
542
+ type: 'MessageBubble',
543
+ props: {
544
+ direction: 'incoming',
545
+ text: 'Perfect! See you at 9?',
546
+ timestamp: '9:41',
547
+ },
548
+ },
549
+ {
550
+ id: 'message-composer',
551
+ type: 'Box',
552
+ children: [
553
+ {
554
+ id: 'message-draft',
555
+ type: 'Input',
556
+ props: {
557
+ placeholder: 'Message Maya\u2026',
558
+ value: '',
559
+ },
560
+ },
561
+ {
562
+ id: 'send-message',
563
+ type: 'Button',
564
+ props: {
565
+ children: 'Send',
566
+ variant: 'soft',
567
+ size: 'm',
568
+ },
569
+ style: {
570
+ minHeight: 44,
571
+ },
572
+ },
573
+ ],
574
+ style: {
575
+ padding: 12,
576
+ gap: 8,
577
+ borderRadius: 24,
578
+ },
579
+ },
580
+ ],
581
+ style: {
582
+ padding: 20,
583
+ gap: 16,
584
+ },
585
+ },
586
+ },
587
+ },
588
+ dataBindings: {
589
+ 'message-maya': {
590
+ componentId: 'message-maya',
591
+ componentType: 'Button',
592
+ events: {
593
+ press: [
594
+ {
595
+ target: {
596
+ kind: 'action',
597
+ type: 'navigate',
598
+ },
599
+ input: {
600
+ route: {
601
+ kind: 'literal',
602
+ value: '/chat-maya',
603
+ },
604
+ },
605
+ },
606
+ ],
607
+ },
608
+ },
609
+ 'open-maya': {
610
+ componentId: 'open-maya',
611
+ componentType: 'Button',
612
+ events: {
613
+ press: [
614
+ {
615
+ target: {
616
+ kind: 'action',
617
+ type: 'navigate',
618
+ },
619
+ input: {
620
+ route: {
621
+ kind: 'literal',
622
+ value: '/chat-maya',
623
+ },
624
+ },
625
+ },
626
+ ],
627
+ },
628
+ },
629
+ 'back-chats': {
630
+ componentId: 'back-chats',
631
+ componentType: 'Button',
632
+ events: {
633
+ press: [
634
+ {
635
+ target: {
636
+ kind: 'action',
637
+ type: 'navigate',
638
+ },
639
+ input: {
640
+ route: {
641
+ kind: 'literal',
642
+ value: '/chats',
643
+ },
644
+ },
645
+ },
646
+ ],
647
+ },
648
+ },
649
+ },
650
+ activeThemeMode: 'light',
651
+ media: {
652
+ assets: {
653
+ lake: {
654
+ id: 'lake',
655
+ name: 'Maya\u2019s lakeside picnic spot',
656
+ kind: 'image',
657
+ contentType: 'image/png',
658
+ source: {
659
+ kind: 'bundled',
660
+ path: 'assets/images/lake.png',
661
+ },
662
+ },
663
+ friends: {
664
+ id: 'friends',
665
+ name: 'Friends navigation',
666
+ kind: 'image',
667
+ contentType: 'image/svg+xml',
668
+ source: {
669
+ kind: 'bundled',
670
+ path: 'assets/images/svg/friends.svg',
671
+ },
672
+ },
673
+ chats: {
674
+ id: 'chats',
675
+ name: 'Chats navigation',
676
+ kind: 'image',
677
+ contentType: 'image/svg+xml',
678
+ source: {
679
+ kind: 'bundled',
680
+ path: 'assets/images/svg/chats.svg',
681
+ },
682
+ },
683
+ },
684
+ },
685
+ };
686
+ //# sourceMappingURL=createAppManifest.js.map