@jjlmoya/utils-travel 1.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 (58) hide show
  1. package/package.json +60 -0
  2. package/src/category/i18n/en.ts +185 -0
  3. package/src/category/i18n/es.ts +187 -0
  4. package/src/category/i18n/fr.ts +100 -0
  5. package/src/category/index.ts +12 -0
  6. package/src/category/seo.astro +15 -0
  7. package/src/components/PreviewNavSidebar.astro +116 -0
  8. package/src/components/PreviewToolbar.astro +143 -0
  9. package/src/data.ts +15 -0
  10. package/src/env.d.ts +5 -0
  11. package/src/index.ts +22 -0
  12. package/src/layouts/PreviewLayout.astro +117 -0
  13. package/src/pages/[locale]/[slug].astro +146 -0
  14. package/src/pages/[locale].astro +278 -0
  15. package/src/pages/index.astro +4 -0
  16. package/src/tests/faq_count.test.ts +8 -0
  17. package/src/tests/locale_completeness.test.ts +21 -0
  18. package/src/tests/mocks/astro_mock.js +2 -0
  19. package/src/tests/no_h1_in_components.test.ts +8 -0
  20. package/src/tests/seo_length.test.ts +8 -0
  21. package/src/tests/tool_validation.test.ts +17 -0
  22. package/src/tool/luggage-calculator/bibliography.astro +14 -0
  23. package/src/tool/luggage-calculator/component.astro +560 -0
  24. package/src/tool/luggage-calculator/i18n/en.ts +617 -0
  25. package/src/tool/luggage-calculator/i18n/es.ts +617 -0
  26. package/src/tool/luggage-calculator/i18n/fr.ts +549 -0
  27. package/src/tool/luggage-calculator/index.ts +53 -0
  28. package/src/tool/luggage-calculator/seo.astro +14 -0
  29. package/src/tool/mini-adventures/bibliography.astro +14 -0
  30. package/src/tool/mini-adventures/component.astro +665 -0
  31. package/src/tool/mini-adventures/i18n/en.ts +161 -0
  32. package/src/tool/mini-adventures/i18n/es.ts +286 -0
  33. package/src/tool/mini-adventures/i18n/fr.ts +144 -0
  34. package/src/tool/mini-adventures/index.ts +70 -0
  35. package/src/tool/mini-adventures/seo.astro +14 -0
  36. package/src/tool/optimal-routes/bibliography.astro +14 -0
  37. package/src/tool/optimal-routes/component.astro +439 -0
  38. package/src/tool/optimal-routes/i18n/en.ts +42 -0
  39. package/src/tool/optimal-routes/i18n/es.ts +52 -0
  40. package/src/tool/optimal-routes/index.ts +63 -0
  41. package/src/tool/optimal-routes/lib/RouteManager.ts +181 -0
  42. package/src/tool/optimal-routes/seo.astro +14 -0
  43. package/src/tool/suitcase-checklist/bibliography.astro +14 -0
  44. package/src/tool/suitcase-checklist/component.astro +710 -0
  45. package/src/tool/suitcase-checklist/i18n/en.ts +261 -0
  46. package/src/tool/suitcase-checklist/i18n/es.ts +261 -0
  47. package/src/tool/suitcase-checklist/i18n/fr.ts +259 -0
  48. package/src/tool/suitcase-checklist/index.ts +75 -0
  49. package/src/tool/suitcase-checklist/seo.astro +14 -0
  50. package/src/tool/tip-calculator/bibliography.astro +14 -0
  51. package/src/tool/tip-calculator/component.astro +683 -0
  52. package/src/tool/tip-calculator/i18n/en.ts +264 -0
  53. package/src/tool/tip-calculator/i18n/es.ts +264 -0
  54. package/src/tool/tip-calculator/i18n/fr.ts +264 -0
  55. package/src/tool/tip-calculator/index.ts +53 -0
  56. package/src/tool/tip-calculator/seo.astro +14 -0
  57. package/src/tools.ts +13 -0
  58. package/src/types.ts +73 -0
@@ -0,0 +1,264 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TipCalculatorUI } from '../index';
4
+
5
+ const slug = 'international-tip-calculator';
6
+ const title = 'International Tip Calculator';
7
+ const description = 'Calculate how much to tip on your trips. Includes percentage guide and etiquette rules for more than 50 countries. Don\'t mess up when paying!';
8
+
9
+ const ui: TipCalculatorUI = {
10
+ title: "Tip Calculator",
11
+ badge: "International Tip Tool",
12
+ billLabel: "Bill Amount",
13
+ countryLabel: "Country / Local Custom",
14
+ tipLabel: "Tip Percentage",
15
+ splitLabel: "Split Bill",
16
+ summaryTip: "Total Tip",
17
+ summarySubtotal: "Subtotal",
18
+ summaryTotalPerson: "Total per Person",
19
+ protocolTitle: "Protocol",
20
+ placeholderAmount: "0.00",
21
+ placeholderFilter: "Search country...",
22
+ placeholderSelect: "Select a country",
23
+ countries: [
24
+ {
25
+ id: "usa",
26
+ name: "USA & Canada",
27
+ min: 18,
28
+ max: 25,
29
+ default: 20,
30
+ culture: "Tipping is essential for waiter salaries. Between 18% and 25% is expected. Not leaving it is considered a serious breach of North American culture.",
31
+ },
32
+ {
33
+ id: "esp",
34
+ name: "Spain",
35
+ min: 0,
36
+ max: 10,
37
+ default: 5,
38
+ culture: "Optional. It is common to round up the change or leave 5-10% on dinners if the service has been of quality.",
39
+ },
40
+ {
41
+ id: "jpn",
42
+ name: "Japan",
43
+ min: 0,
44
+ max: 0,
45
+ default: 0,
46
+ culture: "No tipping. It is considered an insult to professionalism. If you leave money, they will likely follow you to return it.",
47
+ },
48
+ {
49
+ id: "ita",
50
+ name: "Italy",
51
+ min: 0,
52
+ max: 10,
53
+ default: 0,
54
+ culture: "The 'coperto' is a charge for table service, bread, and cover, it is not the tip itself. Leaving an extra 5-10% is an appreciated but entirely optional gesture.",
55
+ },
56
+ {
57
+ id: "fra",
58
+ name: "France",
59
+ min: 0,
60
+ max: 10,
61
+ default: 5,
62
+ culture: "Service is included by law. Leave the 'pourboire' (small extra) only for exceptional treatment.",
63
+ },
64
+ {
65
+ id: "gbr",
66
+ name: "United Kingdom",
67
+ min: 0,
68
+ max: 12.5,
69
+ default: 10,
70
+ culture: "An optional 12.5% is often added to the bill. If it's not there, 10% is the standard in restaurants.",
71
+ },
72
+ {
73
+ id: "mex",
74
+ name: "Mexico",
75
+ min: 10,
76
+ max: 15,
77
+ default: 12,
78
+ culture: "A 10-15% 'propina' is expected. It is a vital part of the economy for workers in the sector.",
79
+ },
80
+ {
81
+ id: "arg",
82
+ name: "Argentina",
83
+ min: 0,
84
+ max: 10,
85
+ default: 10,
86
+ culture: "The standard is 10%. It is almost always left if the service has been normal or good.",
87
+ },
88
+ {
89
+ id: "bra",
90
+ name: "Brazil",
91
+ min: 0,
92
+ max: 10,
93
+ default: 10,
94
+ culture: "Normally a 10% charge is included in the bill as 'Serviço'. It is optional but most pay it.",
95
+ },
96
+ {
97
+ id: "deu",
98
+ name: "Germany",
99
+ min: 5,
100
+ max: 10,
101
+ default: 7,
102
+ culture: "It is common to round up or add 5-10%. Tell the waiter the total including the tip when paying.",
103
+ },
104
+ {
105
+ id: "tur",
106
+ name: "Turkey",
107
+ min: 5,
108
+ max: 10,
109
+ default: 10,
110
+ culture: "In tourist areas, 10% in cash is expected. It can't usually be added to the credit card.",
111
+ },
112
+ {
113
+ id: "aus",
114
+ name: "Australia",
115
+ min: 0,
116
+ max: 10,
117
+ default: 0,
118
+ culture: "Not expected. Salaries are high. In fine dining, 10% can be left.",
119
+ },
120
+ {
121
+ id: "chn",
122
+ name: "China",
123
+ min: 0,
124
+ max: 0,
125
+ default: 0,
126
+ culture: "Historically, no tipping is left and in many places it is prohibited or considered strange.",
127
+ },
128
+ {
129
+ id: "prt",
130
+ name: "Portugal",
131
+ min: 0,
132
+ max: 10,
133
+ default: 5,
134
+ culture: "It is customary to leave the change or round up. In tourist areas, 5-10% is common.",
135
+ },
136
+ {
137
+ id: "grc",
138
+ name: "Greece",
139
+ min: 0,
140
+ max: 10,
141
+ default: 5,
142
+ culture: "It is usually enough to round up the bill. An extra 5-10% is much appreciated but not mandatory.",
143
+ },
144
+ ]
145
+ };
146
+
147
+ const seo: ToolLocaleContent<TipCalculatorUI>['seo'] = [
148
+ {
149
+ type: "title",
150
+ text: "International Tipping Guide: Etiquette and Percentages 2026",
151
+ level: 2,
152
+ },
153
+ {
154
+ type: "summary",
155
+ title: "Learn to tip like a local anywhere in the world",
156
+ items: [
157
+ "Complete guide on the expected tip percentage in major tourist destinations.",
158
+ "How to quickly calculate the tip starting from the subtotal or the total including taxes.",
159
+ "Difference between service charges, cover (coperto), and voluntary tipping.",
160
+ "Etiquette rules for special situations: taxis, hotels, and tour guides.",
161
+ ],
162
+ },
163
+ {
164
+ type: "paragraph",
165
+ html: "One of the most stressful moments of any international trip occurs when the bill arrives at the table. Our <strong>international tip calculator</strong> is designed to eliminate that uncertainty.",
166
+ }
167
+ ];
168
+
169
+ const faq: ToolLocaleContent<TipCalculatorUI>['faq'] = [
170
+ {
171
+ question: "Is it mandatory to leave a tip in the United States?",
172
+ answer: "Legally no, but socially it is mandatory. Waiters depend on tips to reach minimum wage. It is normal to leave between 18% and 25%.",
173
+ },
174
+ {
175
+ question: "In which countries is it offensive to leave a tip?",
176
+ answer: "Mainly in Japan and South Korea. Good service is considered part of the duty and does not require extra compensation.",
177
+ },
178
+ {
179
+ question: "Should I tip if the service was bad?",
180
+ answer: "In countries where it is optional (Europe, Australia), the most correct thing is to leave nothing.",
181
+ },
182
+ {
183
+ question: "Is the tip calculated before or after taxes?",
184
+ answer: "In North America it is usually calculated on the subtotal (before taxes). In Europe and Latin America, it is always calculated on the total of the bill.",
185
+ },
186
+ ];
187
+
188
+ const bibliography: ToolLocaleContent<TipCalculatorUI>['bibliography'] = [
189
+ {
190
+ name: "Condé Nast Traveler: Tipping Etiquette Guide",
191
+ url: "https://www.cntraveler.com/stories/2008-11-11/etiquette-101-tipping-guide",
192
+ },
193
+ {
194
+ name: "Lonely Planet: Tipping and Etiquette in Europe",
195
+ url: "https://www.lonelyplanet.com/articles/tipping-customs-europe",
196
+ },
197
+ {
198
+ name: "Western Union: Global Tipping Guide",
199
+ url: "https://www.westernunion.com/blog/en/global-tipping-guide/",
200
+ },
201
+ ];
202
+
203
+ const howTo: ToolLocaleContent<TipCalculatorUI>['howTo'] = [
204
+ {
205
+ name: "Enter the bill total",
206
+ text: "Type the total amount that appears on your invoice before applying the tip.",
207
+ },
208
+ {
209
+ name: "Select the country",
210
+ text: "Choose your destination to automatically load the cultural recommendation and standard percentage.",
211
+ },
212
+ {
213
+ name: "Adjust and split",
214
+ text: "If there are several of you, indicate the number of people to know how much each should pay including the tip.",
215
+ },
216
+ ];
217
+
218
+ const faqSchema: WithContext<FAQPage> = {
219
+ '@context': 'https://schema.org',
220
+ '@type': 'FAQPage',
221
+ mainEntity: faq.map((item) => ({
222
+ '@type': 'Question',
223
+ name: item.question,
224
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
225
+ })),
226
+ };
227
+
228
+ const howToSchema: WithContext<HowTo> = {
229
+ '@context': 'https://schema.org',
230
+ '@type': 'HowTo',
231
+ name: title,
232
+ description: description,
233
+ step: howTo.map((step) => ({
234
+ '@type': 'HowToStep',
235
+ name: step.name,
236
+ text: step.text,
237
+ })),
238
+ };
239
+
240
+ const appSchema: WithContext<SoftwareApplication> = {
241
+ '@context': 'https://schema.org',
242
+ '@type': 'SoftwareApplication',
243
+ name: title,
244
+ description: description,
245
+ applicationCategory: 'FinanceApplication',
246
+ operatingSystem: 'All',
247
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
248
+ inLanguage: 'en',
249
+ };
250
+
251
+ export const content: ToolLocaleContent<TipCalculatorUI> = {
252
+ slug,
253
+ title,
254
+ description,
255
+ ui,
256
+ seo,
257
+ faq,
258
+ faqTitle: "Frequently Asked Questions",
259
+ bibliography,
260
+ bibliographyTitle: "Sources and References",
261
+ howTo,
262
+ howToTitle: "How to use the calculator",
263
+ schemas: [faqSchema, howToSchema, appSchema],
264
+ };
@@ -0,0 +1,264 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TipCalculatorUI } from '../index';
4
+
5
+ const slug = 'calculadora-propinas-internacional';
6
+ const title = 'Calculadora de Propinas Internacional';
7
+ const description = 'Viaja con confianza sabiendo exactamente cuánto dejar de propina. Guía actualizada de etiqueta y porcentajes recomendados para restaurantes, taxis y hoteles en todo el mundo.';
8
+
9
+ const ui: TipCalculatorUI = {
10
+ title: "Calculadora de Propinas",
11
+ badge: "International Tip Tool",
12
+ billLabel: "Importe de la Factura",
13
+ countryLabel: "País / Costumbre Local",
14
+ tipLabel: "Porcentaje Propina",
15
+ splitLabel: "Dividir Cuenta",
16
+ summaryTip: "Propina Total",
17
+ summarySubtotal: "Subtotal",
18
+ summaryTotalPerson: "Total por Persona",
19
+ protocolTitle: "Protocolo",
20
+ placeholderAmount: "0.00",
21
+ placeholderFilter: "Buscar país...",
22
+ placeholderSelect: "Selecciona un país",
23
+ countries: [
24
+ {
25
+ id: "usa",
26
+ name: "EE.UU. y Canadá",
27
+ min: 18,
28
+ max: 25,
29
+ default: 20,
30
+ culture: "La propina es fundamental para el salario de los camareros. Se espera entre un 18% y 25%. No dejarla se considera una falta grave en la cultura norteamericana.",
31
+ },
32
+ {
33
+ id: "esp",
34
+ name: "España",
35
+ min: 0,
36
+ max: 10,
37
+ default: 5,
38
+ culture: "Opcional. Se suele redondear el cambio o dejar un 5-10% en cenas si el servicio ha sido de calidad.",
39
+ },
40
+ {
41
+ id: "jpn",
42
+ name: "Japón",
43
+ min: 0,
44
+ max: 0,
45
+ default: 0,
46
+ culture: "No se deja propina. Se considera un insulto a la profesionalidad. Si dejas dinero, es probable que te sigan para devolvértelo.",
47
+ },
48
+ {
49
+ id: "ita",
50
+ name: "Italia",
51
+ min: 0,
52
+ max: 10,
53
+ default: 0,
54
+ culture: "El 'coperto' es un cargo por el servicio de mesa, pan y mantel, no es la propina en sí. Dejar un extra del 5-10% es un gesto apreciado pero totalmente opcional.",
55
+ },
56
+ {
57
+ id: "fra",
58
+ name: "Francia",
59
+ min: 0,
60
+ max: 10,
61
+ default: 5,
62
+ culture: "El servicio está incluido por ley. Se deja el 'pourboire' (pequeño extra) solo por un trato excepcional.",
63
+ },
64
+ {
65
+ id: "gbr",
66
+ name: "Reino Unido",
67
+ min: 0,
68
+ max: 12.5,
69
+ default: 10,
70
+ culture: "A menudo se añade un 12.5% opcional en la factura. Si no está, un 10% es lo estándar en restaurantes.",
71
+ },
72
+ {
73
+ id: "mex",
74
+ name: "México",
75
+ min: 10,
76
+ max: 15,
77
+ default: 12,
78
+ culture: "Se espera 'la propina' del 10 al 15%. Es una parte vital de la economía de los trabajadores del sector.",
79
+ },
80
+ {
81
+ id: "arg",
82
+ name: "Argentina",
83
+ min: 0,
84
+ max: 10,
85
+ default: 10,
86
+ culture: "El estándar es un 10%. Casi siempre se deja si el servicio ha sido normal o bueno.",
87
+ },
88
+ {
89
+ id: "bra",
90
+ name: "Brasil",
91
+ min: 0,
92
+ max: 10,
93
+ default: 10,
94
+ culture: "Normalmente se incluye un cargo del 10% en la cuenta como 'Serviço'. Es opcional pero la mayoría lo paga.",
95
+ },
96
+ {
97
+ id: "deu",
98
+ name: "Alemania",
99
+ min: 5,
100
+ max: 10,
101
+ default: 7,
102
+ culture: "Se suele redondear o añadir un 5-10%. Se le dice al camarero el total incluyendo propina al pagar.",
103
+ },
104
+ {
105
+ id: "tur",
106
+ name: "Turquía",
107
+ min: 5,
108
+ max: 10,
109
+ default: 10,
110
+ culture: "En sitios turísticos se espera un 10% en efectivo. No se suele poder añadir a la tarjeta.",
111
+ },
112
+ {
113
+ id: "aus",
114
+ name: "Australia",
115
+ min: 0,
116
+ max: 10,
117
+ default: 0,
118
+ culture: "No es esperada. Los salarios son altos. En cenas de lujo se puede dejar un 10%.",
119
+ },
120
+ {
121
+ id: "chn",
122
+ name: "China",
123
+ min: 0,
124
+ max: 0,
125
+ default: 0,
126
+ culture: "Históricamente no se deja propina y en muchos sitios está prohibido o se considera raro.",
127
+ },
128
+ {
129
+ id: "prt",
130
+ name: "Portugal",
131
+ min: 0,
132
+ max: 10,
133
+ default: 5,
134
+ culture: "Se acostumbra dejar el cambio o redondear. En zonas turísticas un 5-10% es común.",
135
+ },
136
+ {
137
+ id: "grc",
138
+ name: "Grecia",
139
+ min: 0,
140
+ max: 10,
141
+ default: 5,
142
+ culture: "Suele bastar con redondear la cuenta. Un 5-10% extra es muy apreciado pero no obligatorio.",
143
+ },
144
+ ]
145
+ };
146
+
147
+ const seo: ToolLocaleContent<TipCalculatorUI>['seo'] = [
148
+ {
149
+ type: "title",
150
+ text: "Guía Internacional de Propinas: Etiqueta y Porcentajes 2026",
151
+ level: 2,
152
+ },
153
+ {
154
+ type: "summary",
155
+ title: "Aprende a dar propina como un local en cualquier parte del mundo",
156
+ items: [
157
+ "Guía completa sobre el porcentaje de propina esperado en los principales destinos turísticos.",
158
+ "Cómo calcular la propina de forma rápida partiendo del subtotal o del total con impuestos.",
159
+ "Diferencia entre cargos por servicio, cubierto (coperto) y propina voluntaria.",
160
+ "Reglas de etiqueta para situaciones especiales: taxis, hoteles y guías turísticos.",
161
+ ],
162
+ },
163
+ {
164
+ type: "paragraph",
165
+ html: "Uno de los momentos más estresantes de cualquier viaje internacional ocurre cuando llega la cuenta a la mesa. ¿Debo dejar dinero extra? ¿Cuánto es lo normal? ¿Se ofenderán si dejo poco o si dejo demasiado? Nuestra <strong>calculadora de propina internacional</strong> está diseñada para eliminar esa incertidumbre.",
166
+ }
167
+ ];
168
+
169
+ const faq: ToolLocaleContent<TipCalculatorUI>['faq'] = [
170
+ {
171
+ question: "¿Es obligatorio dejar propina en Estados Unidos?",
172
+ answer: "Legalmente no, pero socialmente es obligatorio. Los camareros dependen de las propinas para alcanzar el salario mínimo. Lo normal es dejar entre el 18% y el 25%.",
173
+ },
174
+ {
175
+ question: "¿En qué países es ofensivo dejar propina?",
176
+ answer: "Principalmente en Japón y Corea del Sur. Se considera que el buen servicio es parte del deber y no requiere compensación extra.",
177
+ },
178
+ {
179
+ question: "¿Debo dar propina si el servicio fue malo?",
180
+ answer: "En países donde es opcional (Europa, Australia), lo más correcto es no dejar nada para señalar tu disconformidad.",
181
+ },
182
+ {
183
+ question: "¿La propina se calcula antes o después de impuestos?",
184
+ answer: "En Norteamérica se suele calcular sobre el subtotal (antes de impuestos). En Europa y Latinoamérica, se calcula siempre sobre el total de la factura.",
185
+ },
186
+ ];
187
+
188
+ const bibliography: ToolLocaleContent<TipCalculatorUI>['bibliography'] = [
189
+ {
190
+ name: "Condé Nast Traveler: Tipping Etiquette Guide",
191
+ url: "https://www.cntraveler.com/stories/2008-11-11/etiquette-101-tipping-guide",
192
+ },
193
+ {
194
+ name: "Lonely Planet: Tipping and Etiquette in Europe",
195
+ url: "https://www.lonelyplanet.com/articles/tipping-customs-europe",
196
+ },
197
+ {
198
+ name: "Western Union: Global Tipping Guide",
199
+ url: "https://www.westernunion.com/blog/en/global-tipping-guide/",
200
+ },
201
+ ];
202
+
203
+ const howTo: ToolLocaleContent<TipCalculatorUI>['howTo'] = [
204
+ {
205
+ name: "Introduce el total de la cuenta",
206
+ text: "Escribe el importe total que aparece en tu factura antes de aplicar la propina.",
207
+ },
208
+ {
209
+ name: "Selecciona el país",
210
+ text: "Elige tu destino para cargar automáticamente la recomendación cultural y el porcentaje estándar.",
211
+ },
212
+ {
213
+ name: "Ajusta y divide",
214
+ text: "Si sois varios, indica el número de personas para saber cuánto debe pagar cada uno incluyendo la propina.",
215
+ },
216
+ ];
217
+
218
+ const faqSchema: WithContext<FAQPage> = {
219
+ '@context': 'https://schema.org',
220
+ '@type': 'FAQPage',
221
+ mainEntity: faq.map((item) => ({
222
+ '@type': 'Question',
223
+ name: item.question,
224
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
225
+ })),
226
+ };
227
+
228
+ const howToSchema: WithContext<HowTo> = {
229
+ '@context': 'https://schema.org',
230
+ '@type': 'HowTo',
231
+ name: title,
232
+ description: description,
233
+ step: howTo.map((step) => ({
234
+ '@type': 'HowToStep',
235
+ name: step.name,
236
+ text: step.text,
237
+ })),
238
+ };
239
+
240
+ const appSchema: WithContext<SoftwareApplication> = {
241
+ '@context': 'https://schema.org',
242
+ '@type': 'SoftwareApplication',
243
+ name: title,
244
+ description: description,
245
+ applicationCategory: 'FinanceApplication',
246
+ operatingSystem: 'All',
247
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
248
+ inLanguage: 'es',
249
+ };
250
+
251
+ export const content: ToolLocaleContent<TipCalculatorUI> = {
252
+ slug,
253
+ title,
254
+ description,
255
+ ui,
256
+ seo,
257
+ faq,
258
+ faqTitle: "Preguntas Frecuentes",
259
+ bibliography,
260
+ bibliographyTitle: "Fuentes y Referencias",
261
+ howTo,
262
+ howToTitle: "Cómo usar la calculadora",
263
+ schemas: [faqSchema, howToSchema, appSchema],
264
+ };