@jjlmoya/utils-textiles 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 +60 -0
- package/src/category/i18n/en.ts +76 -0
- package/src/category/i18n/es.ts +76 -0
- package/src/category/i18n/fr.ts +73 -0
- package/src/category/index.ts +17 -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 +11 -0
- package/src/env.d.ts +5 -0
- package/src/index.ts +32 -0
- package/src/layouts/PreviewLayout.astro +117 -0
- package/src/pages/[locale]/[slug].astro +146 -0
- package/src/pages/[locale].astro +253 -0
- package/src/pages/index.astro +4 -0
- package/src/tests/faq_count.test.ts +19 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/mocks/astro_mock.js +2 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/seo_length.test.ts +22 -0
- package/src/tests/title_separators.test.ts +40 -0
- package/src/tests/tool_validation.test.ts +17 -0
- package/src/tool/burnTest/bibliography.astro +34 -0
- package/src/tool/burnTest/component.astro +602 -0
- package/src/tool/burnTest/i18n/en.ts +225 -0
- package/src/tool/burnTest/i18n/es.ts +225 -0
- package/src/tool/burnTest/i18n/fr.ts +225 -0
- package/src/tool/burnTest/index.ts +34 -0
- package/src/tool/burnTest/logic.ts +3 -0
- package/src/tool/burnTest/seo.astro +40 -0
- package/src/tool/burnTest/ui.ts +36 -0
- package/src/tool/clothingSizeConverter/bibliography.astro +34 -0
- package/src/tool/clothingSizeConverter/component.astro +1226 -0
- package/src/tool/clothingSizeConverter/i18n/en.ts +356 -0
- package/src/tool/clothingSizeConverter/i18n/es.ts +356 -0
- package/src/tool/clothingSizeConverter/i18n/fr.ts +356 -0
- package/src/tool/clothingSizeConverter/index.ts +34 -0
- package/src/tool/clothingSizeConverter/logic.ts +30 -0
- package/src/tool/clothingSizeConverter/seo.astro +40 -0
- package/src/tool/clothingSizeConverter/ui.ts +70 -0
- package/src/tool/fabricProjectCalculator/bibliography.astro +19 -0
- package/src/tool/fabricProjectCalculator/component.astro +914 -0
- package/src/tool/fabricProjectCalculator/i18n/en.ts +250 -0
- package/src/tool/fabricProjectCalculator/i18n/es.ts +250 -0
- package/src/tool/fabricProjectCalculator/i18n/fr.ts +250 -0
- package/src/tool/fabricProjectCalculator/index.ts +34 -0
- package/src/tool/fabricProjectCalculator/logic.ts +89 -0
- package/src/tool/fabricProjectCalculator/seo.astro +40 -0
- package/src/tool/fabricProjectCalculator/ui.ts +57 -0
- package/src/tool/fabricTruth/bibliography.astro +40 -0
- package/src/tool/fabricTruth/component.astro +708 -0
- package/src/tool/fabricTruth/i18n/en.ts +282 -0
- package/src/tool/fabricTruth/i18n/es.ts +316 -0
- package/src/tool/fabricTruth/i18n/fr.ts +282 -0
- package/src/tool/fabricTruth/index.ts +34 -0
- package/src/tool/fabricTruth/logic.ts +91 -0
- package/src/tool/fabricTruth/seo.astro +40 -0
- package/src/tool/fabricTruth/ui.ts +28 -0
- package/src/tool/fiberPrep/bibliography.astro +33 -0
- package/src/tool/fiberPrep/component.astro +987 -0
- package/src/tool/fiberPrep/i18n/en.ts +225 -0
- package/src/tool/fiberPrep/i18n/es.ts +225 -0
- package/src/tool/fiberPrep/i18n/fr.ts +225 -0
- package/src/tool/fiberPrep/index.ts +34 -0
- package/src/tool/fiberPrep/logic.ts +36 -0
- package/src/tool/fiberPrep/seo.astro +40 -0
- package/src/tool/fiberPrep/ui.ts +38 -0
- package/src/tool/knittingGauge/bibliography.astro +14 -0
- package/src/tool/knittingGauge/component.astro +828 -0
- package/src/tool/knittingGauge/i18n/en.ts +234 -0
- package/src/tool/knittingGauge/i18n/es.ts +234 -0
- package/src/tool/knittingGauge/i18n/fr.ts +234 -0
- package/src/tool/knittingGauge/index.ts +34 -0
- package/src/tool/knittingGauge/logic.ts +28 -0
- package/src/tool/knittingGauge/seo.astro +40 -0
- package/src/tool/knittingGauge/ui.ts +41 -0
- package/src/tool/laundryGuide/bibliography.astro +33 -0
- package/src/tool/laundryGuide/component.astro +486 -0
- package/src/tool/laundryGuide/data-en.ts +166 -0
- package/src/tool/laundryGuide/data-es.ts +166 -0
- package/src/tool/laundryGuide/data-fr.ts +103 -0
- package/src/tool/laundryGuide/i18n/en.ts +275 -0
- package/src/tool/laundryGuide/i18n/es.ts +275 -0
- package/src/tool/laundryGuide/i18n/fr.ts +291 -0
- package/src/tool/laundryGuide/index.ts +29 -0
- package/src/tool/laundryGuide/logic.ts +19 -0
- package/src/tool/laundryGuide/seo.astro +40 -0
- package/src/tool/needleConverter/bibliography.astro +14 -0
- package/src/tool/needleConverter/component.astro +518 -0
- package/src/tool/needleConverter/i18n/en.ts +217 -0
- package/src/tool/needleConverter/i18n/es.ts +217 -0
- package/src/tool/needleConverter/i18n/fr.ts +217 -0
- package/src/tool/needleConverter/index.ts +34 -0
- package/src/tool/needleConverter/logic.ts +31 -0
- package/src/tool/needleConverter/seo.astro +15 -0
- package/src/tool/needleConverter/ui.ts +17 -0
- package/src/tool/sewingPatternScaler/bibliography.astro +14 -0
- package/src/tool/sewingPatternScaler/component.astro +550 -0
- package/src/tool/sewingPatternScaler/i18n/en.ts +196 -0
- package/src/tool/sewingPatternScaler/i18n/es.ts +231 -0
- package/src/tool/sewingPatternScaler/i18n/fr.ts +187 -0
- package/src/tool/sewingPatternScaler/index.ts +34 -0
- package/src/tool/sewingPatternScaler/logic.ts +35 -0
- package/src/tool/sewingPatternScaler/seo.astro +49 -0
- package/src/tool/sewingPatternScaler/ui.ts +29 -0
- package/src/tool/shoeSizeConverter/bibliography.astro +34 -0
- package/src/tool/shoeSizeConverter/component.astro +437 -0
- package/src/tool/shoeSizeConverter/i18n/en.ts +188 -0
- package/src/tool/shoeSizeConverter/i18n/es.ts +188 -0
- package/src/tool/shoeSizeConverter/i18n/fr.ts +188 -0
- package/src/tool/shoeSizeConverter/index.ts +34 -0
- package/src/tool/shoeSizeConverter/logic.ts +8 -0
- package/src/tool/shoeSizeConverter/seo.astro +40 -0
- package/src/tool/shoeSizeConverter/ui.ts +21 -0
- package/src/tool/stainChemistry/bibliography.astro +40 -0
- package/src/tool/stainChemistry/component.astro +717 -0
- package/src/tool/stainChemistry/i18n/en.ts +303 -0
- package/src/tool/stainChemistry/i18n/es.ts +300 -0
- package/src/tool/stainChemistry/i18n/fr.ts +310 -0
- package/src/tool/stainChemistry/index.ts +34 -0
- package/src/tool/stainChemistry/logic.ts +11 -0
- package/src/tool/stainChemistry/seo.astro +40 -0
- package/src/tool/stainChemistry/ui.ts +51 -0
- package/src/tool/yarnCalculator/bibliography.astro +19 -0
- package/src/tool/yarnCalculator/component.astro +792 -0
- package/src/tool/yarnCalculator/i18n/en.ts +310 -0
- package/src/tool/yarnCalculator/i18n/es.ts +310 -0
- package/src/tool/yarnCalculator/i18n/fr.ts +310 -0
- package/src/tool/yarnCalculator/index.ts +34 -0
- package/src/tool/yarnCalculator/logic.ts +84 -0
- package/src/tool/yarnCalculator/seo.astro +14 -0
- package/src/tool/yarnCalculator/ui.ts +42 -0
- package/src/tools.ts +16 -0
- package/src/types.ts +72 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { BurnTestUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'textile-burn-test';
|
|
6
|
+
const title = 'Textile Burn Test';
|
|
7
|
+
const description =
|
|
8
|
+
'Identify the real composition of any fabric by analyzing its burning behavior. Scientifically differentiate cotton, wool, silk and synthetics.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Is it safe to perform a burn test at home?',
|
|
13
|
+
answer:
|
|
14
|
+
'Yes, as long as you take extreme precautions: use metal tweezers, work on a fire-proof surface (ceramic or metal), keep water nearby and perform the test in a ventilated area. You only need a small 1x1 cm sample or a few threads.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'How does cotton smell when burned?',
|
|
18
|
+
answer:
|
|
19
|
+
'Cotton is pure cellulose. When burned, it smells exactly like burnt paper or dry leaves. The resulting ash is gray, very fine and crumbles when touched.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'What does a hard black bead at the end of the fiber indicate?',
|
|
23
|
+
answer:
|
|
24
|
+
'It is the unmistakable sign of a synthetic fiber (plastic), such as polyester or nylon. As it melts, the polymer agglomerates into a plastic bead that does not crumble, unlike the ash from natural fibers.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Why does wool smell bad when burned?',
|
|
28
|
+
answer:
|
|
29
|
+
'Wool and silk are animal proteins that contain sulfur. When exposed to fire, they emit a penetrating smell of burnt hair or burnt feathers. This is the easiest way to differentiate them from plant fibers.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Extract a representative sample',
|
|
36
|
+
text: 'Cut a small square from the fabric or, even better, pull a few threads from both the warp (vertical) and weft (horizontal).',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Observe the approach to the flame',
|
|
40
|
+
text: 'Slowly bring the fiber toward the flame without touching it. Observe whether it shrinks, melts or ignites immediately.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Analyze the type of flame and smoke',
|
|
44
|
+
text: 'Notice whether the flame is steady or self-extinguishes, and whether the smoke is white, black, or absent.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Evaluate the residue and smell',
|
|
48
|
+
text: 'Once cool, touch the resulting ash or bead and perceive the smell (paper, hair or chemical) to confirm the fiber family.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowTo> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
name: step.name,
|
|
70
|
+
text: step.text,
|
|
71
|
+
})),
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
75
|
+
'@context': 'https://schema.org',
|
|
76
|
+
'@type': 'SoftwareApplication',
|
|
77
|
+
name: title,
|
|
78
|
+
description,
|
|
79
|
+
applicationCategory: 'UtilityApplication',
|
|
80
|
+
operatingSystem: 'All',
|
|
81
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
82
|
+
inLanguage: 'en',
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const flame = {
|
|
86
|
+
cellulosic: 'Burns FAST and BRIGHT (yellow flame). Does not melt. Keeps burning when removed.',
|
|
87
|
+
protein: 'Burns SLOWLY, sputters and SHRINKS away from flame. Self-extinguishes when removed.',
|
|
88
|
+
synthetic: 'MELTS and contracts rapidly, drips like molten plastic. Sooty flame.',
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const odor = {
|
|
92
|
+
paper: 'Burnt paper, wood, dry leaves.',
|
|
93
|
+
hair: 'Burnt hair, burnt horn, feathers.',
|
|
94
|
+
chemical_sweet: 'AROMATIC chemical (sweet, fruity).',
|
|
95
|
+
chemical_fishy: 'SOUR chemical (fish, roasted meat).',
|
|
96
|
+
vegetable: 'Cooked vegetables (celery).',
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const residue = {
|
|
100
|
+
ash_soft: 'Fine GRAY/BLACK ash, soft and volatile (crumbles when touched).',
|
|
101
|
+
ash_shape: 'GRAY ash maintains fiber shape (friable).',
|
|
102
|
+
bead_crushable: 'Hollow/brittle black mass (easily crushed with fingers).',
|
|
103
|
+
bead_hard: 'HARD and glassy bead. Impossible to break with fingers.',
|
|
104
|
+
bead_irregular: 'HARD and irregular black mass.',
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const smoke = {
|
|
108
|
+
white_gray: 'White / Light gray.',
|
|
109
|
+
gray: 'Medium gray.',
|
|
110
|
+
black: 'Dense dark BLACK.',
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export const content: ToolLocaleContent<BurnTestUI> = {
|
|
114
|
+
slug,
|
|
115
|
+
title,
|
|
116
|
+
description,
|
|
117
|
+
faqTitle: 'Frequently Asked Questions',
|
|
118
|
+
faq: faqData,
|
|
119
|
+
bibliographyTitle: 'Bibliography',
|
|
120
|
+
bibliography: [
|
|
121
|
+
{
|
|
122
|
+
name: 'AATCC TM20: Fiber Analysis - Qualitative',
|
|
123
|
+
url: 'https://members.aatcc.org/store/tm20/485/',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'Textile Fibers: Identification and Testing - NIST',
|
|
127
|
+
url: 'https://nvlpubs.nist.gov/nistpubs/Legacy/circ/nbscircular41e3.pdf',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: 'Burn Test Chart for Fiber Identification - Fabric Mart',
|
|
131
|
+
url: 'https://fabricmartfabrics.com/pages/burn-test-chart',
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
howTo: howToData,
|
|
135
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
136
|
+
seo: [
|
|
137
|
+
{
|
|
138
|
+
type: 'title',
|
|
139
|
+
text: 'The Forensic Science of the Filament',
|
|
140
|
+
level: 2,
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'paragraph',
|
|
144
|
+
html: 'The burn test is the fastest and most precise analytical method to differentiate natural polymers from synthetic ones without resorting to an electron microscope. By subjecting a fiber to heat, its molecular behavior reveals its origin: from plant cellulose to animal proteins or petroleum derivatives.',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'card',
|
|
148
|
+
title: 'Cellulosic Fibers',
|
|
149
|
+
icon: 'mdi:leaf',
|
|
150
|
+
html: '<strong>Cotton</strong> and <strong>Linen</strong> burn quickly without melting. They smell like burnt paper because they come from wood or plants, leaving a volatile gray ash that scatters when blown.',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'card',
|
|
154
|
+
title: 'Protein Fibers',
|
|
155
|
+
icon: 'mdi:sheep',
|
|
156
|
+
html: '<strong>Wool</strong> and <strong>Silk</strong> pull away from the flame. Their characteristic smell of burnt hair indicates the presence of sulfur and keratin. The residue is a black bead that crushes when touched.',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'card',
|
|
160
|
+
title: 'Synthetic Fibers',
|
|
161
|
+
icon: 'mdi:bottle-soda-classic',
|
|
162
|
+
html: '<strong>Polyester</strong> and <strong>Nylon</strong> are essentially plastics. They melt forming a hot drop that hardens into a glassy bead impossible to break, with a sharp chemical smell.',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
type: 'title',
|
|
166
|
+
text: 'Chemical Evidence Matrix',
|
|
167
|
+
level: 2,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: 'paragraph',
|
|
171
|
+
html: 'A precise analysis requires crossing at least three pieces of evidence. Smell is the most reliable indicator for identifying blends: if a "linen" fabric gives off a slight plastic aroma and leaves hard residues, it indicates an undeclared polyester blend.',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'tip',
|
|
175
|
+
title: 'Laboratory Safety Protocol',
|
|
176
|
+
html: '<strong>Critical ventilation:</strong> Synthetic fibers release toxic gases when burning. Never perform this test in enclosed spaces.<br><strong>Immediate extinguishing:</strong> Always keep a container of water nearby. Some synthetic fibers can melt and adhere to skin.',
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
ui: {
|
|
180
|
+
investigationLabel: 'INVESTIGATION',
|
|
181
|
+
stepPrefix: 'STEP',
|
|
182
|
+
stepCompleted: 'ANALYSIS COMPLETE',
|
|
183
|
+
resetLabel: 'RESTART',
|
|
184
|
+
positiveId: 'POSITIVE IDENTIFICATION',
|
|
185
|
+
flameLabel: 'Flame Behavior',
|
|
186
|
+
odorLabel: 'Olfactory Trace',
|
|
187
|
+
residueLabel: 'Residue',
|
|
188
|
+
identifiedAs: 'Sample positively identified as',
|
|
189
|
+
safetyTitle: 'Safety Protocol',
|
|
190
|
+
safetyText:
|
|
191
|
+
'Perform this test in a ventilated area, on a fire-proof surface. Use metal tweezers and keep water nearby.',
|
|
192
|
+
questions: {
|
|
193
|
+
flame: 'Behavior in the flame?',
|
|
194
|
+
odor: 'Characteristic smell?',
|
|
195
|
+
residue: 'Final residue?',
|
|
196
|
+
smoke: 'Type of smoke?',
|
|
197
|
+
},
|
|
198
|
+
fiberData: {
|
|
199
|
+
cotton: { name: 'Cotton', icon: 'mdi:tshirt-crew', color: '#60A5FA', description: 'Natural vegetable fiber, soft and breathable. The king of basics.' },
|
|
200
|
+
linen: { name: 'Linen', icon: 'mdi:leaf', color: '#A7F3D0', description: 'Very strong vegetable fiber, cool and characteristically wrinkled.' },
|
|
201
|
+
wool: { name: 'Wool / Merino', icon: 'mdi:sheep', color: '#FCD34D', description: 'Animal protein fiber, excellent thermal insulator and elastic.' },
|
|
202
|
+
silk: { name: 'Silk', icon: 'mdi:ticket-percent', color: '#F472B6', description: 'Animal continuous filament fiber. Natural sheen and dry touch.' },
|
|
203
|
+
cashmere: { name: 'Cashmere', icon: 'mdi:crown', color: '#F59E0B', description: 'Luxury Kashmir goat fiber. Extremely soft, lightweight and warm.' },
|
|
204
|
+
mohair: { name: 'Mohair', icon: 'mdi:shimmer', color: '#14B8A6', description: 'The "diamond fiber" of the Angora goat. Natural sheen, very resistant.' },
|
|
205
|
+
angora: { name: 'Angora', icon: 'mdi:rabbit', color: '#F9FAFB', description: 'Angora rabbit hair. Known for its fluffy "halo" effect and extreme lightness.' },
|
|
206
|
+
alpaca: { name: 'Alpaca', icon: 'mdi:image-filter-hdr', color: '#9F7AEA', description: 'Treasure of the Andes. Hollow, thermal, hypoallergenic and silky fiber.' },
|
|
207
|
+
polyester: { name: 'Polyester', icon: 'mdi:oil', color: '#94A3B8', description: 'Synthetic petroleum-based fiber. Resistant, wrinkle-free, non-breathable.' },
|
|
208
|
+
nylon: { name: 'Nylon (Polyamide)', icon: 'mdi:parachute', color: '#2DD4BF', description: 'Highly resistant synthetic fiber for traction and abrasion.' },
|
|
209
|
+
acrylic: { name: 'Acrylic', icon: 'mdi:resize', color: '#450A0A', description: 'Synthetic wool imitation. Soft, warm, pills easily.' },
|
|
210
|
+
},
|
|
211
|
+
burnTestData: [
|
|
212
|
+
{ fiberId: 'cotton', flame: flame.cellulosic, odor: odor.paper, smoke: smoke.white_gray, residue: residue.ash_soft },
|
|
213
|
+
{ fiberId: 'linen', flame: flame.cellulosic, odor: odor.paper, smoke: smoke.white_gray, residue: residue.ash_shape },
|
|
214
|
+
{ fiberId: 'wool', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
215
|
+
{ fiberId: 'silk', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
216
|
+
{ fiberId: 'cashmere', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
217
|
+
{ fiberId: 'mohair', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
218
|
+
{ fiberId: 'angora', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
219
|
+
{ fiberId: 'alpaca', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
220
|
+
{ fiberId: 'polyester', flame: flame.synthetic, odor: odor.chemical_sweet, smoke: smoke.black, residue: residue.bead_hard },
|
|
221
|
+
{ fiberId: 'nylon', flame: flame.synthetic, odor: odor.vegetable, smoke: smoke.white_gray, residue: residue.bead_hard },
|
|
222
|
+
{ fiberId: 'acrylic', flame: flame.synthetic, odor: odor.chemical_fishy, smoke: smoke.black, residue: residue.bead_irregular },
|
|
223
|
+
],
|
|
224
|
+
},
|
|
225
|
+
};
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { BurnTestUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'identificador-fibras-combustion';
|
|
6
|
+
const title = 'Prueba de Combustión Textil';
|
|
7
|
+
const description =
|
|
8
|
+
'Identifica la composición real de cualquier tela mediante el análisis de su quemado. Diferencia algodón, lana, seda y sintéticos con rigor científico.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: '¿Es seguro realizar una prueba de combustión en casa?',
|
|
13
|
+
answer:
|
|
14
|
+
'Sí, siempre que tomes precauciones extremas: usa pinzas metálicas, trabaja sobre una superficie ignífuga (cerámica o metal), ten agua cerca y realiza la prueba en un lugar ventilado. Solo necesitas una pequeña muestra de 1x1 cm o unos hilos.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: '¿Cómo huele el algodón al quemarse?',
|
|
18
|
+
answer:
|
|
19
|
+
'El algodón es celulosa pura. Al quemarse, huele exactamente como el papel quemado o las hojas secas. La ceniza resultante es gris, muy fina y se deshace al tacto.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: '¿Qué indica una bola negra y dura al final de la fibra?',
|
|
23
|
+
answer:
|
|
24
|
+
'Es el signo inequívoco de una fibra sintética (plástico), como el poliéster o el nylon. Al fundirse, el polímero se aglutina en una perla plástica que no se desmenuza, a diferencia de las cenizas de las fibras naturales.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: '¿Por qué la lana huele mal al quemarse?',
|
|
28
|
+
answer:
|
|
29
|
+
'La lana y la seda son proteínas animales que contienen azufre. Al entrar en contacto con el fuego, emiten un olor penetrante a pelo quemado o plumas quemadas. Es la forma más fácil de diferenciarlas de las fibras vegetales.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Extraer una muestra representativa',
|
|
36
|
+
text: 'Corta un pequeño cuadrado del tejido o, mejor aún, extrae unos hilos tanto de la urdimbre (vertical) como de la trama (horizontal).',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Observar la aproximación a la llama',
|
|
40
|
+
text: 'Acerca la fibra lentamente al fuego sin tocarlo. Observa si se encoge, se funde o si prende fuego inmediatamente.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Analizar el tipo de llama y humo',
|
|
44
|
+
text: 'Fíjate si la llama es constante o se apaga sola, y si el humo es blanco, negro o inexistente.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Evaluar el residuo y el olor',
|
|
48
|
+
text: 'Una vez fría, toca la ceniza o perla resultante y percibe el olor (papel, pelo o químico) para confirmar la familia de la fibra.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowTo> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
name: step.name,
|
|
70
|
+
text: step.text,
|
|
71
|
+
})),
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
75
|
+
'@context': 'https://schema.org',
|
|
76
|
+
'@type': 'SoftwareApplication',
|
|
77
|
+
name: title,
|
|
78
|
+
description,
|
|
79
|
+
applicationCategory: 'UtilityApplication',
|
|
80
|
+
operatingSystem: 'All',
|
|
81
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
82
|
+
inLanguage: 'es',
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const flame = {
|
|
86
|
+
cellulosic: 'Arde RÁPIDO y con BRILLO (Llama amarilla). No se funde. Sigue ardiendo al retirar.',
|
|
87
|
+
protein: 'Arde LENTAMENTE, chisporrotea y se ENCOGE alejándose de la llama. Se autoextingue al retirar.',
|
|
88
|
+
synthetic: 'Se FUNDE y contrae rápidamente, gotea como plástico derretido. Llama humeante.',
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const odor = {
|
|
92
|
+
paper: 'Papel quemado, madera, hojas secas.',
|
|
93
|
+
hair: 'Pelo quemado, cuerno quemado, plumas.',
|
|
94
|
+
chemical_sweet: 'Químico AROMÁTICO (dulce, afrutado).',
|
|
95
|
+
chemical_fishy: 'Químico AGRIO (pescado, carne asada).',
|
|
96
|
+
vegetable: 'Vegetales cocidos (apio).',
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const residue = {
|
|
100
|
+
ash_soft: 'Ceniza GRIS/NEGRA fina, suave y volátil (se deshace al tocar).',
|
|
101
|
+
ash_shape: 'Ceniza GRIS mantiene forma de la fibra (friable).',
|
|
102
|
+
bead_crushable: 'Masa negra hueca/quebradiza (se pulveriza fácilmente con los dedos).',
|
|
103
|
+
bead_hard: 'Bola DURA y vítrea. Imposible de romper con los dedos.',
|
|
104
|
+
bead_irregular: 'Masa negra DURA e irregular.',
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const smoke = {
|
|
108
|
+
white_gray: 'Blanco / Gris claro.',
|
|
109
|
+
gray: 'Gris medio.',
|
|
110
|
+
black: 'Negro DENSO y oscuro.',
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export const content: ToolLocaleContent<BurnTestUI> = {
|
|
114
|
+
slug,
|
|
115
|
+
title,
|
|
116
|
+
description,
|
|
117
|
+
faqTitle: 'Preguntas Frecuentes',
|
|
118
|
+
faq: faqData,
|
|
119
|
+
bibliographyTitle: 'Bibliografía',
|
|
120
|
+
bibliography: [
|
|
121
|
+
{
|
|
122
|
+
name: 'AATCC TM20: Fiber Analysis - Qualitative',
|
|
123
|
+
url: 'https://members.aatcc.org/store/tm20/485/',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'Textile Fibers: Identification and Testing - NIST',
|
|
127
|
+
url: 'https://nvlpubs.nist.gov/nistpubs/Legacy/circ/nbscircular41e3.pdf',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: 'Burn Test Chart for Fiber Identification - Fabric Mart',
|
|
131
|
+
url: 'https://fabricmartfabrics.com/pages/burn-test-chart',
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
howTo: howToData,
|
|
135
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
136
|
+
seo: [
|
|
137
|
+
{
|
|
138
|
+
type: 'title',
|
|
139
|
+
text: 'La Ciencia Forense del Filamento',
|
|
140
|
+
level: 2,
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'paragraph',
|
|
144
|
+
html: 'La prueba de combustión es el método analítico más rápido y preciso para diferenciar polímeros naturales de sintéticos sin recurrir a microscopio electrónico. Al someter una fibra al calor, su comportamiento molecular revela su origen: desde la celulosa vegetal hasta las proteínas animales o los derivados del petróleo.',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'card',
|
|
148
|
+
title: 'Fibras Celulósicas',
|
|
149
|
+
icon: 'mdi:leaf',
|
|
150
|
+
html: 'El <strong>Algodón</strong> y el <strong>Lino</strong> arden rápidamente sin fundirse. Huelen a papel quemado porque proceden de la madera o plantas, dejando una ceniza gris volátil que se esparce al soplar.',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'card',
|
|
154
|
+
title: 'Fibras Proteicas',
|
|
155
|
+
icon: 'mdi:sheep',
|
|
156
|
+
html: 'La <strong>Lana</strong> y la <strong>Seda</strong> se alejan de la llama. Su olor característico a pelo quemado indica la presencia de azufre y queratina. El residuo es una cuenta negra que se pulveriza al tocarla.',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'card',
|
|
160
|
+
title: 'Fibras Sintéticas',
|
|
161
|
+
icon: 'mdi:bottle-soda-classic',
|
|
162
|
+
html: 'El <strong>Poliéster</strong> y el <strong>Nailon</strong> son esencialmente plásticos. Se funden formando una gota caliente que se endurece en una bola vítrea imposible de romper, con un olor químico punzante.',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
type: 'title',
|
|
166
|
+
text: 'Matriz de Evidencia Química',
|
|
167
|
+
level: 2,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: 'paragraph',
|
|
171
|
+
html: 'Un análisis preciso requiere cruzar al menos tres evidencias. El olor es el indicador más fiable para identificar mezclas: si una tela de "lino" desprende un leve aroma plástico y deja residuos duros, indica una mezcla con poliéster no declarada.',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'tip',
|
|
175
|
+
title: 'Protocolo de Seguridad de Laboratorio',
|
|
176
|
+
html: '<strong>Ventilación crítica:</strong> Las fibras sintéticas liberan gases tóxicos al arder. Nunca realices esta prueba en espacios cerrados.<br><strong>Extinción inmediata:</strong> Ten siempre un recipiente con agua al lado. Algunas fibras sintéticas pueden fundirse y adherirse a la piel.',
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
ui: {
|
|
180
|
+
investigationLabel: 'INVESTIGACIÓN',
|
|
181
|
+
stepPrefix: 'PASO',
|
|
182
|
+
stepCompleted: 'ANÁLISIS COMPLETADO',
|
|
183
|
+
resetLabel: 'REINICIAR',
|
|
184
|
+
positiveId: 'IDENTIFICACIÓN POSITIVA',
|
|
185
|
+
flameLabel: 'Comportamiento Llama',
|
|
186
|
+
odorLabel: 'Rastro Olfativo',
|
|
187
|
+
residueLabel: 'Residuo',
|
|
188
|
+
identifiedAs: 'Muestra identificada positivamente como',
|
|
189
|
+
safetyTitle: 'Protocolo de Seguridad',
|
|
190
|
+
safetyText:
|
|
191
|
+
'Realiza esta prueba en un lugar ventilado, sobre una superficie ignífuga. Usa pinzas metálicas y mantén agua cerca.',
|
|
192
|
+
questions: {
|
|
193
|
+
flame: '¿Comportamiento ante la llama?',
|
|
194
|
+
odor: '¿Olor característico?',
|
|
195
|
+
residue: '¿Residuo final?',
|
|
196
|
+
smoke: '¿Tipo de humo?',
|
|
197
|
+
},
|
|
198
|
+
fiberData: {
|
|
199
|
+
cotton: { name: 'Algodón', icon: 'mdi:tshirt-crew', color: '#60A5FA', description: 'Fibra vegetal natural, suave y transpirable. El rey de los básicos.' },
|
|
200
|
+
linen: { name: 'Lino', icon: 'mdi:leaf', color: '#A7F3D0', description: 'Fibra vegetal muy fuerte, fresca y con arruga característica.' },
|
|
201
|
+
wool: { name: 'Lana / Merino', icon: 'mdi:sheep', color: '#FCD34D', description: 'Fibra animal proteica, aislante térmico excelente y elástica.' },
|
|
202
|
+
silk: { name: 'Seda', icon: 'mdi:ticket-percent', color: '#F472B6', description: 'Fibra animal de filamento continuo. Brillo natural y tacto seco.' },
|
|
203
|
+
cashmere: { name: 'Cashmere', icon: 'mdi:crown', color: '#F59E0B', description: 'Fibra de lujo de cabra de Cachemira. Extremadamente suave y ligera.' },
|
|
204
|
+
mohair: { name: 'Mohair', icon: 'mdi:shimmer', color: '#14B8A6', description: 'La "fibra de diamante" de la cabra de Angora. Brillo natural y elástica.' },
|
|
205
|
+
angora: { name: 'Angora', icon: 'mdi:rabbit', color: '#F9FAFB', description: 'Pelo del conejo de Angora. Efecto "halo" esponjoso y ligereza extrema.' },
|
|
206
|
+
alpaca: { name: 'Alpaca', icon: 'mdi:image-filter-hdr', color: '#9F7AEA', description: 'Tesoro de los Andes. Fibra hueca, térmica, hipoalergénica y sedosa.' },
|
|
207
|
+
polyester: { name: 'Poliéster', icon: 'mdi:oil', color: '#94A3B8', description: 'Fibra sintética de petróleo. Resistente, no arruga, no respira.' },
|
|
208
|
+
nylon: { name: 'Nailon (Poliamida)', icon: 'mdi:parachute', color: '#2DD4BF', description: 'Sintética muy resistente a tracción y abrasión.' },
|
|
209
|
+
acrylic: { name: 'Acrílico', icon: 'mdi:resize', color: '#450A0A', description: 'Sintético imitación lana. Suave, caliente, hace bolas.' },
|
|
210
|
+
},
|
|
211
|
+
burnTestData: [
|
|
212
|
+
{ fiberId: 'cotton', flame: flame.cellulosic, odor: odor.paper, smoke: smoke.white_gray, residue: residue.ash_soft },
|
|
213
|
+
{ fiberId: 'linen', flame: flame.cellulosic, odor: odor.paper, smoke: smoke.white_gray, residue: residue.ash_shape },
|
|
214
|
+
{ fiberId: 'wool', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
215
|
+
{ fiberId: 'silk', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
216
|
+
{ fiberId: 'cashmere', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
217
|
+
{ fiberId: 'mohair', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
218
|
+
{ fiberId: 'angora', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
219
|
+
{ fiberId: 'alpaca', flame: flame.protein, odor: odor.hair, smoke: smoke.gray, residue: residue.bead_crushable },
|
|
220
|
+
{ fiberId: 'polyester', flame: flame.synthetic, odor: odor.chemical_sweet, smoke: smoke.black, residue: residue.bead_hard },
|
|
221
|
+
{ fiberId: 'nylon', flame: flame.synthetic, odor: odor.vegetable, smoke: smoke.white_gray, residue: residue.bead_hard },
|
|
222
|
+
{ fiberId: 'acrylic', flame: flame.synthetic, odor: odor.chemical_fishy, smoke: smoke.black, residue: residue.bead_irregular },
|
|
223
|
+
],
|
|
224
|
+
},
|
|
225
|
+
};
|