arky-sdk 0.1.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.
Files changed (79) hide show
  1. package/dist/api/cms.d.ts +19 -0
  2. package/dist/api/cms.d.ts.map +1 -0
  3. package/dist/api/cms.js +41 -0
  4. package/dist/api/eshop.d.ts +89 -0
  5. package/dist/api/eshop.d.ts.map +1 -0
  6. package/dist/api/eshop.js +183 -0
  7. package/dist/api/index.d.ts +6 -0
  8. package/dist/api/index.d.ts.map +1 -0
  9. package/dist/api/index.js +5 -0
  10. package/dist/api/newsletter.d.ts +32 -0
  11. package/dist/api/newsletter.d.ts.map +1 -0
  12. package/dist/api/newsletter.js +70 -0
  13. package/dist/api/reservation.d.ts +84 -0
  14. package/dist/api/reservation.d.ts.map +1 -0
  15. package/dist/api/reservation.js +239 -0
  16. package/dist/config.d.ts +15 -0
  17. package/dist/config.d.ts.map +1 -0
  18. package/dist/config.js +20 -0
  19. package/dist/index.d.ts +26 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +57 -0
  22. package/dist/services/auth.d.ts +17 -0
  23. package/dist/services/auth.d.ts.map +1 -0
  24. package/dist/services/auth.js +62 -0
  25. package/dist/services/http.d.ts +20 -0
  26. package/dist/services/http.d.ts.map +1 -0
  27. package/dist/services/http.js +73 -0
  28. package/dist/stores/business.d.ts +28 -0
  29. package/dist/stores/business.d.ts.map +1 -0
  30. package/dist/stores/business.js +122 -0
  31. package/dist/stores/cart.d.ts +8 -0
  32. package/dist/stores/cart.d.ts.map +1 -0
  33. package/dist/stores/cart.js +20 -0
  34. package/dist/stores/eshop.d.ts +121 -0
  35. package/dist/stores/eshop.d.ts.map +1 -0
  36. package/dist/stores/eshop.js +377 -0
  37. package/dist/stores/index.d.ts +7 -0
  38. package/dist/stores/index.d.ts.map +1 -0
  39. package/dist/stores/index.js +19 -0
  40. package/dist/stores/reservation.d.ts +237 -0
  41. package/dist/stores/reservation.d.ts.map +1 -0
  42. package/dist/stores/reservation.js +853 -0
  43. package/dist/types/index.d.ts +244 -0
  44. package/dist/types/index.d.ts.map +1 -0
  45. package/dist/types/index.js +8 -0
  46. package/dist/utils/blocks.d.ts +30 -0
  47. package/dist/utils/blocks.d.ts.map +1 -0
  48. package/dist/utils/blocks.js +237 -0
  49. package/dist/utils/currency.d.ts +9 -0
  50. package/dist/utils/currency.d.ts.map +1 -0
  51. package/dist/utils/currency.js +99 -0
  52. package/dist/utils/errors.d.ts +121 -0
  53. package/dist/utils/errors.d.ts.map +1 -0
  54. package/dist/utils/errors.js +114 -0
  55. package/dist/utils/i18n.d.ts +5 -0
  56. package/dist/utils/i18n.d.ts.map +1 -0
  57. package/dist/utils/i18n.js +37 -0
  58. package/dist/utils/index.d.ts +9 -0
  59. package/dist/utils/index.d.ts.map +1 -0
  60. package/dist/utils/index.js +10 -0
  61. package/dist/utils/price.d.ts +33 -0
  62. package/dist/utils/price.d.ts.map +1 -0
  63. package/dist/utils/price.js +141 -0
  64. package/dist/utils/queryParams.d.ts +21 -0
  65. package/dist/utils/queryParams.d.ts.map +1 -0
  66. package/dist/utils/queryParams.js +47 -0
  67. package/dist/utils/svg.d.ts +17 -0
  68. package/dist/utils/svg.d.ts.map +1 -0
  69. package/dist/utils/svg.js +62 -0
  70. package/dist/utils/text.d.ts +26 -0
  71. package/dist/utils/text.d.ts.map +1 -0
  72. package/dist/utils/text.js +64 -0
  73. package/dist/utils/timezone.d.ts +9 -0
  74. package/dist/utils/timezone.d.ts.map +1 -0
  75. package/dist/utils/timezone.js +49 -0
  76. package/dist/utils/validation.d.ts +9 -0
  77. package/dist/utils/validation.d.ts.map +1 -0
  78. package/dist/utils/validation.js +44 -0
  79. package/package.json +58 -0
@@ -0,0 +1,244 @@
1
+ export interface Payment {
2
+ currency: string;
3
+ market: string;
4
+ subtotal: number;
5
+ shipping: number;
6
+ discount: number;
7
+ tax: number;
8
+ total: number;
9
+ promoCodeId?: string;
10
+ promoCode?: string;
11
+ promoType?: string;
12
+ promoValue?: number;
13
+ method: PaymentMethod;
14
+ customerId?: string;
15
+ paymentIntentId?: string;
16
+ subscriptionId?: string;
17
+ priceId?: string;
18
+ }
19
+ export declare enum PaymentMethod {
20
+ Cash = "CASH",
21
+ CreditCard = "CREDIT_CARD",
22
+ Free = "FREE"
23
+ }
24
+ export interface QuoteLineItem {
25
+ itemType: string;
26
+ id: string;
27
+ name: string;
28
+ quantity: number;
29
+ unitPrice: number;
30
+ total: number;
31
+ }
32
+ export interface PromoCodeValidation {
33
+ id: string;
34
+ code: string;
35
+ discountType: any;
36
+ discountValue: number;
37
+ conditions: any[];
38
+ }
39
+ export interface Quote {
40
+ currency: string;
41
+ market: string;
42
+ subtotal: number;
43
+ shipping: number;
44
+ discount: number;
45
+ tax: number;
46
+ total: number;
47
+ lineItems: QuoteLineItem[];
48
+ shippingMethod: ShippingMethod | null;
49
+ promoCode: PromoCodeValidation | null;
50
+ payment: Payment;
51
+ chargeAmount: number;
52
+ }
53
+ export interface Price {
54
+ market: string;
55
+ amount: number;
56
+ compareAt?: number;
57
+ }
58
+ export interface Location {
59
+ country?: string | null;
60
+ address?: string | null;
61
+ city?: string | null;
62
+ postalCode?: string | null;
63
+ countryCode?: string | null;
64
+ coordinates?: {
65
+ lat: number;
66
+ lon: number;
67
+ } | null;
68
+ }
69
+ export interface Zone {
70
+ id: string;
71
+ name: string;
72
+ countries: string[];
73
+ taxBps: number;
74
+ shippingMethods: ShippingMethod[];
75
+ }
76
+ export interface EshopCartItem {
77
+ id: string;
78
+ productId: string;
79
+ variantId: string;
80
+ productName: string;
81
+ productSlug: string;
82
+ variantAttributes: Record<string, any>;
83
+ price: Price;
84
+ quantity: number;
85
+ addedAt: number;
86
+ }
87
+ export interface ReservationCartPart {
88
+ id: string;
89
+ serviceId: string;
90
+ serviceName: string;
91
+ date: string;
92
+ from: number;
93
+ to: number;
94
+ timeText: string;
95
+ isMultiDay: boolean;
96
+ reservationMethod: string;
97
+ providerId?: string;
98
+ blocks: any[];
99
+ }
100
+ export interface PaymentProviderConfig {
101
+ type: "STRIPE";
102
+ publicKey: string;
103
+ secretKey: string;
104
+ webhookSecret: string;
105
+ }
106
+ export interface Market {
107
+ id: string;
108
+ name: string;
109
+ currency: string;
110
+ taxMode: "INCLUSIVE" | "EXCLUSIVE";
111
+ taxBps: number;
112
+ paymentMethods: BusinessPaymentMethod[];
113
+ }
114
+ export interface ShippingMethod {
115
+ id: string;
116
+ type: 'SHIPPING' | 'PICKUP';
117
+ prices: Price[];
118
+ taxable: boolean;
119
+ etaText: string;
120
+ location?: Location;
121
+ }
122
+ export interface BusinessPaymentMethod {
123
+ method: PaymentMethod;
124
+ }
125
+ export interface BusinessConfig {
126
+ orderBlocks?: any[];
127
+ reservationBlocks?: any[];
128
+ markets?: Market[];
129
+ zones?: Zone[];
130
+ paymentProvider?: PaymentProviderConfig;
131
+ aiProvider?: any;
132
+ }
133
+ export interface Business {
134
+ id: string;
135
+ name: string;
136
+ configs?: BusinessConfig;
137
+ }
138
+ export interface EshopStoreState {
139
+ businessId: string;
140
+ selectedShippingMethodId: string | null;
141
+ userToken: string | null;
142
+ processingCheckout: boolean;
143
+ loading: boolean;
144
+ error: string | null;
145
+ phoneNumber: string;
146
+ phoneError: string | null;
147
+ verificationCode: string;
148
+ verifyError: string | null;
149
+ }
150
+ export interface Block {
151
+ id: string;
152
+ key: string;
153
+ type: string;
154
+ properties?: any;
155
+ value?: any;
156
+ }
157
+ export interface ApiResponse<T> {
158
+ success: boolean;
159
+ data?: T;
160
+ error?: string;
161
+ code?: string;
162
+ cursor?: string;
163
+ total?: number;
164
+ }
165
+ export interface PaginatedResponse<T> {
166
+ data: T[];
167
+ meta?: {
168
+ total: number;
169
+ page: number;
170
+ per_page: number;
171
+ };
172
+ }
173
+ export interface Newsletter {
174
+ id: string;
175
+ businessId: string;
176
+ name: string;
177
+ description: string;
178
+ newsletterType: "FREE" | "PAID";
179
+ statuses: any[];
180
+ prices: Price[];
181
+ paymentProduct?: {
182
+ priceId: string;
183
+ };
184
+ unsubscribeRedirectUrl: string;
185
+ createdAt: number;
186
+ updatedAt: number;
187
+ }
188
+ export interface MarketConfigClient {
189
+ currency: string;
190
+ taxMode: string;
191
+ defaultTaxRate: number;
192
+ paymentMethods: string[];
193
+ showTaxIncluded: boolean;
194
+ shippingMethods?: ShippingMethod[];
195
+ }
196
+ export interface ReservationStoreState {
197
+ currentStep: number;
198
+ totalSteps: number;
199
+ steps: Record<number, {
200
+ name: string;
201
+ labelKey: string;
202
+ }>;
203
+ weekdays: string[];
204
+ monthYear: string;
205
+ days: any[];
206
+ current: Date;
207
+ selectedDate: string | null;
208
+ slots: any[];
209
+ selectedSlot: any | null;
210
+ selectedMethod: string | null;
211
+ selectedProvider: any | null;
212
+ providers: any[];
213
+ loading: boolean;
214
+ startDate: string | null;
215
+ endDate: string | null;
216
+ isMultiDay: boolean;
217
+ phoneNumber: string;
218
+ phoneError: string | null;
219
+ phoneSuccess: string | null;
220
+ verificationCode: string;
221
+ verifyError: string | null;
222
+ isPhoneVerified: boolean;
223
+ isSendingCode: boolean;
224
+ isVerifying: boolean;
225
+ codeSentAt: number | null;
226
+ canResendAt: number | null;
227
+ guestToken: string | null;
228
+ service: any | null;
229
+ business: Business | null;
230
+ currency: string;
231
+ reservationBlocks: Block[];
232
+ apiUrl: string;
233
+ businessId: string;
234
+ storageUrl: string;
235
+ timezone: string;
236
+ tzGroups: any;
237
+ parts: ReservationCartPart[];
238
+ allowedPaymentMethods: string[];
239
+ paymentConfig: {
240
+ provider: PaymentProviderConfig | null;
241
+ enabled: boolean;
242
+ };
243
+ }
244
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ // Core type definitions
2
+ // All types are exported individually for better tree-shaking
3
+ export var PaymentMethod;
4
+ (function (PaymentMethod) {
5
+ PaymentMethod["Cash"] = "CASH";
6
+ PaymentMethod["CreditCard"] = "CREDIT_CARD";
7
+ PaymentMethod["Free"] = "FREE";
8
+ })(PaymentMethod || (PaymentMethod = {}));
@@ -0,0 +1,30 @@
1
+ export interface Block {
2
+ id: string;
3
+ key: string;
4
+ type: string;
5
+ properties: any;
6
+ value: any;
7
+ }
8
+ export interface Collection {
9
+ id: string;
10
+ blocks: Block[];
11
+ }
12
+ export interface CollectionEntry {
13
+ id: string;
14
+ collection_id: string;
15
+ blocks: Block[];
16
+ }
17
+ export declare function getBlockLabel(block: any, locale?: string): string;
18
+ export declare function formatBlockValue(block: any): string;
19
+ export declare function prepareBlocksForSubmission(formData: any): any[];
20
+ export declare function extractBlockValues(blocks: any[]): Record<string, any>;
21
+ export declare function getBlockTextValue(block: any, locale?: string): string;
22
+ export declare const getBlockValue: (entry: any, blockKey: string) => any;
23
+ export declare const getBlockValues: (entry: any, blockKey: string) => any;
24
+ export declare const getBlockObjectValues: (entry: any, blockKey: string, locale?: string) => any;
25
+ export declare const getBlockFromArray: (entry: any, blockKey: string, locale?: string) => any;
26
+ export declare const getImageUrl: (imageBlock: any, isBlock?: boolean) => any;
27
+ export declare function getGalleryThumbnail(gallery: any): any;
28
+ export declare function thumbnailUrl(service: any): string;
29
+ export declare const translateMap: (labels: any, lang: string, fallback?: string) => any;
30
+ //# sourceMappingURL=blocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/utils/blocks.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAE,MAAa,GAAG,MAAM,CAmBvE;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CA8BnD;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,CAa/D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAYrE;AAGD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAE,MAAa,GAAG,MAAM,CAgB3E;AAGD,eAAO,MAAM,aAAa,GAAI,OAAO,GAAG,EAAE,UAAU,MAAM,QAQzD,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,GAAG,EAAE,UAAU,MAAM,QAQ1D,CAAC;AAgCF,eAAO,MAAM,oBAAoB,GAAI,OAAO,GAAG,EAAE,UAAU,MAAM,EAAE,eAAa,QAkB/E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,OAAO,GAAG,EAAE,UAAU,MAAM,EAAE,eAAa,QAW5E,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,YAAY,GAAG,EAAE,iBAAc,QA4D1D,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,GAAG,OAK/C;AAGD,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,UAIxC;AAED,eAAO,MAAM,YAAY,GAAI,QAAQ,GAAG,EAAE,MAAM,MAAM,EAAE,iBAAoB,QAiB3E,CAAC"}
@@ -0,0 +1,237 @@
1
+ // Block utilities (extracted from index.ts)
2
+ import { STORAGE_URL } from '../config';
3
+ export function getBlockLabel(block, locale = 'en') {
4
+ if (!block)
5
+ return "";
6
+ if (block.properties?.label) {
7
+ if (typeof block.properties.label === "object") {
8
+ return (block.properties.label[locale] ||
9
+ block.properties.label.en ||
10
+ Object.values(block.properties.label)[0] ||
11
+ "");
12
+ }
13
+ if (typeof block.properties.label === "string") {
14
+ return block.properties.label;
15
+ }
16
+ }
17
+ // Convert key to readable format
18
+ return block.key?.replace(/_/g, ' ').replace(/\b\w/g, (l) => l.toUpperCase()) || "";
19
+ }
20
+ export function formatBlockValue(block) {
21
+ if (!block || block.value === null || block.value === undefined) {
22
+ return "";
23
+ }
24
+ switch (block.type) {
25
+ case "BOOLEAN":
26
+ return block.value ? "Yes" : "No";
27
+ case "NUMBER":
28
+ // Handle date/datetime variants
29
+ if (block.properties?.variant === "DATE" || block.properties?.variant === "DATE_TIME") {
30
+ try {
31
+ return new Date(block.value).toLocaleDateString();
32
+ }
33
+ catch (e) {
34
+ return String(block.value);
35
+ }
36
+ }
37
+ return String(block.value);
38
+ case "RELATIONSHIP":
39
+ if (Array.isArray(block.value) && block.value.length > 0) {
40
+ const firstValue = block.value[0];
41
+ if (firstValue && firstValue.mimeType) {
42
+ return firstValue.name || firstValue.id || "Media";
43
+ }
44
+ return firstValue.title || firstValue.name || firstValue.id || "Entry";
45
+ }
46
+ return String(block.value);
47
+ default:
48
+ return String(block.value);
49
+ }
50
+ }
51
+ export function prepareBlocksForSubmission(formData) {
52
+ const preparedBlocks = [];
53
+ Object.keys(formData).forEach((key) => {
54
+ if (formData[key] !== null && formData[key] !== undefined) {
55
+ preparedBlocks.push({
56
+ key,
57
+ value: [formData[key]],
58
+ });
59
+ }
60
+ });
61
+ return preparedBlocks;
62
+ }
63
+ export function extractBlockValues(blocks) {
64
+ const values = {};
65
+ blocks.forEach((block) => {
66
+ if (block.value && block.value.length > 0) {
67
+ values[block.key] = block.value[0];
68
+ }
69
+ else {
70
+ values[block.key] = null;
71
+ }
72
+ });
73
+ return values;
74
+ }
75
+ // Extract localized text value from a block, handling multilingual content
76
+ export function getBlockTextValue(block, locale = 'en') {
77
+ if (!block || !block.value || block.value.length === 0)
78
+ return '';
79
+ const firstValue = block.value[0];
80
+ // Handle multilingual object
81
+ if (typeof firstValue === 'object' && firstValue !== null) {
82
+ // Try specified locale first, then 'en', then first available language
83
+ if (firstValue[locale])
84
+ return firstValue[locale];
85
+ if (firstValue.en)
86
+ return firstValue.en;
87
+ const values = Object.values(firstValue);
88
+ return String(values[0] || '');
89
+ }
90
+ // Handle simple string
91
+ return String(firstValue);
92
+ }
93
+ // Legacy functions for backward compatibility
94
+ export const getBlockValue = (entry, blockKey) => {
95
+ if (!entry || !entry.blocks)
96
+ return null;
97
+ const block = entry.blocks.find((f) => f.key === blockKey);
98
+ if (!block || !block.value || block.value.length === 0)
99
+ return null;
100
+ return block.value[0];
101
+ };
102
+ export const getBlockValues = (entry, blockKey) => {
103
+ if (!entry || !entry.blocks)
104
+ return null;
105
+ const block = entry.blocks.find((f) => f.key === blockKey);
106
+ if (!block || !block.value || block.value.length === 0)
107
+ return null;
108
+ return block.value;
109
+ };
110
+ function unwrapBlock(block, locale) {
111
+ if (!block?.type || block.value === undefined)
112
+ return block;
113
+ // Nested objects / lists → recurse for every child
114
+ if (block.type === "BLOCK") {
115
+ return block.value.map((obj) => {
116
+ const parsed = {};
117
+ for (const [k, v] of Object.entries(obj)) {
118
+ parsed[k] = unwrapBlock(v, locale);
119
+ }
120
+ return parsed;
121
+ });
122
+ }
123
+ // Primitive leaves (text/number/boolean/media …)
124
+ const isLocalized = block.type === "TEXT";
125
+ const isList = block.properties?.ui === "list" ||
126
+ (block.properties?.maxValues ?? 1) > 1 ||
127
+ block.value.length > 1;
128
+ if (isList) {
129
+ return isLocalized
130
+ ? block.value.map((v) => v[locale] || v["en"])
131
+ : [...block.value];
132
+ }
133
+ return isLocalized ? block.value[0][locale] || block.value[0]["en"] : block.value[0];
134
+ }
135
+ export const getBlockObjectValues = (entry, blockKey, locale = "en") => {
136
+ if (!entry) {
137
+ return [];
138
+ }
139
+ const values = getBlockValues(entry, blockKey); // top‑level list
140
+ const parsed = values.map((obj) => {
141
+ const res = obj.value.reduce((acc, current) => {
142
+ acc[current.key] = unwrapBlock(current, locale);
143
+ return acc;
144
+ }, {});
145
+ return res;
146
+ });
147
+ return parsed;
148
+ };
149
+ export const getBlockFromArray = (entry, blockKey, locale = "en") => {
150
+ if (!entry) {
151
+ return [];
152
+ }
153
+ const values = getBlockValues(entry, blockKey); // top‑level list
154
+ return values.reduce((acc, current) => {
155
+ acc[current.key] = unwrapBlock(current, locale);
156
+ return acc;
157
+ });
158
+ };
159
+ export const getImageUrl = (imageBlock, isBlock = true) => {
160
+ if (!imageBlock)
161
+ return null;
162
+ const storageUrl = "https://storage.arky.io/dev"; // STORAGE_URL || "https://storage.arky.io/dev";
163
+ // Helper to check if URL is external
164
+ const isExternalUrl = (url) => {
165
+ return url.startsWith('http://') || url.startsWith('https://');
166
+ };
167
+ // Handle relationship blocks with media
168
+ if (imageBlock.type === 'RELATIONSHIP' && Array.isArray(imageBlock.value)) {
169
+ const mediaValue = imageBlock.value[0];
170
+ if (mediaValue && mediaValue.mimeType) {
171
+ // Handle media with resolutions structure
172
+ if (mediaValue.resolutions && mediaValue.resolutions.original && mediaValue.resolutions.original.url) {
173
+ const url = mediaValue.resolutions.original.url;
174
+ return isExternalUrl(url) ? url : `${storageUrl}/${url}`;
175
+ }
176
+ // Handle direct URL on media
177
+ if (mediaValue.url) {
178
+ return isExternalUrl(mediaValue.url) ? mediaValue.url : `${storageUrl}/${mediaValue.url}`;
179
+ }
180
+ }
181
+ return null;
182
+ }
183
+ if (isBlock) {
184
+ if (typeof imageBlock === "string") {
185
+ // Check if it's already a full URL
186
+ if (isExternalUrl(imageBlock)) {
187
+ return imageBlock;
188
+ }
189
+ return `${storageUrl}/${imageBlock}`;
190
+ }
191
+ if (imageBlock.url) {
192
+ // Check if it's already a full URL
193
+ if (isExternalUrl(imageBlock.url)) {
194
+ return imageBlock.url;
195
+ }
196
+ return `${storageUrl}/${imageBlock.url}`;
197
+ }
198
+ }
199
+ if (imageBlock.resolutions &&
200
+ imageBlock.resolutions.original &&
201
+ imageBlock.resolutions.original.url) {
202
+ const url = imageBlock.resolutions.original.url;
203
+ // Check if it's already a full URL
204
+ if (isExternalUrl(url)) {
205
+ return url;
206
+ }
207
+ return `${storageUrl}/${url}`;
208
+ }
209
+ return null;
210
+ };
211
+ export function getGalleryThumbnail(gallery) {
212
+ if (!gallery?.length)
213
+ return null;
214
+ const item = gallery.find((g) => g.settings.isThumbnail) || gallery[0];
215
+ const res = item.media.resolutions.thumbnail || item.media.resolutions.original;
216
+ return res?.url || null;
217
+ }
218
+ // full URL or null
219
+ export function thumbnailUrl(service) {
220
+ const storageUrl = STORAGE_URL || "";
221
+ const path = getGalleryThumbnail(service.gallery);
222
+ return path ? `${storageUrl}/${path}` : null;
223
+ }
224
+ export const translateMap = (labels, lang, fallback = "unknown") => {
225
+ let parsedLang = "en";
226
+ if (lang === "sr") {
227
+ parsedLang = "bih";
228
+ }
229
+ if (!labels) {
230
+ return fallback;
231
+ }
232
+ const label = labels[parsedLang];
233
+ if (!label) {
234
+ return fallback;
235
+ }
236
+ return label;
237
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Maps currency codes to their display symbols
3
+ */
4
+ export declare function getCurrencySymbol(currency: string): string;
5
+ /**
6
+ * Formats a price with the appropriate currency symbol
7
+ */
8
+ export declare function formatCurrencyAmount(amount: number, currency: string): string;
9
+ //# sourceMappingURL=currency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../src/utils/currency.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmF1D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY7E"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Maps currency codes to their display symbols
3
+ */
4
+ export function getCurrencySymbol(currency) {
5
+ const currencySymbols = {
6
+ USD: '$',
7
+ EUR: '€',
8
+ GBP: '£',
9
+ CAD: 'C$',
10
+ AUD: 'A$',
11
+ JPY: '¥',
12
+ CHF: 'CHF',
13
+ SEK: 'kr',
14
+ NOK: 'kr',
15
+ DKK: 'kr',
16
+ PLN: 'zł',
17
+ CZK: 'Kč',
18
+ HUF: 'Ft',
19
+ RON: 'lei',
20
+ BGN: 'лв',
21
+ HRK: 'kn',
22
+ RSD: 'дин',
23
+ BAM: 'KM',
24
+ MKD: 'ден',
25
+ ALL: 'L',
26
+ TRY: '₺',
27
+ RUB: '₽',
28
+ UAH: '₴',
29
+ BYN: 'Br',
30
+ CNY: '¥',
31
+ INR: '₹',
32
+ KRW: '₩',
33
+ THB: '฿',
34
+ VND: '₫',
35
+ SGD: 'S$',
36
+ MYR: 'RM',
37
+ IDR: 'Rp',
38
+ PHP: '₱',
39
+ BRL: 'R$',
40
+ ARS: '$',
41
+ CLP: '$',
42
+ COP: '$',
43
+ PEN: 'S/',
44
+ MXN: '$',
45
+ ZAR: 'R',
46
+ EGP: 'E£',
47
+ NGN: '₦',
48
+ KES: 'KSh',
49
+ GHS: '₵',
50
+ MAD: 'DH',
51
+ TND: 'د.ت',
52
+ DZD: 'د.ج',
53
+ LYD: 'ل.د',
54
+ AED: 'د.إ',
55
+ SAR: 'ر.س',
56
+ QAR: 'ر.ق',
57
+ KWD: 'د.ك',
58
+ BHD: 'ب.د',
59
+ OMR: 'ر.ع',
60
+ JOD: 'د.أ',
61
+ LBP: 'ل.ل',
62
+ SYP: 'ل.س',
63
+ IQD: 'ع.د',
64
+ IRR: '﷼',
65
+ AFN: '؋',
66
+ PKR: '₨',
67
+ LKR: '₨',
68
+ NPR: '₨',
69
+ BDT: '৳',
70
+ MMK: 'K',
71
+ LAK: '₭',
72
+ KHR: '៛',
73
+ MNT: '₮',
74
+ KZT: '₸',
75
+ UZS: 'лв',
76
+ KGS: 'лв',
77
+ TJS: 'SM',
78
+ TMT: 'T',
79
+ AZN: '₼',
80
+ GEL: '₾',
81
+ AMD: '֏',
82
+ BYR: 'p.',
83
+ MDL: 'L'
84
+ };
85
+ return currencySymbols[currency.toUpperCase()] || currency;
86
+ }
87
+ /**
88
+ * Formats a price with the appropriate currency symbol
89
+ */
90
+ export function formatCurrencyAmount(amount, currency) {
91
+ const symbol = getCurrencySymbol(currency);
92
+ const formattedAmount = (amount / 100).toFixed(2);
93
+ // For some currencies, symbol goes after the amount
94
+ const symbolAfterCurrencies = ['SEK', 'NOK', 'DKK', 'PLN', 'CZK', 'HUF', 'RON', 'BGN', 'HRK'];
95
+ if (symbolAfterCurrencies.includes(currency.toUpperCase())) {
96
+ return `${formattedAmount} ${symbol}`;
97
+ }
98
+ return `${symbol}${formattedAmount}`;
99
+ }