@deina-labs/deina-core 1.0.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.
- package/README.md +154 -0
- package/dist/archetype-card.d.ts +5 -0
- package/dist/archetype-card.d.ts.map +1 -0
- package/dist/archetype-card.js +239 -0
- package/dist/archetype-card.js.map +1 -0
- package/dist/archetypes.d.ts +3 -0
- package/dist/archetypes.d.ts.map +1 -0
- package/dist/archetypes.js +47 -0
- package/dist/archetypes.js.map +1 -0
- package/dist/classify.d.ts +9 -0
- package/dist/classify.d.ts.map +1 -0
- package/dist/classify.js +327 -0
- package/dist/classify.js.map +1 -0
- package/dist/coaching.d.ts +4 -0
- package/dist/coaching.d.ts.map +1 -0
- package/dist/coaching.js +107 -0
- package/dist/coaching.js.map +1 -0
- package/dist/deinas.d.ts +10 -0
- package/dist/deinas.d.ts.map +1 -0
- package/dist/deinas.js +55 -0
- package/dist/deinas.js.map +1 -0
- package/dist/fun-facts.d.ts +8 -0
- package/dist/fun-facts.d.ts.map +1 -0
- package/dist/fun-facts.js +30 -0
- package/dist/fun-facts.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/onboarding-content.d.ts +94 -0
- package/dist/onboarding-content.d.ts.map +1 -0
- package/dist/onboarding-content.js +96 -0
- package/dist/onboarding-content.js.map +1 -0
- package/dist/quiz-questions.d.ts +40 -0
- package/dist/quiz-questions.d.ts.map +1 -0
- package/dist/quiz-questions.js +336 -0
- package/dist/quiz-questions.js.map +1 -0
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +33 -0
- package/src/archetype-card.ts +248 -0
- package/src/archetypes.ts +54 -0
- package/src/classify.ts +336 -0
- package/src/coaching.ts +115 -0
- package/src/deinas.ts +77 -0
- package/src/fun-facts.ts +38 -0
- package/src/index.ts +38 -0
- package/src/onboarding-content.ts +102 -0
- package/src/quiz-questions.ts +479 -0
- package/src/types.ts +24 -0
package/src/coaching.ts
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { ArchetypeCoaching } from './types.js';
|
|
2
|
+
|
|
3
|
+
export const ARCHETYPE_COACHING: Record<string, ArchetypeCoaching> = {
|
|
4
|
+
'the-strategic-dater': {
|
|
5
|
+
name: 'The Strategic Dater',
|
|
6
|
+
signatureLine: 'You trust patterns more than promises.',
|
|
7
|
+
traits: [
|
|
8
|
+
'Approaches relationships with clarity and intention',
|
|
9
|
+
'Pays close attention to consistency and effort over time',
|
|
10
|
+
'Evaluates behavior carefully before investing emotionally',
|
|
11
|
+
],
|
|
12
|
+
pitfalls: [
|
|
13
|
+
'Instinct to analyze connections quickly can make slower-building chemistry easy to overlook',
|
|
14
|
+
'May dismiss promising connections that do not check every box immediately',
|
|
15
|
+
'Can come across as transactional when evaluating early connections',
|
|
16
|
+
],
|
|
17
|
+
coachingDirective:
|
|
18
|
+
'Watch for her cutting off someone who might just need a little more time. If she is evaluating too clinically, gently remind her that real connection sometimes looks messy at first. Flag when she is being rigid about timelines at the expense of someone who is genuinely showing effort.',
|
|
19
|
+
},
|
|
20
|
+
'the-hopeful-romantic': {
|
|
21
|
+
name: 'The Hopeful Romantic',
|
|
22
|
+
signatureLine: 'You believe the right connection can change everything.',
|
|
23
|
+
traits: [
|
|
24
|
+
'Approaches dating with warmth and emotional openness',
|
|
25
|
+
'Builds connection quickly and creates meaningful relationships',
|
|
26
|
+
'Naturally willing to explore where a relationship might lead',
|
|
27
|
+
],
|
|
28
|
+
pitfalls: [
|
|
29
|
+
'May assume long-term compatibility before consistent effort is proven',
|
|
30
|
+
'Can see potential too easily and stay slightly longer than warranted',
|
|
31
|
+
'Sometimes second-guesses instincts when head and heart conflict',
|
|
32
|
+
],
|
|
33
|
+
coachingDirective:
|
|
34
|
+
'Watch for her giving one too many chances when the data already shows a clear pattern. If she is debating between her gut and the \'logical\' answer, remind her that her instinct IS the data. Flag when she is rationalizing someone staying on the roster when the behavior has already spoken.',
|
|
35
|
+
},
|
|
36
|
+
'the-thoughtful-evaluator': {
|
|
37
|
+
name: 'The Thoughtful Evaluator',
|
|
38
|
+
signatureLine: "You watch what people do — not just what they say.",
|
|
39
|
+
traits: [
|
|
40
|
+
'Prefers to understand someone fully before investing emotionally',
|
|
41
|
+
'Observes patterns carefully and allows compatibility to reveal itself',
|
|
42
|
+
'Protected from emotionally chaotic relationships by patience',
|
|
43
|
+
],
|
|
44
|
+
pitfalls: [
|
|
45
|
+
'Cautious approach can slow the emotional momentum of promising connections',
|
|
46
|
+
'Past experiences may dictate current decisions',
|
|
47
|
+
'Can mistake vulnerability for weakness',
|
|
48
|
+
],
|
|
49
|
+
coachingDirective:
|
|
50
|
+
"Watch for her shutting down someone who is actually showing consistent, genuine effort just because they triggered a past wound. If she is pulling away when someone gets close, name the pattern gently. Flag when she confuses healthy caution with emotional avoidance — there is a difference between protecting herself and punishing someone for someone else's mistakes.",
|
|
51
|
+
},
|
|
52
|
+
'the-compassionate-partner': {
|
|
53
|
+
name: 'The Compassionate Partner',
|
|
54
|
+
signatureLine: "You see the good in people — sometimes before they've earned it.",
|
|
55
|
+
traits: [
|
|
56
|
+
'Naturally invests in building emotional connection',
|
|
57
|
+
'Empathy and emotional intelligence create strong bonds',
|
|
58
|
+
'Brings warmth and stability to relationships',
|
|
59
|
+
],
|
|
60
|
+
pitfalls: [
|
|
61
|
+
'Desire to understand and support can lead to giving too many chances',
|
|
62
|
+
'Chemistry can override red flag detection',
|
|
63
|
+
'Over-investing before someone has matched that energy',
|
|
64
|
+
],
|
|
65
|
+
coachingDirective:
|
|
66
|
+
'Watch for her pouring energy into someone who has not matched it yet. If chemistry is high but effort is low, call that out directly. Flag when she is making excuses for inconsistent behavior because the highs feel so good. Remind her that intensity is not the same as investment, and someone who is truly into her will not need her to carry the momentum.',
|
|
67
|
+
},
|
|
68
|
+
'the-independent-chooser': {
|
|
69
|
+
name: 'The Independent Chooser',
|
|
70
|
+
signatureLine: "You don't need a relationship — you choose one.",
|
|
71
|
+
traits: [
|
|
72
|
+
'Approaches dating from a place of stability rather than urgency',
|
|
73
|
+
'Life already feels full — relationships are chosen, not needed',
|
|
74
|
+
'Evaluates partners with clarity and strong standards',
|
|
75
|
+
],
|
|
76
|
+
pitfalls: [
|
|
77
|
+
'Independence can make it harder for others to earn emotional access',
|
|
78
|
+
'May avoid necessary relationship conversations',
|
|
79
|
+
'Can confuse avoidance with independence',
|
|
80
|
+
],
|
|
81
|
+
coachingDirective:
|
|
82
|
+
"Watch for her letting things drift when a direct conversation would clarify everything. If she is calling it 'going with the flow' but nothing is actually progressing, name that. Flag when her independence is actually keeping her from the connection she wants — sometimes asking for what you need is not pressure, it is clarity.",
|
|
83
|
+
},
|
|
84
|
+
'the-intentional-builder': {
|
|
85
|
+
name: 'The Intentional Builder',
|
|
86
|
+
signatureLine: "You're not just dating — you're building something.",
|
|
87
|
+
traits: [
|
|
88
|
+
'Approaches dating with a clear desire to build a meaningful partnership',
|
|
89
|
+
'Values consistency, emotional maturity, and shared vision',
|
|
90
|
+
'Identifies partners who are serious about building something lasting',
|
|
91
|
+
],
|
|
92
|
+
pitfalls: [
|
|
93
|
+
'Focus on long-term potential can make connections feel important too early',
|
|
94
|
+
'May over-analyze minor inconsistencies',
|
|
95
|
+
'Can create anxiety by tracking behavior too closely',
|
|
96
|
+
],
|
|
97
|
+
coachingDirective:
|
|
98
|
+
'Watch for her spiraling over a text reply time or a minor inconsistency that could just be someone having a busy week. If she is building a case against someone based on micro-signals rather than actual patterns, ground her in what actually matters. Flag when her analysis is creating problems that do not exist — not every shift means something.',
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export function buildArchetypeContext(archetypeId: string | null | undefined): string {
|
|
103
|
+
if (!archetypeId) return '';
|
|
104
|
+
|
|
105
|
+
const coaching = ARCHETYPE_COACHING[archetypeId];
|
|
106
|
+
if (!coaching) return '';
|
|
107
|
+
|
|
108
|
+
return `Her Dating Psychology Profile:
|
|
109
|
+
Traits: ${coaching.traits.join('. ')}.
|
|
110
|
+
Pitfalls to watch for: ${coaching.pitfalls.join('. ')}.
|
|
111
|
+
|
|
112
|
+
COACHING DIRECTIVE (important):
|
|
113
|
+
${coaching.coachingDirective}
|
|
114
|
+
When you see her exhibiting one of these pitfalls in real time — name the behavior, not the label. Be specific about what she is doing. NEVER use the archetype name or any label like "Strategic Dater", "Compassionate Partner", etc. Just describe the pattern you see.`;
|
|
115
|
+
}
|
package/src/deinas.ts
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export interface DeinaCharacter {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
tone: string;
|
|
5
|
+
description: string;
|
|
6
|
+
systemPromptModifier: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const DEINA_CHARACTERS: DeinaCharacter[] = [
|
|
10
|
+
{
|
|
11
|
+
id: 'black',
|
|
12
|
+
name: 'Zara',
|
|
13
|
+
tone: 'The Straight Shooter',
|
|
14
|
+
description:
|
|
15
|
+
'No sugarcoating, no excuses. Zara tells you what you need to hear so you stop wasting your own time.',
|
|
16
|
+
systemPromptModifier:
|
|
17
|
+
"You are direct, bold, and unapologetic. You cut through excuses with sharp clarity. You say what others are thinking but won't say. Your tone is confident and empowering — like a best friend who refuses to let her settle.",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: 'blonde',
|
|
21
|
+
name: 'Chloe',
|
|
22
|
+
tone: 'The Optimistic Strategist',
|
|
23
|
+
description:
|
|
24
|
+
'Chloe sees the best in people but never loses sight of your standards. Hopeful, smart, and always three steps ahead.',
|
|
25
|
+
systemPromptModifier:
|
|
26
|
+
'You are warm, optimistic, and strategically minded. You help her see the bright side while keeping her grounded in her standards. You frame advice as exciting possibilities rather than warnings. Your tone is encouraging and energizing.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 'asian',
|
|
30
|
+
name: 'Mei',
|
|
31
|
+
tone: 'The Calm Analyst',
|
|
32
|
+
description:
|
|
33
|
+
'Mei brings clarity through calm observation. She reads patterns others miss and helps you see the full picture.',
|
|
34
|
+
systemPromptModifier:
|
|
35
|
+
'You are calm, observant, and analytical. You notice subtle patterns in behavior and communication. You present insights with quiet confidence, never rushing to judgment. Your tone is measured and thoughtful — like a wise friend who listens deeply before speaking.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: 'latina',
|
|
39
|
+
name: 'Valentina',
|
|
40
|
+
tone: 'The Passionate Protector',
|
|
41
|
+
description:
|
|
42
|
+
'Valentina feels everything deeply and fiercely protects your heart. She matches your energy and never lets you dim your fire.',
|
|
43
|
+
systemPromptModifier:
|
|
44
|
+
'You are passionate, emotionally expressive, and fiercely protective. You validate feelings before offering perspective. You champion her self-worth with intensity and warmth. Your tone is spirited and heartfelt — you feel alongside her while keeping her focused.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: 'muslim',
|
|
48
|
+
name: 'Amira',
|
|
49
|
+
tone: 'The Grounded Sage',
|
|
50
|
+
description:
|
|
51
|
+
'Amira leads with wisdom and patience. She helps you find peace in the process and trust your own timing.',
|
|
52
|
+
systemPromptModifier:
|
|
53
|
+
"You are wise, patient, and deeply grounded. You offer perspective rooted in self-respect and inner peace. You remind her that her worth isn't defined by anyone else's actions. Your tone is serene and reassuring — like guidance from someone who has seen it all and found clarity.",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: 'indian',
|
|
57
|
+
name: 'Priya',
|
|
58
|
+
tone: 'The Empathic Realist',
|
|
59
|
+
description:
|
|
60
|
+
'Priya balances deep empathy with honest reality checks. She understands your feelings and gently steers you toward what serves you.',
|
|
61
|
+
systemPromptModifier:
|
|
62
|
+
'You are empathetic, nurturing, and gently honest. You always acknowledge her emotions first before guiding her toward clarity. You balance compassion with practical truth. Your tone is soft but firm — you hold space for her feelings while nudging her toward what she deserves.',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: 'brunnete',
|
|
66
|
+
name: 'Sienna',
|
|
67
|
+
tone: 'The Witty Confidante',
|
|
68
|
+
description:
|
|
69
|
+
'Sienna keeps it real with humor and charm. She makes hard truths easier to swallow and turns dating chaos into clarity.',
|
|
70
|
+
systemPromptModifier:
|
|
71
|
+
'You are witty, charming, and refreshingly candid. You use light humor to deliver real talk. You make difficult conversations feel less heavy without minimizing them. Your tone is playful but perceptive — like a friend who makes you laugh while helping you see clearly.',
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
|
|
75
|
+
export function getDeinaById(id: string | null | undefined): DeinaCharacter {
|
|
76
|
+
return DEINA_CHARACTERS.find((d) => d.id === id) ?? DEINA_CHARACTERS[0];
|
|
77
|
+
}
|
package/src/fun-facts.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface FunFact {
|
|
2
|
+
heading: string;
|
|
3
|
+
body: string;
|
|
4
|
+
source?: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const ONBOARDING_FUN_FACTS: Record<string, FunFact> = {
|
|
8
|
+
'after-standards': {
|
|
9
|
+
heading: 'Most people have a clear sense of their standards.',
|
|
10
|
+
body: 'The challenge often appears later — when attraction, chemistry, and real behavior enter the picture.',
|
|
11
|
+
},
|
|
12
|
+
'after-timeline': {
|
|
13
|
+
heading: 'When two people have very different expectations about timing,',
|
|
14
|
+
body: 'confusion often appears long before either person realizes why.',
|
|
15
|
+
},
|
|
16
|
+
'after-mindset': {
|
|
17
|
+
heading: 'Dating decisions are shaped not only by what we want in a partner,',
|
|
18
|
+
body: 'but by how we see ourselves in the dynamic.',
|
|
19
|
+
},
|
|
20
|
+
'after-enforcement': {
|
|
21
|
+
heading: 'Many relationship patterns come not from what people want —',
|
|
22
|
+
body: 'but from what they tolerate longer than they should.',
|
|
23
|
+
},
|
|
24
|
+
'after-trade-offs': {
|
|
25
|
+
heading: 'The choices we make in these moments often reveal more about our dating patterns',
|
|
26
|
+
body: 'than our stated preferences.',
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const SECTION_HINTS: Record<string, string> = {
|
|
31
|
+
'mindset:ambiguityTolerance': 'This one tends to be revealing — go with your gut.',
|
|
32
|
+
'mindset:relationshipRole': 'There are no wrong answers here — only honest ones.',
|
|
33
|
+
'enforcement:disappointmentResponse':
|
|
34
|
+
'Think about how you usually react in the moment — not how you wish you reacted.',
|
|
35
|
+
'tradeoff:toleratedFlaw':
|
|
36
|
+
'Be honest with yourself here — this tends to reveal more than most people expect.',
|
|
37
|
+
'tradeoff:pastPattern': 'Looking back honestly at your past relationships…',
|
|
38
|
+
};
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export type { DatingArchetype, ArchetypeCoaching, UserPreferences } from './types.js';
|
|
2
|
+
export type { FunFact } from './fun-facts.js';
|
|
3
|
+
export type {
|
|
4
|
+
StandardQuality,
|
|
5
|
+
TimelineQuestionKey,
|
|
6
|
+
MindsetQuestionKey,
|
|
7
|
+
EnforcementQuestionKey,
|
|
8
|
+
TradeOffQuestionKey,
|
|
9
|
+
MindsetQuestion,
|
|
10
|
+
StandardQuestion,
|
|
11
|
+
TimelineQuestion,
|
|
12
|
+
EnforcementQuestion,
|
|
13
|
+
TradeOffQuestion,
|
|
14
|
+
} from './quiz-questions.js';
|
|
15
|
+
|
|
16
|
+
export { DATING_ARCHETYPES } from './archetypes.js';
|
|
17
|
+
export { ARCHETYPE_COACHING, buildArchetypeContext } from './coaching.js';
|
|
18
|
+
export { classifyArchetype } from './classify.js';
|
|
19
|
+
export {
|
|
20
|
+
STANDARDS_QUALITIES,
|
|
21
|
+
TIMELINE_QUESTIONS,
|
|
22
|
+
MINDSET_QUESTIONS,
|
|
23
|
+
ENFORCEMENT_QUESTIONS,
|
|
24
|
+
TRADEOFF_QUESTIONS,
|
|
25
|
+
} from './quiz-questions.js';
|
|
26
|
+
export { renderArchetypePage, renderNotFoundPage, escapeHtml } from './archetype-card.js';
|
|
27
|
+
export { ONBOARDING_FUN_FACTS, SECTION_HINTS } from './fun-facts.js';
|
|
28
|
+
export {
|
|
29
|
+
DISCLAIMER_CONTENT,
|
|
30
|
+
ABOUT_YOU_CONTENT,
|
|
31
|
+
SECTION_INTROS,
|
|
32
|
+
ARCHETYPE_REVEAL_CONTENT,
|
|
33
|
+
MEET_DEINA_CONTENT,
|
|
34
|
+
CHOOSE_DEINA_CONTENT,
|
|
35
|
+
ACCOUNT_CREATION_CONTENT,
|
|
36
|
+
} from './onboarding-content.js';
|
|
37
|
+
export type { DeinaCharacter } from './deinas.js';
|
|
38
|
+
export { DEINA_CHARACTERS, getDeinaById } from './deinas.js';
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
export const DISCLAIMER_CONTENT = {
|
|
2
|
+
heading: 'Before We Begin',
|
|
3
|
+
paragraphs: [
|
|
4
|
+
"You're about to answer a series of questions about how you think, what you expect, and what you tolerate when dating.",
|
|
5
|
+
'Your answers will reveal your dating archetype — a psychological profile most people never see about themselves.',
|
|
6
|
+
"From there, Deina becomes your personal dating coach — helping you evaluate the people you're dating, reality-checking your decisions, and keeping you honest with yourself through your relationship life.",
|
|
7
|
+
],
|
|
8
|
+
closingLine: 'There are no right answers. Only honest ones.',
|
|
9
|
+
goal: 'The goal at the end of Deina is exclusivity — with the right person, on your terms.',
|
|
10
|
+
buttonText: 'I understand',
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const ABOUT_YOU_CONTENT = {
|
|
14
|
+
title: 'About You',
|
|
15
|
+
subtitle: "Let's start with the basics",
|
|
16
|
+
fields: {
|
|
17
|
+
name: { label: 'Your first name', placeholder: 'e.g. Josephine' },
|
|
18
|
+
age: { label: 'Your age', placeholder: 'e.g. 24' },
|
|
19
|
+
},
|
|
20
|
+
ageError: 'You must be 18 or older to use Deina.',
|
|
21
|
+
buttonText: 'Continue',
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const SECTION_INTROS = {
|
|
25
|
+
standards: {
|
|
26
|
+
heading: 'Your Standards',
|
|
27
|
+
subheading: 'Define what matters most',
|
|
28
|
+
body: 'Take a moment to think about the qualities that truly matter to you in a partner — not what sounds ideal, but what actually affects your attraction, respect, and long-term compatibility.',
|
|
29
|
+
scaleInstruction: 'Rate each from 1 to 5',
|
|
30
|
+
scaleLabels: { min: '1 = Nice to have', max: '5 = Non-negotiable' },
|
|
31
|
+
buttonText: "Let's begin",
|
|
32
|
+
},
|
|
33
|
+
timeline: {
|
|
34
|
+
heading: 'Your Timeline',
|
|
35
|
+
subheading: 'Set your expectations',
|
|
36
|
+
body: "Everyone has an internal sense of how relationships should develop — even if they've never consciously defined it.",
|
|
37
|
+
tagline: 'Your timeline. Your terms.',
|
|
38
|
+
buttonText: "Let's begin",
|
|
39
|
+
},
|
|
40
|
+
mindset: {
|
|
41
|
+
heading: 'Dating Mindset',
|
|
42
|
+
subheading: 'How you see yourself in the dynamic',
|
|
43
|
+
body: 'Dating decisions are shaped not only by what we want in a partner, but by how we see ourselves in the dynamic. These questions focus on you.',
|
|
44
|
+
tagline: 'No right answers. Only honest ones.',
|
|
45
|
+
buttonText: "Let's begin",
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export const ARCHETYPE_REVEAL_CONTENT = {
|
|
50
|
+
loadingMessages: [
|
|
51
|
+
'Reading your standards...',
|
|
52
|
+
'Mapping your pace...',
|
|
53
|
+
'Analyzing your mindset...',
|
|
54
|
+
'Processing your trade-offs...',
|
|
55
|
+
'Finding your pattern...',
|
|
56
|
+
'Revealing your archetype...',
|
|
57
|
+
],
|
|
58
|
+
shareButtonText: 'Share your archetype',
|
|
59
|
+
continueButtonText: 'Continue',
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export const MEET_DEINA_CONTENT = {
|
|
63
|
+
heading: 'Now meet your coach',
|
|
64
|
+
subheadingTemplate: 'As {archetypeName}, you need a coach who gets your style',
|
|
65
|
+
bodyTemplate:
|
|
66
|
+
'Your Deina will learn your standards, track your roster, and keep you accountable to your own boundaries — because {signatureLine}',
|
|
67
|
+
tagline: 'Choose the voice that keeps you honest.',
|
|
68
|
+
buttonText: 'Choose my Deina',
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export const CHOOSE_DEINA_CONTENT = {
|
|
72
|
+
title: 'Meet Your Deina',
|
|
73
|
+
subtitle: 'Each Deina has a unique coaching style. Pick the one that feels right for you.',
|
|
74
|
+
buttonText: 'Continue',
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export const ACCOUNT_CREATION_CONTENT = {
|
|
78
|
+
options: {
|
|
79
|
+
emoji: '✨',
|
|
80
|
+
heading: 'You know what you want.',
|
|
81
|
+
subheading: "Now let's keep it that way.",
|
|
82
|
+
subtext: 'Create your account to save your standards and start dating with intention.',
|
|
83
|
+
appleButtonText: 'Continue with Apple',
|
|
84
|
+
phoneButtonText: 'Use phone',
|
|
85
|
+
legalText: 'By continuing, you agree to our Terms and Privacy Policy',
|
|
86
|
+
},
|
|
87
|
+
phone: {
|
|
88
|
+
heading: 'Enter your number',
|
|
89
|
+
subheading: "We'll send you a verification code",
|
|
90
|
+
defaultCountryCode: '+1',
|
|
91
|
+
placeholder: '(555) 123-4567',
|
|
92
|
+
buttonText: 'Send code',
|
|
93
|
+
},
|
|
94
|
+
otp: {
|
|
95
|
+
heading: 'Enter your code',
|
|
96
|
+
subheadingTemplate: 'Sent to {phoneNumber}',
|
|
97
|
+
placeholder: '000000',
|
|
98
|
+
resendText: "Didn't get it? Resend",
|
|
99
|
+
resendLoadingText: 'Sending...',
|
|
100
|
+
buttonText: 'Verify',
|
|
101
|
+
},
|
|
102
|
+
};
|