@jjlmoya/utils-pets 1.18.0 → 1.20.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 (73) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/data.ts +2 -0
  4. package/src/entries.ts +7 -1
  5. package/src/layouts/PreviewLayout.astro +2 -0
  6. package/src/pages/[locale]/[slug].astro +14 -5
  7. package/src/tests/diacritics_density.test.ts +1 -1
  8. package/src/tests/faq_count.test.ts +1 -1
  9. package/src/tests/inverted_punctuation.test.ts +1 -1
  10. package/src/tests/locale_completeness.test.ts +1 -1
  11. package/src/tests/script_density.test.ts +1 -1
  12. package/src/tests/title_quality.test.ts +1 -0
  13. package/src/tests/tool_validation.test.ts +5 -5
  14. package/src/tests/translation_copy.test.ts +14 -15
  15. package/src/tool/petGestation/i18n/en.ts +1 -0
  16. package/src/tool/petGestation/i18n/es.ts +1 -0
  17. package/src/tool/petToxicity/bibliography.astro +6 -0
  18. package/src/tool/petToxicity/bibliography.ts +16 -0
  19. package/src/tool/petToxicity/component.astro +53 -0
  20. package/src/tool/petToxicity/controller.ts +117 -0
  21. package/src/tool/petToxicity/dom-views.ts +61 -0
  22. package/src/tool/petToxicity/entry.ts +33 -0
  23. package/src/tool/petToxicity/evaluator.ts +23 -0
  24. package/src/tool/petToxicity/i18n/de.ts +181 -0
  25. package/src/tool/petToxicity/i18n/en.ts +175 -0
  26. package/src/tool/petToxicity/i18n/es.ts +181 -0
  27. package/src/tool/petToxicity/i18n/fr.ts +181 -0
  28. package/src/tool/petToxicity/i18n/id.ts +182 -0
  29. package/src/tool/petToxicity/i18n/it.ts +181 -0
  30. package/src/tool/petToxicity/i18n/ja.ts +181 -0
  31. package/src/tool/petToxicity/i18n/ko.ts +181 -0
  32. package/src/tool/petToxicity/i18n/nl.ts +182 -0
  33. package/src/tool/petToxicity/i18n/pl.ts +182 -0
  34. package/src/tool/petToxicity/i18n/pt.ts +181 -0
  35. package/src/tool/petToxicity/i18n/ru.ts +182 -0
  36. package/src/tool/petToxicity/i18n/sv.ts +182 -0
  37. package/src/tool/petToxicity/i18n/tr.ts +182 -0
  38. package/src/tool/petToxicity/i18n/zh.ts +181 -0
  39. package/src/tool/petToxicity/index.ts +11 -0
  40. package/src/tool/petToxicity/logic.test.ts +32 -0
  41. package/src/tool/petToxicity/logic.ts +192 -0
  42. package/src/tool/petToxicity/pet-food-toxicity-checker.css +450 -0
  43. package/src/tool/petToxicity/seo.astro +15 -0
  44. package/src/tool/petToxicity/storage.ts +37 -0
  45. package/src/tool/petToxicity/ui.ts +33 -0
  46. package/src/tool/petWaterIntake/bibliography.astro +6 -0
  47. package/src/tool/petWaterIntake/bibliography.ts +16 -0
  48. package/src/tool/petWaterIntake/component.astro +103 -0
  49. package/src/tool/petWaterIntake/controller.ts +47 -0
  50. package/src/tool/petWaterIntake/dom-views.ts +54 -0
  51. package/src/tool/petWaterIntake/entry.ts +33 -0
  52. package/src/tool/petWaterIntake/i18n/de.ts +205 -0
  53. package/src/tool/petWaterIntake/i18n/en.ts +205 -0
  54. package/src/tool/petWaterIntake/i18n/es.ts +205 -0
  55. package/src/tool/petWaterIntake/i18n/fr.ts +205 -0
  56. package/src/tool/petWaterIntake/i18n/id.ts +237 -0
  57. package/src/tool/petWaterIntake/i18n/it.ts +237 -0
  58. package/src/tool/petWaterIntake/i18n/ja.ts +237 -0
  59. package/src/tool/petWaterIntake/i18n/ko.ts +237 -0
  60. package/src/tool/petWaterIntake/i18n/nl.ts +237 -0
  61. package/src/tool/petWaterIntake/i18n/pl.ts +237 -0
  62. package/src/tool/petWaterIntake/i18n/pt.ts +237 -0
  63. package/src/tool/petWaterIntake/i18n/ru.ts +237 -0
  64. package/src/tool/petWaterIntake/i18n/sv.ts +237 -0
  65. package/src/tool/petWaterIntake/i18n/tr.ts +237 -0
  66. package/src/tool/petWaterIntake/i18n/zh.ts +237 -0
  67. package/src/tool/petWaterIntake/index.ts +11 -0
  68. package/src/tool/petWaterIntake/logic.test.ts +52 -0
  69. package/src/tool/petWaterIntake/logic.ts +84 -0
  70. package/src/tool/petWaterIntake/pet-water-intake.css +144 -0
  71. package/src/tool/petWaterIntake/seo.astro +15 -0
  72. package/src/tool/petWaterIntake/ui.ts +55 -0
  73. package/src/tools.ts +6 -0
@@ -0,0 +1,182 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
3
+ import type { PetToxicityLocaleContent, PetToxicityUI } from '../entry';
4
+
5
+ const slug = 'giftig-mat-hund-katt-kontroll';
6
+ const title = 'Kontroll av giftig mat för hund och katt';
7
+ const description = 'Kontrollera farliga livsmedel för hundar och katter, förstå varningssignaler och vet när du ska kontakta en veterinär.';
8
+
9
+ const ui: PetToxicityUI = {
10
+ "journeyHint": "Välj djur, öppna matatlasen och läs den artspecifika varningen innan du bestämmer nästa steg.",
11
+ "speciesLabel": "Djurart",
12
+ "speciesDog": "Hund",
13
+ "speciesCat": "Katt",
14
+ "speciesDogMeta": "Hundprofil",
15
+ "speciesCatMeta": "Kattprofil",
16
+ "foodLabel": "Livsmedel eller ingrediens",
17
+ "foodPlaceholder": "Välj ett livsmedel",
18
+ "foodMenuHint": "Listan ändras beroende på djur eftersom risken är artspecifik.",
19
+ "resultEyebrow": "Matatlasen visar",
20
+ "resultEmpty": "Välj ett livsmedel för att öppna säkerhetskortet.",
21
+ "sceneLabel": "Exponeringskarta",
22
+ "sceneReady": "Välj ett livsmedel",
23
+ "sceneSelected": "Artspecifikt kort öppet",
24
+ "riskCritical": "Akut varning",
25
+ "riskHigh": "Hög risk",
26
+ "riskCaution": "Försiktighet",
27
+ "riskUnknown": "Otillräckliga data",
28
+ "riskLabel": "Risknivå",
29
+ "whyLabel": "Varför det är viktigt",
30
+ "signsLabel": "Symptom att observera",
31
+ "actionLabel": "Vad du bör göra",
32
+ "callVetLabel": "Det säkraste steget är professionell rådgivning.",
33
+ "callVetText": "En kalkylator kan inte beräkna en toxisk dos eller ersätta en undersökning.",
34
+ "sourceLabel": "Källor som används",
35
+ "sourceText": "Profilerna baseras på veterinärmedicinska riktlinjer från ASPCA, FDA och MSD Veterinary Manual.",
36
+ "emergencyTitle": "Om ditt husdjur har ätit något olämpligt",
37
+ "emergencyText": "Ring din veterinär eller djursjukhus omedelbart. Ta vara på förpackningen och ingredienslistan.",
38
+ "openMenu": "Öppna alternativ",
39
+ "closeMenu": "Stäng alternativ"
40
+ };
41
+
42
+ const faq: PetToxicityLocaleContent['faq'] = [
43
+ {
44
+ "question": "Garanterar detta verktyg att mitt djur är säkert?",
45
+ "answer": "Nej. Det är en pedagogisk guide, inte en diagnos. Rådfråga alltid en veterinär om ditt djur ätit något olämpligt."
46
+ },
47
+ {
48
+ "question": "Vilka livsmedel är särskilt farliga för hundar?",
49
+ "answer": "Xylitol, choklad, koffein, vindruvor, russin, lök, vitlök, alkohol och rå jästdeg."
50
+ },
51
+ {
52
+ "question": "Är lök och vitlök farligt för katter?",
53
+ "answer": "Ja. Katter är mycket känsliga för skador på röda blodkroppar orsakade av Allium-växter."
54
+ },
55
+ {
56
+ "question": "Varför skiljer sig varningen för xylitol mellan hund och katt?",
57
+ "answer": "Xylitol orsakar ett snabbt och livshotande blodsockerfall hos hundar. Hos katter är denna risk inte lika tydligt dokumenterad."
58
+ },
59
+ {
60
+ "question": "Vad gör jag om maten inte finns med i listan?",
61
+ "answer": "Att en vara saknas är ingen garanti för säkerhet. Spara förpackningen och kontakta veterinär."
62
+ },
63
+ ];
64
+
65
+
66
+ const howTo: PetToxicityLocaleContent['howTo'] = [
67
+ {
68
+ "name": "Välj djurart",
69
+ "text": "Välj Hund eller Katt för att ladda rätt information."
70
+ },
71
+ {
72
+ "name": "Välj livsmedel",
73
+ "text": "Öppna menyn och välj den ingrediens som passar bäst."
74
+ },
75
+ {
76
+ "name": "Läs säkerhetskortet",
77
+ "text": "Granska risknivån, möjliga symptom och rekommenderad åtgärd."
78
+ },
79
+ {
80
+ "name": "Kontakta veterinär vid behov",
81
+ "text": "Vid en verklig händelse ska du omedelbart kontakta veterinär."
82
+ }
83
+ ];
84
+
85
+ const seo: PetToxicityLocaleContent['seo'] = [
86
+ {
87
+ type: 'summary',
88
+ title: "Snabb koll av matosäkerhet för hund och katt",
89
+ items: [
90
+ "Välj djurart först eftersom samma ingrediens påverkar olika.",
91
+ "Använd korten för att förstå faran och hur akut läget är.",
92
+ "Xylitolintag hos hund ska alltid behandlas som ett akutfall.",
93
+ "Rådfråga veterinär vid alla misstänkta matförgiftningar."
94
+ ],
95
+ },
96
+ {
97
+ type: 'title',
98
+ text: "Hur du använder kontrollen för giftig mat ansvarsfullt",
99
+ level: 2,
100
+ },
101
+ {
102
+ type: 'paragraph',
103
+ html: "Denna kontroll för giftig mat är utformad för de första kritiska minuterna efter att en hund eller katt ätit något olämpligt. Välj djur och öppna kortet för att förbereda samtalet med veterinären. Det underlättar kommunikationen under stress och ger klarhet i en orolig stund vid akutbesök. Informationen täcker risknivåer, vanliga symptom och rekommenderade åtgärder. Vid minsta tveksamhet bör du alltid rådfråga en kvalificerad veterinär för att säkerställa djurets hälsa.",
104
+ },
105
+ {
106
+ type: 'paragraph',
107
+ html: "Artskillnaden är avgörande. Hundar och katter bryter ner ämnen olika. Xylitol är livsfarligt för hundar då det orsakar kraftig insulinutsöndring och allvarlig hypoglykemi, medan lök och vitlök påverkar kattens röda blodkroppar kraftigt och kan ge anemi. Att veta om detta hjälper till att undvika felaktig första hjälpen i hemmet. Vid minsta tveksamhet bör du alltid rådfråga en kvalificerad veterinär för att säkerställa djurets hälsa.",
108
+ },
109
+ {
110
+ type: 'title',
111
+ text: "Vanliga matfaror och viktiga detaljer",
112
+ level: 2,
113
+ },
114
+ {
115
+ type: 'table',
116
+ headers: ["Livsmedel eller ingrediens","Huvudsaklig fara","Viktigt sammanhang"],
117
+ rows: [["Choklad och koffein","Hjärt- och nervsystempåverkan","Kakaohalt och vikt har stor betydelse."],["Xylitol","Snabbt blodsockerfall hos hundar","Kontrollera sockerfritt tuggummi och kakor."],["Vindruvor och russin","Möjlig njurskada hos hundar","Betrakta inte små mängder som ofarliga."],["Lök och vitlök","Skada på röda blodkroppar","Torkade och pulveriserade former ökar risken."],["Rå jästdeg","Magsäcksexpansion och alkohol","Jäsande deg skapar tryck och alkohol."]],
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: "Förutom kemisk giftighet finns det fysiska risker som tarmstopp av ben eller bukspottkörtelinflammation av fet mat. Tillagade ben kan splittras och skada mag-tarmkanalen, medan fet mat utlöser smärtsam pankreatit. Snabb kontakt med veterinär räddar liv i akuta fall. Vid minsta tveksamhet bör du alltid rådfråga en kvalificerad veterinär för att säkerställa djurets hälsa.",
122
+ },
123
+ {
124
+ type: 'title',
125
+ text: "Åtgärder efter en möjlig exponering",
126
+ level: 2,
127
+ },
128
+ {
129
+ type: 'list',
130
+ items: [
131
+ "Ta bort matresterna och spara förpackningen.",
132
+ "Notera djurets vikt, matvara, mängd och tidpunkt.",
133
+ "Ring veterinär eller giftinformationen.",
134
+ "Framkalla inte kräkning utan veterinärs inrådan.",
135
+ "Uppsök akuthjälp direkt vid kramper eller medvetslöshet."
136
+ ],
137
+ },
138
+ {
139
+ type: 'tip',
140
+ title: "Djurets hälsa kommer först",
141
+ html: "Symptom kan dröja flera timmar. Vänta inte med att söka hjälp. Vid minsta tveksamhet bör du alltid rådfråga en kvalificerad veterinär för att säkerställa djurets hälsa.",
142
+ },
143
+ ];
144
+
145
+ const schemas: PetToxicityLocaleContent['schemas'] = [
146
+ {
147
+ '@context': 'https://schema.org',
148
+ '@type': 'SoftwareApplication',
149
+ name: title,
150
+ description,
151
+ applicationCategory: 'HealthApplication',
152
+ operatingSystem: 'Web',
153
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
154
+ } as WithContext<SoftwareApplication>,
155
+ {
156
+ '@context': 'https://schema.org',
157
+ '@type': 'FAQPage',
158
+ mainEntity: faq.map((item) => ({
159
+ '@type': 'Question',
160
+ name: item.question,
161
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
162
+ })),
163
+ } as WithContext<FAQPage>,
164
+ {
165
+ '@context': 'https://schema.org',
166
+ '@type': 'HowTo',
167
+ name: title,
168
+ step: howTo.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
169
+ } as WithContext<HowTo>,
170
+ ];
171
+
172
+ export const content: PetToxicityLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas,
182
+ };
@@ -0,0 +1,182 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
3
+ import type { PetToxicityLocaleContent, PetToxicityUI } from '../entry';
4
+
5
+ const slug = 'evcil-hayvan-zehirli-gida-kontrolu';
6
+ const title = 'Kedi ve köpekler için zehirli gıda kontrolü';
7
+ const description = 'Kedi ve köpekler için tehlikeli gıdaları kontrol edin, uyarı belirtilerini anlayın ve ne zaman veteriner hekime başvuracağınızı öğrenin.';
8
+
9
+ const ui: PetToxicityUI = {
10
+ "journeyHint": "Hayvanı seçin, gıda atlasını açın ve karardan önce türe özgü uyarıyı okuyun.",
11
+ "speciesLabel": "Tür",
12
+ "speciesDog": "Köpek",
13
+ "speciesCat": "Kedi",
14
+ "speciesDogMeta": "Köpek profili",
15
+ "speciesCatMeta": "Kedi profili",
16
+ "foodLabel": "Gıda veya içerik",
17
+ "foodPlaceholder": "Bir gıda seçin",
18
+ "foodMenuHint": "Liste hayvana göre değişir çünkü risk türe özgüdür.",
19
+ "resultEyebrow": "Gıda atlası gösteriyor",
20
+ "resultEmpty": "Güvenlik kartını açmak için bir gıda seçin.",
21
+ "sceneLabel": "Maruz kalma haritası",
22
+ "sceneReady": "Bir gıda seçin",
23
+ "sceneSelected": "Türe özgü kart açık",
24
+ "riskCritical": "Acil durum",
25
+ "riskHigh": "Yüksek risk",
26
+ "riskCaution": "Dikkat",
27
+ "riskUnknown": "Yetersiz veri",
28
+ "riskLabel": "Risk seviyesi",
29
+ "whyLabel": "Neden önemli",
30
+ "signsLabel": "İzlenecek belirtiler",
31
+ "actionLabel": "Yapılması gerekenler",
32
+ "callVetLabel": "En güvenli adım profesyonel tavsiyedir.",
33
+ "callVetText": "Hesaplayıcı toksik dozu tahmin edemez veya muayene yerine geçemez.",
34
+ "sourceLabel": "Kullanılan kanıtlar",
35
+ "sourceText": "Profiller ASPCA, FDA ve MSD Veteriner Kılavuzunun veteriner toksikolojisi kılavuzlarına dayanmaktadır.",
36
+ "emergencyTitle": "Evcil hayvanınız tehlikeli bir şey yediyse",
37
+ "emergencyText": "Hemen veteriner hekiminizi veya acil kliniği arayın. Ambalajı, içerik listesini ve tahmini miktarı saklayın.",
38
+ "openMenu": "Seçenekleri aç",
39
+ "closeMenu": "Seçenekleri kapat"
40
+ };
41
+
42
+ const faq: PetToxicityLocaleContent['faq'] = [
43
+ {
44
+ "question": "Bu araç evcil hayvanımın güvende olduğunu garanti eder mi?",
45
+ "answer": "Hayır. Bu eğitici bir rehberdir, teşhis değildir. Tehlikeli bir gıda tüketiminde mutlaka veteriner hekime başvurun."
46
+ },
47
+ {
48
+ "question": "Köpekler için hangi gıdalar özellikle tehlikelidir?",
49
+ "answer": "Ksilitol, çikolata, kafein, üzüm, kuru üzüm, soğan, sarımsak, alkol ve çiğ maya hamuru en büyük tehlikelerdendir."
50
+ },
51
+ {
52
+ "question": "Soğan ve sarımsak kediler için tehlikeli midir?",
53
+ "answer": "Evet. Kediler Allium bitkilerinin (soğan, sarımsak) alyuvarlara verdiği hasara karşı çok hassastır."
54
+ },
55
+ {
56
+ "question": "Ksilitol neden kedi ve köpeklerde farklı uyarılar gösterir?",
57
+ "answer": "Ksilitol köpeklerde kan şekerinin hızla düşmesine neden olur. Kedilerde bu risk FDA tarafından daha az belgelenmiştir."
58
+ },
59
+ {
60
+ "question": "Tüketilen gıda listede yoksa ne yapılmalıdır?",
61
+ "answer": "Listede olmaması güvenli olduğu anlamına gelmez. Ambalajı saklayın ve veteriner hekiminize danışın."
62
+ },
63
+ ];
64
+
65
+
66
+ const howTo: PetToxicityLocaleContent['howTo'] = [
67
+ {
68
+ "name": "Türü seçin",
69
+ "text": "İlgili bilgileri yüklemek için Köpek veya Kedi seçeneğini belirleyin."
70
+ },
71
+ {
72
+ "name": "Gıdayı seçin",
73
+ "text": "Menüyü açın ve en uygun içeriği seçin."
74
+ },
75
+ {
76
+ "name": "Güvenlik kartını okuyun",
77
+ "text": "Risk seviyesini, olası belirtileri ve önerilen adımı inceleyin."
78
+ },
79
+ {
80
+ "name": "Gerektiğinde uzmana başvurun",
81
+ "text": "Gerçek bir maruz kalma durumunda hemen veteriner hekiminizi arayın."
82
+ }
83
+ ];
84
+
85
+ const seo: PetToxicityLocaleContent['seo'] = [
86
+ {
87
+ type: 'summary',
88
+ title: "Kedi ve köpeklerde hızlı gıda güvenliği kontrolü",
89
+ items: [
90
+ "Aynı içeriğin farklı etkileri olabileceği için önce türü seçin.",
91
+ "Tehlikeyi ve aciliyet seviyesini anlamak için kartları kullanın.",
92
+ "Köpeklerde ksilitol tüketimini acil tıbbi durum olarak değerlendirin.",
93
+ "Gerçek bir tüketim durumunda mutlaka veteriner hekime danışın."
94
+ ],
95
+ },
96
+ {
97
+ type: 'title',
98
+ text: "Zehirli gıda kontrol aracını sorumlu şekilde kullanma",
99
+ level: 2,
100
+ },
101
+ {
102
+ type: 'paragraph',
103
+ html: "Bu zehirli gıda kontrol aracı, bir kedi veya köpeğin yememesi gereken bir şeyi yediği ilk anlarda rehberlik etmek için tasarlanmıştır. Türü seçin ve veteriner aramasına hazırlanmak için kartı kullanın. Bu sayede panik anında gereken bilgileri toplayabilir ve doğru karar verebilirsiniz. Bilgiler risk seviyelerini, izlenecek belirtileri ve acil adımları kapsar. Herhangi bir şüphe durumunda evcil hayvanınızın sağlığını korumak için mutlaka uzman bir veteriner hekime danışın.",
104
+ },
105
+ {
106
+ type: 'paragraph',
107
+ html: "Tür ayrımı hayati önem taşır. Köpekler ve kediler maddeleri farklı şekilde metabolize eder. Ksilitol köpeklerde hızlı insülin salgılanmasına ve şiddetli hipoglisemiye yol açarken, soğan ve sarımsak kedilerin alyuvarlarını tahrip ederek anemiye neden olur. Bilinçsizce müdahale etmek yerine kliniğe ulaşılmalıdır. Herhangi bir şüphe durumunda evcil hayvanınızın sağlığını korumak için mutlaka uzman bir veteriner hekime danışın.",
108
+ },
109
+ {
110
+ type: 'title',
111
+ text: "Yaygın gıda tehlikeleri ve önemli ayrıntılar",
112
+ level: 2,
113
+ },
114
+ {
115
+ type: 'table',
116
+ headers: ["Gıda veya içerik","Ana tehlike","Önemli bağlam"],
117
+ rows: [["Çikolata ve kafein","Kalp ve sinir sistemi etkileri","Kakaonun yoğunluğu ve ağırlık önemlidir."],["Ksilitol","Köpeklerde hızlı kan şekeri düşüşü","Şekersiz sakızları ve tatlıları kontrol edin."],["Üzüm ve kuru üzüm","Köpeklerde böbrek hasarı riski","Küçük miktarları güvenli saymayın."],["Soğan ve sarımsak","Alyuvar hasarı ve anemi","Kurutulmuş ve toz formlar riski artırır."],["Çiğ maya hamuru","Mide genişlemesi ve alkol","Mayalanan hamur basınç ve alkol üretir."]],
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: "Kimyasal toksisitenin yanı sıra kemiklerin yol açtığı tıkanmalar ve yağlı gıdaların neden olduğu pankreatit riski gibi fiziksel tehlikeler de mevcuttur. Pişmiş kemikler sindirim sistemini delebilir, yağlı gıdalar ise şiddetli pankreas iltihabına yol açar. Acil adımların doğru sırayla atılması şarttır. Herhangi bir şüphe durumunda evcil hayvanınızın sağlığını korumak için mutlaka uzman bir veteriner hekime danışın.",
122
+ },
123
+ {
124
+ type: 'title',
125
+ text: "Olası bir maruz kalma durumunda yapılacaklar",
126
+ level: 2,
127
+ },
128
+ {
129
+ type: 'list',
130
+ items: [
131
+ "Kalan gıdayı uzaklaştırın ve ambalajı saklayın.",
132
+ "Hayvanın kilosunu, gıdayı, miktarı ve zamanı not edin.",
133
+ "Veteriner hekiminizi arayın.",
134
+ "Tıbbi yönlendirme olmadan kusturmaya çalışmayın.",
135
+ "Nöbet veya bayılma durumunda acilen kliniğe gidin."
136
+ ],
137
+ },
138
+ {
139
+ type: 'tip',
140
+ title: "Hayvanın sağlığı her şeyden önce gelir",
141
+ html: "Belirtiler saatler sonra ortaya çıkabilir. Yardım almak için beklemeyin. Herhangi bir şüphe durumunda evcil hayvanınızın sağlığını korumak için mutlaka uzman bir veteriner hekime danışın.",
142
+ },
143
+ ];
144
+
145
+ const schemas: PetToxicityLocaleContent['schemas'] = [
146
+ {
147
+ '@context': 'https://schema.org',
148
+ '@type': 'SoftwareApplication',
149
+ name: title,
150
+ description,
151
+ applicationCategory: 'HealthApplication',
152
+ operatingSystem: 'Web',
153
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
154
+ } as WithContext<SoftwareApplication>,
155
+ {
156
+ '@context': 'https://schema.org',
157
+ '@type': 'FAQPage',
158
+ mainEntity: faq.map((item) => ({
159
+ '@type': 'Question',
160
+ name: item.question,
161
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
162
+ })),
163
+ } as WithContext<FAQPage>,
164
+ {
165
+ '@context': 'https://schema.org',
166
+ '@type': 'HowTo',
167
+ name: title,
168
+ step: howTo.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
169
+ } as WithContext<HowTo>,
170
+ ];
171
+
172
+ export const content: PetToxicityLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas,
182
+ };
@@ -0,0 +1,181 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
3
+ import type { PetToxicityLocaleContent, PetToxicityUI } from '../entry';
4
+
5
+ const slug = 'pet-food-toxicity-checker';
6
+ const title = ' 猫 狗 有 毒 危 险 食 物 自 查 Tool';
7
+ const description = ' 检 查 猫 狗 误 食 的 常 见 危 险 食 物 与 中 毒 症 状 , 了 解 何 时 需 要 紧 急 联 系 兽 医 。 ';
8
+
9
+ const ui: PetToxicityUI = {
10
+ "journeyHint": " 选 择 宠 物 类 型 , 打 开 食 物 图 鉴 , 查 看 针 对 该 物 种 的 危 险 警 告 。 ",
11
+ "speciesLabel": " 宠 物 种 类 ",
12
+ "speciesDog": " 狗 ",
13
+ "speciesCat": " 猫 ",
14
+ "speciesDogMeta": " 犬 类 档 案 ",
15
+ "speciesCatMeta": " 猫 类 档 案 ",
16
+ "foodLabel": " 食 物 或 成 分 ",
17
+ "foodPlaceholder": " 请 选 择 食 物 ",
18
+ "foodMenuHint": " 不 同 物 种 的 毒 性 风 险 不 同 , 列 表 会 自 动 切 换 。 ",
19
+ "resultEyebrow": " 食 物 图 鉴 判 定 ",
20
+ "resultEmpty": " 请 选 择 食 物 以 打 开 安 全 卡 片 。 ",
21
+ "sceneLabel": " 误 食 风 险 地 图 ",
22
+ "sceneReady": " 请 选 择 食 物 ",
23
+ "sceneSelected": " 专 属 安 全 卡 片 已 打 开 ",
24
+ "riskCritical": " 紧 急 警 示 ",
25
+ "riskHigh": " 高 风 险 ",
26
+ "riskCaution": " 需 警 惕 ",
27
+ "riskUnknown": " 数 据 不 足 ",
28
+ "riskLabel": " 风 险 等 级 ",
29
+ "whyLabel": " 危 险 原 因 ",
30
+ "signsLabel": " 需 观 察 的 症 状 ",
31
+ "actionLabel": " 应 对 措 施 ",
32
+ "callVetLabel": " 最 安 全 的 做 法 是 咨 询 专 业 兽 医 。 ",
33
+ "callVetText": " 计 算 工 具 无 法 精 准 估 算 毒 性 剂 量 , 也 不 能 替 代 兽 医 检 查 。 ",
34
+ "sourceLabel": " 参 考 依 据 ",
35
+ "sourceText": " 数 据 基 于 ASPCA 、 FDA 及 MSD 兽 医 手 册 的 中 毒 指 南 。 ",
36
+ "emergencyTitle": " 如 果 宠 物 误 食 了 危 险 物 品 ",
37
+ "emergencyText": " 请 立 即 联 系 兽 医 或 宠 物 急 诊 。 保 留 包 装 、 成 分 表 、 估 计 食 用 量 及 时 间 。 ",
38
+ "openMenu": " 打 开 选 项 ",
39
+ "closeMenu": " 关 闭 选 项 "
40
+ };
41
+
42
+ const faq: PetToxicityLocaleContent['faq'] = [
43
+ {
44
+ "question": " 此 工 具 能 保 证 我 的 宠 物 安 全 吗 ?",
45
+ "answer": " 不 能 。 本 工 具 仅 供 科 普 参 考 , 不 能 作 为 诊 断 或 剂 量 计 算 依 据 。 如 有 误 食 请 及 时 就 医 。 "
46
+ },
47
+ {
48
+ "question": " 哪 些 食 物 对 狗 特 别 危 险 ?",
49
+ "answer": " 木 糖 醇 、 巧 克 力 、 咖 啡 因 、 葡 萄 、 葡 萄 干 、 洋 葱 、 大 蒜 、 酒 精 及 生 酵 母 面 团 等 。 "
50
+ },
51
+ {
52
+ "question": " 洋 葱 和 大 蒜 对 猫 危 险 吗 ?",
53
+ "answer": " 是 的 。 猫 对 葱 属 植 物 ( 洋 葱 、 大 蒜 、 韭 菜 ) 引 起 的 红 细 胞 破 坏 非 常 敏 感 。 "
54
+ },
55
+ {
56
+ "question": " 为 什 么 木 糖 醇 对 猫 和 狗 的 警 告 不 同 ?",
57
+ "answer": " 木 糖 醇 会 导 致 狗 出 现 快 速 且 危 险 的 低 血 糖 。 对 猫 的 危 害 在 官 方 指 南 中 尚 无 明 确 结 论 。 "
58
+ },
59
+ {
60
+ "question": " 如 果 误 食 的 食 物 不 在 列 表 中 怎 么 办 ?",
61
+ "answer": " 未 列 出 不 代 表 安 全 。 请 保 留 包 装 并 立 即 咨 询 兽 医 。 "
62
+ }
63
+ ];
64
+
65
+ const howTo: PetToxicityLocaleContent['howTo'] = [
66
+ {
67
+ "name": " 选 择 宠 物 种 类 ",
68
+ "text": " 选 择 狗 或 猫 以 加 载 专 有 数 据 。 "
69
+ },
70
+ {
71
+ "name": " 选 择 食 物 成 分 ",
72
+ "text": " 打 开 菜 单 并 选 择 相 近 的 食 物 或 成 分 。 "
73
+ },
74
+ {
75
+ "name": " 查 看 安 全 卡 片 ",
76
+ "text": " 了 解 风 险 等 级 、 可 能 出 现 的 症 状 及 建 议 应 对 措 施 。 "
77
+ },
78
+ {
79
+ "name": " 及 时 联 系 兽 医 ",
80
+ "text": " 如 发 生 实 际 误 食 , 请 带 上 食 物 信 息 联 系 兽 医 。 "
81
+ }
82
+ ];
83
+
84
+ const seo: PetToxicityLocaleContent['seo'] = [
85
+ {
86
+ type: 'summary',
87
+ title: " 猫 狗 食 物 安 全 快 速 自 查 ",
88
+ items: [
89
+ " 由 于 同 种 成 分 对 猫 狗 作 用 不 同 , 请 先 选 择 宠 物 种 类 。 ",
90
+ " 利 用 安 全 卡 片 了 解 危 险 程 度 及 紧 急 状 况 。 ",
91
+ " 狗 误 食 木 糖 醇 需 作 为 紧 急 情 况 处 理 。 ",
92
+ " 发 生 实 际 误 食 时 请 务 必 咨 询 专 业 兽 医 。 "
93
+ ],
94
+ },
95
+ {
96
+ type: 'title',
97
+ text: " 如 何 负 责 任 地 使 用 本 有 毒 食 物 自 查 工 具 ",
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: " 本 有 毒 食 物 自 查 工 具 旨 在 为 宠 物 误 食 后 的 紧 张 时 刻 提 供 快 速 参 考 , 帮 助 主 人 在 联 系 兽 医 前 整 理 好 关 键 信 息 。 避 免 慌 乱 中 遗 漏 重 要 的 产 品 参 数 与 摄 入 时 间 。 及 时 准 备 好 准 确 的 资 料 能 为 救 治 争 取 宝 贵 宝 贵 的 时 间 。 ",
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: " 区 分 物 种 至 关 重 要 。 木 糖 醇 会 导 致 犬 类 严 重 低 血 糖 , 而 洋 葱 和 大 蒜 会 破 坏 猫 的 红 细 胞 。 切 勿 使 用 未 经 证 实 偏 方 自 行 处 理 。 盲 目 催 吐 可 能 造 成 严 重 的 二 次 伤 害 。 ",
107
+ },
108
+ {
109
+ type: 'title',
110
+ text: " 主 要 危 险 食 物 与 关 键 细 节 ",
111
+ level: 2,
112
+ },
113
+ {
114
+ type: 'table',
115
+ headers: [" 食 物 或 成 分 "," 主 要 危 险 "," 重 要 细 节 "],
116
+ rows: [[" 巧 克 力 与 咖 啡 因 "," 对 心 脏 及 神 经 系 统 的 影 响 "," 可 可 含 量 与 体 重 是 关 键 。 "],[" 木 糖 醇 "," 引 发 犬 类 急 性 低 血 糖 "," 检 查 无 糖 口 香 糖 及 糕 点 。 "],[" 葡 萄 及 葡 萄 干 "," 犬 类 急 性 肾 损 伤 风 险 "," 切 勿 认 为 少 量 即 安 全 。 "],[" 洋 葱 与 大 蒜 "," 红 细 胞 破 坏 与 贫 血 "," 脱 水 及 粉 末 形 式 风 险 集 中 。 "],[" 生 酵 母 面 团 "," 胃 部 膨 胀 与 产 生 酒 精 "," 发 酵 产 生 压 力 与 酒 精 。 "]],
117
+ },
118
+ {
119
+ type: 'paragraph',
120
+ html: " 除 了 化 学 毒 性 外 , 骨 头 造 成 的 物 理 性 堵 塞 以 及 高 脂 食 物 引 发 的 急 性 胰 腺 炎 同 样 需 要 警 惕 。 密 切 观 察 宠 物 的 精 神 状 态 与 生 理 反 应 非 常 重 要 。 ",
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: " 发 生 误 食 后 的 处 理 步 骤 ",
125
+ level: 2,
126
+ },
127
+ {
128
+ type: 'list',
129
+ items: [
130
+ " 移 走 剩 余 食 物 并 保 留 包 装 。 ",
131
+ " 记 录 宠 物 体 重 、 食 物 名 称 、 误 食 量 及 时 间 。 ",
132
+ " 拨 打 兽 医 或 宠 物 急 诊 电 话 。 ",
133
+ " 未 经 医 嘱 切 勿 盲 目 催 吐 。 ",
134
+ " 如 出 现 抽 搐 或 昏 迷 请 立 即 送 医 。 "
135
+ ],
136
+ },
137
+ {
138
+ type: 'tip',
139
+ title: " 宠 物 的 健 康 高 于 一 切 ",
140
+ html: " 某 些 症 状 可 能 会 延 迟 数 小 时 出 现 , 请 勿 等 待 病 情 恶 化 。 ",
141
+ },
142
+ ];
143
+
144
+ const schemas: PetToxicityLocaleContent['schemas'] = [
145
+ {
146
+ '@context': 'https://schema.org',
147
+ '@type': 'SoftwareApplication',
148
+ name: title,
149
+ description,
150
+ applicationCategory: 'HealthApplication',
151
+ operatingSystem: 'Web',
152
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
153
+ } as WithContext<SoftwareApplication>,
154
+ {
155
+ '@context': 'https://schema.org',
156
+ '@type': 'FAQPage',
157
+ mainEntity: faq.map((item) => ({
158
+ '@type': 'Question',
159
+ name: item.question,
160
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
161
+ })),
162
+ } as WithContext<FAQPage>,
163
+ {
164
+ '@context': 'https://schema.org',
165
+ '@type': 'HowTo',
166
+ name: title,
167
+ step: howTo.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
168
+ } as WithContext<HowTo>,
169
+ ];
170
+
171
+ export const content: PetToxicityLocaleContent = {
172
+ slug,
173
+ title,
174
+ description,
175
+ ui,
176
+ seo,
177
+ faq,
178
+ bibliography,
179
+ howTo,
180
+ schemas,
181
+ };
@@ -0,0 +1,11 @@
1
+ import type { ToolDefinition } from '../../types';
2
+ import { petToxicity } from './entry';
3
+
4
+ export * from './entry';
5
+
6
+ export const PET_TOXICITY_TOOL: ToolDefinition = {
7
+ entry: petToxicity,
8
+ Component: () => import('./component.astro'),
9
+ SEOComponent: () => import('./seo.astro'),
10
+ BibliographyComponent: () => import('./bibliography.astro'),
11
+ };
@@ -0,0 +1,32 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { getFoodEvaluation, getFoodOptions } from './logic';
3
+
4
+ describe('pet toxicity logic', () => {
5
+ it('returns the foods documented for each species', () => {
6
+ const dogFoods = getFoodOptions('dog');
7
+ const catFoods = getFoodOptions('cat');
8
+
9
+ expect(dogFoods.length).toBeGreaterThan(catFoods.length);
10
+ expect(dogFoods.map((food) => food.id)).toContain('macadamia-nuts');
11
+ expect(catFoods.map((food) => food.id)).not.toContain('macadamia-nuts');
12
+ });
13
+
14
+ it('keeps xylitol as an emergency for dogs', () => {
15
+ const evaluation = getFoodEvaluation('dog', 'xylitol');
16
+
17
+ expect(evaluation?.level).toBe('critical');
18
+ expect(evaluation?.action).toContain('immediately');
19
+ });
20
+
21
+ it('keeps cat-specific allium risk distinct', () => {
22
+ const evaluation = getFoodEvaluation('cat', 'onion-garlic');
23
+
24
+ expect(evaluation?.level).toBe('critical');
25
+ expect(evaluation?.why).toContain('susceptible');
26
+ });
27
+
28
+ it('rejects foods without a species-specific profile', () => {
29
+ expect(getFoodEvaluation('cat', 'macadamia-nuts')).toBeNull();
30
+ expect(getFoodEvaluation('dog', 'not-a-food')).toBeNull();
31
+ });
32
+ });