@deina-labs/deina-core 1.0.0 → 1.1.1
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/LICENSE +21 -0
- package/README.md +15 -4
- package/dist/onboarding-content.d.ts +21 -0
- package/dist/onboarding-content.d.ts.map +1 -1
- package/dist/onboarding-content.js +26 -5
- package/dist/onboarding-content.js.map +1 -1
- package/package.json +2 -2
- package/src/onboarding-content.ts +26 -5
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Deina Lab, Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -6,7 +6,13 @@ Shared dating archetype logic, quiz data, onboarding content, and coaching chara
|
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
9
|
-
### Option 1:
|
|
9
|
+
### Option 1: npm (recommended)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
yarn add @deina-labs/deina-core
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Option 2: GitHub dependency
|
|
10
16
|
|
|
11
17
|
In your consuming project's `package.json`:
|
|
12
18
|
|
|
@@ -24,7 +30,8 @@ Then run:
|
|
|
24
30
|
yarn install
|
|
25
31
|
```
|
|
26
32
|
|
|
27
|
-
### Option
|
|
33
|
+
### Option 3: Local development (linking)
|
|
34
|
+
|
|
28
35
|
|
|
29
36
|
If you're working on `deina-core` alongside another project locally:
|
|
30
37
|
|
|
@@ -37,7 +44,7 @@ yarn build
|
|
|
37
44
|
yarn add link:../deina-core
|
|
38
45
|
```
|
|
39
46
|
|
|
40
|
-
### Option
|
|
47
|
+
### Option 4: Supabase Edge Functions (Deno)
|
|
41
48
|
|
|
42
49
|
```ts
|
|
43
50
|
import { classifyArchetype, DATING_ARCHETYPES } from 'npm:@deina-labs/deina-core';
|
|
@@ -64,7 +71,7 @@ This compiles `src/` to `dist/` with type declarations.
|
|
|
64
71
|
| `classify.ts` | `classifyArchetype()` — weighted scoring across all 5 quiz sections |
|
|
65
72
|
| `quiz-questions.ts` | `STANDARDS_QUALITIES`, `TIMELINE_QUESTIONS`, `MINDSET_QUESTIONS`, `ENFORCEMENT_QUESTIONS`, `TRADEOFF_QUESTIONS` |
|
|
66
73
|
| `fun-facts.ts` | `ONBOARDING_FUN_FACTS`, `SECTION_HINTS` — transition screen content |
|
|
67
|
-
| `onboarding-content.ts` | `DISCLAIMER_CONTENT`, `ABOUT_YOU_CONTENT`, `SECTION_INTROS
|
|
74
|
+
| `onboarding-content.ts` | `DISCLAIMER_CONTENT`, `ABOUT_YOU_CONTENT`, `SECTION_INTROS` (standards, timeline, mindset, tradeoffs, enforcement, players), `ARCHETYPE_REVEAL_CONTENT`, `MEET_DEINA_CONTENT`, `CHOOSE_DEINA_CONTENT`, `ACCOUNT_CREATION_CONTENT` |
|
|
68
75
|
| `deinas.ts` | `DEINA_CHARACTERS`, `getDeinaById()` — 7 coaching characters |
|
|
69
76
|
| `archetype-card.ts` | `renderArchetypePage()`, `renderNotFoundPage()` — HTML share card renderer |
|
|
70
77
|
|
|
@@ -152,3 +159,7 @@ Edge Functions ──┘
|
|
|
152
159
|
```
|
|
153
160
|
|
|
154
161
|
All quiz logic, archetype data, coaching content, and onboarding copy lives here. Consumer apps only handle UI rendering and platform-specific concerns.
|
|
162
|
+
|
|
163
|
+
## License
|
|
164
|
+
|
|
165
|
+
[MIT](LICENSE)
|
|
@@ -47,6 +47,27 @@ export declare const SECTION_INTROS: {
|
|
|
47
47
|
tagline: string;
|
|
48
48
|
buttonText: string;
|
|
49
49
|
};
|
|
50
|
+
tradeoffs: {
|
|
51
|
+
heading: string;
|
|
52
|
+
subheading: string;
|
|
53
|
+
body: string;
|
|
54
|
+
tagline: string;
|
|
55
|
+
buttonText: string;
|
|
56
|
+
};
|
|
57
|
+
enforcement: {
|
|
58
|
+
heading: string;
|
|
59
|
+
subheading: string;
|
|
60
|
+
body: string;
|
|
61
|
+
tagline: string;
|
|
62
|
+
buttonText: string;
|
|
63
|
+
};
|
|
64
|
+
players: {
|
|
65
|
+
heading: string;
|
|
66
|
+
subheading: string;
|
|
67
|
+
body: string;
|
|
68
|
+
tagline: string;
|
|
69
|
+
buttonText: string;
|
|
70
|
+
};
|
|
50
71
|
};
|
|
51
72
|
export declare const ARCHETYPE_REVEAL_CONTENT: {
|
|
52
73
|
loadingMessages: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-content.d.ts","sourceRoot":"","sources":["../src/onboarding-content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;;;CAU9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;CAS7B,CAAC;AAEF,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"onboarding-content.d.ts","sourceRoot":"","sources":["../src/onboarding-content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;;;CAU9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;CAS7B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C1B,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;CAWpC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;CAO9B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;CAIhC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;CAyBpC,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export const DISCLAIMER_CONTENT = {
|
|
2
2
|
heading: 'Before We Begin',
|
|
3
3
|
paragraphs: [
|
|
4
|
-
"
|
|
5
|
-
|
|
6
|
-
"
|
|
4
|
+
"Most people think they're the good one in their relationships.",
|
|
5
|
+
"But the patterns you repeat, the things you tolerate, the way you react when it gets hard — those tell a different story.",
|
|
6
|
+
"You're about to find out which one you are.",
|
|
7
7
|
],
|
|
8
|
-
closingLine: '
|
|
9
|
-
goal: '
|
|
8
|
+
closingLine: 'Just be honest with yourself.',
|
|
9
|
+
goal: '',
|
|
10
10
|
buttonText: 'I understand',
|
|
11
11
|
};
|
|
12
12
|
export const ABOUT_YOU_CONTENT = {
|
|
@@ -42,6 +42,27 @@ export const SECTION_INTROS = {
|
|
|
42
42
|
tagline: 'No right answers. Only honest ones.',
|
|
43
43
|
buttonText: "Let's begin",
|
|
44
44
|
},
|
|
45
|
+
tradeoffs: {
|
|
46
|
+
heading: 'Trade-Offs',
|
|
47
|
+
subheading: 'What you choose when forced to choose',
|
|
48
|
+
body: 'In real relationships, you rarely get everything at once. These questions explore what you naturally prioritize when trade-offs appear.',
|
|
49
|
+
tagline: 'No right answers. Only honest ones.',
|
|
50
|
+
buttonText: "Let's begin",
|
|
51
|
+
},
|
|
52
|
+
enforcement: {
|
|
53
|
+
heading: 'Boundaries',
|
|
54
|
+
subheading: 'How you protect your peace',
|
|
55
|
+
body: "Standards only matter if they're enforced. Think about how you usually respond when someone's behavior doesn't meet your expectations.",
|
|
56
|
+
tagline: 'Standards mean nothing without boundaries.',
|
|
57
|
+
buttonText: "Let's begin",
|
|
58
|
+
},
|
|
59
|
+
players: {
|
|
60
|
+
heading: 'Your Roster',
|
|
61
|
+
subheading: 'Add the people you\'re dating',
|
|
62
|
+
body: "Add the people you're currently talking to or dating. For each one, you'll set their status, timeline, and rate them against your standards.",
|
|
63
|
+
tagline: 'You can always add more later.',
|
|
64
|
+
buttonText: "Let's begin",
|
|
65
|
+
},
|
|
45
66
|
};
|
|
46
67
|
export const ARCHETYPE_REVEAL_CONTENT = {
|
|
47
68
|
loadingMessages: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-content.js","sourceRoot":"","sources":["../src/onboarding-content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,iBAAiB;IAC1B,UAAU,EAAE;QACV,
|
|
1
|
+
{"version":3,"file":"onboarding-content.js","sourceRoot":"","sources":["../src/onboarding-content.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deina-labs/deina-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Shared dating archetype logic for Deina — used by mobile, web app and edge functions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
|
-
"license": "
|
|
32
|
+
"license": "MIT"
|
|
33
33
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export const DISCLAIMER_CONTENT = {
|
|
2
2
|
heading: 'Before We Begin',
|
|
3
3
|
paragraphs: [
|
|
4
|
-
"
|
|
5
|
-
|
|
6
|
-
"
|
|
4
|
+
"Most people think they're the good one in their relationships.",
|
|
5
|
+
"But the patterns you repeat, the things you tolerate, the way you react when it gets hard — those tell a different story.",
|
|
6
|
+
"You're about to find out which one you are.",
|
|
7
7
|
],
|
|
8
|
-
closingLine: '
|
|
9
|
-
goal: '
|
|
8
|
+
closingLine: 'Just be honest with yourself.',
|
|
9
|
+
goal: '',
|
|
10
10
|
buttonText: 'I understand',
|
|
11
11
|
};
|
|
12
12
|
|
|
@@ -44,6 +44,27 @@ export const SECTION_INTROS = {
|
|
|
44
44
|
tagline: 'No right answers. Only honest ones.',
|
|
45
45
|
buttonText: "Let's begin",
|
|
46
46
|
},
|
|
47
|
+
tradeoffs: {
|
|
48
|
+
heading: 'Trade-Offs',
|
|
49
|
+
subheading: 'What you choose when forced to choose',
|
|
50
|
+
body: 'In real relationships, you rarely get everything at once. These questions explore what you naturally prioritize when trade-offs appear.',
|
|
51
|
+
tagline: 'No right answers. Only honest ones.',
|
|
52
|
+
buttonText: "Let's begin",
|
|
53
|
+
},
|
|
54
|
+
enforcement: {
|
|
55
|
+
heading: 'Boundaries',
|
|
56
|
+
subheading: 'How you protect your peace',
|
|
57
|
+
body: "Standards only matter if they're enforced. Think about how you usually respond when someone's behavior doesn't meet your expectations.",
|
|
58
|
+
tagline: 'Standards mean nothing without boundaries.',
|
|
59
|
+
buttonText: "Let's begin",
|
|
60
|
+
},
|
|
61
|
+
players: {
|
|
62
|
+
heading: 'Your Roster',
|
|
63
|
+
subheading: 'Add the people you\'re dating',
|
|
64
|
+
body: "Add the people you're currently talking to or dating. For each one, you'll set their status, timeline, and rate them against your standards.",
|
|
65
|
+
tagline: 'You can always add more later.',
|
|
66
|
+
buttonText: "Let's begin",
|
|
67
|
+
},
|
|
47
68
|
};
|
|
48
69
|
|
|
49
70
|
export const ARCHETYPE_REVEAL_CONTENT = {
|