@designcrowd/library.brand-page 5.17.2 → 5.17.4

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 (120) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DVbX019x.js → CreatedOnBrandCrowd-de-de-C_NzyXvG.js} +3 -3
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-U7ZUILmi.js → CreatedOnBrandCrowd-en-us-DSmpdByg.js} +3 -3
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-D97zjmv_.js → CreatedOnBrandCrowd-es-es-4O9ttd4y.js} +3 -3
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-BuOAG7-D.js → CreatedOnBrandCrowd-fr-ca-DDr8rQHb.js} +3 -3
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-BuOAG7-D.js → CreatedOnBrandCrowd-fr-fr-DDr8rQHb.js} +3 -3
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-DMTRsNBz.js → CreatedOnBrandCrowd-pt-br-BUTVQ17i.js} +3 -3
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-DMTRsNBz.js → CreatedOnBrandCrowd-pt-pt-BUTVQ17i.js} +3 -3
  8. package/lib/src/{CreatedOnDcom-de-de-B_jbp2ga.js → CreatedOnDcom-de-de-thkGl7gg.js} +3 -3
  9. package/lib/src/{CreatedOnDcom-en-us-DQQQhn-z.js → CreatedOnDcom-en-us-DOgnHkVR.js} +3 -3
  10. package/lib/src/{CreatedOnDcom-es-es-q3MzWO6e.js → CreatedOnDcom-es-es-NyEB16vO.js} +3 -3
  11. package/lib/src/{CreatedOnDcom-fr-ca-Bep30mu7.js → CreatedOnDcom-fr-ca-Cd6WjWcu.js} +3 -3
  12. package/lib/src/{CreatedOnDcom-fr-fr-DTF8Zzzc.js → CreatedOnDcom-fr-fr-CDKX35U7.js} +3 -3
  13. package/lib/src/{CreatedOnDcom-pt-br-ByR1GU2L.js → CreatedOnDcom-pt-br-PbJzyRNp.js} +3 -3
  14. package/lib/src/{CreatedOnDcom-pt-pt-A0L4zTr0.js → CreatedOnDcom-pt-pt-tja7jglY.js} +3 -3
  15. package/lib/src/brand-page/clients/brand-page.client.d.ts +2 -1
  16. package/lib/src/brand-page/clients/brand-page.client.js +1 -0
  17. package/lib/src/brand-page/models/payment.model.d.ts +42 -0
  18. package/lib/src/brand-page/models/payment.model.js +9 -0
  19. package/lib/src/brand-page/utils/view-model.util.js +1 -0
  20. package/lib/src/brand-page/view-models.d.ts +1 -0
  21. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +1 -1
  22. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +1 -0
  23. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +2 -0
  24. package/lib/src/brand-page-maker/composables/useEventTracker.js +6 -0
  25. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +1 -0
  26. package/lib/src/brand-page-maker/constants/config-settings-constant.js +7 -0
  27. package/lib/src/brand-page-maker/models/content-settings.js +1 -0
  28. package/lib/src/brand-page-maker/validators/section-button.validator.js +4 -1
  29. package/lib/src/bundled-translations-D5A4swr0.js +173 -0
  30. package/lib/src/bundled-translations.de-DE-Bq6H28Hz.js +173 -0
  31. package/lib/src/bundled-translations.es-ES-Bo-UGy51.js +173 -0
  32. package/lib/src/bundled-translations.fr-CA-7GXawEcN.js +173 -0
  33. package/lib/src/bundled-translations.fr-FR-DzVwt2U-.js +173 -0
  34. package/lib/src/bundled-translations.pt-BR-DSZZ-i-B.js +173 -0
  35. package/lib/src/bundled-translations.pt-PT-SNbEX0GM.js +173 -0
  36. package/lib/src/bundles/bundled-translations.de-DE.json +965 -1
  37. package/lib/src/bundles/bundled-translations.es-ES.json +965 -1
  38. package/lib/src/bundles/bundled-translations.fr-CA.json +965 -1
  39. package/lib/src/bundles/bundled-translations.fr-FR.json +965 -1
  40. package/lib/src/bundles/bundled-translations.json +965 -1
  41. package/lib/src/bundles/bundled-translations.pt-BR.json +965 -1
  42. package/lib/src/bundles/bundled-translations.pt-PT.json +965 -1
  43. package/lib/src/composables/useTranslate.d.ts +7 -1
  44. package/lib/src/composables/useTranslate.js +9 -1
  45. package/lib/src/css/library.brand-page-brandCrowd.min.css +76 -55
  46. package/lib/src/css/library.brand-page-brandPage.min.css +77 -57
  47. package/lib/src/css/library.brand-page-designCom.min.css +76 -55
  48. package/lib/src/css/library.brand-page-preview.min.css +76 -55
  49. package/lib/src/index.mjs +88 -87
  50. package/lib/src/{lib-CvEpWvWA.js → lib-DL-13itP.js} +24124 -23832
  51. package/lib/src/mockServiceWorker.js +1 -1
  52. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +1 -0
  53. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +1 -0
  54. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +1 -0
  55. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +14 -0
  56. package/lib/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.mixin.d.ts +13 -1
  57. package/lib/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.mixin.js +10 -0
  58. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +2 -1
  59. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +1 -0
  60. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +1 -0
  61. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +1 -0
  62. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +1 -0
  63. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +2 -1
  64. package/package.json +1 -1
  65. package/src/brand-page/clients/brand-page.client.ts +3 -0
  66. package/src/brand-page/components/about-section/AboutSection.vue +7 -1
  67. package/src/brand-page/components/payment/RequestPaymentStripe.vue +381 -44
  68. package/src/brand-page/components/shop/PaymentModal.vue +7 -1
  69. package/src/brand-page/components/shop/PaymentShippingAddress.vue +297 -0
  70. package/src/brand-page/components/shop/Shop.vue +1 -0
  71. package/src/brand-page/components/shop/i18n/countries.de-DE.json +240 -0
  72. package/src/brand-page/components/shop/i18n/countries.es-ES.json +240 -0
  73. package/src/brand-page/components/shop/i18n/countries.fr-CA.json +240 -0
  74. package/src/brand-page/components/shop/i18n/countries.fr-FR.json +240 -0
  75. package/src/brand-page/components/shop/i18n/countries.json +240 -0
  76. package/src/brand-page/components/shop/i18n/countries.pt-BR.json +240 -0
  77. package/src/brand-page/components/shop/i18n/countries.pt-PT.json +240 -0
  78. package/src/brand-page/components/shop/i18n/payment-shipping-address.de-DE.json +18 -0
  79. package/src/brand-page/components/shop/i18n/payment-shipping-address.es-ES.json +18 -0
  80. package/src/brand-page/components/shop/i18n/payment-shipping-address.fr-CA.json +18 -0
  81. package/src/brand-page/components/shop/i18n/payment-shipping-address.fr-FR.json +18 -0
  82. package/src/brand-page/components/shop/i18n/payment-shipping-address.json +18 -0
  83. package/src/brand-page/components/shop/i18n/payment-shipping-address.pt-BR.json +18 -0
  84. package/src/brand-page/components/shop/i18n/payment-shipping-address.pt-PT.json +18 -0
  85. package/src/brand-page/models/payment.model.ts +24 -0
  86. package/src/brand-page/utils/view-model.util.ts +1 -0
  87. package/src/brand-page/view-models.ts +1 -0
  88. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +1 -1
  89. package/src/brand-page-maker/composables/useEventTracker.ts +6 -0
  90. package/src/brand-page-maker/constants/config-settings-constant.ts +8 -0
  91. package/src/brand-page-maker/models/content-settings.ts +1 -0
  92. package/src/brand-page-maker/validators/section-button.validator.ts +5 -1
  93. package/src/bundles/bundled-translations.de-DE.json +965 -1
  94. package/src/bundles/bundled-translations.es-ES.json +965 -1
  95. package/src/bundles/bundled-translations.fr-CA.json +965 -1
  96. package/src/bundles/bundled-translations.fr-FR.json +965 -1
  97. package/src/bundles/bundled-translations.json +965 -1
  98. package/src/bundles/bundled-translations.pt-BR.json +965 -1
  99. package/src/bundles/bundled-translations.pt-PT.json +965 -1
  100. package/src/composables/useTranslate.ts +15 -0
  101. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +3 -1
  102. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +3 -1
  103. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +3 -1
  104. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +3 -1
  105. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +3 -1
  106. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +3 -1
  107. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +3 -1
  108. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +17 -0
  109. package/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.mixin.ts +12 -0
  110. package/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.vue +9 -1
  111. package/lib/src/brand-page/components/payment/RequestPaymentStripe.mixin.d.ts +0 -106
  112. package/lib/src/brand-page/components/payment/RequestPaymentStripe.mixin.js +0 -253
  113. package/lib/src/bundled-translations-B6qZE8LU.js +0 -169
  114. package/lib/src/bundled-translations.de-DE-CsU6YsZb.js +0 -169
  115. package/lib/src/bundled-translations.es-ES-unPBdcJx.js +0 -169
  116. package/lib/src/bundled-translations.fr-CA-Dpa2wEtC.js +0 -169
  117. package/lib/src/bundled-translations.fr-FR-BPloaUjN.js +0 -169
  118. package/lib/src/bundled-translations.pt-BR-CFRGdaDO.js +0 -169
  119. package/lib/src/bundled-translations.pt-PT-BHVYCE0K.js +0 -169
  120. package/src/brand-page/components/payment/RequestPaymentStripe.mixin.ts +0 -364
@@ -0,0 +1,297 @@
1
+ <template>
2
+ <div data-component="payment-shipping-address" class="tw-text-black">
3
+ <!-- Shipping Address Section -->
4
+ <p class="tw-font-bold tw-mb-2">
5
+ {{ paymentShippingAddressTr('shippingAddress') }}
6
+ </p>
7
+
8
+ <!-- Full Name -->
9
+ <TextInput
10
+ v-model="shippingData.name"
11
+ class="tw-mb-1"
12
+ :placeholder="paymentShippingAddressTr('fullNamePlaceholder')"
13
+ :error="Boolean(errors.name)"
14
+ @blur="validateField('name')"
15
+ @input="onFieldInput('name')"
16
+ />
17
+ <p v-if="errors.name" class="form-error tw-mb-2">
18
+ {{ errors.name }}
19
+ </p>
20
+
21
+ <!-- Address Line 1 -->
22
+ <TextInput
23
+ v-model="shippingData.line1"
24
+ class="tw-mb-1 tw-mt-3"
25
+ :placeholder="paymentShippingAddressTr('addressLine1Placeholder')"
26
+ :error="Boolean(errors.line1)"
27
+ @blur="validateField('line1')"
28
+ @input="onFieldInput('line1')"
29
+ />
30
+ <p v-if="errors.line1" class="form-error tw-mb-2">
31
+ {{ errors.line1 }}
32
+ </p>
33
+
34
+ <!-- Address Line 2 (optional) -->
35
+ <TextInput
36
+ v-model="shippingData.line2"
37
+ class="tw-mb-1 tw-mt-3"
38
+ :placeholder="paymentShippingAddressTr('addressLine2Placeholder')"
39
+ :error="Boolean(errors.line2)"
40
+ @blur="validateField('line2')"
41
+ @input="onFieldInput('line2')"
42
+ />
43
+ <p v-if="errors.line2" class="form-error tw-mb-2">
44
+ {{ errors.line2 }}
45
+ </p>
46
+
47
+ <!-- Country and City Row -->
48
+ <div class="tw-flex tw-flex-row tw-gap-2 tw-mt-3">
49
+ <div class="tw-flex-1">
50
+ <Dropdown
51
+ v-model:show="showCountryMenu"
52
+ :title="selectedCountryLabel"
53
+ :element-classes="countryDropdownClasses"
54
+ menu-element-classes="tw-overflow-y-auto tw-max-h-72 tw-w-full"
55
+ @update:show="onCountryMenuToggle"
56
+ @blur="validateField('country')"
57
+ >
58
+ <DropdownItem
59
+ v-for="country in countries"
60
+ :key="country.code"
61
+ class="tw-text-black tw-break-all"
62
+ @click="onSelectCountry(country.code)"
63
+ >
64
+ {{ country.name }}
65
+ </DropdownItem>
66
+ </Dropdown>
67
+ <p v-if="errors.country" class="form-error tw-mt-1">
68
+ {{ errors.country }}
69
+ </p>
70
+ </div>
71
+ <div class="tw-flex-1">
72
+ <TextInput
73
+ v-model="shippingData.city"
74
+ :placeholder="paymentShippingAddressTr('cityPlaceholder')"
75
+ :error="Boolean(errors.city)"
76
+ @blur="validateField('city')"
77
+ @input="onFieldInput('city')"
78
+ />
79
+ <p v-if="errors.city" class="form-error tw-mt-1">
80
+ {{ errors.city }}
81
+ </p>
82
+ </div>
83
+ </div>
84
+
85
+ <!-- State and Postal Code Row -->
86
+ <div class="tw-flex tw-flex-row tw-gap-2 tw-mt-3">
87
+ <div class="tw-flex-1">
88
+ <TextInput
89
+ v-model="shippingData.state"
90
+ :placeholder="paymentShippingAddressTr('statePlaceholder')"
91
+ :error="Boolean(errors.state)"
92
+ @blur="validateField('state')"
93
+ @input="onFieldInput('state')"
94
+ />
95
+ <p v-if="errors.state" class="form-error tw-mt-1">
96
+ {{ errors.state }}
97
+ </p>
98
+ </div>
99
+ <div class="tw-flex-1">
100
+ <TextInput
101
+ v-model="shippingData.postalCode"
102
+ :placeholder="paymentShippingAddressTr('postalCodePlaceholder')"
103
+ :error="Boolean(errors.postalCode)"
104
+ @blur="validateField('postalCode')"
105
+ @input="onFieldInput('postalCode')"
106
+ />
107
+ <p v-if="errors.postalCode" class="form-error tw-mt-1">
108
+ {{ errors.postalCode }}
109
+ </p>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ </template>
114
+
115
+ <script setup lang="ts">
116
+ import { reactive, computed, watch, ref } from 'vue';
117
+ import { TextInput, Dropdown, DropdownItem } from '@designcrowd/fe-shared-lib';
118
+ import {
119
+ paymentShippingAddressTr,
120
+ countriesTr,
121
+ } from '../../../composables/useTranslate';
122
+ import {
123
+ STRIPE_ADDRESS_LIMITS,
124
+ type StripeAddressField,
125
+ type StripeShippingDetails,
126
+ } from '../../models';
127
+
128
+ interface Props {
129
+ modelValue: StripeShippingDetails;
130
+ }
131
+
132
+ const props = defineProps<Props>();
133
+
134
+ const emit = defineEmits<{
135
+ (e: 'update:modelValue', value: StripeShippingDetails): void;
136
+ (e: 'validation-change', isValid: boolean): void;
137
+ }>();
138
+
139
+ type ValidatableField = StripeAddressField;
140
+
141
+ type Country = { code: string; name: string };
142
+
143
+ type FormErrors = Record<ValidatableField, string>;
144
+
145
+ const shippingData = reactive({
146
+ name: props.modelValue.name || '',
147
+ line1: props.modelValue.line1 || '',
148
+ line2: props.modelValue.line2 || '',
149
+ city: props.modelValue.city || '',
150
+ state: props.modelValue.state || '',
151
+ postalCode: props.modelValue.postalCode || '',
152
+ country: props.modelValue.country || '',
153
+ });
154
+
155
+ const errors = reactive<FormErrors>({
156
+ name: '',
157
+ line1: '',
158
+ line2: '',
159
+ city: '',
160
+ state: '',
161
+ postalCode: '',
162
+ country: '',
163
+ });
164
+
165
+ const countries = computed<Country[]>(() => countriesTr());
166
+ const showCountryMenu = ref(false);
167
+
168
+ const selectedCountryLabel = computed((): string => {
169
+ if (!shippingData.country) {
170
+ return paymentShippingAddressTr('countryPlaceholder');
171
+ }
172
+
173
+ const match = countries.value.find(
174
+ (country) => country.code === shippingData.country,
175
+ );
176
+
177
+ return match?.name ?? paymentShippingAddressTr('countryPlaceholder');
178
+ });
179
+
180
+ const countryDropdownClasses = computed((): string => {
181
+ return [
182
+ 'tw-h-[2.6rem]',
183
+ 'tw-w-full',
184
+ 'tw-text-base',
185
+ 'tw-bg-white',
186
+ 'tw-rounded',
187
+ 'tw-border',
188
+ 'tw-border-solid',
189
+ errors.country ? 'tw-border-error-500' : 'tw-border-grayscale-300',
190
+ shippingData.country ? 'tw-text-grayscale-800' : 'tw-text-grayscale-500',
191
+ ].join(' ');
192
+ });
193
+
194
+ function validateAddressField(field: StripeAddressField): boolean {
195
+ const value = shippingData[field].trim();
196
+ const { min, max } = STRIPE_ADDRESS_LIMITS[field];
197
+
198
+ if (min > 0 && !value) {
199
+ errors[field] = paymentShippingAddressTr('fieldRequired');
200
+
201
+ return false;
202
+ }
203
+
204
+ if (value.length > max) {
205
+ errors[field] = paymentShippingAddressTr('fieldMaxLength', { max });
206
+
207
+ return false;
208
+ }
209
+
210
+ errors[field] = '';
211
+
212
+ return true;
213
+ }
214
+
215
+ function validateField(field: ValidatableField): boolean {
216
+ return validateAddressField(field);
217
+ }
218
+
219
+ function onFieldInput(field: ValidatableField): void {
220
+ if (errors[field]) {
221
+ validateField(field);
222
+ }
223
+ emitUpdate();
224
+ }
225
+
226
+ function onCountryMenuToggle(isOpen: boolean): void {
227
+ showCountryMenu.value = isOpen;
228
+ if (!isOpen) {
229
+ validateField('country');
230
+ }
231
+ }
232
+
233
+ function onSelectCountry(countryCode: string): void {
234
+ shippingData.country = countryCode;
235
+ showCountryMenu.value = false;
236
+ onFieldInput('country');
237
+ }
238
+
239
+ function validateAll(): boolean {
240
+ const addressFields: StripeAddressField[] = [
241
+ 'name',
242
+ 'line1',
243
+ 'line2',
244
+ 'city',
245
+ 'state',
246
+ 'postalCode',
247
+ 'country',
248
+ ];
249
+
250
+ const results = addressFields.map((field) => validateAddressField(field));
251
+
252
+ return results.every(Boolean);
253
+ }
254
+
255
+ function emitUpdate(): void {
256
+ const shippingDetails: StripeShippingDetails = {
257
+ name: shippingData.name,
258
+ line1: shippingData.line1,
259
+ line2: shippingData.line2 || undefined,
260
+ city: shippingData.city || undefined,
261
+ state: shippingData.state || undefined,
262
+ postalCode: shippingData.postalCode || undefined,
263
+ country: shippingData.country,
264
+ };
265
+
266
+ emit('update:modelValue', shippingDetails);
267
+ }
268
+
269
+ // Watch for changes and emit updates
270
+ watch(
271
+ shippingData,
272
+ () => {
273
+ emitUpdate();
274
+ const isValid = Object.values(errors).every((error) => !error);
275
+ emit('validation-change', isValid);
276
+ },
277
+ { deep: true },
278
+ );
279
+
280
+ // Expose validation method for parent component
281
+ defineExpose({
282
+ validateAll,
283
+ });
284
+ </script>
285
+
286
+ <style scoped>
287
+ .form-error {
288
+ @apply tw-text-xs;
289
+ color: #f21b3f;
290
+ }
291
+
292
+ select {
293
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
294
+ background-repeat: no-repeat;
295
+ background-position: right 12px center;
296
+ }
297
+ </style>
@@ -111,6 +111,7 @@
111
111
  :shop-payment-config="shopPaymentConfig"
112
112
  :context="context"
113
113
  :success-message="viewModel.successMessage"
114
+ :is-shipping-enabled="viewModel.isShippingEnabled"
114
115
  @on-close="onCloseCart"
115
116
  @on-back="onShowCartModal"
116
117
  />
@@ -0,0 +1,240 @@
1
+ {
2
+ "countries": [
3
+ {"code":"AF","name":"Afghanistan"},
4
+ {"code":"AX","name":"Åland-Inseln"},
5
+ {"code":"AL","name":"Albanien"},
6
+ {"code":"DZ","name":"Algerien"},
7
+ {"code":"AD","name":"Andorra"},
8
+ {"code":"AO","name":"Angola"},
9
+ {"code":"KI","name":"Anguilla"},
10
+ {"code":"AQ","name":"Antarktis"},
11
+ {"code":"AG","name":"Antigua und Barbuda"},
12
+ {"code":"AR","name":"Argentinien"},
13
+ {"code":"AM","name":"Armenien"},
14
+ {"code":"AW","name":"Aruba"},
15
+ {"code":"AC","name":"Ascension"},
16
+ {"code":"AU","name":"Australien"},
17
+ {"code":"AT","name":"Österreich"},
18
+ {"code":"AZ","name":"Aserbaidschan"},
19
+ {"code":"BS","name":"Bahamas"},
20
+ {"code":"BH","name":"Bahrain"},
21
+ {"code":"BD","name":"Bangladesh"},
22
+ {"code":"BB","name":"Barbados"},
23
+ {"code":"BY","name":"Belarus"},
24
+ {"code":"BE","name":"Belgien"},
25
+ {"code":"BZ","name":"Belize"},
26
+ {"code":"BJ","name":"Benin"},
27
+ {"code":"BM","name":"Bermuda"},
28
+ {"code":"BT","name":"Bhutan"},
29
+ {"code":"BO","name":"Bolivien"},
30
+ {"code":"BQ","name":"Bonaire, Sint Eustatius und Saba"},
31
+ {"code":"BA","name":"Bosnien und Herzegowina"},
32
+ {"code":"BW","name":"Botswana"},
33
+ {"code":"BV","name":"Bouvetinsel"},
34
+ {"code":"BR","name":"Brasilien"},
35
+ {"code":"IO","name":"Britisches Territorium im Indischen Ozean"},
36
+ {"code":"VG","name":"Britische Jungferninseln"},
37
+ {"code":"BN","name":"Brunei"},
38
+ {"code":"BG","name":"Bulgarien"},
39
+ {"code":"BF","name":"Burkina Faso"},
40
+ {"code":"BI","name":"Burundi"},
41
+ {"code":"KH","name":"Kambodscha"},
42
+ {"code":"CM","name":"Kamerun"},
43
+ {"code":"CA","name":"Kanada"},
44
+ {"code":"CV","name":"Kap Verde"},
45
+ {"code":"KY","name":"Kaimaninseln"},
46
+ {"code":"CF","name":"Zentralafrikanische Republik"},
47
+ {"code":"TD","name":"Tschad"},
48
+ {"code":"CL","name":"Chile"},
49
+ {"code":"CN","name":"China"},
50
+ {"code":"CO","name":"Kolumbien"},
51
+ {"code":"KM","name":"Komoren"},
52
+ {"code":"CK","name":"Cookinseln"},
53
+ {"code":"CR","name":"Costa Rica"},
54
+ {"code":"CI","name":"Elfenbeinküste"},
55
+ {"code":"HR","name":"Kroatien"},
56
+ {"code":"CW","name":"Curaçao"},
57
+ {"code":"CY","name":"Zypern"},
58
+ {"code":"CZ","name":"Tschechien"},
59
+ {"code":"CD","name":"Demokratische Republik Kongo"},
60
+ {"code":"DK","name":"Dänemark"},
61
+ {"code":"DJ","name":"Dschibuti"},
62
+ {"code":"DM","name":"Dominica"},
63
+ {"code":"TUN","name":"Dominikanische Republik"},
64
+ {"code":"EC","name":"Ecuador"},
65
+ {"code":"EG","name":"Ägypten"},
66
+ {"code":"SV","name":"El Salvador"},
67
+ {"code":"GQ","name":"Äquatorialguinea"},
68
+ {"code":"ER","name":"Eritrea"},
69
+ {"code":"EE","name":"Estland"},
70
+ {"code":"SZ","name":"Eswatini"},
71
+ {"code":"ET","name":"Äthiopien"},
72
+ {"code":"FK","name":"Falklandinseln"},
73
+ {"code":"FO","name":"Färöer-Inseln"},
74
+ {"code":"FJ","name":"Fiji"},
75
+ {"code":"FI","name":"Finnland"},
76
+ {"code":"FR","name":"Frankreich"},
77
+ {"code":"GF","name":"Französisch-Guayana"},
78
+ {"code":"PF","name":"Französisch-Polynesien"},
79
+ {"code":"TF","name":"Französische Süd- und Antarktisgebiete"},
80
+ {"code":"GA","name":"Gabon"},
81
+ {"code":"GM","name":"Gambia"},
82
+ {"code":"GE","name":"Georgien"},
83
+ {"code":"DE","name":"Deutschland"},
84
+ {"code":"GH","name":"Ghana"},
85
+ {"code":"GI","name":"Gibraltar"},
86
+ {"code":"GR","name":"Griechenland"},
87
+ {"code":"GL","name":"Grönland"},
88
+ {"code":"GD","name":"Grenada"},
89
+ {"code":"GP","name":"Guadeloupe"},
90
+ {"code":"GU","name":"Guam"},
91
+ {"code":"GT","name":"Guatemala"},
92
+ {"code":"GG","name":"Guernsey"},
93
+ {"code":"GN","name":"Guinea"},
94
+ {"code":"GW","name":"Guinea-Bissau"},
95
+ {"code":"GY","name":"Guyana"},
96
+ {"code":"HT","name":"Haiti"},
97
+ {"code":"HN","name":"Honduras"},
98
+ {"code":"HK","name":"Hongkong"},
99
+ {"code":"HU","name":"Ungarn"},
100
+ {"code":"IS","name":"Island"},
101
+ {"code":"IN","name":"Indien"},
102
+ {"code":"Id","name":"Indonesien"},
103
+ {"code":"IQ","name":"Irak"},
104
+ {"code":"IE","name":"Irland"},
105
+ {"code":"IM","name":"Isle of Man"},
106
+ {"code":"IL","name":"Israel"},
107
+ {"code":"IT","name":"Italien"},
108
+ {"code":"JM","name":"Jamaika"},
109
+ {"code":"JP","name":"Japan"},
110
+ {"code":"JE","name":"Jersey"},
111
+ {"code":"JO","name":"Jordanien"},
112
+ {"code":"KZ","name":"Kasachstan"},
113
+ {"code":"KE","name":"Kenya"},
114
+ {"code":"KI","name":"Kiribati"},
115
+ {"code":"XK","name":"Kosovo"},
116
+ {"code":"KW","name":"Kuwait"},
117
+ {"code":"KG","name":"Kirgisistan"},
118
+ {"code":"LA","name":"Laos"},
119
+ {"code":"LV","name":"Lettland"},
120
+ {"code":"LB","name":"Libanon"},
121
+ {"code":"LS","name":"Lesotho"},
122
+ {"code":"LR","name":"Liberia"},
123
+ {"code":"LY","name":"Libyen"},
124
+ {"code":"LI","name":"Liechtenstein"},
125
+ {"code":"LT","name":"Litauen"},
126
+ {"code":"LU","name":"Luxemburg"},
127
+ {"code":"MO","name":"Macau"},
128
+ {"code":"MG","name":"Madagaskar"},
129
+ {"code":"MW","name":"Malawi"},
130
+ {"code":"MY","name":"Malaysia"},
131
+ {"code":"MV","name":"Malediven"},
132
+ {"code":"ML","name":"Mali"},
133
+ {"code":"MT","name":"Malta"},
134
+ {"code":"MQ","name":"Martinique"},
135
+ {"code":"MR","name":"Mauretanien"},
136
+ {"code":"MU","name":"Mauritius"},
137
+ {"code":"YT","name":"Mayotte"},
138
+ {"code":"MX","name":"Mexiko"},
139
+ {"code":"MD","name":"Republik Moldau"},
140
+ {"code":"MC","name":"Monaco"},
141
+ {"code":"MN","name":"Mongolei"},
142
+ {"code":"mich","name":"Montenegro"},
143
+ {"code":"MS","name":"Montserrat"},
144
+ {"code":"MA","name":"Marokko"},
145
+ {"code":"MZ","name":"Mosambik"},
146
+ {"code":"MM","name":"Myanmar"},
147
+ {"code":"NA","name":"Namibia"},
148
+ {"code":"NR","name":"Nauru"},
149
+ {"code":"NP","name":"Nepal"},
150
+ {"code":"NL","name":"Niederlande"},
151
+ {"code":"NC","name":"Neukaledonien"},
152
+ {"code":"NZ","name":"Neuseeland"},
153
+ {"code":"NI","name":"Nicaragua"},
154
+ {"code":"NE","name":"Niger"},
155
+ {"code":"NG","name":"Nigeria"},
156
+ {"code":"NU","name":"Niue"},
157
+ {"code":"MK","name":"Nordmazedonien"},
158
+ {"code":"Nein","name":"Norwegen"},
159
+ {"code":"OM","name":"Oman"},
160
+ {"code":"PK","name":"Pakistan"},
161
+ {"code":"PS","name":"Palästina"},
162
+ {"code":"PA","name":"Panama"},
163
+ {"code":"PG","name":"Papua-Neuguinea"},
164
+ {"code":"PY","name":"Paraguay"},
165
+ {"code":"PE","name":"Peru"},
166
+ {"code":"PH","name":"Philippinen"},
167
+ {"code":"PN","name":"Pitcairn-Inseln"},
168
+ {"code":"PL","name":"Polen"},
169
+ {"code":"PT","name":"Portugal"},
170
+ {"code":"PR","name":"Puerto Rico"},
171
+ {"code":"QA","name":"Qatar"},
172
+ {"code":"CG","name":"Republik Kongo"},
173
+ {"code":"RE","name":"Réunion"},
174
+ {"code":"RO","name":"Rumänien"},
175
+ {"code":"RU","name":"Russland"},
176
+ {"code":"RW","name":"Rwanda"},
177
+ {"code":"BL","name":"Saint-Barthélemy"},
178
+ {"code":"SH","name":"St. Helena"},
179
+ {"code":"KN","name":"Saint Kitts und Nevis"},
180
+ {"code":"LC","name":"Saint Lucia"},
181
+ {"code":"MF","name":"Saint Martin"},
182
+ {"code":"PM","name":"Saint-Pierre und Miquelon"},
183
+ {"code":"VC","name":"St. Vincent und die Grenadinen"},
184
+ {"code":"WS","name":"Samoa"},
185
+ {"code":"SM","name":"San Marino"},
186
+ {"code":"ST","name":"Sao Tome und Principe"},
187
+ {"code":"SA","name":"Saudi-Arabien"},
188
+ {"code":"SN","name":"Senegal"},
189
+ {"code":"RS","name":"Serbien"},
190
+ {"code":"SC","name":"Seychellen"},
191
+ {"code":"SL","name":"Sierra Leone"},
192
+ {"code":"SG","name":"Singapur"},
193
+ {"code":"SX","name":"Sint Maarten"},
194
+ {"code":"SK","name":"Slowakei"},
195
+ {"code":"SI","name":"Slowenien"},
196
+ {"code":"SB","name":"Salomonen"},
197
+ {"code":"SO","name":"Somalia"},
198
+ {"code":"ZA","name":"Südafrika"},
199
+ {"code":"GS","name":"Südgeorgien und die Südlichen Sandwichinseln"},
200
+ {"code":"KR","name":"Südkorea"},
201
+ {"code":"SS","name":"Südsudan"},
202
+ {"code":"ge","name":"Spanien"},
203
+ {"code":"LK","name":"Sri Lanka"},
204
+ {"code":"SR","name":"Suriname"},
205
+ {"code":"SJ","name":"Svalbard und Jan Mayen"},
206
+ {"code":"SE","name":"Schweden"},
207
+ {"code":"CH","name":"Schweiz"},
208
+ {"code":"TW","name":"Taiwan"},
209
+ {"code":"TJ","name":"Tadschikistan"},
210
+ {"code":"TZ","name":"Tansania"},
211
+ {"code":"TH","name":"Thailand"},
212
+ {"code":"TL","name":"Timor-Leste"},
213
+ {"code":"TG","name":"Togo"},
214
+ {"code":"TK","name":"Tokelau"},
215
+ {"code":"DABEI","name":"Tonga"},
216
+ {"code":"TT","name":"Trinidad und Tobago"},
217
+ {"code":"TA","name":"Tristan da Cunha"},
218
+ {"code":"TN","name":"Tunesien"},
219
+ {"code":"TR","name":"Türkei"},
220
+ {"code":"TM","name":"Turkmenistan"},
221
+ {"code":"TC","name":"Turks- und Caicosinseln"},
222
+ {"code":"TV","name":"Tuvalu"},
223
+ {"code":"UG","name":"Uganda"},
224
+ {"code":"UA","name":"Ukraine"},
225
+ {"code":"AE","name":"Vereinigte Arabische Emirate"},
226
+ {"code":"GB","name":"Vereinigtes Königreich"},
227
+ {"code":"USA","name":"Vereinigte Staaten"},
228
+ {"code":"UY","name":"Uruguay"},
229
+ {"code":"UZ","name":"Usbekistan"},
230
+ {"code":"VU","name":"Vanuatu"},
231
+ {"code":"VA","name":"Vatikanstadt"},
232
+ {"code":"VE","name":"Venezuela"},
233
+ {"code":"VN","name":"Vietnam"},
234
+ {"code":"WF","name":"Wallis und Futuna"},
235
+ {"code":"EH","name":"Westsahara"},
236
+ {"code":"YE","name":"Jemen"},
237
+ {"code":"ZM","name":"Sambia"},
238
+ {"code":"ZW","name":"Zimbabwe"}
239
+ ]
240
+ }