@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.
- package/package.json +1 -1
- package/src/entries.ts +4 -1
- package/src/index.ts +1 -0
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/tileLayoutCalculator/bibliography.astro +14 -0
- package/src/tool/tileLayoutCalculator/bibliography.ts +10 -0
- package/src/tool/tileLayoutCalculator/component.astro +415 -0
- package/src/tool/tileLayoutCalculator/entry.ts +29 -0
- package/src/tool/tileLayoutCalculator/i18n/de.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/en.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/es.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/fr.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/id.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/it.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/ja.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/ko.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/nl.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/pl.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/pt.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/ru.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/sv.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/tr.ts +208 -0
- package/src/tool/tileLayoutCalculator/i18n/zh.ts +208 -0
- package/src/tool/tileLayoutCalculator/index.ts +9 -0
- package/src/tool/tileLayoutCalculator/logic.ts +55 -0
- package/src/tool/tileLayoutCalculator/seo.astro +15 -0
- package/src/tool/tileLayoutCalculator/tile-layout-calculator.css +404 -0
- package/src/tool/tileLayoutCalculator/ui.ts +37 -0
- 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 = 'kalkulator-ukladu-plytek';
|
|
7
|
+
const title = 'Kalkulator Układu i Odpadów Płytek';
|
|
8
|
+
const description =
|
|
9
|
+
'Zaplanuj podłogę w pomieszczeniu z milimetrową precyzją. Oblicz dokładną liczbę płytek, potrzebne kartony, całkowity koszt i wizualizuj układ w czasie rzeczywistym dzięki interaktywnej podglądowi siatki.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{
|
|
13
|
+
question: 'Jak obliczyć, ile płytek potrzebuję do pomieszczenia?',
|
|
14
|
+
answer:
|
|
15
|
+
'Zmierz szerokość i długość pokoju, wybierz rozmiar płytki i podaj szerokość fugi. Kalkulator dzieli wymiary pomieszczenia przez płytkę plus fugę, aby uzyskać dokładną liczbę sztuk w rzędzie i kolumnie.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: 'Jaki procent odpadów dodać przy zakupie płytek?',
|
|
19
|
+
answer:
|
|
20
|
+
'W standardowych prostokątnych pomieszczeniach dodaj 10% odpadów. W pokojach z wieloma narożnikami, układem na ukos lub skomplikowanymi cięciami zwiększ do 15%. To pokrywa uszkodzenia i błędy cięcia.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Czy grubość fugi naprawdę zmienia liczbę płytek?',
|
|
24
|
+
answer:
|
|
25
|
+
'Tak. Szersze fugi zmniejszają efektywną powierzchnię pokrycia każdej płytki, nieznacznie zwiększając całkowitą liczbę potrzebnych sztuk. Kalkulator uwzględnia to automatycznie w każdym rzędzie i kolumnie.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Czy kupić dodatkowe kartony poza procentem odpadów?',
|
|
29
|
+
answer:
|
|
30
|
+
'Warto nabyć jeden karton więcej, jeśli jest dostępny. Partie barwne mogą się różnić między produkcjami, a posiadanie dopasowanych zapasów ułatwia przyszłe naprawy.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Jak układać płytki w pomieszczeniu o nieregularnym kształcie?',
|
|
34
|
+
answer:
|
|
35
|
+
'Podziel pokój na mniejsze prostokąty. Oblicz każdy obszar osobno i zsumuj wyniki. Zawsze zaokrąglaj częściowe kartony w górę, aby zapewnić pełne pokrycie.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: 'Jaka jest różnica w odpadach między ceramiką a gresem?',
|
|
39
|
+
answer:
|
|
40
|
+
'Gres jest gęstszy i trudniejszy do cięcia, co może zwiększyć odpady cięcia o 2-3% w porównaniu do standardowej ceramiki. Oba materiały wymagają tego samego procesu pomiarowego.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: 'Czy można zwrócić nieużywane kartony płytek?',
|
|
44
|
+
answer:
|
|
45
|
+
'Większość sklepów przyjmuje nieotwarte kartony w ciągu 30 dni. Zawsze zachowaj paragon i nie otwieraj nadwyżek do czasu zakończenia całkowitego montażu.',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
const howToData = [
|
|
50
|
+
{
|
|
51
|
+
name: 'Zmierz pomieszczenie',
|
|
52
|
+
text: 'Zapisz szerokość i długość powierzchni podłogi w preferowanym systemie jednostek.',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'Wybierz płytkę i fugę',
|
|
56
|
+
text: 'Wybierz wymiary płytki oraz pożądaną szerokość fugi.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'Oblicz i wizualizuj',
|
|
60
|
+
text: 'Wprowadź wartości do kalkulatora, dostosuj margines odpadów i sprawdź podgląd układu na żywo.',
|
|
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: 'PLN' },
|
|
94
|
+
inLanguage: 'pl',
|
|
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: 'Kompletny Przewodnik po Planowaniu Podłóg Płytek i Kontroli Odpadów',
|
|
109
|
+
level: 2,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'paragraph',
|
|
113
|
+
html: 'Udany projekt układania płytek zaczyna się na długo przed nałożeniem pierwszej warstwy kleju. Precyzyjny pomiar, inteligentne planowanie układu oraz dokładna estymacja odpadów decydują o tym, czy remont zmieści się w budżecie i terminie. <strong>Nasz interaktywny kalkulator układu płytek</strong> przekształca surowe wymiary w wizualny plan pokazujący dokładnie, ile płytek zmieści się w rzędzie, ile kartonów kupić i gdzie idą twoje pieniądze.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'stats',
|
|
117
|
+
items: [
|
|
118
|
+
{ value: '10-15%', label: 'Standardowe odpady', icon: 'mdi:alert-circle' },
|
|
119
|
+
{ value: '30+ lat', label: 'Trwałość płytek', icon: 'mdi:clock-outline' },
|
|
120
|
+
{ value: '48h', label: 'Średni montaż', icon: 'mdi:calendar-check' },
|
|
121
|
+
],
|
|
122
|
+
columns: 3,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'comparative',
|
|
126
|
+
items: [
|
|
127
|
+
{
|
|
128
|
+
title: 'Płytki Wielkoformatowe',
|
|
129
|
+
description: 'Płytki powyżej 60 cm tworzą nowoczesny, bezszwowy wygląd, ale wymagają idealnie płaskich podłoży i generują więcej odpadów przy cięciu w małych pomieszczeniach.',
|
|
130
|
+
icon: 'mdi:arrow-expand',
|
|
131
|
+
points: ['Mniej fug', 'Premium efekt wizualny', 'Większe odpady w ciasnych przestrzeniach'],
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
title: 'Małe Mozaiki',
|
|
135
|
+
description: 'Idealne do łazienek i skomplikowanych wzorów. Dostosowują się do nieregularnych kształtów, ale wymagają więcej fugi i czasu pracy.',
|
|
136
|
+
icon: 'mdi:apps',
|
|
137
|
+
points: ['Elastyczność wokół przeszkód', 'Więcej fugi potrzebnej', 'Dłuższy czas montażu'],
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
columns: 2,
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'title',
|
|
144
|
+
text: 'Dlaczego Wizualizacja Układu Jest Ważna',
|
|
145
|
+
level: 3,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'paragraph',
|
|
149
|
+
html: 'Widok siatki płytek przed zakupem pozwala uniknąć kosztownych niespodzianek. Podgląd na żywo ujawnia, czy wybrany rozmiar płytki pozostawi niezręczne wąskie paski na krawędziach, czy stworzy zrównoważoną, symetryczną podłogę. Dostosowując szerokość fugi i orientację płytki w kalkulatorze, możesz zoptymalizować układ pod kątem estetyki i wydajności przed złożeniem zamówienia.',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'diagnostic',
|
|
153
|
+
variant: 'info',
|
|
154
|
+
title: 'Szybka Tabela Pokrycia',
|
|
155
|
+
icon: 'mdi:table',
|
|
156
|
+
badge: 'Referencja',
|
|
157
|
+
html: '<ul style="margin:0;padding-left:1.2em"><li><strong>30 x 30 cm</strong> → 11 płytek na m²</li><li><strong>45 x 45 cm</strong> → 5 płytek na m²</li><li><strong>60 x 60 cm</strong> → 3 płytki na m²</li><li><strong>60 x 120 cm</strong> → 1,5 płytki na m²</li></ul>',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
type: 'summary',
|
|
161
|
+
title: 'Wskazówki Ekspertów jak Zminimalizować Odpady',
|
|
162
|
+
items: [
|
|
163
|
+
'Zamów 10% więcej przy układzie prostym i 15% na ukos lub w jodełkę.',
|
|
164
|
+
'Przechowuj wszystkie kartony z tej samej partii produkcyjnej, aby zachować jednolitość koloru.',
|
|
165
|
+
'Zmierz przekątną pomieszczenia, aby sprawdzić prostokątność przed planowaniem rzędów.',
|
|
166
|
+
'Płytki wielkoformatowe stosuj tylko w pokojach szerszych niż długość płytki, aby uniknąć nadmiernych cięć.',
|
|
167
|
+
'Zawsze zaokrąglaj liczbę kartonów w górę; to tańsze niż druga dostawa.',
|
|
168
|
+
],
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
ui: {
|
|
172
|
+
sectionTitle: 'Konfiguracja pomieszczenia',
|
|
173
|
+
labelRoomWidth: 'Szerokość pokoju',
|
|
174
|
+
labelRoomLength: 'Długość pokoju',
|
|
175
|
+
labelTileWidth: 'Szerokość płytki',
|
|
176
|
+
labelTileLength: 'Długość płytki',
|
|
177
|
+
labelGrout: 'Szerokość fugi',
|
|
178
|
+
labelWaste: 'Margines odpadów',
|
|
179
|
+
labelTilesPerBox: 'Płytek w kartonie',
|
|
180
|
+
labelPrice: 'Cena za karton',
|
|
181
|
+
labelPattern: 'Wzór układania',
|
|
182
|
+
unitMetricRoom: 'm',
|
|
183
|
+
unitImperialRoom: 'ft',
|
|
184
|
+
unitMetricTile: 'cm',
|
|
185
|
+
unitImperialTile: 'in',
|
|
186
|
+
unitGroutMetric: 'mm',
|
|
187
|
+
unitGroutImperial: 'in',
|
|
188
|
+
unitPercent: '%',
|
|
189
|
+
unitBoxes: 'szt',
|
|
190
|
+
unitPrice: '/karton',
|
|
191
|
+
resultBadge: 'Podgląd na żywo',
|
|
192
|
+
labelArea: 'Powierzchnia podłogi',
|
|
193
|
+
labelTiles: 'Płytek razem',
|
|
194
|
+
labelBoxes: 'Potrzebne kartony',
|
|
195
|
+
labelCost: 'Koszt całkowity',
|
|
196
|
+
labelWasteCount: 'Odpadowe płytki',
|
|
197
|
+
labelCuts: 'Częściowe cięcia',
|
|
198
|
+
currency: 'PLN',
|
|
199
|
+
btnMetric: 'Metryczny',
|
|
200
|
+
btnImperial: 'Imperialny',
|
|
201
|
+
btnPatternStraight: 'Prosty',
|
|
202
|
+
btnPatternBrick: 'Na przesunięcie',
|
|
203
|
+
btnPatternDiagonal: 'Na ukos',
|
|
204
|
+
badgeOptimal: 'Optymalny układ',
|
|
205
|
+
badgeWarning: 'Wysokie odpady',
|
|
206
|
+
visualTitle: 'Podgląd układu',
|
|
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 = 'calculadora-disposicao-azulejos';
|
|
7
|
+
const title = 'Calculadora de Disposição e Desperdício de Azulejos';
|
|
8
|
+
const description =
|
|
9
|
+
'Planeie o pavimento do seu quarto com precisão. Calcule a quantidade exata de azulejos, caixas necessárias, custo total e visualize a disposição em tempo real com uma pré-visualização interativa da grelha.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{
|
|
13
|
+
question: 'Como calculo quantos azulejos preciso para um quarto?',
|
|
14
|
+
answer:
|
|
15
|
+
'Meça a largura e o comprimento da divisão, escolha o tamanho do azulejo e indique a largura da junta. A calculadora divide as dimensões da divisão pelo azulejo mais a junta para dar o número exato de peças por fila e coluna.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: 'Que percentagem de desperdício devo acrescentar ao comprar azulejos?',
|
|
19
|
+
answer:
|
|
20
|
+
'Para divisões retangulares padrão, adicione 10% de desperdício. Para ambientes com muitos cantos, disposições diagonais ou cortes complexos, aumente para 15%. Isto cobre quebras e erros de corte.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'A espessura da junta realmente altera a quantidade de azulejos?',
|
|
24
|
+
answer:
|
|
25
|
+
'Sim. Juntas mais largas reduzem a cobertura efetiva de cada peça, aumentando ligeiramente o número total necessário. A calculadora leva isto em conta automaticamente em cada fila e coluna.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Devo comprar caixas extra para além da percentagem de desperdício?',
|
|
29
|
+
answer:
|
|
30
|
+
'É sensato adquirir uma caixa extra, se disponível. Os lotes de cor podem variar entre produções, e ter peças sobressalentes a condiciona reparações futuras.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Como coloco azulejos numa divisão de forma irregular?',
|
|
34
|
+
answer:
|
|
35
|
+
'Divida a divisão em retângulos mais pequenos. Calcule cada secção separadamente e some os totais. Arredonde sempre as caixas parciais para cima para garantir cobertura completa.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: 'Qual é a diferença de desperdício entre cerâmica e porcelanato?',
|
|
39
|
+
answer:
|
|
40
|
+
'O porcelanato é mais denso e difícil de cortar, o que pode aumentar o desperdício de corte entre 2% e 3% em comparação com a cerâmica padrão. Ambos os materiais devem seguir o mesmo processo de medição.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: 'Posso devolver caixas de azulejos não utilizadas?',
|
|
44
|
+
answer:
|
|
45
|
+
'A maioria dos retalhistas aceita caixas por abrir no prazo de 30 dias. Guarde sempre o recibo e não abra as caixas excedentes até a instalação estar totalmente concluída.',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
const howToData = [
|
|
50
|
+
{
|
|
51
|
+
name: 'Meça a divisão',
|
|
52
|
+
text: 'Anote a largura e o comprimento do pavimento no sistema de unidades que preferir.',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'Selecione azulejo e junta',
|
|
56
|
+
text: 'Escolha as dimensões do azulejo e a largura da junta desejada.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'Calcule e visualize',
|
|
60
|
+
text: 'Introduza os valores na calculadora, ajuste a margem de desperdício e reveja a pré-visualização live da disposição.',
|
|
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: 'pt',
|
|
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: 'Guia Completo para Planificar Pavimentos em Azulejo e Controlar o Desperdício',
|
|
109
|
+
level: 2,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'paragraph',
|
|
113
|
+
html: 'Um projeto de colocação de azulejos bem-sucedido começa muito antes de aplicar a primeira camada de cola. A medição precisa, o planeamento inteligente da disposição e a estimativa exata do desperdício determinam se a sua renovação se mantém no orçamento e no prazo. <strong>A nossa calculadora de disposição de azulejos interativa</strong> transforma dimensões brutas num plano visual, mostrando exatamente quantas peças cabem por fila, quantas caixas comprar e onde o seu dinheiro é investido.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'stats',
|
|
117
|
+
items: [
|
|
118
|
+
{ value: '10-15%', label: 'Desperdício Padrão', icon: 'mdi:alert-circle' },
|
|
119
|
+
{ value: '30+ anos', label: 'Vida útil do azulejo', icon: 'mdi:clock-outline' },
|
|
120
|
+
{ value: '48h', label: 'Instalação Média', icon: 'mdi:calendar-check' },
|
|
121
|
+
],
|
|
122
|
+
columns: 3,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'comparative',
|
|
126
|
+
items: [
|
|
127
|
+
{
|
|
128
|
+
title: 'Azulejos de Grande Formato',
|
|
129
|
+
description: 'Azulejos superiores a 60 cm criam um aspeto moderno e contínuo, mas exigem substratos perfeitamente planos e geram mais desperdício de corte em divisões pequenas.',
|
|
130
|
+
icon: 'mdi:arrow-expand',
|
|
131
|
+
points: ['Menos juntas visíveis', 'Efeito visual premium', 'Maior desperdício em espaços reduzidos'],
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
title: 'Mosaicos de Pequena Dimensão',
|
|
135
|
+
description: 'Ideais para casas de banho e padrões intrincados. Adaptam-se a formas irregulares, mas exigem mais junta e tempo de mão de obra.',
|
|
136
|
+
icon: 'mdi:apps',
|
|
137
|
+
points: ['Flexíveis à volta de obstáculos', 'Mais junta necessária', 'Maior tempo de instalação'],
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
columns: 2,
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'title',
|
|
144
|
+
text: 'Porque a Visualização da Disposição Importa',
|
|
145
|
+
level: 3,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'paragraph',
|
|
149
|
+
html: 'Ver a grelha de azulejos antes da compra evita surpresas dispendiosas. Uma pré-visualização em direto revela se o tamanho escolhido deixa tiras estreitas nos bordos ou cria um pavimento equilibrado e simétrico. Ajustando a largura da junta e a orientação do azulejo na calculadora, pode otimizar a disposição para estética e eficiência antes de encomendar.',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'diagnostic',
|
|
153
|
+
variant: 'info',
|
|
154
|
+
title: 'Tabela de Referência Rápida de Cobertura',
|
|
155
|
+
icon: 'mdi:table',
|
|
156
|
+
badge: 'Referência',
|
|
157
|
+
html: '<ul style="margin:0;padding-left:1.2em"><li><strong>30 x 30 cm</strong> → 11 azulejos por m²</li><li><strong>45 x 45 cm</strong> → 5 azulejos por m²</li><li><strong>60 x 60 cm</strong> → 3 azulejos por m²</li><li><strong>60 x 120 cm</strong> → 1,5 azulejos por m²</li></ul>',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
type: 'summary',
|
|
161
|
+
title: 'Dicas de Profissional para Minimizar o Desperdício',
|
|
162
|
+
items: [
|
|
163
|
+
'Encomende 10% extra para disposições direitas e 15% para diagonais ou espinha de peixe.',
|
|
164
|
+
'Guarde todas as caixas do mesmo lote de produção para garantir consistência de cor.',
|
|
165
|
+
'Meça em diagonal a divisão para verificar a esquadria antes de planear as filas.',
|
|
166
|
+
'Utilize grandes formatos apenas em divisões mais largas que o comprimento do azulejo para evitar cortes excessivos.',
|
|
167
|
+
'Arredonde sempre as caixas para cima: sai mais barato do que uma segunda entrega.',
|
|
168
|
+
],
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
ui: {
|
|
172
|
+
sectionTitle: 'Configuração da Divisão',
|
|
173
|
+
labelRoomWidth: 'Largura da divisão',
|
|
174
|
+
labelRoomLength: 'Comprimento da divisão',
|
|
175
|
+
labelTileWidth: 'Largura do azulejo',
|
|
176
|
+
labelTileLength: 'Comprimento do azulejo',
|
|
177
|
+
labelGrout: 'Junta',
|
|
178
|
+
labelWaste: 'Margem de desperdício',
|
|
179
|
+
labelTilesPerBox: 'Azulejos por caixa',
|
|
180
|
+
labelPrice: 'Preço por caixa',
|
|
181
|
+
labelPattern: 'Padrão de colocação',
|
|
182
|
+
unitMetricRoom: 'm',
|
|
183
|
+
unitImperialRoom: 'ft',
|
|
184
|
+
unitMetricTile: 'cm',
|
|
185
|
+
unitImperialTile: 'in',
|
|
186
|
+
unitGroutMetric: 'mm',
|
|
187
|
+
unitGroutImperial: 'in',
|
|
188
|
+
unitPercent: '%',
|
|
189
|
+
unitBoxes: 'un',
|
|
190
|
+
unitPrice: '/caixa',
|
|
191
|
+
resultBadge: 'Pré-visualização live',
|
|
192
|
+
labelArea: 'Área do pavimento',
|
|
193
|
+
labelTiles: 'Azulejos total',
|
|
194
|
+
labelBoxes: 'Caixas necessárias',
|
|
195
|
+
labelCost: 'Custo total',
|
|
196
|
+
labelWasteCount: 'Azulejos de desperdício',
|
|
197
|
+
labelCuts: 'Cortes parciais',
|
|
198
|
+
currency: 'EUR',
|
|
199
|
+
btnMetric: 'Métrico',
|
|
200
|
+
btnImperial: 'Imperial',
|
|
201
|
+
btnPatternStraight: 'Direito',
|
|
202
|
+
btnPatternBrick: 'Meia-teia',
|
|
203
|
+
btnPatternDiagonal: 'Diagonal',
|
|
204
|
+
badgeOptimal: 'Disposição ótima',
|
|
205
|
+
badgeWarning: 'Alerta de desperdício elevado',
|
|
206
|
+
visualTitle: 'Pré-visualização da disposição',
|
|
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 = 'kalkulyator-raskladki-plitki';
|
|
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: 'RUB' },
|
|
94
|
+
inLanguage: 'ru',
|
|
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: 'Плитка свыше 60 см создаёт бесшовный современный вид, но требует идеально ровного основания и даёт больший отход реза в маленьких комнатах.',
|
|
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 см</strong> → 11 шт. на м²</li><li><strong>45 x 45 см</strong> → 5 шт. на м²</li><li><strong>60 x 60 см</strong> → 3 шт. на м²</li><li><strong>60 x 120 см</strong> → 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: 'м',
|
|
183
|
+
unitImperialRoom: 'ft',
|
|
184
|
+
unitMetricTile: 'см',
|
|
185
|
+
unitImperialTile: 'in',
|
|
186
|
+
unitGroutMetric: 'мм',
|
|
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: 'RUB',
|
|
199
|
+
btnMetric: 'Метрическая',
|
|
200
|
+
btnImperial: 'Имперская',
|
|
201
|
+
btnPatternStraight: 'Прямая',
|
|
202
|
+
btnPatternBrick: 'Сдвиг',
|
|
203
|
+
btnPatternDiagonal: 'Диагональ',
|
|
204
|
+
badgeOptimal: 'Оптимальная раскладка',
|
|
205
|
+
badgeWarning: 'Высокий запас',
|
|
206
|
+
visualTitle: 'Превью раскладки',
|
|
207
|
+
},
|
|
208
|
+
};
|