@oxyfoo/whymeet-types 0.0.20 → 0.0.21
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/dist/Models/Intention.d.ts +0 -16
- package/dist/Models/Intention.js +0 -214
- package/dist/Models/Match.d.ts +10 -4
- package/dist/Models/Profile.d.ts +2 -2
- package/dist/Models/Search.d.ts +5 -2
- package/dist/Models/SocialContext.d.ts +97 -0
- package/dist/Models/SocialContext.js +1186 -0
- package/dist/Models/index.d.ts +4 -2
- package/dist/Models/index.js +2 -1
- package/dist/WS/Request.d.ts +31 -14
- package/package.json +1 -1
|
@@ -0,0 +1,1186 @@
|
|
|
1
|
+
export const SOCIAL_MOMENT_KEYS = [
|
|
2
|
+
'do_something_together',
|
|
3
|
+
'go_out_or_move',
|
|
4
|
+
'talk_and_share',
|
|
5
|
+
'build_connection',
|
|
6
|
+
'see_if_it_clicks',
|
|
7
|
+
'grow_or_build'
|
|
8
|
+
];
|
|
9
|
+
export const SOCIAL_CONTEXT_KEYS = [
|
|
10
|
+
'go_out_coffee',
|
|
11
|
+
'go_out_drink',
|
|
12
|
+
'go_out_meal',
|
|
13
|
+
'go_out_walk',
|
|
14
|
+
'go_out_tonight',
|
|
15
|
+
'go_out_discover',
|
|
16
|
+
'activity_sports',
|
|
17
|
+
'activity_play',
|
|
18
|
+
'activity_play_video_games',
|
|
19
|
+
'activity_play_board_games',
|
|
20
|
+
'activity_culture',
|
|
21
|
+
'activity_creative',
|
|
22
|
+
'activity_food',
|
|
23
|
+
'activity_outdoor',
|
|
24
|
+
'talk_light',
|
|
25
|
+
'talk_deep',
|
|
26
|
+
'talk_topic',
|
|
27
|
+
'talk_media',
|
|
28
|
+
'talk_language_exchange',
|
|
29
|
+
'talk_online',
|
|
30
|
+
'meet_make_acquaintance',
|
|
31
|
+
'meet_feeling',
|
|
32
|
+
'meet_simple_first_date',
|
|
33
|
+
'meet_relaxed_date',
|
|
34
|
+
'meet_spontaneous',
|
|
35
|
+
'meet_online_first',
|
|
36
|
+
'regular_sports_partner',
|
|
37
|
+
'regular_game_partner',
|
|
38
|
+
'regular_talk_buddy',
|
|
39
|
+
'regular_social_habit',
|
|
40
|
+
'regular_small_group',
|
|
41
|
+
'regular_go_out_often',
|
|
42
|
+
'build_coworking',
|
|
43
|
+
'build_project',
|
|
44
|
+
'build_entrepreneurship',
|
|
45
|
+
'build_create_together',
|
|
46
|
+
'build_learn_together',
|
|
47
|
+
'build_mentoring',
|
|
48
|
+
'build_collaboration'
|
|
49
|
+
];
|
|
50
|
+
export const SOCIAL_MOMENTS = [
|
|
51
|
+
{
|
|
52
|
+
key: 'go_out_or_move',
|
|
53
|
+
emoji: '🌆',
|
|
54
|
+
order: 10,
|
|
55
|
+
i18n: {
|
|
56
|
+
fr: {
|
|
57
|
+
label: 'Sortir',
|
|
58
|
+
description: 'Trouver une sortie simple et concrète pour se voir dans la vraie vie.'
|
|
59
|
+
},
|
|
60
|
+
en: { label: 'Go out', description: 'Find a simple and concrete outing to meet in real life.' }
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
key: 'do_something_together',
|
|
65
|
+
emoji: '🎯',
|
|
66
|
+
order: 20,
|
|
67
|
+
i18n: {
|
|
68
|
+
fr: {
|
|
69
|
+
label: 'Partager une activité',
|
|
70
|
+
description: 'Se voir autour d’une activité précise à faire ensemble.'
|
|
71
|
+
},
|
|
72
|
+
en: { label: 'Share an activity', description: 'Meet around a specific activity to do together.' }
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
key: 'talk_and_share',
|
|
77
|
+
emoji: '💬',
|
|
78
|
+
order: 30,
|
|
79
|
+
i18n: {
|
|
80
|
+
fr: { label: 'Discuter', description: 'Lancer une vraie conversation, légère, profonde ou ciblée.' },
|
|
81
|
+
en: { label: 'Chat', description: 'Start a real conversation, light, deep, or focused.' }
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
key: 'see_if_it_clicks',
|
|
86
|
+
emoji: '✨',
|
|
87
|
+
order: 40,
|
|
88
|
+
i18n: {
|
|
89
|
+
fr: {
|
|
90
|
+
label: 'Rencontrer quelqu’un',
|
|
91
|
+
description: 'Faire connaissance simplement et voir si le feeling passe.'
|
|
92
|
+
},
|
|
93
|
+
en: { label: 'Meet someone', description: 'Get to know each other simply and see if the vibe is there.' }
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
key: 'build_connection',
|
|
98
|
+
emoji: '🤝',
|
|
99
|
+
order: 50,
|
|
100
|
+
i18n: {
|
|
101
|
+
fr: {
|
|
102
|
+
label: 'Se revoir régulièrement',
|
|
103
|
+
description: 'Créer une habitude sociale ou un binôme qu’on a envie de retrouver.'
|
|
104
|
+
},
|
|
105
|
+
en: { label: 'Meet regularly', description: 'Build a social habit or a duo you enjoy seeing again.' }
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
key: 'grow_or_build',
|
|
110
|
+
emoji: '🚀',
|
|
111
|
+
order: 60,
|
|
112
|
+
i18n: {
|
|
113
|
+
fr: {
|
|
114
|
+
label: 'Construire quelque chose',
|
|
115
|
+
description: 'Apprendre, créer, collaborer ou faire avancer une idée ensemble.'
|
|
116
|
+
},
|
|
117
|
+
en: {
|
|
118
|
+
label: 'Build something',
|
|
119
|
+
description: 'Learn, create, collaborate, or move an idea forward together.'
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
];
|
|
124
|
+
export const SOCIAL_CONTEXTS = [
|
|
125
|
+
{
|
|
126
|
+
key: 'go_out_coffee',
|
|
127
|
+
parentKey: 'go_out_or_move',
|
|
128
|
+
momentKey: 'go_out_or_move',
|
|
129
|
+
level: 2,
|
|
130
|
+
emoji: '☕',
|
|
131
|
+
i18n: {
|
|
132
|
+
fr: {
|
|
133
|
+
label: 'Prendre un café',
|
|
134
|
+
shortLabel: 'Café',
|
|
135
|
+
description: 'Se retrouver autour d’un café simple, léger et facile à caler.'
|
|
136
|
+
},
|
|
137
|
+
en: {
|
|
138
|
+
label: 'Get a coffee',
|
|
139
|
+
shortLabel: 'Coffee',
|
|
140
|
+
description: 'Grab a simple, light, easy-to-schedule coffee.'
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
tags: ['Café', 'Pause', 'Terrasse', 'Matin', 'Afterwork', 'Simple'],
|
|
144
|
+
domainKeys: ['food'],
|
|
145
|
+
order: 10
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
key: 'go_out_drink',
|
|
149
|
+
parentKey: 'go_out_or_move',
|
|
150
|
+
momentKey: 'go_out_or_move',
|
|
151
|
+
level: 2,
|
|
152
|
+
emoji: '🍷',
|
|
153
|
+
i18n: {
|
|
154
|
+
fr: {
|
|
155
|
+
label: 'Aller boire un verre',
|
|
156
|
+
shortLabel: 'Un verre',
|
|
157
|
+
description: 'Partager un verre sans se compliquer le moment.'
|
|
158
|
+
},
|
|
159
|
+
en: {
|
|
160
|
+
label: 'Go for a drink',
|
|
161
|
+
shortLabel: 'A drink',
|
|
162
|
+
description: 'Share a drink without overcomplicating the moment.'
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
tags: ['Bar', 'Afterwork', 'Cocktail', 'Apéro', 'Terrasse', 'Soir'],
|
|
166
|
+
domainKeys: ['nightlife', 'food'],
|
|
167
|
+
order: 20
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
key: 'go_out_meal',
|
|
171
|
+
parentKey: 'go_out_or_move',
|
|
172
|
+
momentKey: 'go_out_or_move',
|
|
173
|
+
level: 2,
|
|
174
|
+
emoji: '🍽️',
|
|
175
|
+
i18n: {
|
|
176
|
+
fr: {
|
|
177
|
+
label: 'Aller manger',
|
|
178
|
+
shortLabel: 'Manger',
|
|
179
|
+
description: 'Partager un repas, un brunch ou tester une bonne adresse.'
|
|
180
|
+
},
|
|
181
|
+
en: {
|
|
182
|
+
label: 'Grab a bite',
|
|
183
|
+
shortLabel: 'Eat out',
|
|
184
|
+
description: 'Share a meal, brunch, or try a good spot.'
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
tags: ['Restaurant', 'Brunch', 'Dîner', 'Street food', 'Adresse', 'Cuisine'],
|
|
188
|
+
domainKeys: ['food', 'cooking'],
|
|
189
|
+
order: 30
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
key: 'go_out_walk',
|
|
193
|
+
parentKey: 'go_out_or_move',
|
|
194
|
+
momentKey: 'go_out_or_move',
|
|
195
|
+
level: 2,
|
|
196
|
+
emoji: '🚶',
|
|
197
|
+
i18n: {
|
|
198
|
+
fr: {
|
|
199
|
+
label: 'Faire une balade',
|
|
200
|
+
shortLabel: 'Balade',
|
|
201
|
+
description: 'Marcher, prendre l’air et laisser la discussion venir naturellement.'
|
|
202
|
+
},
|
|
203
|
+
en: {
|
|
204
|
+
label: 'Go for a walk',
|
|
205
|
+
shortLabel: 'Walk',
|
|
206
|
+
description: 'Walk, get some fresh air, and let the conversation flow naturally.'
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
tags: ['Parc', 'Ville', 'Nature', 'Sunset', 'Bord de l’eau', 'Pique-nique'],
|
|
210
|
+
domainKeys: ['outdoors', 'wellness', 'travel'],
|
|
211
|
+
order: 40
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
key: 'go_out_tonight',
|
|
215
|
+
parentKey: 'go_out_or_move',
|
|
216
|
+
momentKey: 'go_out_or_move',
|
|
217
|
+
level: 2,
|
|
218
|
+
emoji: '🌃',
|
|
219
|
+
i18n: {
|
|
220
|
+
fr: {
|
|
221
|
+
label: 'Sortir ce soir',
|
|
222
|
+
shortLabel: 'Ce soir',
|
|
223
|
+
description: 'Improviser une sortie du soir qui donne envie de bouger maintenant.'
|
|
224
|
+
},
|
|
225
|
+
en: {
|
|
226
|
+
label: 'Go out tonight',
|
|
227
|
+
shortLabel: 'Tonight',
|
|
228
|
+
description: 'Spontaneously plan an evening out when the urge strikes.'
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
tags: ['Ce soir', 'Concert', 'Bar', 'Live', 'Spontané', 'Dernière minute'],
|
|
232
|
+
domainKeys: ['nightlife', 'music', 'culture'],
|
|
233
|
+
order: 50
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
key: 'go_out_discover',
|
|
237
|
+
parentKey: 'go_out_or_move',
|
|
238
|
+
momentKey: 'go_out_or_move',
|
|
239
|
+
level: 2,
|
|
240
|
+
emoji: '🗺️',
|
|
241
|
+
i18n: {
|
|
242
|
+
fr: {
|
|
243
|
+
label: 'Découvrir un lieu ou un événement',
|
|
244
|
+
shortLabel: 'Découvrir',
|
|
245
|
+
description: 'Explorer une expo, un lieu, un marché ou un événement du coin.'
|
|
246
|
+
},
|
|
247
|
+
en: {
|
|
248
|
+
label: 'Discover a place or event',
|
|
249
|
+
shortLabel: 'Explore',
|
|
250
|
+
description: 'Check out an exhibition, venue, market, or local event.'
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
tags: ['Expo', 'Marché', 'Lieu', 'Quartier', 'Événement', 'Découverte'],
|
|
254
|
+
domainKeys: ['culture', 'travel', 'outdoors', 'music'],
|
|
255
|
+
order: 60
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
key: 'activity_sports',
|
|
259
|
+
parentKey: 'do_something_together',
|
|
260
|
+
momentKey: 'do_something_together',
|
|
261
|
+
level: 2,
|
|
262
|
+
emoji: '🏃',
|
|
263
|
+
i18n: {
|
|
264
|
+
fr: {
|
|
265
|
+
label: 'Faire du sport',
|
|
266
|
+
shortLabel: 'Sport',
|
|
267
|
+
description: 'Bouger ensemble autour d’un sport, d’un effort doux ou d’une séance motivante.'
|
|
268
|
+
},
|
|
269
|
+
en: {
|
|
270
|
+
label: 'Do sports',
|
|
271
|
+
shortLabel: 'Sports',
|
|
272
|
+
description: 'Move together around a sport, a gentle effort, or a motivating session.'
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
tags: ['Running', 'Salle', 'Yoga', 'Escalade', 'Footing', 'Bien-être'],
|
|
276
|
+
domainKeys: ['sports', 'wellness', 'outdoors'],
|
|
277
|
+
order: 10
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
key: 'activity_play',
|
|
281
|
+
parentKey: 'do_something_together',
|
|
282
|
+
momentKey: 'do_something_together',
|
|
283
|
+
level: 2,
|
|
284
|
+
emoji: '🎲',
|
|
285
|
+
i18n: {
|
|
286
|
+
fr: {
|
|
287
|
+
label: 'Jouer',
|
|
288
|
+
shortLabel: 'Jouer',
|
|
289
|
+
description: 'Partager un moment ludique, à l’écran ou autour d’une table.'
|
|
290
|
+
},
|
|
291
|
+
en: {
|
|
292
|
+
label: 'Play something',
|
|
293
|
+
shortLabel: 'Play',
|
|
294
|
+
description: 'Share a fun moment, on screen or around a table.'
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
tags: ['Jeux', 'Fun', 'Coop', 'Challenge', 'Détente', 'Soirée'],
|
|
298
|
+
domainKeys: ['gaming'],
|
|
299
|
+
broad: true,
|
|
300
|
+
order: 20
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
key: 'activity_play_video_games',
|
|
304
|
+
parentKey: 'activity_play',
|
|
305
|
+
momentKey: 'do_something_together',
|
|
306
|
+
level: 3,
|
|
307
|
+
emoji: '🎮',
|
|
308
|
+
i18n: {
|
|
309
|
+
fr: {
|
|
310
|
+
label: 'Jeux vidéo',
|
|
311
|
+
shortLabel: 'Jeux vidéo',
|
|
312
|
+
description: 'Jouer en ligne ou en local autour d’un jeu vidéo précis.'
|
|
313
|
+
},
|
|
314
|
+
en: {
|
|
315
|
+
label: 'Video games',
|
|
316
|
+
shortLabel: 'Video games',
|
|
317
|
+
description: 'Play online or locally around a specific video game.'
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
tags: ['Co-op', 'Multi', 'Console', 'PC', 'Ranked', 'Casual'],
|
|
321
|
+
domainKeys: ['gaming', 'tech'],
|
|
322
|
+
order: 21
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
key: 'activity_play_board_games',
|
|
326
|
+
parentKey: 'activity_play',
|
|
327
|
+
momentKey: 'do_something_together',
|
|
328
|
+
level: 3,
|
|
329
|
+
emoji: '🃏',
|
|
330
|
+
i18n: {
|
|
331
|
+
fr: {
|
|
332
|
+
label: 'Jeux de société',
|
|
333
|
+
shortLabel: 'Jeux de société',
|
|
334
|
+
description: 'Partager une partie de jeu de société, de cartes ou de rôle.'
|
|
335
|
+
},
|
|
336
|
+
en: {
|
|
337
|
+
label: 'Board games',
|
|
338
|
+
shortLabel: 'Board games',
|
|
339
|
+
description: 'Share a board game, card game, or role-playing session.'
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
tags: ['Plateau', 'Cartes', 'Coop', 'Stratégie', 'Ambiance', 'Soirée jeux'],
|
|
343
|
+
domainKeys: ['gaming', 'culture'],
|
|
344
|
+
order: 22
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
key: 'activity_culture',
|
|
348
|
+
parentKey: 'do_something_together',
|
|
349
|
+
momentKey: 'do_something_together',
|
|
350
|
+
level: 2,
|
|
351
|
+
emoji: '🎭',
|
|
352
|
+
i18n: {
|
|
353
|
+
fr: {
|
|
354
|
+
label: 'Faire une activité culturelle',
|
|
355
|
+
shortLabel: 'Culture',
|
|
356
|
+
description: 'Se voir autour d’un film, d’une expo, d’un musée ou d’une sortie culturelle.'
|
|
357
|
+
},
|
|
358
|
+
en: {
|
|
359
|
+
label: 'Do a cultural activity',
|
|
360
|
+
shortLabel: 'Culture',
|
|
361
|
+
description: 'Meet around a film, exhibition, museum, or cultural outing.'
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
tags: ['Cinéma', 'Expo', 'Musée', 'Théâtre', 'Concert', 'Patrimoine'],
|
|
365
|
+
domainKeys: ['culture', 'cinema', 'music'],
|
|
366
|
+
order: 30
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
key: 'activity_creative',
|
|
370
|
+
parentKey: 'do_something_together',
|
|
371
|
+
momentKey: 'do_something_together',
|
|
372
|
+
level: 2,
|
|
373
|
+
emoji: '🎨',
|
|
374
|
+
i18n: {
|
|
375
|
+
fr: {
|
|
376
|
+
label: 'Faire une activité créative',
|
|
377
|
+
shortLabel: 'Créatif',
|
|
378
|
+
description: 'Créer, bricoler ou expérimenter quelque chose à plusieurs mains.'
|
|
379
|
+
},
|
|
380
|
+
en: {
|
|
381
|
+
label: 'Do something creative',
|
|
382
|
+
shortLabel: 'Creative',
|
|
383
|
+
description: 'Create, craft, or experiment something with multiple hands.'
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
tags: ['Photo', 'DIY', 'Atelier', 'Dessiner', 'Écriture', 'Création'],
|
|
387
|
+
domainKeys: ['creative', 'craft', 'culture'],
|
|
388
|
+
order: 40
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
key: 'activity_food',
|
|
392
|
+
parentKey: 'do_something_together',
|
|
393
|
+
momentKey: 'do_something_together',
|
|
394
|
+
level: 2,
|
|
395
|
+
emoji: '🍳',
|
|
396
|
+
i18n: {
|
|
397
|
+
fr: {
|
|
398
|
+
label: 'Cuisiner ou tester une adresse',
|
|
399
|
+
shortLabel: 'Cuisine',
|
|
400
|
+
description: 'Cuisiner ensemble ou partir tester une adresse qui donne envie.'
|
|
401
|
+
},
|
|
402
|
+
en: {
|
|
403
|
+
label: 'Cook or try a restaurant',
|
|
404
|
+
shortLabel: 'Food',
|
|
405
|
+
description: 'Cook together or go try a spot that sounds appealing.'
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
tags: ['Cuisine', 'Recette', 'Adresse', 'Brunch', 'Street food', 'Dessert'],
|
|
409
|
+
domainKeys: ['food', 'cooking'],
|
|
410
|
+
order: 50
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
key: 'activity_outdoor',
|
|
414
|
+
parentKey: 'do_something_together',
|
|
415
|
+
momentKey: 'do_something_together',
|
|
416
|
+
level: 2,
|
|
417
|
+
emoji: '🌿',
|
|
418
|
+
i18n: {
|
|
419
|
+
fr: {
|
|
420
|
+
label: 'Faire une activité en plein air',
|
|
421
|
+
shortLabel: 'Plein air',
|
|
422
|
+
description: 'Partager une activité dehors pour prendre l’air et bouger autrement.'
|
|
423
|
+
},
|
|
424
|
+
en: {
|
|
425
|
+
label: 'Do an outdoor activity',
|
|
426
|
+
shortLabel: 'Outdoors',
|
|
427
|
+
description: 'Share an outdoor activity to get some air and move differently.'
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
tags: ['Nature', 'Rando', 'Vélo', 'Kayak', 'Air libre', 'Aventure douce'],
|
|
431
|
+
domainKeys: ['outdoors', 'travel', 'sports'],
|
|
432
|
+
order: 60
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
key: 'talk_light',
|
|
436
|
+
parentKey: 'talk_and_share',
|
|
437
|
+
momentKey: 'talk_and_share',
|
|
438
|
+
level: 2,
|
|
439
|
+
emoji: '🙂',
|
|
440
|
+
i18n: {
|
|
441
|
+
fr: {
|
|
442
|
+
label: 'Conversation légère',
|
|
443
|
+
shortLabel: 'Légère',
|
|
444
|
+
description: 'Discuter sans pression, juste pour passer un bon moment.'
|
|
445
|
+
},
|
|
446
|
+
en: {
|
|
447
|
+
label: 'Light conversation',
|
|
448
|
+
shortLabel: 'Light',
|
|
449
|
+
description: 'Chat without pressure, just to have a good time.'
|
|
450
|
+
}
|
|
451
|
+
},
|
|
452
|
+
tags: ['Humour', 'Mèmes', 'Quotidien', 'Détente', 'Vocal', 'Simple'],
|
|
453
|
+
domainKeys: ['culture', 'cinema'],
|
|
454
|
+
order: 10
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
key: 'talk_deep',
|
|
458
|
+
parentKey: 'talk_and_share',
|
|
459
|
+
momentKey: 'talk_and_share',
|
|
460
|
+
level: 2,
|
|
461
|
+
emoji: '🫶',
|
|
462
|
+
i18n: {
|
|
463
|
+
fr: {
|
|
464
|
+
label: 'Discussion profonde',
|
|
465
|
+
shortLabel: 'Profonde',
|
|
466
|
+
description: 'Prendre le temps d’aller un peu plus loin que la petite conversation.'
|
|
467
|
+
},
|
|
468
|
+
en: {
|
|
469
|
+
label: 'Deep talk',
|
|
470
|
+
shortLabel: 'Deep',
|
|
471
|
+
description: 'Take time to go a little further than small talk.'
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
tags: ['Valeurs', 'Parcours', 'Société', 'Émotions', 'Réflexion', 'Confiance'],
|
|
475
|
+
domainKeys: ['reading', 'learning', 'culture'],
|
|
476
|
+
order: 20
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
key: 'talk_topic',
|
|
480
|
+
parentKey: 'talk_and_share',
|
|
481
|
+
momentKey: 'talk_and_share',
|
|
482
|
+
level: 2,
|
|
483
|
+
emoji: '🧠',
|
|
484
|
+
i18n: {
|
|
485
|
+
fr: {
|
|
486
|
+
label: 'Parler d’un sujet précis',
|
|
487
|
+
shortLabel: 'Sujet précis',
|
|
488
|
+
description: 'Échanger sur un thème clair qui passionne déjà les deux côtés.'
|
|
489
|
+
},
|
|
490
|
+
en: {
|
|
491
|
+
label: 'Talk about a specific topic',
|
|
492
|
+
shortLabel: 'Topic',
|
|
493
|
+
description: 'Discuss a clear theme that both sides are already passionate about.'
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
tags: ['Tech', 'Histoire', 'IA', 'Science', 'Politique', 'Culture web'],
|
|
497
|
+
domainKeys: ['learning', 'tech', 'culture', 'reading'],
|
|
498
|
+
order: 30
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
key: 'talk_media',
|
|
502
|
+
parentKey: 'talk_and_share',
|
|
503
|
+
momentKey: 'talk_and_share',
|
|
504
|
+
level: 2,
|
|
505
|
+
emoji: '📚',
|
|
506
|
+
i18n: {
|
|
507
|
+
fr: {
|
|
508
|
+
label: 'Échanger sur des films / séries / livres',
|
|
509
|
+
shortLabel: 'Films & livres',
|
|
510
|
+
description: 'Partager des recommandations et parler des œuvres qui marquent.'
|
|
511
|
+
},
|
|
512
|
+
en: {
|
|
513
|
+
label: 'Talk about movies / shows / books',
|
|
514
|
+
shortLabel: 'Media',
|
|
515
|
+
description: 'Share recommendations and talk about works that stand out.'
|
|
516
|
+
}
|
|
517
|
+
},
|
|
518
|
+
tags: ['Films', 'Séries', 'Livres', 'Manga', 'Docs', 'Recommandations'],
|
|
519
|
+
domainKeys: ['reading', 'cinema', 'culture'],
|
|
520
|
+
order: 40
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
key: 'talk_language_exchange',
|
|
524
|
+
parentKey: 'talk_and_share',
|
|
525
|
+
momentKey: 'talk_and_share',
|
|
526
|
+
level: 2,
|
|
527
|
+
emoji: '🗣️',
|
|
528
|
+
i18n: {
|
|
529
|
+
fr: {
|
|
530
|
+
label: 'Échange linguistique',
|
|
531
|
+
shortLabel: 'Langues',
|
|
532
|
+
description: 'Pratiquer une langue dans un échange simple et naturel.'
|
|
533
|
+
},
|
|
534
|
+
en: {
|
|
535
|
+
label: 'Language exchange',
|
|
536
|
+
shortLabel: 'Languages',
|
|
537
|
+
description: 'Practice a language in a simple and natural exchange.'
|
|
538
|
+
}
|
|
539
|
+
},
|
|
540
|
+
tags: ['Anglais', 'Espagnol', 'Italien', 'Japonais', 'Conversation', 'Tandem'],
|
|
541
|
+
domainKeys: ['learning', 'travel'],
|
|
542
|
+
order: 50
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
key: 'talk_online',
|
|
546
|
+
parentKey: 'talk_and_share',
|
|
547
|
+
momentKey: 'talk_and_share',
|
|
548
|
+
level: 2,
|
|
549
|
+
emoji: '💻',
|
|
550
|
+
i18n: {
|
|
551
|
+
fr: {
|
|
552
|
+
label: 'Discuter en ligne',
|
|
553
|
+
shortLabel: 'En ligne',
|
|
554
|
+
description: 'Commencer à distance quand c’est plus simple ou plus naturel.'
|
|
555
|
+
},
|
|
556
|
+
en: {
|
|
557
|
+
label: 'Chat online',
|
|
558
|
+
shortLabel: 'Online',
|
|
559
|
+
description: 'Start remotely when it’s easier or more natural.'
|
|
560
|
+
}
|
|
561
|
+
},
|
|
562
|
+
tags: ['Chat', 'Vocal', 'À distance', 'Remote', 'Facile', 'Progressif'],
|
|
563
|
+
domainKeys: ['tech', 'learning'],
|
|
564
|
+
order: 60
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
key: 'meet_make_acquaintance',
|
|
568
|
+
parentKey: 'see_if_it_clicks',
|
|
569
|
+
momentKey: 'see_if_it_clicks',
|
|
570
|
+
level: 2,
|
|
571
|
+
emoji: '👋',
|
|
572
|
+
i18n: {
|
|
573
|
+
fr: {
|
|
574
|
+
label: 'Faire connaissance',
|
|
575
|
+
shortLabel: 'Faire connaissance',
|
|
576
|
+
description: 'Se rencontrer pour découvrir qui est l’autre, simplement.'
|
|
577
|
+
},
|
|
578
|
+
en: {
|
|
579
|
+
label: 'Get acquainted',
|
|
580
|
+
shortLabel: 'Meet',
|
|
581
|
+
description: 'Meet to discover who the other person is, simply.'
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
tags: ['Première fois', 'Simple', 'Bienveillance', 'Découverte', 'Curiosité', 'Vrai monde'],
|
|
585
|
+
domainKeys: ['culture', 'food'],
|
|
586
|
+
order: 10
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
key: 'meet_feeling',
|
|
590
|
+
parentKey: 'see_if_it_clicks',
|
|
591
|
+
momentKey: 'see_if_it_clicks',
|
|
592
|
+
level: 2,
|
|
593
|
+
emoji: '✨',
|
|
594
|
+
i18n: {
|
|
595
|
+
fr: {
|
|
596
|
+
label: 'Voir si le feeling passe',
|
|
597
|
+
shortLabel: 'Feeling',
|
|
598
|
+
description: 'Se voir sans scénario pour sentir si l’énergie est là.'
|
|
599
|
+
},
|
|
600
|
+
en: {
|
|
601
|
+
label: 'See if the vibe is there',
|
|
602
|
+
shortLabel: 'Vibe',
|
|
603
|
+
description: 'Meet without a script to feel if the energy is right.'
|
|
604
|
+
}
|
|
605
|
+
},
|
|
606
|
+
tags: ['Feeling', 'Affinité', 'Simple', 'Sans pression', 'Présence', 'Rencontre'],
|
|
607
|
+
domainKeys: ['culture', 'food', 'outdoors'],
|
|
608
|
+
order: 20
|
|
609
|
+
},
|
|
610
|
+
{
|
|
611
|
+
key: 'meet_simple_first_date',
|
|
612
|
+
parentKey: 'see_if_it_clicks',
|
|
613
|
+
momentKey: 'see_if_it_clicks',
|
|
614
|
+
level: 2,
|
|
615
|
+
emoji: '☕',
|
|
616
|
+
i18n: {
|
|
617
|
+
fr: {
|
|
618
|
+
label: 'Premier rendez-vous simple',
|
|
619
|
+
shortLabel: 'Premier rendez-vous',
|
|
620
|
+
description: 'Un premier moment facile à proposer et facile à vivre.'
|
|
621
|
+
},
|
|
622
|
+
en: {
|
|
623
|
+
label: 'Simple first date',
|
|
624
|
+
shortLabel: 'First date',
|
|
625
|
+
description: 'A first moment that’s easy to suggest and easy to live.'
|
|
626
|
+
}
|
|
627
|
+
},
|
|
628
|
+
tags: ['Café', 'Verre', 'Après-midi', 'Terrasse', 'Simple', 'Court'],
|
|
629
|
+
domainKeys: ['food', 'nightlife'],
|
|
630
|
+
order: 30
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
key: 'meet_relaxed_date',
|
|
634
|
+
parentKey: 'see_if_it_clicks',
|
|
635
|
+
momentKey: 'see_if_it_clicks',
|
|
636
|
+
level: 2,
|
|
637
|
+
emoji: '🌙',
|
|
638
|
+
i18n: {
|
|
639
|
+
fr: {
|
|
640
|
+
label: 'Rencontre posée',
|
|
641
|
+
shortLabel: 'Posée',
|
|
642
|
+
description: 'Prendre plus de temps pour une rencontre calme et assumée.'
|
|
643
|
+
},
|
|
644
|
+
en: {
|
|
645
|
+
label: 'Relaxed date',
|
|
646
|
+
shortLabel: 'Relaxed',
|
|
647
|
+
description: 'Take more time for a calm and assumed meeting.'
|
|
648
|
+
}
|
|
649
|
+
},
|
|
650
|
+
tags: ['Dîner', 'Adresse', 'Sortie', 'Temps', 'Calme', 'Qualité'],
|
|
651
|
+
domainKeys: ['food', 'culture', 'cinema'],
|
|
652
|
+
order: 40
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
key: 'meet_spontaneous',
|
|
656
|
+
parentKey: 'see_if_it_clicks',
|
|
657
|
+
momentKey: 'see_if_it_clicks',
|
|
658
|
+
level: 2,
|
|
659
|
+
emoji: '⚡',
|
|
660
|
+
i18n: {
|
|
661
|
+
fr: {
|
|
662
|
+
label: 'Rencontre spontanée',
|
|
663
|
+
shortLabel: 'Spontanée',
|
|
664
|
+
description: 'Se voir rapidement quand l’envie est là maintenant.'
|
|
665
|
+
},
|
|
666
|
+
en: {
|
|
667
|
+
label: 'Spontaneous meetup',
|
|
668
|
+
shortLabel: 'Spontaneous',
|
|
669
|
+
description: 'Meet quickly when the urge is there right now.'
|
|
670
|
+
}
|
|
671
|
+
},
|
|
672
|
+
tags: ['Maintenant', 'Dernière minute', 'Simple', 'Ville', 'Spontané', 'Réel'],
|
|
673
|
+
domainKeys: ['outdoors', 'nightlife', 'food'],
|
|
674
|
+
order: 50
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
key: 'meet_online_first',
|
|
678
|
+
parentKey: 'see_if_it_clicks',
|
|
679
|
+
momentKey: 'see_if_it_clicks',
|
|
680
|
+
level: 2,
|
|
681
|
+
emoji: '📱',
|
|
682
|
+
i18n: {
|
|
683
|
+
fr: {
|
|
684
|
+
label: 'Première rencontre en ligne',
|
|
685
|
+
shortLabel: 'En ligne',
|
|
686
|
+
description: 'Commencer par un échange à distance avant de se voir.'
|
|
687
|
+
},
|
|
688
|
+
en: {
|
|
689
|
+
label: 'First online meeting',
|
|
690
|
+
shortLabel: 'Online',
|
|
691
|
+
description: 'Start with a remote exchange before meeting in person.'
|
|
692
|
+
}
|
|
693
|
+
},
|
|
694
|
+
tags: ['Chat', 'Vocal', 'Visio', 'À distance', 'Progressif', 'Première approche'],
|
|
695
|
+
domainKeys: ['tech', 'culture'],
|
|
696
|
+
order: 60
|
|
697
|
+
},
|
|
698
|
+
{
|
|
699
|
+
key: 'regular_sports_partner',
|
|
700
|
+
parentKey: 'build_connection',
|
|
701
|
+
momentKey: 'build_connection',
|
|
702
|
+
level: 2,
|
|
703
|
+
emoji: '🏋️',
|
|
704
|
+
i18n: {
|
|
705
|
+
fr: {
|
|
706
|
+
label: 'Partenaire de sport',
|
|
707
|
+
shortLabel: 'Sport régulier',
|
|
708
|
+
description: 'Trouver quelqu’un qu’on a envie de retrouver pour bouger souvent.'
|
|
709
|
+
},
|
|
710
|
+
en: {
|
|
711
|
+
label: 'Sports partner',
|
|
712
|
+
shortLabel: 'Regular sport',
|
|
713
|
+
description: 'Find someone you want to meet regularly to stay active.'
|
|
714
|
+
}
|
|
715
|
+
},
|
|
716
|
+
tags: ['Routine', 'Motivation', 'Salle', 'Running', 'Régulier', 'Binôme'],
|
|
717
|
+
domainKeys: ['sports', 'wellness'],
|
|
718
|
+
order: 10
|
|
719
|
+
},
|
|
720
|
+
{
|
|
721
|
+
key: 'regular_game_partner',
|
|
722
|
+
parentKey: 'build_connection',
|
|
723
|
+
momentKey: 'build_connection',
|
|
724
|
+
level: 2,
|
|
725
|
+
emoji: '🎲',
|
|
726
|
+
i18n: {
|
|
727
|
+
fr: {
|
|
728
|
+
label: 'Partenaire de jeu',
|
|
729
|
+
shortLabel: 'Jeu régulier',
|
|
730
|
+
description: 'Avoir un ou une partenaire de jeu qu’on recontacte naturellement.'
|
|
731
|
+
},
|
|
732
|
+
en: {
|
|
733
|
+
label: 'Game partner',
|
|
734
|
+
shortLabel: 'Regular game',
|
|
735
|
+
description: 'Have a game partner you naturally reconnect with.'
|
|
736
|
+
}
|
|
737
|
+
},
|
|
738
|
+
tags: ['Co-op', 'Board games', 'Gaming', 'Habitude', 'Régulier', 'Soirée'],
|
|
739
|
+
domainKeys: ['gaming'],
|
|
740
|
+
order: 20
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
key: 'regular_talk_buddy',
|
|
744
|
+
parentKey: 'build_connection',
|
|
745
|
+
momentKey: 'build_connection',
|
|
746
|
+
level: 2,
|
|
747
|
+
emoji: '🫱',
|
|
748
|
+
i18n: {
|
|
749
|
+
fr: {
|
|
750
|
+
label: 'Binôme de discussion',
|
|
751
|
+
shortLabel: 'Binôme',
|
|
752
|
+
description: 'Retrouver une personne avec qui parler revient naturellement.'
|
|
753
|
+
},
|
|
754
|
+
en: {
|
|
755
|
+
label: 'Talk buddy',
|
|
756
|
+
shortLabel: 'Buddy',
|
|
757
|
+
description: 'Find someone you naturally come back to for conversation.'
|
|
758
|
+
}
|
|
759
|
+
},
|
|
760
|
+
tags: ['Discussion', 'Écoute', 'Régulier', 'Lien', 'Confiance', 'Vocal'],
|
|
761
|
+
domainKeys: ['culture', 'learning'],
|
|
762
|
+
order: 30
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
key: 'regular_social_habit',
|
|
766
|
+
parentKey: 'build_connection',
|
|
767
|
+
momentKey: 'build_connection',
|
|
768
|
+
level: 2,
|
|
769
|
+
emoji: '🗓️',
|
|
770
|
+
i18n: {
|
|
771
|
+
fr: {
|
|
772
|
+
label: 'Habitude sociale régulière',
|
|
773
|
+
shortLabel: 'Habitude',
|
|
774
|
+
description: 'Installer un rythme simple de retrouvailles qui devient naturel.'
|
|
775
|
+
},
|
|
776
|
+
en: {
|
|
777
|
+
label: 'Regular social habit',
|
|
778
|
+
shortLabel: 'Habit',
|
|
779
|
+
description: 'Build a simple rhythm of meetups that becomes natural.'
|
|
780
|
+
}
|
|
781
|
+
},
|
|
782
|
+
tags: ['Rituel', 'Hebdo', 'Mensuel', 'Afterwork', 'Café', 'Routine'],
|
|
783
|
+
domainKeys: ['culture', 'food', 'outdoors'],
|
|
784
|
+
order: 40
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
key: 'regular_small_group',
|
|
788
|
+
parentKey: 'build_connection',
|
|
789
|
+
momentKey: 'build_connection',
|
|
790
|
+
level: 2,
|
|
791
|
+
emoji: '👥',
|
|
792
|
+
i18n: {
|
|
793
|
+
fr: {
|
|
794
|
+
label: 'Petit groupe récurrent',
|
|
795
|
+
shortLabel: 'Petit groupe',
|
|
796
|
+
description: 'Former un petit cercle qu’on retrouve avec plaisir.'
|
|
797
|
+
},
|
|
798
|
+
en: {
|
|
799
|
+
label: 'Recurring small group',
|
|
800
|
+
shortLabel: 'Small group',
|
|
801
|
+
description: 'Form a small circle you enjoy meeting again.'
|
|
802
|
+
}
|
|
803
|
+
},
|
|
804
|
+
tags: ['Groupe', 'Récurrent', 'Jeux', 'Sorties', 'Tranquille', 'Local'],
|
|
805
|
+
domainKeys: ['gaming', 'culture', 'food'],
|
|
806
|
+
order: 50
|
|
807
|
+
},
|
|
808
|
+
{
|
|
809
|
+
key: 'regular_go_out_often',
|
|
810
|
+
parentKey: 'build_connection',
|
|
811
|
+
momentKey: 'build_connection',
|
|
812
|
+
level: 2,
|
|
813
|
+
emoji: '🌙',
|
|
814
|
+
i18n: {
|
|
815
|
+
fr: {
|
|
816
|
+
label: 'Personne avec qui sortir souvent',
|
|
817
|
+
shortLabel: 'Sortir souvent',
|
|
818
|
+
description: 'Trouver quelqu’un avec qui refaire souvent des sorties.'
|
|
819
|
+
},
|
|
820
|
+
en: {
|
|
821
|
+
label: 'Someone to go out with often',
|
|
822
|
+
shortLabel: 'Go out often',
|
|
823
|
+
description: 'Find someone to regularly go out with.'
|
|
824
|
+
}
|
|
825
|
+
},
|
|
826
|
+
tags: ['Sorties', 'Ville', 'Habitude', 'Spontané', 'Régulier', 'Complicité'],
|
|
827
|
+
domainKeys: ['nightlife', 'food', 'culture'],
|
|
828
|
+
order: 60
|
|
829
|
+
},
|
|
830
|
+
{
|
|
831
|
+
key: 'build_coworking',
|
|
832
|
+
parentKey: 'grow_or_build',
|
|
833
|
+
momentKey: 'grow_or_build',
|
|
834
|
+
level: 2,
|
|
835
|
+
emoji: '🧑💻',
|
|
836
|
+
i18n: {
|
|
837
|
+
fr: {
|
|
838
|
+
label: 'Co-working',
|
|
839
|
+
shortLabel: 'Co-working',
|
|
840
|
+
description: 'Travailler côte à côte, se motiver et avancer mieux ensemble.'
|
|
841
|
+
},
|
|
842
|
+
en: {
|
|
843
|
+
label: 'Co-working',
|
|
844
|
+
shortLabel: 'Co-working',
|
|
845
|
+
description: 'Work side by side, stay motivated, and move forward together.'
|
|
846
|
+
}
|
|
847
|
+
},
|
|
848
|
+
tags: ['Focus', 'Café', 'Remote', 'Session', 'Études', 'Productivité'],
|
|
849
|
+
domainKeys: ['pro', 'learning', 'tech'],
|
|
850
|
+
order: 10
|
|
851
|
+
},
|
|
852
|
+
{
|
|
853
|
+
key: 'build_project',
|
|
854
|
+
parentKey: 'grow_or_build',
|
|
855
|
+
momentKey: 'grow_or_build',
|
|
856
|
+
level: 2,
|
|
857
|
+
emoji: '🛠️',
|
|
858
|
+
i18n: {
|
|
859
|
+
fr: {
|
|
860
|
+
label: 'Monter un projet',
|
|
861
|
+
shortLabel: 'Projet',
|
|
862
|
+
description: 'Faire avancer une idée concrète avec une autre personne.'
|
|
863
|
+
},
|
|
864
|
+
en: {
|
|
865
|
+
label: 'Build a project',
|
|
866
|
+
shortLabel: 'Project',
|
|
867
|
+
description: 'Move a concrete idea forward with another person.'
|
|
868
|
+
}
|
|
869
|
+
},
|
|
870
|
+
tags: ['Projet', 'Produit', 'Idée', 'Roadmap', 'Prototype', 'Avancer'],
|
|
871
|
+
domainKeys: ['pro', 'tech', 'creative'],
|
|
872
|
+
order: 20
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
key: 'build_entrepreneurship',
|
|
876
|
+
parentKey: 'grow_or_build',
|
|
877
|
+
momentKey: 'grow_or_build',
|
|
878
|
+
level: 2,
|
|
879
|
+
emoji: '📈',
|
|
880
|
+
i18n: {
|
|
881
|
+
fr: {
|
|
882
|
+
label: 'Entreprendre',
|
|
883
|
+
shortLabel: 'Entreprendre',
|
|
884
|
+
description: 'Partager une énergie entrepreneuriale et construire plus grand.'
|
|
885
|
+
},
|
|
886
|
+
en: {
|
|
887
|
+
label: 'Entrepreneurship',
|
|
888
|
+
shortLabel: 'Entrepreneurship',
|
|
889
|
+
description: 'Share an entrepreneurial energy and build something bigger.'
|
|
890
|
+
}
|
|
891
|
+
},
|
|
892
|
+
tags: ['Startup', 'Business', 'Freelance', 'Go-to-market', 'Produit', 'Ambition'],
|
|
893
|
+
domainKeys: ['pro', 'tech', 'coaching'],
|
|
894
|
+
order: 30
|
|
895
|
+
},
|
|
896
|
+
{
|
|
897
|
+
key: 'build_create_together',
|
|
898
|
+
parentKey: 'grow_or_build',
|
|
899
|
+
momentKey: 'grow_or_build',
|
|
900
|
+
level: 2,
|
|
901
|
+
emoji: '🎨',
|
|
902
|
+
i18n: {
|
|
903
|
+
fr: {
|
|
904
|
+
label: 'Créer ensemble',
|
|
905
|
+
shortLabel: 'Créer',
|
|
906
|
+
description: 'Imaginer et produire quelque chose à deux ou à plusieurs.'
|
|
907
|
+
},
|
|
908
|
+
en: {
|
|
909
|
+
label: 'Create together',
|
|
910
|
+
shortLabel: 'Create',
|
|
911
|
+
description: 'Imagine and produce something together, two or more.'
|
|
912
|
+
}
|
|
913
|
+
},
|
|
914
|
+
tags: ['Création', 'Photo', 'Vidéo', 'Design', 'Écriture', 'Projet créatif'],
|
|
915
|
+
domainKeys: ['creative', 'craft', 'culture'],
|
|
916
|
+
order: 40
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
key: 'build_learn_together',
|
|
920
|
+
parentKey: 'grow_or_build',
|
|
921
|
+
momentKey: 'grow_or_build',
|
|
922
|
+
level: 2,
|
|
923
|
+
emoji: '📘',
|
|
924
|
+
i18n: {
|
|
925
|
+
fr: {
|
|
926
|
+
label: 'Apprendre ensemble',
|
|
927
|
+
shortLabel: 'Apprendre',
|
|
928
|
+
description: 'Se motiver ensemble pour apprendre plus vite et plus loin.'
|
|
929
|
+
},
|
|
930
|
+
en: {
|
|
931
|
+
label: 'Learn together',
|
|
932
|
+
shortLabel: 'Learn',
|
|
933
|
+
description: 'Motivate each other to learn faster and further.'
|
|
934
|
+
}
|
|
935
|
+
},
|
|
936
|
+
tags: ['Langues', 'Code', 'Études', 'Cours', 'Méthode', 'Progression'],
|
|
937
|
+
domainKeys: ['learning', 'tech', 'coaching'],
|
|
938
|
+
order: 50
|
|
939
|
+
},
|
|
940
|
+
{
|
|
941
|
+
key: 'build_mentoring',
|
|
942
|
+
parentKey: 'grow_or_build',
|
|
943
|
+
momentKey: 'grow_or_build',
|
|
944
|
+
level: 2,
|
|
945
|
+
emoji: '🎓',
|
|
946
|
+
i18n: {
|
|
947
|
+
fr: {
|
|
948
|
+
label: 'Mentorat / entraide',
|
|
949
|
+
shortLabel: 'Mentorat',
|
|
950
|
+
description: 'Partager de l’expérience, aider, transmettre ou demander un coup de main.'
|
|
951
|
+
},
|
|
952
|
+
en: {
|
|
953
|
+
label: 'Mentoring / mutual aid',
|
|
954
|
+
shortLabel: 'Mentoring',
|
|
955
|
+
description: 'Share experience, help, pass on knowledge, or ask for support.'
|
|
956
|
+
}
|
|
957
|
+
},
|
|
958
|
+
tags: ['Mentorat', 'Conseil', 'Entraide', 'Parcours', 'Carrière', 'Transmission'],
|
|
959
|
+
domainKeys: ['coaching', 'learning', 'pro'],
|
|
960
|
+
order: 60
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
key: 'build_collaboration',
|
|
964
|
+
parentKey: 'grow_or_build',
|
|
965
|
+
momentKey: 'grow_or_build',
|
|
966
|
+
level: 2,
|
|
967
|
+
emoji: '🤝',
|
|
968
|
+
i18n: {
|
|
969
|
+
fr: {
|
|
970
|
+
label: 'Collaboration pro ou créative',
|
|
971
|
+
shortLabel: 'Collaboration',
|
|
972
|
+
description: 'Trouver une personne avec qui collaborer sérieusement sur un vrai sujet.'
|
|
973
|
+
},
|
|
974
|
+
en: {
|
|
975
|
+
label: 'Professional or creative collaboration',
|
|
976
|
+
shortLabel: 'Collaboration',
|
|
977
|
+
description: 'Find someone to collaborate seriously on a real topic.'
|
|
978
|
+
}
|
|
979
|
+
},
|
|
980
|
+
tags: ['Collab', 'Freelance', 'Créatif', 'Mission', 'Partenaire', 'Pro'],
|
|
981
|
+
domainKeys: ['pro', 'creative', 'tech'],
|
|
982
|
+
order: 70
|
|
983
|
+
}
|
|
984
|
+
];
|
|
985
|
+
const SOCIAL_PARENT_KEYS = [...SOCIAL_MOMENT_KEYS, ...SOCIAL_CONTEXT_KEYS];
|
|
986
|
+
function toRecord(entries) {
|
|
987
|
+
return Object.freeze(Object.fromEntries(entries));
|
|
988
|
+
}
|
|
989
|
+
function getDeprecatedActiveContextKeys(value) {
|
|
990
|
+
return DEPRECATED_SOCIAL_CONTEXT_TO_ACTIVE_CONTEXTS[value] ?? [];
|
|
991
|
+
}
|
|
992
|
+
export const SOCIAL_CONTEXTS_BY_KEY = toRecord(SOCIAL_CONTEXTS.map((context) => [context.key, context]));
|
|
993
|
+
export const SOCIAL_MOMENTS_BY_KEY = toRecord(SOCIAL_MOMENTS.map((moment) => [moment.key, moment]));
|
|
994
|
+
export const SOCIAL_CONTEXTS_BY_PARENT = toRecord(SOCIAL_PARENT_KEYS.map((parentKey) => [
|
|
995
|
+
parentKey,
|
|
996
|
+
SOCIAL_CONTEXTS.filter((context) => context.parentKey === parentKey).sort((a, b) => a.order - b.order)
|
|
997
|
+
]));
|
|
998
|
+
export const SOCIAL_CONTEXTS_BY_MOMENT = toRecord(SOCIAL_MOMENT_KEYS.map((momentKey) => [momentKey, SOCIAL_CONTEXTS_BY_PARENT[momentKey] ?? []]));
|
|
999
|
+
export const SOCIAL_NESTED_CONTEXTS_BY_MOMENT = toRecord(SOCIAL_MOMENT_KEYS.map((momentKey) => [
|
|
1000
|
+
momentKey,
|
|
1001
|
+
SOCIAL_CONTEXTS.filter((context) => context.momentKey === momentKey).sort((a, b) => a.order - b.order)
|
|
1002
|
+
]));
|
|
1003
|
+
export const SOCIAL_CONTEXT_TAG_MAPPINGS = SOCIAL_CONTEXTS.flatMap((context) => context.tags.map((tag) => ({ contextKey: context.key, tag })));
|
|
1004
|
+
export const SOCIAL_CONTEXT_DOMAIN_MAPPINGS = SOCIAL_CONTEXTS.flatMap((context) => context.domainKeys.map((domainKey) => ({ contextKey: context.key, domainKey, weight: context.broad ? 0.7 : 1 })));
|
|
1005
|
+
export const LEGACY_INTENTION_TO_SOCIAL_CONTEXTS = Object.freeze({
|
|
1006
|
+
dating: ['meet_feeling', 'meet_simple_first_date', 'meet_relaxed_date'],
|
|
1007
|
+
friendship: ['meet_make_acquaintance', 'regular_social_habit', 'regular_small_group'],
|
|
1008
|
+
networking: ['build_project', 'build_mentoring', 'build_collaboration'],
|
|
1009
|
+
activities: ['activity_sports', 'activity_play', 'activity_culture'],
|
|
1010
|
+
discussion: ['talk_light', 'talk_deep', 'talk_media'],
|
|
1011
|
+
serious_relationship: ['meet_feeling', 'meet_relaxed_date'],
|
|
1012
|
+
activity_partner: ['activity_sports', 'activity_outdoor'],
|
|
1013
|
+
group_activity: ['regular_small_group', 'activity_play_board_games'],
|
|
1014
|
+
casual_chat: ['talk_light', 'talk_online']
|
|
1015
|
+
});
|
|
1016
|
+
export const DEPRECATED_SOCIAL_CONTEXT_TO_ACTIVE_CONTEXTS = Object.freeze({
|
|
1017
|
+
do_together_open: [
|
|
1018
|
+
'activity_sports',
|
|
1019
|
+
'activity_play',
|
|
1020
|
+
'activity_culture',
|
|
1021
|
+
'activity_creative',
|
|
1022
|
+
'activity_food',
|
|
1023
|
+
'activity_outdoor'
|
|
1024
|
+
],
|
|
1025
|
+
sports_partner: ['activity_sports'],
|
|
1026
|
+
food_cooking: ['activity_food'],
|
|
1027
|
+
culture_creative: ['activity_culture', 'activity_creative', 'activity_play'],
|
|
1028
|
+
go_out_open: [
|
|
1029
|
+
'go_out_coffee',
|
|
1030
|
+
'go_out_drink',
|
|
1031
|
+
'go_out_meal',
|
|
1032
|
+
'go_out_walk',
|
|
1033
|
+
'go_out_tonight',
|
|
1034
|
+
'go_out_discover'
|
|
1035
|
+
],
|
|
1036
|
+
coffee_or_drink_now: ['go_out_coffee', 'go_out_drink'],
|
|
1037
|
+
walk_and_talk: ['go_out_walk'],
|
|
1038
|
+
nightlife_event: ['go_out_tonight', 'go_out_discover'],
|
|
1039
|
+
talk_share_open: [
|
|
1040
|
+
'talk_light',
|
|
1041
|
+
'talk_deep',
|
|
1042
|
+
'talk_topic',
|
|
1043
|
+
'talk_media',
|
|
1044
|
+
'talk_language_exchange',
|
|
1045
|
+
'talk_online'
|
|
1046
|
+
],
|
|
1047
|
+
light_conversation: ['talk_light'],
|
|
1048
|
+
books_ideas: ['talk_topic', 'talk_media'],
|
|
1049
|
+
languages_exchange: ['talk_language_exchange'],
|
|
1050
|
+
build_connection_open: [
|
|
1051
|
+
'regular_sports_partner',
|
|
1052
|
+
'regular_game_partner',
|
|
1053
|
+
'regular_talk_buddy',
|
|
1054
|
+
'regular_social_habit',
|
|
1055
|
+
'regular_small_group',
|
|
1056
|
+
'regular_go_out_often'
|
|
1057
|
+
],
|
|
1058
|
+
new_friends: ['meet_make_acquaintance', 'regular_social_habit'],
|
|
1059
|
+
small_group: ['regular_small_group'],
|
|
1060
|
+
local_community: ['regular_social_habit', 'regular_small_group'],
|
|
1061
|
+
see_if_clicks_open: [
|
|
1062
|
+
'meet_make_acquaintance',
|
|
1063
|
+
'meet_feeling',
|
|
1064
|
+
'meet_simple_first_date',
|
|
1065
|
+
'meet_relaxed_date',
|
|
1066
|
+
'meet_spontaneous',
|
|
1067
|
+
'meet_online_first'
|
|
1068
|
+
],
|
|
1069
|
+
simple_first_meet: ['meet_simple_first_date'],
|
|
1070
|
+
dinner_date: ['meet_relaxed_date'],
|
|
1071
|
+
walk_date: ['meet_simple_first_date', 'meet_spontaneous'],
|
|
1072
|
+
grow_build_open: [
|
|
1073
|
+
'build_coworking',
|
|
1074
|
+
'build_project',
|
|
1075
|
+
'build_entrepreneurship',
|
|
1076
|
+
'build_create_together',
|
|
1077
|
+
'build_learn_together',
|
|
1078
|
+
'build_mentoring',
|
|
1079
|
+
'build_collaboration'
|
|
1080
|
+
],
|
|
1081
|
+
professional_exchange: ['build_project', 'build_collaboration'],
|
|
1082
|
+
mentoring: ['build_mentoring'],
|
|
1083
|
+
coworking: ['build_coworking'],
|
|
1084
|
+
gaming_tabletop: ['activity_play_board_games'],
|
|
1085
|
+
outdoors_adventure: ['activity_outdoor'],
|
|
1086
|
+
music_show: ['go_out_discover'],
|
|
1087
|
+
brunch_or_lunch: ['go_out_meal'],
|
|
1088
|
+
local_event: ['go_out_discover'],
|
|
1089
|
+
culture_news: ['talk_topic'],
|
|
1090
|
+
movies_series: ['talk_media'],
|
|
1091
|
+
support_circle: ['regular_social_habit', 'regular_talk_buddy'],
|
|
1092
|
+
cultural_date: ['meet_relaxed_date'],
|
|
1093
|
+
online_date: ['meet_online_first'],
|
|
1094
|
+
startup_project: ['build_project', 'build_entrepreneurship'],
|
|
1095
|
+
freelance_creative: ['build_collaboration'],
|
|
1096
|
+
tech_product: ['build_project']
|
|
1097
|
+
});
|
|
1098
|
+
export const DEPRECATED_SOCIAL_CONTEXT_TO_ACTIVE_CONTEXT = Object.freeze(Object.fromEntries(Object.entries(DEPRECATED_SOCIAL_CONTEXT_TO_ACTIVE_CONTEXTS)
|
|
1099
|
+
.filter(([, contextKeys]) => contextKeys.length > 0)
|
|
1100
|
+
.map(([deprecatedKey, contextKeys]) => [deprecatedKey, contextKeys[0]])));
|
|
1101
|
+
export function isSocialMomentKey(value) {
|
|
1102
|
+
return SOCIAL_MOMENT_KEYS.includes(value);
|
|
1103
|
+
}
|
|
1104
|
+
export function isSocialContextKey(value) {
|
|
1105
|
+
return SOCIAL_CONTEXT_KEYS.includes(value);
|
|
1106
|
+
}
|
|
1107
|
+
export function normalizeSocialContextKey(value) {
|
|
1108
|
+
if (isSocialContextKey(value))
|
|
1109
|
+
return value;
|
|
1110
|
+
const [contextKey] = getDeprecatedActiveContextKeys(value);
|
|
1111
|
+
return contextKey ?? null;
|
|
1112
|
+
}
|
|
1113
|
+
export function normalizeSocialContextKeys(values) {
|
|
1114
|
+
const normalized = new Set();
|
|
1115
|
+
for (const value of values ?? []) {
|
|
1116
|
+
if (isSocialContextKey(value)) {
|
|
1117
|
+
normalized.add(value);
|
|
1118
|
+
continue;
|
|
1119
|
+
}
|
|
1120
|
+
for (const contextKey of getDeprecatedActiveContextKeys(value)) {
|
|
1121
|
+
normalized.add(contextKey);
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
return [...normalized];
|
|
1125
|
+
}
|
|
1126
|
+
export function getSocialMoment(key) {
|
|
1127
|
+
return SOCIAL_MOMENTS_BY_KEY[key];
|
|
1128
|
+
}
|
|
1129
|
+
export function getSocialContext(key) {
|
|
1130
|
+
return SOCIAL_CONTEXTS_BY_KEY[key];
|
|
1131
|
+
}
|
|
1132
|
+
export function getSocialContextsForMoment(momentKey) {
|
|
1133
|
+
return SOCIAL_CONTEXTS_BY_MOMENT[momentKey] ?? [];
|
|
1134
|
+
}
|
|
1135
|
+
export function getAllSocialContextsForMoment(momentKey) {
|
|
1136
|
+
return SOCIAL_NESTED_CONTEXTS_BY_MOMENT[momentKey] ?? [];
|
|
1137
|
+
}
|
|
1138
|
+
export function getChildSocialContexts(parentKey) {
|
|
1139
|
+
return SOCIAL_CONTEXTS_BY_PARENT[parentKey] ?? [];
|
|
1140
|
+
}
|
|
1141
|
+
export function hasChildSocialContexts(parentKey) {
|
|
1142
|
+
return getChildSocialContexts(parentKey).length > 0;
|
|
1143
|
+
}
|
|
1144
|
+
export function getParentKeyForContext(contextKey) {
|
|
1145
|
+
return SOCIAL_CONTEXTS_BY_KEY[contextKey].parentKey;
|
|
1146
|
+
}
|
|
1147
|
+
export function getMomentKeyForContext(contextKey) {
|
|
1148
|
+
return SOCIAL_CONTEXTS_BY_KEY[contextKey].momentKey;
|
|
1149
|
+
}
|
|
1150
|
+
export function getAncestorContextKeys(contextKey) {
|
|
1151
|
+
const ancestors = [];
|
|
1152
|
+
let parentKey = getParentKeyForContext(contextKey);
|
|
1153
|
+
while (isSocialContextKey(parentKey)) {
|
|
1154
|
+
ancestors.unshift(parentKey);
|
|
1155
|
+
parentKey = getParentKeyForContext(parentKey);
|
|
1156
|
+
}
|
|
1157
|
+
return ancestors;
|
|
1158
|
+
}
|
|
1159
|
+
export function getDescendantContextKeys(parentKey) {
|
|
1160
|
+
const descendants = [];
|
|
1161
|
+
const visit = (currentKey) => {
|
|
1162
|
+
for (const child of getChildSocialContexts(currentKey)) {
|
|
1163
|
+
descendants.push(child.key);
|
|
1164
|
+
visit(child.key);
|
|
1165
|
+
}
|
|
1166
|
+
};
|
|
1167
|
+
visit(parentKey);
|
|
1168
|
+
return descendants;
|
|
1169
|
+
}
|
|
1170
|
+
export function normalizeSocialContextSelection(selection) {
|
|
1171
|
+
const resolvedContextKeys = isSocialContextKey(selection.contextKey)
|
|
1172
|
+
? [selection.contextKey]
|
|
1173
|
+
: [...getDeprecatedActiveContextKeys(selection.contextKey)];
|
|
1174
|
+
if (resolvedContextKeys.length !== 1)
|
|
1175
|
+
return null;
|
|
1176
|
+
const [contextKey] = resolvedContextKeys;
|
|
1177
|
+
const context = SOCIAL_CONTEXTS_BY_KEY[contextKey];
|
|
1178
|
+
if (!context || context.momentKey !== selection.momentKey)
|
|
1179
|
+
return null;
|
|
1180
|
+
return {
|
|
1181
|
+
momentKey: selection.momentKey,
|
|
1182
|
+
contextKey,
|
|
1183
|
+
tags: selection.tags?.map((tag) => tag.trim()).filter((tag) => tag.length > 0),
|
|
1184
|
+
query: selection.query?.trim() || undefined
|
|
1185
|
+
};
|
|
1186
|
+
}
|