@flower-city-online/itinerary-lib 0.0.39 → 0.0.41

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 CHANGED
@@ -58,6 +58,73 @@ If you prefer to use the source SCSS files and configure Tailwind yourself, you
58
58
 
59
59
  This requires you to have Tailwind CSS configured in your project.
60
60
 
61
+ ## Setting Up Translations
62
+
63
+ The library uses `@ngx-translate` for internationalization. To make translations work in your consuming application, follow these steps:
64
+
65
+ ### Step 1: Configure TranslateModule in Your App
66
+
67
+ In your consuming app's `app.module.ts` (or `app.config.ts` for standalone), add:
68
+
69
+ ```typescript
70
+ import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
71
+ import { TranslateHttpLoader } from '@ngx-translate/http-loader';
72
+ import { HttpClient } from '@angular/common/http';
73
+
74
+ export function createTranslateLoader(http: HttpClient) {
75
+ return new TranslateHttpLoader(http, './assets/i18n/', '.json');
76
+ }
77
+
78
+ @NgModule({
79
+ imports: [
80
+ // ... other imports
81
+ TranslateModule.forRoot({
82
+ loader: {
83
+ provide: TranslateLoader,
84
+ useFactory: createTranslateLoader,
85
+ deps: [HttpClient]
86
+ },
87
+ defaultLanguage: 'en'
88
+ }),
89
+ // ... other modules
90
+ ]
91
+ })
92
+ ```
93
+
94
+ ### Step 2: Copy Translation Files
95
+
96
+ You need to copy the translation files from the library to your app's assets folder.
97
+
98
+ **Option A: Manual Copy (One-time)**
99
+ Copy the translation files from:
100
+ ```
101
+ node_modules/@flower-city-online/itinerary-lib/src/assets/i18n/
102
+ ```
103
+ To:
104
+ ```
105
+ src/assets/i18n/
106
+ ```
107
+
108
+ **Option B: Automatic Copy via angular.json (Recommended)**
109
+
110
+ Add this to your `angular.json` in the `assets` array of your project:
111
+
112
+ ```json
113
+ {
114
+ "glob": "**/*",
115
+ "input": "node_modules/@flower-city-online/itinerary-lib/src/assets/i18n",
116
+ "output": "/assets/i18n"
117
+ }
118
+ ```
119
+
120
+ This will automatically copy the translation files when you build your app.
121
+
122
+ ### Step 3: Verify
123
+
124
+ After setup, translations should work automatically. The library will load translations from `/assets/i18n/` in your consuming app.
125
+
126
+ **Note:** If you need to customize translations, you can override specific keys in your own translation files. The library's translations will be merged with your app's translations.
127
+
61
128
  ## Running unit tests
62
129
 
63
130
  Run `ng test itinerary-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
@@ -13,7 +13,21 @@ import { IonicModule } from '@ionic/angular';
13
13
  import { CommonModule } from '@angular/common';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "@ngx-translate/core";
16
- export const httpLoaderFactory = (http) => new TranslateHttpLoader(new HttpClient(http), './assets/i18n/', '.json');
16
+ /**
17
+ * Translation loader factory for the library.
18
+ * Points to the library's translation files in node_modules.
19
+ *
20
+ * Note: The consuming app must:
21
+ * 1. Have TranslateModule.forRoot() configured in their AppModule
22
+ * 2. Copy translation files from node_modules/@flower-city-online/itinerary-lib/src/assets/i18n/
23
+ * to their own assets/i18n/ folder, OR
24
+ * 3. Configure their own TranslateModule to use the library's translations
25
+ */
26
+ export function httpLoaderFactory(http) {
27
+ // Use absolute path from root - works in both dev and production
28
+ // The consuming app should copy these files to their assets folder or configure their own loader
29
+ return new TranslateHttpLoader(new HttpClient(http), '/assets/i18n/', '.json');
30
+ }
17
31
  export class ItineraryLibModule {
18
32
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItineraryLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19
33
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ItineraryLibModule, declarations: [ItineraryLibComponent], imports: [CommonModule, i1.TranslateModule, ButtonsModule,
@@ -79,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
79
93
  providers: [],
80
94
  }]
81
95
  }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRpbmVyYXJ5LWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdGluZXJhcnktbGliL3NyYy9saWIvaXRpbmVyYXJ5LWFwcC9pdGluZXJhcnktbGliLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsWUFBWSxHQUNiLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRS9DLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBaUIsRUFBdUIsRUFBRSxDQUMxRSxJQUFJLG1CQUFtQixDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBOEIzRSxNQUFNLE9BQU8sa0JBQWtCO3dHQUFsQixrQkFBa0I7eUdBQWxCLGtCQUFrQixpQkEzQmQscUJBQXFCLGFBRWxDLFlBQVksc0JBU1osYUFBYTtZQUNiLFdBQVc7WUFDWCxXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixVQUFVO1lBQ1YseUJBQXlCO1lBQ3pCLDRCQUE0QixhQUVwQixxQkFBcUIsRUFBRSx5QkFBeUI7eUdBSS9DLGtCQUFrQixZQXpCM0IsWUFBWTtZQUNaLGVBQWUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZCLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixNQUFNLEVBQUU7b0JBQ04sT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxpQkFBaUI7b0JBQzdCLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQztpQkFDcEI7YUFDRixDQUFDO1lBQ0YsYUFBYTtZQUNiLFdBQVc7WUFDWCxXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixVQUFVO1lBQ1YseUJBQXlCO1lBQ3pCLDRCQUE0QixFQUVHLHlCQUF5Qjs7NEZBSS9DLGtCQUFrQjtrQkE1QjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGVBQWUsQ0FBQyxRQUFRLENBQUM7NEJBQ3ZCLGVBQWUsRUFBRSxJQUFJOzRCQUNyQixNQUFNLEVBQUU7Z0NBQ04sT0FBTyxFQUFFLGVBQWU7Z0NBQ3hCLFVBQVUsRUFBRSxpQkFBaUI7Z0NBQzdCLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQzs2QkFDcEI7eUJBQ0YsQ0FBQzt3QkFDRixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVix5QkFBeUI7d0JBQ3pCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFLENBQUMscUJBQXFCLEVBQUUseUJBQXlCLENBQUM7b0JBQzNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbnNNb2R1bGUsXHJcbiAgTGliTW9kYWxNb2R1bGUsXHJcbiAgUmFuZ2VTZWxlY3Rvck1vZHVsZSxcclxuICBUb2dnbGVNb2R1bGUsXHJcbn0gZnJvbSAnQG5hbml0ZW5pbmphL2lvbmljLWxpYic7XHJcbmltcG9ydCB7IEl0aW5lcmFyeUxpYlJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2l0aW5lcmFyeS1saWItcm91dGluZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBJdGluZXJhcnlMaWJDb21wb25lbnQgfSBmcm9tICcuL2l0aW5lcmFyeS1saWIuY29tcG9uZW50JzsgXHJcbmltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVIdHRwTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvaHR0cC1sb2FkZXInO1xyXG5pbXBvcnQgeyBVc2VyTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL3VzZXIvdXNlci5tb2R1bGUnOyBcclxuaW1wb3J0IHsgTmV4dHNhcGllbkNvbXBvbmVudExpYk1vZHVsZSB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInO1xyXG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJzsgXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5leHBvcnQgY29uc3QgaHR0cExvYWRlckZhY3RvcnkgPSAoaHR0cDogSHR0cEJhY2tlbmQpOiBUcmFuc2xhdGVIdHRwTG9hZGVyID0+XHJcbiAgbmV3IFRyYW5zbGF0ZUh0dHBMb2FkZXIobmV3IEh0dHBDbGllbnQoaHR0cCksICcuL2Fzc2V0cy9pMThuLycsICcuanNvbicpO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtJdGluZXJhcnlMaWJDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCh7XHJcbiAgICAgIGRlZmF1bHRMYW5ndWFnZTogJ2VuJyxcclxuICAgICAgbG9hZGVyOiB7XHJcbiAgICAgICAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxyXG4gICAgICAgIHVzZUZhY3Rvcnk6IGh0dHBMb2FkZXJGYWN0b3J5LFxyXG4gICAgICAgIGRlcHM6IFtIdHRwQmFja2VuZF0sXHJcbiAgICAgIH0sXHJcbiAgICB9KSxcclxuICAgIEJ1dHRvbnNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIElvbmljTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIExpYk1vZGFsTW9kdWxlLFxyXG4gICAgVG9nZ2xlTW9kdWxlLFxyXG4gICAgUmFuZ2VTZWxlY3Rvck1vZHVsZSxcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgIFVzZXJNb2R1bGUsXHJcbiAgICBJdGluZXJhcnlMaWJSb3V0aW5nTW9kdWxlLFxyXG4gICAgTmV4dHNhcGllbkNvbXBvbmVudExpYk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW0l0aW5lcmFyeUxpYkNvbXBvbmVudCwgSXRpbmVyYXJ5TGliUm91dGluZ01vZHVsZV0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHByb3ZpZGVyczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJdGluZXJhcnlMaWJNb2R1bGUgeyB9XHJcbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRpbmVyYXJ5LWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdGluZXJhcnktbGliL3NyYy9saWIvaXRpbmVyYXJ5LWFwcC9pdGluZXJhcnktbGliLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsWUFBWSxHQUNiLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRS9DOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFpQjtJQUNqRCxpRUFBaUU7SUFDakUsaUdBQWlHO0lBQ2pHLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakYsQ0FBQztBQThCRCxNQUFNLE9BQU8sa0JBQWtCO3dHQUFsQixrQkFBa0I7eUdBQWxCLGtCQUFrQixpQkEzQmQscUJBQXFCLGFBRWxDLFlBQVksc0JBU1osYUFBYTtZQUNiLFdBQVc7WUFDWCxXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixVQUFVO1lBQ1YseUJBQXlCO1lBQ3pCLDRCQUE0QixhQUVwQixxQkFBcUIsRUFBRSx5QkFBeUI7eUdBSS9DLGtCQUFrQixZQXpCM0IsWUFBWTtZQUNaLGVBQWUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZCLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixNQUFNLEVBQUU7b0JBQ04sT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxpQkFBaUI7b0JBQzdCLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQztpQkFDcEI7YUFDRixDQUFDO1lBQ0YsYUFBYTtZQUNiLFdBQVc7WUFDWCxXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixVQUFVO1lBQ1YseUJBQXlCO1lBQ3pCLDRCQUE0QixFQUVHLHlCQUF5Qjs7NEZBSS9DLGtCQUFrQjtrQkE1QjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGVBQWUsQ0FBQyxRQUFRLENBQUM7NEJBQ3ZCLGVBQWUsRUFBRSxJQUFJOzRCQUNyQixNQUFNLEVBQUU7Z0NBQ04sT0FBTyxFQUFFLGVBQWU7Z0NBQ3hCLFVBQVUsRUFBRSxpQkFBaUI7Z0NBQzdCLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQzs2QkFDcEI7eUJBQ0YsQ0FBQzt3QkFDRixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVix5QkFBeUI7d0JBQ3pCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFLENBQUMscUJBQXFCLEVBQUUseUJBQXlCLENBQUM7b0JBQzNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbnNNb2R1bGUsXHJcbiAgTGliTW9kYWxNb2R1bGUsXHJcbiAgUmFuZ2VTZWxlY3Rvck1vZHVsZSxcclxuICBUb2dnbGVNb2R1bGUsXHJcbn0gZnJvbSAnQG5hbml0ZW5pbmphL2lvbmljLWxpYic7XHJcbmltcG9ydCB7IEl0aW5lcmFyeUxpYlJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2l0aW5lcmFyeS1saWItcm91dGluZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBJdGluZXJhcnlMaWJDb21wb25lbnQgfSBmcm9tICcuL2l0aW5lcmFyeS1saWIuY29tcG9uZW50JzsgXHJcbmltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVIdHRwTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvaHR0cC1sb2FkZXInO1xyXG5pbXBvcnQgeyBVc2VyTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL3VzZXIvdXNlci5tb2R1bGUnOyBcclxuaW1wb3J0IHsgTmV4dHNhcGllbkNvbXBvbmVudExpYk1vZHVsZSB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInO1xyXG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJzsgXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG4vKipcclxuICogVHJhbnNsYXRpb24gbG9hZGVyIGZhY3RvcnkgZm9yIHRoZSBsaWJyYXJ5LlxyXG4gKiBQb2ludHMgdG8gdGhlIGxpYnJhcnkncyB0cmFuc2xhdGlvbiBmaWxlcyBpbiBub2RlX21vZHVsZXMuXHJcbiAqIFxyXG4gKiBOb3RlOiBUaGUgY29uc3VtaW5nIGFwcCBtdXN0OlxyXG4gKiAxLiBIYXZlIFRyYW5zbGF0ZU1vZHVsZS5mb3JSb290KCkgY29uZmlndXJlZCBpbiB0aGVpciBBcHBNb2R1bGVcclxuICogMi4gQ29weSB0cmFuc2xhdGlvbiBmaWxlcyBmcm9tIG5vZGVfbW9kdWxlcy9AZmxvd2VyLWNpdHktb25saW5lL2l0aW5lcmFyeS1saWIvc3JjL2Fzc2V0cy9pMThuL1xyXG4gKiAgICB0byB0aGVpciBvd24gYXNzZXRzL2kxOG4vIGZvbGRlciwgT1JcclxuICogMy4gQ29uZmlndXJlIHRoZWlyIG93biBUcmFuc2xhdGVNb2R1bGUgdG8gdXNlIHRoZSBsaWJyYXJ5J3MgdHJhbnNsYXRpb25zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaHR0cExvYWRlckZhY3RvcnkoaHR0cDogSHR0cEJhY2tlbmQpOiBUcmFuc2xhdGVIdHRwTG9hZGVyIHtcclxuICAvLyBVc2UgYWJzb2x1dGUgcGF0aCBmcm9tIHJvb3QgLSB3b3JrcyBpbiBib3RoIGRldiBhbmQgcHJvZHVjdGlvblxyXG4gIC8vIFRoZSBjb25zdW1pbmcgYXBwIHNob3VsZCBjb3B5IHRoZXNlIGZpbGVzIHRvIHRoZWlyIGFzc2V0cyBmb2xkZXIgb3IgY29uZmlndXJlIHRoZWlyIG93biBsb2FkZXJcclxuICByZXR1cm4gbmV3IFRyYW5zbGF0ZUh0dHBMb2FkZXIobmV3IEh0dHBDbGllbnQoaHR0cCksICcvYXNzZXRzL2kxOG4vJywgJy5qc29uJyk7XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbSXRpbmVyYXJ5TGliQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoe1xyXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2U6ICdlbicsXHJcbiAgICAgIGxvYWRlcjoge1xyXG4gICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcclxuICAgICAgICB1c2VGYWN0b3J5OiBodHRwTG9hZGVyRmFjdG9yeSxcclxuICAgICAgICBkZXBzOiBbSHR0cEJhY2tlbmRdLFxyXG4gICAgICB9LFxyXG4gICAgfSksXHJcbiAgICBCdXR0b25zTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBJb25pY01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBMaWJNb2RhbE1vZHVsZSxcclxuICAgIFRvZ2dsZU1vZHVsZSxcclxuICAgIFJhbmdlU2VsZWN0b3JNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBVc2VyTW9kdWxlLFxyXG4gICAgSXRpbmVyYXJ5TGliUm91dGluZ01vZHVsZSxcclxuICAgIE5leHRzYXBpZW5Db21wb25lbnRMaWJNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtJdGluZXJhcnlMaWJDb21wb25lbnQsIEl0aW5lcmFyeUxpYlJvdXRpbmdNb2R1bGVdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBwcm92aWRlcnM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSXRpbmVyYXJ5TGliTW9kdWxlIHsgfVxyXG4iXX0=
@@ -9255,7 +9255,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
9255
9255
  }]
9256
9256
  }] });
9257
9257
 
9258
- const httpLoaderFactory = (http) => new TranslateHttpLoader(new HttpClient(http), './assets/i18n/', '.json');
9258
+ /**
9259
+ * Translation loader factory for the library.
9260
+ * Points to the library's translation files in node_modules.
9261
+ *
9262
+ * Note: The consuming app must:
9263
+ * 1. Have TranslateModule.forRoot() configured in their AppModule
9264
+ * 2. Copy translation files from node_modules/@flower-city-online/itinerary-lib/src/assets/i18n/
9265
+ * to their own assets/i18n/ folder, OR
9266
+ * 3. Configure their own TranslateModule to use the library's translations
9267
+ */
9268
+ function httpLoaderFactory(http) {
9269
+ // Use absolute path from root - works in both dev and production
9270
+ // The consuming app should copy these files to their assets folder or configure their own loader
9271
+ return new TranslateHttpLoader(new HttpClient(http), '/assets/i18n/', '.json');
9272
+ }
9259
9273
  class ItineraryLibModule {
9260
9274
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItineraryLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9261
9275
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ItineraryLibModule, declarations: [ItineraryLibComponent], imports: [CommonModule, i4$1.TranslateModule, ButtonsModule,