@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,243 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
const slug = 'forensischer-duennschichtchromatographie-tintensimulator';
|
|
5
|
+
const title = 'Forensischer Dünnschichtchromatographie Tintensimulator (TLC)';
|
|
6
|
+
const description = 'Simulieren Sie die Dünnschichtchromatographie verdächtiger Schreibtinten, visualisieren Sie die Entwicklung der Fließmittelfront, trennen Sie Farbstoffbanden und berechnen Sie genaue Rf-Werte für jedes Pigment.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Verdächtige Tinte oder Vergleichsstift auswählen',
|
|
11
|
+
text: 'Wählen Sie die Tinte des Erpresserbriefs oder das Profil eines verdächtigen Stifts aus. Jede Tinte enthält eine andere Kombination von Farbstoffkomponenten mit unterschiedlicher Polarität und Affinität zur stationären Phase.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Mobile Phase auswählen',
|
|
15
|
+
text: 'Ändern Sie das Lösungsmittelsystem, um zu sehen, wie die Polarität des Lösungsmittels die Kapillarwirkung und die relative Wanderung der einzelnen Farbstoffbanden beeinflusst.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'TLC-Platte entwickeln',
|
|
19
|
+
text: 'Verschieben Sie den Schieberegler für die Entwicklungszeit und beobachten Sie, wie die Lösungsmittelfront auf der Platte aufsteigt, während sich die getrennten Banden oberhalb der Startlinie abzeichnen.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Rf-Tabelle ablesen',
|
|
23
|
+
text: 'Vergleichen Sie den Abstand jedes Pigments mit dem Abstand der Lösungsmittelfront. Der Simulator berechnet den Rf-Wert als Pigmentabstand geteilt durch den Lösungsmittelabstand.',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
key: 'faq-1',
|
|
30
|
+
question: 'Was bedeutet der Rf-Wert in der Dünnschichtchromatographie?',
|
|
31
|
+
answer: 'Der Rf-Wert ist der Retentionsfaktor: die von der Substanz zurückgelegte Strecke geteilt durch die von der Lösungsmittelfront zurückgelegte Strecke ab derselben Startlinie. Er ist dimensionslos und liegt normalerweise zwischen 0 und 1.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'faq-2',
|
|
35
|
+
question: 'Kann die TLC beweisen, dass zwei Tintenproben vom selben Stift stammen?',
|
|
36
|
+
answer: 'Nein. Die TLC kann zeigen, ob die Farbstoffmuster übereinstimmen oder nicht, aber eine eindeutige Herkunftsbestimmung erfordert validierte Vergleichsmethoden, Kontrollen, Dokumentation und fachmännische Bewertung.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'faq-3',
|
|
40
|
+
question: 'Warum ändert das Wechseln des Lösungsmittels das Bandenmuster?',
|
|
41
|
+
answer: 'Farbstoffe verteilen sich unterschiedlich zwischen der stationären und der mobilen Phase. Ein Lösungsmittel mit einer besseren Polaritätsanpassung kann einen Farbstoff weiter transportieren, was seinen Rf-Wert erhöht.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'faq-4',
|
|
45
|
+
question: 'Warum ist die Startlinie wichtig?',
|
|
46
|
+
answer: 'Sowohl die Strecke der Lösungsmittelfront als auch die des Pigments müssen ab der Startlinie gemessen werden. Eine Messung ab der Unterkante der Platte führt zu falschen Rf-Werten.',
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
export const content: ToolLocaleContent = {
|
|
51
|
+
slug,
|
|
52
|
+
title,
|
|
53
|
+
description,
|
|
54
|
+
ui: {
|
|
55
|
+
chamberAria: 'Dünnschichtchromatographie-Kammer mit Entwicklungsplatte',
|
|
56
|
+
rulerAria: 'Virtuelles Millimeterlineal zur Messung von Lösungsmittelfront und Pigmentbanden',
|
|
57
|
+
rulerMarks: '80,60,40,20,0',
|
|
58
|
+
units: 'Einheitensystem',
|
|
59
|
+
metric: 'Metrisch',
|
|
60
|
+
imperial: 'Imperial',
|
|
61
|
+
unitMillimeter: 'mm',
|
|
62
|
+
unitInch: 'in',
|
|
63
|
+
unitMinute: 'Min',
|
|
64
|
+
inkSample: 'Tintenprobe',
|
|
65
|
+
ransomNote: 'Verdächtige Tinte (Erpresserbrief)',
|
|
66
|
+
bluePen: 'Beschlagnahmter blauer Kugelschreiber',
|
|
67
|
+
blackPen: 'Beschlagnahmter schwarzer Kugelschreiber',
|
|
68
|
+
gelPen: 'Beschlagnahmter Gelschreiber',
|
|
69
|
+
solventSystem: 'Mobile Phase',
|
|
70
|
+
ethanolWater: 'Ethanol / Wasser',
|
|
71
|
+
butanolAcetic: 'Butanol / Essigsäure',
|
|
72
|
+
isopropanolAmmonia: 'Isopropanol / Ammoniak',
|
|
73
|
+
developmentTime: 'Entwicklungszeit',
|
|
74
|
+
frontDistance: 'Lösungsmittelweg',
|
|
75
|
+
matchScore: 'Musterähnlichkeit',
|
|
76
|
+
solventFront: 'Lösungsmittelfront',
|
|
77
|
+
originLine: 'Startlinie',
|
|
78
|
+
pigment: 'Pigmentbande',
|
|
79
|
+
pigmentCyanDye: 'Cyan-Farbstoff',
|
|
80
|
+
pigmentVioletDye: 'Violett-Farbstoff',
|
|
81
|
+
pigmentGrayCarrier: 'Grauer Träger',
|
|
82
|
+
pigmentNavyDye: 'Dunkelblau-Farbstoff',
|
|
83
|
+
pigmentYellowDye: 'Gelb-Farbstoff',
|
|
84
|
+
pigmentRedDye: 'Rot-Farbstoff',
|
|
85
|
+
pigmentBlueDye: 'Blau-Farbstoff',
|
|
86
|
+
pigmentDarkBinder: 'Dunkles Bindemittel',
|
|
87
|
+
pigmentTealDye: 'Teal-Farbstoff',
|
|
88
|
+
pigmentMagentaDye: 'Magenta-Farbstoff',
|
|
89
|
+
pigmentGelBinder: 'Gel-Bindemittel',
|
|
90
|
+
distance: 'Abstand',
|
|
91
|
+
rfValue: 'Rf-Wert',
|
|
92
|
+
disclaimer: 'Nur zu Bildungszwecken. Der forensische Tintenvergleich erfordert Originaldokumente, validierte Labormethoden, Referenzstandards und qualifizierte Urkundenprüfer.',
|
|
93
|
+
},
|
|
94
|
+
seo: [
|
|
95
|
+
{
|
|
96
|
+
type: 'title',
|
|
97
|
+
text: 'Dünnschichtchromatographie für den forensischen Tintenvergleich',
|
|
98
|
+
level: 2,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'diagnostic',
|
|
102
|
+
variant: 'info',
|
|
103
|
+
icon: 'mdi:test-tube',
|
|
104
|
+
badge: 'Lehr-Simulator',
|
|
105
|
+
title: 'Was dieser TLC Tintensimulator vermittelt',
|
|
106
|
+
html: 'Dieses Tool erklärt, wie die <strong>Dünnschichtchromatographie von Schreibtinten</strong> einen sichtbaren Tintenstrich in mehrere Farbstoffbanden auftrennen kann. Es wurde für Studierende der Forensik, Lernende der Urkundenprüfung und alle entwickelt, die verstehen möchten, wie Rf-Werte anhand einer entwickelten TLC-Platte berechnet werden.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'stats',
|
|
110
|
+
columns: 4,
|
|
111
|
+
items: [
|
|
112
|
+
{ value: 'Rf = d Bande / d Lösungsmittel', label: 'Formel für den Retentionsfaktor', icon: 'mdi:division' },
|
|
113
|
+
{ value: '4', label: 'Verglichene Tintenprofile', icon: 'mdi:pen' },
|
|
114
|
+
{ value: '3', label: 'Simulierte mobile Phasen', icon: 'mdi:flask-outline' },
|
|
115
|
+
{ value: '2', label: 'Metrische und imperiale Anzeigen', icon: 'mdi:swap-horizontal' },
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'summary',
|
|
120
|
+
title: 'Checkliste für korrekte TLC Messungen',
|
|
121
|
+
items: [
|
|
122
|
+
'Markieren Sie die Startlinie vor Beginn der Entwicklung oberhalb des Lösungsmittelspiegels.',
|
|
123
|
+
'Entnehmen Sie die Platte, bevor das Lösungsmittel den oberen Rand erreicht.',
|
|
124
|
+
'Markieren Sie die Lösungsmittelfront sofort, da sie verdunsten kann und dann schwer zu sehen ist.',
|
|
125
|
+
'Messen Sie den Weg des Pigments und den des Lösungsmittels ab derselben Startlinie.',
|
|
126
|
+
'Geben Sie Rf-Werte stets zusammen mit dem Lösungsmittelsystem, dem Plattentyp, den Entwicklungsbedingungen und den Kontrollen an.',
|
|
127
|
+
],
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'comparative',
|
|
131
|
+
columns: 2,
|
|
132
|
+
items: [
|
|
133
|
+
{
|
|
134
|
+
title: 'Was die TLC unterstützen kann',
|
|
135
|
+
icon: 'mdi:check-circle-outline',
|
|
136
|
+
highlight: true,
|
|
137
|
+
description: 'Die TLC kann zeigen, ob verdächtige und bekannte Tinten unter denselben Bedingungen ein ähnliches Farbstofftrennungsverhalten aufweisen.',
|
|
138
|
+
points: ['Vergleich zur Vorauswahl', 'Visualisierung des Farbstoffmusters', 'Rf-Dokumentation', 'Auswahl von Proben für Bestätigungstests'],
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
title: 'Was die TLC allein nicht beweisen kann',
|
|
142
|
+
icon: 'mdi:alert-circle-outline',
|
|
143
|
+
description: 'Die TLC allein kann einen Stift nicht eindeutig identifizieren, ein Dokument nicht datieren und die Urheberschaft nicht beweisen.',
|
|
144
|
+
points: ['Keine eindeutige Herkunftsbestimmung', 'Keine Identifizierung des Schreibers', 'Standardmäßig kein Rückschluss auf das Alter', 'Kein Ersatz für validierte Protokolle'],
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: 'table',
|
|
150
|
+
headers: ['Häufige Frage', 'Beteiligtes TLC-Konzept', 'Detaillierte Antwort'],
|
|
151
|
+
rows: [
|
|
152
|
+
['Wie berechnet man den Rf-Wert?', 'Abstand des Farbstoffs geteilt durch den Abstand der Lösungsmittelfront.', 'Messen Sie beide Werte ab der Startlinie und teilen Sie sie durcheinander. Das Ergebnis ist dimensionslos.'],
|
|
153
|
+
['Warum spalten sich Tinten in Farben auf?', 'Unterschiedliche Farbstoffe besitzen eine unterschiedliche Affinität zur stationären und mobilen Phase.', 'Ein einzelner geschriebener Strich kann mehrere Farbstoffe enthalten, die mit unterschiedlicher Geschwindigkeit wandern.'],
|
|
154
|
+
['Können zwei Stifte dasselbe TLC-Muster haben?', 'Ja, ähnliche Rezepturen können sehr ähnliche Muster erzeugen.', 'Ähnlichkeit stützt die Annahme von Konsistenz, beweist aber nicht die Herkunft von einem bestimmten Stift.'],
|
|
155
|
+
['Warum hat sich mein Rf-Wert verändert?', 'Lösungsmittel, Platte, Luftfeuchtigkeit, Sättigung, Temperatur und Fleckgröße beeinflussen die Wanderung.', 'Rf-Werte sind nur vergleichbar, wenn die Bedingungen kontrolliert und dokumentiert sind.'],
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'title',
|
|
160
|
+
text: 'Wie der Simulator die Auftrennung modelliert',
|
|
161
|
+
level: 3,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'paragraph',
|
|
165
|
+
html: 'Das Modell beschreibt die Bewegung der Lösungsmittelfront als einen kapillaren Aufstiegsprozess, der sich im Laufe der Zeit verlangsamt. Jedem Farbstoff wird ein Rf-Wert zugewiesen, der auf zwei vereinfachten Eigenschaften basiert: seiner Affinität zum mobilen Lösungsmittel und seiner Polaritätsübereinstimmung mit der ausgewählten mobilen Phase. Dies dient didaktischen Zwecken und entspricht keiner instrumentellen Chemie, bewahrt jedoch die für Lernende wesentliche Beziehung: Das Lösungsmittel bewegt sich zuerst, die Farbstoffe verteilen sich zwischen den Phasen und der Rf-Wert wird aus den gemessenen Wegstrecken berechnet.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'Die Dünnschichtchromatographie ist aufgrund ihrer Einfachheit, Schnelligkeit und Kosteneffizienz ein weit verbreitetes Analyseverfahren in forensischen Laboratorien. Im Rahmen der Urkundenprüfung wird sie hauptsächlich zum Vergleich der Farbstoffzusammensetzung verschiedener Tintenproben eingesetzt. Forensiker entnehmen einer verdächtigen Urkunde mit einem Skalpell oder einer Hohlnadel ein winziges Tintenpartikel, lösen es in einem geeigneten Lösungsmittel wie Pyridin oder Methanol und tragen es zusammen mit Referenzstandards auf die TLC Platte auf.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: 'Nachdem die Platte in einer geschlossenen Kammer entwickelt wurde, trennen sich die einzelnen Tintenbestandteile aufgrund ihrer unterschiedlichen Verteilung zwischen der stationären Kieselgelphase und der mobilen Lösungsmittelphase. Das resultierende Chromatogramm liefert ein visuelles Identifikationsmerkmal der Tinte und zeigt charakteristische Farbbanden in bestimmten Höhen. Urkundenprüfer berechnen anschließend den Retentionsfaktor für jede sichtbare Farbstoffbande, um festzustellen, ob die fragliche Tinte chemisch mit einem verdächtigen Schreibgerät übereinstimmt oder einer bekannten Marke und Formel in einer Tintendatenbank entspricht.',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
type: 'glossary',
|
|
177
|
+
items: [
|
|
178
|
+
{ term: 'Stationary phase', definition: 'Die Beschichtung auf der TLC-Platte, üblicherweise Kieselgel, die mit den Verbindungen interagiert und deren Bewegung verlangsamt.' },
|
|
179
|
+
{ term: 'Mobile phase', definition: 'Das Lösungsmittelsystem, das durch die Platte aufsteigt und die Farbstoffkomponenten mit sich führt.' },
|
|
180
|
+
{ term: 'Origin line', definition: 'Die mit Bleistift gezogene Linie, auf der die Tintenprobe vor der Entwicklung aufgetragen wird.' },
|
|
181
|
+
{ term: 'Solvent front', definition: 'Der höchste Punkt, den die mobile Phase erreicht, bevor die Platte entnommen wird.' },
|
|
182
|
+
{ term: 'Rf value', definition: 'Der Retentionsfaktor: Wanderungsstrecke der Substanz geteilt durch die Wanderungsstrecke der Lösungsmittelfront.' },
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
type: 'tip',
|
|
187
|
+
title: 'Praktischer Interpretationshinweis',
|
|
188
|
+
html: 'In der forensischen Urkundenprüfung kann eine Abweichung besonders wertvoll sein, da sie eine Stiftrezeptur ausschließen kann. Ein übereinstimmendes TLC-Muster ist weniger aussagekräftig: Es zeigt nur, dass die Proben unter diesen Bedingungen chemisch konsistent sind, nicht dass sie zwingend vom selben Stift stammen.',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
type: 'proscons',
|
|
192
|
+
title: 'Stärken und Grenzen des TLC Tintenvergleichs',
|
|
193
|
+
items: [
|
|
194
|
+
{ pro: 'Schnell, kostengünstig und visuell anschaulich zur Trennung von Tintenfarbstoffen.', con: 'In der Regel destruktiv, da eine kleine Probe aus dem Dokument entnommen werden muss.' },
|
|
195
|
+
{ pro: 'Rf-Werte bieten eine strukturierte Methode zum Vergleich verdächtiger und bekannter Proben.', con: 'Rf-Werte verschieben sich bei Änderungen von Lösungsmittel, Platte, Luftfeuchtigkeit und Entwicklungsbedingungen.' },
|
|
196
|
+
{ pro: 'Nützlich als Screening-Methode vor fortgeschritteneren Analysen.', con: 'Erlaubt ohne weitere Beweise keine eindeutige Zuordnung zu einer bestimmten Schreibquelle.' },
|
|
197
|
+
],
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'diagnostic',
|
|
201
|
+
variant: 'warning',
|
|
202
|
+
icon: 'mdi:scale-balance',
|
|
203
|
+
badge: 'Forensische Vorsicht',
|
|
204
|
+
title: 'Überbewerten Sie die Tintenchromatographie nicht',
|
|
205
|
+
html: 'Eine Browser-Simulation kann weder Papier, Tintenalter, Extraktionschemie, Plattenqualität noch Verunreinigungen untersuchen oder eine instrumentelle Bestätigung ersetzen. Nutzen Sie sie, um die Messlogik und die Grenzen der Interpretation zu verstehen, und verlassen Sie sich bei echten Beweisen auf validierte Methoden der forensischen Urkundenprüfung.',
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
faq,
|
|
209
|
+
bibliography,
|
|
210
|
+
howTo,
|
|
211
|
+
schemas: [
|
|
212
|
+
{
|
|
213
|
+
'@context': 'https://schema.org',
|
|
214
|
+
'@type': 'SoftwareApplication',
|
|
215
|
+
name: title,
|
|
216
|
+
description,
|
|
217
|
+
applicationCategory: 'ForensicApplication',
|
|
218
|
+
operatingSystem: 'Any',
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
'@context': 'https://schema.org',
|
|
222
|
+
'@type': 'FAQPage',
|
|
223
|
+
mainEntity: faq.map((item) => ({
|
|
224
|
+
'@type': 'Question',
|
|
225
|
+
name: item.question,
|
|
226
|
+
acceptedAnswer: {
|
|
227
|
+
'@type': 'Answer',
|
|
228
|
+
text: item.answer,
|
|
229
|
+
},
|
|
230
|
+
})),
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
'@context': 'https://schema.org',
|
|
234
|
+
'@type': 'HowTo',
|
|
235
|
+
name: title,
|
|
236
|
+
step: howTo.map((step) => ({
|
|
237
|
+
'@type': 'HowToStep',
|
|
238
|
+
name: step.name,
|
|
239
|
+
text: step.text,
|
|
240
|
+
})),
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
|
+
};
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
const slug = 'forensic-tlc-ink-simulator';
|
|
5
|
+
const title = 'Forensic TLC Ink Chromatography Simulator';
|
|
6
|
+
const description = 'Simulate thin-layer chromatography of questioned writing inks, visualize solvent-front development, separate dye bands, and calculate exact Rf values for each pigment.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Choose the questioned ink or comparison pen',
|
|
11
|
+
text: 'Select the ransom-note ink or a candidate pen profile. Each ink contains a different set of dye components with distinct polarity and stationary-phase affinity.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Select the mobile phase',
|
|
15
|
+
text: 'Change the solvent system to see how solvent polarity alters capillary development and the relative migration of each dye band.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Develop the TLC plate',
|
|
19
|
+
text: 'Move the development-time slider and watch the solvent front rise through the plate while separated bands appear above the origin line.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Read the Rf table',
|
|
23
|
+
text: 'Compare each pigment distance with the solvent-front distance. The simulator calculates Rf as pigment distance divided by solvent-front distance.',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
key: 'faq-1',
|
|
30
|
+
question: 'What does Rf mean in thin-layer chromatography?',
|
|
31
|
+
answer: 'Rf is the retention factor: the distance traveled by the compound divided by the distance traveled by the solvent front from the same origin line. It is unitless and normally ranges from 0 to 1.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'faq-2',
|
|
35
|
+
question: 'Can TLC prove that two ink samples came from the same pen?',
|
|
36
|
+
answer: 'No. TLC can show whether dye patterns are consistent or inconsistent, but source attribution requires validated comparison methods, controls, documentation, and expert interpretation.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'faq-3',
|
|
40
|
+
question: 'Why does changing the solvent alter the band pattern?',
|
|
41
|
+
answer: 'Dyes partition differently between the stationary phase and the mobile phase. A solvent with a better polarity match can carry a dye farther, increasing its Rf value.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'faq-4',
|
|
45
|
+
question: 'Why is the origin line important?',
|
|
46
|
+
answer: 'Both the solvent-front distance and pigment distance must be measured from the origin line. Measuring from the bottom of the plate produces incorrect Rf values.',
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
export const content: ToolLocaleContent = {
|
|
51
|
+
slug,
|
|
52
|
+
title,
|
|
53
|
+
description,
|
|
54
|
+
ui: {
|
|
55
|
+
chamberAria: 'Thin-layer chromatography chamber with developing plate',
|
|
56
|
+
rulerAria: 'Virtual millimeter ruler for measuring solvent front and pigment bands',
|
|
57
|
+
rulerMarks: '80,60,40,20,0',
|
|
58
|
+
units: 'Unit system',
|
|
59
|
+
metric: 'Metric',
|
|
60
|
+
imperial: 'Imperial',
|
|
61
|
+
unitMillimeter: 'mm',
|
|
62
|
+
unitInch: 'in',
|
|
63
|
+
unitMinute: 'min',
|
|
64
|
+
inkSample: 'Ink sample',
|
|
65
|
+
ransomNote: 'Questioned ransom-note ink',
|
|
66
|
+
bluePen: 'Seized blue ballpoint',
|
|
67
|
+
blackPen: 'Seized black ballpoint',
|
|
68
|
+
gelPen: 'Seized gel pen',
|
|
69
|
+
solventSystem: 'Mobile phase',
|
|
70
|
+
ethanolWater: 'Ethanol / water',
|
|
71
|
+
butanolAcetic: 'Butanol / acetic acid',
|
|
72
|
+
isopropanolAmmonia: 'Isopropanol / ammonia',
|
|
73
|
+
developmentTime: 'Development time',
|
|
74
|
+
frontDistance: 'Solvent travel',
|
|
75
|
+
matchScore: 'Pattern similarity',
|
|
76
|
+
solventFront: 'Solvent front',
|
|
77
|
+
originLine: 'Origin',
|
|
78
|
+
pigment: 'Pigment band',
|
|
79
|
+
pigmentCyanDye: 'cyan dye',
|
|
80
|
+
pigmentVioletDye: 'violet dye',
|
|
81
|
+
pigmentGrayCarrier: 'gray carrier',
|
|
82
|
+
pigmentNavyDye: 'navy dye',
|
|
83
|
+
pigmentYellowDye: 'yellow dye',
|
|
84
|
+
pigmentRedDye: 'red dye',
|
|
85
|
+
pigmentBlueDye: 'blue dye',
|
|
86
|
+
pigmentDarkBinder: 'dark binder',
|
|
87
|
+
pigmentTealDye: 'teal dye',
|
|
88
|
+
pigmentMagentaDye: 'magenta dye',
|
|
89
|
+
pigmentGelBinder: 'gel binder',
|
|
90
|
+
distance: 'Distance',
|
|
91
|
+
rfValue: 'Rf value',
|
|
92
|
+
disclaimer: 'Educational simulation only. Forensic ink comparison requires original documents, validated laboratory methods, reference standards, and qualified document examiners.',
|
|
93
|
+
},
|
|
94
|
+
seo: [
|
|
95
|
+
{
|
|
96
|
+
type: 'title',
|
|
97
|
+
text: 'Thin-Layer Chromatography for Forensic Ink Comparison',
|
|
98
|
+
level: 2,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'diagnostic',
|
|
102
|
+
variant: 'info',
|
|
103
|
+
icon: 'mdi:test-tube',
|
|
104
|
+
badge: 'Teaching simulator',
|
|
105
|
+
title: 'What this TLC ink simulator helps you understand',
|
|
106
|
+
html: 'This tool explains how <strong>thin-layer chromatography of writing inks</strong> can separate a visible ink line into multiple dye bands. It is designed for forensic science students, document-examination learners, and anyone trying to understand how Rf values are calculated from a developed TLC plate.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'stats',
|
|
110
|
+
columns: 4,
|
|
111
|
+
items: [
|
|
112
|
+
{ value: 'Rf = d band / d solvent', label: 'retention-factor formula', icon: 'mdi:division' },
|
|
113
|
+
{ value: '4', label: 'ink profiles compared', icon: 'mdi:pen' },
|
|
114
|
+
{ value: '3', label: 'mobile phases simulated', icon: 'mdi:flask-outline' },
|
|
115
|
+
{ value: '2', label: 'metric and imperial readouts', icon: 'mdi:swap-horizontal' },
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'summary',
|
|
120
|
+
title: 'Correct TLC measurement checklist',
|
|
121
|
+
items: [
|
|
122
|
+
'Mark the origin line above the solvent level before development starts.',
|
|
123
|
+
'Remove the plate before the solvent reaches the top edge.',
|
|
124
|
+
'Mark the solvent front immediately because it can evaporate or become hard to see.',
|
|
125
|
+
'Measure pigment travel and solvent travel from the same origin line.',
|
|
126
|
+
'Report Rf values with the solvent system, plate type, development conditions, and controls.',
|
|
127
|
+
],
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'comparative',
|
|
131
|
+
columns: 2,
|
|
132
|
+
items: [
|
|
133
|
+
{
|
|
134
|
+
title: 'What TLC can support',
|
|
135
|
+
icon: 'mdi:check-circle-outline',
|
|
136
|
+
highlight: true,
|
|
137
|
+
description: 'TLC can show whether questioned and known inks have similar dye separation behavior under the same conditions.',
|
|
138
|
+
points: ['Screening comparison', 'Dye-pattern visualization', 'Rf documentation', 'Selection of samples for confirmatory testing'],
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
title: 'What TLC cannot prove alone',
|
|
142
|
+
icon: 'mdi:alert-circle-outline',
|
|
143
|
+
description: 'TLC by itself cannot uniquely identify a pen, date a document, or prove authorship.',
|
|
144
|
+
points: ['No unique source attribution', 'No writer identification', 'No aging conclusion by default', 'No replacement for validated protocols'],
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: 'table',
|
|
150
|
+
headers: ['Question users ask', 'TLC concept involved', 'Careful answer'],
|
|
151
|
+
rows: [
|
|
152
|
+
['How do you calculate Rf?', 'Distance of dye divided by distance of solvent front.', 'Measure both from the origin line, then divide. The result has no unit.'],
|
|
153
|
+
['Why do inks split into colors?', 'Different dyes have different affinity for the stationary and mobile phases.', 'A single written stroke may contain several colorants that migrate at different rates.'],
|
|
154
|
+
['Can two pens have the same TLC pattern?', 'Yes, similar formulations can produce close patterns.', 'Similarity supports consistency, not individualization to one pen.'],
|
|
155
|
+
['Why did my Rf change?', 'Solvent, plate, humidity, saturation, temperature, and spotting size affect migration.', 'Rf values are only comparable when conditions are controlled and documented.'],
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'title',
|
|
160
|
+
text: 'How the Simulator Models Separation',
|
|
161
|
+
level: 3,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'paragraph',
|
|
165
|
+
html: 'The model treats solvent-front movement as a capillary rise process that slows over time, while each dye receives an Rf value based on two simplified properties: its affinity for the moving solvent and its polarity match with the selected mobile phase. This is intentionally educational rather than instrument-grade chemistry, but it preserves the core relationship users need to learn: the solvent moves first, dyes partition between phases, and Rf is calculated from measured travel distances.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'Thin-layer chromatography is a widely accepted analytical technique in forensic laboratories due to its simplicity, speed, and cost-effectiveness. In the context of document examination, it is primarily used to compare the dye compositions of different ink samples. Forensic scientists extract a small plug of ink from a questioned document using a scalpel or a hollow needle, dissolve it in a suitable solvent such as pyridine or methanol, and spot it onto the TLC plate alongside reference ink standards.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: 'Once the plate is developed in a closed chamber, the individual components of the ink separate based on their differential partitioning between the stationary silica gel phase and the mobile solvent phase. The resulting chromatogram provides a visual fingerprint of the ink, displaying distinct bands of colors at specific heights. Document examiners then calculate the retention factor for each visible dye band, helping to determine if the questioned ink is chemically consistent with a suspect writing instrument or if it matches a known brand and formula in an ink reference database.',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
type: 'glossary',
|
|
177
|
+
items: [
|
|
178
|
+
{ term: 'Stationary phase', definition: 'The coating on the TLC plate, commonly silica gel, that interacts with compounds and slows their movement.' },
|
|
179
|
+
{ term: 'Mobile phase', definition: 'The solvent system that rises through the plate and carries dye components with it.' },
|
|
180
|
+
{ term: 'Origin line', definition: 'The pencil line where the ink sample is applied before development.' },
|
|
181
|
+
{ term: 'Solvent front', definition: 'The highest point reached by the mobile phase before the plate is removed.' },
|
|
182
|
+
{ term: 'Rf value', definition: 'The retention factor: compound travel distance divided by solvent-front travel distance.' },
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
type: 'tip',
|
|
187
|
+
title: 'Practical interpretation tip',
|
|
188
|
+
html: 'In forensic document work, a mismatch can be especially useful because it may exclude a candidate pen formulation. A match-like TLC pattern is weaker: it says the samples are chemically consistent under those conditions, not that they necessarily came from the same pen.',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
type: 'proscons',
|
|
192
|
+
title: 'TLC ink comparison strengths and limits',
|
|
193
|
+
items: [
|
|
194
|
+
{ pro: 'Fast, inexpensive, and visually intuitive for separating ink dyes.', con: 'Usually destructive because a small sample is removed from the document.' },
|
|
195
|
+
{ pro: 'Rf values create a structured way to compare questioned and known samples.', con: 'Rf values shift when solvent, plate, humidity, and development conditions change.' },
|
|
196
|
+
{ pro: 'Useful as a screening method before more advanced analysis.', con: 'Cannot make a unique pen-source conclusion without broader evidence.' },
|
|
197
|
+
],
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'diagnostic',
|
|
201
|
+
variant: 'warning',
|
|
202
|
+
icon: 'mdi:scale-balance',
|
|
203
|
+
badge: 'Forensic caution',
|
|
204
|
+
title: 'Do not overstate ink chromatography',
|
|
205
|
+
html: 'A browser simulation cannot examine paper, ink age, extraction chemistry, plate quality, contamination, or instrumental confirmation. Use it to learn the measurement logic and interpretation limits, then rely on validated forensic document examination methods for real evidence.',
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
faq,
|
|
209
|
+
bibliography,
|
|
210
|
+
howTo,
|
|
211
|
+
schemas: [
|
|
212
|
+
{
|
|
213
|
+
'@context': 'https://schema.org',
|
|
214
|
+
'@type': 'SoftwareApplication',
|
|
215
|
+
name: title,
|
|
216
|
+
description,
|
|
217
|
+
applicationCategory: 'ForensicApplication',
|
|
218
|
+
operatingSystem: 'Any',
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
'@context': 'https://schema.org',
|
|
222
|
+
'@type': 'FAQPage',
|
|
223
|
+
mainEntity: faq.map((item) => ({
|
|
224
|
+
'@type': 'Question',
|
|
225
|
+
name: item.question,
|
|
226
|
+
acceptedAnswer: {
|
|
227
|
+
'@type': 'Answer',
|
|
228
|
+
text: item.answer,
|
|
229
|
+
},
|
|
230
|
+
})),
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
'@context': 'https://schema.org',
|
|
234
|
+
'@type': 'HowTo',
|
|
235
|
+
name: title,
|
|
236
|
+
step: howTo.map((step) => ({
|
|
237
|
+
'@type': 'HowToStep',
|
|
238
|
+
name: step.name,
|
|
239
|
+
text: step.text,
|
|
240
|
+
})),
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
|
+
};
|