@ankhorage/templates 9.4.1 → 9.5.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 (36) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/dist/templates/catalog.generated.js +8 -8
  4. package/dist/templates/catalog.generated.js.map +1 -1
  5. package/dist/templates/categories/social-community/chat/createAppManifest.d.ts +4 -0
  6. package/dist/templates/categories/social-community/chat/createAppManifest.d.ts.map +1 -0
  7. package/dist/templates/categories/social-community/chat/createAppManifest.js +686 -0
  8. package/dist/templates/categories/social-community/chat/createAppManifest.js.map +1 -0
  9. package/package.json +2 -1
  10. package/src/templates/categories/social-community/chat/assets/images/lake.png +0 -0
  11. package/src/templates/categories/social-community/chat/assets/images/svg/chats.svg +1 -0
  12. package/src/templates/categories/social-community/chat/assets/images/svg/friends.svg +1 -0
  13. package/src/templates/categories/social-community/chat/assets/screens/chats.png +0 -0
  14. package/src/templates/categories/social-community/chat/assets/screens/direct.png +0 -0
  15. package/src/templates/categories/social-community/chat/assets/screens/friends.png +0 -0
  16. package/src/templates/categories/social-community/chat/assets/screens/prompts.json +7 -0
  17. package/dist/templates/categories/education-learning/sharkprey/createAppManifest.d.ts +0 -4
  18. package/dist/templates/categories/education-learning/sharkprey/createAppManifest.d.ts.map +0 -1
  19. package/dist/templates/categories/education-learning/sharkprey/createAppManifest.js +0 -1559
  20. package/dist/templates/categories/education-learning/sharkprey/createAppManifest.js.map +0 -1
  21. package/src/templates/categories/education-learning/sharkprey/assets/images/sharkprey-logo.png +0 -0
  22. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/history.svg +0 -5
  23. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/learn.svg +0 -5
  24. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/settings.svg +0 -5
  25. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/stats.svg +0 -6
  26. package/src/templates/categories/education-learning/sharkprey/assets/images/svg/train.svg +0 -8
  27. package/src/templates/categories/education-learning/sharkprey/assets/screens/01-splash.png +0 -0
  28. package/src/templates/categories/education-learning/sharkprey/assets/screens/02-onboarding.png +0 -0
  29. package/src/templates/categories/education-learning/sharkprey/assets/screens/03-training-setup.png +0 -0
  30. package/src/templates/categories/education-learning/sharkprey/assets/screens/04-decision-table.png +0 -0
  31. package/src/templates/categories/education-learning/sharkprey/assets/screens/05-answer-explanation.png +0 -0
  32. package/src/templates/categories/education-learning/sharkprey/assets/screens/06-session-summary.png +0 -0
  33. package/src/templates/categories/education-learning/sharkprey/assets/screens/07-hand-history.png +0 -0
  34. package/src/templates/categories/education-learning/sharkprey/assets/screens/08-stats.png +0 -0
  35. package/src/templates/categories/education-learning/sharkprey/assets/screens/09-learn.png +0 -0
  36. package/src/templates/categories/education-learning/sharkprey/assets/screens/10-settings.png +0 -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