@jjlmoya/utils-tabletop 1.31.0 → 1.33.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 +2 -2
- package/src/category/i18n/de.ts +1 -1
- package/src/category/i18n/es.ts +1 -1
- package/src/category/i18n/fr.ts +1 -1
- package/src/category/i18n/id.ts +1 -1
- package/src/category/i18n/it.ts +1 -1
- package/src/category/i18n/nl.ts +1 -1
- package/src/category/i18n/pl.ts +1 -1
- package/src/category/i18n/pt.ts +1 -1
- package/src/category/i18n/ru.ts +1 -1
- package/src/category/i18n/sv.ts +1 -1
- package/src/category/i18n/tr.ts +1 -1
- package/src/category/index.ts +25 -25
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/entries.ts +43 -43
- package/src/env.d.ts +1 -1
- package/src/index.ts +24 -24
- package/src/layouts/PreviewLayout.astro +93 -93
- package/src/pages/[locale]/[slug].astro +143 -143
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +74 -0
- package/src/tests/i18n_coverage.test.ts +36 -36
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_em_dash.test.ts +47 -47
- package/src/tests/no_en_dash.test.ts +70 -70
- package/src/tests/seo_length.test.ts +3 -3
- package/src/tests/seo_parity.test.ts +2 -2
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/spanish_leakage.test.ts +175 -175
- package/src/tool/dungeon-map-generator/component.astro +135 -135
- package/src/tool/dungeon-map-generator/controller.ts +243 -243
- package/src/tool/dungeon-map-generator/dom-views.ts +144 -144
- package/src/tool/dungeon-map-generator/i18n/de.ts +172 -172
- package/src/tool/dungeon-map-generator/logic.ts +281 -281
- package/src/tool/dungeon-map-generator/random-dungeon-map-generator.css +692 -692
- package/src/tool/dungeon-map-generator/ui.ts +54 -54
- package/src/tool/fantasy-runes-translator/logic.ts +1 -1
- package/src/tool/first-player-selector/i18n/tr.ts +1 -1
- package/src/tool/investigation-board/i18n/ru.ts +209 -209
- package/src/tool/investigation-board/i18n/zh.ts +209 -209
- package/src/tool/lunar-tide-tracker/client.ts +264 -264
- package/src/tool/rpg-initiative-tracker/i18n/de.ts +3 -3
- package/src/tool/rpg-initiative-tracker/i18n/es.ts +1 -1
- package/src/tool/rpg-initiative-tracker/i18n/pl.ts +2 -2
- package/src/tool/rpg-initiative-tracker/i18n/ru.ts +1 -1
- package/src/tool/score-tracker/i18n/pt.ts +1 -1
- package/src/tool/score-tracker/i18n/sv.ts +1 -1
- package/src/tool/score-tracker/i18n/tr.ts +1 -1
- package/src/tool/score-tracker/i18n/zh.ts +1 -1
- package/src/tool/token-stamp-studio/component.astro +0 -1
- package/src/tool/token-stamp-studio/dom-views.ts +7 -34
- package/src/tool/token-stamp-studio/i18n/de.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/en.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/es.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/fr.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/id.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/it.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/ja.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/ko.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/nl.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/pl.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/pt.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/ru.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/sv.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/tr.ts +0 -1
- package/src/tool/token-stamp-studio/i18n/zh.ts +0 -1
- package/src/tool/token-stamp-studio/token-stamp-studio.css +18 -4
- package/src/tool/token-stamp-studio/ui.ts +0 -1
- package/src/tool/token-stamp-studio/workspace-media.test.ts +20 -0
- package/src/tool/token-stamp-studio/workspace-media.ts +96 -2
- package/src/tool/token-stamp-studio/workspace.ts +41 -17
- package/src/tools.ts +25 -25
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jjlmoya/utils-tabletop",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.33.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"lint": "eslint src/ --max-warnings 0 && stylelint \"src/**/*.{css,astro}\"",
|
|
28
28
|
"check": "astro check",
|
|
29
29
|
"type-check": "astro check",
|
|
30
|
-
"test": "vitest run",
|
|
30
|
+
"test": "vitest run --reporter=verbose --testTimeout=30000",
|
|
31
31
|
"preversion": "npm run lint && npm run test && npm run build",
|
|
32
32
|
"postversion": "git push && git push --tags",
|
|
33
33
|
"patch": "npm version patch",
|
package/src/category/i18n/de.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CategoryLocaleContent } from '../../types';
|
|
|
2
2
|
|
|
3
3
|
const slug = 'brettspiele';
|
|
4
4
|
const title = 'Brettspiel Utilities und Werkzeuge';
|
|
5
|
-
const description = 'Kostenlose Werkzeuge für Brett- und Rollenspiele:
|
|
5
|
+
const description = 'Kostenlose Werkzeuge für Brett- und Rollenspiele: virtuelle Würfel, Statistiken und Multiplayer-Timer im Browser, ohne Anmeldung.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/i18n/es.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CategoryLocaleContent } from '../../types';
|
|
|
2
2
|
|
|
3
3
|
const slug = 'juegos-de-mesa';
|
|
4
4
|
const title = 'Utilidades y Herramientas para Juegos de Mesa';
|
|
5
|
-
const description = 'Herramientas gratuitas para juegos de mesa y rol:
|
|
5
|
+
const description = 'Herramientas gratuitas para juegos de mesa y rol: dados virtuales, estadísticas y temporizadores multijugador en el navegador, sin registro.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/i18n/fr.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CategoryLocaleContent } from '../../types';
|
|
|
2
2
|
|
|
3
3
|
const slug = 'jeux-de-societe';
|
|
4
4
|
const title = 'Utilitaires et Outils pour Jeux de Société';
|
|
5
|
-
const description = 'Outils gratuits pour jeux de société et de rôle:
|
|
5
|
+
const description = 'Outils gratuits pour jeux de société et de rôle: dés virtuels, statistiques et chronomètres multijoueurs dans le navigateur, sans inscription.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/i18n/id.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CategoryLocaleContent } from '../../types';
|
|
|
2
2
|
|
|
3
3
|
const slug = 'permainan-papan';
|
|
4
4
|
const title = 'Utilitas & Alat untuk Permainan Papan';
|
|
5
|
-
const description = 'Alat gratis untuk permainan papan dan RPG:
|
|
5
|
+
const description = 'Alat gratis untuk permainan papan dan RPG: dadu virtual, statistik, dan timer multipemain di browser tanpa pendaftaran.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/i18n/it.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CategoryLocaleContent } from '../../types';
|
|
|
2
2
|
|
|
3
3
|
const slug = 'giochi-da-tavolo';
|
|
4
4
|
const title = 'Utilità e Strumenti per Giochi da Tavolo';
|
|
5
|
-
const description = 'Strumenti gratuiti per giochi da tavolo e di ruolo:
|
|
5
|
+
const description = 'Strumenti gratuiti per giochi da tavolo e di ruolo: dadi virtuali, statistiche e timer multigiocatore nel browser, senza registrazione.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/i18n/nl.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CategoryLocaleContent } from '../../types';
|
|
|
2
2
|
|
|
3
3
|
const slug = 'bordspelen';
|
|
4
4
|
const title = 'Bordspel Hulpmiddelen & Utilities';
|
|
5
|
-
const description = 'Gratis
|
|
5
|
+
const description = 'Gratis tools voor bordspellen en RPG\'s: virtuele dobbelstenen, statistieken en multitimer in de browser zonder registratie.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/i18n/pl.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CategoryLocaleContent } from '../../types';
|
|
|
2
2
|
|
|
3
3
|
const slug = 'gry-planszowe';
|
|
4
4
|
const title = 'Narzędzia i Pomocniki do Gier Planszowych';
|
|
5
|
-
const description = 'Darmowe narzędzia do gier planszowych i RPG:
|
|
5
|
+
const description = 'Darmowe narzędzia do gier planszowych i RPG: wirtualne kości, statystyki i zegary wieloosobowe w przeglądarce, bez rejestracji.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/i18n/pt.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CategoryLocaleContent } from '../../types';
|
|
|
2
2
|
|
|
3
3
|
const slug = 'jogos-de-mesa';
|
|
4
4
|
const title = 'Utilitários e Ferramentas para Jogos de Mesa';
|
|
5
|
-
const description = 'Ferramentas gratuitas para jogos de mesa e RPG:
|
|
5
|
+
const description = 'Ferramentas gratuitas para jogos de mesa e RPG: dados virtuais, estatísticas e temporizadores multijogador no navegador, sem registo.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/i18n/ru.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const slug = 'nastolnye-igry';
|
|
4
4
|
const title = 'Инструменты и утилиты для настольных игр';
|
|
5
|
-
const description = 'Бесплатные инструменты для настольных и ролевых игр:
|
|
5
|
+
const description = 'Бесплатные инструменты для настольных и ролевых игр: виртуальные кости, статистика и таймеры в браузере без регистрации.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/i18n/sv.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CategoryLocaleContent } from '../../types';
|
|
|
2
2
|
|
|
3
3
|
const slug = 'bordspel';
|
|
4
4
|
const title = 'Brädspelsverktyg & Hjälpmedel';
|
|
5
|
-
const description = 'Gratis verktyg för brädspel och rollspel:
|
|
5
|
+
const description = 'Gratis verktyg för brädspel och rollspel: virtuella tärningar, statistik och multitimer i webbläsaren utan registrering.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/i18n/tr.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CategoryLocaleContent } from '../../types';
|
|
|
2
2
|
|
|
3
3
|
const slug = 'masa-oyunlari';
|
|
4
4
|
const title = 'Masa Oyunu Araçları ve Yardımcı Programları';
|
|
5
|
-
const description = 'Masa oyunları ve RPG için ücretsiz araçlar:
|
|
5
|
+
const description = 'Masa oyunları ve RPG için ücretsiz araçlar: sanal zarlar, istatistikler ve tarayıcıda kayıt gerektirmeyen çok oyunculu süreölçerler.';
|
|
6
6
|
|
|
7
7
|
export const content: CategoryLocaleContent = {
|
|
8
8
|
slug,
|
package/src/category/index.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { diceRollerSimulator } from '../tool/dice-roller-simulator/entry';
|
|
1
|
+
import { diceRollerSimulator } from '../tool/dice-roller-simulator/entry';
|
|
2
2
|
import { boardGameTimer } from '../tool/board-game-timer/entry';
|
|
3
3
|
import { dungeonMapGenerator } from '../tool/dungeon-map-generator/entry';
|
|
4
4
|
import { encounterDifficultyCalculator } from '../tool/encounter-difficulty-calculator/entry';
|
|
5
5
|
import { tokenStampStudio } from '../tool/token-stamp-studio/entry';
|
|
6
6
|
import { musScoreboard } from '../tool/mus-scoreboard/entry';
|
|
7
7
|
import { rpgSettlementExplorationMapGenerator } from '../tool/rpg-settlement-exploration-map-generator/entry';
|
|
8
|
-
import type { CategoryLocaleContent, KnownLocale } from '../types';
|
|
9
|
-
|
|
10
|
-
export const tabletopCategory = {
|
|
11
|
-
icon: 'mdi:dice-multiple-outline',
|
|
12
|
-
tools: [
|
|
13
|
-
diceRollerSimulator,
|
|
8
|
+
import type { CategoryLocaleContent, KnownLocale } from '../types';
|
|
9
|
+
|
|
10
|
+
export const tabletopCategory = {
|
|
11
|
+
icon: 'mdi:dice-multiple-outline',
|
|
12
|
+
tools: [
|
|
13
|
+
diceRollerSimulator,
|
|
14
14
|
boardGameTimer,
|
|
15
15
|
dungeonMapGenerator,
|
|
16
16
|
encounterDifficultyCalculator,
|
|
@@ -18,21 +18,21 @@ export const tabletopCategory = {
|
|
|
18
18
|
musScoreboard,
|
|
19
19
|
rpgSettlementExplorationMapGenerator,
|
|
20
20
|
],
|
|
21
|
-
i18n: {
|
|
22
|
-
de: () => import('./i18n/de').then((m) => m.content),
|
|
23
|
-
en: () => import('./i18n/en').then((m) => m.content),
|
|
24
|
-
es: () => import('./i18n/es').then((m) => m.content),
|
|
25
|
-
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
26
|
-
id: () => import('./i18n/id').then((m) => m.content),
|
|
27
|
-
it: () => import('./i18n/it').then((m) => m.content),
|
|
28
|
-
ja: () => import('./i18n/ja').then((m) => m.content),
|
|
29
|
-
ko: () => import('./i18n/ko').then((m) => m.content),
|
|
30
|
-
nl: () => import('./i18n/nl').then((m) => m.content),
|
|
31
|
-
pl: () => import('./i18n/pl').then((m) => m.content),
|
|
32
|
-
pt: () => import('./i18n/pt').then((m) => m.content),
|
|
33
|
-
ru: () => import('./i18n/ru').then((m) => m.content),
|
|
34
|
-
sv: () => import('./i18n/sv').then((m) => m.content),
|
|
35
|
-
tr: () => import('./i18n/tr').then((m) => m.content),
|
|
36
|
-
zh: () => import('./i18n/zh').then((m) => m.content),
|
|
37
|
-
} as Partial<Record<KnownLocale, () => Promise<CategoryLocaleContent>>>,
|
|
38
|
-
};
|
|
21
|
+
i18n: {
|
|
22
|
+
de: () => import('./i18n/de').then((m) => m.content),
|
|
23
|
+
en: () => import('./i18n/en').then((m) => m.content),
|
|
24
|
+
es: () => import('./i18n/es').then((m) => m.content),
|
|
25
|
+
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
26
|
+
id: () => import('./i18n/id').then((m) => m.content),
|
|
27
|
+
it: () => import('./i18n/it').then((m) => m.content),
|
|
28
|
+
ja: () => import('./i18n/ja').then((m) => m.content),
|
|
29
|
+
ko: () => import('./i18n/ko').then((m) => m.content),
|
|
30
|
+
nl: () => import('./i18n/nl').then((m) => m.content),
|
|
31
|
+
pl: () => import('./i18n/pl').then((m) => m.content),
|
|
32
|
+
pt: () => import('./i18n/pt').then((m) => m.content),
|
|
33
|
+
ru: () => import('./i18n/ru').then((m) => m.content),
|
|
34
|
+
sv: () => import('./i18n/sv').then((m) => m.content),
|
|
35
|
+
tr: () => import('./i18n/tr').then((m) => m.content),
|
|
36
|
+
zh: () => import('./i18n/zh').then((m) => m.content),
|
|
37
|
+
} as Partial<Record<KnownLocale, () => Promise<CategoryLocaleContent>>>,
|
|
38
|
+
};
|
package/src/entries.ts
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
export { diceRollerSimulator } from './tool/dice-roller-simulator/entry';
|
|
2
|
-
export type { DiceRollerUI, DiceRollerLocaleContent } from './tool/dice-roller-simulator/entry';
|
|
3
|
-
export { boardGameTimer } from './tool/board-game-timer/entry';
|
|
4
|
-
export type { BoardGameTimerUI, BoardGameTimerLocaleContent } from './tool/board-game-timer/entry';
|
|
5
|
-
export { firstPlayerSelector } from './tool/first-player-selector/entry';
|
|
6
|
-
export type { FirstPlayerSelectorUI, FirstPlayerSelectorLocaleContent } from './tool/first-player-selector/entry';
|
|
7
|
-
export { scoreTracker } from './tool/score-tracker/entry';
|
|
8
|
-
export type { ScoreTrackerUI, ScoreTrackerLocaleContent } from './tool/score-tracker/entry';
|
|
9
|
-
export { initiativeTracker } from './tool/rpg-initiative-tracker/entry';
|
|
10
|
-
export type { InitiativeTrackerUI, InitiativeTrackerLocaleContent } from './tool/rpg-initiative-tracker/entry';
|
|
11
|
-
export { fantasyRunesTranslator } from './tool/fantasy-runes-translator/entry';
|
|
12
|
-
export type { FantasyRunesTranslatorUI, FantasyRunesTranslatorLocaleContent } from './tool/fantasy-runes-translator/entry';
|
|
13
|
-
export { investigationBoard } from './tool/investigation-board/entry';
|
|
14
|
-
export type { InvestigationBoardUI, InvestigationBoardLocaleContent } from './tool/investigation-board/entry';
|
|
15
|
-
export { lunarTideTracker } from './tool/lunar-tide-tracker/entry';
|
|
16
|
-
export type { LunarTideUI, LunarTideLocaleContent } from './tool/lunar-tide-tracker/entry';
|
|
17
|
-
export { hiddenRoleDealer } from './tool/hidden-role-dealer/entry';
|
|
18
|
-
export type { HiddenRoleDealerUI, HiddenRoleDealerLocaleContent } from './tool/hidden-role-dealer/entry';
|
|
19
|
-
export { scatterDirectionSelector } from './tool/scatter-direction-selector/entry';
|
|
1
|
+
export { diceRollerSimulator } from './tool/dice-roller-simulator/entry';
|
|
2
|
+
export type { DiceRollerUI, DiceRollerLocaleContent } from './tool/dice-roller-simulator/entry';
|
|
3
|
+
export { boardGameTimer } from './tool/board-game-timer/entry';
|
|
4
|
+
export type { BoardGameTimerUI, BoardGameTimerLocaleContent } from './tool/board-game-timer/entry';
|
|
5
|
+
export { firstPlayerSelector } from './tool/first-player-selector/entry';
|
|
6
|
+
export type { FirstPlayerSelectorUI, FirstPlayerSelectorLocaleContent } from './tool/first-player-selector/entry';
|
|
7
|
+
export { scoreTracker } from './tool/score-tracker/entry';
|
|
8
|
+
export type { ScoreTrackerUI, ScoreTrackerLocaleContent } from './tool/score-tracker/entry';
|
|
9
|
+
export { initiativeTracker } from './tool/rpg-initiative-tracker/entry';
|
|
10
|
+
export type { InitiativeTrackerUI, InitiativeTrackerLocaleContent } from './tool/rpg-initiative-tracker/entry';
|
|
11
|
+
export { fantasyRunesTranslator } from './tool/fantasy-runes-translator/entry';
|
|
12
|
+
export type { FantasyRunesTranslatorUI, FantasyRunesTranslatorLocaleContent } from './tool/fantasy-runes-translator/entry';
|
|
13
|
+
export { investigationBoard } from './tool/investigation-board/entry';
|
|
14
|
+
export type { InvestigationBoardUI, InvestigationBoardLocaleContent } from './tool/investigation-board/entry';
|
|
15
|
+
export { lunarTideTracker } from './tool/lunar-tide-tracker/entry';
|
|
16
|
+
export type { LunarTideUI, LunarTideLocaleContent } from './tool/lunar-tide-tracker/entry';
|
|
17
|
+
export { hiddenRoleDealer } from './tool/hidden-role-dealer/entry';
|
|
18
|
+
export type { HiddenRoleDealerUI, HiddenRoleDealerLocaleContent } from './tool/hidden-role-dealer/entry';
|
|
19
|
+
export { scatterDirectionSelector } from './tool/scatter-direction-selector/entry';
|
|
20
20
|
export type { ScatterSelectorUI, ScatterSelectorLocaleContent } from './tool/scatter-direction-selector/entry';
|
|
21
21
|
export { dungeonMapGenerator } from './tool/dungeon-map-generator/entry';
|
|
22
22
|
export type { DungeonMapGeneratorUI, DungeonMapGeneratorLocaleContent } from './tool/dungeon-map-generator/entry';
|
|
23
23
|
export { rpgSettlementExplorationMapGenerator } from './tool/rpg-settlement-exploration-map-generator/entry';
|
|
24
24
|
export type { SettlementMapUI, SettlementMapLocaleContent } from './tool/rpg-settlement-exploration-map-generator/entry';
|
|
25
25
|
export { tabletopCategory } from './category';
|
|
26
|
-
|
|
27
|
-
import { diceRollerSimulator } from './tool/dice-roller-simulator/entry';
|
|
28
|
-
import { boardGameTimer } from './tool/board-game-timer/entry';
|
|
29
|
-
import { firstPlayerSelector } from './tool/first-player-selector/entry';
|
|
30
|
-
import { scoreTracker } from './tool/score-tracker/entry';
|
|
31
|
-
import { initiativeTracker } from './tool/rpg-initiative-tracker/entry';
|
|
32
|
-
import { fantasyRunesTranslator } from './tool/fantasy-runes-translator/entry';
|
|
33
|
-
import { decisionWheel } from './tool/decision-wheel/entry';
|
|
34
|
-
import { investigationBoard } from './tool/investigation-board/entry';
|
|
35
|
-
import { lunarTideTracker } from './tool/lunar-tide-tracker/entry';
|
|
36
|
-
import { hiddenRoleDealer } from './tool/hidden-role-dealer/entry';
|
|
26
|
+
|
|
27
|
+
import { diceRollerSimulator } from './tool/dice-roller-simulator/entry';
|
|
28
|
+
import { boardGameTimer } from './tool/board-game-timer/entry';
|
|
29
|
+
import { firstPlayerSelector } from './tool/first-player-selector/entry';
|
|
30
|
+
import { scoreTracker } from './tool/score-tracker/entry';
|
|
31
|
+
import { initiativeTracker } from './tool/rpg-initiative-tracker/entry';
|
|
32
|
+
import { fantasyRunesTranslator } from './tool/fantasy-runes-translator/entry';
|
|
33
|
+
import { decisionWheel } from './tool/decision-wheel/entry';
|
|
34
|
+
import { investigationBoard } from './tool/investigation-board/entry';
|
|
35
|
+
import { lunarTideTracker } from './tool/lunar-tide-tracker/entry';
|
|
36
|
+
import { hiddenRoleDealer } from './tool/hidden-role-dealer/entry';
|
|
37
37
|
import { scatterDirectionSelector } from './tool/scatter-direction-selector/entry';
|
|
38
38
|
import { dungeonMapGenerator } from './tool/dungeon-map-generator/entry';
|
|
39
39
|
import { encounterDifficultyCalculator } from './tool/encounter-difficulty-calculator/entry';
|
|
40
40
|
import { tokenStampStudio } from './tool/token-stamp-studio/entry';
|
|
41
41
|
import { musScoreboard } from './tool/mus-scoreboard/entry';
|
|
42
42
|
import { rpgSettlementExplorationMapGenerator } from './tool/rpg-settlement-exploration-map-generator/entry';
|
|
43
|
-
|
|
44
|
-
export const ALL_ENTRIES = [
|
|
45
|
-
diceRollerSimulator,
|
|
46
|
-
boardGameTimer,
|
|
47
|
-
firstPlayerSelector,
|
|
48
|
-
scoreTracker,
|
|
49
|
-
initiativeTracker,
|
|
50
|
-
fantasyRunesTranslator,
|
|
51
|
-
decisionWheel,
|
|
52
|
-
investigationBoard,
|
|
53
|
-
lunarTideTracker,
|
|
54
|
-
hiddenRoleDealer,
|
|
43
|
+
|
|
44
|
+
export const ALL_ENTRIES = [
|
|
45
|
+
diceRollerSimulator,
|
|
46
|
+
boardGameTimer,
|
|
47
|
+
firstPlayerSelector,
|
|
48
|
+
scoreTracker,
|
|
49
|
+
initiativeTracker,
|
|
50
|
+
fantasyRunesTranslator,
|
|
51
|
+
decisionWheel,
|
|
52
|
+
investigationBoard,
|
|
53
|
+
lunarTideTracker,
|
|
54
|
+
hiddenRoleDealer,
|
|
55
55
|
scatterDirectionSelector,
|
|
56
56
|
dungeonMapGenerator,
|
|
57
57
|
encounterDifficultyCalculator,
|
|
@@ -59,4 +59,4 @@ export const ALL_ENTRIES = [
|
|
|
59
59
|
musScoreboard,
|
|
60
60
|
rpgSettlementExplorationMapGenerator,
|
|
61
61
|
];
|
|
62
|
-
|
|
62
|
+
|
package/src/env.d.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
export { tabletopCategory } from './category';
|
|
2
|
-
export const tabletopCategorySEO = () => import('./category/TabletopCategorySEO.astro').then((m) => m.default);
|
|
3
|
-
|
|
4
|
-
export { diceRollerSimulator, DICE_ROLLER_SIMULATOR_TOOL } from './tool/dice-roller-simulator';
|
|
5
|
-
export { boardGameTimer, BOARD_GAME_TIMER_TOOL } from './tool/board-game-timer';
|
|
6
|
-
export { fantasyRunesTranslator, FANTASY_RUNES_TRANSLATOR_TOOL } from './tool/fantasy-runes-translator';
|
|
7
|
-
export { investigationBoard, INVESTIGATION_BOARD_TOOL } from './tool/investigation-board';
|
|
1
|
+
export { tabletopCategory } from './category';
|
|
2
|
+
export const tabletopCategorySEO = () => import('./category/TabletopCategorySEO.astro').then((m) => m.default);
|
|
3
|
+
|
|
4
|
+
export { diceRollerSimulator, DICE_ROLLER_SIMULATOR_TOOL } from './tool/dice-roller-simulator';
|
|
5
|
+
export { boardGameTimer, BOARD_GAME_TIMER_TOOL } from './tool/board-game-timer';
|
|
6
|
+
export { fantasyRunesTranslator, FANTASY_RUNES_TRANSLATOR_TOOL } from './tool/fantasy-runes-translator';
|
|
7
|
+
export { investigationBoard, INVESTIGATION_BOARD_TOOL } from './tool/investigation-board';
|
|
8
8
|
export { lunarTideTracker, LUNAR_TIDE_TRACKER_TOOL } from './tool/lunar-tide-tracker';
|
|
9
9
|
export { dungeonMapGenerator, DUNGEON_MAP_GENERATOR_TOOL } from './tool/dungeon-map-generator';
|
|
10
10
|
export { tokenStampStudio, TOKEN_STAMP_STUDIO_TOOL } from './tool/token-stamp-studio';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export type {
|
|
14
|
-
KnownLocale,
|
|
15
|
-
FAQItem,
|
|
16
|
-
BibliographyEntry,
|
|
17
|
-
HowToStep,
|
|
18
|
-
ToolLocaleContent,
|
|
19
|
-
CategoryLocaleContent,
|
|
20
|
-
LocaleLoader,
|
|
21
|
-
LocaleMap,
|
|
22
|
-
TabletopToolEntry,
|
|
23
|
-
TabletopCategoryEntry,
|
|
24
|
-
ToolDefinition,
|
|
25
|
-
} from './types';
|
|
26
|
-
|
|
27
|
-
export { ALL_ENTRIES, ALL_TOOLS } from './tools';
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
export type {
|
|
14
|
+
KnownLocale,
|
|
15
|
+
FAQItem,
|
|
16
|
+
BibliographyEntry,
|
|
17
|
+
HowToStep,
|
|
18
|
+
ToolLocaleContent,
|
|
19
|
+
CategoryLocaleContent,
|
|
20
|
+
LocaleLoader,
|
|
21
|
+
LocaleMap,
|
|
22
|
+
TabletopToolEntry,
|
|
23
|
+
TabletopCategoryEntry,
|
|
24
|
+
ToolDefinition,
|
|
25
|
+
} from './types';
|
|
26
|
+
|
|
27
|
+
export { ALL_ENTRIES, ALL_TOOLS } from './tools';
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
---
|
|
2
|
-
import "@jjlmoya/utils-shared/theme.css";
|
|
3
|
-
import PreviewToolbar from "../components/PreviewToolbar.astro";
|
|
4
|
-
import type { KnownLocale } from "../types";
|
|
5
|
-
|
|
6
|
-
interface Props {
|
|
7
|
-
title: string;
|
|
8
|
-
currentLocale?: KnownLocale;
|
|
9
|
-
localeUrls?: Partial<Record<KnownLocale, string>>;
|
|
10
|
-
hasSidebar?: boolean;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const { title, currentLocale = "es", localeUrls = {}, hasSidebar = false } = Astro.props;
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
<!doctype html>
|
|
17
|
-
<html lang={currentLocale}>
|
|
18
|
-
<head>
|
|
19
|
-
<meta charset="UTF-8" />
|
|
20
|
-
<meta name="viewport" content="width=device-width" />
|
|
21
|
-
<title>{title} · preview</title>
|
|
22
|
-
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
23
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
24
|
-
<link
|
|
25
|
-
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap"
|
|
26
|
-
rel="stylesheet"
|
|
27
|
-
/>
|
|
28
|
-
|
|
29
|
-
<script is:inline>
|
|
30
|
-
(function () {
|
|
31
|
-
const saved = localStorage.getItem("theme") || "theme-dark";
|
|
32
|
-
document.documentElement.classList.add(saved);
|
|
33
|
-
})();
|
|
34
|
-
</script>
|
|
35
|
-
<slot name="head" />
|
|
36
|
-
</head>
|
|
37
|
-
<body>
|
|
38
|
-
<PreviewToolbar currentLocale={currentLocale} localeUrls={localeUrls} />
|
|
39
|
-
<div class:list={["page-wrapper", { "with-sidebar": hasSidebar }]}>
|
|
40
|
-
{
|
|
41
|
-
hasSidebar && (
|
|
42
|
-
<aside class="sidebar-area">
|
|
43
|
-
<slot name="sidebar" />
|
|
44
|
-
</aside>
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
<main>
|
|
48
|
-
<slot />
|
|
49
|
-
</main>
|
|
50
|
-
</div>
|
|
51
|
-
</body>
|
|
52
|
-
</html>
|
|
53
|
-
|
|
54
|
-
<style is:global>
|
|
55
|
-
:root {
|
|
56
|
-
--accent: #f43f5e;
|
|
57
|
-
--primary-base: #9f1239;
|
|
58
|
-
--cyan: #06b6d4;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.theme-dark,
|
|
62
|
-
.theme-light {
|
|
63
|
-
--text-main: var(--text-base);
|
|
64
|
-
--border-color: var(--border-base);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
*,
|
|
68
|
-
*::before,
|
|
69
|
-
*::after {
|
|
70
|
-
box-sizing: border-box;
|
|
71
|
-
}
|
|
72
|
-
|
|
1
|
+
---
|
|
2
|
+
import "@jjlmoya/utils-shared/theme.css";
|
|
3
|
+
import PreviewToolbar from "../components/PreviewToolbar.astro";
|
|
4
|
+
import type { KnownLocale } from "../types";
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
title: string;
|
|
8
|
+
currentLocale?: KnownLocale;
|
|
9
|
+
localeUrls?: Partial<Record<KnownLocale, string>>;
|
|
10
|
+
hasSidebar?: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const { title, currentLocale = "es", localeUrls = {}, hasSidebar = false } = Astro.props;
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<!doctype html>
|
|
17
|
+
<html lang={currentLocale}>
|
|
18
|
+
<head>
|
|
19
|
+
<meta charset="UTF-8" />
|
|
20
|
+
<meta name="viewport" content="width=device-width" />
|
|
21
|
+
<title>{title} · preview</title>
|
|
22
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
23
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
24
|
+
<link
|
|
25
|
+
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap"
|
|
26
|
+
rel="stylesheet"
|
|
27
|
+
/>
|
|
28
|
+
|
|
29
|
+
<script is:inline>
|
|
30
|
+
(function () {
|
|
31
|
+
const saved = localStorage.getItem("theme") || "theme-dark";
|
|
32
|
+
document.documentElement.classList.add(saved);
|
|
33
|
+
})();
|
|
34
|
+
</script>
|
|
35
|
+
<slot name="head" />
|
|
36
|
+
</head>
|
|
37
|
+
<body>
|
|
38
|
+
<PreviewToolbar currentLocale={currentLocale} localeUrls={localeUrls} />
|
|
39
|
+
<div class:list={["page-wrapper", { "with-sidebar": hasSidebar }]}>
|
|
40
|
+
{
|
|
41
|
+
hasSidebar && (
|
|
42
|
+
<aside class="sidebar-area">
|
|
43
|
+
<slot name="sidebar" />
|
|
44
|
+
</aside>
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
<main>
|
|
48
|
+
<slot />
|
|
49
|
+
</main>
|
|
50
|
+
</div>
|
|
51
|
+
</body>
|
|
52
|
+
</html>
|
|
53
|
+
|
|
54
|
+
<style is:global>
|
|
55
|
+
:root {
|
|
56
|
+
--accent: #f43f5e;
|
|
57
|
+
--primary-base: #9f1239;
|
|
58
|
+
--cyan: #06b6d4;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.theme-dark,
|
|
62
|
+
.theme-light {
|
|
63
|
+
--text-main: var(--text-base);
|
|
64
|
+
--border-color: var(--border-base);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
*,
|
|
68
|
+
*::before,
|
|
69
|
+
*::after {
|
|
70
|
+
box-sizing: border-box;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
73
|
body {
|
|
74
74
|
background-color: var(--bg-page);
|
|
75
75
|
color: var(--text-base);
|
|
@@ -79,8 +79,8 @@ const { title, currentLocale = "es", localeUrls = {}, hasSidebar = false } = Ast
|
|
|
79
79
|
transition:
|
|
80
80
|
background-color 0.3s ease,
|
|
81
81
|
color 0.3s ease;
|
|
82
|
-
}
|
|
83
|
-
|
|
82
|
+
}
|
|
83
|
+
|
|
84
84
|
main {
|
|
85
85
|
padding: 0 2rem;
|
|
86
86
|
}
|
|
@@ -89,23 +89,23 @@ const { title, currentLocale = "es", localeUrls = {}, hasSidebar = false } = Ast
|
|
|
89
89
|
display: flex;
|
|
90
90
|
flex-direction: column;
|
|
91
91
|
}
|
|
92
|
-
|
|
93
|
-
.page-wrapper.with-sidebar {
|
|
94
|
-
display: grid;
|
|
95
|
-
grid-template-columns: 240px 1fr;
|
|
96
|
-
min-height: 100vh;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.sidebar-area {
|
|
100
|
-
position: sticky;
|
|
101
|
-
top: 0;
|
|
102
|
-
height: 100vh;
|
|
103
|
-
overflow-y: auto;
|
|
104
|
-
border-right: 1px solid var(--border-color);
|
|
105
|
-
background: var(--bg-page);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
@media (max-width: 768px) {
|
|
92
|
+
|
|
93
|
+
.page-wrapper.with-sidebar {
|
|
94
|
+
display: grid;
|
|
95
|
+
grid-template-columns: 240px 1fr;
|
|
96
|
+
min-height: 100vh;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.sidebar-area {
|
|
100
|
+
position: sticky;
|
|
101
|
+
top: 0;
|
|
102
|
+
height: 100vh;
|
|
103
|
+
overflow-y: auto;
|
|
104
|
+
border-right: 1px solid var(--border-color);
|
|
105
|
+
background: var(--bg-page);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@media (max-width: 768px) {
|
|
109
109
|
.page-wrapper.with-sidebar {
|
|
110
110
|
grid-template-columns: 1fr;
|
|
111
111
|
}
|
|
@@ -114,5 +114,5 @@ const { title, currentLocale = "es", localeUrls = {}, hasSidebar = false } = Ast
|
|
|
114
114
|
display: none;
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
-
</style>
|
|
118
|
-
|
|
117
|
+
</style>
|
|
118
|
+
|