@jjlmoya/utils-developer 1.11.0 → 1.13.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 (100) hide show
  1. package/package.json +7 -4
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/entries.ts +74 -0
  4. package/src/tool/aspectRatio/aspect-ratio-calculator.css +276 -0
  5. package/src/tool/aspectRatio/component.astro +0 -278
  6. package/src/tool/aspectRatio/entry.ts +30 -0
  7. package/src/tool/aspectRatio/index.ts +2 -32
  8. package/src/tool/calculadoraTiempoDatos/component.astro +0 -524
  9. package/src/tool/calculadoraTiempoDatos/data-time-calculator-web-speed-impact.css +522 -0
  10. package/src/tool/calculadoraTiempoDatos/entry.ts +29 -0
  11. package/src/tool/calculadoraTiempoDatos/index.ts +2 -31
  12. package/src/tool/colorConverter/color-converter-rgb-hex-hsl.css +262 -0
  13. package/src/tool/colorConverter/component.astro +0 -264
  14. package/src/tool/colorConverter/entry.ts +29 -0
  15. package/src/tool/colorConverter/index.ts +2 -31
  16. package/src/tool/conversorExcelCsvHtml/component.astro +0 -360
  17. package/src/tool/conversorExcelCsvHtml/entry.ts +29 -0
  18. package/src/tool/conversorExcelCsvHtml/excel-csv-html-table-converter.css +358 -0
  19. package/src/tool/conversorExcelCsvHtml/index.ts +2 -31
  20. package/src/tool/cronGenerator/component.astro +0 -317
  21. package/src/tool/cronGenerator/cron.css +315 -0
  22. package/src/tool/cronGenerator/entry.ts +30 -0
  23. package/src/tool/cronGenerator/index.ts +2 -32
  24. package/src/tool/cssSpecificityCalculator/component.astro +0 -205
  25. package/src/tool/cssSpecificityCalculator/css-specificity-calculator.css +203 -0
  26. package/src/tool/cssSpecificityCalculator/entry.ts +30 -0
  27. package/src/tool/cssSpecificityCalculator/index.ts +2 -32
  28. package/src/tool/cssToInlineConverter/component.astro +0 -150
  29. package/src/tool/cssToInlineConverter/css-to-inline-converter.css +148 -0
  30. package/src/tool/cssToInlineConverter/entry.ts +30 -0
  31. package/src/tool/cssToInlineConverter/index.ts +2 -32
  32. package/src/tool/duplicateCssRemover/component.astro +0 -197
  33. package/src/tool/duplicateCssRemover/duplicate-css-remover.css +195 -0
  34. package/src/tool/duplicateCssRemover/entry.ts +30 -0
  35. package/src/tool/duplicateCssRemover/index.ts +2 -32
  36. package/src/tool/generadorSecurityTxt/component.astro +0 -231
  37. package/src/tool/generadorSecurityTxt/entry.ts +29 -0
  38. package/src/tool/generadorSecurityTxt/index.ts +2 -31
  39. package/src/tool/generadorSecurityTxt/security-txt-generator-rfc-9116.css +229 -0
  40. package/src/tool/hashGenerator/component.astro +0 -229
  41. package/src/tool/hashGenerator/entry.ts +29 -0
  42. package/src/tool/hashGenerator/hash-generator.css +227 -0
  43. package/src/tool/hashGenerator/index.ts +2 -31
  44. package/src/tool/inspectorCertificadosSsl/component.astro +0 -261
  45. package/src/tool/inspectorCertificadosSsl/entry.ts +45 -0
  46. package/src/tool/inspectorCertificadosSsl/index.ts +2 -47
  47. package/src/tool/inspectorCertificadosSsl/ssl-tls-certificate-inspector.css +259 -0
  48. package/src/tool/jsonFormatter/component.astro +0 -346
  49. package/src/tool/jsonFormatter/entry.ts +30 -0
  50. package/src/tool/jsonFormatter/index.ts +2 -32
  51. package/src/tool/jsonFormatter/json-formatter.css +344 -0
  52. package/src/tool/keycode/component.astro +0 -298
  53. package/src/tool/keycode/entry.ts +30 -0
  54. package/src/tool/keycode/index.ts +2 -32
  55. package/src/tool/keycode/keycode.css +296 -0
  56. package/src/tool/llmCostCalculator/component.astro +0 -253
  57. package/src/tool/llmCostCalculator/entry.ts +46 -0
  58. package/src/tool/llmCostCalculator/index.ts +2 -48
  59. package/src/tool/llmCostCalculator/llm-cost-calculator.css +251 -0
  60. package/src/tool/mobileMockupGenerator/component.astro +0 -906
  61. package/src/tool/mobileMockupGenerator/entry.ts +45 -0
  62. package/src/tool/mobileMockupGenerator/index.ts +2 -47
  63. package/src/tool/mobileMockupGenerator/mobile-mockup-generator.css +904 -0
  64. package/src/tool/musicalTypography/component.astro +0 -291
  65. package/src/tool/musicalTypography/entry.ts +29 -0
  66. package/src/tool/musicalTypography/index.ts +2 -31
  67. package/src/tool/musicalTypography/musical-typography.css +289 -0
  68. package/src/tool/placeholderGenerator/component.astro +0 -255
  69. package/src/tool/placeholderGenerator/entry.ts +46 -0
  70. package/src/tool/placeholderGenerator/index.ts +2 -48
  71. package/src/tool/placeholderGenerator/placeholder-image-generator.css +253 -0
  72. package/src/tool/promptLibrary/component.astro +0 -689
  73. package/src/tool/promptLibrary/entry.ts +45 -0
  74. package/src/tool/promptLibrary/index.ts +2 -47
  75. package/src/tool/promptLibrary/prompt-library.css +687 -0
  76. package/src/tool/readabilityCalculator/component.astro +0 -322
  77. package/src/tool/readabilityCalculator/entry.ts +45 -0
  78. package/src/tool/readabilityCalculator/index.ts +2 -47
  79. package/src/tool/readabilityCalculator/visual-readability-calculator-wcag-apca.css +320 -0
  80. package/src/tool/svgSanitizer/component.astro +0 -289
  81. package/src/tool/svgSanitizer/entry.ts +45 -0
  82. package/src/tool/svgSanitizer/index.ts +2 -47
  83. package/src/tool/svgSanitizer/svg-sanitizer.css +287 -0
  84. package/src/tool/svgToCss/component.astro +0 -196
  85. package/src/tool/svgToCss/entry.ts +30 -0
  86. package/src/tool/svgToCss/index.ts +2 -32
  87. package/src/tool/svgToCss/svg-to-css-converter.css +194 -0
  88. package/src/tool/urlCleaner/component.astro +0 -282
  89. package/src/tool/urlCleaner/entry.ts +45 -0
  90. package/src/tool/urlCleaner/index.ts +2 -47
  91. package/src/tool/urlCleaner/url-tracking-cleaner.css +280 -0
  92. package/src/tool/urlEncoderDecoder/component.astro +0 -168
  93. package/src/tool/urlEncoderDecoder/entry.ts +30 -0
  94. package/src/tool/urlEncoderDecoder/index.ts +2 -32
  95. package/src/tool/urlEncoderDecoder/url-encoder-decoder.css +166 -0
  96. package/src/tool/utmGenerator/component.astro +0 -156
  97. package/src/tool/utmGenerator/entry.ts +29 -0
  98. package/src/tool/utmGenerator/index.ts +2 -31
  99. package/src/tool/utmGenerator/utm-generator.css +154 -0
  100. package/src/tools.ts +1 -1
@@ -0,0 +1,29 @@
1
+ import type { DeveloperToolEntry, ToolLocaleContent } from '../../types';
2
+ import type { GeneradorSecurityTxtUI } from './ui';
3
+
4
+ export type GeneradorSecurityTxtLocaleContent = ToolLocaleContent<GeneradorSecurityTxtUI>;
5
+
6
+ export const generadorSecurityTxt: DeveloperToolEntry<GeneradorSecurityTxtUI> = {
7
+ id: 'generador-security-txt',
8
+ icons: {
9
+ bg: 'mdi:shield-alert',
10
+ fg: 'mdi:file-document',
11
+ },
12
+ i18n: {
13
+ de: async () => (await import('./i18n/de')).content,
14
+ en: async () => (await import('./i18n/en')).content,
15
+ es: async () => (await import('./i18n/es')).content,
16
+ fr: async () => (await import('./i18n/fr')).content,
17
+ id: async () => (await import('./i18n/id')).content,
18
+ it: async () => (await import('./i18n/it')).content,
19
+ ja: async () => (await import('./i18n/ja')).content,
20
+ ko: async () => (await import('./i18n/ko')).content,
21
+ nl: async () => (await import('./i18n/nl')).content,
22
+ pl: async () => (await import('./i18n/pl')).content,
23
+ pt: async () => (await import('./i18n/pt')).content,
24
+ ru: async () => (await import('./i18n/ru')).content,
25
+ sv: async () => (await import('./i18n/sv')).content,
26
+ tr: async () => (await import('./i18n/tr')).content,
27
+ zh: async () => (await import('./i18n/zh')).content,
28
+ },
29
+ };
@@ -1,34 +1,5 @@
1
- import type { DeveloperToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
2
- import type { GeneradorSecurityTxtUI } from './ui';
3
-
4
- export type GeneradorSecurityTxtLocaleContent = ToolLocaleContent<GeneradorSecurityTxtUI>;
5
-
6
- export const generadorSecurityTxt: DeveloperToolEntry<GeneradorSecurityTxtUI> = {
7
- id: 'generador-security-txt',
8
- icons: {
9
- bg: 'mdi:shield-alert',
10
- fg: 'mdi:file-document',
11
- },
12
- i18n: {
13
- de: async () => (await import('./i18n/de')).content,
14
- en: async () => (await import('./i18n/en')).content,
15
- es: async () => (await import('./i18n/es')).content,
16
- fr: async () => (await import('./i18n/fr')).content,
17
- id: async () => (await import('./i18n/id')).content,
18
- it: async () => (await import('./i18n/it')).content,
19
- ja: async () => (await import('./i18n/ja')).content,
20
- ko: async () => (await import('./i18n/ko')).content,
21
- nl: async () => (await import('./i18n/nl')).content,
22
- pl: async () => (await import('./i18n/pl')).content,
23
- pt: async () => (await import('./i18n/pt')).content,
24
- ru: async () => (await import('./i18n/ru')).content,
25
- sv: async () => (await import('./i18n/sv')).content,
26
- tr: async () => (await import('./i18n/tr')).content,
27
- zh: async () => (await import('./i18n/zh')).content,
28
- },
29
- };
30
-
31
-
1
+ import { generadorSecurityTxt } from './entry';
2
+ export * from './entry';
32
3
  export const GENERADOR_SECURITY_TXT_TOOL: ToolDefinition = {
33
4
  entry: generadorSecurityTxt,
34
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,229 @@
1
+ .gst-root {
2
+ width: 100%;
3
+ }
4
+
5
+ .gst-container {
6
+ max-width: 900px;
7
+ margin: 0 auto;
8
+ display: flex;
9
+ flex-direction: column;
10
+ gap: 1.5rem;
11
+ padding-bottom: 2rem;
12
+ }
13
+
14
+ .gst-glass-card {
15
+ background: rgba(255, 255, 255, 0.7);
16
+ backdrop-filter: blur(12px);
17
+ border: 1px solid rgba(255, 255, 255, 0.3);
18
+ border-radius: 1.5rem;
19
+ padding: 1.5rem;
20
+ box-shadow: 0 8px 32px rgba(31, 38, 135, 0.07);
21
+ }
22
+
23
+ :global(.theme-dark) .gst-glass-card {
24
+ background: rgba(20, 20, 25, 0.7);
25
+ border: 1px solid rgba(255, 255, 255, 0.05);
26
+ }
27
+
28
+ .gst-sections {
29
+ display: grid;
30
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
31
+ gap: 1.5rem;
32
+ }
33
+
34
+ .gst-section-group {
35
+ display: flex;
36
+ flex-direction: column;
37
+ gap: 1.25rem;
38
+ }
39
+
40
+ .gst-group-title {
41
+ font-size: 0.875rem;
42
+ font-weight: 700;
43
+ color: rgb(100, 116, 139);
44
+ text-transform: uppercase;
45
+ letter-spacing: 0.05em;
46
+ display: flex;
47
+ align-items: center;
48
+ gap: 0.5rem;
49
+ margin-bottom: 0.5rem;
50
+ }
51
+
52
+ :global(.theme-dark) .gst-group-title {
53
+ color: rgb(148, 163, 184);
54
+ }
55
+
56
+ .gst-icon {
57
+ width: 1rem;
58
+ height: 1rem;
59
+ color: var(--gst-theme-color, #4f46e5);
60
+ }
61
+
62
+ .gst-input-field {
63
+ display: flex;
64
+ flex-direction: column;
65
+ gap: 0.5rem;
66
+ }
67
+
68
+ .gst-input-field label {
69
+ font-size: 0.875rem;
70
+ font-weight: 600;
71
+ color: rgb(51, 65, 85);
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 0.5rem;
75
+ }
76
+
77
+ :global(.theme-dark) .gst-input-field label {
78
+ color: rgb(203, 213, 225);
79
+ }
80
+
81
+ .gst-icon-small {
82
+ width: 0.875rem;
83
+ height: 0.875rem;
84
+ }
85
+
86
+ .gst-premium-input {
87
+ background: white;
88
+ border: 1px solid rgb(226, 232, 240);
89
+ border-radius: 0.75rem;
90
+ padding: 0.75rem 1rem;
91
+ font-size: 1rem;
92
+ outline: none;
93
+ transition: all 0.2s ease;
94
+ width: 100%;
95
+ box-sizing: border-box;
96
+ }
97
+
98
+ :global(.theme-dark) .gst-premium-input {
99
+ background: rgb(15, 23, 42);
100
+ border-color: rgb(51, 65, 85);
101
+ color: white;
102
+ }
103
+
104
+ .gst-premium-input:focus {
105
+ border-color: var(--gst-theme-color, #4f46e5);
106
+ box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
107
+ }
108
+
109
+ .gst-field-tip {
110
+ font-size: 0.75rem;
111
+ color: rgb(100, 116, 139);
112
+ }
113
+
114
+ :global(.theme-dark) .gst-field-tip {
115
+ color: rgb(148, 163, 184);
116
+ }
117
+
118
+ .gst-result-header {
119
+ display: flex;
120
+ justify-content: space-between;
121
+ align-items: center;
122
+ margin-bottom: 1rem;
123
+ flex-wrap: wrap;
124
+ gap: 1rem;
125
+ }
126
+
127
+ .gst-result-title {
128
+ font-size: 1.125rem;
129
+ font-weight: 700;
130
+ color: rgb(30, 41, 59);
131
+ }
132
+
133
+ :global(.theme-dark) .gst-result-title {
134
+ color: white;
135
+ }
136
+
137
+ .gst-code-display {
138
+ background: rgba(0, 0, 0, 0.03);
139
+ padding: 1.25rem;
140
+ border-radius: 1rem;
141
+ font-size: 0.9rem;
142
+ line-height: 1.5;
143
+ color: rgb(51, 65, 85);
144
+ min-height: 200px;
145
+ max-height: 400px;
146
+ overflow-y: auto;
147
+ border: 1px solid rgba(0, 0, 0, 0.05);
148
+ }
149
+
150
+ :global(.theme-dark) .gst-code-display {
151
+ background: rgba(255, 255, 255, 0.03);
152
+ color: rgb(203, 213, 225);
153
+ border-color: rgba(255, 255, 255, 0.05);
154
+ }
155
+
156
+ .gst-code-display pre {
157
+ margin: 0;
158
+ white-space: pre-wrap;
159
+ word-break: break-all;
160
+ }
161
+
162
+ .gst-actions {
163
+ display: flex;
164
+ gap: 0.75rem;
165
+ }
166
+
167
+ .gst-btn-primary {
168
+ background: var(--gst-theme-color, #4f46e5);
169
+ color: white;
170
+ border: none;
171
+ border-radius: 0.75rem;
172
+ padding: 0.6rem 1.25rem;
173
+ font-weight: 600;
174
+ cursor: pointer;
175
+ display: flex;
176
+ align-items: center;
177
+ gap: 0.5rem;
178
+ transition: all 0.2s ease;
179
+ }
180
+
181
+ .gst-btn-primary:hover {
182
+ opacity: 0.9;
183
+ transform: translateY(-1px);
184
+ }
185
+
186
+ .gst-btn-secondary {
187
+ background: white;
188
+ color: rgb(30, 41, 59);
189
+ border: 1px solid rgb(226, 232, 240);
190
+ border-radius: 0.75rem;
191
+ padding: 0.6rem 1.25rem;
192
+ font-weight: 600;
193
+ cursor: pointer;
194
+ display: flex;
195
+ align-items: center;
196
+ gap: 0.5rem;
197
+ transition: all 0.2s ease;
198
+ }
199
+
200
+ :global(.theme-dark) .gst-btn-secondary {
201
+ background: rgb(30, 41, 59);
202
+ color: white;
203
+ border-color: rgb(51, 65, 85);
204
+ }
205
+
206
+ .gst-btn-secondary:hover {
207
+ background: rgb(248, 250, 252);
208
+ }
209
+
210
+ :global(.theme-dark) .gst-btn-secondary:hover {
211
+ background: rgb(51, 65, 85);
212
+ }
213
+
214
+ @media (max-width: 640px) {
215
+ .gst-result-header {
216
+ flex-direction: column;
217
+ align-items: stretch;
218
+ }
219
+
220
+ .gst-actions {
221
+ flex-direction: column;
222
+ width: 100%;
223
+ }
224
+
225
+ .gst-actions button {
226
+ width: 100%;
227
+ justify-content: center;
228
+ }
229
+ }
@@ -136,232 +136,3 @@ const t = (ui ?? {}) as HashGeneratorUI;
136
136
  });
137
137
  </script>
138
138
 
139
- <style>
140
- .hg-root {
141
- width: 100%;
142
- }
143
-
144
- .hg-card {
145
- background: #fff;
146
- border: 1px solid rgb(226, 232, 240);
147
- border-radius: 1.5rem;
148
- overflow: hidden;
149
- }
150
-
151
- :global(.theme-dark) .hg-card {
152
- background: rgb(15, 23, 42);
153
- border-color: rgb(30, 41, 59);
154
- }
155
-
156
- .hg-input-block {
157
- padding: 1.5rem;
158
- display: flex;
159
- flex-direction: column;
160
- gap: 1rem;
161
- }
162
-
163
- .hg-field {
164
- display: flex;
165
- flex-direction: column;
166
- gap: 0.5rem;
167
- }
168
-
169
- .hg-label {
170
- display: flex;
171
- align-items: center;
172
- gap: 0.5rem;
173
- font-size: 0.875rem;
174
- font-weight: 600;
175
- color: rgb(15, 23, 42);
176
- }
177
-
178
- :global(.theme-dark) .hg-label {
179
- color: rgb(226, 232, 240);
180
- }
181
-
182
- .hg-label-icon {
183
- width: 1rem;
184
- height: 1rem;
185
- color: rgb(99, 102, 241);
186
- }
187
-
188
- .hg-textarea {
189
- width: 100%;
190
- min-height: 100px;
191
- padding: 0.75rem 1rem;
192
- font-size: 0.875rem;
193
- color: rgb(15, 23, 42);
194
- background: rgb(248, 250, 252);
195
- border: 1px solid rgb(226, 232, 240);
196
- border-radius: 0.75rem;
197
- resize: vertical;
198
- transition: border-color 0.2s;
199
- box-sizing: border-box;
200
- }
201
-
202
- .hg-textarea:focus {
203
- outline: none;
204
- border-color: rgb(99, 102, 241);
205
- box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
206
- }
207
-
208
- :global(.theme-dark) .hg-textarea {
209
- background: rgb(30, 41, 59);
210
- border-color: rgb(51, 65, 85);
211
- color: rgb(226, 232, 240);
212
- }
213
-
214
- .hg-options-row {
215
- display: grid;
216
- grid-template-columns: 1fr 1fr;
217
- gap: 0.75rem;
218
- }
219
-
220
- .hg-option {
221
- display: flex;
222
- flex-direction: column;
223
- gap: 0.25rem;
224
- }
225
-
226
- .hg-option-label {
227
- font-size: 0.75rem;
228
- font-weight: 600;
229
- color: rgb(100, 116, 139);
230
- }
231
-
232
- .hg-option-input {
233
- width: 100%;
234
- padding: 0.5rem 0.75rem;
235
- font-size: 0.8125rem;
236
- color: rgb(15, 23, 42);
237
- background: rgb(248, 250, 252);
238
- border: 1px solid rgb(226, 232, 240);
239
- border-radius: 0.5rem;
240
- transition: border-color 0.2s;
241
- box-sizing: border-box;
242
- }
243
-
244
- .hg-option-input:focus {
245
- outline: none;
246
- border-color: rgb(99, 102, 241);
247
- }
248
-
249
- :global(.theme-dark) .hg-option-input {
250
- background: rgb(30, 41, 59);
251
- border-color: rgb(51, 65, 85);
252
- color: rgb(226, 232, 240);
253
- }
254
-
255
- .hg-divider {
256
- height: 1px;
257
- background: rgb(226, 232, 240);
258
- }
259
-
260
- :global(.theme-dark) .hg-divider {
261
- background: rgb(30, 41, 59);
262
- }
263
-
264
- .hg-results-block {
265
- display: flex;
266
- flex-direction: column;
267
- }
268
-
269
- .hg-row {
270
- display: flex;
271
- align-items: center;
272
- gap: 0.75rem;
273
- padding: 0.75rem 1.5rem;
274
- border-bottom: 1px solid rgb(241, 245, 249);
275
- transition: background 0.15s;
276
- }
277
-
278
- .hg-row:last-child {
279
- border-bottom: none;
280
- }
281
-
282
- .hg-row:hover {
283
- background: rgb(248, 250, 252);
284
- }
285
-
286
- :global(.theme-dark) .hg-row {
287
- border-bottom-color: rgb(30, 41, 59);
288
- }
289
-
290
- :global(.theme-dark) .hg-row:hover {
291
- background: rgb(30, 41, 59);
292
- }
293
-
294
- .hg-badge {
295
- flex-shrink: 0;
296
- width: 4.5rem;
297
- text-align: center;
298
- padding: 0.125rem 0;
299
- font-size: 0.6875rem;
300
- font-weight: 700;
301
- color: rgb(99, 102, 241);
302
- background: rgba(99, 102, 241, 0.1);
303
- border-radius: 9999px;
304
- }
305
-
306
- .hg-hash {
307
- flex: 1;
308
- font-size: 0.75rem;
309
- color: rgb(71, 85, 105);
310
- word-break: break-all;
311
- line-height: 1.4;
312
- }
313
-
314
- :global(.theme-dark) .hg-hash {
315
- color: rgb(148, 163, 184);
316
- }
317
-
318
- .hg-copy-btn {
319
- flex-shrink: 0;
320
- display: flex;
321
- align-items: center;
322
- justify-content: center;
323
- width: 1.75rem;
324
- height: 1.75rem;
325
- background: transparent;
326
- border: 1px solid rgb(226, 232, 240);
327
- border-radius: 0.375rem;
328
- cursor: pointer;
329
- color: rgb(148, 163, 184);
330
- transition: all 0.15s;
331
- }
332
-
333
- .hg-copy-btn:hover {
334
- background: rgb(241, 245, 249);
335
- color: rgb(99, 102, 241);
336
- border-color: rgb(99, 102, 241);
337
- }
338
-
339
- .hg-copy-btn:active {
340
- transform: scale(0.92);
341
- }
342
-
343
- :global(.theme-dark) .hg-copy-btn {
344
- border-color: rgb(51, 65, 85);
345
- color: rgb(100, 116, 139);
346
- }
347
-
348
- :global(.theme-dark) .hg-copy-btn:hover {
349
- background: rgb(51, 65, 85);
350
- color: rgb(99, 102, 241);
351
- }
352
-
353
- .hg-copy-icon {
354
- width: 0.875rem;
355
- height: 0.875rem;
356
- }
357
-
358
- @media (max-width: 480px) {
359
- .hg-options-row {
360
- grid-template-columns: 1fr;
361
- }
362
-
363
- .hg-row {
364
- padding: 0.625rem 1rem;
365
- }
366
- }
367
- </style>
@@ -0,0 +1,29 @@
1
+ import type { DeveloperToolEntry, ToolLocaleContent } from '../../types';
2
+ import type { HashGeneratorUI } from './ui';
3
+
4
+ export type HashGeneratorLocaleContent = ToolLocaleContent<HashGeneratorUI>;
5
+
6
+ export const hashGenerator: DeveloperToolEntry<HashGeneratorUI> = {
7
+ id: 'hash-generator',
8
+ icons: {
9
+ bg: 'mdi:shield-lock',
10
+ fg: 'mdi:pound',
11
+ },
12
+ i18n: {
13
+ de: async () => (await import('./i18n/de')).content,
14
+ en: async () => (await import('./i18n/en')).content,
15
+ es: async () => (await import('./i18n/es')).content,
16
+ fr: async () => (await import('./i18n/fr')).content,
17
+ id: async () => (await import('./i18n/id')).content,
18
+ it: async () => (await import('./i18n/it')).content,
19
+ ja: async () => (await import('./i18n/ja')).content,
20
+ ko: async () => (await import('./i18n/ko')).content,
21
+ nl: async () => (await import('./i18n/nl')).content,
22
+ pl: async () => (await import('./i18n/pl')).content,
23
+ pt: async () => (await import('./i18n/pt')).content,
24
+ ru: async () => (await import('./i18n/ru')).content,
25
+ sv: async () => (await import('./i18n/sv')).content,
26
+ tr: async () => (await import('./i18n/tr')).content,
27
+ zh: async () => (await import('./i18n/zh')).content,
28
+ },
29
+ };