@jjlmoya/utils-developer 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 +70 -70
- package/src/category/seo.astro +1 -1
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/data.ts +1 -1
- package/src/env.d.ts +1 -1
- package/src/layouts/PreviewLayout.astro +1 -1
- package/src/pages/[locale]/[slug].astro +162 -162
- package/src/pages/index.astro +1 -1
- package/src/tests/entry_contract.test.ts +8 -2
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +2 -6
- package/src/tests/inverted_punctuation.test.ts +113 -113
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/promote_this_website_i18n.test.ts +33 -0
- package/src/tests/slug_language_code_format.test.ts +25 -25
- package/src/tests/slug_uniqueness.test.ts +86 -86
- package/src/tests/tool_validation.test.ts +15 -15
- package/src/tool/aspectRatio/i18n/de.ts +164 -164
- package/src/tool/aspectRatio/i18n/ja.ts +1 -1
- package/src/tool/aspectRatio/i18n/ko.ts +1 -1
- package/src/tool/aspectRatio/i18n/pl.ts +164 -164
- package/src/tool/aspectRatio/i18n/ru.ts +164 -164
- package/src/tool/aspectRatio/i18n/zh.ts +165 -165
- package/src/tool/aspectRatio/seo.astro +15 -15
- package/src/tool/calculadoraTiempoDatos/i18n/de.ts +143 -143
- package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +1 -1
- package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +1 -1
- package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +143 -143
- package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +144 -144
- package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +143 -143
- package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +144 -144
- package/src/tool/calculadoraTiempoDatos/seo.astro +15 -15
- package/src/tool/colorConverter/i18n/de.ts +120 -120
- package/src/tool/colorConverter/i18n/ja.ts +1 -1
- package/src/tool/colorConverter/i18n/ko.ts +1 -1
- package/src/tool/colorConverter/i18n/ru.ts +120 -120
- package/src/tool/colorConverter/i18n/zh.ts +1 -1
- package/src/tool/colorConverter/seo.astro +15 -15
- package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +1 -1
- package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +1 -1
- package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +124 -124
- package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +124 -124
- package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +125 -125
- package/src/tool/conversorExcelCsvHtml/seo.astro +15 -15
- package/src/tool/cronGenerator/i18n/ja.ts +1 -1
- package/src/tool/cronGenerator/i18n/ko.ts +1 -1
- package/src/tool/cronGenerator/i18n/zh.ts +183 -183
- package/src/tool/cronGenerator/seo.astro +15 -15
- package/src/tool/cssSpecificityCalculator/i18n/ja.ts +1 -1
- package/src/tool/cssSpecificityCalculator/i18n/ko.ts +1 -1
- package/src/tool/cssSpecificityCalculator/i18n/zh.ts +1 -1
- package/src/tool/cssSpecificityCalculator/seo.astro +15 -15
- package/src/tool/cssToInlineConverter/i18n/ja.ts +1 -1
- package/src/tool/cssToInlineConverter/i18n/ko.ts +1 -1
- package/src/tool/cssToInlineConverter/i18n/zh.ts +1 -1
- package/src/tool/cssToInlineConverter/seo.astro +15 -15
- package/src/tool/duplicateCssRemover/i18n/ja.ts +1 -1
- package/src/tool/duplicateCssRemover/i18n/ko.ts +1 -1
- package/src/tool/duplicateCssRemover/i18n/zh.ts +1 -1
- package/src/tool/duplicateCssRemover/seo.astro +15 -15
- package/src/tool/generadorSecurityTxt/i18n/ja.ts +1 -1
- package/src/tool/generadorSecurityTxt/i18n/ko.ts +1 -1
- package/src/tool/generadorSecurityTxt/i18n/zh.ts +1 -1
- package/src/tool/generadorSecurityTxt/seo.astro +15 -15
- package/src/tool/hashGenerator/i18n/ja.ts +1 -1
- package/src/tool/hashGenerator/i18n/ko.ts +1 -1
- package/src/tool/hashGenerator/seo.astro +15 -15
- package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +1 -1
- package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +1 -1
- package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +1 -1
- package/src/tool/inspectorCertificadosSsl/seo.astro +15 -15
- package/src/tool/jsonFormatter/seo.astro +15 -15
- package/src/tool/jwtDecoder/i18n/es.ts +248 -248
- package/src/tool/jwtDecoder/i18n/fr.ts +248 -248
- package/src/tool/jwtDecoder/i18n/tr.ts +248 -248
- package/src/tool/keycode/seo.astro +15 -15
- package/src/tool/llmCostCalculator/i18n/fr.ts +149 -149
- package/src/tool/llmCostCalculator/i18n/ja.ts +1 -1
- package/src/tool/llmCostCalculator/i18n/ko.ts +1 -1
- package/src/tool/llmCostCalculator/seo.astro +15 -15
- package/src/tool/mobileMockupGenerator/i18n/ja.ts +1 -1
- package/src/tool/mobileMockupGenerator/i18n/ko.ts +1 -1
- package/src/tool/mobileMockupGenerator/i18n/zh.ts +1 -1
- package/src/tool/mobileMockupGenerator/seo.astro +15 -15
- package/src/tool/musicalTypography/i18n/ja.ts +1 -1
- package/src/tool/musicalTypography/i18n/ko.ts +1 -1
- package/src/tool/musicalTypography/i18n/zh.ts +1 -1
- package/src/tool/musicalTypography/seo.astro +15 -15
- package/src/tool/placeholderGenerator/i18n/ja.ts +1 -1
- package/src/tool/placeholderGenerator/i18n/ko.ts +1 -1
- package/src/tool/placeholderGenerator/i18n/zh.ts +1 -1
- package/src/tool/placeholderGenerator/seo.astro +15 -15
- package/src/tool/promoteThisWebsite/entry.ts +13 -0
- package/src/tool/promoteThisWebsite/i18n/de.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/fr.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/id.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/it.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/ja.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/ko.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/nl.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/pl.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/pt.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/ru.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/sv.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/tr.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/zh.ts +95 -0
- package/src/tool/promptLibrary/i18n/ja.ts +1 -1
- package/src/tool/promptLibrary/i18n/ko.ts +1 -1
- package/src/tool/promptLibrary/i18n/zh.ts +1 -1
- package/src/tool/promptLibrary/seo.astro +15 -15
- package/src/tool/readabilityCalculator/i18n/ja.ts +1 -1
- package/src/tool/readabilityCalculator/i18n/ko.ts +1 -1
- package/src/tool/readabilityCalculator/i18n/zh.ts +1 -1
- package/src/tool/readabilityCalculator/seo.astro +15 -15
- package/src/tool/serpPixelSimulator/entry.ts +30 -30
- package/src/tool/serpPixelSimulator/i18n/en.ts +211 -211
- package/src/tool/serpPixelSimulator/i18n/fr.ts +214 -214
- package/src/tool/serpPixelSimulator/i18n/ru.ts +214 -214
- package/src/tool/serpPixelSimulator/logic.ts +18 -18
- package/src/tool/serpPixelSimulator/serp-pixel-simulator.css +195 -195
- package/src/tool/svgSanitizer/i18n/ja.ts +1 -1
- package/src/tool/svgSanitizer/i18n/ko.ts +1 -1
- package/src/tool/svgSanitizer/seo.astro +15 -15
- package/src/tool/svgToCss/i18n/ja.ts +1 -1
- package/src/tool/svgToCss/i18n/ko.ts +1 -1
- package/src/tool/svgToCss/seo.astro +15 -15
- package/src/tool/urlCleaner/i18n/ja.ts +1 -1
- package/src/tool/urlCleaner/i18n/ko.ts +1 -1
- package/src/tool/urlCleaner/i18n/zh.ts +1 -1
- package/src/tool/urlCleaner/seo.astro +15 -15
- package/src/tool/urlEncoderDecoder/i18n/es.ts +146 -146
- package/src/tool/urlEncoderDecoder/i18n/ko.ts +1 -1
- package/src/tool/urlEncoderDecoder/seo.astro +15 -15
- package/src/tool/utmGenerator/i18n/ja.ts +1 -1
- package/src/tool/utmGenerator/i18n/ko.ts +1 -1
- package/src/tool/utmGenerator/i18n/zh.ts +1 -1
- package/src/tool/utmGenerator/seo.astro +15 -15
- package/src/types.ts +1 -1
|
@@ -1,123 +1,123 @@
|
|
|
1
1
|
import { bibliography } from '../bibliography';
|
|
2
|
-
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
3
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
4
|
-
import type { ColorConverterUI } from '../ui';
|
|
5
|
-
|
|
6
|
-
const slug = 'cvhetovoj-konverter-rgb-hex-hsl';
|
|
7
|
-
const title = 'Онлайн конвертер цветов RGB, HEX и HSL';
|
|
8
|
-
const description = 'Мгновенно конвертируйте цвета между RGB, HEX и HSL. Генерируйте комплементарные цветовые гармонии и анализируйте контрастность по WCAG. 100% на стороне клиента и приватно.';
|
|
9
|
-
|
|
10
|
-
const faqData = [
|
|
11
|
-
{
|
|
12
|
-
question: 'Как работает конвертер цветов RGB в HEX и HSL?',
|
|
13
|
-
answer: 'Инструмент принимает значения красного, зеленого и синего (RGB) и использует математические алгоритмы для их преобразования в шестнадцатеричный эквивалент (HEX) или значения тона, насыщенности и светлоты (HSL). Он также работает в обратном порядке.',
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
question: 'Почему в своих проектах мне стоит использовать HSL вместо HEX?',
|
|
17
|
-
answer: 'Формат HSL гораздо более интуитивно понятен. Он позволяет настраивать насыщенность или светлоту без изменения самого цветового тона, что значительно упрощает создание гармоничных палитр или состояний кнопок (при наведении, отключено).',
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
question: 'Что такое значение относительной контрастности?',
|
|
21
|
-
answer: 'Это показатель, который указывает на читаемость текста на фоне на основе его яркости. Высокая контрастность гарантирует, что люди с нарушениями зрения смогут прочитать контент в соответствии с рекомендациями по доступности WCAG.',
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
question: 'Безопасно ли использовать этот онлайн-конвертер цветов?',
|
|
25
|
-
answer: 'Безусловно. Поскольку он на 100% работает на стороне клиента, ваши данные о цвете никогда не покидают ваш компьютер. Вся обработка происходит прямо в вашем браузере, что гарантирует конфиденциальность и мгновенную работу.',
|
|
26
|
-
},
|
|
27
|
-
];
|
|
28
|
-
|
|
29
|
-
const howToData = [
|
|
30
|
-
{ name: 'Выберите цвет', text: 'Используйте ползунки красного, зеленого и синего или введите HEX-код прямо в текстовое поле.' },
|
|
31
|
-
{ name: 'Настройте каналы RGB', text: 'Передвигайте ползунки, чтобы изменить интенсивность каждого канала и увидеть обновление в режиме реального времени.' },
|
|
32
|
-
{ name: 'Скопируйте формат', text: 'Нажмите кнопку "Копировать" рядом с нужным форматом HEX, RGB или HSL.' },
|
|
33
|
-
{ name: 'Исследуйте гармонии', text: 'Нажмите на гармоничные цвета (комплементарные, аналогичные, триадические), чтобы скопировать их в буфер обмена.' },
|
|
34
|
-
];
|
|
35
|
-
|
|
36
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
37
|
-
'@context': 'https://schema.org',
|
|
38
|
-
'@type': 'FAQPage',
|
|
39
|
-
mainEntity: faqData.map((item) => ({
|
|
40
|
-
'@type': 'Question',
|
|
41
|
-
name: item.question,
|
|
42
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
43
|
-
})),
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const howToSchema: WithContext<HowToThing> = {
|
|
47
|
-
'@context': 'https://schema.org',
|
|
48
|
-
'@type': 'HowTo',
|
|
49
|
-
name: title,
|
|
50
|
-
description,
|
|
51
|
-
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
55
|
-
'@context': 'https://schema.org',
|
|
56
|
-
'@type': 'SoftwareApplication',
|
|
57
|
-
name: title,
|
|
58
|
-
description,
|
|
59
|
-
applicationCategory: 'UtilityApplication',
|
|
60
|
-
operatingSystem: 'All',
|
|
61
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
62
|
-
inLanguage: 'ru',
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
const ui: ColorConverterUI = {
|
|
66
|
-
labelPreview: 'Предпросмотр (нажмите, чтобы скопировать HEX)',
|
|
67
|
-
labelHarmonies: 'Цветовые гармонии',
|
|
68
|
-
labelR: 'Красный',
|
|
69
|
-
labelG: 'Зеленый',
|
|
70
|
-
labelB: 'Синий',
|
|
71
|
-
labelComp: 'Компл.',
|
|
72
|
-
labelAna1: 'Аналог. 1',
|
|
73
|
-
labelAna2: 'Аналог. 2',
|
|
74
|
-
labelTri1: 'Триада 1',
|
|
75
|
-
labelTri2: 'Триада 2',
|
|
76
|
-
btnCopy: 'Копировать',
|
|
77
|
-
btnCopied: 'Скопировано',
|
|
78
|
-
contrastLabel: 'Контрастность',
|
|
79
|
-
clickToCopy: 'Нажмите, чтобы скопировать',
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
export const content: ToolLocaleContent<ColorConverterUI> = {
|
|
83
|
-
slug,
|
|
84
|
-
title,
|
|
85
|
-
description,
|
|
86
|
-
ui,
|
|
87
|
-
faqTitle: 'Часто задаваемые вопросы',
|
|
88
|
-
faq: faqData,
|
|
2
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
4
|
+
import type { ColorConverterUI } from '../ui';
|
|
5
|
+
|
|
6
|
+
const slug = 'cvhetovoj-konverter-rgb-hex-hsl';
|
|
7
|
+
const title = 'Онлайн конвертер цветов RGB, HEX и HSL';
|
|
8
|
+
const description = 'Мгновенно конвертируйте цвета между RGB, HEX и HSL. Генерируйте комплементарные цветовые гармонии и анализируйте контрастность по WCAG. 100% на стороне клиента и приватно.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Как работает конвертер цветов RGB в HEX и HSL?',
|
|
13
|
+
answer: 'Инструмент принимает значения красного, зеленого и синего (RGB) и использует математические алгоритмы для их преобразования в шестнадцатеричный эквивалент (HEX) или значения тона, насыщенности и светлоты (HSL). Он также работает в обратном порядке.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: 'Почему в своих проектах мне стоит использовать HSL вместо HEX?',
|
|
17
|
+
answer: 'Формат HSL гораздо более интуитивно понятен. Он позволяет настраивать насыщенность или светлоту без изменения самого цветового тона, что значительно упрощает создание гармоничных палитр или состояний кнопок (при наведении, отключено).',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: 'Что такое значение относительной контрастности?',
|
|
21
|
+
answer: 'Это показатель, который указывает на читаемость текста на фоне на основе его яркости. Высокая контрастность гарантирует, что люди с нарушениями зрения смогут прочитать контент в соответствии с рекомендациями по доступности WCAG.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: 'Безопасно ли использовать этот онлайн-конвертер цветов?',
|
|
25
|
+
answer: 'Безусловно. Поскольку он на 100% работает на стороне клиента, ваши данные о цвете никогда не покидают ваш компьютер. Вся обработка происходит прямо в вашем браузере, что гарантирует конфиденциальность и мгновенную работу.',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const howToData = [
|
|
30
|
+
{ name: 'Выберите цвет', text: 'Используйте ползунки красного, зеленого и синего или введите HEX-код прямо в текстовое поле.' },
|
|
31
|
+
{ name: 'Настройте каналы RGB', text: 'Передвигайте ползунки, чтобы изменить интенсивность каждого канала и увидеть обновление в режиме реального времени.' },
|
|
32
|
+
{ name: 'Скопируйте формат', text: 'Нажмите кнопку "Копировать" рядом с нужным форматом HEX, RGB или HSL.' },
|
|
33
|
+
{ name: 'Исследуйте гармонии', text: 'Нажмите на гармоничные цвета (комплементарные, аналогичные, триадические), чтобы скопировать их в буфер обмена.' },
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
37
|
+
'@context': 'https://schema.org',
|
|
38
|
+
'@type': 'FAQPage',
|
|
39
|
+
mainEntity: faqData.map((item) => ({
|
|
40
|
+
'@type': 'Question',
|
|
41
|
+
name: item.question,
|
|
42
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'HowTo',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
55
|
+
'@context': 'https://schema.org',
|
|
56
|
+
'@type': 'SoftwareApplication',
|
|
57
|
+
name: title,
|
|
58
|
+
description,
|
|
59
|
+
applicationCategory: 'UtilityApplication',
|
|
60
|
+
operatingSystem: 'All',
|
|
61
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
62
|
+
inLanguage: 'ru',
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const ui: ColorConverterUI = {
|
|
66
|
+
labelPreview: 'Предпросмотр (нажмите, чтобы скопировать HEX)',
|
|
67
|
+
labelHarmonies: 'Цветовые гармонии',
|
|
68
|
+
labelR: 'Красный',
|
|
69
|
+
labelG: 'Зеленый',
|
|
70
|
+
labelB: 'Синий',
|
|
71
|
+
labelComp: 'Компл.',
|
|
72
|
+
labelAna1: 'Аналог. 1',
|
|
73
|
+
labelAna2: 'Аналог. 2',
|
|
74
|
+
labelTri1: 'Триада 1',
|
|
75
|
+
labelTri2: 'Триада 2',
|
|
76
|
+
btnCopy: 'Копировать',
|
|
77
|
+
btnCopied: 'Скопировано',
|
|
78
|
+
contrastLabel: 'Контрастность',
|
|
79
|
+
clickToCopy: 'Нажмите, чтобы скопировать',
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export const content: ToolLocaleContent<ColorConverterUI> = {
|
|
83
|
+
slug,
|
|
84
|
+
title,
|
|
85
|
+
description,
|
|
86
|
+
ui,
|
|
87
|
+
faqTitle: 'Часто задаваемые вопросы',
|
|
88
|
+
faq: faqData,
|
|
89
89
|
bibliographyTitle: 'Ресурсы по цвету и веб-дизайну',
|
|
90
90
|
bibliography,
|
|
91
|
-
howTo: howToData,
|
|
92
|
-
schemas: [faqSchema, howToSchema, appSchema],
|
|
93
|
-
seo: [
|
|
94
|
-
{ type: 'title', text: 'Конвертер цветов RGB в HEX и HSL для разработчиков', level: 2 },
|
|
95
|
-
{
|
|
96
|
-
type: 'paragraph',
|
|
97
|
-
html: 'В мире <strong>frontend-разработки</strong> и <strong>UI/UX дизайна</strong> управление цветом - это постоянная задача. Наш <strong>онлайн-конвертер цветов</strong> позволяет мгновенно и с математической точностью преобразовывать значения между <strong>HEX, RGB и HSL</strong>.',
|
|
98
|
-
},
|
|
99
|
-
{ type: 'title', text: 'Форматы цветов: HEX, RGB и HSL', level: 3 },
|
|
100
|
-
{
|
|
101
|
-
type: 'list',
|
|
102
|
-
items: [
|
|
103
|
-
'<strong>HEX (шестнадцатеричный):</strong> стандарт де-факто для CSS. Компактный и удобный для обмена в коде.',
|
|
104
|
-
'<strong>RGB (Красный, Зеленый, Синий):</strong> на основе аддитивной системы света. Идеально подходит для прямого манипулирования каналами или применения прозрачности с помощью RGBA.',
|
|
105
|
-
'<strong>HSL (Цветовой тон, Насыщенность, Светлота):</strong> самый интуитивно понятный формат. Настраивайте тон, насыщенность и светлоту для создания гармоничных палитр.',
|
|
106
|
-
],
|
|
107
|
-
},
|
|
108
|
-
{ type: 'title', text: 'Контрастность и доступность по WCAG', level: 3 },
|
|
109
|
-
{
|
|
110
|
-
type: 'paragraph',
|
|
111
|
-
html: 'Калькулятор включает измерение <strong>относительной контрастности</strong> на основе яркости. Это помогает вам соблюдать рекомендации <strong>WCAG</strong>, гарантируя читаемость вашего текста на выбранном фоне.',
|
|
112
|
-
},
|
|
113
|
-
{ type: 'title', text: 'Автоматические цветовые гармонии', level: 3 },
|
|
114
|
-
{
|
|
115
|
-
type: 'list',
|
|
116
|
-
items: [
|
|
117
|
-
'<strong>Комплементарные:</strong> противоположный цвет на цветовом круге, идеально подходит для максимального контраста.',
|
|
118
|
-
'<strong>Аналогичные:</strong> соседние цвета, которые создают плавные, гармоничные переходы.',
|
|
119
|
-
'<strong>Триадические:</strong> три равноудаленных цвета для ярких, сбалансированных композиций.',
|
|
120
|
-
],
|
|
121
|
-
},
|
|
122
|
-
],
|
|
123
|
-
};
|
|
91
|
+
howTo: howToData,
|
|
92
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
93
|
+
seo: [
|
|
94
|
+
{ type: 'title', text: 'Конвертер цветов RGB в HEX и HSL для разработчиков', level: 2 },
|
|
95
|
+
{
|
|
96
|
+
type: 'paragraph',
|
|
97
|
+
html: 'В мире <strong>frontend-разработки</strong> и <strong>UI/UX дизайна</strong> управление цветом - это постоянная задача. Наш <strong>онлайн-конвертер цветов</strong> позволяет мгновенно и с математической точностью преобразовывать значения между <strong>HEX, RGB и HSL</strong>.',
|
|
98
|
+
},
|
|
99
|
+
{ type: 'title', text: 'Форматы цветов: HEX, RGB и HSL', level: 3 },
|
|
100
|
+
{
|
|
101
|
+
type: 'list',
|
|
102
|
+
items: [
|
|
103
|
+
'<strong>HEX (шестнадцатеричный):</strong> стандарт де-факто для CSS. Компактный и удобный для обмена в коде.',
|
|
104
|
+
'<strong>RGB (Красный, Зеленый, Синий):</strong> на основе аддитивной системы света. Идеально подходит для прямого манипулирования каналами или применения прозрачности с помощью RGBA.',
|
|
105
|
+
'<strong>HSL (Цветовой тон, Насыщенность, Светлота):</strong> самый интуитивно понятный формат. Настраивайте тон, насыщенность и светлоту для создания гармоничных палитр.',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{ type: 'title', text: 'Контрастность и доступность по WCAG', level: 3 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Калькулятор включает измерение <strong>относительной контрастности</strong> на основе яркости. Это помогает вам соблюдать рекомендации <strong>WCAG</strong>, гарантируя читаемость вашего текста на выбранном фоне.',
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: 'Автоматические цветовые гармонии', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>Комплементарные:</strong> противоположный цвет на цветовом круге, идеально подходит для максимального контраста.',
|
|
118
|
+
'<strong>Аналогичные:</strong> соседние цвета, которые создают плавные, гармоничные переходы.',
|
|
119
|
+
'<strong>Триадические:</strong> три равноудаленных цвета для ярких, сбалансированных композиций.',
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
-
import { colorConverter } from './index';
|
|
4
|
-
import type { KnownLocale } from '../../types';
|
|
5
|
-
|
|
6
|
-
interface Props {
|
|
7
|
-
locale?: KnownLocale;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const { locale = 'es' } = Astro.props;
|
|
11
|
-
const content = await colorConverter.i18n[locale]?.();
|
|
12
|
-
if (!content) return null;
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { colorConverter } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await colorConverter.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -1,125 +1,125 @@
|
|
|
1
1
|
import { bibliography } from '../bibliography';
|
|
2
|
-
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
3
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
4
|
-
import type { ConversorExcelCsvHtmlUI } from '../ui';
|
|
5
|
-
|
|
6
|
-
const slug = 'konwerter-tabel-excel-csv-html';
|
|
7
|
-
const title = 'Generator kodu konwertera tabel Excel i CSV na HTML';
|
|
8
|
-
const description = 'Natychmiast konwertuj dane Excel lub CSV na czyste, semantyczne tabele HTML. Darmowe narzędzie dla programistów i twórców treści.';
|
|
9
|
-
|
|
10
|
-
const faqData = [
|
|
11
|
-
{
|
|
12
|
-
question: 'Jak przekonwertować plik Excel (.xlsx) na HTML?',
|
|
13
|
-
answer: 'Najpierw otwórz plik w programie Excel i zapisz go jako CSV (rozdzielany przecinkami). Następnie prześlij ten plik CSV do naszego narzędzia lub wklej jego zawartość, aby otrzymać kod tabeli HTML.',
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
question: 'Czy wygenerowany kod zawiera style CSS?',
|
|
17
|
-
answer: 'Generator tworzy czysty kod HTML z opcjonalnymi klasami dla obramowań i pasów zebry. Ostateczne style wizualne zależą od własnego kodu CSS Twojej witryny, co zapewnia idealną integrację.',
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
question: 'Czy mogę przesyłać bardzo duże pliki CSV?',
|
|
21
|
-
answer: 'Tak, nasze narzędzie przetwarza dane lokalnie w Twojej przeglądarce. Oznacza to, że jest bardzo szybkie i bezpieczne, ponieważ Twoje dane nigdy nie są przesyłane przez Internet.',
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
question: 'Czy narzędzie jest kompatybilne z Arkuszami Google?',
|
|
25
|
-
answer: 'Absolutnie. W Arkuszach Google wybierz Plik > Pobierz > Wartości rozdzielane przecinkami (.csv) i użyj tego pliku w naszym narzędziu.',
|
|
26
|
-
},
|
|
27
|
-
];
|
|
28
|
-
|
|
29
|
-
const howToData = [
|
|
30
|
-
{
|
|
31
|
-
name: 'Przygotuj dane',
|
|
32
|
-
text: 'Przygotuj swój plik Excel lub CSV. Upewnij się, że dane są poprawne.',
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
name: 'Załaduj dane',
|
|
36
|
-
text: 'Wklej tekst CSV w obszarze wejściowym lub przeciągnij plik bezpośrednio do konwertera.',
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: 'Skonfiguruj tabelę',
|
|
40
|
-
text: 'Wybierz, czy chcesz użyć pierwszego wiersza jako nagłówka i czy chcesz zastosować podstawowe style.',
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
name: 'Skopiuj kod',
|
|
44
|
-
text: 'Przełącz się na kartę "Kod HTML" i skopiuj wynik, aby wkleić go na swojej stronie internetowej.',
|
|
45
|
-
},
|
|
46
|
-
];
|
|
47
|
-
|
|
48
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
49
|
-
'@context': 'https://schema.org',
|
|
50
|
-
'@type': 'FAQPage',
|
|
51
|
-
mainEntity: faqData.map((item) => ({
|
|
52
|
-
'@type': 'Question',
|
|
53
|
-
name: item.question,
|
|
54
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
55
|
-
})),
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
const howToSchema: WithContext<HowToThing> = {
|
|
59
|
-
'@context': 'https://schema.org',
|
|
60
|
-
'@type': 'HowTo',
|
|
61
|
-
name: title,
|
|
62
|
-
description,
|
|
63
|
-
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
67
|
-
'@context': 'https://schema.org',
|
|
68
|
-
'@type': 'SoftwareApplication',
|
|
69
|
-
name: title,
|
|
70
|
-
description,
|
|
71
|
-
applicationCategory: 'UtilityApplication',
|
|
72
|
-
operatingSystem: 'All',
|
|
73
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'PLN' },
|
|
74
|
-
inLanguage: 'pl',
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
const ui: ConversorExcelCsvHtmlUI = {
|
|
78
|
-
csvInputLabel: 'Wklej tutaj swój kod CSV',
|
|
79
|
-
csvInputPlaceholder: 'Imię,Wiek,Miasto\nJan,25,Warszawa\nAnna,30,Kraków',
|
|
80
|
-
uploadLabel: 'Lub prześlij swój plik (CSV)',
|
|
81
|
-
dragDropLabel: 'Przeciągnij i upuść plik tutaj',
|
|
82
|
-
headerCheckboxLabel: 'Użyj pierwszego wiersza jako nagłówka',
|
|
83
|
-
bordersCheckboxLabel: 'Dodaj obramowanie',
|
|
84
|
-
stripeCheckboxLabel: 'Pasy zebry',
|
|
85
|
-
previewTabLabel: 'Podgląd',
|
|
86
|
-
codeTabLabel: 'Kod HTML',
|
|
87
|
-
emptyStateLabel: 'Wprowadź dane, aby zobaczyć tabelę',
|
|
88
|
-
copyButtonLabel: 'Kopiuj kod',
|
|
89
|
-
copiedLabel: 'Skopiowano!',
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
export const content: ToolLocaleContent<ConversorExcelCsvHtmlUI> = {
|
|
93
|
-
slug,
|
|
94
|
-
title,
|
|
95
|
-
description,
|
|
96
|
-
ui,
|
|
97
|
-
faqTitle: 'Często zadawane pytania',
|
|
98
|
-
faq: faqData,
|
|
99
|
-
bibliographyTitle: 'Zasoby dotyczące tabel HTML i formatów danych',
|
|
100
|
-
bibliography,
|
|
101
|
-
howTo: howToData,
|
|
102
|
-
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
|
-
seo: [
|
|
104
|
-
{ type: 'title', text: 'Łatwo konwertuj pliki Excel i CSV na tabele HTML', level: 2 },
|
|
105
|
-
{
|
|
106
|
-
type: 'paragraph',
|
|
107
|
-
html: 'W nowoczesnym tworzeniu stron internetowych prezentowanie danych tabelarycznych jest jednym z najskuteczniejszych sposobów przekazywania ustrukturyzowanych informacji. Jednak ręczne konwertowanie danych z arkusza kalkulacyjnego, takiego jak <strong>Excel</strong> lub plik <strong>CSV</strong>, na znaczniki HTML <code><table></code>, <code><tr></code> i <code><td></code> jest żmudne i podatne na błędy.',
|
|
108
|
-
},
|
|
109
|
-
{ type: 'title', text: 'Dlaczego warto używać semantycznych tabel HTML?', level: 3 },
|
|
110
|
-
{
|
|
111
|
-
type: 'list',
|
|
112
|
-
items: [
|
|
113
|
-
'<strong>Dostępność:</strong> Czytniki ekranu mogą interpretować strukturę i pomagać użytkownikom z niepełnosprawnością wzroku.',
|
|
114
|
-
'<strong>SEO:</strong> Wyszukiwarki indeksują zawartość komórek, co poprawia ranking Twoich danych.',
|
|
115
|
-
'<strong>Responsywność:</strong> Przy odrobinie kodu CSS tabele HTML mogą dostosowywać się do urządzeń mobilnych.',
|
|
116
|
-
'<strong>Łatwość konserwacji:</strong> Znacznie łatwiej jest edytować dane w formacie HTML niż ponownie generować cały obraz.',
|
|
117
|
-
],
|
|
118
|
-
},
|
|
119
|
-
{ type: 'title', text: 'Jak działa konwerter programu Excel na HTML', level: 3 },
|
|
120
|
-
{
|
|
121
|
-
type: 'paragraph',
|
|
122
|
-
html: 'Nasze narzędzie wykorzystuje natywny parser tekstu, który przetwarza pliki rozdzielane przecinkami (CSV). Większość programów do obsługi arkuszy kalkulacyjnych, w tym Microsoft Excel, Arkusze Google i LibreOffice Calc, umożliwia eksportowanie danych w formacie CSV.',
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
};
|
|
2
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
4
|
+
import type { ConversorExcelCsvHtmlUI } from '../ui';
|
|
5
|
+
|
|
6
|
+
const slug = 'konwerter-tabel-excel-csv-html';
|
|
7
|
+
const title = 'Generator kodu konwertera tabel Excel i CSV na HTML';
|
|
8
|
+
const description = 'Natychmiast konwertuj dane Excel lub CSV na czyste, semantyczne tabele HTML. Darmowe narzędzie dla programistów i twórców treści.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Jak przekonwertować plik Excel (.xlsx) na HTML?',
|
|
13
|
+
answer: 'Najpierw otwórz plik w programie Excel i zapisz go jako CSV (rozdzielany przecinkami). Następnie prześlij ten plik CSV do naszego narzędzia lub wklej jego zawartość, aby otrzymać kod tabeli HTML.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: 'Czy wygenerowany kod zawiera style CSS?',
|
|
17
|
+
answer: 'Generator tworzy czysty kod HTML z opcjonalnymi klasami dla obramowań i pasów zebry. Ostateczne style wizualne zależą od własnego kodu CSS Twojej witryny, co zapewnia idealną integrację.',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: 'Czy mogę przesyłać bardzo duże pliki CSV?',
|
|
21
|
+
answer: 'Tak, nasze narzędzie przetwarza dane lokalnie w Twojej przeglądarce. Oznacza to, że jest bardzo szybkie i bezpieczne, ponieważ Twoje dane nigdy nie są przesyłane przez Internet.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: 'Czy narzędzie jest kompatybilne z Arkuszami Google?',
|
|
25
|
+
answer: 'Absolutnie. W Arkuszach Google wybierz Plik > Pobierz > Wartości rozdzielane przecinkami (.csv) i użyj tego pliku w naszym narzędziu.',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const howToData = [
|
|
30
|
+
{
|
|
31
|
+
name: 'Przygotuj dane',
|
|
32
|
+
text: 'Przygotuj swój plik Excel lub CSV. Upewnij się, że dane są poprawne.',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'Załaduj dane',
|
|
36
|
+
text: 'Wklej tekst CSV w obszarze wejściowym lub przeciągnij plik bezpośrednio do konwertera.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Skonfiguruj tabelę',
|
|
40
|
+
text: 'Wybierz, czy chcesz użyć pierwszego wiersza jako nagłówka i czy chcesz zastosować podstawowe style.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Skopiuj kod',
|
|
44
|
+
text: 'Przełącz się na kartę "Kod HTML" i skopiuj wynik, aby wkleić go na swojej stronie internetowej.',
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
49
|
+
'@context': 'https://schema.org',
|
|
50
|
+
'@type': 'FAQPage',
|
|
51
|
+
mainEntity: faqData.map((item) => ({
|
|
52
|
+
'@type': 'Question',
|
|
53
|
+
name: item.question,
|
|
54
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
55
|
+
})),
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
59
|
+
'@context': 'https://schema.org',
|
|
60
|
+
'@type': 'HowTo',
|
|
61
|
+
name: title,
|
|
62
|
+
description,
|
|
63
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
67
|
+
'@context': 'https://schema.org',
|
|
68
|
+
'@type': 'SoftwareApplication',
|
|
69
|
+
name: title,
|
|
70
|
+
description,
|
|
71
|
+
applicationCategory: 'UtilityApplication',
|
|
72
|
+
operatingSystem: 'All',
|
|
73
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'PLN' },
|
|
74
|
+
inLanguage: 'pl',
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const ui: ConversorExcelCsvHtmlUI = {
|
|
78
|
+
csvInputLabel: 'Wklej tutaj swój kod CSV',
|
|
79
|
+
csvInputPlaceholder: 'Imię,Wiek,Miasto\nJan,25,Warszawa\nAnna,30,Kraków',
|
|
80
|
+
uploadLabel: 'Lub prześlij swój plik (CSV)',
|
|
81
|
+
dragDropLabel: 'Przeciągnij i upuść plik tutaj',
|
|
82
|
+
headerCheckboxLabel: 'Użyj pierwszego wiersza jako nagłówka',
|
|
83
|
+
bordersCheckboxLabel: 'Dodaj obramowanie',
|
|
84
|
+
stripeCheckboxLabel: 'Pasy zebry',
|
|
85
|
+
previewTabLabel: 'Podgląd',
|
|
86
|
+
codeTabLabel: 'Kod HTML',
|
|
87
|
+
emptyStateLabel: 'Wprowadź dane, aby zobaczyć tabelę',
|
|
88
|
+
copyButtonLabel: 'Kopiuj kod',
|
|
89
|
+
copiedLabel: 'Skopiowano!',
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const content: ToolLocaleContent<ConversorExcelCsvHtmlUI> = {
|
|
93
|
+
slug,
|
|
94
|
+
title,
|
|
95
|
+
description,
|
|
96
|
+
ui,
|
|
97
|
+
faqTitle: 'Często zadawane pytania',
|
|
98
|
+
faq: faqData,
|
|
99
|
+
bibliographyTitle: 'Zasoby dotyczące tabel HTML i formatów danych',
|
|
100
|
+
bibliography,
|
|
101
|
+
howTo: howToData,
|
|
102
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
|
+
seo: [
|
|
104
|
+
{ type: 'title', text: 'Łatwo konwertuj pliki Excel i CSV na tabele HTML', level: 2 },
|
|
105
|
+
{
|
|
106
|
+
type: 'paragraph',
|
|
107
|
+
html: 'W nowoczesnym tworzeniu stron internetowych prezentowanie danych tabelarycznych jest jednym z najskuteczniejszych sposobów przekazywania ustrukturyzowanych informacji. Jednak ręczne konwertowanie danych z arkusza kalkulacyjnego, takiego jak <strong>Excel</strong> lub plik <strong>CSV</strong>, na znaczniki HTML <code><table></code>, <code><tr></code> i <code><td></code> jest żmudne i podatne na błędy.',
|
|
108
|
+
},
|
|
109
|
+
{ type: 'title', text: 'Dlaczego warto używać semantycznych tabel HTML?', level: 3 },
|
|
110
|
+
{
|
|
111
|
+
type: 'list',
|
|
112
|
+
items: [
|
|
113
|
+
'<strong>Dostępność:</strong> Czytniki ekranu mogą interpretować strukturę i pomagać użytkownikom z niepełnosprawnością wzroku.',
|
|
114
|
+
'<strong>SEO:</strong> Wyszukiwarki indeksują zawartość komórek, co poprawia ranking Twoich danych.',
|
|
115
|
+
'<strong>Responsywność:</strong> Przy odrobinie kodu CSS tabele HTML mogą dostosowywać się do urządzeń mobilnych.',
|
|
116
|
+
'<strong>Łatwość konserwacji:</strong> Znacznie łatwiej jest edytować dane w formacie HTML niż ponownie generować cały obraz.',
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
{ type: 'title', text: 'Jak działa konwerter programu Excel na HTML', level: 3 },
|
|
120
|
+
{
|
|
121
|
+
type: 'paragraph',
|
|
122
|
+
html: 'Nasze narzędzie wykorzystuje natywny parser tekstu, który przetwarza pliki rozdzielane przecinkami (CSV). Większość programów do obsługi arkuszy kalkulacyjnych, w tym Microsoft Excel, Arkusze Google i LibreOffice Calc, umożliwia eksportowanie danych w formacie CSV.',
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
};
|