@jjlmoya/utils-tools 1.8.0 → 1.9.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 CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@jjlmoya/utils-tools",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
7
7
  "exports": {
8
8
  ".": "./src/index.ts",
9
- "./data": "./src/data.ts"
9
+ "./data": "./src/data.ts",
10
+ "./entries": "./src/entries.ts"
10
11
  },
11
12
  "files": [
12
13
  "src"
package/src/entries.ts ADDED
@@ -0,0 +1,26 @@
1
+ export { dateDiffCalculator } from './tool/date-diff-calculator/entry';
2
+ export { driveDirectLink } from './tool/drive-direct-link/entry';
3
+ export { emailListCleaner } from './tool/email-list-cleaner/entry';
4
+ export { envBadgeSpain } from './tool/env-badge-spain/entry';
5
+ export { morseBeacon } from './tool/morse-beacon/entry';
6
+ export { passwordGenerator } from './tool/password-generator/entry';
7
+ export { routes } from './tool/routes/entry';
8
+ export { ruleOfThree } from './tool/rule-of-three/entry';
9
+ export { seoContentOptimizer } from './tool/seo-content-optimizer/entry';
10
+ export { speedReader } from './tool/speed-reader/entry';
11
+ export { textPixelCalculator } from './tool/text-pixel-calculator/entry';
12
+ export { whatsappLink } from './tool/whatsapp-link/entry';
13
+ export { toolsCategory } from './category';
14
+ import { dateDiffCalculator } from './tool/date-diff-calculator/entry';
15
+ import { driveDirectLink } from './tool/drive-direct-link/entry';
16
+ import { emailListCleaner } from './tool/email-list-cleaner/entry';
17
+ import { envBadgeSpain } from './tool/env-badge-spain/entry';
18
+ import { morseBeacon } from './tool/morse-beacon/entry';
19
+ import { passwordGenerator } from './tool/password-generator/entry';
20
+ import { routes } from './tool/routes/entry';
21
+ import { ruleOfThree } from './tool/rule-of-three/entry';
22
+ import { seoContentOptimizer } from './tool/seo-content-optimizer/entry';
23
+ import { speedReader } from './tool/speed-reader/entry';
24
+ import { textPixelCalculator } from './tool/text-pixel-calculator/entry';
25
+ import { whatsappLink } from './tool/whatsapp-link/entry';
26
+ export const ALL_ENTRIES = [dateDiffCalculator, driveDirectLink, emailListCleaner, envBadgeSpain, morseBeacon, passwordGenerator, routes, ruleOfThree, seoContentOptimizer, speedReader, textPixelCalculator, whatsappLink];
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { DateDiffCalculatorUI } from './ui';
3
+
4
+ export const dateDiffCalculator: ToolsToolEntry<DateDiffCalculatorUI> = {
5
+ id: 'date-diff-calculator',
6
+ icons: { bg: 'mdi:calendar-clock', fg: 'mdi:clock-fast' },
7
+ i18n: {
8
+ es: () => import('./i18n/es').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ fr: () => import('./i18n/fr').then((m) => m.content),
11
+ de: () => import('./i18n/de').then((m) => m.content),
12
+ it: () => import('./i18n/it').then((m) => m.content),
13
+ pt: () => import('./i18n/pt').then((m) => m.content),
14
+ nl: () => import('./i18n/nl').then((m) => m.content),
15
+ pl: () => import('./i18n/pl').then((m) => m.content),
16
+ tr: () => import('./i18n/tr').then((m) => m.content),
17
+ id: () => import('./i18n/id').then((m) => m.content),
18
+ sv: () => import('./i18n/sv').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ ja: () => import('./i18n/ja').then((m) => m.content),
21
+ ko: () => import('./i18n/ko').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { DateDiffCalculatorUI } from './ui';
3
-
4
- export const dateDiffCalculator: ToolsToolEntry<DateDiffCalculatorUI> = {
5
- id: 'date-diff-calculator',
6
- icons: { bg: 'mdi:calendar-clock', fg: 'mdi:clock-fast' },
7
- i18n: {
8
- es: () => import('./i18n/es').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- fr: () => import('./i18n/fr').then((m) => m.content),
11
- de: () => import('./i18n/de').then((m) => m.content),
12
- it: () => import('./i18n/it').then((m) => m.content),
13
- pt: () => import('./i18n/pt').then((m) => m.content),
14
- nl: () => import('./i18n/nl').then((m) => m.content),
15
- pl: () => import('./i18n/pl').then((m) => m.content),
16
- tr: () => import('./i18n/tr').then((m) => m.content),
17
- id: () => import('./i18n/id').then((m) => m.content),
18
- sv: () => import('./i18n/sv').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- ja: () => import('./i18n/ja').then((m) => m.content),
21
- ko: () => import('./i18n/ko').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { dateDiffCalculator } from './entry';
2
+ export * from './entry';
26
3
  export const DATE_DIFF_CALCULATOR_TOOL: ToolDefinition = {
27
4
  entry: dateDiffCalculator,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { DriveDirectLinkUI } from './ui';
3
+
4
+ export const driveDirectLink: ToolsToolEntry<DriveDirectLinkUI> = {
5
+ id: 'drive-direct-link',
6
+ icons: { bg: 'mdi:google-drive', fg: 'mdi:download' },
7
+ i18n: {
8
+ es: () => import('./i18n/es').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ fr: () => import('./i18n/fr').then((m) => m.content),
11
+ de: () => import('./i18n/de').then((m) => m.content),
12
+ it: () => import('./i18n/it').then((m) => m.content),
13
+ pt: () => import('./i18n/pt').then((m) => m.content),
14
+ nl: () => import('./i18n/nl').then((m) => m.content),
15
+ pl: () => import('./i18n/pl').then((m) => m.content),
16
+ tr: () => import('./i18n/tr').then((m) => m.content),
17
+ id: () => import('./i18n/id').then((m) => m.content),
18
+ sv: () => import('./i18n/sv').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ ja: () => import('./i18n/ja').then((m) => m.content),
21
+ ko: () => import('./i18n/ko').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { DriveDirectLinkUI } from './ui';
3
-
4
- export const driveDirectLink: ToolsToolEntry<DriveDirectLinkUI> = {
5
- id: 'drive-direct-link',
6
- icons: { bg: 'mdi:google-drive', fg: 'mdi:download' },
7
- i18n: {
8
- es: () => import('./i18n/es').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- fr: () => import('./i18n/fr').then((m) => m.content),
11
- de: () => import('./i18n/de').then((m) => m.content),
12
- it: () => import('./i18n/it').then((m) => m.content),
13
- pt: () => import('./i18n/pt').then((m) => m.content),
14
- nl: () => import('./i18n/nl').then((m) => m.content),
15
- pl: () => import('./i18n/pl').then((m) => m.content),
16
- tr: () => import('./i18n/tr').then((m) => m.content),
17
- id: () => import('./i18n/id').then((m) => m.content),
18
- sv: () => import('./i18n/sv').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- ja: () => import('./i18n/ja').then((m) => m.content),
21
- ko: () => import('./i18n/ko').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { driveDirectLink } from './entry';
2
+ export * from './entry';
26
3
  export const DRIVE_DIRECT_LINK_TOOL: ToolDefinition = {
27
4
  entry: driveDirectLink,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { EmailListCleanerUI } from './ui';
3
+
4
+ export const emailListCleaner: ToolsToolEntry<EmailListCleanerUI> = {
5
+ id: 'email-list-cleaner',
6
+ icons: { bg: 'mdi:email-check-outline', fg: 'mdi:email-remove' },
7
+ i18n: {
8
+ es: () => import('./i18n/es').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ fr: () => import('./i18n/fr').then((m) => m.content),
11
+ de: () => import('./i18n/de').then((m) => m.content),
12
+ it: () => import('./i18n/it').then((m) => m.content),
13
+ pt: () => import('./i18n/pt').then((m) => m.content),
14
+ nl: () => import('./i18n/nl').then((m) => m.content),
15
+ pl: () => import('./i18n/pl').then((m) => m.content),
16
+ tr: () => import('./i18n/tr').then((m) => m.content),
17
+ id: () => import('./i18n/id').then((m) => m.content),
18
+ sv: () => import('./i18n/sv').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ ja: () => import('./i18n/ja').then((m) => m.content),
21
+ ko: () => import('./i18n/ko').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { EmailListCleanerUI } from './ui';
3
-
4
- export const emailListCleaner: ToolsToolEntry<EmailListCleanerUI> = {
5
- id: 'email-list-cleaner',
6
- icons: { bg: 'mdi:email-check-outline', fg: 'mdi:email-remove' },
7
- i18n: {
8
- es: () => import('./i18n/es').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- fr: () => import('./i18n/fr').then((m) => m.content),
11
- de: () => import('./i18n/de').then((m) => m.content),
12
- it: () => import('./i18n/it').then((m) => m.content),
13
- pt: () => import('./i18n/pt').then((m) => m.content),
14
- nl: () => import('./i18n/nl').then((m) => m.content),
15
- pl: () => import('./i18n/pl').then((m) => m.content),
16
- tr: () => import('./i18n/tr').then((m) => m.content),
17
- id: () => import('./i18n/id').then((m) => m.content),
18
- sv: () => import('./i18n/sv').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- ja: () => import('./i18n/ja').then((m) => m.content),
21
- ko: () => import('./i18n/ko').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { emailListCleaner } from './entry';
2
+ export * from './entry';
26
3
  export const EMAIL_LIST_CLEANER_TOOL: ToolDefinition = {
27
4
  entry: emailListCleaner,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { EnvBadgeSpainUI } from './ui';
3
+
4
+ export const envBadgeSpain: ToolsToolEntry<EnvBadgeSpainUI> = {
5
+ id: 'env-badge-spain',
6
+ icons: { bg: 'mdi:car-info', fg: 'mdi:leaf' },
7
+ i18n: {
8
+ es: () => import('./i18n/es').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ fr: () => import('./i18n/fr').then((m) => m.content),
11
+ de: () => import('./i18n/de').then((m) => m.content),
12
+ it: () => import('./i18n/it').then((m) => m.content),
13
+ pt: () => import('./i18n/pt').then((m) => m.content),
14
+ nl: () => import('./i18n/nl').then((m) => m.content),
15
+ pl: () => import('./i18n/pl').then((m) => m.content),
16
+ tr: () => import('./i18n/tr').then((m) => m.content),
17
+ id: () => import('./i18n/id').then((m) => m.content),
18
+ sv: () => import('./i18n/sv').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ ja: () => import('./i18n/ja').then((m) => m.content),
21
+ ko: () => import('./i18n/ko').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { EnvBadgeSpainUI } from './ui';
3
-
4
- export const envBadgeSpain: ToolsToolEntry<EnvBadgeSpainUI> = {
5
- id: 'env-badge-spain',
6
- icons: { bg: 'mdi:car-info', fg: 'mdi:leaf' },
7
- i18n: {
8
- es: () => import('./i18n/es').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- fr: () => import('./i18n/fr').then((m) => m.content),
11
- de: () => import('./i18n/de').then((m) => m.content),
12
- it: () => import('./i18n/it').then((m) => m.content),
13
- pt: () => import('./i18n/pt').then((m) => m.content),
14
- nl: () => import('./i18n/nl').then((m) => m.content),
15
- pl: () => import('./i18n/pl').then((m) => m.content),
16
- tr: () => import('./i18n/tr').then((m) => m.content),
17
- id: () => import('./i18n/id').then((m) => m.content),
18
- sv: () => import('./i18n/sv').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- ja: () => import('./i18n/ja').then((m) => m.content),
21
- ko: () => import('./i18n/ko').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { envBadgeSpain } from './entry';
2
+ export * from './entry';
26
3
  export const ENV_BADGE_SPAIN_TOOL: ToolDefinition = {
27
4
  entry: envBadgeSpain,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { MorseBeaconUI } from './ui';
3
+
4
+ export const morseBeacon: ToolsToolEntry<MorseBeaconUI> = {
5
+ id: 'morse-beacon',
6
+ icons: { bg: 'mdi:transmission-tower', fg: 'mdi:dots-horizontal' },
7
+ i18n: {
8
+ de: () => import('./i18n/de').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ es: () => import('./i18n/es').then((m) => m.content),
11
+ fr: () => import('./i18n/fr').then((m) => m.content),
12
+ id: () => import('./i18n/id').then((m) => m.content),
13
+ it: () => import('./i18n/it').then((m) => m.content),
14
+ ja: () => import('./i18n/ja').then((m) => m.content),
15
+ ko: () => import('./i18n/ko').then((m) => m.content),
16
+ nl: () => import('./i18n/nl').then((m) => m.content),
17
+ pl: () => import('./i18n/pl').then((m) => m.content),
18
+ pt: () => import('./i18n/pt').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ sv: () => import('./i18n/sv').then((m) => m.content),
21
+ tr: () => import('./i18n/tr').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { MorseBeaconUI } from './ui';
3
-
4
- export const morseBeacon: ToolsToolEntry<MorseBeaconUI> = {
5
- id: 'morse-beacon',
6
- icons: { bg: 'mdi:transmission-tower', fg: 'mdi:dots-horizontal' },
7
- i18n: {
8
- de: () => import('./i18n/de').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- es: () => import('./i18n/es').then((m) => m.content),
11
- fr: () => import('./i18n/fr').then((m) => m.content),
12
- id: () => import('./i18n/id').then((m) => m.content),
13
- it: () => import('./i18n/it').then((m) => m.content),
14
- ja: () => import('./i18n/ja').then((m) => m.content),
15
- ko: () => import('./i18n/ko').then((m) => m.content),
16
- nl: () => import('./i18n/nl').then((m) => m.content),
17
- pl: () => import('./i18n/pl').then((m) => m.content),
18
- pt: () => import('./i18n/pt').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- sv: () => import('./i18n/sv').then((m) => m.content),
21
- tr: () => import('./i18n/tr').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { morseBeacon } from './entry';
2
+ export * from './entry';
26
3
  export const MORSE_BEACON_TOOL: ToolDefinition = {
27
4
  entry: morseBeacon,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { PasswordGeneratorUI } from './ui';
3
+
4
+ export const passwordGenerator: ToolsToolEntry<PasswordGeneratorUI> = {
5
+ id: 'password-generator',
6
+ icons: { bg: 'mdi:shield-key', fg: 'mdi:lock-reset' },
7
+ i18n: {
8
+ de: () => import('./i18n/de').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ es: () => import('./i18n/es').then((m) => m.content),
11
+ fr: () => import('./i18n/fr').then((m) => m.content),
12
+ id: () => import('./i18n/id').then((m) => m.content),
13
+ it: () => import('./i18n/it').then((m) => m.content),
14
+ ja: () => import('./i18n/ja').then((m) => m.content),
15
+ ko: () => import('./i18n/ko').then((m) => m.content),
16
+ nl: () => import('./i18n/nl').then((m) => m.content),
17
+ pl: () => import('./i18n/pl').then((m) => m.content),
18
+ pt: () => import('./i18n/pt').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ sv: () => import('./i18n/sv').then((m) => m.content),
21
+ tr: () => import('./i18n/tr').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { PasswordGeneratorUI } from './ui';
3
-
4
- export const passwordGenerator: ToolsToolEntry<PasswordGeneratorUI> = {
5
- id: 'password-generator',
6
- icons: { bg: 'mdi:shield-key', fg: 'mdi:lock-reset' },
7
- i18n: {
8
- de: () => import('./i18n/de').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- es: () => import('./i18n/es').then((m) => m.content),
11
- fr: () => import('./i18n/fr').then((m) => m.content),
12
- id: () => import('./i18n/id').then((m) => m.content),
13
- it: () => import('./i18n/it').then((m) => m.content),
14
- ja: () => import('./i18n/ja').then((m) => m.content),
15
- ko: () => import('./i18n/ko').then((m) => m.content),
16
- nl: () => import('./i18n/nl').then((m) => m.content),
17
- pl: () => import('./i18n/pl').then((m) => m.content),
18
- pt: () => import('./i18n/pt').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- sv: () => import('./i18n/sv').then((m) => m.content),
21
- tr: () => import('./i18n/tr').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { passwordGenerator } from './entry';
2
+ export * from './entry';
26
3
  export const PASSWORD_GENERATOR_TOOL: ToolDefinition = {
27
4
  entry: passwordGenerator,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { RoutesUI } from './ui';
3
+
4
+ export const routes: ToolsToolEntry<RoutesUI> = {
5
+ id: 'routes',
6
+ icons: { bg: 'mdi:map-marker-path', fg: 'mdi:map-search' },
7
+ i18n: {
8
+ de: () => import('./i18n/de').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ es: () => import('./i18n/es').then((m) => m.content),
11
+ fr: () => import('./i18n/fr').then((m) => m.content),
12
+ id: () => import('./i18n/id').then((m) => m.content),
13
+ it: () => import('./i18n/it').then((m) => m.content),
14
+ ja: () => import('./i18n/ja').then((m) => m.content),
15
+ ko: () => import('./i18n/ko').then((m) => m.content),
16
+ nl: () => import('./i18n/nl').then((m) => m.content),
17
+ pl: () => import('./i18n/pl').then((m) => m.content),
18
+ pt: () => import('./i18n/pt').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ sv: () => import('./i18n/sv').then((m) => m.content),
21
+ tr: () => import('./i18n/tr').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { RoutesUI } from './ui';
3
-
4
- export const routes: ToolsToolEntry<RoutesUI> = {
5
- id: 'routes',
6
- icons: { bg: 'mdi:map-marker-path', fg: 'mdi:map-search' },
7
- i18n: {
8
- de: () => import('./i18n/de').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- es: () => import('./i18n/es').then((m) => m.content),
11
- fr: () => import('./i18n/fr').then((m) => m.content),
12
- id: () => import('./i18n/id').then((m) => m.content),
13
- it: () => import('./i18n/it').then((m) => m.content),
14
- ja: () => import('./i18n/ja').then((m) => m.content),
15
- ko: () => import('./i18n/ko').then((m) => m.content),
16
- nl: () => import('./i18n/nl').then((m) => m.content),
17
- pl: () => import('./i18n/pl').then((m) => m.content),
18
- pt: () => import('./i18n/pt').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- sv: () => import('./i18n/sv').then((m) => m.content),
21
- tr: () => import('./i18n/tr').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { routes } from './entry';
2
+ export * from './entry';
26
3
  export const ROUTES_TOOL: ToolDefinition = {
27
4
  entry: routes,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { RuleOfThreeUI } from './ui';
3
+
4
+ export const ruleOfThree: ToolsToolEntry<RuleOfThreeUI> = {
5
+ id: 'rule-of-three',
6
+ icons: { bg: 'mdi:calculator-variant', fg: 'mdi:equal' },
7
+ i18n: {
8
+ de: () => import('./i18n/de').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ es: () => import('./i18n/es').then((m) => m.content),
11
+ fr: () => import('./i18n/fr').then((m) => m.content),
12
+ id: () => import('./i18n/id').then((m) => m.content),
13
+ it: () => import('./i18n/it').then((m) => m.content),
14
+ ja: () => import('./i18n/ja').then((m) => m.content),
15
+ ko: () => import('./i18n/ko').then((m) => m.content),
16
+ nl: () => import('./i18n/nl').then((m) => m.content),
17
+ pl: () => import('./i18n/pl').then((m) => m.content),
18
+ pt: () => import('./i18n/pt').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ sv: () => import('./i18n/sv').then((m) => m.content),
21
+ tr: () => import('./i18n/tr').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { RuleOfThreeUI } from './ui';
3
-
4
- export const ruleOfThree: ToolsToolEntry<RuleOfThreeUI> = {
5
- id: 'rule-of-three',
6
- icons: { bg: 'mdi:calculator-variant', fg: 'mdi:equal' },
7
- i18n: {
8
- de: () => import('./i18n/de').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- es: () => import('./i18n/es').then((m) => m.content),
11
- fr: () => import('./i18n/fr').then((m) => m.content),
12
- id: () => import('./i18n/id').then((m) => m.content),
13
- it: () => import('./i18n/it').then((m) => m.content),
14
- ja: () => import('./i18n/ja').then((m) => m.content),
15
- ko: () => import('./i18n/ko').then((m) => m.content),
16
- nl: () => import('./i18n/nl').then((m) => m.content),
17
- pl: () => import('./i18n/pl').then((m) => m.content),
18
- pt: () => import('./i18n/pt').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- sv: () => import('./i18n/sv').then((m) => m.content),
21
- tr: () => import('./i18n/tr').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { ruleOfThree } from './entry';
2
+ export * from './entry';
26
3
  export const RULE_OF_THREE_TOOL: ToolDefinition = {
27
4
  entry: ruleOfThree,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { SeoContentOptimizerUI } from './ui';
3
+
4
+ export const seoContentOptimizer: ToolsToolEntry<SeoContentOptimizerUI> = {
5
+ id: 'seo-content-optimizer',
6
+ icons: { bg: 'mdi:file-search', fg: 'mdi:shield-check-outline' },
7
+ i18n: {
8
+ es: () => import('./i18n/es').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ fr: () => import('./i18n/fr').then((m) => m.content),
11
+ de: () => import('./i18n/de').then((m) => m.content),
12
+ it: () => import('./i18n/it').then((m) => m.content),
13
+ pt: () => import('./i18n/pt').then((m) => m.content),
14
+ nl: () => import('./i18n/nl').then((m) => m.content),
15
+ pl: () => import('./i18n/pl').then((m) => m.content),
16
+ tr: () => import('./i18n/tr').then((m) => m.content),
17
+ id: () => import('./i18n/id').then((m) => m.content),
18
+ sv: () => import('./i18n/sv').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ ja: () => import('./i18n/ja').then((m) => m.content),
21
+ ko: () => import('./i18n/ko').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { SeoContentOptimizerUI } from './ui';
3
-
4
- export const seoContentOptimizer: ToolsToolEntry<SeoContentOptimizerUI> = {
5
- id: 'seo-content-optimizer',
6
- icons: { bg: 'mdi:file-search', fg: 'mdi:shield-check-outline' },
7
- i18n: {
8
- es: () => import('./i18n/es').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- fr: () => import('./i18n/fr').then((m) => m.content),
11
- de: () => import('./i18n/de').then((m) => m.content),
12
- it: () => import('./i18n/it').then((m) => m.content),
13
- pt: () => import('./i18n/pt').then((m) => m.content),
14
- nl: () => import('./i18n/nl').then((m) => m.content),
15
- pl: () => import('./i18n/pl').then((m) => m.content),
16
- tr: () => import('./i18n/tr').then((m) => m.content),
17
- id: () => import('./i18n/id').then((m) => m.content),
18
- sv: () => import('./i18n/sv').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- ja: () => import('./i18n/ja').then((m) => m.content),
21
- ko: () => import('./i18n/ko').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { seoContentOptimizer } from './entry';
2
+ export * from './entry';
26
3
  export const SEO_CONTENT_OPTIMIZER_TOOL: ToolDefinition = {
27
4
  entry: seoContentOptimizer,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { SpeedReaderUI } from './ui';
3
+
4
+ export const speedReader: ToolsToolEntry<SpeedReaderUI> = {
5
+ id: 'speed-reader',
6
+ icons: { bg: 'mdi:book-open-page-variant', fg: 'mdi:lightning-bolt' },
7
+ i18n: {
8
+ es: () => import('./i18n/es').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ fr: () => import('./i18n/fr').then((m) => m.content),
11
+ de: () => import('./i18n/de').then((m) => m.content),
12
+ it: () => import('./i18n/it').then((m) => m.content),
13
+ pt: () => import('./i18n/pt').then((m) => m.content),
14
+ nl: () => import('./i18n/nl').then((m) => m.content),
15
+ pl: () => import('./i18n/pl').then((m) => m.content),
16
+ tr: () => import('./i18n/tr').then((m) => m.content),
17
+ id: () => import('./i18n/id').then((m) => m.content),
18
+ sv: () => import('./i18n/sv').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ ja: () => import('./i18n/ja').then((m) => m.content),
21
+ ko: () => import('./i18n/ko').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { SpeedReaderUI } from './ui';
3
-
4
- export const speedReader: ToolsToolEntry<SpeedReaderUI> = {
5
- id: 'speed-reader',
6
- icons: { bg: 'mdi:book-open-page-variant', fg: 'mdi:lightning-bolt' },
7
- i18n: {
8
- es: () => import('./i18n/es').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- fr: () => import('./i18n/fr').then((m) => m.content),
11
- de: () => import('./i18n/de').then((m) => m.content),
12
- it: () => import('./i18n/it').then((m) => m.content),
13
- pt: () => import('./i18n/pt').then((m) => m.content),
14
- nl: () => import('./i18n/nl').then((m) => m.content),
15
- pl: () => import('./i18n/pl').then((m) => m.content),
16
- tr: () => import('./i18n/tr').then((m) => m.content),
17
- id: () => import('./i18n/id').then((m) => m.content),
18
- sv: () => import('./i18n/sv').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- ja: () => import('./i18n/ja').then((m) => m.content),
21
- ko: () => import('./i18n/ko').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { speedReader } from './entry';
2
+ export * from './entry';
26
3
  export const SPEED_READER_TOOL: ToolDefinition = {
27
4
  entry: speedReader,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { TextPixelCalculatorUI } from './ui';
3
+
4
+ export const textPixelCalculator: ToolsToolEntry<TextPixelCalculatorUI> = {
5
+ id: 'text-pixel-calculator',
6
+ icons: { bg: 'mdi:format-text', fg: 'mdi:ruler' },
7
+ i18n: {
8
+ es: () => import('./i18n/es').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ fr: () => import('./i18n/fr').then((m) => m.content),
11
+ de: () => import('./i18n/de').then((m) => m.content),
12
+ it: () => import('./i18n/it').then((m) => m.content),
13
+ pt: () => import('./i18n/pt').then((m) => m.content),
14
+ nl: () => import('./i18n/nl').then((m) => m.content),
15
+ pl: () => import('./i18n/pl').then((m) => m.content),
16
+ tr: () => import('./i18n/tr').then((m) => m.content),
17
+ id: () => import('./i18n/id').then((m) => m.content),
18
+ sv: () => import('./i18n/sv').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ ja: () => import('./i18n/ja').then((m) => m.content),
21
+ ko: () => import('./i18n/ko').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { TextPixelCalculatorUI } from './ui';
3
-
4
- export const textPixelCalculator: ToolsToolEntry<TextPixelCalculatorUI> = {
5
- id: 'text-pixel-calculator',
6
- icons: { bg: 'mdi:format-text', fg: 'mdi:ruler' },
7
- i18n: {
8
- es: () => import('./i18n/es').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- fr: () => import('./i18n/fr').then((m) => m.content),
11
- de: () => import('./i18n/de').then((m) => m.content),
12
- it: () => import('./i18n/it').then((m) => m.content),
13
- pt: () => import('./i18n/pt').then((m) => m.content),
14
- nl: () => import('./i18n/nl').then((m) => m.content),
15
- pl: () => import('./i18n/pl').then((m) => m.content),
16
- tr: () => import('./i18n/tr').then((m) => m.content),
17
- id: () => import('./i18n/id').then((m) => m.content),
18
- sv: () => import('./i18n/sv').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- ja: () => import('./i18n/ja').then((m) => m.content),
21
- ko: () => import('./i18n/ko').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { textPixelCalculator } from './entry';
2
+ export * from './entry';
26
3
  export const TEXT_PIXEL_CALCULATOR_TOOL: ToolDefinition = {
27
4
  entry: textPixelCalculator,
28
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,24 @@
1
+ import type { ToolsToolEntry } from '../../types';
2
+ import type { WhatsappLinkUI } from './ui';
3
+
4
+ export const whatsappLink: ToolsToolEntry<WhatsappLinkUI> = {
5
+ id: 'whatsapp-link',
6
+ icons: { bg: 'mdi:whatsapp', fg: 'mdi:link-variant' },
7
+ i18n: {
8
+ es: () => import('./i18n/es').then((m) => m.content),
9
+ en: () => import('./i18n/en').then((m) => m.content),
10
+ fr: () => import('./i18n/fr').then((m) => m.content),
11
+ de: () => import('./i18n/de').then((m) => m.content),
12
+ it: () => import('./i18n/it').then((m) => m.content),
13
+ pt: () => import('./i18n/pt').then((m) => m.content),
14
+ nl: () => import('./i18n/nl').then((m) => m.content),
15
+ pl: () => import('./i18n/pl').then((m) => m.content),
16
+ tr: () => import('./i18n/tr').then((m) => m.content),
17
+ id: () => import('./i18n/id').then((m) => m.content),
18
+ sv: () => import('./i18n/sv').then((m) => m.content),
19
+ ru: () => import('./i18n/ru').then((m) => m.content),
20
+ ja: () => import('./i18n/ja').then((m) => m.content),
21
+ ko: () => import('./i18n/ko').then((m) => m.content),
22
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
+ },
24
+ };
@@ -1,28 +1,5 @@
1
- import type { ToolDefinition, ToolsToolEntry } from '../../types';
2
- import type { WhatsappLinkUI } from './ui';
3
-
4
- export const whatsappLink: ToolsToolEntry<WhatsappLinkUI> = {
5
- id: 'whatsapp-link',
6
- icons: { bg: 'mdi:whatsapp', fg: 'mdi:link-variant' },
7
- i18n: {
8
- es: () => import('./i18n/es').then((m) => m.content),
9
- en: () => import('./i18n/en').then((m) => m.content),
10
- fr: () => import('./i18n/fr').then((m) => m.content),
11
- de: () => import('./i18n/de').then((m) => m.content),
12
- it: () => import('./i18n/it').then((m) => m.content),
13
- pt: () => import('./i18n/pt').then((m) => m.content),
14
- nl: () => import('./i18n/nl').then((m) => m.content),
15
- pl: () => import('./i18n/pl').then((m) => m.content),
16
- tr: () => import('./i18n/tr').then((m) => m.content),
17
- id: () => import('./i18n/id').then((m) => m.content),
18
- sv: () => import('./i18n/sv').then((m) => m.content),
19
- ru: () => import('./i18n/ru').then((m) => m.content),
20
- ja: () => import('./i18n/ja').then((m) => m.content),
21
- ko: () => import('./i18n/ko').then((m) => m.content),
22
- zh: () => import('./i18n/zh').then((m) => m.content),
23
- },
24
- };
25
-
1
+ import { whatsappLink } from './entry';
2
+ export * from './entry';
26
3
  export const WHATSAPP_LINK_TOOL: ToolDefinition = {
27
4
  entry: whatsappLink,
28
5
  Component: () => import('./component.astro'),
package/src/tools.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { ALL_ENTRIES } from './entries';
1
2
  import type { ToolDefinition } from './types';
2
3
  import { ROUTES_TOOL } from './tool/routes/index';
3
4
  import { RULE_OF_THREE_TOOL } from './tool/rule-of-three/index';
@@ -14,4 +15,3 @@ import { SEO_CONTENT_OPTIMIZER_TOOL } from './tool/seo-content-optimizer/index';
14
15
 
15
16
  export const ALL_TOOLS: ToolDefinition[] = [ROUTES_TOOL, RULE_OF_THREE_TOOL, PASSWORD_GENERATOR_TOOL, MORSE_BEACON_TOOL, SPEED_READER_TOOL, WHATSAPP_LINK_TOOL, TEXT_PIXEL_CALCULATOR_TOOL, DATE_DIFF_CALCULATOR_TOOL, EMAIL_LIST_CLEANER_TOOL, ENV_BADGE_SPAIN_TOOL, DRIVE_DIRECT_LINK_TOOL, SEO_CONTENT_OPTIMIZER_TOOL];
16
17
 
17
- export const ALL_ENTRIES = ALL_TOOLS.map(t => t.entry);