@jjlmoya/utils-forensic-science 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 (316) hide show
  1. package/package.json +69 -0
  2. package/scripts/crystal-lattice-catalog-translations.mjs +459 -0
  3. package/scripts/postinstall.mjs +27 -0
  4. package/scripts/sync-crystal-lattice-i18n.mjs +50 -0
  5. package/src/category/i18n/de.ts +55 -0
  6. package/src/category/i18n/en.ts +55 -0
  7. package/src/category/i18n/es.ts +55 -0
  8. package/src/category/i18n/fr.ts +55 -0
  9. package/src/category/i18n/id.ts +55 -0
  10. package/src/category/i18n/it.ts +55 -0
  11. package/src/category/i18n/ja.ts +56 -0
  12. package/src/category/i18n/ko.ts +56 -0
  13. package/src/category/i18n/nl.ts +55 -0
  14. package/src/category/i18n/pl.ts +55 -0
  15. package/src/category/i18n/pt.ts +55 -0
  16. package/src/category/i18n/ru.ts +55 -0
  17. package/src/category/i18n/sv.ts +55 -0
  18. package/src/category/i18n/tr.ts +55 -0
  19. package/src/category/i18n/zh.ts +56 -0
  20. package/src/category/index.ts +48 -0
  21. package/src/category/seo.astro +15 -0
  22. package/src/components/PreviewNavSidebar.astro +116 -0
  23. package/src/components/PreviewToolbar.astro +143 -0
  24. package/src/data.ts +10 -0
  25. package/src/entries.ts +48 -0
  26. package/src/env.d.ts +5 -0
  27. package/src/index.ts +29 -0
  28. package/src/layouts/PreviewLayout.astro +117 -0
  29. package/src/pages/[locale]/[slug].astro +162 -0
  30. package/src/pages/[locale].astro +261 -0
  31. package/src/pages/index.astro +3 -0
  32. package/src/tests/diacritics_density.test.ts +140 -0
  33. package/src/tests/faq_count.test.ts +19 -0
  34. package/src/tests/i18n_coverage.test.ts +36 -0
  35. package/src/tests/inverted_punctuation.test.ts +84 -0
  36. package/src/tests/locale_completeness.test.ts +24 -0
  37. package/src/tests/mocks/astro_mock.js +2 -0
  38. package/src/tests/no_en_dash.test.ts +70 -0
  39. package/src/tests/no_h1_in_components.test.ts +48 -0
  40. package/src/tests/schemas_fulfillment.test.ts +23 -0
  41. package/src/tests/script_density.test.ts +94 -0
  42. package/src/tests/seo_length.test.ts +46 -0
  43. package/src/tests/shared-test-helpers.ts +56 -0
  44. package/src/tests/slug_language_code_format.test.ts +23 -0
  45. package/src/tests/slug_uniqueness.test.ts +81 -0
  46. package/src/tests/title_quality.test.ts +55 -0
  47. package/src/tests/tool_exports.test.ts +34 -0
  48. package/src/tests/tool_validation.test.ts +16 -0
  49. package/src/tests/widmark.test.ts +28 -0
  50. package/src/tool/forensic-age-estimator/bibliography.astro +14 -0
  51. package/src/tool/forensic-age-estimator/bibliography.ts +16 -0
  52. package/src/tool/forensic-age-estimator/component.astro +321 -0
  53. package/src/tool/forensic-age-estimator/dental-skeletal-third-molar-age-estimator.css +634 -0
  54. package/src/tool/forensic-age-estimator/entry.ts +32 -0
  55. package/src/tool/forensic-age-estimator/i18n/de.ts +245 -0
  56. package/src/tool/forensic-age-estimator/i18n/en.ts +245 -0
  57. package/src/tool/forensic-age-estimator/i18n/es.ts +245 -0
  58. package/src/tool/forensic-age-estimator/i18n/fr.ts +245 -0
  59. package/src/tool/forensic-age-estimator/i18n/id.ts +245 -0
  60. package/src/tool/forensic-age-estimator/i18n/it.ts +245 -0
  61. package/src/tool/forensic-age-estimator/i18n/ja.ts +245 -0
  62. package/src/tool/forensic-age-estimator/i18n/ko.ts +245 -0
  63. package/src/tool/forensic-age-estimator/i18n/nl.ts +245 -0
  64. package/src/tool/forensic-age-estimator/i18n/pl.ts +245 -0
  65. package/src/tool/forensic-age-estimator/i18n/pt.ts +245 -0
  66. package/src/tool/forensic-age-estimator/i18n/ru.ts +245 -0
  67. package/src/tool/forensic-age-estimator/i18n/sv.ts +245 -0
  68. package/src/tool/forensic-age-estimator/i18n/tr.ts +245 -0
  69. package/src/tool/forensic-age-estimator/i18n/zh.ts +246 -0
  70. package/src/tool/forensic-age-estimator/index.ts +11 -0
  71. package/src/tool/forensic-age-estimator/logic.ts +81 -0
  72. package/src/tool/forensic-age-estimator/seo.astro +15 -0
  73. package/src/tool/forensic-blood-test-simulator/bibliography.astro +6 -0
  74. package/src/tool/forensic-blood-test-simulator/bibliography.ts +12 -0
  75. package/src/tool/forensic-blood-test-simulator/component.astro +168 -0
  76. package/src/tool/forensic-blood-test-simulator/dom-utils.ts +40 -0
  77. package/src/tool/forensic-blood-test-simulator/entry.ts +32 -0
  78. package/src/tool/forensic-blood-test-simulator/forensic-presumptive-blood-testing-luminol-kastle-meyer-simulator.css +532 -0
  79. package/src/tool/forensic-blood-test-simulator/helpers.ts +16 -0
  80. package/src/tool/forensic-blood-test-simulator/i18n/de.ts +185 -0
  81. package/src/tool/forensic-blood-test-simulator/i18n/en.ts +185 -0
  82. package/src/tool/forensic-blood-test-simulator/i18n/es.ts +185 -0
  83. package/src/tool/forensic-blood-test-simulator/i18n/fr.ts +220 -0
  84. package/src/tool/forensic-blood-test-simulator/i18n/id.ts +220 -0
  85. package/src/tool/forensic-blood-test-simulator/i18n/it.ts +220 -0
  86. package/src/tool/forensic-blood-test-simulator/i18n/ja.ts +220 -0
  87. package/src/tool/forensic-blood-test-simulator/i18n/ko.ts +220 -0
  88. package/src/tool/forensic-blood-test-simulator/i18n/nl.ts +220 -0
  89. package/src/tool/forensic-blood-test-simulator/i18n/pl.ts +220 -0
  90. package/src/tool/forensic-blood-test-simulator/i18n/pt.ts +220 -0
  91. package/src/tool/forensic-blood-test-simulator/i18n/ru.ts +220 -0
  92. package/src/tool/forensic-blood-test-simulator/i18n/sv.ts +220 -0
  93. package/src/tool/forensic-blood-test-simulator/i18n/tr.ts +220 -0
  94. package/src/tool/forensic-blood-test-simulator/i18n/zh.ts +220 -0
  95. package/src/tool/forensic-blood-test-simulator/index.ts +11 -0
  96. package/src/tool/forensic-blood-test-simulator/logic.ts +174 -0
  97. package/src/tool/forensic-blood-test-simulator/script.ts +192 -0
  98. package/src/tool/forensic-blood-test-simulator/seo.astro +15 -0
  99. package/src/tool/forensic-fiber-comparison-microscope/bibliography.astro +6 -0
  100. package/src/tool/forensic-fiber-comparison-microscope/bibliography.ts +16 -0
  101. package/src/tool/forensic-fiber-comparison-microscope/component.astro +146 -0
  102. package/src/tool/forensic-fiber-comparison-microscope/entry.ts +32 -0
  103. package/src/tool/forensic-fiber-comparison-microscope/forensic-fiber-comparison-microscope.css +629 -0
  104. package/src/tool/forensic-fiber-comparison-microscope/i18n/de.ts +250 -0
  105. package/src/tool/forensic-fiber-comparison-microscope/i18n/en.ts +246 -0
  106. package/src/tool/forensic-fiber-comparison-microscope/i18n/es.ts +246 -0
  107. package/src/tool/forensic-fiber-comparison-microscope/i18n/fr.ts +246 -0
  108. package/src/tool/forensic-fiber-comparison-microscope/i18n/id.ts +250 -0
  109. package/src/tool/forensic-fiber-comparison-microscope/i18n/it.ts +246 -0
  110. package/src/tool/forensic-fiber-comparison-microscope/i18n/ja.ts +250 -0
  111. package/src/tool/forensic-fiber-comparison-microscope/i18n/ko.ts +246 -0
  112. package/src/tool/forensic-fiber-comparison-microscope/i18n/nl.ts +246 -0
  113. package/src/tool/forensic-fiber-comparison-microscope/i18n/pl.ts +250 -0
  114. package/src/tool/forensic-fiber-comparison-microscope/i18n/pt.ts +250 -0
  115. package/src/tool/forensic-fiber-comparison-microscope/i18n/ru.ts +250 -0
  116. package/src/tool/forensic-fiber-comparison-microscope/i18n/sv.ts +250 -0
  117. package/src/tool/forensic-fiber-comparison-microscope/i18n/tr.ts +246 -0
  118. package/src/tool/forensic-fiber-comparison-microscope/i18n/zh.ts +250 -0
  119. package/src/tool/forensic-fiber-comparison-microscope/index.ts +11 -0
  120. package/src/tool/forensic-fiber-comparison-microscope/logic.ts +244 -0
  121. package/src/tool/forensic-fiber-comparison-microscope/render.ts +265 -0
  122. package/src/tool/forensic-fiber-comparison-microscope/seo.astro +15 -0
  123. package/src/tool/forensic-fiber-comparison-microscope/view.ts +267 -0
  124. package/src/tool/forensic-glass-becke-line-simulator/bibliography.astro +6 -0
  125. package/src/tool/forensic-glass-becke-line-simulator/bibliography.ts +16 -0
  126. package/src/tool/forensic-glass-becke-line-simulator/component.astro +81 -0
  127. package/src/tool/forensic-glass-becke-line-simulator/entry.ts +32 -0
  128. package/src/tool/forensic-glass-becke-line-simulator/forensic-glass-becke-line-simulator.css +392 -0
  129. package/src/tool/forensic-glass-becke-line-simulator/i18n/de.ts +231 -0
  130. package/src/tool/forensic-glass-becke-line-simulator/i18n/en.ts +231 -0
  131. package/src/tool/forensic-glass-becke-line-simulator/i18n/es.ts +231 -0
  132. package/src/tool/forensic-glass-becke-line-simulator/i18n/fr.ts +231 -0
  133. package/src/tool/forensic-glass-becke-line-simulator/i18n/id.ts +231 -0
  134. package/src/tool/forensic-glass-becke-line-simulator/i18n/it.ts +231 -0
  135. package/src/tool/forensic-glass-becke-line-simulator/i18n/ja.ts +231 -0
  136. package/src/tool/forensic-glass-becke-line-simulator/i18n/ko.ts +231 -0
  137. package/src/tool/forensic-glass-becke-line-simulator/i18n/nl.ts +231 -0
  138. package/src/tool/forensic-glass-becke-line-simulator/i18n/pl.ts +231 -0
  139. package/src/tool/forensic-glass-becke-line-simulator/i18n/pt.ts +231 -0
  140. package/src/tool/forensic-glass-becke-line-simulator/i18n/ru.ts +231 -0
  141. package/src/tool/forensic-glass-becke-line-simulator/i18n/sv.ts +231 -0
  142. package/src/tool/forensic-glass-becke-line-simulator/i18n/tr.ts +231 -0
  143. package/src/tool/forensic-glass-becke-line-simulator/i18n/zh.ts +231 -0
  144. package/src/tool/forensic-glass-becke-line-simulator/index.ts +11 -0
  145. package/src/tool/forensic-glass-becke-line-simulator/logic.ts +100 -0
  146. package/src/tool/forensic-glass-becke-line-simulator/seo.astro +15 -0
  147. package/src/tool/forensic-glass-becke-line-simulator/view.ts +281 -0
  148. package/src/tool/forensic-image-authenticity-analyzer/bibliography.astro +9 -0
  149. package/src/tool/forensic-image-authenticity-analyzer/bibliography.ts +7 -0
  150. package/src/tool/forensic-image-authenticity-analyzer/component.astro +250 -0
  151. package/src/tool/forensic-image-authenticity-analyzer/entry.ts +29 -0
  152. package/src/tool/forensic-image-authenticity-analyzer/forensic-image-metadata-authenticity-analyzer.css +679 -0
  153. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -0
  154. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -0
  155. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -0
  156. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -0
  157. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +76 -0
  158. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -0
  159. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +72 -0
  160. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +72 -0
  161. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +75 -0
  162. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +75 -0
  163. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -0
  164. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +75 -0
  165. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +76 -0
  166. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +76 -0
  167. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +71 -0
  168. package/src/tool/forensic-image-authenticity-analyzer/index.ts +11 -0
  169. package/src/tool/forensic-image-authenticity-analyzer/logic.ts +283 -0
  170. package/src/tool/forensic-image-authenticity-analyzer/seo.astro +10 -0
  171. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.astro +6 -0
  172. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.ts +12 -0
  173. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +240 -0
  174. package/src/tool/forensic-microcrystal-drug-simulator/entry.ts +32 -0
  175. package/src/tool/forensic-microcrystal-drug-simulator/forensic-microcrystal-drug-simulator.css +430 -0
  176. package/src/tool/forensic-microcrystal-drug-simulator/i18n/de.ts +244 -0
  177. package/src/tool/forensic-microcrystal-drug-simulator/i18n/en.ts +244 -0
  178. package/src/tool/forensic-microcrystal-drug-simulator/i18n/es.ts +244 -0
  179. package/src/tool/forensic-microcrystal-drug-simulator/i18n/fr.ts +244 -0
  180. package/src/tool/forensic-microcrystal-drug-simulator/i18n/id.ts +244 -0
  181. package/src/tool/forensic-microcrystal-drug-simulator/i18n/it.ts +244 -0
  182. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ja.ts +244 -0
  183. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ko.ts +244 -0
  184. package/src/tool/forensic-microcrystal-drug-simulator/i18n/nl.ts +244 -0
  185. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pl.ts +244 -0
  186. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pt.ts +244 -0
  187. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ru.ts +244 -0
  188. package/src/tool/forensic-microcrystal-drug-simulator/i18n/sv.ts +244 -0
  189. package/src/tool/forensic-microcrystal-drug-simulator/i18n/tr.ts +244 -0
  190. package/src/tool/forensic-microcrystal-drug-simulator/i18n/zh.ts +244 -0
  191. package/src/tool/forensic-microcrystal-drug-simulator/index.ts +11 -0
  192. package/src/tool/forensic-microcrystal-drug-simulator/logic.ts +189 -0
  193. package/src/tool/forensic-microcrystal-drug-simulator/seo.astro +15 -0
  194. package/src/tool/forensic-sex-determinator/bibliography.astro +14 -0
  195. package/src/tool/forensic-sex-determinator/bibliography.ts +12 -0
  196. package/src/tool/forensic-sex-determinator/component.astro +463 -0
  197. package/src/tool/forensic-sex-determinator/entry.ts +32 -0
  198. package/src/tool/forensic-sex-determinator/forensic-sex-determinator.css +413 -0
  199. package/src/tool/forensic-sex-determinator/i18n/de.ts +211 -0
  200. package/src/tool/forensic-sex-determinator/i18n/en.ts +211 -0
  201. package/src/tool/forensic-sex-determinator/i18n/es.ts +211 -0
  202. package/src/tool/forensic-sex-determinator/i18n/fr.ts +211 -0
  203. package/src/tool/forensic-sex-determinator/i18n/id.ts +211 -0
  204. package/src/tool/forensic-sex-determinator/i18n/it.ts +211 -0
  205. package/src/tool/forensic-sex-determinator/i18n/ja.ts +211 -0
  206. package/src/tool/forensic-sex-determinator/i18n/ko.ts +211 -0
  207. package/src/tool/forensic-sex-determinator/i18n/nl.ts +211 -0
  208. package/src/tool/forensic-sex-determinator/i18n/pl.ts +211 -0
  209. package/src/tool/forensic-sex-determinator/i18n/pt.ts +211 -0
  210. package/src/tool/forensic-sex-determinator/i18n/ru.ts +211 -0
  211. package/src/tool/forensic-sex-determinator/i18n/sv.ts +211 -0
  212. package/src/tool/forensic-sex-determinator/i18n/tr.ts +211 -0
  213. package/src/tool/forensic-sex-determinator/i18n/zh.ts +211 -0
  214. package/src/tool/forensic-sex-determinator/index.ts +11 -0
  215. package/src/tool/forensic-sex-determinator/logic.ts +89 -0
  216. package/src/tool/forensic-sex-determinator/seo.astro +15 -0
  217. package/src/tool/forensic-stature-estimator/bibliography.astro +14 -0
  218. package/src/tool/forensic-stature-estimator/bibliography.ts +12 -0
  219. package/src/tool/forensic-stature-estimator/component.astro +49 -0
  220. package/src/tool/forensic-stature-estimator/components/EstimationPanel.astro +65 -0
  221. package/src/tool/forensic-stature-estimator/components/OsteometricBoard.astro +39 -0
  222. package/src/tool/forensic-stature-estimator/components/OsteometricSelector.astro +109 -0
  223. package/src/tool/forensic-stature-estimator/dom-utils.ts +71 -0
  224. package/src/tool/forensic-stature-estimator/entry.ts +32 -0
  225. package/src/tool/forensic-stature-estimator/forensic-stature-estimator.css +689 -0
  226. package/src/tool/forensic-stature-estimator/helpers.ts +51 -0
  227. package/src/tool/forensic-stature-estimator/i18n/de.ts +196 -0
  228. package/src/tool/forensic-stature-estimator/i18n/en.ts +196 -0
  229. package/src/tool/forensic-stature-estimator/i18n/es.ts +196 -0
  230. package/src/tool/forensic-stature-estimator/i18n/fr.ts +196 -0
  231. package/src/tool/forensic-stature-estimator/i18n/id.ts +196 -0
  232. package/src/tool/forensic-stature-estimator/i18n/it.ts +196 -0
  233. package/src/tool/forensic-stature-estimator/i18n/ja.ts +196 -0
  234. package/src/tool/forensic-stature-estimator/i18n/ko.ts +196 -0
  235. package/src/tool/forensic-stature-estimator/i18n/nl.ts +196 -0
  236. package/src/tool/forensic-stature-estimator/i18n/pl.ts +196 -0
  237. package/src/tool/forensic-stature-estimator/i18n/pt.ts +196 -0
  238. package/src/tool/forensic-stature-estimator/i18n/ru.ts +196 -0
  239. package/src/tool/forensic-stature-estimator/i18n/sv.ts +196 -0
  240. package/src/tool/forensic-stature-estimator/i18n/tr.ts +196 -0
  241. package/src/tool/forensic-stature-estimator/i18n/zh.ts +196 -0
  242. package/src/tool/forensic-stature-estimator/index.ts +11 -0
  243. package/src/tool/forensic-stature-estimator/logic.ts +119 -0
  244. package/src/tool/forensic-stature-estimator/script.ts +288 -0
  245. package/src/tool/forensic-stature-estimator/seo.astro +15 -0
  246. package/src/tool/forensic-tlc-ink-simulator/bibliography.astro +6 -0
  247. package/src/tool/forensic-tlc-ink-simulator/bibliography.ts +16 -0
  248. package/src/tool/forensic-tlc-ink-simulator/component.astro +245 -0
  249. package/src/tool/forensic-tlc-ink-simulator/entry.ts +32 -0
  250. package/src/tool/forensic-tlc-ink-simulator/forensic-tlc-ink-simulator.css +462 -0
  251. package/src/tool/forensic-tlc-ink-simulator/i18n/de.ts +243 -0
  252. package/src/tool/forensic-tlc-ink-simulator/i18n/en.ts +243 -0
  253. package/src/tool/forensic-tlc-ink-simulator/i18n/es.ts +243 -0
  254. package/src/tool/forensic-tlc-ink-simulator/i18n/fr.ts +243 -0
  255. package/src/tool/forensic-tlc-ink-simulator/i18n/id.ts +243 -0
  256. package/src/tool/forensic-tlc-ink-simulator/i18n/it.ts +243 -0
  257. package/src/tool/forensic-tlc-ink-simulator/i18n/ja.ts +235 -0
  258. package/src/tool/forensic-tlc-ink-simulator/i18n/ko.ts +235 -0
  259. package/src/tool/forensic-tlc-ink-simulator/i18n/nl.ts +243 -0
  260. package/src/tool/forensic-tlc-ink-simulator/i18n/pl.ts +243 -0
  261. package/src/tool/forensic-tlc-ink-simulator/i18n/pt.ts +243 -0
  262. package/src/tool/forensic-tlc-ink-simulator/i18n/ru.ts +243 -0
  263. package/src/tool/forensic-tlc-ink-simulator/i18n/sv.ts +243 -0
  264. package/src/tool/forensic-tlc-ink-simulator/i18n/tr.ts +243 -0
  265. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +235 -0
  266. package/src/tool/forensic-tlc-ink-simulator/index.ts +11 -0
  267. package/src/tool/forensic-tlc-ink-simulator/logic.ts +152 -0
  268. package/src/tool/forensic-tlc-ink-simulator/seo.astro +15 -0
  269. package/src/tool/gsr-dispersion-calculator/bibliography.astro +6 -0
  270. package/src/tool/gsr-dispersion-calculator/bibliography.ts +16 -0
  271. package/src/tool/gsr-dispersion-calculator/component.astro +294 -0
  272. package/src/tool/gsr-dispersion-calculator/entry.ts +32 -0
  273. package/src/tool/gsr-dispersion-calculator/gsr-dispersion-calculator.css +305 -0
  274. package/src/tool/gsr-dispersion-calculator/i18n/de.ts +272 -0
  275. package/src/tool/gsr-dispersion-calculator/i18n/en.ts +272 -0
  276. package/src/tool/gsr-dispersion-calculator/i18n/es.ts +272 -0
  277. package/src/tool/gsr-dispersion-calculator/i18n/fr.ts +272 -0
  278. package/src/tool/gsr-dispersion-calculator/i18n/id.ts +272 -0
  279. package/src/tool/gsr-dispersion-calculator/i18n/it.ts +272 -0
  280. package/src/tool/gsr-dispersion-calculator/i18n/ja.ts +272 -0
  281. package/src/tool/gsr-dispersion-calculator/i18n/ko.ts +272 -0
  282. package/src/tool/gsr-dispersion-calculator/i18n/nl.ts +272 -0
  283. package/src/tool/gsr-dispersion-calculator/i18n/pl.ts +272 -0
  284. package/src/tool/gsr-dispersion-calculator/i18n/pt.ts +272 -0
  285. package/src/tool/gsr-dispersion-calculator/i18n/ru.ts +272 -0
  286. package/src/tool/gsr-dispersion-calculator/i18n/sv.ts +272 -0
  287. package/src/tool/gsr-dispersion-calculator/i18n/tr.ts +272 -0
  288. package/src/tool/gsr-dispersion-calculator/i18n/zh.ts +272 -0
  289. package/src/tool/gsr-dispersion-calculator/index.ts +11 -0
  290. package/src/tool/gsr-dispersion-calculator/logic.ts +148 -0
  291. package/src/tool/gsr-dispersion-calculator/seo.astro +15 -0
  292. package/src/tool/widmark-alcohol-simulator/bibliography.astro +14 -0
  293. package/src/tool/widmark-alcohol-simulator/bibliography.ts +12 -0
  294. package/src/tool/widmark-alcohol-simulator/component.astro +453 -0
  295. package/src/tool/widmark-alcohol-simulator/entry.ts +32 -0
  296. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +193 -0
  297. package/src/tool/widmark-alcohol-simulator/i18n/en.ts +206 -0
  298. package/src/tool/widmark-alcohol-simulator/i18n/es.ts +193 -0
  299. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +193 -0
  300. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +193 -0
  301. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +193 -0
  302. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +193 -0
  303. package/src/tool/widmark-alcohol-simulator/i18n/ko.ts +193 -0
  304. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +193 -0
  305. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +193 -0
  306. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +193 -0
  307. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +193 -0
  308. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +193 -0
  309. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +193 -0
  310. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +193 -0
  311. package/src/tool/widmark-alcohol-simulator/index.ts +11 -0
  312. package/src/tool/widmark-alcohol-simulator/logic.ts +97 -0
  313. package/src/tool/widmark-alcohol-simulator/seo.astro +15 -0
  314. package/src/tool/widmark-alcohol-simulator/widmark-alcohol-simulator.css +386 -0
  315. package/src/tools.ts +27 -0
  316. package/src/types.ts +70 -0
@@ -0,0 +1,272 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'satschot-afstand-berekenen-gsr-kruitsporen';
5
+ const title = 'GSR Kruitsporen Afstandscalculator';
6
+ const description = 'Simuleer didactische patronen van kruitsporen (GSR) op een doeloppervlak op basis van schootsafstand, munitietype, deeltjesverspreiding en thermische effecten.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Stel de schootsafstand in',
11
+ text: 'Verschuif de afstandsregelaar van direct contact tot drie meter en zie hoe het kruitspoor verandert van een compacte, thermisch verbrande zone in een breed, los deeltjesveld.',
12
+ },
13
+ {
14
+ name: 'Kies een munitieprofiel',
15
+ text: 'Selecteer een profiel voor een 9mm-pistool, .38-revolver of kaliber 12 hagelgeweer om het aantal deeltjes, de spreidingscoëfficiënt en het geschatte thermische bereik aan te passen.',
16
+ },
17
+ {
18
+ name: 'Bekijk het doeloppervlak en de pluim',
19
+ text: 'Gebruik de textielweergave om de deeltjesdichtheid en radiale spreiding te beoordelen, en bekijk de zijkegel om de fysieke uitdijing van de kruitwolk te begrijpen.',
20
+ },
21
+ {
22
+ name: 'Interpreteer de afstandscategorie',
23
+ text: 'Controleer de verkregen classificatie en verwachte bevindingen. De resultaten beschrijven de didactische betekenis van contact-, nabij-contact-, nabij-bereik- en afstandsschotpatronen.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ key: 'faq-1',
30
+ question: 'Kan de verspreiding van kruitsporen de exacte schootsafstand bewijzen?',
31
+ answer: 'Nee. GSR-patronen ondersteunen een schatting van een afstandsinterval, geen exacte afstand. Een definitieve conclusie vereist onderzoek van het specifieke vuurwapen, de munitie, het doelmateriaal, de hoek en het uitvoeren van vergelijkende proefschoten onder gecontroleerde omstandigheden.',
32
+ },
33
+ {
34
+ key: 'faq-2',
35
+ question: 'Waarom vertonen schoten van heel dichtbij meer roet en verbranding?',
36
+ answer: 'Bij zeer korte afstanden raken hete gassen, roet, onverbrand kruit en metaaldeeltjes uit het slaghoedje het doel voordat de pluim zich heeft kunnen uitdijen en afkoelen. Dit leidt tot roetaanslag, schroeiing en scheuring.',
37
+ },
38
+ {
39
+ key: 'faq-3',
40
+ question: 'Welke chemische elementen worden geassocieerd met slaghoedjes-GSR?',
41
+ answer: 'Klassieke GSR-analyse richt zich op deeltjes die lood, barium en antimoon bevatten. Hoewel moderne loodvrije munitie dit profiel kan veranderen, evalueren SEM-EDS-methoden de morfologie en de chemie van de deeltjes samen.',
42
+ },
43
+ {
44
+ key: 'faq-4',
45
+ question: 'Waarom gebruikt de simulator een Gaussisch radiaal model?',
46
+ answer: 'De Gaussische verdeling is een nuttige didactische benadering omdat de meeste deeltjes zich nabij het centrum concentreren. In de praktijk kunnen wind, schootsgrootte, hoek en stofstructuur voor asymmetrie zorgen.',
47
+ },
48
+ {
49
+ key: 'faq-5',
50
+ question: 'Is deze calculator geschikt voor forensische rapportages?',
51
+ answer: 'Nee. Het is een educatief model. Een officieel forensisch rapport moet gebaseerd zijn op gevalideerde laboratoriumprotocollen, kwaliteitscontroles, fysieke vergelijkingspatronen en beoordeling door een gekwalificeerde deskundige.',
52
+ },
53
+ ];
54
+
55
+ export const content: ToolLocaleContent = {
56
+ slug,
57
+ title,
58
+ description,
59
+ ui: {
60
+ distance: 'Schootsafstand',
61
+ units: 'Eenhedenstelsel',
62
+ metric: 'Metrisch',
63
+ imperial: 'Imperiaal',
64
+ unitMeter: 'm',
65
+ unitCentimeter: 'cm',
66
+ unitFoot: 'ft',
67
+ unitInch: 'in',
68
+ ammo: 'Munitieprofiel',
69
+ ammoPistol9mm: '9mm-pistool',
70
+ ammoRevolver38: '.38-revolver',
71
+ ammoShotgun12: 'Kaliber 12 hagelgeweer',
72
+ target: 'Doelwit textiel',
73
+ cone: 'Kruitwolkpluim',
74
+ canvasAria: 'Kruitsporendeeltjesverspreiding op het doelwit textiel',
75
+ rangeStripAria: 'Afstandscategorieën',
76
+ category: 'Afstandsinterpretatie',
77
+ categoryContactLabel: 'Contactschot / loopmonding op doel',
78
+ categoryNearContactLabel: 'Nabij-contactschot / verbrandingsbereik',
79
+ categoryCloseRangeLabel: 'Nabij-bereik / kruit-tatoeëringszone',
80
+ categoryDistantLabel: 'Afstandsschot of onbepaalde afstand',
81
+ density: 'Deeltjesdichtheid',
82
+ thermal: 'Thermisch effect',
83
+ radius: 'Geschatte patroonstraal',
84
+ radiusSuffix: 'straal',
85
+ expected: 'Verwachte bevinding',
86
+ expectedContact: 'Een zeer dichte centrale afzetting, risico op een loopafdruk, roetschwärzung, scheuren en thermische beschadiging worden verwacht in de doelzone.',
87
+ expectedNearContact: 'Zware roet- en kruitdeeltjes blijven geconcentreerd rond de inslagopening, met een zichtbare maar nog compacte radiale halo.',
88
+ expectedCloseRange: 'Kruit-tatoeëring en metaalresiduen verbreden zich tot een meetbare ring; thermische effecten en roet worden minimaal.',
89
+ expectedDistant: 'Deeltjes zijn schaars en wijd verspreid. Afstandsconclusies vereisen chemische extractie, microscopie en vergelijkende testschoten.',
90
+ contact: 'Contact',
91
+ near: 'Nabij-contact',
92
+ close: 'Nabij-bereik',
93
+ distant: 'Afstandsschot',
94
+ disclaimer: 'Uitsluitend educatief model. GSR-schootsafstandsbestemming vereist gecontroleerde proefschoten, vergelijking van doelmaterialen en gevalideerde chemische methoden.',
95
+ },
96
+ seo: [
97
+ {
98
+ type: 'title',
99
+ text: 'Schootsafstandsbestemming op Basis van GSR-Kruitspoorpatronen',
100
+ level: 2,
101
+ },
102
+ {
103
+ type: 'diagnostic',
104
+ variant: 'info',
105
+ icon: 'mdi:target-variant',
106
+ badge: 'Educatief model',
107
+ title: 'Wat deze calculator beantwoordt',
108
+ html: 'Deze GSR-afstandscalculator illustreert of een kruitspoorpatroon lijkt op een contactschot, nabij-contactschot, nabij-bereikschot of afstandsschot. Het is bedoeld om de principes van <strong>schootsafstandsbestemming</strong> uit te leggen, niet voor het opstellen van een juridisch bewijsstuk.',
109
+ },
110
+ {
111
+ type: 'stats',
112
+ columns: 4,
113
+ items: [
114
+ { value: '0-3 m', label: 'gesimuleerde schootsafstand', icon: 'mdi:ruler' },
115
+ { value: '4', label: 'verklaarde afstandscategorieën', icon: 'mdi:crosshairs-question' },
116
+ { value: '3', label: 'vergeleken munitieprofielen', icon: 'mdi:ammunition' },
117
+ { value: '2', label: 'eenhedenstelsels: metrisch en imperiaal', icon: 'mdi:swap-horizontal' },
118
+ ],
119
+ },
120
+ {
121
+ type: 'title',
122
+ text: 'Hoe het Gesimuleerde Patroon te Lezen',
123
+ level: 3,
124
+ },
125
+ {
126
+ type: 'summary',
127
+ title: 'Snelle interpretatiechecklist',
128
+ items: [
129
+ 'Dichte centrale roet, verbranding, scheuren of een loopmondingsafdruk wijzen op een contactschot of nabij-contact.',
130
+ 'Een compacte donkere kern omringd door kruitkorrels suggereert een zeer korte afstand, waarbij testschoten nodig zijn voor precisie.',
131
+ 'Verspreide kruit-tatoeëring met weinig roet past meestal bij een nabij-bereikschot buiten het bereik van hitte-effecten.',
132
+ 'Spreidingspatronen op afstand sluiten de aanwezigheid van GSR niet uit; microscopie of chemische analyse kan sporen alsnog aantonen.',
133
+ ],
134
+ },
135
+ {
136
+ type: 'comparative',
137
+ columns: 2,
138
+ items: [
139
+ {
140
+ title: 'Waar de tool bij helpt',
141
+ icon: 'mdi:check-circle-outline',
142
+ highlight: true,
143
+ description: 'Het visualiseert de relatie tussen schootsafstand, residudichtheid, deeltjesverspreiding en thermische effecten.',
144
+ points: ['Klassikale demonstratie', 'Uitleg van zoekintenties', 'Forensische terminologie', 'Vergelijking metrisch en imperiaal'],
145
+ },
146
+ {
147
+ title: 'Wat het niet kan bewijzen',
148
+ icon: 'mdi:alert-circle-outline',
149
+ description: 'Het kan de werkelijke schootsafstand in een echte zaak niet bepalen zonder analyse van fysieke bewijsstukken.',
150
+ points: ['Geen upload van bewijsmateriaal', 'Geen chemische bevestiging', 'Geen wapenspecifiek testpatroon', 'Geen juridische bewijskracht'],
151
+ },
152
+ ],
153
+ },
154
+ {
155
+ type: 'table',
156
+ headers: ['Veelgestelde vraag', 'Cruciaal kenmerk in patroon', 'Technisch antwoord'],
157
+ rows: [
158
+ ['Hoe ziet een contactschot eruit?', 'Zware roet, verbranding, scheuring of loopmondingsafdruk.', 'Een contactinterpretatie is aannemelijk, maar gasexpansie en elasticiteit van het doel beïnvloeden het aspect sterk.'],
159
+ ['Hoe dichtbij was het wapen?', 'Dichte residuen nabij de opening met een compacte kruitkrans.', 'Het patroon ondersteunt een afstandsvermoeden, maar vergelijking met proefschoten is noodzakelijk.'],
160
+ ['Wat is kruit-tatoeëring?', 'Puntvormige inslagen door onverbrande kruitkorrels met minimale roet.', 'De spreiding varieert per munitietype, textielsoort, schoothoek en tussenliggende obstakels.'],
161
+ ['Verdwijnt GSR bij grotere afstanden?', 'Zeer verspreide deeltjes en afwezigheid van zichtbare kruitkrans.', 'Visuele sporen nemen af, maar slaghoedjesdeeltjes kunnen microscopisch nog worden aangetoond.'],
162
+ ],
163
+ },
164
+ {
165
+ type: 'title',
166
+ text: 'Wetenschappelijke Berekening van het Model',
167
+ level: 3,
168
+ },
169
+ {
170
+ type: 'paragraph',
171
+ html: 'De simulator maakt gebruik van een Gaussische radiale verdeling om deeltjes rond het inslagpunt te plaatsen op een willekeurige en realistische wijze. Korte schootsafstanden leiden tot een zeer smalle, compacte en uiterst dichte afzetting van kruitresten in de centrale zone; grotere afstanden vergroten de radiale spreiding aanzienlijk en verlagen de gemiddelde dichtheid van de deeltjes per vierkante centimeter. Dit rekenkundige model scheidt bovendien fijne roetpluimen van zwaardere, metallische slaghoedjesdeeltjes omdat de thermische effecten en het roet een veel kleiner fysiek bereik hebben dan de microscopisch detecteerbare metalen residuen.',
172
+ },
173
+ {
174
+ type: 'glossary',
175
+ items: [
176
+ { term: 'GSR', definition: 'Kruitsporen (Gunshot Residue): deeltjes afkomstig van slaghoedje, kruit, projectiel en hete gassen tijdens het vuren.' },
177
+ { term: 'Roetschwärzung', definition: 'Donkere koolstofafzetting die vooral zichtbaar is bij contactschoten en zeer korte afstanden.' },
178
+ { term: 'Kruit-tatoeëring', definition: 'Puntvormige beschadigingen of kruitinslagen veroorzaakt door onverbrande of gedeeltelijk verbrande kruitkorrels.' },
179
+ { term: 'Loopafdruk', definition: 'Afdruk op het doeloppervlak veroorzaakt door druk en hitte van de loopmonding bij een contactschot.' },
180
+ { term: 'Proefschot', definition: 'Vergelijkend experiment met het verdachte wapen en originele munitie vanaf bekende afstanden op identiek doelstof.' },
181
+ ],
182
+ },
183
+ {
184
+ type: 'title',
185
+ text: 'Afstandsklassen en Verwachte Bevindingen',
186
+ level: 3,
187
+ },
188
+ {
189
+ type: 'table',
190
+ headers: ['Bereiksklasse', 'Algemene bevindingen', 'Interpretatiebeperking'],
191
+ rows: [
192
+ ['Contact', 'Massieve centrale afzetting, roet, verbranding, scheuring of loopafdruk.', 'De elasticiteit van de stof en gasdruk kunnen de diameter van het defect sterk veranderen.'],
193
+ ['Nabij-contact', 'Compacte roet- en kruitkrans rond de inslagopening.', 'Losse kleding of een tussenliggend object kan het verspreidingspatroon veranderen.'],
194
+ ['Nabij-bereik', 'Kruit-tatoeëring, kruitdeeltjes zonder noemenswaardige roetaanslag.', 'Dezelfde afstand geeft verschillende patronen op katoen, denim, huid of papier.'],
195
+ ['Afstandsschot', 'Minimale zichtbare residuen, brede spreiding of geen visueel kruitspoor.', 'Chemische analyses en rasterelektronenmicroscopie zijn essentieel bij het wegvallen van visuele sporen.'],
196
+ ],
197
+ },
198
+ {
199
+ type: 'tip',
200
+ title: 'Praktische beoordelingstip',
201
+ html: 'Beoordeel kruitsporen altijd als een <strong>vergelijkingsprobleem van afstandsintervallen</strong> en nooit als een vaste waarde. Wetenschappelijke conclusies vereisen vergelijking met testpatronen onder identieke omstandigheden.',
202
+ },
203
+ {
204
+ type: 'title',
205
+ text: 'Checkliste voor Documentatie voor Patroonanalyse',
206
+ level: 3,
207
+ },
208
+ {
209
+ type: 'list',
210
+ icon: 'mdi:clipboard-check-outline',
211
+ items: [
212
+ 'Documenteer doelmateriaal, weefsel, kleur, dikte en eventuele spanning of vouwen in de stof.',
213
+ 'Registreer wapenmodel, looplengte, munitiepartij, kruitlading en eventuele mondingshulpstukken.',
214
+ 'Fotografeer het patroon met schaal, oriëntatie, belichting en gegevens over de keten van bewaring.',
215
+ 'Zoek afzonderlijk naar roet, schroeiing, onverbrand kruit, afstrijkring en scheuren in de stof.',
216
+ 'Voer altijd proefschoten uit voordat u een afstandsinterval toekent in forensisch werk.',
217
+ ],
218
+ },
219
+ {
220
+ type: 'proscons',
221
+ title: 'Digitale simulatie versus forensische laboratoriumanalyse',
222
+ items: [
223
+ { pro: 'Visualiseert eenvoudig de toename van deeltjesspreiding bij grotere afstanden.', con: 'Houdt geen rekening met de specificiteit van het vuurwapen, de munitiepartij of de stof.' },
224
+ { pro: 'Verduidelijkt de conceptuele verschillen tussen de afstandscategorieën.', con: 'Vervangt geen chemische tests of rasterelektronenmicroscopie (SEM-EDS).' },
225
+ { pro: 'Geeft inzicht in de fysieke grenzen van visuele patroonanalyse.', con: 'Heeft geen juridische bewijskracht zonder laboratoriumvalidatie en deskundigenbeoordeling.' },
226
+ ],
227
+ },
228
+ {
229
+ type: 'diagnostic',
230
+ variant: 'warning',
231
+ icon: 'mdi:scale-balance',
232
+ badge: 'Forensische waarschuwing',
233
+ title: 'Uitsluiting van juridisch gebruik',
234
+ html: 'Een computersimulatie kan de fysieke bewijsstukken in een echte zaak niet vervangen. Het kan noch de staat van het wapen, de kruitchemie, tussenbarrières of de kwaliteit van de monstername beoordelen. Gebruik deze pagina uitsluitend voor educatieve doeleinden en wend u voor echt onderzoek tot geautoriseerde laboratoria.',
235
+ },
236
+ ],
237
+ faq,
238
+ bibliography,
239
+ howTo,
240
+ schemas: [
241
+ {
242
+ '@context': 'https://schema.org',
243
+ '@type': 'SoftwareApplication',
244
+ name: title,
245
+ description,
246
+ applicationCategory: 'ForensicApplication',
247
+ operatingSystem: 'Any',
248
+ },
249
+ {
250
+ '@context': 'https://schema.org',
251
+ '@type': 'FAQPage',
252
+ mainEntity: faq.map((item) => ({
253
+ '@type': 'Question',
254
+ name: item.question,
255
+ acceptedAnswer: {
256
+ '@type': 'Answer',
257
+ text: item.answer,
258
+ },
259
+ })),
260
+ },
261
+ {
262
+ '@context': 'https://schema.org',
263
+ '@type': 'HowTo',
264
+ name: title,
265
+ step: howTo.map((step) => ({
266
+ '@type': 'HowToStep',
267
+ name: step.name,
268
+ text: step.text,
269
+ })),
270
+ },
271
+ ],
272
+ };
@@ -0,0 +1,272 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'kalkulator-odleglosci-strzalu-rozrzut-gsr';
5
+ const title = 'Kalkulator Odległości Strzału na Podstawie GSR';
6
+ const description = 'Symuluj edukacyjne wzory rozrzutu powypałowych pozostałości strzałowych (GSR) na powierzchni celu w zależności od odległości oddania strzału, rodzaju amunicji i efektów termicznych.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Ustaw odległość strzału',
11
+ text: 'Przesuń suwak odległości od strzału bezpośredniego do trzech metrów i zaobserwuj, jak osad zmienia się ze zwartej, przypalonej strefy w szerokie, luźne pole cząstek.',
12
+ },
13
+ {
14
+ name: 'Wybierz profil amunicji',
15
+ text: 'Wybierz profil pistoletu 9 mm, rewolweru .38 lub strzelby kaliber 12. Każdy profil zmienia liczbę cząstek, współczynnik rozrzutu i szacowany zasięg termiczny.',
16
+ },
17
+ {
18
+ name: 'Przeanalizuj cel i stożek rozrzutu',
19
+ text: 'Użyj podglądu tkaniny celu, aby ocenić gęstość cząstek i rozkład radialny, oraz stożka bocznego, aby zrozumieć fizyczną ekspansję chmury pozostałości strzałowych.',
20
+ },
21
+ {
22
+ name: 'Zinterpretuj kategorię odległości',
23
+ text: 'Zapoznaj się z uzyskaną klasyfikacją i typowymi ustaleniami. Wynik opisuje dydaktyczne znaczenie strzałów z przyłożenia, bliskiego kontaktu, bliskiego zasięgu i strzałów dalekich.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ key: 'faq-1',
30
+ question: 'Czy rozrzut powypałowych pozostałości strzałowych może wskazać dokładną odległość strzału?',
31
+ answer: 'Nie. Wzory rozrzutu GSR pozwalają na oszacowanie przedziału odległości, a nie dokładnej wartości. Rzeczywiste ustalenia wymagają zbadania konkretnej broni, amunicji, materiału celu, kąta uderzenia oraz oddania próbnych strzałów porównawczych w kontrolowanych warunkach.',
32
+ },
33
+ {
34
+ key: 'faq-2',
35
+ question: 'Dlaczego strzały z bliska wykazują więcej sadzy i oparzeń?',
36
+ answer: 'Przy bardzo małych odległościach gorące gazy, sadza, niespalone ziarna prochu i metaliczne cząstki spłonki docierają do celu, zanim chmura gazów ulegnie rozproszeniu i ochłodzeniu, co powoduje osmalenie, przypalenie i rozerwanie tkaniny.',
37
+ },
38
+ {
39
+ key: 'faq-3',
40
+ question: 'Jakie pierwiastki chemiczne są powiązane z pozostałościami strzałowymi spłonki?',
41
+ answer: 'Klasyczna analiza GSR koncentruje się na cząstkach zawierających ołów, bar i antymon. Choć nowoczesna amunicja bezołowiowa może modyfikować ten profil, analizy SEM-EDS oceniają morfologię i skład chemiczny cząstek łącznie.',
42
+ },
43
+ {
44
+ key: 'faq-4',
45
+ question: 'Dlaczego symulator wykorzystuje gaussowski model rozkładu radialnego?',
46
+ answer: 'Rozkład Gaussa jest użytecznym przybliżeniem dydaktycznym, ponieważ większość cząstek koncentruje się w pobliżu centrum uderzenia. W rzeczywistości wiatr, kąt uderzenia, konstrukcja broni lub struktura tkaniny mogą powodować asymetrie.',
47
+ },
48
+ {
49
+ key: 'faq-5',
50
+ question: 'Czy ten kalkulator nadaje się do opracowywania ekspertyz sądowych?',
51
+ answer: 'Nie. Jest to model edukacyjny. Oficjalna opinia kryminalistyczna musi opierać się na walidowanych procedurach laboratoryjnych, kontroli jakości, fizycznych strzałach porównawczych i ocenie biegłego sądowego.',
52
+ },
53
+ ];
54
+
55
+ export const content: ToolLocaleContent = {
56
+ slug,
57
+ title,
58
+ description,
59
+ ui: {
60
+ distance: 'Odległość strzału',
61
+ units: 'Układ jednostek',
62
+ metric: 'Metryczny',
63
+ imperial: 'Imperialny',
64
+ unitMeter: 'm',
65
+ unitCentimeter: 'cm',
66
+ unitFoot: 'ft',
67
+ unitInch: 'in',
68
+ ammo: 'Profil amunicji',
69
+ ammoPistol9mm: 'Pistolet 9 mm',
70
+ ammoRevolver38: 'Rewolwer .38',
71
+ ammoShotgun12: 'Strzelba kaliber 12',
72
+ target: 'Tkanina celu',
73
+ cone: 'Chmura pozostałości',
74
+ canvasAria: 'Rozrzut cząstek powypałowych pozostałości strzałowych na tkaninie celu',
75
+ rangeStripAria: 'Kategorie odległości',
76
+ category: 'Interpretacja odległości',
77
+ categoryContactLabel: 'Strzał z przyłożenia / bezpośredni kontakt',
78
+ categoryNearContactLabel: 'Bliski kontakt / strefa oparzenia',
79
+ categoryCloseRangeLabel: 'Bliski zasięg / strefa tatuażu prochowego',
80
+ categoryDistantLabel: 'Strzał daleki lub nieokreślona odległość',
81
+ density: 'Gęstość cząstek',
82
+ thermal: 'Efekt termiczny',
83
+ radius: 'Szacowany promień wzoru',
84
+ radiusSuffix: 'promień',
85
+ expected: 'Oczekiwany wynik',
86
+ expectedContact: 'W strefie celu oczekiwany jest gęsty osad centralny, ryzyko odbicia wylotu lufy, osmalenie sadzą, rozerwanie tkaniny oraz zmiany termiczne.',
87
+ expectedNearContact: 'Obfita sadza i drobiny prochu pozostają skoncentrowane wokół otworu wlotowego, z widoczną, lecz zwartą aureolą radialną.',
88
+ expectedCloseRange: 'Tatuaż prochowy i pozostałości metaliczne rozszerzają się w mierzalny pierścień; efekty termiczne i sadza stają się minimalne.',
89
+ expectedDistant: 'Cząstki są nieliczne i szeroko rozproszone. Określenie odległości wymaga analiz chemicznych, mikroskopii i strzałów porównawczych.',
90
+ contact: 'Przyłożenie',
91
+ near: 'Bliski kontakt',
92
+ close: 'Bliski zasięg',
93
+ distant: 'Strzał daleki',
94
+ disclaimer: 'Wyłącznie model edukacyjny. Ustalanie odległości strzału na podstawie GSR wymaga kontrolowanych strzałów próbnych, porównania materiałów celu i walidowanych metod chemicznych.',
95
+ },
96
+ seo: [
97
+ {
98
+ type: 'title',
99
+ text: 'Określanie Odległości Strzału na Podstawie Wzorów Rozrzutu GSR',
100
+ level: 2,
101
+ },
102
+ {
103
+ type: 'diagnostic',
104
+ variant: 'info',
105
+ icon: 'mdi:target-variant',
106
+ badge: 'Model edukacyjny',
107
+ title: 'Co wyjaśnia ten kalkulator',
108
+ html: 'Ten kalkulator rozrzutu GSR ilustruje, czy wzór pozostałości przypomina strzał z przyłożenia, bliskiego kontaktu, bliskiego zasięgu czy strzał daleki. Służy do nauki zasad <strong>określania odległości strzału</strong> za pomocą GSR, a nie do wydawania ekspertyz.',
109
+ },
110
+ {
111
+ type: 'stats',
112
+ columns: 4,
113
+ items: [
114
+ { value: '0-3 m', label: 'symulowana odległość strzału', icon: 'mdi:ruler' },
115
+ { value: '4', label: 'wyjaśnione kategorie odległości', icon: 'mdi:crosshairs-question' },
116
+ { value: '3', label: 'porównane profile amunicji', icon: 'mdi:ammunition' },
117
+ { value: '2', label: 'układy jednostek: metryczny i imperialny', icon: 'mdi:swap-horizontal' },
118
+ ],
119
+ },
120
+ {
121
+ type: 'title',
122
+ text: 'Jak Czytać Symulowany Wzór Rozrzutu',
123
+ level: 3,
124
+ },
125
+ {
126
+ type: 'summary',
127
+ title: 'Szybka lista interpretacyjna',
128
+ items: [
129
+ 'Gęsta sadza centralna, oparzenia, rozerwania lub odbicie wylotu lufy wskazują na strzał z przyłożenia lub bliskiego kontaktu.',
130
+ 'Zwarte, ciemne centrum otoczone drobinami prochu sugeruje bardzo małą odległość, wymagającą strzałów próbnych do doprecyzowania.',
131
+ 'Rozproszony tatuaż prochowy przy minimalnej ilości sadzy jest typowy dla strzałów z bliskiego zasięgu, poza zasięgiem płomienia.',
132
+ 'Brak widocznych pozostałości na odległość nie wyklucza obecności GSR; mikroskopia lub analizy chemiczne mogą wciąż wykryć cząstki.',
133
+ ],
134
+ },
135
+ {
136
+ type: 'comparative',
137
+ columns: 2,
138
+ items: [
139
+ {
140
+ title: 'W czym pomaga narzędzie',
141
+ icon: 'mdi:check-circle-outline',
142
+ highlight: true,
143
+ description: 'Wizualizuje relację między odległością strzału, gęstością pozostałości, rozrzutem cząstek i efektami termicznymi.',
144
+ points: ['Pokazy akademickie', 'Objaśnienia techniczne', 'Terminologia kryminalistyczna', 'Porównanie jednostek'],
145
+ },
146
+ {
147
+ title: 'Czego nie może udowodnić',
148
+ icon: 'mdi:alert-circle-outline',
149
+ description: 'Nie pozwala na wyznaczenie rzeczywistej odległości strzału w konkretnej sprawie bez badania fizycznych dowodów.',
150
+ points: ['Brak przesyłania próbek', 'Brak potwierdzenia chemicznego', 'Brak strzałów próbnych z danej broni', 'Brak mocy dowodowej'],
151
+ },
152
+ ],
153
+ },
154
+ {
155
+ type: 'table',
156
+ headers: ['Częste pytanie', 'Kluczowa wskazówka we wzorze', 'Odpowiedź techniczna'],
157
+ rows: [
158
+ ['Jak wygląda strzał z przyłożenia?', 'Obfita sadza, przypalenie, rozerwanie tkaniny lub odbicie wylotu lufy.', 'Interpretacja strzału z przyłożenia jest prawdopodobna, lecz gazy powypałowe i elastyczność celu mogą zmienić wygląd.'],
159
+ ['Z jakiej odległości padł strzał?', 'Skoncentrowane pozostałości wokół otworu z ciasną otoczką prochową.', 'Wzór wspiera hipotezę o przedziale odległości, lecz konieczne jest porównanie ze strzałami próbnymi.'],
160
+ ['Co to jest tatuaż prochowy?', 'Kropkowane ślady spowodowane uderzeniem niespalonych drobin prochu z małą ilością sadzy.', 'Jego rozrzut różni się w zależności od amunicji, rodzaju tkaniny, kąta i przeszkód pośrednich.'],
161
+ ['Czy pozostałości znikają przy strzałach z daleka?', 'Bardzo nieliczne cząstki i brak widocznego osadu makroskopowego.', 'Ślady widoczne zanikają, lecz cząstki spłonki mogą być wciąż wykrywane metodami laboratoryjnymi.'],
162
+ ],
163
+ },
164
+ {
165
+ type: 'title',
166
+ text: 'Naukowe Podstawy Modelu Symulacji',
167
+ level: 3,
168
+ },
169
+ {
170
+ type: 'paragraph',
171
+ html: 'Symulator wykorzystuje radialny rozkład Gaussa do precyzyjnego i realistycznego rozmieszczania cząstek wokół punktu uderzenia pocisku w płaszczyznę celu. Krótkie odległości strzału tworzą bardzo wąskie, zwarte i wysoce gęste skupiska pozostałości powypałowych w strefie centralnej; większe odległości znacząco zwiększają radialny rozrzut cząstek w przestrzeni oraz obniżają średnią gęstość pozostałości przypadającą na jednostkę powierzchni celu. Model matematyczny w sposób szczególny oddziela osad sadzy i drobnego pyłu od cięższych metalicznych cząstek pochodzących ze spłonki, ponieważ osmalenie termiczne oraz działanie płomienia charakteryzują się znacznie mniejszym fizycznym zasięgiem niż mikrocząstki wykrywane metodami chemicznymi i mikroskopowymi.',
172
+ },
173
+ {
174
+ type: 'glossary',
175
+ items: [
176
+ { term: 'GSR', definition: 'Powypałowe pozostałości strzałowe (Gunshot Residue): cząstki powstałe ze spłonki, prochu, pocisku i gorących gazów podczas strzału.' },
177
+ { term: 'Osmalenie', definition: 'Ciemny osad bogaty w węgiel (sadza), widoczny głównie przy strzałach z przyłożenia i bardzo bliskich odległości.' },
178
+ { term: 'Tatuaż prochowy', definition: 'Drobne, punktowe uszkodzenia lub ślady spowodowane uderzeniem niespalonych lub częściowo spalonych drobin prochu.' },
179
+ { term: 'Odbicie wylotu lufy', definition: 'Ślad na celu odwzorowujący kształt wylotu lufy broni pod wpływem wysokiej temperatury i ciśnienia.' },
180
+ { term: 'Strzał próbny', definition: 'Doświadczalne strzały oddawane z znanych odległości z badanej broni i amunicji do identycznego podłoża.' },
181
+ ],
182
+ },
183
+ {
184
+ type: 'title',
185
+ text: 'Kategorie Odległości i Oczekiwane Wyniki',
186
+ level: 3,
187
+ },
188
+ {
189
+ type: 'table',
190
+ headers: ['Kategoria', 'Typowe ustalenia', 'Ograniczenia interpretacji'],
191
+ rows: [
192
+ ['Przyłożenie', 'Masowy osad centralny, sadza, przypalenie, rozerwanie, odbicie lufy.', 'Struktura tkaniny i ciśnienie gazów mogą znacznie zniekształcić średnicę uszkodzenia.'],
193
+ ['Bliski kontakt', 'Gęsta sadza i ciasna aureola prochowa wokół otworu wlotowego.', 'Luźna odzież lub przeszkoda pośrednia mogą zakłócić oczekiwany rozkład pozostałości.'],
194
+ ['Bliski zasięg', 'Tatuaż prochowy, drobiny prochu bez wyraźnej obecności sadzy.', 'Ta sama odległość daje różne wzory na bawełnie, jeansie, skórze czy papierze.'],
195
+ ['Strzał daleki', 'Nieliczne pozostałości, duży rozrzut lub brak widocznych śladów.', 'Analiza chemiczna i mikroskopowa stają się kluczowe w miarę zanikania śladów makroskopowych.'],
196
+ ],
197
+ },
198
+ {
199
+ type: 'tip',
200
+ title: 'Praktyczna wskazówka interpretacyjna',
201
+ html: 'Zawsze oceniaj pozostałości strzałowe jako <strong>analizę porównawczą przedziałów</strong>, a nie jako sztywną wartość liczbową. Pewne wnioski naukowe płyną z zestawienia próbki dowodowej z identycznymi wzorami doświadczalnymi.',
202
+ },
203
+ {
204
+ type: 'title',
205
+ text: 'Protokół Dokumentacji Przed Analizą Wzoru',
206
+ level: 3,
207
+ },
208
+ {
209
+ type: 'list',
210
+ icon: 'mdi:clipboard-check-outline',
211
+ items: [
212
+ 'Udokumentować właściwości fizyczne podłoża: rodzaj tkaniny, splot, kolor, grubość i ewentualne fałdy.',
213
+ 'Zapisać markę, model, długość lufy broni, partię amunicji, ładunek prochu i urządzenia wylotowe.',
214
+ 'Sfotografować wzór z przymiarem skali, odpowiednim oświetleniem i zachowaniem łańcucha dowodowego.',
215
+ 'Oddzielnie przeanalizować obecność sadzy, przypaleń, niespalonego prochu, rąbka oczyszczenia i rozerwań.',
216
+ 'Zawsze przeprowadzić próbne strzały porównawcze przed sformułowaniem wniosków o odległości strzału.',
217
+ ],
218
+ },
219
+ {
220
+ type: 'proscons',
221
+ title: 'Symulacja cyfrowa a badanie balistyczne w laboratorium',
222
+ items: [
223
+ { pro: 'Ułatwia zrozumienie wpływu odległości na wzrost rozrzutu cząstek pozostałości strzałowych.', con: 'Nie odzwierciedla specyfiki konkretnej broni palnej, partii amunicji ani struktury tkaniny.' },
224
+ { pro: 'Wyjaśnia koncepcyjne różnice między kategoriami odległości strzału.', con: 'Nie zastępuje testów chemicznych ani skaningowej mikroskopii elektronowej (SEM-EDS).' },
225
+ { pro: 'Pomaga zrozumieć fizyczne ograniczenia wizualnej oceny makroskopowej.', con: 'Nie ma wartości dowodowej bez kalibracji eksperymentalnej i oficjalnej oceny biegłego.' },
226
+ ],
227
+ },
228
+ {
229
+ type: 'diagnostic',
230
+ variant: 'warning',
231
+ icon: 'mdi:scale-balance',
232
+ badge: 'Ostrzeżenie kryminalistyczne',
233
+ title: 'Wykluczenie zastosowania sądowego',
234
+ html: 'Model symulacyjny nie może zastąpić fizycznych dowodów w rzeczywistej sprawie. Nie ocenia stanu broni, chemii pozostałości, przeszkód pośrednich ani jakości pobrania próbki. Korzystaj z tej strony wyłącznie w celach dydaktycznych i zlecaj badania uprawnionym laboratoriom peryferyjnym.',
235
+ },
236
+ ],
237
+ faq,
238
+ bibliography,
239
+ howTo,
240
+ schemas: [
241
+ {
242
+ '@context': 'https://schema.org',
243
+ '@type': 'SoftwareApplication',
244
+ name: title,
245
+ description,
246
+ applicationCategory: 'ForensicApplication',
247
+ operatingSystem: 'Any',
248
+ },
249
+ {
250
+ '@context': 'https://schema.org',
251
+ '@type': 'FAQPage',
252
+ mainEntity: faq.map((item) => ({
253
+ '@type': 'Question',
254
+ name: item.question,
255
+ acceptedAnswer: {
256
+ '@type': 'Answer',
257
+ text: item.answer,
258
+ },
259
+ })),
260
+ },
261
+ {
262
+ '@context': 'https://schema.org',
263
+ '@type': 'HowTo',
264
+ name: title,
265
+ step: howTo.map((step) => ({
266
+ '@type': 'HowToStep',
267
+ name: step.name,
268
+ text: step.text,
269
+ })),
270
+ },
271
+ ],
272
+ };