@akin-travel/partner-sdk 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +1204 -0
  2. package/dist/account/components/AccountInfoSection.d.ts +46 -0
  3. package/dist/account/components/AccountInfoSection.d.ts.map +1 -0
  4. package/dist/account/components/AccountInfoSection.js +52 -0
  5. package/dist/account/components/AccountInfoSection.js.map +1 -0
  6. package/dist/account/components/NotificationPreferencesSection.d.ts +40 -0
  7. package/dist/account/components/NotificationPreferencesSection.d.ts.map +1 -0
  8. package/dist/account/components/NotificationPreferencesSection.js +116 -0
  9. package/dist/account/components/NotificationPreferencesSection.js.map +1 -0
  10. package/dist/account/components/PasskeySection.d.ts +49 -0
  11. package/dist/account/components/PasskeySection.d.ts.map +1 -0
  12. package/dist/account/components/PasskeySection.js +298 -0
  13. package/dist/account/components/PasskeySection.js.map +1 -0
  14. package/dist/account/hooks/useAccountForm.d.ts +23 -0
  15. package/dist/account/hooks/useAccountForm.d.ts.map +1 -0
  16. package/dist/account/hooks/useAccountForm.js +133 -0
  17. package/dist/account/hooks/useAccountForm.js.map +1 -0
  18. package/dist/account/index.d.ts +10 -0
  19. package/dist/account/index.d.ts.map +1 -0
  20. package/dist/account/index.js +21 -0
  21. package/dist/account/index.js.map +1 -0
  22. package/dist/auth/AkinAuthProvider.d.ts +31 -0
  23. package/dist/auth/AkinAuthProvider.d.ts.map +1 -0
  24. package/dist/auth/AkinAuthProvider.js +632 -0
  25. package/dist/auth/AkinAuthProvider.js.map +1 -0
  26. package/dist/auth/components/LoginForm.d.ts +63 -0
  27. package/dist/auth/components/LoginForm.d.ts.map +1 -0
  28. package/dist/auth/components/LoginForm.js +230 -0
  29. package/dist/auth/components/LoginForm.js.map +1 -0
  30. package/dist/auth/components/MagicLinkForm.d.ts +41 -0
  31. package/dist/auth/components/MagicLinkForm.d.ts.map +1 -0
  32. package/dist/auth/components/MagicLinkForm.js +88 -0
  33. package/dist/auth/components/MagicLinkForm.js.map +1 -0
  34. package/dist/auth/components/RequireAuth.d.ts +62 -0
  35. package/dist/auth/components/RequireAuth.d.ts.map +1 -0
  36. package/dist/auth/components/RequireAuth.js +63 -0
  37. package/dist/auth/components/RequireAuth.js.map +1 -0
  38. package/dist/auth/components/RequireGuest.d.ts +60 -0
  39. package/dist/auth/components/RequireGuest.d.ts.map +1 -0
  40. package/dist/auth/components/RequireGuest.js +64 -0
  41. package/dist/auth/components/RequireGuest.js.map +1 -0
  42. package/dist/auth/components/SignupForm.d.ts +45 -0
  43. package/dist/auth/components/SignupForm.d.ts.map +1 -0
  44. package/dist/auth/components/SignupForm.js +167 -0
  45. package/dist/auth/components/SignupForm.js.map +1 -0
  46. package/dist/auth/index.d.ts +10 -0
  47. package/dist/auth/index.d.ts.map +1 -0
  48. package/dist/auth/index.js +21 -0
  49. package/dist/auth/index.js.map +1 -0
  50. package/dist/client.d.ts +17 -0
  51. package/dist/client.d.ts.map +1 -0
  52. package/dist/client.js +136 -0
  53. package/dist/client.js.map +1 -0
  54. package/dist/components/PhoneInput.d.ts +62 -0
  55. package/dist/components/PhoneInput.d.ts.map +1 -0
  56. package/dist/components/PhoneInput.js +65 -0
  57. package/dist/components/PhoneInput.js.map +1 -0
  58. package/dist/components/index.d.ts +2 -0
  59. package/dist/components/index.d.ts.map +1 -0
  60. package/dist/components/index.js +9 -0
  61. package/dist/components/index.js.map +1 -0
  62. package/dist/config.d.ts +111 -0
  63. package/dist/config.d.ts.map +1 -0
  64. package/dist/config.js +56 -0
  65. package/dist/config.js.map +1 -0
  66. package/dist/constants/preferences.d.ts +22 -0
  67. package/dist/constants/preferences.d.ts.map +1 -0
  68. package/dist/constants/preferences.js +52 -0
  69. package/dist/constants/preferences.js.map +1 -0
  70. package/dist/currency/CurrencyProvider.d.ts +46 -0
  71. package/dist/currency/CurrencyProvider.d.ts.map +1 -0
  72. package/dist/currency/CurrencyProvider.js +145 -0
  73. package/dist/currency/CurrencyProvider.js.map +1 -0
  74. package/dist/currency/components/CurrencySelector.d.ts +43 -0
  75. package/dist/currency/components/CurrencySelector.d.ts.map +1 -0
  76. package/dist/currency/components/CurrencySelector.js +58 -0
  77. package/dist/currency/components/CurrencySelector.js.map +1 -0
  78. package/dist/currency/exchangeRates.d.ts +40 -0
  79. package/dist/currency/exchangeRates.d.ts.map +1 -0
  80. package/dist/currency/exchangeRates.js +90 -0
  81. package/dist/currency/exchangeRates.js.map +1 -0
  82. package/dist/currency/index.d.ts +6 -0
  83. package/dist/currency/index.d.ts.map +1 -0
  84. package/dist/currency/index.js +20 -0
  85. package/dist/currency/index.js.map +1 -0
  86. package/dist/header/components/CurrencyAccordion.d.ts +45 -0
  87. package/dist/header/components/CurrencyAccordion.d.ts.map +1 -0
  88. package/dist/header/components/CurrencyAccordion.js +54 -0
  89. package/dist/header/components/CurrencyAccordion.js.map +1 -0
  90. package/dist/header/components/HeaderMenu.d.ts +49 -0
  91. package/dist/header/components/HeaderMenu.d.ts.map +1 -0
  92. package/dist/header/components/HeaderMenu.js +95 -0
  93. package/dist/header/components/HeaderMenu.js.map +1 -0
  94. package/dist/header/components/LanguageAccordion.d.ts +45 -0
  95. package/dist/header/components/LanguageAccordion.d.ts.map +1 -0
  96. package/dist/header/components/LanguageAccordion.js +54 -0
  97. package/dist/header/components/LanguageAccordion.js.map +1 -0
  98. package/dist/header/components/UserAvatar.d.ts +26 -0
  99. package/dist/header/components/UserAvatar.d.ts.map +1 -0
  100. package/dist/header/components/UserAvatar.js +46 -0
  101. package/dist/header/components/UserAvatar.js.map +1 -0
  102. package/dist/header/index.d.ts +10 -0
  103. package/dist/header/index.d.ts.map +1 -0
  104. package/dist/header/index.js +13 -0
  105. package/dist/header/index.js.map +1 -0
  106. package/dist/i18n/I18nProvider.d.ts +57 -0
  107. package/dist/i18n/I18nProvider.d.ts.map +1 -0
  108. package/dist/i18n/I18nProvider.js +205 -0
  109. package/dist/i18n/I18nProvider.js.map +1 -0
  110. package/dist/i18n/components/LanguageSelector.d.ts +43 -0
  111. package/dist/i18n/components/LanguageSelector.d.ts.map +1 -0
  112. package/dist/i18n/components/LanguageSelector.js +57 -0
  113. package/dist/i18n/components/LanguageSelector.js.map +1 -0
  114. package/dist/i18n/index.d.ts +5 -0
  115. package/dist/i18n/index.d.ts.map +1 -0
  116. package/dist/i18n/index.js +14 -0
  117. package/dist/i18n/index.js.map +1 -0
  118. package/dist/i18n/translations/en.json +283 -0
  119. package/dist/i18n/translations/es.json +283 -0
  120. package/dist/index.d.ts +81 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +191 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/loyalty/AkinLoyaltyProvider.d.ts +18 -0
  125. package/dist/loyalty/AkinLoyaltyProvider.d.ts.map +1 -0
  126. package/dist/loyalty/AkinLoyaltyProvider.js +399 -0
  127. package/dist/loyalty/AkinLoyaltyProvider.js.map +1 -0
  128. package/dist/loyalty/components/LoyaltyCard.d.ts +48 -0
  129. package/dist/loyalty/components/LoyaltyCard.d.ts.map +1 -0
  130. package/dist/loyalty/components/LoyaltyCard.js +140 -0
  131. package/dist/loyalty/components/LoyaltyCard.js.map +1 -0
  132. package/dist/loyalty/components/PointsDisplay.d.ts +40 -0
  133. package/dist/loyalty/components/PointsDisplay.d.ts.map +1 -0
  134. package/dist/loyalty/components/PointsDisplay.js +32 -0
  135. package/dist/loyalty/components/PointsDisplay.js.map +1 -0
  136. package/dist/loyalty/components/PreviousStays.d.ts +59 -0
  137. package/dist/loyalty/components/PreviousStays.d.ts.map +1 -0
  138. package/dist/loyalty/components/PreviousStays.js +101 -0
  139. package/dist/loyalty/components/PreviousStays.js.map +1 -0
  140. package/dist/loyalty/components/SimpleTierCards.d.ts +51 -0
  141. package/dist/loyalty/components/SimpleTierCards.d.ts.map +1 -0
  142. package/dist/loyalty/components/SimpleTierCards.js +96 -0
  143. package/dist/loyalty/components/SimpleTierCards.js.map +1 -0
  144. package/dist/loyalty/components/TierCard.d.ts +30 -0
  145. package/dist/loyalty/components/TierCard.d.ts.map +1 -0
  146. package/dist/loyalty/components/TierCard.js +41 -0
  147. package/dist/loyalty/components/TierCard.js.map +1 -0
  148. package/dist/loyalty/components/TierProgress.d.ts +32 -0
  149. package/dist/loyalty/components/TierProgress.d.ts.map +1 -0
  150. package/dist/loyalty/components/TierProgress.js +41 -0
  151. package/dist/loyalty/components/TierProgress.js.map +1 -0
  152. package/dist/loyalty/components/TierRequirementsTable.d.ts +54 -0
  153. package/dist/loyalty/components/TierRequirementsTable.d.ts.map +1 -0
  154. package/dist/loyalty/components/TierRequirementsTable.js +104 -0
  155. package/dist/loyalty/components/TierRequirementsTable.js.map +1 -0
  156. package/dist/loyalty/components/TransactionList.d.ts +44 -0
  157. package/dist/loyalty/components/TransactionList.d.ts.map +1 -0
  158. package/dist/loyalty/components/TransactionList.js +112 -0
  159. package/dist/loyalty/components/TransactionList.js.map +1 -0
  160. package/dist/loyalty/components/UpcomingStays.d.ts +49 -0
  161. package/dist/loyalty/components/UpcomingStays.d.ts.map +1 -0
  162. package/dist/loyalty/components/UpcomingStays.js +60 -0
  163. package/dist/loyalty/components/UpcomingStays.js.map +1 -0
  164. package/dist/loyalty/index.d.ts +12 -0
  165. package/dist/loyalty/index.d.ts.map +1 -0
  166. package/dist/loyalty/index.js +27 -0
  167. package/dist/loyalty/index.js.map +1 -0
  168. package/dist/types/account.d.ts +108 -0
  169. package/dist/types/account.d.ts.map +1 -0
  170. package/dist/types/account.js +3 -0
  171. package/dist/types/account.js.map +1 -0
  172. package/dist/types/auth.d.ts +205 -0
  173. package/dist/types/auth.d.ts.map +1 -0
  174. package/dist/types/auth.js +3 -0
  175. package/dist/types/auth.js.map +1 -0
  176. package/dist/types/currency.d.ts +102 -0
  177. package/dist/types/currency.d.ts.map +1 -0
  178. package/dist/types/currency.js +3 -0
  179. package/dist/types/currency.js.map +1 -0
  180. package/dist/types/header.d.ts +105 -0
  181. package/dist/types/header.d.ts.map +1 -0
  182. package/dist/types/header.js +3 -0
  183. package/dist/types/header.js.map +1 -0
  184. package/dist/types/i18n.d.ts +90 -0
  185. package/dist/types/i18n.d.ts.map +1 -0
  186. package/dist/types/i18n.js +3 -0
  187. package/dist/types/i18n.js.map +1 -0
  188. package/dist/types/index.d.ts +3 -0
  189. package/dist/types/index.d.ts.map +1 -0
  190. package/dist/types/index.js +3 -0
  191. package/dist/types/index.js.map +1 -0
  192. package/dist/types/loyalty.d.ts +312 -0
  193. package/dist/types/loyalty.d.ts.map +1 -0
  194. package/dist/types/loyalty.js +3 -0
  195. package/dist/types/loyalty.js.map +1 -0
  196. package/dist/utils/index.d.ts +2 -0
  197. package/dist/utils/index.d.ts.map +1 -0
  198. package/dist/utils/index.js +10 -0
  199. package/dist/utils/index.js.map +1 -0
  200. package/dist/utils/tierLabels.d.ts +27 -0
  201. package/dist/utils/tierLabels.d.ts.map +1 -0
  202. package/dist/utils/tierLabels.js +110 -0
  203. package/dist/utils/tierLabels.js.map +1 -0
  204. package/package.json +60 -0
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_EXCHANGE_RATES = exports.DEFAULT_CURRENCIES = void 0;
4
+ exports.getCurrencyOption = getCurrencyOption;
5
+ exports.getCurrencySymbol = getCurrencySymbol;
6
+ exports.formatCurrencyAmount = formatCurrencyAmount;
7
+ exports.convertCurrency = convertCurrency;
8
+ /**
9
+ * Default available currencies
10
+ * Partners can override this via config.currency.availableCurrencies
11
+ */
12
+ exports.DEFAULT_CURRENCIES = [
13
+ { code: 'USD', name: 'US Dollar', symbol: '$', decimals: 2 },
14
+ { code: 'EUR', name: 'Euro', symbol: '€', decimals: 2 },
15
+ { code: 'GBP', name: 'British Pound', symbol: '£', decimals: 2 },
16
+ { code: 'AUD', name: 'Australian Dollar', symbol: 'A$', decimals: 2 },
17
+ { code: 'CAD', name: 'Canadian Dollar', symbol: 'C$', decimals: 2 },
18
+ { code: 'JPY', name: 'Japanese Yen', symbol: '¥', decimals: 0 },
19
+ { code: 'CNY', name: 'Chinese Yuan', symbol: '¥', decimals: 2 },
20
+ { code: 'INR', name: 'Indian Rupee', symbol: '₹', decimals: 2 },
21
+ ];
22
+ /**
23
+ * Static fallback exchange rates (relative to USD)
24
+ * These are approximate rates for offline/fallback use
25
+ * Partners should provide live rates via config.currency.exchangeRates
26
+ *
27
+ * Last updated: 2025-01
28
+ */
29
+ exports.DEFAULT_EXCHANGE_RATES = {
30
+ USD: 1,
31
+ EUR: 0.92,
32
+ GBP: 0.79,
33
+ AUD: 1.52,
34
+ CAD: 1.36,
35
+ JPY: 149.5,
36
+ CNY: 7.24,
37
+ INR: 83.12,
38
+ };
39
+ /**
40
+ * Get currency option by code
41
+ */
42
+ function getCurrencyOption(code, currencies = exports.DEFAULT_CURRENCIES) {
43
+ return currencies.find((c) => c.code === code);
44
+ }
45
+ /**
46
+ * Get currency symbol by code
47
+ */
48
+ function getCurrencySymbol(code, currencies = exports.DEFAULT_CURRENCIES) {
49
+ const currency = getCurrencyOption(code, currencies);
50
+ return currency?.symbol ?? code;
51
+ }
52
+ /**
53
+ * Format a price in a specific currency using Intl.NumberFormat
54
+ *
55
+ * @param amount The amount to format
56
+ * @param currencyCode The currency code (e.g., 'USD', 'EUR')
57
+ * @param options Optional Intl.NumberFormat options
58
+ */
59
+ function formatCurrencyAmount(amount, currencyCode, options) {
60
+ try {
61
+ return new Intl.NumberFormat(undefined, {
62
+ style: 'currency',
63
+ currency: currencyCode,
64
+ ...options,
65
+ }).format(amount);
66
+ }
67
+ catch {
68
+ // Fallback for unsupported currencies
69
+ const symbol = getCurrencySymbol(currencyCode);
70
+ return `${symbol}${amount.toFixed(2)}`;
71
+ }
72
+ }
73
+ /**
74
+ * Convert an amount from one currency to another
75
+ *
76
+ * @param amount The amount to convert
77
+ * @param fromCurrency Source currency code
78
+ * @param toCurrency Target currency code
79
+ * @param rates Exchange rates (relative to USD)
80
+ */
81
+ function convertCurrency(amount, fromCurrency, toCurrency, rates = exports.DEFAULT_EXCHANGE_RATES) {
82
+ if (fromCurrency === toCurrency)
83
+ return amount;
84
+ const fromRate = rates[fromCurrency] ?? 1;
85
+ const toRate = rates[toCurrency] ?? 1;
86
+ // Convert to USD first, then to target currency
87
+ const amountInUSD = amount / fromRate;
88
+ return amountInUSD * toRate;
89
+ }
90
+ //# sourceMappingURL=exchangeRates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchangeRates.js","sourceRoot":"","sources":["../../src/currency/exchangeRates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { CurrencyProvider, useCurrency, useOptionalCurrency } from './CurrencyProvider';
2
+ export { CurrencySelector } from './components/CurrencySelector';
3
+ export { DEFAULT_CURRENCIES, DEFAULT_EXCHANGE_RATES, getCurrencyOption, getCurrencySymbol, formatCurrencyAmount, convertCurrency, } from './exchangeRates';
4
+ export type { CurrencyCode, CurrencyOption, ExchangeRates, CurrencyConfig, CurrencyState, CurrencyActions, CurrencyContextValue, CurrencySelectorRenderProps, } from '../types/currency';
5
+ export type { CurrencySelectorProps } from './components/CurrencySelector';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/currency/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertCurrency = exports.formatCurrencyAmount = exports.getCurrencySymbol = exports.getCurrencyOption = exports.DEFAULT_EXCHANGE_RATES = exports.DEFAULT_CURRENCIES = exports.CurrencySelector = exports.useOptionalCurrency = exports.useCurrency = exports.CurrencyProvider = void 0;
4
+ // Provider and hooks
5
+ var CurrencyProvider_1 = require("./CurrencyProvider");
6
+ Object.defineProperty(exports, "CurrencyProvider", { enumerable: true, get: function () { return CurrencyProvider_1.CurrencyProvider; } });
7
+ Object.defineProperty(exports, "useCurrency", { enumerable: true, get: function () { return CurrencyProvider_1.useCurrency; } });
8
+ Object.defineProperty(exports, "useOptionalCurrency", { enumerable: true, get: function () { return CurrencyProvider_1.useOptionalCurrency; } });
9
+ // Components
10
+ var CurrencySelector_1 = require("./components/CurrencySelector");
11
+ Object.defineProperty(exports, "CurrencySelector", { enumerable: true, get: function () { return CurrencySelector_1.CurrencySelector; } });
12
+ // Utilities
13
+ var exchangeRates_1 = require("./exchangeRates");
14
+ Object.defineProperty(exports, "DEFAULT_CURRENCIES", { enumerable: true, get: function () { return exchangeRates_1.DEFAULT_CURRENCIES; } });
15
+ Object.defineProperty(exports, "DEFAULT_EXCHANGE_RATES", { enumerable: true, get: function () { return exchangeRates_1.DEFAULT_EXCHANGE_RATES; } });
16
+ Object.defineProperty(exports, "getCurrencyOption", { enumerable: true, get: function () { return exchangeRates_1.getCurrencyOption; } });
17
+ Object.defineProperty(exports, "getCurrencySymbol", { enumerable: true, get: function () { return exchangeRates_1.getCurrencySymbol; } });
18
+ Object.defineProperty(exports, "formatCurrencyAmount", { enumerable: true, get: function () { return exchangeRates_1.formatCurrencyAmount; } });
19
+ Object.defineProperty(exports, "convertCurrency", { enumerable: true, get: function () { return exchangeRates_1.convertCurrency; } });
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/currency/index.ts"],"names":[],"mappings":";;;AAAA,qBAAqB;AACrB,uDAAwF;AAA/E,oHAAA,gBAAgB,OAAA;AAAE,+GAAA,WAAW,OAAA;AAAE,uHAAA,mBAAmB,OAAA;AAE3D,aAAa;AACb,kEAAiE;AAAxD,oHAAA,gBAAgB,OAAA;AAEzB,YAAY;AACZ,iDAOyB;AANvB,mHAAA,kBAAkB,OAAA;AAClB,uHAAA,sBAAsB,OAAA;AACtB,kHAAA,iBAAiB,OAAA;AACjB,kHAAA,iBAAiB,OAAA;AACjB,qHAAA,oBAAoB,OAAA;AACpB,gHAAA,eAAe,OAAA"}
@@ -0,0 +1,45 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { CurrencyCode } from '../../types/currency';
3
+ import type { CurrencyAccordionRenderProps } from '../../types/header';
4
+ export interface CurrencyAccordionProps {
5
+ /**
6
+ * Render function receiving accordion state
7
+ */
8
+ children: (props: CurrencyAccordionRenderProps) => ReactNode;
9
+ /**
10
+ * Default expanded state
11
+ */
12
+ defaultExpanded?: boolean;
13
+ /**
14
+ * Callback when currency changes
15
+ */
16
+ onCurrencyChange?: (currency: CurrencyCode) => void;
17
+ }
18
+ /**
19
+ * Headless currency accordion component for header menus
20
+ *
21
+ * @example
22
+ * <CurrencyAccordion>
23
+ * {({ currentCurrency, availableCurrencies, setCurrency, isExpanded, toggle }) => (
24
+ * <div>
25
+ * <button onClick={toggle}>
26
+ * Currency: {currentCurrency.symbol} {currentCurrency.code}
27
+ * {isExpanded ? '▲' : '▼'}
28
+ * </button>
29
+ * {isExpanded && (
30
+ * <ul>
31
+ * {availableCurrencies.map((curr) => (
32
+ * <li key={curr.code}>
33
+ * <button onClick={() => setCurrency(curr.code)}>
34
+ * {curr.symbol} {curr.name}
35
+ * </button>
36
+ * </li>
37
+ * ))}
38
+ * </ul>
39
+ * )}
40
+ * </div>
41
+ * )}
42
+ * </CurrencyAccordion>
43
+ */
44
+ export declare function CurrencyAccordion({ children, defaultExpanded, onCurrencyChange, }: CurrencyAccordionProps): import("react/jsx-runtime").JSX.Element;
45
+ //# sourceMappingURL=CurrencyAccordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrencyAccordion.d.ts","sourceRoot":"","sources":["../../../src/header/components/CurrencyAccordion.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,SAAS,CAAC;IAC7D;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,eAAuB,EACvB,gBAAgB,GACjB,EAAE,sBAAsB,2CAkCxB"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CurrencyAccordion = CurrencyAccordion;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const currency_1 = require("../../currency");
8
+ /**
9
+ * Headless currency accordion component for header menus
10
+ *
11
+ * @example
12
+ * <CurrencyAccordion>
13
+ * {({ currentCurrency, availableCurrencies, setCurrency, isExpanded, toggle }) => (
14
+ * <div>
15
+ * <button onClick={toggle}>
16
+ * Currency: {currentCurrency.symbol} {currentCurrency.code}
17
+ * {isExpanded ? '▲' : '▼'}
18
+ * </button>
19
+ * {isExpanded && (
20
+ * <ul>
21
+ * {availableCurrencies.map((curr) => (
22
+ * <li key={curr.code}>
23
+ * <button onClick={() => setCurrency(curr.code)}>
24
+ * {curr.symbol} {curr.name}
25
+ * </button>
26
+ * </li>
27
+ * ))}
28
+ * </ul>
29
+ * )}
30
+ * </div>
31
+ * )}
32
+ * </CurrencyAccordion>
33
+ */
34
+ function CurrencyAccordion({ children, defaultExpanded = false, onCurrencyChange, }) {
35
+ const { currency, currentCurrency, availableCurrencies, setCurrency: setCurrencyContext, } = (0, currency_1.useCurrency)();
36
+ const [isExpanded, setIsExpanded] = (0, react_1.useState)(defaultExpanded);
37
+ const toggle = (0, react_1.useCallback)(() => {
38
+ setIsExpanded((prev) => !prev);
39
+ }, []);
40
+ const setCurrency = (0, react_1.useCallback)((newCurrency) => {
41
+ setCurrencyContext(newCurrency);
42
+ onCurrencyChange?.(newCurrency);
43
+ setIsExpanded(false);
44
+ }, [setCurrencyContext, onCurrencyChange]);
45
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children({
46
+ currency,
47
+ currentCurrency,
48
+ availableCurrencies,
49
+ setCurrency,
50
+ isExpanded,
51
+ toggle,
52
+ }) }));
53
+ }
54
+ //# sourceMappingURL=CurrencyAccordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrencyAccordion.js","sourceRoot":"","sources":["../../../src/header/components/CurrencyAccordion.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAgDb,8CAsCC;;AApFD,iCAA8D;AAC9D,6CAA6C;AAmB7C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,eAAe,GAAG,KAAK,EACvB,gBAAgB,GACO;IACvB,MAAM,EACJ,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,WAAW,EAAE,kBAAkB,GAChC,GAAG,IAAA,sBAAW,GAAE,CAAC;IAClB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,eAAe,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC9B,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,IAAA,mBAAW,EAC7B,CAAC,WAAyB,EAAE,EAAE;QAC5B,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAChC,gBAAgB,EAAE,CAAC,WAAW,CAAC,CAAC;QAChC,aAAa,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CACvC,CAAC;IAEF,OAAO,CACL,2DACG,QAAQ,CAAC;YACR,QAAQ;YACR,eAAe;YACf,mBAAmB;YACnB,WAAW;YACX,UAAU;YACV,MAAM;SACP,CAAC,GACD,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { HeaderMenuRenderProps } from '../../types/header';
3
+ export interface HeaderMenuProps {
4
+ /**
5
+ * Render function receiving menu state and actions
6
+ */
7
+ children: (props: HeaderMenuRenderProps) => ReactNode;
8
+ /**
9
+ * Default open state
10
+ */
11
+ defaultOpen?: boolean;
12
+ /**
13
+ * Callback when menu opens
14
+ */
15
+ onOpen?: () => void;
16
+ /**
17
+ * Callback when menu closes
18
+ */
19
+ onClose?: () => void;
20
+ }
21
+ /**
22
+ * Headless header menu component
23
+ *
24
+ * @example
25
+ * <HeaderMenu>
26
+ * {({ isOpen, toggle, userInfo, isAuthenticated, signOut }) => (
27
+ * <div>
28
+ * <button onClick={toggle}>
29
+ * {isAuthenticated ? userInfo?.initials : 'Menu'}
30
+ * </button>
31
+ * {isOpen && (
32
+ * <nav>
33
+ * {isAuthenticated ? (
34
+ * <>
35
+ * <a href="/rewards">Rewards</a>
36
+ * <a href="/account">Account</a>
37
+ * <button onClick={signOut}>Sign Out</button>
38
+ * </>
39
+ * ) : (
40
+ * <a href="/login">Sign In</a>
41
+ * )}
42
+ * </nav>
43
+ * )}
44
+ * </div>
45
+ * )}
46
+ * </HeaderMenu>
47
+ */
48
+ export declare function HeaderMenu({ children, defaultOpen, onOpen, onClose, }: HeaderMenuProps): import("react/jsx-runtime").JSX.Element;
49
+ //# sourceMappingURL=HeaderMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderMenu.d.ts","sourceRoot":"","sources":["../../../src/header/components/HeaderMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvE,OAAO,KAAK,EAAE,qBAAqB,EAAkB,MAAM,oBAAoB,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,SAAS,CAAC;IACtD;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,WAAmB,EACnB,MAAM,EACN,OAAO,GACR,EAAE,eAAe,2CA4DjB"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.HeaderMenu = HeaderMenu;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const auth_1 = require("../../auth");
8
+ const loyalty_1 = require("../../loyalty");
9
+ /**
10
+ * Get user initials from name
11
+ */
12
+ function getInitials(firstName, lastName) {
13
+ const first = firstName?.charAt(0)?.toUpperCase() ?? '';
14
+ const last = lastName?.charAt(0)?.toUpperCase() ?? '';
15
+ return first + last || '?';
16
+ }
17
+ /**
18
+ * Headless header menu component
19
+ *
20
+ * @example
21
+ * <HeaderMenu>
22
+ * {({ isOpen, toggle, userInfo, isAuthenticated, signOut }) => (
23
+ * <div>
24
+ * <button onClick={toggle}>
25
+ * {isAuthenticated ? userInfo?.initials : 'Menu'}
26
+ * </button>
27
+ * {isOpen && (
28
+ * <nav>
29
+ * {isAuthenticated ? (
30
+ * <>
31
+ * <a href="/rewards">Rewards</a>
32
+ * <a href="/account">Account</a>
33
+ * <button onClick={signOut}>Sign Out</button>
34
+ * </>
35
+ * ) : (
36
+ * <a href="/login">Sign In</a>
37
+ * )}
38
+ * </nav>
39
+ * )}
40
+ * </div>
41
+ * )}
42
+ * </HeaderMenu>
43
+ */
44
+ function HeaderMenu({ children, defaultOpen = false, onOpen, onClose, }) {
45
+ const { member, isAuthenticated, signOut: authSignOut } = (0, auth_1.useAkinAuth)();
46
+ const { tier, points } = (0, loyalty_1.useAkinLoyalty)();
47
+ const [isOpen, setIsOpen] = (0, react_1.useState)(defaultOpen);
48
+ const toggle = (0, react_1.useCallback)(() => {
49
+ setIsOpen((prev) => {
50
+ const newState = !prev;
51
+ if (newState) {
52
+ onOpen?.();
53
+ }
54
+ else {
55
+ onClose?.();
56
+ }
57
+ return newState;
58
+ });
59
+ }, [onOpen, onClose]);
60
+ const close = (0, react_1.useCallback)(() => {
61
+ setIsOpen(false);
62
+ onClose?.();
63
+ }, [onClose]);
64
+ const open = (0, react_1.useCallback)(() => {
65
+ setIsOpen(true);
66
+ onOpen?.();
67
+ }, [onOpen]);
68
+ const signOut = (0, react_1.useCallback)(async () => {
69
+ await authSignOut();
70
+ close();
71
+ }, [authSignOut, close]);
72
+ // Build user info
73
+ const userInfo = (0, react_1.useMemo)(() => {
74
+ if (!member)
75
+ return null;
76
+ return {
77
+ displayName: `${member.firstName ?? ''} ${member.lastName ?? ''}`.trim() || 'User',
78
+ initials: getInitials(member.firstName ?? undefined, member.lastName ?? undefined),
79
+ email: member.email,
80
+ tierName: tier ? String(tier) : undefined,
81
+ points: points,
82
+ avatarUrl: undefined, // Member doesn't have avatarUrl currently
83
+ };
84
+ }, [member, tier, points]);
85
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children({
86
+ isOpen,
87
+ toggle,
88
+ close,
89
+ open,
90
+ isAuthenticated,
91
+ userInfo,
92
+ signOut,
93
+ }) }));
94
+ }
95
+ //# sourceMappingURL=HeaderMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderMenu.js","sourceRoot":"","sources":["../../../src/header/components/HeaderMenu.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AA8Db,gCAiEC;;AA7HD,iCAAuE;AACvE,qCAAyC;AACzC,2CAA+C;AAsB/C;;GAEG;AACH,SAAS,WAAW,CAAC,SAAkB,EAAE,QAAiB;IACxD,MAAM,KAAK,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACtD,OAAO,KAAK,GAAG,IAAI,IAAI,GAAG,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,WAAW,GAAG,KAAK,EACnB,MAAM,EACN,OAAO,GACS;IAChB,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAW,GAAE,CAAC;IACxE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAA,wBAAc,GAAE,CAAC;IAE1C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,WAAW,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC9B,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC;YACvB,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,EAAE,EAAE,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,EAAE,CAAC;YACd,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtB,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC7B,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,EAAE,EAAE,CAAC;IACd,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC5B,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,EAAE,EAAE,CAAC;IACb,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACrC,MAAM,WAAW,EAAE,CAAC;QACpB,KAAK,EAAE,CAAC;IACV,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IAEzB,kBAAkB;IAClB,MAAM,QAAQ,GAAG,IAAA,eAAO,EAAwB,GAAG,EAAE;QACnD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,OAAO;YACL,WAAW,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,MAAM;YAClF,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC;YAClF,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YACzC,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,SAAS,EAAE,0CAA0C;SACjE,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3B,OAAO,CACL,2DACG,QAAQ,CAAC;YACR,MAAM;YACN,MAAM;YACN,KAAK;YACL,IAAI;YACJ,eAAe;YACf,QAAQ;YACR,OAAO;SACR,CAAC,GACD,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { LocaleCode } from '../../types/i18n';
3
+ import type { LanguageAccordionRenderProps } from '../../types/header';
4
+ export interface LanguageAccordionProps {
5
+ /**
6
+ * Render function receiving accordion state
7
+ */
8
+ children: (props: LanguageAccordionRenderProps) => ReactNode;
9
+ /**
10
+ * Default expanded state
11
+ */
12
+ defaultExpanded?: boolean;
13
+ /**
14
+ * Callback when locale changes
15
+ */
16
+ onLocaleChange?: (locale: LocaleCode) => void;
17
+ }
18
+ /**
19
+ * Headless language accordion component for header menus
20
+ *
21
+ * @example
22
+ * <LanguageAccordion>
23
+ * {({ currentLanguage, availableLocales, setLocale, isExpanded, toggle }) => (
24
+ * <div>
25
+ * <button onClick={toggle}>
26
+ * Language: {currentLanguage.nativeName}
27
+ * {isExpanded ? '▲' : '▼'}
28
+ * </button>
29
+ * {isExpanded && (
30
+ * <ul>
31
+ * {availableLocales.map((lang) => (
32
+ * <li key={lang.code}>
33
+ * <button onClick={() => setLocale(lang.code)}>
34
+ * {lang.nativeName}
35
+ * </button>
36
+ * </li>
37
+ * ))}
38
+ * </ul>
39
+ * )}
40
+ * </div>
41
+ * )}
42
+ * </LanguageAccordion>
43
+ */
44
+ export declare function LanguageAccordion({ children, defaultExpanded, onLocaleChange, }: LanguageAccordionProps): import("react/jsx-runtime").JSX.Element;
45
+ //# sourceMappingURL=LanguageAccordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageAccordion.d.ts","sourceRoot":"","sources":["../../../src/header/components/LanguageAccordion.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,SAAS,CAAC;IAC7D;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,eAAuB,EACvB,cAAc,GACf,EAAE,sBAAsB,2CA6BxB"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.LanguageAccordion = LanguageAccordion;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const i18n_1 = require("../../i18n");
8
+ /**
9
+ * Headless language accordion component for header menus
10
+ *
11
+ * @example
12
+ * <LanguageAccordion>
13
+ * {({ currentLanguage, availableLocales, setLocale, isExpanded, toggle }) => (
14
+ * <div>
15
+ * <button onClick={toggle}>
16
+ * Language: {currentLanguage.nativeName}
17
+ * {isExpanded ? '▲' : '▼'}
18
+ * </button>
19
+ * {isExpanded && (
20
+ * <ul>
21
+ * {availableLocales.map((lang) => (
22
+ * <li key={lang.code}>
23
+ * <button onClick={() => setLocale(lang.code)}>
24
+ * {lang.nativeName}
25
+ * </button>
26
+ * </li>
27
+ * ))}
28
+ * </ul>
29
+ * )}
30
+ * </div>
31
+ * )}
32
+ * </LanguageAccordion>
33
+ */
34
+ function LanguageAccordion({ children, defaultExpanded = false, onLocaleChange, }) {
35
+ const { locale, currentLanguage, availableLocales, setLocale: setI18nLocale } = (0, i18n_1.useI18n)();
36
+ const [isExpanded, setIsExpanded] = (0, react_1.useState)(defaultExpanded);
37
+ const toggle = (0, react_1.useCallback)(() => {
38
+ setIsExpanded((prev) => !prev);
39
+ }, []);
40
+ const setLocale = (0, react_1.useCallback)((newLocale) => {
41
+ setI18nLocale(newLocale);
42
+ onLocaleChange?.(newLocale);
43
+ setIsExpanded(false);
44
+ }, [setI18nLocale, onLocaleChange]);
45
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children({
46
+ locale,
47
+ currentLanguage,
48
+ availableLocales,
49
+ setLocale,
50
+ isExpanded,
51
+ toggle,
52
+ }) }));
53
+ }
54
+ //# sourceMappingURL=LanguageAccordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageAccordion.js","sourceRoot":"","sources":["../../../src/header/components/LanguageAccordion.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAgDb,8CAiCC;;AA/ED,iCAA8D;AAC9D,qCAAqC;AAmBrC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,eAAe,GAAG,KAAK,EACvB,cAAc,GACS;IACvB,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAA,cAAO,GAAE,CAAC;IAC1F,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,eAAe,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC9B,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,SAAS,GAAG,IAAA,mBAAW,EAC3B,CAAC,SAAqB,EAAE,EAAE;QACxB,aAAa,CAAC,SAAS,CAAC,CAAC;QACzB,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5B,aAAa,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,aAAa,EAAE,cAAc,CAAC,CAChC,CAAC;IAEF,OAAO,CACL,2DACG,QAAQ,CAAC;YACR,MAAM;YACN,eAAe;YACf,gBAAgB;YAChB,SAAS;YACT,UAAU;YACV,MAAM;SACP,CAAC,GACD,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { UserAvatarRenderProps } from '../../types/header';
3
+ export interface UserAvatarProps {
4
+ /**
5
+ * Render function receiving avatar state
6
+ */
7
+ children: (props: UserAvatarRenderProps) => ReactNode;
8
+ }
9
+ /**
10
+ * Headless user avatar component
11
+ *
12
+ * @example
13
+ * <UserAvatar>
14
+ * {({ initials, displayName, isAuthenticated }) => (
15
+ * isAuthenticated ? (
16
+ * <div className="avatar" title={displayName}>
17
+ * {initials}
18
+ * </div>
19
+ * ) : (
20
+ * <span>Guest</span>
21
+ * )
22
+ * )}
23
+ * </UserAvatar>
24
+ */
25
+ export declare function UserAvatar({ children }: UserAvatarProps): import("react/jsx-runtime").JSX.Element;
26
+ //# sourceMappingURL=UserAvatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserAvatar.d.ts","sourceRoot":"","sources":["../../../src/header/components/UserAvatar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,SAAS,CAAC;CACvD;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAgBvD"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.UserAvatar = UserAvatar;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const auth_1 = require("../../auth");
8
+ /**
9
+ * Get user initials from name
10
+ */
11
+ function getInitials(firstName, lastName) {
12
+ const first = firstName?.charAt(0)?.toUpperCase() ?? '';
13
+ const last = lastName?.charAt(0)?.toUpperCase() ?? '';
14
+ return first + last || '?';
15
+ }
16
+ /**
17
+ * Headless user avatar component
18
+ *
19
+ * @example
20
+ * <UserAvatar>
21
+ * {({ initials, displayName, isAuthenticated }) => (
22
+ * isAuthenticated ? (
23
+ * <div className="avatar" title={displayName}>
24
+ * {initials}
25
+ * </div>
26
+ * ) : (
27
+ * <span>Guest</span>
28
+ * )
29
+ * )}
30
+ * </UserAvatar>
31
+ */
32
+ function UserAvatar({ children }) {
33
+ const { member, isAuthenticated, user } = (0, auth_1.useAkinAuth)();
34
+ const props = (0, react_1.useMemo)(() => {
35
+ const firstName = member?.firstName ?? undefined;
36
+ const lastName = member?.lastName ?? undefined;
37
+ return {
38
+ initials: getInitials(firstName, lastName),
39
+ displayName: `${firstName ?? ''} ${lastName ?? ''}`.trim() || 'User',
40
+ avatarUrl: user?.photoURL,
41
+ isAuthenticated,
42
+ };
43
+ }, [member, user, isAuthenticated]);
44
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children(props) });
45
+ }
46
+ //# sourceMappingURL=UserAvatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserAvatar.js","sourceRoot":"","sources":["../../../src/header/components/UserAvatar.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAsCb,gCAgBC;;AApDD,iCAAgD;AAChD,qCAAyC;AAUzC;;GAEG;AACH,SAAS,WAAW,CAAC,SAAkB,EAAE,QAAiB;IACxD,MAAM,KAAK,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACtD,OAAO,KAAK,GAAG,IAAI,IAAI,GAAG,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,UAAU,CAAC,EAAE,QAAQ,EAAmB;IACtD,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,IAAA,kBAAW,GAAE,CAAC;IAExD,MAAM,KAAK,GAAG,IAAA,eAAO,EAAwB,GAAG,EAAE;QAChD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,SAAS,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,SAAS,CAAC;QAE/C,OAAO;YACL,QAAQ,EAAE,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC1C,WAAW,EAAE,GAAG,SAAS,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,MAAM;YACpE,SAAS,EAAE,IAAI,EAAE,QAAQ;YACzB,eAAe;SAChB,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IAEpC,OAAO,2DAAG,QAAQ,CAAC,KAAK,CAAC,GAAI,CAAC;AAChC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { HeaderMenu } from './components/HeaderMenu';
2
+ export { UserAvatar } from './components/UserAvatar';
3
+ export { LanguageAccordion } from './components/LanguageAccordion';
4
+ export { CurrencyAccordion } from './components/CurrencyAccordion';
5
+ export type { HeaderUserInfo, MenuItem, HeaderMenuRenderProps, UserAvatarRenderProps, LanguageAccordionRenderProps, CurrencyAccordionRenderProps, } from '../types/header';
6
+ export type { HeaderMenuProps } from './components/HeaderMenu';
7
+ export type { UserAvatarProps } from './components/UserAvatar';
8
+ export type { LanguageAccordionProps } from './components/LanguageAccordion';
9
+ export type { CurrencyAccordionProps } from './components/CurrencyAccordion';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/header/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,YAAY,EACV,cAAc,EACd,QAAQ,EACR,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CurrencyAccordion = exports.LanguageAccordion = exports.UserAvatar = exports.HeaderMenu = void 0;
4
+ // Components
5
+ var HeaderMenu_1 = require("./components/HeaderMenu");
6
+ Object.defineProperty(exports, "HeaderMenu", { enumerable: true, get: function () { return HeaderMenu_1.HeaderMenu; } });
7
+ var UserAvatar_1 = require("./components/UserAvatar");
8
+ Object.defineProperty(exports, "UserAvatar", { enumerable: true, get: function () { return UserAvatar_1.UserAvatar; } });
9
+ var LanguageAccordion_1 = require("./components/LanguageAccordion");
10
+ Object.defineProperty(exports, "LanguageAccordion", { enumerable: true, get: function () { return LanguageAccordion_1.LanguageAccordion; } });
11
+ var CurrencyAccordion_1 = require("./components/CurrencyAccordion");
12
+ Object.defineProperty(exports, "CurrencyAccordion", { enumerable: true, get: function () { return CurrencyAccordion_1.CurrencyAccordion; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/header/index.ts"],"names":[],"mappings":";;;AAAA,aAAa;AACb,sDAAqD;AAA5C,wGAAA,UAAU,OAAA;AACnB,sDAAqD;AAA5C,wGAAA,UAAU,OAAA;AACnB,oEAAmE;AAA1D,sHAAA,iBAAiB,OAAA;AAC1B,oEAAmE;AAA1D,sHAAA,iBAAiB,OAAA"}