@akin-travel/partner-sdk 1.0.5 → 1.0.6
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 +113 -28
- package/dist/i18n/translations/en.json +33 -14
- package/dist/i18n/translations/es.json +31 -12
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/loyalty/AkinLoyaltyProvider.d.ts.map +1 -1
- package/dist/loyalty/AkinLoyaltyProvider.js +173 -92
- package/dist/loyalty/AkinLoyaltyProvider.js.map +1 -1
- package/dist/loyalty/components/LoyaltyCard.d.ts +2 -23
- package/dist/loyalty/components/LoyaltyCard.d.ts.map +1 -1
- package/dist/loyalty/components/LoyaltyCard.js +33 -66
- package/dist/loyalty/components/LoyaltyCard.js.map +1 -1
- package/dist/loyalty/components/TierBenefits.d.ts +48 -0
- package/dist/loyalty/components/TierBenefits.d.ts.map +1 -0
- package/dist/loyalty/components/TierBenefits.js +78 -0
- package/dist/loyalty/components/TierBenefits.js.map +1 -0
- package/dist/loyalty/index.d.ts +2 -1
- package/dist/loyalty/index.d.ts.map +1 -1
- package/dist/loyalty/index.js +3 -1
- package/dist/loyalty/index.js.map +1 -1
- package/dist/types/auth.d.ts +2 -0
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/loyalty.d.ts +77 -2
- package/dist/types/loyalty.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -479,27 +479,41 @@ Display tier cards with requirements. Great for tier overview sections.
|
|
|
479
479
|
```tsx
|
|
480
480
|
import { SimpleTierCards } from '@akin-online/partner-sdk';
|
|
481
481
|
|
|
482
|
-
<SimpleTierCards partnerName="
|
|
482
|
+
<SimpleTierCards partnerName="Viajero">
|
|
483
483
|
{({ tierConfigs, formatRequirement, getTextColor, isLoading }) => (
|
|
484
|
-
<div
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
484
|
+
<div>
|
|
485
|
+
<h2 className="text-2xl font-bold text-center mb-6">Viajero GO Tiers</h2>
|
|
486
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 items-stretch">
|
|
487
|
+
{tierConfigs.map((tier, index) => {
|
|
488
|
+
const bgColor = tier.tierColor || '#382108';
|
|
489
|
+
const textColor = getTextColor(bgColor);
|
|
490
|
+
return (
|
|
491
|
+
<div
|
|
492
|
+
key={tier.id}
|
|
493
|
+
style={{ backgroundColor: bgColor, color: textColor }}
|
|
494
|
+
className="p-5 rounded-xl flex flex-col h-full"
|
|
495
|
+
>
|
|
496
|
+
{/* Tier icon */}
|
|
497
|
+
{tier.tierIcon && (
|
|
498
|
+
<div className="w-10 h-10 mb-3 rounded-full bg-white/20 flex items-center justify-center">
|
|
499
|
+
<img src={tier.tierIcon} alt="" className="w-6 h-6" />
|
|
500
|
+
</div>
|
|
501
|
+
)}
|
|
502
|
+
{/* Tier name */}
|
|
503
|
+
<h3 className="text-2xl font-bold">{tier.displayName}</h3>
|
|
504
|
+
<span className="text-sm opacity-70 mb-3">Tier {index + 1}</span>
|
|
505
|
+
{/* Requirements */}
|
|
506
|
+
<div className="mt-auto pt-3 border-t border-current/20 space-y-1">
|
|
507
|
+
{tier.requirements?.filter(r => r.active).map(req => (
|
|
508
|
+
<p key={req.id} className="text-xs opacity-80">
|
|
509
|
+
{formatRequirement(req)}
|
|
510
|
+
</p>
|
|
511
|
+
))}
|
|
512
|
+
</div>
|
|
513
|
+
</div>
|
|
514
|
+
);
|
|
515
|
+
})}
|
|
516
|
+
</div>
|
|
503
517
|
</div>
|
|
504
518
|
)}
|
|
505
519
|
</SimpleTierCards>
|
|
@@ -511,6 +525,76 @@ import { SimpleTierCards } from '@akin-online/partner-sdk';
|
|
|
511
525
|
- `getTextColor(bgColor)` - Get contrasting text color for background
|
|
512
526
|
- `isLoading` - Loading state
|
|
513
527
|
|
|
528
|
+
#### TierBenefits
|
|
529
|
+
|
|
530
|
+
Display rewards/benefits available at each tier. Fetched automatically via the loyalty provider.
|
|
531
|
+
|
|
532
|
+
```tsx
|
|
533
|
+
import { TierBenefits } from '@akin-online/partner-sdk';
|
|
534
|
+
|
|
535
|
+
<TierBenefits>
|
|
536
|
+
{({ tierBenefits, getTierConfig, getTextColor, isLoading }) => (
|
|
537
|
+
<div>
|
|
538
|
+
<h2 className="text-2xl font-bold text-center mb-6">Tier Benefits</h2>
|
|
539
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 items-stretch">
|
|
540
|
+
{tierBenefits.map((benefit) => {
|
|
541
|
+
const config = getTierConfig(benefit.tierName);
|
|
542
|
+
const bgColor = config?.tierColor || '#382108';
|
|
543
|
+
const textColor = config?.tierTextColor || getTextColor(bgColor);
|
|
544
|
+
return (
|
|
545
|
+
<div
|
|
546
|
+
key={benefit.tierName}
|
|
547
|
+
style={{ backgroundColor: bgColor, color: textColor }}
|
|
548
|
+
className="p-5 rounded-xl flex flex-col h-full"
|
|
549
|
+
>
|
|
550
|
+
<h3 className="text-xl font-bold mb-2">{config?.displayName}</h3>
|
|
551
|
+
<div className="w-full h-px mb-3 opacity-30 bg-current" />
|
|
552
|
+
{benefit.groups?.some(g => g.scope === 'PROPERTY') ? (
|
|
553
|
+
/* Grouped by property */
|
|
554
|
+
<div className="space-y-3 flex-1">
|
|
555
|
+
{benefit.groups.map((group) => (
|
|
556
|
+
<div key={group.scope === 'ALL_PROPERTIES' ? 'all' : group.propertyId}>
|
|
557
|
+
<h4 className="text-xs font-semibold uppercase tracking-wide mb-1 opacity-70">
|
|
558
|
+
{group.scope === 'ALL_PROPERTIES' ? 'All Properties' : group.propertyName}
|
|
559
|
+
</h4>
|
|
560
|
+
<ul className="space-y-1">
|
|
561
|
+
{group.rewardNames.map((name, i) => (
|
|
562
|
+
<li key={i} className="text-sm flex items-start gap-2">
|
|
563
|
+
<span className="mt-0.5">✓</span>
|
|
564
|
+
<span>{name}</span>
|
|
565
|
+
</li>
|
|
566
|
+
))}
|
|
567
|
+
</ul>
|
|
568
|
+
</div>
|
|
569
|
+
))}
|
|
570
|
+
</div>
|
|
571
|
+
) : (
|
|
572
|
+
/* Flat list */
|
|
573
|
+
<ul className="space-y-1.5 flex-1">
|
|
574
|
+
{benefit.rewardNames.map((name, i) => (
|
|
575
|
+
<li key={i} className="text-sm flex items-start gap-2">
|
|
576
|
+
<span className="mt-0.5">✓</span>
|
|
577
|
+
<span>{name}</span>
|
|
578
|
+
</li>
|
|
579
|
+
))}
|
|
580
|
+
</ul>
|
|
581
|
+
)}
|
|
582
|
+
</div>
|
|
583
|
+
);
|
|
584
|
+
})}
|
|
585
|
+
</div>
|
|
586
|
+
</div>
|
|
587
|
+
)}
|
|
588
|
+
</TierBenefits>
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
**Render Props:**
|
|
592
|
+
- `tierBenefits` - Tier benefits sorted by display order, each with `tierName`, `rewardNames`, and optional `groups`
|
|
593
|
+
- `tierConfigs` - Tier configs sorted by display order (for colors/names)
|
|
594
|
+
- `getTierConfig(tierName)` - Get tier config for a given tier name
|
|
595
|
+
- `getTextColor(bgColor)` - Get contrasting text color for background
|
|
596
|
+
- `isLoading` - Loading state
|
|
597
|
+
|
|
514
598
|
## Tier Label Utilities
|
|
515
599
|
|
|
516
600
|
Centralized labels for tier requirement keys.
|
|
@@ -1120,18 +1204,18 @@ export default function RewardsPage() {
|
|
|
1120
1204
|
|
|
1121
1205
|
### Viajero Demo
|
|
1122
1206
|
|
|
1123
|
-
A complete example implementation is available in the monorepo at `
|
|
1207
|
+
A complete example implementation is available in the monorepo at `examples/viajero/`. This demonstrates a partner rewards site using the SDK with:
|
|
1124
1208
|
|
|
1125
1209
|
- Login page with passkey and magic link authentication
|
|
1126
1210
|
- Signup form with passwordless registration
|
|
1127
|
-
- Rewards dashboard with tier
|
|
1128
|
-
- Full Tailwind CSS styling
|
|
1211
|
+
- Rewards dashboard with loyalty card, tier cards, tier benefits, upcoming stays, and activity statement
|
|
1212
|
+
- Full Tailwind CSS styling with shadcn/ui components
|
|
1129
1213
|
|
|
1130
1214
|
**Running the demo:**
|
|
1131
1215
|
|
|
1132
1216
|
```bash
|
|
1133
1217
|
# From monorepo root
|
|
1134
|
-
cd
|
|
1218
|
+
cd examples/viajero
|
|
1135
1219
|
npm install
|
|
1136
1220
|
npm run dev
|
|
1137
1221
|
```
|
|
@@ -1146,9 +1230,10 @@ viajero/
|
|
|
1146
1230
|
│ ├── page.tsx # Landing page
|
|
1147
1231
|
│ ├── login/ # Login with passkey/magic link
|
|
1148
1232
|
│ ├── signup/ # Passwordless signup
|
|
1149
|
-
│ ├──
|
|
1233
|
+
│ ├── account/ # Authenticated rewards dashboard
|
|
1234
|
+
│ ├── settings/ # Account settings
|
|
1150
1235
|
│ └── auth/verify/ # Magic link verification
|
|
1151
|
-
├── components/ #
|
|
1236
|
+
├── components/ # shadcn/ui components
|
|
1152
1237
|
└── .env.local.example # Environment variables template
|
|
1153
1238
|
```
|
|
1154
1239
|
|
|
@@ -1159,7 +1244,7 @@ When developing the SDK itself, the demo uses a file reference to the local pack
|
|
|
1159
1244
|
```json
|
|
1160
1245
|
{
|
|
1161
1246
|
"dependencies": {
|
|
1162
|
-
"@akin-
|
|
1247
|
+
"@akin-travel/partner-sdk": "file:../../packages/partner-sdk"
|
|
1163
1248
|
}
|
|
1164
1249
|
}
|
|
1165
1250
|
```
|
|
@@ -1169,7 +1254,7 @@ After making changes to the SDK, rebuild and restart the demo:
|
|
|
1169
1254
|
```bash
|
|
1170
1255
|
# From monorepo root
|
|
1171
1256
|
npm run build -w @akin-online/partner-sdk
|
|
1172
|
-
cd
|
|
1257
|
+
cd examples/viajero && npm run dev
|
|
1173
1258
|
```
|
|
1174
1259
|
|
|
1175
1260
|
## Troubleshooting
|
|
@@ -5,13 +5,7 @@
|
|
|
5
5
|
"viewRewards": "View Your Rewards",
|
|
6
6
|
"title": "Viajero Loyalty Program",
|
|
7
7
|
"subtitle": "Earn points with every stay. Unlock perks, free nights, and exclusive experiences.",
|
|
8
|
-
"joinNow": "Join Now - Free"
|
|
9
|
-
"earnPoints": "Earn Points",
|
|
10
|
-
"earnPointsDesc": "10 points per $1 spent at any Viajero hostel",
|
|
11
|
-
"unlockPerks": "Unlock Perks",
|
|
12
|
-
"unlockPerksDesc": "Free breakfast, late checkout, room upgrades",
|
|
13
|
-
"levelUp": "Level Up",
|
|
14
|
-
"levelUpDesc": "4 tiers with increasing benefits"
|
|
8
|
+
"joinNow": "Join Now - Free"
|
|
15
9
|
},
|
|
16
10
|
"login": {
|
|
17
11
|
"subtitle": "Sign in to access your rewards"
|
|
@@ -129,6 +123,7 @@
|
|
|
129
123
|
"addStay": "Add a stay",
|
|
130
124
|
"referFriend": "Refer a friend",
|
|
131
125
|
"setPreferences": "Set preferences",
|
|
126
|
+
"editPreferences": "Edit preferences",
|
|
132
127
|
"thisMembershipYear": "This membership year",
|
|
133
128
|
"lifetime": "Lifetime",
|
|
134
129
|
"by": "By:",
|
|
@@ -144,12 +139,18 @@
|
|
|
144
139
|
"invitationOnly": "By invitation only"
|
|
145
140
|
},
|
|
146
141
|
"tierCards": {
|
|
147
|
-
"title": "
|
|
142
|
+
"title": "Viajero GO Tiers",
|
|
148
143
|
"subtitle": "Your journey through our loyalty tiers",
|
|
149
144
|
"perksAvailable": "{count} perks available",
|
|
150
145
|
"rewardsPerStay": "rewards per stay",
|
|
151
146
|
"invitationOnly": "By invitation only"
|
|
152
147
|
},
|
|
148
|
+
"tierBenefits": {
|
|
149
|
+
"title": "Tier Benefits",
|
|
150
|
+
"subtitle": "Your benefits include everything at your current tier and lower tiers",
|
|
151
|
+
"allProperties": "All Properties",
|
|
152
|
+
"empty": "Benefits will appear here as they become available"
|
|
153
|
+
},
|
|
153
154
|
"upcomingStays": {
|
|
154
155
|
"title": "Upcoming Stays",
|
|
155
156
|
"empty": "No upcoming stays. Book your next adventure!",
|
|
@@ -174,13 +175,21 @@
|
|
|
174
175
|
"property": "Property",
|
|
175
176
|
"date": "Date",
|
|
176
177
|
"type": "Type",
|
|
178
|
+
"description": "Description",
|
|
177
179
|
"nights": "Nights",
|
|
178
180
|
"points": "Points",
|
|
181
|
+
"akinPoints": "AKIN Points",
|
|
179
182
|
"earned": "Earned",
|
|
180
183
|
"spent": "Spent",
|
|
181
184
|
"expired": "Expired",
|
|
182
185
|
"adjusted": "Adjusted",
|
|
183
|
-
"loadMore": "Load more"
|
|
186
|
+
"loadMore": "Load more",
|
|
187
|
+
"stay": "Stay",
|
|
188
|
+
"referral": "Referral",
|
|
189
|
+
"bonus": "Bonus",
|
|
190
|
+
"adjustment": "Adjustment",
|
|
191
|
+
"expiration": "Expiration",
|
|
192
|
+
"redemption": "Redemption"
|
|
184
193
|
},
|
|
185
194
|
"drawer": {
|
|
186
195
|
"title": "Member Options",
|
|
@@ -194,7 +203,7 @@
|
|
|
194
203
|
"confirmationPlaceholder": "e.g., VIA-12345",
|
|
195
204
|
"lastName": "Last Name",
|
|
196
205
|
"lastNamePlaceholder": "Your last name",
|
|
197
|
-
"referDesc": "Share your referral
|
|
206
|
+
"referDesc": "Share your referral code and earn rewards. You and your friend will each receive a 100 point bonus when their stay is complete i.e. at check-out.",
|
|
198
207
|
"yourReferralLink": "Your referral link:",
|
|
199
208
|
"copy": "Copy",
|
|
200
209
|
"referrals": "Referrals",
|
|
@@ -214,21 +223,31 @@
|
|
|
214
223
|
"roomUpgrade": "Room Upgrade",
|
|
215
224
|
"welcomeDrink": "Welcome Drink"
|
|
216
225
|
},
|
|
217
|
-
"savePreferences": "Save Preferences"
|
|
226
|
+
"savePreferences": "Save Preferences",
|
|
227
|
+
"stayLinked": "Stay linked successfully!",
|
|
228
|
+
"stayAlreadyLinked": "This stay is already linked to your account.",
|
|
229
|
+
"stayNotFound": "No matching stay found. Please check your details.",
|
|
230
|
+
"addAnother": "Add another stay"
|
|
218
231
|
},
|
|
219
232
|
"progress": {
|
|
220
233
|
"staysOf": "{current} of {target}",
|
|
234
|
+
"akinPoints": "AKIN Points",
|
|
221
235
|
"originHostels": "Origin Hostels",
|
|
222
236
|
"originNights": "Origin Nights"
|
|
223
237
|
},
|
|
224
238
|
"preferences": {
|
|
225
239
|
"step1": "Which perks interest you?",
|
|
226
240
|
"step2": "What kinds of places do you love?",
|
|
227
|
-
"step3": "What vibe do you look for?"
|
|
241
|
+
"step3": "What vibe do you look for?",
|
|
242
|
+
"saved": "Preferences saved!",
|
|
243
|
+
"savedDesc": "Your preferences have been updated."
|
|
228
244
|
}
|
|
229
245
|
},
|
|
230
246
|
"account": {
|
|
231
|
-
"title": "Account"
|
|
247
|
+
"title": "Account"
|
|
248
|
+
},
|
|
249
|
+
"settings": {
|
|
250
|
+
"title": "Settings",
|
|
232
251
|
"profile": {
|
|
233
252
|
"title": "Profile",
|
|
234
253
|
"edit": "Edit",
|
|
@@ -273,7 +292,7 @@
|
|
|
273
292
|
"header": {
|
|
274
293
|
"menu": "Menu",
|
|
275
294
|
"account": "Account",
|
|
276
|
-
"
|
|
295
|
+
"settings": "Settings",
|
|
277
296
|
"signIn": "Sign In",
|
|
278
297
|
"joinFree": "Join Free",
|
|
279
298
|
"signOut": "Sign Out",
|
|
@@ -5,13 +5,7 @@
|
|
|
5
5
|
"viewRewards": "Ver Tus Recompensas",
|
|
6
6
|
"title": "Programa de Lealtad Viajero",
|
|
7
7
|
"subtitle": "Gana puntos con cada estadía. Desbloquea beneficios, noches gratis y experiencias exclusivas.",
|
|
8
|
-
"joinNow": "Únete Ahora - Gratis"
|
|
9
|
-
"earnPoints": "Gana Puntos",
|
|
10
|
-
"earnPointsDesc": "10 puntos por cada $1 gastado en cualquier hostal Viajero",
|
|
11
|
-
"unlockPerks": "Desbloquea Beneficios",
|
|
12
|
-
"unlockPerksDesc": "Desayuno gratis, late checkout, mejoras de habitación",
|
|
13
|
-
"levelUp": "Sube de Nivel",
|
|
14
|
-
"levelUpDesc": "4 niveles con beneficios crecientes"
|
|
8
|
+
"joinNow": "Únete Ahora - Gratis"
|
|
15
9
|
},
|
|
16
10
|
"login": {
|
|
17
11
|
"subtitle": "Inicia sesión para acceder a tus recompensas"
|
|
@@ -129,6 +123,7 @@
|
|
|
129
123
|
"addStay": "Agregar estancia",
|
|
130
124
|
"referFriend": "Referir a un amigo",
|
|
131
125
|
"setPreferences": "Configurar preferencias",
|
|
126
|
+
"editPreferences": "Editar preferencias",
|
|
132
127
|
"thisMembershipYear": "Este año de membresía",
|
|
133
128
|
"lifetime": "De por vida",
|
|
134
129
|
"by": "Para:",
|
|
@@ -168,19 +163,33 @@
|
|
|
168
163
|
"rewardsPerStay": "recompensas por estancia",
|
|
169
164
|
"invitationOnly": "Solo por invitación"
|
|
170
165
|
},
|
|
166
|
+
"tierBenefits": {
|
|
167
|
+
"title": "Beneficios por Nivel",
|
|
168
|
+
"subtitle": "Recompensas disponibles en cada nivel",
|
|
169
|
+
"allProperties": "Todas las Propiedades",
|
|
170
|
+
"empty": "Los beneficios aparecerán aquí cuando estén disponibles"
|
|
171
|
+
},
|
|
171
172
|
"activityStatement": {
|
|
172
173
|
"title": "Estado de Actividad",
|
|
173
174
|
"empty": "Sin actividad aún. Tus transacciones aparecerán aquí.",
|
|
174
175
|
"property": "Propiedad",
|
|
175
176
|
"date": "Fecha",
|
|
176
177
|
"type": "Tipo",
|
|
178
|
+
"description": "Descripción",
|
|
177
179
|
"nights": "Noches",
|
|
178
180
|
"points": "Puntos",
|
|
181
|
+
"akinPoints": "Puntos AKIN",
|
|
179
182
|
"earned": "Ganado",
|
|
180
183
|
"spent": "Gastado",
|
|
181
184
|
"expired": "Expirado",
|
|
182
185
|
"adjusted": "Ajustado",
|
|
183
|
-
"loadMore": "Cargar más"
|
|
186
|
+
"loadMore": "Cargar más",
|
|
187
|
+
"stay": "Estancia",
|
|
188
|
+
"referral": "Referido",
|
|
189
|
+
"bonus": "Bono",
|
|
190
|
+
"adjustment": "Ajuste",
|
|
191
|
+
"expiration": "Expiración",
|
|
192
|
+
"redemption": "Canje"
|
|
184
193
|
},
|
|
185
194
|
"drawer": {
|
|
186
195
|
"title": "Opciones de Miembro",
|
|
@@ -214,21 +223,31 @@
|
|
|
214
223
|
"roomUpgrade": "Mejora de Habitación",
|
|
215
224
|
"welcomeDrink": "Bebida de Bienvenida"
|
|
216
225
|
},
|
|
217
|
-
"savePreferences": "Guardar Preferencias"
|
|
226
|
+
"savePreferences": "Guardar Preferencias",
|
|
227
|
+
"stayLinked": "¡Estancia vinculada exitosamente!",
|
|
228
|
+
"stayAlreadyLinked": "Esta estancia ya está vinculada a tu cuenta.",
|
|
229
|
+
"stayNotFound": "No se encontró una estancia. Verifica tus datos.",
|
|
230
|
+
"addAnother": "Agregar otra estancia"
|
|
218
231
|
},
|
|
219
232
|
"progress": {
|
|
220
233
|
"staysOf": "{current} de {target}",
|
|
234
|
+
"akinPoints": "Puntos AKIN",
|
|
221
235
|
"originHostels": "Hostales Origen",
|
|
222
236
|
"originNights": "Noches Origen"
|
|
223
237
|
},
|
|
224
238
|
"preferences": {
|
|
225
239
|
"step1": "¿Qué beneficios te interesan?",
|
|
226
240
|
"step2": "¿Qué tipos de lugares te encantan?",
|
|
227
|
-
"step3": "¿Qué ambiente buscas?"
|
|
241
|
+
"step3": "¿Qué ambiente buscas?",
|
|
242
|
+
"saved": "¡Preferencias guardadas!",
|
|
243
|
+
"savedDesc": "Tus preferencias han sido actualizadas."
|
|
228
244
|
}
|
|
229
245
|
},
|
|
230
246
|
"account": {
|
|
231
|
-
"title": "Cuenta"
|
|
247
|
+
"title": "Cuenta"
|
|
248
|
+
},
|
|
249
|
+
"settings": {
|
|
250
|
+
"title": "Configuración",
|
|
232
251
|
"profile": {
|
|
233
252
|
"title": "Perfil",
|
|
234
253
|
"edit": "Editar",
|
|
@@ -273,7 +292,7 @@
|
|
|
273
292
|
"header": {
|
|
274
293
|
"menu": "Menú",
|
|
275
294
|
"account": "Cuenta",
|
|
276
|
-
"
|
|
295
|
+
"settings": "Configuración",
|
|
277
296
|
"signIn": "Iniciar Sesión",
|
|
278
297
|
"joinFree": "Únete Gratis",
|
|
279
298
|
"signOut": "Cerrar Sesión",
|
package/dist/index.d.ts
CHANGED
|
@@ -58,8 +58,8 @@ export { LoginForm, SignupForm, MagicLinkForm } from './auth';
|
|
|
58
58
|
export { RequireAuth, RequireGuest } from './auth';
|
|
59
59
|
export type { AkinUser, AkinMember, AuthState, AuthActions, AuthContextValue, SignUpData, PasswordlessSignUpData, LoginFormRenderProps, SignupFormRenderProps, MagicLinkFormRenderProps, RequireAuthProps, RequireAuthRenderProps, RequireGuestProps, RequireGuestRenderProps, } from './auth';
|
|
60
60
|
export { useAkinLoyalty } from './loyalty';
|
|
61
|
-
export { TierCard, TierProgress, TransactionList, PointsDisplay, TierRequirementsTable, SimpleTierCards, LoyaltyCard, UpcomingStays, PreviousStays, } from './loyalty';
|
|
62
|
-
export type { TierConfig, TierProgressType, LoyaltyTransaction, MemberTierHistory, TransactionType, TierChangeReason, LoyaltyState, LoyaltyActions, LoyaltyContextValue, TierCardRenderProps, TierProgressRenderProps, TransactionListRenderProps, TierRequirement, RequirementValueType, RequirementOperator, TierRequirementsTableRenderProps, SimpleTierCardsRenderProps, BookingStatus, MemberStay, LoyaltyCardRenderProps, UpcomingStaysRenderProps, PreviousStaysRenderProps, } from './loyalty';
|
|
61
|
+
export { TierCard, TierProgress, TransactionList, PointsDisplay, TierRequirementsTable, SimpleTierCards, LoyaltyCard, UpcomingStays, PreviousStays, TierBenefits, } from './loyalty';
|
|
62
|
+
export type { TierConfig, TierProgressType, LoyaltyTransaction, MemberTierHistory, TransactionType, TierChangeReason, LoyaltyState, LoyaltyActions, LoyaltyContextValue, TierCardRenderProps, TierProgressRenderProps, TransactionListRenderProps, TierRequirement, RequirementValueType, RequirementOperator, TierRequirementsTableRenderProps, SimpleTierCardsRenderProps, TierBenefit, TierBenefitGroup, TierBenefitsRenderProps, BookingStatus, MemberStay, LoyaltyCardRenderProps, UpcomingStaysRenderProps, PreviousStaysRenderProps, } from './loyalty';
|
|
63
63
|
export { TIER_LABELS, PARTNER_LABELS, KEY_PRIORITY, getLabel, extractRequirementKeys, } from './utils';
|
|
64
64
|
export { I18nProvider, useI18n, useOptionalI18n, DEFAULT_TRANSLATIONS, DEFAULT_LOCALES, } from './i18n';
|
|
65
65
|
export { LanguageSelector } from './i18n';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAOH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACrF,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAOpF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAG9D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGnD,YAAY,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,QAAQ,CAAC;AAOhB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
* ```
|
|
53
53
|
*/
|
|
54
54
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
-
exports.
|
|
56
|
-
exports.LOCATION_PREFERENCES = exports.VIBE_PREFERENCES = exports.PERK_PREFERENCES = exports.getCountryCallingCode = exports.parsePhoneNumber = exports.isValidPhoneNumber = exports.PhoneInput = exports.CurrencyAccordion = exports.LanguageAccordion = exports.UserAvatar = exports.HeaderMenu = exports.PASSKEY_DELETE = exports.MY_PASSKEYS = exports.PASSKEY_REGISTER = exports.PASSKEY_REGISTRATION_OPTIONS = exports.UPDATE_MEMBER = exports.useAccountForm = void 0;
|
|
55
|
+
exports.NotificationPreferencesSection = exports.AccountInfoSection = exports.convertCurrency = exports.formatCurrencyAmount = exports.getCurrencySymbol = exports.getCurrencyOption = exports.DEFAULT_EXCHANGE_RATES = exports.DEFAULT_CURRENCIES = exports.CurrencySelector = exports.useOptionalCurrency = exports.useCurrency = exports.CurrencyProvider = exports.LanguageSelector = exports.DEFAULT_LOCALES = exports.DEFAULT_TRANSLATIONS = exports.useOptionalI18n = exports.useI18n = exports.I18nProvider = exports.extractRequirementKeys = exports.getLabel = exports.KEY_PRIORITY = exports.PARTNER_LABELS = exports.TIER_LABELS = exports.TierBenefits = exports.PreviousStays = exports.UpcomingStays = exports.LoyaltyCard = exports.SimpleTierCards = exports.TierRequirementsTable = exports.PointsDisplay = exports.TransactionList = exports.TierProgress = exports.TierCard = exports.useAkinLoyalty = exports.RequireGuest = exports.RequireAuth = exports.MagicLinkForm = exports.SignupForm = exports.LoginForm = exports.useSDK = exports.useAkinAuth = exports.AkinProvider = exports.clearTokenCache = exports.setTokenProvider = exports.gql = exports.createAkinClient = exports.DEV_CONFIG = exports.STAGING_CONFIG = exports.DEFAULT_CONFIG = exports.resolveConfig = void 0;
|
|
56
|
+
exports.LOCATION_PREFERENCES = exports.VIBE_PREFERENCES = exports.PERK_PREFERENCES = exports.getCountryCallingCode = exports.parsePhoneNumber = exports.isValidPhoneNumber = exports.PhoneInput = exports.CurrencyAccordion = exports.LanguageAccordion = exports.UserAvatar = exports.HeaderMenu = exports.PASSKEY_DELETE = exports.MY_PASSKEYS = exports.PASSKEY_REGISTER = exports.PASSKEY_REGISTRATION_OPTIONS = exports.UPDATE_MEMBER = exports.useAccountForm = exports.PasskeySection = void 0;
|
|
57
57
|
// ============================================
|
|
58
58
|
// Core
|
|
59
59
|
// ============================================
|
|
@@ -103,6 +103,7 @@ Object.defineProperty(exports, "SimpleTierCards", { enumerable: true, get: funct
|
|
|
103
103
|
Object.defineProperty(exports, "LoyaltyCard", { enumerable: true, get: function () { return loyalty_2.LoyaltyCard; } });
|
|
104
104
|
Object.defineProperty(exports, "UpcomingStays", { enumerable: true, get: function () { return loyalty_2.UpcomingStays; } });
|
|
105
105
|
Object.defineProperty(exports, "PreviousStays", { enumerable: true, get: function () { return loyalty_2.PreviousStays; } });
|
|
106
|
+
Object.defineProperty(exports, "TierBenefits", { enumerable: true, get: function () { return loyalty_2.TierBenefits; } });
|
|
106
107
|
// ============================================
|
|
107
108
|
// Tier Label Utilities
|
|
108
109
|
// ============================================
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;;;;AAEH,+CAA+C;AAC/C,OAAO;AACP,+CAA+C;AAE/C,gBAAgB;AAChB,mCAAqF;AAA5E,uGAAA,aAAa,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,oGAAA,UAAU,OAAA;AAGlE,SAAS;AACT,mCAAoF;AAA3E,0GAAA,gBAAgB,OAAA;AAAE,6FAAA,GAAG,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAAE,yGAAA,eAAe,OAAA;AAEjE,+CAA+C;AAC/C,OAAO;AACP,+CAA+C;AAE/C,qBAAqB;AACrB,+BAA2D;AAAlD,oGAAA,YAAY,OAAA;AAAE,mGAAA,WAAW,OAAA;AAAE,8FAAA,MAAM,OAAA;AAE1C,2BAA2B;AAC3B,+BAA8D;AAArD,iGAAA,SAAS,OAAA;AAAE,kGAAA,UAAU,OAAA;AAAE,qGAAA,aAAa,OAAA;AAE7C,cAAc;AACd,+BAAmD;AAA1C,mGAAA,WAAW,OAAA;AAAE,oGAAA,YAAY,OAAA;AAoBlC,+CAA+C;AAC/C,UAAU;AACV,+CAA+C;AAE/C,qBAAqB;AACrB,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AAEvB,8BAA8B;AAC9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AkinLoyaltyProvider.d.ts","sourceRoot":"","sources":["../../src/loyalty/AkinLoyaltyProvider.tsx"],"names":[],"mappings":"AAEA,OAAc,EAQZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,
|
|
1
|
+
{"version":3,"file":"AkinLoyaltyProvider.d.ts","sourceRoot":"","sources":["../../src/loyalty/AkinLoyaltyProvider.tsx"],"names":[],"mappings":"AAEA,OAAc,EAQZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EASf,MAAM,kBAAkB,CAAC;AA6I1B,UAAU,kBAAmB,SAAQ,YAAY,EAAE,cAAc;CAAG;AAIpE;;GAEG;AACH,wBAAgB,cAAc,IAAI,kBAAkB,CAMnD;AAoED,UAAU,wBAAwB;IAChC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,wBAAwB,2CAoTzE"}
|