@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.
- package/package.json +69 -0
- package/scripts/crystal-lattice-catalog-translations.mjs +459 -0
- package/scripts/postinstall.mjs +27 -0
- package/scripts/sync-crystal-lattice-i18n.mjs +50 -0
- package/src/category/i18n/de.ts +55 -0
- package/src/category/i18n/en.ts +55 -0
- package/src/category/i18n/es.ts +55 -0
- package/src/category/i18n/fr.ts +55 -0
- package/src/category/i18n/id.ts +55 -0
- package/src/category/i18n/it.ts +55 -0
- package/src/category/i18n/ja.ts +56 -0
- package/src/category/i18n/ko.ts +56 -0
- package/src/category/i18n/nl.ts +55 -0
- package/src/category/i18n/pl.ts +55 -0
- package/src/category/i18n/pt.ts +55 -0
- package/src/category/i18n/ru.ts +55 -0
- package/src/category/i18n/sv.ts +55 -0
- package/src/category/i18n/tr.ts +55 -0
- package/src/category/i18n/zh.ts +56 -0
- package/src/category/index.ts +48 -0
- package/src/category/seo.astro +15 -0
- package/src/components/PreviewNavSidebar.astro +116 -0
- package/src/components/PreviewToolbar.astro +143 -0
- package/src/data.ts +10 -0
- package/src/entries.ts +48 -0
- package/src/env.d.ts +5 -0
- package/src/index.ts +29 -0
- package/src/layouts/PreviewLayout.astro +117 -0
- package/src/pages/[locale]/[slug].astro +162 -0
- package/src/pages/[locale].astro +261 -0
- package/src/pages/index.astro +3 -0
- package/src/tests/diacritics_density.test.ts +140 -0
- package/src/tests/faq_count.test.ts +19 -0
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/locale_completeness.test.ts +24 -0
- package/src/tests/mocks/astro_mock.js +2 -0
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/script_density.test.ts +94 -0
- package/src/tests/seo_length.test.ts +46 -0
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/slug_language_code_format.test.ts +23 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tests/tool_validation.test.ts +16 -0
- package/src/tests/widmark.test.ts +28 -0
- package/src/tool/forensic-age-estimator/bibliography.astro +14 -0
- package/src/tool/forensic-age-estimator/bibliography.ts +16 -0
- package/src/tool/forensic-age-estimator/component.astro +321 -0
- package/src/tool/forensic-age-estimator/dental-skeletal-third-molar-age-estimator.css +634 -0
- package/src/tool/forensic-age-estimator/entry.ts +32 -0
- package/src/tool/forensic-age-estimator/i18n/de.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/en.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/es.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/fr.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/id.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/it.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/ja.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/ko.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/nl.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/pl.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/pt.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/ru.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/sv.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/tr.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/zh.ts +246 -0
- package/src/tool/forensic-age-estimator/index.ts +11 -0
- package/src/tool/forensic-age-estimator/logic.ts +81 -0
- package/src/tool/forensic-age-estimator/seo.astro +15 -0
- package/src/tool/forensic-blood-test-simulator/bibliography.astro +6 -0
- package/src/tool/forensic-blood-test-simulator/bibliography.ts +12 -0
- package/src/tool/forensic-blood-test-simulator/component.astro +168 -0
- package/src/tool/forensic-blood-test-simulator/dom-utils.ts +40 -0
- package/src/tool/forensic-blood-test-simulator/entry.ts +32 -0
- package/src/tool/forensic-blood-test-simulator/forensic-presumptive-blood-testing-luminol-kastle-meyer-simulator.css +532 -0
- package/src/tool/forensic-blood-test-simulator/helpers.ts +16 -0
- package/src/tool/forensic-blood-test-simulator/i18n/de.ts +185 -0
- package/src/tool/forensic-blood-test-simulator/i18n/en.ts +185 -0
- package/src/tool/forensic-blood-test-simulator/i18n/es.ts +185 -0
- package/src/tool/forensic-blood-test-simulator/i18n/fr.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/id.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/it.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/ja.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/ko.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/nl.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/pl.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/pt.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/ru.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/sv.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/tr.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/zh.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/index.ts +11 -0
- package/src/tool/forensic-blood-test-simulator/logic.ts +174 -0
- package/src/tool/forensic-blood-test-simulator/script.ts +192 -0
- package/src/tool/forensic-blood-test-simulator/seo.astro +15 -0
- package/src/tool/forensic-fiber-comparison-microscope/bibliography.astro +6 -0
- package/src/tool/forensic-fiber-comparison-microscope/bibliography.ts +16 -0
- package/src/tool/forensic-fiber-comparison-microscope/component.astro +146 -0
- package/src/tool/forensic-fiber-comparison-microscope/entry.ts +32 -0
- package/src/tool/forensic-fiber-comparison-microscope/forensic-fiber-comparison-microscope.css +629 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/de.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/en.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/es.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/fr.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/id.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/it.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/ja.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/ko.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/nl.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/pl.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/pt.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/ru.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/sv.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/tr.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/zh.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/index.ts +11 -0
- package/src/tool/forensic-fiber-comparison-microscope/logic.ts +244 -0
- package/src/tool/forensic-fiber-comparison-microscope/render.ts +265 -0
- package/src/tool/forensic-fiber-comparison-microscope/seo.astro +15 -0
- package/src/tool/forensic-fiber-comparison-microscope/view.ts +267 -0
- package/src/tool/forensic-glass-becke-line-simulator/bibliography.astro +6 -0
- package/src/tool/forensic-glass-becke-line-simulator/bibliography.ts +16 -0
- package/src/tool/forensic-glass-becke-line-simulator/component.astro +81 -0
- package/src/tool/forensic-glass-becke-line-simulator/entry.ts +32 -0
- package/src/tool/forensic-glass-becke-line-simulator/forensic-glass-becke-line-simulator.css +392 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/de.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/en.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/es.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/fr.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/id.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/it.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/ja.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/ko.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/nl.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/pl.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/pt.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/ru.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/sv.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/tr.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/zh.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/index.ts +11 -0
- package/src/tool/forensic-glass-becke-line-simulator/logic.ts +100 -0
- package/src/tool/forensic-glass-becke-line-simulator/seo.astro +15 -0
- package/src/tool/forensic-glass-becke-line-simulator/view.ts +281 -0
- package/src/tool/forensic-image-authenticity-analyzer/bibliography.astro +9 -0
- package/src/tool/forensic-image-authenticity-analyzer/bibliography.ts +7 -0
- package/src/tool/forensic-image-authenticity-analyzer/component.astro +250 -0
- package/src/tool/forensic-image-authenticity-analyzer/entry.ts +29 -0
- package/src/tool/forensic-image-authenticity-analyzer/forensic-image-metadata-authenticity-analyzer.css +679 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +76 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +72 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +72 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +75 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +75 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +75 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +76 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +76 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +71 -0
- package/src/tool/forensic-image-authenticity-analyzer/index.ts +11 -0
- package/src/tool/forensic-image-authenticity-analyzer/logic.ts +283 -0
- package/src/tool/forensic-image-authenticity-analyzer/seo.astro +10 -0
- package/src/tool/forensic-microcrystal-drug-simulator/bibliography.astro +6 -0
- package/src/tool/forensic-microcrystal-drug-simulator/bibliography.ts +12 -0
- package/src/tool/forensic-microcrystal-drug-simulator/component.astro +240 -0
- package/src/tool/forensic-microcrystal-drug-simulator/entry.ts +32 -0
- package/src/tool/forensic-microcrystal-drug-simulator/forensic-microcrystal-drug-simulator.css +430 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/de.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/en.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/es.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/fr.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/id.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/it.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/ja.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/ko.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/nl.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/pl.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/pt.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/ru.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/sv.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/tr.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/zh.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/index.ts +11 -0
- package/src/tool/forensic-microcrystal-drug-simulator/logic.ts +189 -0
- package/src/tool/forensic-microcrystal-drug-simulator/seo.astro +15 -0
- package/src/tool/forensic-sex-determinator/bibliography.astro +14 -0
- package/src/tool/forensic-sex-determinator/bibliography.ts +12 -0
- package/src/tool/forensic-sex-determinator/component.astro +463 -0
- package/src/tool/forensic-sex-determinator/entry.ts +32 -0
- package/src/tool/forensic-sex-determinator/forensic-sex-determinator.css +413 -0
- package/src/tool/forensic-sex-determinator/i18n/de.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/en.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/es.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/fr.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/id.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/it.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/ja.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/ko.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/nl.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/pl.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/pt.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/ru.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/sv.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/tr.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/zh.ts +211 -0
- package/src/tool/forensic-sex-determinator/index.ts +11 -0
- package/src/tool/forensic-sex-determinator/logic.ts +89 -0
- package/src/tool/forensic-sex-determinator/seo.astro +15 -0
- package/src/tool/forensic-stature-estimator/bibliography.astro +14 -0
- package/src/tool/forensic-stature-estimator/bibliography.ts +12 -0
- package/src/tool/forensic-stature-estimator/component.astro +49 -0
- package/src/tool/forensic-stature-estimator/components/EstimationPanel.astro +65 -0
- package/src/tool/forensic-stature-estimator/components/OsteometricBoard.astro +39 -0
- package/src/tool/forensic-stature-estimator/components/OsteometricSelector.astro +109 -0
- package/src/tool/forensic-stature-estimator/dom-utils.ts +71 -0
- package/src/tool/forensic-stature-estimator/entry.ts +32 -0
- package/src/tool/forensic-stature-estimator/forensic-stature-estimator.css +689 -0
- package/src/tool/forensic-stature-estimator/helpers.ts +51 -0
- package/src/tool/forensic-stature-estimator/i18n/de.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/en.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/es.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/fr.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/id.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/it.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/ja.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/ko.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/nl.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/pl.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/pt.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/ru.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/sv.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/tr.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/zh.ts +196 -0
- package/src/tool/forensic-stature-estimator/index.ts +11 -0
- package/src/tool/forensic-stature-estimator/logic.ts +119 -0
- package/src/tool/forensic-stature-estimator/script.ts +288 -0
- package/src/tool/forensic-stature-estimator/seo.astro +15 -0
- package/src/tool/forensic-tlc-ink-simulator/bibliography.astro +6 -0
- package/src/tool/forensic-tlc-ink-simulator/bibliography.ts +16 -0
- package/src/tool/forensic-tlc-ink-simulator/component.astro +245 -0
- package/src/tool/forensic-tlc-ink-simulator/entry.ts +32 -0
- package/src/tool/forensic-tlc-ink-simulator/forensic-tlc-ink-simulator.css +462 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/de.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/en.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/es.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/fr.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/id.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/it.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/ja.ts +235 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/ko.ts +235 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/nl.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/pl.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/pt.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/ru.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/sv.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/tr.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +235 -0
- package/src/tool/forensic-tlc-ink-simulator/index.ts +11 -0
- package/src/tool/forensic-tlc-ink-simulator/logic.ts +152 -0
- package/src/tool/forensic-tlc-ink-simulator/seo.astro +15 -0
- package/src/tool/gsr-dispersion-calculator/bibliography.astro +6 -0
- package/src/tool/gsr-dispersion-calculator/bibliography.ts +16 -0
- package/src/tool/gsr-dispersion-calculator/component.astro +294 -0
- package/src/tool/gsr-dispersion-calculator/entry.ts +32 -0
- package/src/tool/gsr-dispersion-calculator/gsr-dispersion-calculator.css +305 -0
- package/src/tool/gsr-dispersion-calculator/i18n/de.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/en.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/es.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/fr.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/id.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/it.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/ja.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/ko.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/nl.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/pl.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/pt.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/ru.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/sv.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/tr.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/zh.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/index.ts +11 -0
- package/src/tool/gsr-dispersion-calculator/logic.ts +148 -0
- package/src/tool/gsr-dispersion-calculator/seo.astro +15 -0
- package/src/tool/widmark-alcohol-simulator/bibliography.astro +14 -0
- package/src/tool/widmark-alcohol-simulator/bibliography.ts +12 -0
- package/src/tool/widmark-alcohol-simulator/component.astro +453 -0
- package/src/tool/widmark-alcohol-simulator/entry.ts +32 -0
- package/src/tool/widmark-alcohol-simulator/i18n/de.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/en.ts +206 -0
- package/src/tool/widmark-alcohol-simulator/i18n/es.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/id.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/it.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/ko.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/index.ts +11 -0
- package/src/tool/widmark-alcohol-simulator/logic.ts +97 -0
- package/src/tool/widmark-alcohol-simulator/seo.astro +15 -0
- package/src/tool/widmark-alcohol-simulator/widmark-alcohol-simulator.css +386 -0
- package/src/tools.ts +27 -0
- package/src/types.ts +70 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
const slug = 'mikrokristalline-drogenanalyse-simulator';
|
|
5
|
+
const title = 'Forensischer Mikrokristalliner Drogentest Simulator';
|
|
6
|
+
const description = 'Simulieren Sie didaktische mikrokristalline Drogenscreening-Muster, indem Sie verdächtige Substanzen mit klassischen forensischen Reagenzien kombinieren und Kristalltracht, Wachstumsgeschwindigkeit und die Reaktion unter polarisiertem Licht vergleichen.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Wählen Sie eine verdächtige Probe aus',
|
|
11
|
+
text: 'Wählen Sie Kokain, Heroin, Amphetamin oder Methamphetamin aus, um ein didaktisches Profil für die unbekannte Substanz zu laden.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Tragen Sie ein mikrokristallines Reagenz auf',
|
|
15
|
+
text: 'Wechseln Sie zwischen Platinchlorid, Goldchlorid und Dragendorff-Reagenz, um zu sehen, wie die Reagenzienchemie die Kristallmorphologie verändert.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Passen Sie die simulierte Polarisation an',
|
|
19
|
+
text: 'Verschieben Sie den Polarisationsregler, um den doppelbrechenden Kontrast im virtuellen Mikroskopfeld zu erhöhen oder zu verringern.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Vergleichen Sie das referenzähnliche Ergebnis',
|
|
23
|
+
text: 'Verwenden Sie die Tracht-Bezeichnung, die Übereinstimmungsbewertung, die Wachstumsgeschwindigkeit und den Interpretationshinweis, um zu entscheiden, ob das Muster referenzähnlich, partiell oder unspezifisch ist.',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
key: 'faq-1',
|
|
30
|
+
question: 'Sind mikrokristalline Tests für illegale Drogen bestätigend?',
|
|
31
|
+
answer: 'Nein. Mikrokristalline Tests sind präsumtive oder vergleichende Screening-Methoden. Eine echte Identifizierung sichergestellter Drogen sollte validierten Schemata folgen, die geeignete Kontrollen und bestätigende instrumentelle Methoden wie GC-MS, LC-MS oder Infrarotspektroskopie umfassen.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'faq-2',
|
|
35
|
+
question: 'Warum erzeugen verschiedene Reagenzien unterschiedliche Kristallformen?',
|
|
36
|
+
answer: 'Das Reagenz bildet Salze, Komplexe oder Niederschläge mit funktionellen Gruppen in der Zielverbindung. Löslichkeit, Säurestärke, Konzentration, Verunreinigungen und Trocknungsrate beeinflussen, ob die beobachtete Tracht als Nadeln, Rosetten, Prismen, Platten oder schwache Streuung erscheint.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'faq-3',
|
|
40
|
+
question: 'Was fügt polarisiertes Licht zur mikrokristallinen Untersuchung hinzu?',
|
|
41
|
+
answer: 'Polarisiertes Licht kann den Kontrast erhöhen und Doppelbrechung sichtbar machen, wodurch Kanten, Verzweigungen und die innere Kristallstruktur leichter zu vergleichen sind. Es ersetzt nicht die Notwendigkeit von Referenzstandards und Kontrollen.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'faq-4',
|
|
45
|
+
question: 'Warum kann ein positiv aussehendes Muster dennoch irreführend sein?',
|
|
46
|
+
answer: 'Streckmittel, Mischungen, abgebautes Material, Reagenzienalter, Verunreinigungen und Erwartungen des Analysten können zu mehrdeutigen oder sich überschneidenden Morphologien führen. Daher müssen präsumtive Ergebnisse vorsichtig interpretiert werden.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: 'faq-5',
|
|
50
|
+
question: 'Kann dieser Simulator eine unbekannte Substanz identifizieren?',
|
|
51
|
+
answer: 'Nein. Es handelt sich um eine didaktische Visualisierung gängiger Morphologiekonzepte. Es kann keine echten Beweismittel testen, keine Chemie messen oder eine Laboranalyse abschließen.',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
export const content: ToolLocaleContent = {
|
|
56
|
+
slug,
|
|
57
|
+
title,
|
|
58
|
+
description,
|
|
59
|
+
ui: {
|
|
60
|
+
microscope: 'Polarisationsmikroskop',
|
|
61
|
+
canvasAria: 'Animiertes mikrokristallines Wachstumsfeld',
|
|
62
|
+
sample: 'Verdächtige Probe',
|
|
63
|
+
sampleCocaine: 'Kokain',
|
|
64
|
+
sampleHeroin: 'Heroin',
|
|
65
|
+
sampleAmphetamine: 'Amphetamin',
|
|
66
|
+
sampleMethamphetamine: 'Methamphetamin',
|
|
67
|
+
reagent: 'Reagenzienregal',
|
|
68
|
+
reagentPlatinum: 'Platinchlorid',
|
|
69
|
+
reagentGold: 'Goldchlorid',
|
|
70
|
+
reagentDragendorff: 'Dragendorff',
|
|
71
|
+
polarization: 'Polarisationskontrast',
|
|
72
|
+
confidence: 'Übereinstimmung',
|
|
73
|
+
growth: 'Wachstum',
|
|
74
|
+
birefringence: 'Doppelbrechung',
|
|
75
|
+
regrow: 'Kristalle nachwachsen lassen',
|
|
76
|
+
warningLabel: 'Forensische Vorsicht',
|
|
77
|
+
warningTitle: 'Screening-Warnung',
|
|
78
|
+
matchReference: 'Referenzähnlich',
|
|
79
|
+
matchPartial: 'Teilweise Übereinstimmung',
|
|
80
|
+
matchNonSpecific: 'Unspezifisch',
|
|
81
|
+
habitFeatheryNeedles: 'Federartige Nadelbündel',
|
|
82
|
+
habitRosettes: 'Rosetten-Sternenbilder',
|
|
83
|
+
habitBranchingPrisms: 'Verzweigte Prismen',
|
|
84
|
+
habitPlates: 'Dünne Plättchen',
|
|
85
|
+
habitWeakScatter: 'Spärliche unspezifische Streuung',
|
|
86
|
+
cueCocainePlatinumChloride: 'Federartige und verzweigte Nadelbündel sind das erwartete Lehrmuster für Kokain mit Platinchlorid.',
|
|
87
|
+
cueCocaineGoldChloride: 'Goldchlorid kann verzweigte orange-braune Kristalle bilden, das Muster ist jedoch weniger spezifisch als mit Platinchlorid.',
|
|
88
|
+
cueCocaineDragendorff: 'Dragendorff zeigt hier eine schwache Alkaloidreaktion; die Morphologie sollte nur als Screening-Information behandelt werden.',
|
|
89
|
+
cueHeroinPlatinumChloride: 'Plättchenartige Ablagerungen können auftreten, diese Paarung ist jedoch kein starker bestätigender Lehrmuster-Match.',
|
|
90
|
+
cueHeroinGoldChloride: 'Rosettencluster und abgerundete Sternenbilder sind das referenzähnliche Heroinmuster in diesem Simulator.',
|
|
91
|
+
cueHeroinDragendorff: 'Dragendorff erzeugt orangefarbene verzweigte Prismen, die mit einem Alkaloidschnitt übereinstimmen und keinen Identitätsnachweis darstellen.',
|
|
92
|
+
cueAmphetaminePlatinumChloride: 'Schnell verzweigte Prismen deuten auf ein stimulanzienähnliches Lehrmuster unter dem gewählten Reagenz hin.',
|
|
93
|
+
cueAmphetamineGoldChloride: 'Spärliche Kristallisation bedeutet, dass der visuelle Befund als unspezifisch gemeldet werden sollte.',
|
|
94
|
+
cueAmphetamineDragendorff: 'Nadel-Sprays wachsen schnell und sind nützlich für die Lehre von präsumtiven Amphetamin-Vergleichen.',
|
|
95
|
+
cueMethamphetaminePlatinumChloride: 'Polarisierte Rosetten können sich bilden, das Ergebnis bleibt jedoch ein präsumtiver Morphologievergleich.',
|
|
96
|
+
cueMethamphetamineGoldChloride: 'Dünne Plättchenformen sind sichtbar, obwohl die Überschneidung mit anderen Verbindungen die Spezifität einschränkt.',
|
|
97
|
+
cueMethamphetamineDragendorff: 'Dichte orangefarbene verzweigte Prismen bieten die stärkste Lehrmuster-Übereinstimmung für Methamphetamin in diesem Set.',
|
|
98
|
+
disclaimer: 'Nur didaktisches Screening-Modell. Die reale Identifizierung von Drogen erfordert validierte Referenzstandards, Reagenzienkontrollen, eine Überwachungskette und eine bestätigende instrumentelle Analyse.',
|
|
99
|
+
},
|
|
100
|
+
seo: [
|
|
101
|
+
{
|
|
102
|
+
type: 'title',
|
|
103
|
+
text: 'Mikrokristalline Drogentests in der forensischen Wissenschaft',
|
|
104
|
+
level: 2,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'diagnostic',
|
|
108
|
+
variant: 'info',
|
|
109
|
+
icon: 'mdi:microscope',
|
|
110
|
+
badge: 'Lehr-Simulator',
|
|
111
|
+
title: 'Wofür dieser mikrokristalline Simulator gedacht ist',
|
|
112
|
+
html: 'Dieses Tool erklärt, wie klassische forensische mikrokristalline Tests erkennbare Kristalltrachten erzeugen können, nachdem eine verdächtige Droge mit einem Reagenz vermischt wurde. Es hilft Studenten, die <strong>Kristallmorphologie</strong>, die Wachstumsgeschwindigkeit und den Polarisationskontrast zu vergleichen, ohne das Browser-Ergebnis als Beweismittel zu behandeln.',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
type: 'stats',
|
|
116
|
+
columns: 4,
|
|
117
|
+
items: [
|
|
118
|
+
{ value: '4', label: 'didaktische Probenprofile', icon: 'mdi:flask-outline' },
|
|
119
|
+
{ value: '3', label: 'traditionelle Reagenzienoptionen', icon: 'mdi:bottle-tonic-outline' },
|
|
120
|
+
{ value: '5', label: 'modellierte Kristalltrachten', icon: 'mdi:shape-outline' },
|
|
121
|
+
{ value: '0', label: 'rechtliche Identitätsansprüche', icon: 'mdi:scale-balance' },
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'title',
|
|
126
|
+
text: 'Wie man die Kristalltracht interpretiert',
|
|
127
|
+
level: 3,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'summary',
|
|
131
|
+
title: 'Praktische Vergleichsliste',
|
|
132
|
+
items: [
|
|
133
|
+
'Beginnen Sie mit einem bekannten Referenzstandard und einer Blindprobe des Reagenzes, bevor Sie eine unbekannte Substanz vergleichen.',
|
|
134
|
+
'Notieren Sie Reagenz, Konzentration, Tropfengröße, Trocknungszeit, Temperatur und Mikroskopvergrößerung.',
|
|
135
|
+
'Vergleichen Sie zuerst die Gesamttracht: Nadeln, Rosetten, Plättchen, Prismen, Verzweigungen oder schwache Streuung.',
|
|
136
|
+
'Behandeln Sie partielles oder spärliches Wachstum als Grund für weitere Tests, nicht als sichere Identifizierung.',
|
|
137
|
+
],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
type: 'table',
|
|
141
|
+
headers: ['Beobachtete Tracht', 'Häufige Fragen von Anwendern', 'Vorsichtige Interpretation'],
|
|
142
|
+
rows: [
|
|
143
|
+
['Federartige Nadeln', 'Sieht das aus wie Kokain mit Platinchlorid?', 'Es kann eine nützliche didaktische Übereinstimmung sein, aber Mischungen und Reagenzienbedingungen können die Tracht verändern.'],
|
|
144
|
+
['Rosetten', 'Sind sternförmige Kristalle diagnostisch?', 'Rosetten können einen Vergleich unterstützen, wenn die Kontrollen übereinstimmen, aber sie reichen allein nicht aus.'],
|
|
145
|
+
['Verzweigte Prismen', 'Warum wachsen Stimulanzien-Screenings oft so schnell?', 'Einige Salze bilden schnell Kristallisationskeime und verzweigen sich, wenn das Lösungsmittel verdunstet; die Geschwindigkeit ist unterstützend, nicht bestätigend.'],
|
|
146
|
+
['Schwache Streuung', 'Bedeutet ein schwaches Muster, dass keine Droge vorhanden ist?', 'Nein. Eine niedrige Konzentration, Verunreinigungen, ein gealtertes Reagenz oder eine schlechte Vorbereitung können das Kristallwachstum unterdrücken.'],
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'comparative',
|
|
151
|
+
columns: 2,
|
|
152
|
+
items: [
|
|
153
|
+
{
|
|
154
|
+
title: 'Das mikrokristalline Screening hilft bei',
|
|
155
|
+
icon: 'mdi:check-circle-outline',
|
|
156
|
+
highlight: true,
|
|
157
|
+
description: 'Schneller visueller Vergleich, wenn ein geschulter Analyst Kontrollen und Referenzmaterialien verwendet.',
|
|
158
|
+
points: ['Demonstrationen im Unterricht', 'Morphologie-Vokabular', 'Präsumtive Einordnung', 'Vergleich der Reagenzienwirkung'],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
title: 'Das mikrokristalline Screening ersetzt nicht',
|
|
162
|
+
icon: 'mdi:alert-circle-outline',
|
|
163
|
+
description: 'Validierte bestätigende Chemie für eine echte Aussage über sichergestellte Drogen.',
|
|
164
|
+
points: ['Instrumentelle Bestätigung', 'Akkreditierte Verfahren', 'Matrixspezifische Validierung', 'Dokumentation von Unsicherheiten'],
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'title',
|
|
170
|
+
text: 'Wissenschaftlicher Hintergrund zu mikrokristallinen Tests',
|
|
171
|
+
level: 3,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'paragraph',
|
|
175
|
+
html: 'Mikrokristalline Tests stellen eine historische und hochempfindliche Klasse von chemischen Screening-Tests dar, die von forensischen Chemikern zur Identifizierung verdächtiger kontrollierter Substanzen eingesetzt werden. Wenn eine kleine Menge einer Drogenprobe in einer Säure gelöst und mit einem spezifischen Schwermetallreagenz wie Goldchlorid oder Platinchlorid kombiniert wird, fällt ein Koordinationskomplex oder ein unlösliches Salz aus. Die molekulare Struktur der Droge bestimmt die Wachstumsrate, Ausrichtung und Symmetrie der resultierenden Kristalle und erzeugt charakteristische mikroskopische Formen oder Trachten.',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'paragraph',
|
|
179
|
+
html: 'Die Analyse dieser Trachten unter einem Polarisationsmikroskop ermöglicht es forensischen Untersuchern, optische Eigenschaften wie die Doppelbrechung zu beobachten, bei der der Kristall das Licht in zwei Strahlen aufspaltet, wodurch lebendige Farben und ein hoher Kontrast entstehen. Obwohl instrumentelle Methoden wie die Gaschromatographie-Massenspektrometrie mikrokristalline Tests für die bestätigende Identifizierung weitgehend ersetzt haben, bleibt das mikrokristalline Screening aufgrund seiner Schnelligkeit, seiner geringen Kosten und seiner Fähigkeit, optische Isomere zu trennen, die mit anderen Mitteln nur schwer zu unterscheiden sind, eine geschätzte Technik.',
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
type: 'paragraph',
|
|
183
|
+
html: 'In Bildungseinrichtungen hilft die Simulation dieser Reaktionen den Studenten, die Beziehung zwischen chemischen Reagenzien und physikalischer Kristallmorphologie zu verstehen. Durch die Beobachtung, wie Kokain, Heroin und verschiedene Amphetamine auf unterschiedliche Reagenzien reagieren, lernen die Studenten, dass ein einzelner positiver Test keine endgültige forensische Schlussfolgerung darstellt. Angemessene Drogenscreening-Protokolle erfordern den Vergleich unbekannter Proben mit bekannten Referenzmaterialien und die Durchführung von Reagenzienblindproben, um die Gültigkeit und Spezifität der beobachteten Kristallmuster sicherzustellen.',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
type: 'glossary',
|
|
187
|
+
items: [
|
|
188
|
+
{ term: 'Kristalltracht', definition: 'Die sichtbare Form oder Wachstumsform eines Kristalls, wie Nadeln, Plättchen, Prismen oder Rosetten.' },
|
|
189
|
+
{ term: 'Kristallisation', definition: 'Die erste Bildung winziger Kristallzentren, aus denen größere Strukturen wachsen.' },
|
|
190
|
+
{ term: 'Doppelbrechung', definition: 'Optisches Verhalten, das Kristalle unter polarisiertem Licht heller oder farbig erscheinen lassen kann.' },
|
|
191
|
+
{ term: 'Präsumtiver Test', definition: 'Ein Screening-Test, der auf eine mögliche Klasse oder Verbindung hindeutet, aber die Identität nicht selbst beweist.' },
|
|
192
|
+
{ term: 'Referenzstandard', definition: 'Ein bekanntes Material, das unter denselben Bedingungen getestet wurde, um das unbekannte Muster zu vergleichen.' },
|
|
193
|
+
],
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
type: 'tip',
|
|
197
|
+
title: 'Best Practice für echte Beweismittel',
|
|
198
|
+
html: 'Nutzen Sie die mikrokristalline Morphologie als einen Teil der Untersuchung. Ein zuverlässiger Arbeitsablauf umfasst Blindproben, positive Kontrollen, die Dokumentation des Reagenzienalters, eine unabhängige Überprüfung bei Bedarf und bestätigende Tests im Rahmen eines akzeptierten Schemas für sichergestellte Drogen.',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
type: 'diagnostic',
|
|
202
|
+
variant: 'warning',
|
|
203
|
+
icon: 'mdi:alert-outline',
|
|
204
|
+
badge: 'Forensische Vorsicht',
|
|
205
|
+
title: 'Ein schöner Kristall ist keine rechtliche Identifizierung',
|
|
206
|
+
html: 'Der Simulator trennt bewusst eine visuelle Übereinstimmungsbewertung von einer forensischen Schlussfolgerung. Die reale Fallarbeit muss Mischungen, Streckmittel, Verunreinigungen, Reagenzienleistung, Analystenschulung und validierte Laborverfahren berücksichtigen.',
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
faq,
|
|
210
|
+
bibliography,
|
|
211
|
+
howTo,
|
|
212
|
+
schemas: [
|
|
213
|
+
{
|
|
214
|
+
'@context': 'https://schema.org',
|
|
215
|
+
'@type': 'SoftwareApplication',
|
|
216
|
+
name: title,
|
|
217
|
+
description,
|
|
218
|
+
applicationCategory: 'ForensicApplication',
|
|
219
|
+
operatingSystem: 'Any',
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
'@context': 'https://schema.org',
|
|
223
|
+
'@type': 'FAQPage',
|
|
224
|
+
mainEntity: faq.map((item) => ({
|
|
225
|
+
'@type': 'Question',
|
|
226
|
+
name: item.question,
|
|
227
|
+
acceptedAnswer: {
|
|
228
|
+
'@type': 'Answer',
|
|
229
|
+
text: item.answer,
|
|
230
|
+
},
|
|
231
|
+
})),
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
'@context': 'https://schema.org',
|
|
235
|
+
'@type': 'HowTo',
|
|
236
|
+
name: title,
|
|
237
|
+
step: howTo.map((step) => ({
|
|
238
|
+
'@type': 'HowToStep',
|
|
239
|
+
name: step.name,
|
|
240
|
+
text: step.text,
|
|
241
|
+
})),
|
|
242
|
+
},
|
|
243
|
+
],
|
|
244
|
+
};
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
const slug = 'forensic-microcrystal-drug-simulator';
|
|
5
|
+
const title = 'Forensic Microcrystal Drug Test Simulator';
|
|
6
|
+
const description = 'Simulate educational microcrystalline drug screening patterns by combining suspected controlled substances with classic forensic reagents and comparing crystal habit, growth speed, and polarized-light response.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Choose a suspected sample',
|
|
11
|
+
text: 'Select cocaine, heroin, amphetamine, or methamphetamine to load a teaching profile for the unknown material.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Apply a microcrystal reagent',
|
|
15
|
+
text: 'Switch between platinum chloride, gold chloride, and Dragendorff reagent to see how reagent chemistry changes crystal morphology.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Adjust simulated polarization',
|
|
19
|
+
text: 'Move the polarization control to increase or reduce birefringent contrast in the virtual microscope field.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Compare the reference-like result',
|
|
23
|
+
text: 'Use the habit label, confidence score, growth speed, and interpretation note to decide whether the pattern is reference-like, partial, or non-specific.',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
key: 'faq-1',
|
|
30
|
+
question: 'Are microcrystal tests confirmatory for illegal drugs?',
|
|
31
|
+
answer: 'No. Microcrystal tests are presumptive or comparative screening tools. Real seized-drug identification should follow validated schemes that include appropriate controls and confirmatory instrumental methods such as GC-MS, LC-MS, or infrared spectroscopy.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'faq-2',
|
|
35
|
+
question: 'Why do different reagents produce different crystal shapes?',
|
|
36
|
+
answer: 'The reagent forms salts, complexes, or precipitates with functional groups in the target compound. Solubility, acid strength, concentration, impurities, and drying rate influence whether the observed habit appears as needles, rosettes, prisms, plates, or weak scatter.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'faq-3',
|
|
40
|
+
question: 'What does polarized light add to microcrystal examination?',
|
|
41
|
+
answer: 'Polarized light can increase contrast and reveal birefringence, making edges, branching, and internal crystal structure easier to compare. It does not remove the need for reference standards and controls.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'faq-4',
|
|
45
|
+
question: 'Why can a positive-looking pattern still be misleading?',
|
|
46
|
+
answer: 'Cutting agents, mixtures, degraded material, reagent age, contamination, and analyst expectation can all produce ambiguous or overlapping morphologies. That is why presumptive results must be interpreted cautiously.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: 'faq-5',
|
|
50
|
+
question: 'Can this simulator identify an unknown substance?',
|
|
51
|
+
answer: 'No. It is an educational visualization of common morphology concepts. It cannot test real evidence, measure chemistry, or issue a laboratory conclusion.',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
export const content: ToolLocaleContent = {
|
|
56
|
+
slug,
|
|
57
|
+
title,
|
|
58
|
+
description,
|
|
59
|
+
ui: {
|
|
60
|
+
microscope: 'Polarized microscope',
|
|
61
|
+
canvasAria: 'Animated microcrystal growth field',
|
|
62
|
+
sample: 'Suspected sample',
|
|
63
|
+
sampleCocaine: 'Cocaine',
|
|
64
|
+
sampleHeroin: 'Heroin',
|
|
65
|
+
sampleAmphetamine: 'Amphetamine',
|
|
66
|
+
sampleMethamphetamine: 'Methamphetamine',
|
|
67
|
+
reagent: 'Reagent shelf',
|
|
68
|
+
reagentPlatinum: 'Platinum chloride',
|
|
69
|
+
reagentGold: 'Gold chloride',
|
|
70
|
+
reagentDragendorff: 'Dragendorff',
|
|
71
|
+
polarization: 'Polarized contrast',
|
|
72
|
+
confidence: 'Match',
|
|
73
|
+
growth: 'Growth',
|
|
74
|
+
birefringence: 'Birefr.',
|
|
75
|
+
regrow: 'Regrow crystals',
|
|
76
|
+
warningLabel: 'Forensic caution',
|
|
77
|
+
warningTitle: 'Screening caution',
|
|
78
|
+
matchReference: 'Reference-like',
|
|
79
|
+
matchPartial: 'Partial match',
|
|
80
|
+
matchNonSpecific: 'Non-specific',
|
|
81
|
+
habitFeatheryNeedles: 'Feathery needle bundles',
|
|
82
|
+
habitRosettes: 'Rosette starbursts',
|
|
83
|
+
habitBranchingPrisms: 'Branching prisms',
|
|
84
|
+
habitPlates: 'Thin plates',
|
|
85
|
+
habitWeakScatter: 'Sparse non-specific scatter',
|
|
86
|
+
cueCocainePlatinumChloride: 'Feathery and branching needle bundles are the expected teaching pattern for cocaine with platinum chloride.',
|
|
87
|
+
cueCocaineGoldChloride: 'Gold chloride can form branching orange-brown crystals, but the pattern is less specific than platinum chloride.',
|
|
88
|
+
cueCocaineDragendorff: 'Dragendorff gives a weak alkaloid response here; morphology should be treated as screening information only.',
|
|
89
|
+
cueHeroinPlatinumChloride: 'Plate-like deposits may appear, but this pairing is not a strong confirmatory teaching match.',
|
|
90
|
+
cueHeroinGoldChloride: 'Rosette clusters and rounded starbursts are the reference-like heroin pattern in this simulator.',
|
|
91
|
+
cueHeroinDragendorff: 'Dragendorff produces orange branching prisms consistent with an alkaloid screen, not an identity proof.',
|
|
92
|
+
cueAmphetaminePlatinumChloride: 'Fast branching prisms suggest a stimulant-like teaching pattern under the chosen reagent.',
|
|
93
|
+
cueAmphetamineGoldChloride: 'Sparse crystallization means the visual finding should be reported as non-specific.',
|
|
94
|
+
cueAmphetamineDragendorff: 'Needle sprays grow quickly and are useful for teaching presumptive amphetamine comparisons.',
|
|
95
|
+
cueMethamphetaminePlatinumChloride: 'Polarized rosettes may form, but the result remains a presumptive morphology comparison.',
|
|
96
|
+
cueMethamphetamineGoldChloride: 'Thin plate forms are visible, though overlap with other compounds limits specificity.',
|
|
97
|
+
cueMethamphetamineDragendorff: 'Dense orange branching prisms provide the strongest teaching match for methamphetamine in this set.',
|
|
98
|
+
disclaimer: 'Educational screening model only. Real drug identification requires validated reference standards, reagent controls, chain of custody, and confirmatory instrumental analysis.',
|
|
99
|
+
},
|
|
100
|
+
seo: [
|
|
101
|
+
{
|
|
102
|
+
type: 'title',
|
|
103
|
+
text: 'Microcrystal Drug Testing in Forensic Science',
|
|
104
|
+
level: 2,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'diagnostic',
|
|
108
|
+
variant: 'info',
|
|
109
|
+
icon: 'mdi:microscope',
|
|
110
|
+
badge: 'Teaching simulator',
|
|
111
|
+
title: 'What this microcrystal simulator is for',
|
|
112
|
+
html: 'This tool explains how classic forensic microcrystalline tests can produce recognizable crystal habits after a suspected drug is mixed with a reagent. It helps students compare <strong>crystal morphology</strong>, growth speed, and polarized-light contrast without treating the browser result as evidence.',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
type: 'stats',
|
|
116
|
+
columns: 4,
|
|
117
|
+
items: [
|
|
118
|
+
{ value: '4', label: 'teaching sample profiles', icon: 'mdi:flask-outline' },
|
|
119
|
+
{ value: '3', label: 'traditional reagent options', icon: 'mdi:bottle-tonic-outline' },
|
|
120
|
+
{ value: '5', label: 'crystal habits modeled', icon: 'mdi:shape-outline' },
|
|
121
|
+
{ value: '0', label: 'legal identification claims', icon: 'mdi:scale-balance' },
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'title',
|
|
126
|
+
text: 'How to Interpret the Crystal Habit',
|
|
127
|
+
level: 3,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'summary',
|
|
131
|
+
title: 'Practical comparison checklist',
|
|
132
|
+
items: [
|
|
133
|
+
'Start with a known reference standard and a blank reagent control before comparing an unknown.',
|
|
134
|
+
'Record the reagent, concentration, drop size, drying time, temperature, and microscope magnification.',
|
|
135
|
+
'Compare the overall habit first: needles, rosettes, plates, prisms, branching, or weak scatter.',
|
|
136
|
+
'Treat partial or sparse growth as a reason for further testing, not as a confident identification.',
|
|
137
|
+
],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
type: 'table',
|
|
141
|
+
headers: ['Observed habit', 'What users often ask', 'Careful interpretation'],
|
|
142
|
+
rows: [
|
|
143
|
+
['Feathery needles', 'Does this look like cocaine with platinum chloride?', 'It can be a useful teaching match, but mixtures and reagent conditions can change the habit.'],
|
|
144
|
+
['Rosettes', 'Are starburst crystals diagnostic?', 'Rosettes may support a comparison when controls match, but they are not enough alone.'],
|
|
145
|
+
['Branching prisms', 'Why are stimulant screens often fast-growing?', 'Some salts nucleate quickly and branch as solvent evaporates; speed is supportive, not confirmatory.'],
|
|
146
|
+
['Weak scatter', 'Does a weak pattern mean no drug is present?', 'No. Low concentration, impurity, aged reagent, or poor preparation can suppress crystal growth.'],
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'comparative',
|
|
151
|
+
columns: 2,
|
|
152
|
+
items: [
|
|
153
|
+
{
|
|
154
|
+
title: 'Microcrystal screening helps with',
|
|
155
|
+
icon: 'mdi:check-circle-outline',
|
|
156
|
+
highlight: true,
|
|
157
|
+
description: 'Fast visual comparison when a trained analyst uses controls and reference materials.',
|
|
158
|
+
points: ['Classroom demonstrations', 'Morphology vocabulary', 'Presumptive triage', 'Reagent effect comparison'],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
title: 'Microcrystal screening cannot replace',
|
|
162
|
+
icon: 'mdi:alert-circle-outline',
|
|
163
|
+
description: 'Validated confirmatory chemistry for a real seized-drug conclusion.',
|
|
164
|
+
points: ['Instrumental confirmation', 'Accredited procedures', 'Matrix-specific validation', 'Uncertainty documentation'],
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'title',
|
|
170
|
+
text: 'Scientific Background on Microcrystal Testing',
|
|
171
|
+
level: 3,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'paragraph',
|
|
175
|
+
html: 'Microcrystalline tests represent a historic and highly sensitive class of chemical screening tests utilized by forensic chemists to identify suspected controlled substances. When a small amount of a drug sample is dissolved in an acid and combined with a specific heavy metal reagent, such as gold chloride or platinum chloride, a coordination complex or insoluble salt precipitates. The molecular structure of the drug dictates the growth rate, orientation, and symmetry of the resulting crystals, producing distinctive microscopic shapes or habits.',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'paragraph',
|
|
179
|
+
html: 'Analyzing these habits under a polarized light microscope allows forensic examiners to observe optical properties such as birefringence, where the crystal splits light into two rays, creating vivid colors and high contrast. While instrumental methods like gas chromatography mass spectrometry have largely replaced microcrystal tests for confirmatory identification, microcrystalline screening remains a valued technique due to its speed, low cost, and ability to separate optical isomers that can be challenging to differentiate by other means.',
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
type: 'paragraph',
|
|
183
|
+
html: 'In educational settings, simulating these reactions helps students understand the relationship between chemical reagents and physical crystal morphology. By observing how cocaine, heroin, and various amphetamines respond to different reagents, students learn that a single positive test is not a final forensic conclusion. Proper drug screening protocols require comparing unknown samples to known reference materials and performing reagent blanks to ensure the validity and specificity of the observed crystal patterns.',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
type: 'glossary',
|
|
187
|
+
items: [
|
|
188
|
+
{ term: 'Crystal habit', definition: 'The visible shape or growth form of a crystal, such as needles, plates, prisms, or rosettes.' },
|
|
189
|
+
{ term: 'Nucleation', definition: 'The first formation of tiny crystal centers from which larger structures grow.' },
|
|
190
|
+
{ term: 'Birefringence', definition: 'Optical behavior that can make crystals appear brighter or colored under polarized light.' },
|
|
191
|
+
{ term: 'Presumptive test', definition: 'A screening test that suggests a possible class or compound but does not prove identity by itself.' },
|
|
192
|
+
{ term: 'Reference standard', definition: 'A known material tested under the same conditions to compare the unknown pattern.' },
|
|
193
|
+
],
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
type: 'tip',
|
|
197
|
+
title: 'Best practice for real evidence',
|
|
198
|
+
html: 'Use microcrystal morphology as one line of inquiry. A reliable workflow includes blanks, positive controls, documentation of reagent age, independent review when needed, and confirmatory testing under an accepted seized-drug scheme.',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
type: 'diagnostic',
|
|
202
|
+
variant: 'warning',
|
|
203
|
+
icon: 'mdi:alert-outline',
|
|
204
|
+
badge: 'Forensic caution',
|
|
205
|
+
title: 'A pretty crystal is not a legal identification',
|
|
206
|
+
html: 'The simulator deliberately separates a visual match score from a forensic conclusion. Real casework must account for mixtures, cutting agents, contamination, reagent performance, analyst training, and validated laboratory procedures.',
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
faq,
|
|
210
|
+
bibliography,
|
|
211
|
+
howTo,
|
|
212
|
+
schemas: [
|
|
213
|
+
{
|
|
214
|
+
'@context': 'https://schema.org',
|
|
215
|
+
'@type': 'SoftwareApplication',
|
|
216
|
+
name: title,
|
|
217
|
+
description,
|
|
218
|
+
applicationCategory: 'ForensicApplication',
|
|
219
|
+
operatingSystem: 'Any',
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
'@context': 'https://schema.org',
|
|
223
|
+
'@type': 'FAQPage',
|
|
224
|
+
mainEntity: faq.map((item) => ({
|
|
225
|
+
'@type': 'Question',
|
|
226
|
+
name: item.question,
|
|
227
|
+
acceptedAnswer: {
|
|
228
|
+
'@type': 'Answer',
|
|
229
|
+
text: item.answer,
|
|
230
|
+
},
|
|
231
|
+
})),
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
'@context': 'https://schema.org',
|
|
235
|
+
'@type': 'HowTo',
|
|
236
|
+
name: title,
|
|
237
|
+
step: howTo.map((step) => ({
|
|
238
|
+
'@type': 'HowToStep',
|
|
239
|
+
name: step.name,
|
|
240
|
+
text: step.text,
|
|
241
|
+
})),
|
|
242
|
+
},
|
|
243
|
+
],
|
|
244
|
+
};
|