@jjlmoya/utils-home 1.30.0 → 1.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -1
  3. package/src/index.ts +1 -0
  4. package/src/tests/locale_completeness.test.ts +2 -2
  5. package/src/tests/tool_validation.test.ts +2 -2
  6. package/src/tool/tileLayoutCalculator/bibliography.astro +14 -0
  7. package/src/tool/tileLayoutCalculator/bibliography.ts +10 -0
  8. package/src/tool/tileLayoutCalculator/component.astro +415 -0
  9. package/src/tool/tileLayoutCalculator/entry.ts +29 -0
  10. package/src/tool/tileLayoutCalculator/i18n/de.ts +208 -0
  11. package/src/tool/tileLayoutCalculator/i18n/en.ts +208 -0
  12. package/src/tool/tileLayoutCalculator/i18n/es.ts +208 -0
  13. package/src/tool/tileLayoutCalculator/i18n/fr.ts +208 -0
  14. package/src/tool/tileLayoutCalculator/i18n/id.ts +208 -0
  15. package/src/tool/tileLayoutCalculator/i18n/it.ts +208 -0
  16. package/src/tool/tileLayoutCalculator/i18n/ja.ts +208 -0
  17. package/src/tool/tileLayoutCalculator/i18n/ko.ts +208 -0
  18. package/src/tool/tileLayoutCalculator/i18n/nl.ts +208 -0
  19. package/src/tool/tileLayoutCalculator/i18n/pl.ts +208 -0
  20. package/src/tool/tileLayoutCalculator/i18n/pt.ts +208 -0
  21. package/src/tool/tileLayoutCalculator/i18n/ru.ts +208 -0
  22. package/src/tool/tileLayoutCalculator/i18n/sv.ts +208 -0
  23. package/src/tool/tileLayoutCalculator/i18n/tr.ts +208 -0
  24. package/src/tool/tileLayoutCalculator/i18n/zh.ts +208 -0
  25. package/src/tool/tileLayoutCalculator/index.ts +9 -0
  26. package/src/tool/tileLayoutCalculator/logic.ts +55 -0
  27. package/src/tool/tileLayoutCalculator/seo.astro +15 -0
  28. package/src/tool/tileLayoutCalculator/tile-layout-calculator.css +404 -0
  29. package/src/tool/tileLayoutCalculator/ui.ts +37 -0
  30. package/src/tools.ts +2 -0
@@ -0,0 +1,208 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TileLayoutCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'tile-layout-calculator';
7
+ const title = 'タイルレイアウトとロス計算機';
8
+ const description =
9
+ '部屋の床を精密にプランニング。タイルの正確な枚数、必要箱数、総費用を計算し、インタラクティブなグリッドプレビューでレイアウトをリアルタイムに可視化できます。';
10
+
11
+ const faqData = [
12
+ {
13
+ question: '部屋に必要なタイルの枚数はどう計算しますか?',
14
+ answer:
15
+ '部屋の幅と奥行きを測り、タイルサイズと目地幅を選んで入力してください。計算機は、部屋の寸法をタイル+目地のサイズで割り、1列・1行あたりの必要枚数を正確に算出します。',
16
+ },
17
+ {
18
+ question: 'タイル購入時のロス率はどの程度見込めばよいですか?',
19
+ answer:
20
+ '標準的な矩形の部屋では10%のロスを見込んでください。角が多い部屋、斜め貼り、複雑なカットが必要な場合は15%に増やすと、割れやカットミスに対応できます。',
21
+ },
22
+ {
23
+ question: '目地幅は本当にタイル枚数に影響しますか?',
24
+ answer:
25
+ 'はい。目地が広いほど、各タイルの有効な被覆面積が減るため、総枚数がわずかに増えます。計算機は各行・各列でこれを自動的に考慮しています。',
26
+ },
27
+ {
28
+ question: 'ロス率の上に追加で箱を買うべきですか?',
29
+ answer:
30
+ '可能であれば1箱多めに購入するのが賢明です。生産ロットによって色味が異なる場合があり、同じロットの予備タイルがあれば将来の補修がスムーズに行えます。',
31
+ },
32
+ {
33
+ question: '変形した部屋にタイルを貼るにはどうすればよいですか?',
34
+ answer:
35
+ '部屋を小さな矩形に分割して、それぞれを個別に計算して合計してください。部分箱は常に切り上げて、完全な被覆を確保してください。',
36
+ },
37
+ {
38
+ question: '陶器タイルと磁器タイルのロス率の違いは何ですか?',
39
+ answer:
40
+ '磁器タイルは密度が高くカットが難しいため、標準的な陶器タイルに比べてカットロスが2〜3%増えることがあります。いずれの素材も同じ測定手順に従ってください。',
41
+ },
42
+ {
43
+ question: '余ったタイルの箱は返品できますか?',
44
+ answer:
45
+ 'ほとんどの小売店は未開封の箱を30日以内に返品を受け付けます。必ずレシートを保管し、施工が完全に終了するまで余分の箱は開封しないでください。',
46
+ },
47
+ ];
48
+
49
+ const howToData = [
50
+ {
51
+ name: '部屋を測定する',
52
+ text: 'お好みの単位系で床の幅と奥行きを記録します。',
53
+ },
54
+ {
55
+ name: 'タイルと目地を選ぶ',
56
+ text: 'タイルの寸法と希望の目地幅を選びます。',
57
+ },
58
+ {
59
+ name: '計算して可視化する',
60
+ text: '数値を計算機に入力し、ロス率を調整して、リアルタイムのレイアウトプレビューを確認します。',
61
+ },
62
+ ];
63
+
64
+ const faqSchema: WithContext<FAQPage> = {
65
+ '@context': 'https://schema.org',
66
+ '@type': 'FAQPage',
67
+ mainEntity: faqData.map((item) => ({
68
+ '@type': 'Question',
69
+ name: item.question,
70
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
71
+ })),
72
+ };
73
+
74
+ const howToSchema: WithContext<HowTo> = {
75
+ '@context': 'https://schema.org',
76
+ '@type': 'HowTo',
77
+ name: title,
78
+ description,
79
+ step: howToData.map((step) => ({
80
+ '@type': 'HowToStep',
81
+ name: step.name,
82
+ text: step.text,
83
+ })),
84
+ };
85
+
86
+ const appSchema: WithContext<SoftwareApplication> = {
87
+ '@context': 'https://schema.org',
88
+ '@type': 'SoftwareApplication',
89
+ name: title,
90
+ description,
91
+ applicationCategory: 'UtilityApplication',
92
+ operatingSystem: 'All',
93
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'JPY' },
94
+ inLanguage: 'ja',
95
+ };
96
+
97
+ export const content: ToolLocaleContent<TileLayoutCalculatorUI> = {
98
+ slug,
99
+ title,
100
+ description,
101
+ faq: faqData,
102
+ bibliography,
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ {
107
+ type: 'title',
108
+ text: '床タイルのプランニングとロスコントロールの完全ガイド',
109
+ level: 2,
110
+ },
111
+ {
112
+ type: 'paragraph',
113
+ html: 'タイル貼りの成功は、最初の接着剤を塗る前から始まっています。正確な測定、賢いレイアウト計画、そして正確なロス見積もりが、リフォームが予算と工期の範囲内に収まるかどうかを決定します。<strong>当社のインタラクティブなタイルレイアウト計算機</strong>は、生の寸法を視覚的なフロアプランに変換し、1列に何枚入るか、何箱買えばよいか、そしてお金がどこに使われるかを正確に示します。',
114
+ },
115
+ {
116
+ type: 'stats',
117
+ items: [
118
+ { value: '10-15%', label: '標準ロス', icon: 'mdi:alert-circle' },
119
+ { value: '30年以上', label: 'タイル寿命', icon: 'mdi:clock-outline' },
120
+ { value: '48時間', label: '平均施工', icon: 'mdi:calendar-check' },
121
+ ],
122
+ columns: 3,
123
+ },
124
+ {
125
+ type: 'comparative',
126
+ items: [
127
+ {
128
+ title: '大判タイル',
129
+ description: '60cmを超えるタイルはシームレスでモダンな見た目を作りますが、完全に平らな下地が必要で、小さな部屋ではカットロスが増えます。',
130
+ icon: 'mdi:arrow-expand',
131
+ points: ['目地が少ない', 'プレミアムな視覚効果', '狭い空間ではカットロス増大'],
132
+ },
133
+ {
134
+ title: '小さなモザイクタイル',
135
+ description: '浴室や繊細な柄に最適。不規則な形に対応しますが、目地と施工時間が増えます。',
136
+ icon: 'mdi:apps',
137
+ points: ['障害物周りで柔軟', '目地が多い', '施工時間が長い'],
138
+ },
139
+ ],
140
+ columns: 2,
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: 'レイアウトの可視化が重要な理由',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: '購入前にタイルのグリッドを見ることで、高額な予想外を防げます。ライブプレビューは、選んだタイルサイズが端に不格好な細い帯を残すのか、それともバランスの取れた対称的な床を作るのかを明らかにします。計算機内で目地幅とタイルの方向を調整することで、注文前に美観と効率の両面でレイアウトを最適化できます。',
150
+ },
151
+ {
152
+ type: 'diagnostic',
153
+ variant: 'info',
154
+ title: 'カバレッジ早見表',
155
+ icon: 'mdi:table',
156
+ badge: '参考',
157
+ html: '<ul style="margin:0;padding-left:1.2em"><li><strong>30 x 30 cm</strong> → 1m²あたり11枚</li><li><strong>45 x 45 cm</strong> → 1m²あたり5枚</li><li><strong>60 x 60 cm</strong> → 1m²あたり3枚</li><li><strong>60 x 120 cm</strong> → 1m²あたり1.5枚</li></ul>',
158
+ },
159
+ {
160
+ type: 'summary',
161
+ title: 'ロスを最小化するプロのコツ',
162
+ items: [
163
+ '直線貼りは10%多め、斜め貼りやヘリンボーンは15%多めを注文しましょう。',
164
+ '色の統一を保つため、すべての箱は同じ生産ロットのものを保管してください。',
165
+ '行の計画前に、部屋の対角線を測って直角を確認してください。',
166
+ '大判タイルは、部屋の幅がタイルの長さより大きい場合にのみ使用し、過剰なカットを避けましょう。',
167
+ '箱数は常に切り上げましょう。二度目の配送より安上がりです。',
168
+ ],
169
+ },
170
+ ],
171
+ ui: {
172
+ sectionTitle: '部屋の設定',
173
+ labelRoomWidth: '部屋の幅',
174
+ labelRoomLength: '部屋の奥行き',
175
+ labelTileWidth: 'タイルの幅',
176
+ labelTileLength: 'タイルの長さ',
177
+ labelGrout: '目地幅',
178
+ labelWaste: 'ロス率',
179
+ labelTilesPerBox: '1箱あたりの枚数',
180
+ labelPrice: '1箱の価格',
181
+ labelPattern: '貼り方',
182
+ unitMetricRoom: 'm',
183
+ unitImperialRoom: 'ft',
184
+ unitMetricTile: 'cm',
185
+ unitImperialTile: 'in',
186
+ unitGroutMetric: 'mm',
187
+ unitGroutImperial: 'in',
188
+ unitPercent: '%',
189
+ unitBoxes: '枚',
190
+ unitPrice: '/箱',
191
+ resultBadge: 'ライブプレビュー',
192
+ labelArea: '床面積',
193
+ labelTiles: '総タイル数',
194
+ labelBoxes: '必要箱数',
195
+ labelCost: '総費用',
196
+ labelWasteCount: 'ロス枚数',
197
+ labelCuts: '部分カット',
198
+ currency: 'JPY',
199
+ btnMetric: 'メートル法',
200
+ btnImperial: 'ヤードポンド法',
201
+ btnPatternStraight: '直線',
202
+ btnPatternBrick: 'ずらし貼り',
203
+ btnPatternDiagonal: '斜め',
204
+ badgeOptimal: '最適レイアウト',
205
+ badgeWarning: 'ロス過多警告',
206
+ visualTitle: 'レイアウトプレビュー',
207
+ },
208
+ };
@@ -0,0 +1,208 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TileLayoutCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'tile-layout-calculator';
7
+ const title = '타일 배치 및 손실 계산기';
8
+ const description =
9
+ '방 바닥을 정밀하게 계획하세요. 타일의 정확한 수량, 필요한 박스 수, 총 비용을 계산하고 인터랙티브 그리드 미리보기로 실시간 레이아웃을 시각화합니다.';
10
+
11
+ const faqData = [
12
+ {
13
+ question: '방에 필요한 타일 수량을 어떻게 계산하나요?',
14
+ answer:
15
+ '방의 너비와 길이를 측정하고, 타일 크기를 선택한 뒤 줄루 폭을 입력하세요. 계산기는 방 크기를 타일 크기에 줄루를 더한 값으로 나누어, 행과 열당 필요한 타일의 정확한 수를 계산합니다.',
16
+ },
17
+ {
18
+ question: '타일 구매 시 몇 퍼센트의 손실을 추가해야 하나요?',
19
+ answer:
20
+ '표준 직사각형 방은 10% 손실을 추가하세요. 모서리가 많거나 대각선 배치, 복잡한 커팅이 필요한 방은 15%로 늘리세요. 이는 파손과 절단 실수를 커버합니다.',
21
+ },
22
+ {
23
+ question: '줄루 두께가 타일 수량에 영향을 주나요?',
24
+ answer:
25
+ '네. 줄루가 넓을수록 각 타일의 실제 커버 면적이 줄어들어 필요한 총 수량이 약간 늘어납니다. 계산기는 이를 각 행과 열에 자동으로 반영합니다.',
26
+ },
27
+ {
28
+ question: '손실률 외에 추가 박스를 구매해야 하나요?',
29
+ answer:
30
+ '가능하다면 한 박스를 여분으로 구매하는 것이 현명합니다. 생산 배치에 따라 색조가 다를 수 있으며, 동일한 여분 타일이 있으면 향후 보수가 원활합니다.',
31
+ },
32
+ {
33
+ question: '비정형 방에 타일을 시공하려면 어떻게 해야 하나요?',
34
+ answer:
35
+ '방을 작은 직사각형으로 나눈 뒤 각 구역을 따로 계산하고 합산하세요. 부분 박스는 항상 올림하여 완전한 커버를 보장하세요.',
36
+ },
37
+ {
38
+ question: '세라믹과 포세린 타일의 손실 차이는 무엇인가요?',
39
+ answer:
40
+ '포세린은 더 단단하고 자르기 어려워, 일반 세라믹에 비해 절단 손실이 2~3% 더 발생할 수 있습니다. 두 재료 모두 동일한 측정 과정을 따릅니다.',
41
+ },
42
+ {
43
+ question: '사용하지 않은 타일 박스는 반품할 수 있나요?',
44
+ answer:
45
+ '대부분의 판매점은 개봉하지 않은 박스를 30일 이내에 반품을 받습니다. 영수증을 반드시 보관하고, 시공이 완전히 끝날 때까지 여분 박스는 개봉하지 마세요.',
46
+ },
47
+ ];
48
+
49
+ const howToData = [
50
+ {
51
+ name: '방을 측정하세요',
52
+ text: '선호하는 단위계로 바닥의 너비와 길이를 기록하세요.',
53
+ },
54
+ {
55
+ name: '타일과 줄루를 선택하세요',
56
+ text: '타일 크기와 원하는 줄루 폭을 선택하세요.',
57
+ },
58
+ {
59
+ name: '계산하고 시각화하세요',
60
+ text: '값을 계산기에 입력하고, 손실률을 조정한 뒤 실시간 레이아웃 미리보기를 확인하세요.',
61
+ },
62
+ ];
63
+
64
+ const faqSchema: WithContext<FAQPage> = {
65
+ '@context': 'https://schema.org',
66
+ '@type': 'FAQPage',
67
+ mainEntity: faqData.map((item) => ({
68
+ '@type': 'Question',
69
+ name: item.question,
70
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
71
+ })),
72
+ };
73
+
74
+ const howToSchema: WithContext<HowTo> = {
75
+ '@context': 'https://schema.org',
76
+ '@type': 'HowTo',
77
+ name: title,
78
+ description,
79
+ step: howToData.map((step) => ({
80
+ '@type': 'HowToStep',
81
+ name: step.name,
82
+ text: step.text,
83
+ })),
84
+ };
85
+
86
+ const appSchema: WithContext<SoftwareApplication> = {
87
+ '@context': 'https://schema.org',
88
+ '@type': 'SoftwareApplication',
89
+ name: title,
90
+ description,
91
+ applicationCategory: 'UtilityApplication',
92
+ operatingSystem: 'All',
93
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'KRW' },
94
+ inLanguage: 'ko',
95
+ };
96
+
97
+ export const content: ToolLocaleContent<TileLayoutCalculatorUI> = {
98
+ slug,
99
+ title,
100
+ description,
101
+ faq: faqData,
102
+ bibliography,
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ {
107
+ type: 'title',
108
+ text: '바닥 타일 계획 및 손실 제어의 완벽한 가이드',
109
+ level: 2,
110
+ },
111
+ {
112
+ type: 'paragraph',
113
+ html: '성공적인 타일 시공은 첫 번째 접착제를 바르기 전부터 시작됩니다. 정밀한 측정, 지능적인 배치 계획, 그리고 정확한 손실 예측이 리모델링이 예산과 일정 내에 완료될지를 결정합니다. <strong>우리의 인터랙티브 타일 배치 계산기</strong>는 원시 치수를 시각적인 평면도로 변환하여, 한 행에 몇 장이 들어가는지, 몇 박스를 사야 하는지, 비용이 어디로 가는지 정확히 보여줍니다.',
114
+ },
115
+ {
116
+ type: 'stats',
117
+ items: [
118
+ { value: '10-15%', label: '표준 손실', icon: 'mdi:alert-circle' },
119
+ { value: '30년 이상', label: '타일 수명', icon: 'mdi:clock-outline' },
120
+ { value: '48시간', label: '평균 시공', icon: 'mdi:calendar-check' },
121
+ ],
122
+ columns: 3,
123
+ },
124
+ {
125
+ type: 'comparative',
126
+ items: [
127
+ {
128
+ title: '대형 포맷 타일',
129
+ description: '60cm를 초과하는 타일은 매끄럽고 현대적인 느낌을 주지만, 완벽하게 평평한 기반이 필요하며 작은 방에서는 절단 손실이 더 큽니다.',
130
+ icon: 'mdi:arrow-expand',
131
+ points: ['줄루가 적음', '프리미엄 시각 효과', '좁은 공간에서 절단 손실 증가'],
132
+ },
133
+ {
134
+ title: '소형 모자이크 타일',
135
+ description: '욕실과 복잡한 패턴에 이상적입니다. 비정형 형태에 적응하지만 더 많은 줄루와 시공 시간이 필요합니다.',
136
+ icon: 'mdi:apps',
137
+ points: ['장애물 주변 유연성', '줄루가 더 많이 필요', '시공 시간이 더 긺'],
138
+ },
139
+ ],
140
+ columns: 2,
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: '레이아웃 시각화가 중요한 이유',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: '구매 전 타일 그리드를 보면 비용이 큰 낭패를 피할 수 있습니다. 라이브 미리보기는 선택한 타일 크기가 가장자리에 어색한 좁은 띠를 남기는지, 아니면 균형 잡히고 대칭적인 바닥을 만드는지 보여줍니다. 계산기에서 줄루 폭과 타일 방향을 조정하여, 주문 전에 미관과 효율성 모두에 최적화된 배치를 만들 수 있습니다.',
150
+ },
151
+ {
152
+ type: 'diagnostic',
153
+ variant: 'info',
154
+ title: '빠른 커버리지 참조표',
155
+ icon: 'mdi:table',
156
+ badge: '참조',
157
+ html: '<ul style="margin:0;padding-left:1.2em"><li><strong>30 x 30 cm</strong> → 1㎡당 11장</li><li><strong>45 x 45 cm</strong> → 1㎡당 5장</li><li><strong>60 x 60 cm</strong> → 1㎡당 3장</li><li><strong>60 x 120 cm</strong> → 1㎡당 1.5장</li></ul>',
158
+ },
159
+ {
160
+ type: 'summary',
161
+ title: '손실을 최소화하는 전문가 팁',
162
+ items: [
163
+ '직선 배치는 10% 추가, 대각선이나 헤링본은 15% 추가로 주문하세요.',
164
+ '색상 일관성을 위해 모든 박스는 동일 생산 배치를 보관하세요.',
165
+ '행을 계획하기 전에 방의 대각선을 측정하여 직각을 확인하세요.',
166
+ '대형 포맷 타일은 방 너비가 타일 길이보다 큰 경우에만 사용하여 과도한 절단을 피하세요.',
167
+ '박스 수량은 항상 올림하세요. 두 번째 배송보다 저렴합니다.',
168
+ ],
169
+ },
170
+ ],
171
+ ui: {
172
+ sectionTitle: '방 설정',
173
+ labelRoomWidth: '방 너비',
174
+ labelRoomLength: '방 길이',
175
+ labelTileWidth: '타일 너비',
176
+ labelTileLength: '타일 길이',
177
+ labelGrout: '줄루 폭',
178
+ labelWaste: '손실률',
179
+ labelTilesPerBox: '박스당 타일 수',
180
+ labelPrice: '박스당 가격',
181
+ labelPattern: '배치 패턴',
182
+ unitMetricRoom: 'm',
183
+ unitImperialRoom: 'ft',
184
+ unitMetricTile: 'cm',
185
+ unitImperialTile: 'in',
186
+ unitGroutMetric: 'mm',
187
+ unitGroutImperial: 'in',
188
+ unitPercent: '%',
189
+ unitBoxes: '장',
190
+ unitPrice: '/박스',
191
+ resultBadge: '실시간 레이아웃 미리보기',
192
+ labelArea: '바닥 면적',
193
+ labelTiles: '총 타일 수',
194
+ labelBoxes: '필요한 박스',
195
+ labelCost: '총 비용',
196
+ labelWasteCount: '손실 타일',
197
+ labelCuts: '부분 절단',
198
+ currency: 'KRW',
199
+ btnMetric: '미터법',
200
+ btnImperial: '야드파운드법',
201
+ btnPatternStraight: '직선',
202
+ btnPatternBrick: '벽돌 시공',
203
+ btnPatternDiagonal: '대각선',
204
+ badgeOptimal: '최적 레이아웃',
205
+ badgeWarning: '손실 과다 경고',
206
+ visualTitle: '레이아웃 미리보기',
207
+ },
208
+ };
@@ -0,0 +1,208 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TileLayoutCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'tegel-layout-calculator';
7
+ const title = 'Tegellayout en Snijverliescalculator';
8
+ const description =
9
+ 'Plan de vloer van je ruimte met millimeterprecisie. Bereken het exacte aantal tegels, benodigde dozen, totale kosten en visualiseer de layout in realtime met een interactief rasteroverzicht.';
10
+
11
+ const faqData = [
12
+ {
13
+ question: 'Hoe bereken ik hoeveel tegels ik nodig heb voor een ruimte?',
14
+ answer:
15
+ 'Meet de breedte en lengte van de ruimte, kies de tegelafmeting en voer de voegbreedte in. De calculator deelt de ruimteafmetingen door de tegel plus voeg om het exacte aantal tegels per rij en kolom te geven.',
16
+ },
17
+ {
18
+ question: 'Welk snijverliespercentage moet ik toevoegen bij de aankoop van tegels?',
19
+ answer:
20
+ 'Voeg voor standaard rechthoekige ruimtes 10% snijverlies toe. Bij ruimtes met veel hoeken, diagonale patronen of complexe sneden verhoog je dit naar 15%. Dit dekt breuk en snijfouten.',
21
+ },
22
+ {
23
+ question: 'Beïnvloedt de voegdikte echt het aantal tegels?',
24
+ answer:
25
+ 'Ja. Breedere voegen verkleinen het effectieve bereik van elke tegel, waardoor het totale aantal licht stijgt. De calculator houdt hier automatisch rekening mee in elke rij en kolom.',
26
+ },
27
+ {
28
+ question: 'Moet ik extra dozen kopen boven het snijverliespercentage?',
29
+ answer:
30
+ 'Het is verstandig om een extra doos te kopen als deze beschikbaar is. Kleurbatches kunnen verschillen tussen productieruns, en passende reserve-exemplaren maken toekomstig herstel eenvoudiger.',
31
+ },
32
+ {
33
+ question: 'Hoe tegel ik een ruimte met een onregelmatige vorm?',
34
+ answer:
35
+ 'Splits de ruimte op in kleinere rechthoeken. Bereken elk gedeelte apart en tel de totalen op. Rond gedeeltelijke dozen altijd naar boven af voor volledige dekking.',
36
+ },
37
+ {
38
+ question: 'Wat is het verschil in snijverlies tussen keramiek en porselein?',
39
+ answer:
40
+ 'Porselein is dichter en moeilijker te snijden, waardoor het snijverlies 2% tot 3% hoger kan liggen dan bij standaard keramiek. Beide materialen volgen hetzelfde meetproces.',
41
+ },
42
+ {
43
+ question: 'Kan ik ongebruikte tegeldoosjes retourneren?',
44
+ answer:
45
+ 'De meeste retailers accepteren ongeopende dozen binnen 30 dagen. Bewaar altijd de bon en open overtollige dozen pas als de installatie volledig is afgerond.',
46
+ },
47
+ ];
48
+
49
+ const howToData = [
50
+ {
51
+ name: 'Meet de ruimte',
52
+ text: 'Noteer de breedte en lengte van de vloer in je voorkeurseenheden.',
53
+ },
54
+ {
55
+ name: 'Selecteer tegel en voeg',
56
+ text: 'Kies je tegelafmetingen en de gewenste voegbreedte.',
57
+ },
58
+ {
59
+ name: 'Bereken en visualiseer',
60
+ text: 'Voer de waarden in de calculator in, pas het snijverliespercentage aan en bekijk het live layout-overzicht.',
61
+ },
62
+ ];
63
+
64
+ const faqSchema: WithContext<FAQPage> = {
65
+ '@context': 'https://schema.org',
66
+ '@type': 'FAQPage',
67
+ mainEntity: faqData.map((item) => ({
68
+ '@type': 'Question',
69
+ name: item.question,
70
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
71
+ })),
72
+ };
73
+
74
+ const howToSchema: WithContext<HowTo> = {
75
+ '@context': 'https://schema.org',
76
+ '@type': 'HowTo',
77
+ name: title,
78
+ description,
79
+ step: howToData.map((step) => ({
80
+ '@type': 'HowToStep',
81
+ name: step.name,
82
+ text: step.text,
83
+ })),
84
+ };
85
+
86
+ const appSchema: WithContext<SoftwareApplication> = {
87
+ '@context': 'https://schema.org',
88
+ '@type': 'SoftwareApplication',
89
+ name: title,
90
+ description,
91
+ applicationCategory: 'UtilityApplication',
92
+ operatingSystem: 'All',
93
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
94
+ inLanguage: 'nl',
95
+ };
96
+
97
+ export const content: ToolLocaleContent<TileLayoutCalculatorUI> = {
98
+ slug,
99
+ title,
100
+ description,
101
+ faq: faqData,
102
+ bibliography,
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ {
107
+ type: 'title',
108
+ text: 'Complete Gids voor Tegelvloerplanning en Snijverliesbeheersing',
109
+ level: 2,
110
+ },
111
+ {
112
+ type: 'paragraph',
113
+ html: 'Een succesvol tegelproject begint lang voordat de eerste lijm wordt aangebracht. Nauwkeurig meten, intelligent layoutplanning en exacte snijverliesinschatting bepalen of je renovatie binnen budget en planning blijft. <strong>Onze interactieve tegel-layoutcalculator</strong> transformeert ruwe afmetingen in een visueel vloerplan, dat precies laat zien hoeveel tegels er per rij passen, hoeveel dozen je nodig hebt en waar je geld naartoe gaat.',
114
+ },
115
+ {
116
+ type: 'stats',
117
+ items: [
118
+ { value: '10-15%', label: 'Standaard snijverlies', icon: 'mdi:alert-circle' },
119
+ { value: '30+ jaar', label: 'Tegellevensduur', icon: 'mdi:clock-outline' },
120
+ { value: '48u', label: 'Gem. installatie', icon: 'mdi:calendar-check' },
121
+ ],
122
+ columns: 3,
123
+ },
124
+ {
125
+ type: 'comparative',
126
+ items: [
127
+ {
128
+ title: 'Grote Formaat Tegels',
129
+ description: 'Tegels groter dan 60 cm creëren een naadloos, modern uiterlijk, maar vereisen perfect vlakke ondergronden en genereren meer snijverlies in kleine ruimtes.',
130
+ icon: 'mdi:arrow-expand',
131
+ points: ['Minder voegen', 'Premium visueel effect', 'Hoger snijverlies in krappe ruimtes'],
132
+ },
133
+ {
134
+ title: 'Kleine Mozaïektegels',
135
+ description: 'Ideaal voor badkamers en ingewikkelde patronen. Ze passen zich aan onregelmatige vormen aan, maar vereisen meer voeg en arbeidstijd.',
136
+ icon: 'mdi:apps',
137
+ points: ['Flexibel rond obstakels', 'Meer voeg vereist', 'Langere installatietijd'],
138
+ },
139
+ ],
140
+ columns: 2,
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: 'Waarom Layoutvisualisatie Belangrijk Is',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: 'Het zien van je tegelraster voor aankoop voorkomt kostbare verrassingen. Een live preview onthult of je gekozen tegelafmeting onhandige smalle stroken aan de randen achterlaat of een evenwichtige, symmetrische vloer creëert. Door de voegbreedte en tegeloriëntatie in de calculator aan te passen, optimaliseer je de layout voor esthetiek en efficiëntie voordat je bestelt.',
150
+ },
151
+ {
152
+ type: 'diagnostic',
153
+ variant: 'info',
154
+ title: 'Snelle Dekkingstabel',
155
+ icon: 'mdi:table',
156
+ badge: 'Referentie',
157
+ html: '<ul style="margin:0;padding-left:1.2em"><li><strong>30 x 30 cm</strong> → 11 tegels per m²</li><li><strong>45 x 45 cm</strong> → 5 tegels per m²</li><li><strong>60 x 60 cm</strong> → 3 tegels per m²</li><li><strong>60 x 120 cm</strong> → 1,5 tegels per m²</li></ul>',
158
+ },
159
+ {
160
+ type: 'summary',
161
+ title: 'Protips om Snijverlies te Minimaliseren',
162
+ items: [
163
+ 'Bestel 10% extra voor rechte patronen en 15% voor diagonaal of visgraat.',
164
+ 'Bewaar alle dozen uit dezelfde productiebatch voor kleurconsistentie.',
165
+ 'Meet diagonaal door de ruimte om de rechthoekigheid te controleren voordat je rijen plant.',
166
+ 'Gebruik grote formaten alleen in ruimtes die breder zijn dan de tegellengte om overmatig snijden te vermijden.',
167
+ 'Rond het aantal dozen altijd naar boven af; dat is goedkoper dan een tweede bezorging.',
168
+ ],
169
+ },
170
+ ],
171
+ ui: {
172
+ sectionTitle: 'Ruimteconfiguratie',
173
+ labelRoomWidth: 'Ruimtebreedte',
174
+ labelRoomLength: 'Ruimtelengte',
175
+ labelTileWidth: 'Tegelbreedte',
176
+ labelTileLength: 'Tegellengte',
177
+ labelGrout: 'Voegbreedte',
178
+ labelWaste: 'Snijverliesmarge',
179
+ labelTilesPerBox: 'Tegels per doos',
180
+ labelPrice: 'Prijs per doos',
181
+ labelPattern: 'Tegelpatroon',
182
+ unitMetricRoom: 'm',
183
+ unitImperialRoom: 'ft',
184
+ unitMetricTile: 'cm',
185
+ unitImperialTile: 'in',
186
+ unitGroutMetric: 'mm',
187
+ unitGroutImperial: 'in',
188
+ unitPercent: '%',
189
+ unitBoxes: 'st',
190
+ unitPrice: '/doos',
191
+ resultBadge: 'Live layout-overzicht',
192
+ labelArea: 'Vloeroppervlak',
193
+ labelTiles: 'Totaal tegels',
194
+ labelBoxes: 'Dozen nodig',
195
+ labelCost: 'Totale kosten',
196
+ labelWasteCount: 'Snijverlies-tegels',
197
+ labelCuts: 'Deelsneden',
198
+ currency: 'EUR',
199
+ btnMetric: 'Metrisch',
200
+ btnImperial: 'Imperiaal',
201
+ btnPatternStraight: 'Recht',
202
+ btnPatternBrick: 'Halfsteens',
203
+ btnPatternDiagonal: 'Diagonaal',
204
+ badgeOptimal: 'Optimale layout',
205
+ badgeWarning: 'Hoog snijverlies',
206
+ visualTitle: 'Layout overzicht',
207
+ },
208
+ };