@jjlmoya/utils-tabletop 1.27.0 → 1.28.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 (35) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -0
  3. package/src/entries.ts +2 -0
  4. package/src/tests/locale_completeness.test.ts +1 -1
  5. package/src/tests/tool_validation.test.ts +1 -1
  6. package/src/tool/mus-scoreboard/bibliography.astro +16 -0
  7. package/src/tool/mus-scoreboard/bibliography.ts +12 -0
  8. package/src/tool/mus-scoreboard/component.astro +169 -0
  9. package/src/tool/mus-scoreboard/controller.ts +178 -0
  10. package/src/tool/mus-scoreboard/dom-views.ts +87 -0
  11. package/src/tool/mus-scoreboard/entry.ts +27 -0
  12. package/src/tool/mus-scoreboard/evaluator.ts +27 -0
  13. package/src/tool/mus-scoreboard/i18n/de.ts +187 -0
  14. package/src/tool/mus-scoreboard/i18n/en.ts +187 -0
  15. package/src/tool/mus-scoreboard/i18n/es.ts +187 -0
  16. package/src/tool/mus-scoreboard/i18n/fr.ts +187 -0
  17. package/src/tool/mus-scoreboard/i18n/id.ts +187 -0
  18. package/src/tool/mus-scoreboard/i18n/it.ts +187 -0
  19. package/src/tool/mus-scoreboard/i18n/ja.ts +187 -0
  20. package/src/tool/mus-scoreboard/i18n/ko.ts +187 -0
  21. package/src/tool/mus-scoreboard/i18n/nl.ts +187 -0
  22. package/src/tool/mus-scoreboard/i18n/pl.ts +187 -0
  23. package/src/tool/mus-scoreboard/i18n/pt.ts +187 -0
  24. package/src/tool/mus-scoreboard/i18n/ru.ts +187 -0
  25. package/src/tool/mus-scoreboard/i18n/sv.ts +187 -0
  26. package/src/tool/mus-scoreboard/i18n/tr.ts +187 -0
  27. package/src/tool/mus-scoreboard/i18n/zh.ts +187 -0
  28. package/src/tool/mus-scoreboard/index.ts +11 -0
  29. package/src/tool/mus-scoreboard/logic.test.ts +82 -0
  30. package/src/tool/mus-scoreboard/logic.ts +122 -0
  31. package/src/tool/mus-scoreboard/online-mus-scoreboard.css +740 -0
  32. package/src/tool/mus-scoreboard/seo.astro +16 -0
  33. package/src/tool/mus-scoreboard/storage.ts +29 -0
  34. package/src/tool/mus-scoreboard/ui.ts +63 -0
  35. package/src/tools.ts +2 -0
@@ -0,0 +1,187 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { MusScoreboardLocaleContent, MusScoreboardUI } from '../entry';
4
+
5
+ const ui: MusScoreboardUI = {
6
+ onboarding: 'Benennen Sie die zwei Paare, stellen Sie die Regeln ein und tippen Sie Steine, wenn die Hände gezählt werden.',
7
+ pairOneLabel: 'Paar eins',
8
+ pairTwoLabel: 'Paar zwei',
9
+ pairOneDefault: 'Tisch Nord',
10
+ pairTwoDefault: 'Tisch Süd',
11
+ targetPointsLabel: 'Punkte pro Spiel',
12
+ targetPointsHint: 'Wählen Sie das Ziel für jedes Spiel (30, 40 oder 50 Punkte).',
13
+ gamesToWinLabel: 'Spiele für den Vaca-Sieg',
14
+ gamesToWinHint: 'Das erste Paar mit dieser Anzahl gewinnt das Match.',
15
+ deckLabel: 'Kartendeck am Tisch',
16
+ deckHint: 'Das spanische Blatt (Baraja española) ist die traditionelle Wahl für Mus. Französische Karten können angepasst werden.',
17
+ spanishDeck: 'Baraja española (Spanisches Blatt)',
18
+ frenchDeck: 'Französisches Blatt',
19
+ frenchDeckNotice: 'Entfernen Sie die 8er, 9er und 10er aus dem französischen Blatt, um mit 40 Karten zu spielen. Buben sind Sotas, Damen sind Caballos und Könige sind Reyes.',
20
+ pointsOption30: '30 Punkte',
21
+ pointsOption40: '40 Punkte',
22
+ pointsOption50: '50 Punkte',
23
+ gamesOption1: '1 Spiel',
24
+ gamesOption2: '2 Spiele',
25
+ gamesOption3: '3 Spiele',
26
+ startMatch: 'Punktezähler öffnen',
27
+ matchSettings: 'Paare und Regeln einstellen',
28
+ liveMatch: 'Laufendes Spiel',
29
+ targetLabel: 'Punkte-Spiel',
30
+ gameLabel: 'Spiel',
31
+ gamePlural: 'Spiele',
32
+ vacaLabel: 'Spiele zum Sieg',
33
+ scoreLabel: 'Aktuelle Steine',
34
+ handLabel: 'Wählen Sie, welches Paar Vorhand (Mano) ist',
35
+ handSelected: 'ist Vorhand (Mano).',
36
+ stonesLabel: 'Zählmarken',
37
+ stoneSingular: 'Stein (Piedra)',
38
+ stonePlural: 'Steine (Piedras)',
39
+ amarracoSingular: 'Amarraco',
40
+ amarracoPlural: 'Amarracos',
41
+ pointsToGo: 'bis zum Ziel',
42
+ addStone: 'Stein',
43
+ addAmarraco: 'Amarraco',
44
+ closeGame: 'Spiel beenden',
45
+ closeGamePrompt: 'Bestätigen, dass dieses Paar das Spiel gewonnen hat und das nächste beginnt?',
46
+ confirmationTitle: 'Aktion am Tisch bestätigen',
47
+ confirmAction: 'Bestätigen',
48
+ cancelAction: 'Weiterspielen',
49
+ undo: 'Rückgängig',
50
+ resetMatch: 'Match zurücksetzen',
51
+ resetMatchPrompt: 'Das aktuelle Match zurücksetzen und den Verlauf löschen?',
52
+ historyTitle: 'Letzte Wertungen',
53
+ noHistory: 'Noch keine Wertungen. Jede Eingabe erscheint hier.',
54
+ matchReady: 'Der Tisch ist bereit.',
55
+ closeGameHint: 'Ein Paar hat das Punktziel erreicht. Bestätigen Sie den Spielsieger.',
56
+ waitingForScore: 'Weiter zählen. Verbleibende Punkte für die Führenden:',
57
+ gameWon: 'Spiel beendet.',
58
+ vacaWon: 'Vaca gewonnen. Starten Sie ein neues Match, wenn der Tisch bereit ist.',
59
+ gameClosed: 'hat das Spiel beendet.',
60
+ pointsAdded: 'erzielte',
61
+ matchSaved: 'Punktestand auf diesem Gerät gespeichert.',
62
+ lastAction: 'Letzte Aktion',
63
+ settingsApplied: 'Neue Regeln angewendet. Das Match wurde zurückgesetzt.',
64
+ pairNameRequired: 'Geben Sie beiden Paaren einen Namen, bevor Sie den Zähler öffnen.',
65
+ visualScoreLabel: 'Mus-Punktezähler am Tisch mit Steinen, Amarracos, Spielen und Zielwert',
66
+ };
67
+
68
+ const faq = [
69
+ {
70
+ question: 'Was erfasst dieser Online Mus Punktezähler?',
71
+ answer: 'Er erfasst zwei Paare, Steine (Piedras, Einzelpunkte) und Amarracos (5-Punkte-Blöcke), gewonnene Spiele (Chicos), die Vaca-Gesamtwertung, wer die Vorhand (Mano) innehat und den Punkteverlauf.',
72
+ },
73
+ {
74
+ question: 'Warum werden Steine und Amarracos getrennt angezeigt?',
75
+ answer: 'Ein Stein (Piedra) steht für 1 Punkt und ein Amarraco für 5 Steine. Die getrennte Anzeige erleichtert den Vergleich mit echten Spielsteinen oder Bohnen auf dem Mus-Tisch.',
76
+ },
77
+ {
78
+ question: 'Kann man auf 30, 40 oder 50 Punkte spielen?',
79
+ answer: 'Ja. Vor dem Start können Sie 30, 40 oder 50 Punkte wählen. Die Anzeige und die Beendigungsprüfung passen sich automatisch an.',
80
+ },
81
+ {
82
+ question: 'Wie wird ein abgeschlossenes Spiel gewertet?',
83
+ answer: 'Wenn ein Paar das Ziel erreicht, wird die Schaltfläche zum Beenden aktiv. Nach Bestätigung wird dem Siegerpaar ein Spiel gutgeschrieben und die Punkte werden auf null zurückgesetzt.',
84
+ },
85
+ {
86
+ question: 'Speichert der Punktezähler ein unterbrochenes Match?',
87
+ answer: 'Ja. Alle Einstellungen, Namen und Punkte bleiben lokal im Browser Ihres Geräts gespeichert.',
88
+ },
89
+ {
90
+ question: 'Werden regionale Mus-Sonderregeln erzwungen?',
91
+ answer: 'Nein. Mus bietet regionale Variationen. Dieser Zähler konzentriert sich auf die genaue Erfassung von Punkten und Spielen am Tisch.',
92
+ },
93
+ {
94
+ question: 'Wird mit spanischem oder französischem Blatt gespielt?',
95
+ answer: 'Mus wird traditionell mit dem spanischen 40-Karten-Blatt gespielt. Für ein französisches Blatt entfernen Sie die 8er, 9er und 10er. Buben gelten als Sotas, Damen als Caballos und Könige als Reyes.',
96
+ },
97
+ ];
98
+
99
+ const howTo = [
100
+ {
101
+ name: 'Namen der Paare eingeben',
102
+ text: 'Tragen Sie die Namen der Spielerpaare ein, um sie am Tisch eindeutig zuzuordnen.',
103
+ },
104
+ {
105
+ name: 'Zielpunkte und Vaca festlegen',
106
+ text: 'Wählen Sie 30, 40 oder 50 Punkte pro Spiel sowie die Anzahl benötigter Siege für die Vaca.',
107
+ },
108
+ {
109
+ name: 'Punkte und Amarracos zählen',
110
+ text: 'Tippen Sie auf Stein (+1) oder Amarraco (+5), sobald Punkte in den Runden vergeben werden.',
111
+ },
112
+ {
113
+ name: 'Spiel bestätigen und fortfahren',
114
+ text: 'Sobald das Ziel erreicht ist, bestätigen Sie den Sieger, um das Spiel zu werten und das nächste zu starten.',
115
+ },
116
+ ];
117
+
118
+ const faqSchema: WithContext<FAQPage> = {
119
+ '@context': 'https://schema.org',
120
+ '@type': 'FAQPage',
121
+ mainEntity: faq.map((item) => ({
122
+ '@type': 'Question',
123
+ name: item.question,
124
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
125
+ })),
126
+ };
127
+
128
+ const appSchema: WithContext<SoftwareApplication> = {
129
+ '@context': 'https://schema.org',
130
+ '@type': 'SoftwareApplication',
131
+ name: 'Online Mus Punktezähler',
132
+ operatingSystem: 'All',
133
+ applicationCategory: 'GameApplication',
134
+ description: 'Digitaler Punktezähler für das traditionelle spanische Kartenspiel Mus am realen Tisch.',
135
+ };
136
+
137
+ const howToSchema: WithContext<HowTo> = {
138
+ '@context': 'https://schema.org',
139
+ '@type': 'HowTo',
140
+ name: 'Anleitung zum Zählen bei einer Mus Partie',
141
+ step: howTo.map((item) => ({
142
+ '@type': 'HowToStep',
143
+ name: item.name,
144
+ text: item.text,
145
+ })),
146
+ };
147
+
148
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [
149
+ faqSchema,
150
+ appSchema,
151
+ howToSchema,
152
+ ];
153
+
154
+ export const content: MusScoreboardLocaleContent = {
155
+ slug: 'online-mus-punktezaehler',
156
+ title: 'Online Mus Punktezähler für Live Partien',
157
+ description: 'Zählen Sie Steine, Amarracos und Vacas beim spanischen Kartenspiel Mus. Für spanisches und französisches Blatt mit lokaler Speicherung.',
158
+ ui,
159
+ seo: [
160
+ { type: 'title', text: 'Übersichtlicher Punktezähler für lebendige Mus Runden', level: 2 },
161
+ { type: 'paragraph', html: 'Mus ist ein traditionelles spanisches Kartenspiel voller Dynamik und Bluffing. Da in jeder Hand mehrere Runden (Grande, Chica, Pares, Juego, Punto) gewertet werden, hält dieser Zähler die Punkte beider Paare übersichtlich fest.' },
162
+ { type: 'title', text: 'Zielpunkte vor der ersten Hand festlegen', level: 2 },
163
+ { type: 'paragraph', html: 'Klassischerweise wird auf 40 Punkte gespielt, aber viele Runden bevorzugen 30 oder 50 Punkte. Stellen Sie das Ziel vor dem Austeilen ein, damit die Verbleibenden Punkte exakt stimmen.' },
164
+ {
165
+ type: 'table',
166
+ headers: ['Einstellung', 'Funktion', 'Empfehlung'],
167
+ rows: [
168
+ ['30 Punkte', 'Kurzes Spiel', 'Schnelle Runden oder lokale Regeln'],
169
+ ['40 Punkte', 'Standard Spiel', 'Der klassische Standard unter Freunden'],
170
+ ['50 Punkte', 'Langes Spiel', 'Tische mit mehr taktischem Spielraum'],
171
+ ],
172
+ },
173
+ { type: 'tip', title: 'Regeln vor Spielbeginn absprechen', html: 'Klären Sie vor dem Geben, ob mit 8 Königen und 8 Assen (3er als Könige, 2er als Asse) gespielt wird und wer die Spielsteine am Tisch verwaltet.' },
174
+ { type: 'title', text: 'Spanisches und französisches Kartendeck', level: 2 },
175
+ { type: 'paragraph', html: 'Das spanische Blatt mit 40 Karten (Oros, Copas, Espadas, Bastos) ist der Standard. Bei einem französischen Blatt werden 8er, 9er und 10er entfernt. Buben zählen als Sotas, Damen als Caballos, Könige als Reyes.' },
176
+ { type: 'title', text: 'Digitale Punktezählung direkt am Spielfeldrand', level: 2 },
177
+ { type: 'paragraph', html: 'Die große Anzeige zeigt die Gesamtpunktzahl an. Die Zeile darunter übersetzt diese Summe automatisch in Amarracos und Steine, während die visuellen Elemente einen schnellen Abgleich ermöglichen.' },
178
+ { type: 'list', items: ['<strong>Stein (Piedra):</strong> 1 Einzelpunkt in der Wertung.', '<strong>Amarraco:</strong> 1 Block im Wert von 5 Steinen.', '<strong>Spiel (Chico):</strong> Eine gewonnene Punktrunde bis zum Zielwert.', '<strong>Vaca:</strong> Der Gesamtsieg nach der festgelegten Anzahl an Spielen.'] },
179
+ { type: 'title', text: 'Spielabschluss und Fehlerkorrektur', level: 2 },
180
+ { type: 'paragraph', html: 'Das Erreichen der Zielpunktzahl berechtigt ein Paar zum Spielabschluss, wird jedoch erst nach Bestätigung durch beide Paare gewertet. Dies garantiert eine faire Auswertung aller Punkte der letzten Hand.' },
181
+ { type: 'tip', title: 'Rückgängig Funktion bei Fehlern nutzen', html: 'Falls versehentlich Punkte dem falschen Paar gutgeschrieben werden, nutzen Sie sofort die Rückgängig Schaltfläche, um den Stand der aktuellen Hand zu korrigieren.' },
182
+ ],
183
+ faq,
184
+ bibliography,
185
+ howTo,
186
+ schemas,
187
+ };
@@ -0,0 +1,187 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { MusScoreboardLocaleContent, MusScoreboardUI } from '../entry';
4
+
5
+ const ui: MusScoreboardUI = {
6
+ onboarding: 'Name the two pairs, choose the local rules, then tap stones as the hand is counted. Close a game only when a pair reaches the target.',
7
+ pairOneLabel: 'Pair one',
8
+ pairTwoLabel: 'Pair two',
9
+ pairOneDefault: 'North table',
10
+ pairTwoDefault: 'South table',
11
+ targetPointsLabel: 'Points per game',
12
+ targetPointsHint: 'Choose the finish line for each game.',
13
+ gamesToWinLabel: 'Games to win the vaca',
14
+ gamesToWinHint: 'The first pair to reach this number wins the match.',
15
+ deckLabel: 'Deck for the table',
16
+ deckHint: 'Spanish cards (Baraja española) are the traditional Mus choice. French cards keep the scoring flow familiar for your table.',
17
+ spanishDeck: 'Baraja española (Spanish deck)',
18
+ frenchDeck: 'French deck',
19
+ frenchDeckNotice: 'Remember to remove the 8s, 9s, and 10s from your deck to play with 40 cards. Jacks are Sotas, Queens are Caballos, and Kings are Reyes.',
20
+ pointsOption30: '30 points',
21
+ pointsOption40: '40 points',
22
+ pointsOption50: '50 points',
23
+ gamesOption1: '1 game',
24
+ gamesOption2: '2 games',
25
+ gamesOption3: '3 games',
26
+ startMatch: 'Open the scoreboard',
27
+ matchSettings: 'Name the pairs and set the rules',
28
+ liveMatch: 'Live match',
29
+ targetLabel: 'point game',
30
+ gameLabel: 'games',
31
+ gamePlural: 'games',
32
+ vacaLabel: 'games to win',
33
+ scoreLabel: 'Current stones',
34
+ handLabel: 'Choose which pair is mano',
35
+ handSelected: 'is mano.',
36
+ stonesLabel: 'Tally pieces',
37
+ stoneSingular: 'stone',
38
+ stonePlural: 'stones',
39
+ amarracoSingular: 'amarraco',
40
+ amarracoPlural: 'amarracos',
41
+ pointsToGo: 'to go',
42
+ addStone: 'stone',
43
+ addAmarraco: 'amarraco',
44
+ closeGame: 'Close game',
45
+ closeGamePrompt: 'Confirm that this pair won the game and start the next one?',
46
+ confirmationTitle: 'Confirm table action',
47
+ confirmAction: 'Confirm',
48
+ cancelAction: 'Keep playing',
49
+ undo: 'Undo',
50
+ resetMatch: 'Reset match',
51
+ resetMatchPrompt: 'Reset the current match and clear its score history?',
52
+ historyTitle: 'Recent calls',
53
+ noHistory: 'No calls yet. The next tap will appear here.',
54
+ matchReady: 'The table is ready.',
55
+ closeGameHint: 'A pair has reached the finish line. Confirm the game winner.',
56
+ waitingForScore: 'Keep counting. Points remaining for the leader:',
57
+ gameWon: 'Game closed.',
58
+ vacaWon: 'Vaca won. Start a new match when the table is ready.',
59
+ gameClosed: 'closed the game.',
60
+ pointsAdded: 'scored',
61
+ matchSaved: 'Score saved on this device.',
62
+ lastAction: 'last action',
63
+ settingsApplied: 'New rules applied. The match is fresh.',
64
+ pairNameRequired: 'Give both pairs a name before opening the scoreboard.',
65
+ visualScoreLabel: 'Mus table scoreboard showing stones, amarracos, games and the finish line',
66
+ };
67
+
68
+ const faq = [
69
+ {
70
+ question: 'What does this online Mus scoreboard track?',
71
+ answer: 'It tracks the two pairs, stones and amarracos for the current game, games won in the vaca, recent scoring actions, and the selected finish line. It is designed for a live table where one person enters the agreed tally.',
72
+ },
73
+ {
74
+ question: 'Why are stones and amarracos shown separately?',
75
+ answer: 'A stone represents one point and an amarraco commonly represents five stones. Showing both forms makes the digital tally easier to compare with the physical pieces on a Mus table.',
76
+ },
77
+ {
78
+ question: 'Can I play to 30 or 50 points instead of 40?',
79
+ answer: 'Yes. Choose 30, 40, or 50 points before opening the scoreboard. The finish line, remaining points, visual rails, and close game controls all use that choice.',
80
+ },
81
+ {
82
+ question: 'How do I record a finished game?',
83
+ answer: 'Keep adding stones or amarracos until one pair reaches the selected finish line. The close game button then becomes available. Confirm the winning pair to add one game and start the next game at zero points.',
84
+ },
85
+ {
86
+ question: 'Does the scoreboard save an interrupted match?',
87
+ answer: 'Yes. The current setup, score, games, and recent actions are saved locally in the browser. The data stays on that device and is not sent to a server.',
88
+ },
89
+ {
90
+ question: 'Does this scoreboard enforce every regional Mus rule?',
91
+ answer: 'No. Mus has regional and tournament variations, especially around the number of points and games. This scoreboard records the agreed tally and leaves the spoken lances and local rules to the players.',
92
+ },
93
+ {
94
+ question: 'Should I play Mus with a Spanish or French deck?',
95
+ answer: 'The traditional Mus game is played with a Spanish deck, so that is the default choice here. To adapt a French deck, remove the 8s, 9s, and 10s so only 40 cards remain. Jacks correspond to Sotas, Queens to Caballos, and Kings to Reyes; 3s still act as Kings and 2s as Aces.',
96
+ },
97
+ ];
98
+
99
+ const howTo = [
100
+ {
101
+ name: 'Name both pairs',
102
+ text: 'Enter the names that will be visible on the two sides of the table so the scorer can identify the correct pair at a glance.',
103
+ },
104
+ {
105
+ name: 'Choose the local finish line',
106
+ text: 'Select 30, 40, or 50 points per game and choose how many games are needed to win the vaca.',
107
+ },
108
+ {
109
+ name: 'Count the hand',
110
+ text: 'Tap plus one for a stone or plus five for an amarraco whenever the table agrees the points have been won.',
111
+ },
112
+ {
113
+ name: 'Close each game deliberately',
114
+ text: 'When a pair reaches the finish line, confirm the winner. The scoreboard records the game, resets the stones, and keeps the match tally.',
115
+ },
116
+ ];
117
+
118
+ const faqSchema: WithContext<FAQPage> = {
119
+ '@context': 'https://schema.org',
120
+ '@type': 'FAQPage',
121
+ mainEntity: faq.map((item) => ({
122
+ '@type': 'Question',
123
+ name: item.question,
124
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
125
+ })),
126
+ };
127
+
128
+ const appSchema: WithContext<SoftwareApplication> = {
129
+ '@context': 'https://schema.org',
130
+ '@type': 'SoftwareApplication',
131
+ name: 'Online Mus Scoreboard',
132
+ operatingSystem: 'All',
133
+ applicationCategory: 'GameApplication',
134
+ description: 'A local first Mus scoreboard for tracking stones, amarracos, games and vacas during a live match.',
135
+ };
136
+
137
+ const howToSchema: WithContext<HowTo> = {
138
+ '@context': 'https://schema.org',
139
+ '@type': 'HowTo',
140
+ name: 'How to keep score in a live Mus match',
141
+ step: howTo.map((item) => ({
142
+ '@type': 'HowToStep',
143
+ name: item.name,
144
+ text: item.text,
145
+ })),
146
+ };
147
+
148
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [
149
+ faqSchema,
150
+ appSchema,
151
+ howToSchema,
152
+ ];
153
+
154
+ export const content: MusScoreboardLocaleContent = {
155
+ slug: 'online-mus-scoreboard',
156
+ title: 'Online Mus Scoreboard for Live Games',
157
+ description: 'Track stones, amarracos, games and vacas with a fast Mus scoreboard for a real table. Choose 30, 40 or 50 points and keep the match on your device.',
158
+ ui,
159
+ seo: [
160
+ { type: 'title', text: 'Keep a Clear Mus Tally While the Table Keeps Moving', level: 2 },
161
+ { type: 'paragraph', html: 'Mus scoring changes quickly because several lances may be counted in the same hand. This scoreboard keeps the two pairs visible, separates single stones from groups of five, and leaves the final confirmation with the players who have agreed the tally.' },
162
+ { type: 'title', text: 'Choose the Finish Line Before the First Hand', level: 2 },
163
+ { type: 'paragraph', html: 'The common forty point game is not the only table rule. Some groups play to thirty or use another agreed target. Set the points per game and the number of games needed to win the vaca before you start, so the remaining points and close game controls match the table.' },
164
+ {
165
+ type: 'table',
166
+ headers: ['Setting', 'What it controls', 'When to use it'],
167
+ rows: [
168
+ ['30 points', 'Short game finish line', 'Quick games or a local house rule'],
169
+ ['40 points', 'Common game finish line', 'The usual starting point for a friendly match'],
170
+ ['50 points', 'Longer game finish line', 'A table that agrees to a longer game'],
171
+ ],
172
+ },
173
+ { type: 'tip', title: 'Agree the Rules Out Loud', html: 'Regional and tournament rules can differ. Confirm the finish line, the number of games in the vaca, and who is responsible for the physical tally before the cards are dealt.' },
174
+ { type: 'title', text: 'Choose the Deck Before the Cards Are Dealt', level: 2 },
175
+ { type: 'paragraph', html: 'Mus is traditionally played with a Spanish deck, which is why the scoreboard starts with Spanish cards selected. To use a French deck, remove the 8s, 9s, and 10s first so the table has 40 cards. Jacks map to Sotas, Queens to Caballos, Kings to Reyes, while 3s still act as Kings and 2s as Aces. The selector records the deck being used without changing the score flow.' },
176
+ { type: 'title', text: 'Read the Digital Tally Beside the Physical Table', level: 2 },
177
+ { type: 'paragraph', html: 'The large score shows the total points. The line below it translates that total into amarracos and stones, while the small pieces in each pair card give you a quick visual check against the table. If the two records disagree, pause and resolve the physical tally before adding another score.' },
178
+ { type: 'list', items: ['<strong>Stone:</strong> one point in the digital tally.', '<strong>Amarraco:</strong> a group of five stones represented by one diamond.', '<strong>Game:</strong> a completed point race that resets the stones after confirmation.', '<strong>Vaca:</strong> the match total reached by winning the configured number of games.'] },
179
+ { type: 'title', text: 'Close a Game Only After the Table Agrees', level: 2 },
180
+ { type: 'paragraph', html: 'Reaching the finish line makes a pair eligible to close the game, but the scoreboard does not silently award it. This mirrors the practical need to verify the last count with the opposing pair. Confirming the winner records one game, resets both point totals, and preserves the recent call history.' },
181
+ { type: 'tip', title: 'Use Undo for a Misread Tally', html: 'If the scorer taps the wrong pair or uses an amarraco instead of a stone, undo the last action immediately. For an older disagreement, compare the recent calls with the physical pieces and then continue from the agreed score.' },
182
+ ],
183
+ faq,
184
+ bibliography,
185
+ howTo,
186
+ schemas,
187
+ };
@@ -0,0 +1,187 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { MusScoreboardLocaleContent, MusScoreboardUI } from '../entry';
4
+
5
+ const ui: MusScoreboardUI = {
6
+ onboarding: 'Nombra a las dos parejas, ajusta los tantos y amarracos, y anota el tanteo conforme avanza cada lance de la partida.',
7
+ pairOneLabel: 'Pareja uno',
8
+ pairTwoLabel: 'Pareja dos',
9
+ pairOneDefault: 'Mesa Norte',
10
+ pairTwoDefault: 'Mesa Sur',
11
+ targetPointsLabel: 'Tantos por juego',
12
+ targetPointsHint: 'Elige el límite de tantos para cerrar cada chico o juego.',
13
+ gamesToWinLabel: 'Juegos para ganar la vaca',
14
+ gamesToWinHint: 'La primera pareja en alcanzar esta cifra gana la vaca o partida completa.',
15
+ deckLabel: 'Baraja de la mesa',
16
+ deckHint: 'La baraja española de 40 cartas es la opción tradicional. Si usas baraja francesa, elimina los 8, 9 y 10.',
17
+ spanishDeck: 'Baraja española',
18
+ frenchDeck: 'Baraja francesa',
19
+ frenchDeckNotice: 'Recuerda retirar los 8, 9 y 10 de la baraja francesa para jugar con 40 cartas. Las Jotas equivalen a Sotas, las Reinas a Caballos y los Reyes a Reyes.',
20
+ pointsOption30: '30 tantos',
21
+ pointsOption40: '40 tantos',
22
+ pointsOption50: '50 tantos',
23
+ gamesOption1: '1 juego',
24
+ gamesOption2: '2 juegos',
25
+ gamesOption3: '3 juegos',
26
+ startMatch: 'Abrir el marcador',
27
+ matchSettings: 'Configurar parejas y reglas',
28
+ liveMatch: 'Partida en curso',
29
+ targetLabel: 'tantos por chico',
30
+ gameLabel: 'juego',
31
+ gamePlural: 'juegos',
32
+ vacaLabel: 'juegos para ganar',
33
+ scoreLabel: 'Piedras actuales',
34
+ handLabel: 'Elige qué pareja es mano',
35
+ handSelected: 'es mano.',
36
+ stonesLabel: 'Tanteo parcial',
37
+ stoneSingular: 'piedra',
38
+ stonePlural: 'piedras',
39
+ amarracoSingular: 'amarraco',
40
+ amarracoPlural: 'amarracos',
41
+ pointsToGo: 'para ganar',
42
+ addStone: 'piedra',
43
+ addAmarraco: 'amarraco',
44
+ closeGame: 'Cerrar juego',
45
+ closeGamePrompt: '¿Confirmar que esta pareja ha ganado el chico y comenzar el siguiente?',
46
+ confirmationTitle: 'Confirmar acción en la mesa',
47
+ confirmAction: 'Confirmar',
48
+ cancelAction: 'Seguir jugando',
49
+ undo: 'Deshacer',
50
+ resetMatch: 'Reiniciar partida',
51
+ resetMatchPrompt: '¿Reiniciar la partida actual y borrar el historial de tanteo?',
52
+ historyTitle: 'Últimas anotaciones',
53
+ noHistory: 'Sin anotaciones todavía. Cada lance anotado aparecerá aquí.',
54
+ matchReady: 'La mesa está lista para empezar.',
55
+ closeGameHint: 'Una pareja ha alcanzado el límite de tantos. Confirma la victoria del chico.',
56
+ waitingForScore: 'Sigue contando. Tantos restantes para el líder:',
57
+ gameWon: 'Chico cerrado.',
58
+ vacaWon: 'Vaca ganada. Inicia una nueva partida cuando la mesa esté lista.',
59
+ gameClosed: 'ha cerrado el juego.',
60
+ pointsAdded: 'ha sumado',
61
+ matchSaved: 'Puntuación guardada en este dispositivo.',
62
+ lastAction: 'última anotación',
63
+ settingsApplied: 'Nuevas reglas aplicadas. Partida reiniciada.',
64
+ pairNameRequired: 'Asigna un nombre a ambas parejas antes de abrir el marcador.',
65
+ visualScoreLabel: 'Marcador de mus en mesa con piedras, amarracos, juegos y límite de tantos',
66
+ };
67
+
68
+ const faq = [
69
+ {
70
+ question: '¿Qué permite registrar este marcador de mus online?',
71
+ answer: 'Permite llevar el tanteo en vivo de las dos parejas: piedras (tantos individuales), amarracos (bloques de 5 tantos), chicos o juegos ganados, marca de la pareja que es mano e historial de anotaciones.',
72
+ },
73
+ {
74
+ question: '¿Por qué se diferencian las piedras y los amarracos?',
75
+ answer: 'Una piedra representa un punto individual y un amarraco equivale a 5 piedras. Separar ambas métricas facilita cotejar el marcador digital con garbanzos, amarracos o fichas reales en la mesa.',
76
+ },
77
+ {
78
+ question: '¿Se puede jugar a 30, 40 o 50 tantos?',
79
+ answer: 'Sí. Puedes seleccionar 30, 40 o 50 tantos por chico antes de abrir el marcador. Todas las métricas y botones de cierre se adaptan a la meta fijada.',
80
+ },
81
+ {
82
+ question: '¿Cómo se cierra un chico o juego completado?',
83
+ answer: 'Al sumar amarracos y piedras hasta alcanzar el límite seleccionado, el botón de cierre se activa. Tras la confirmación de ambas parejas, se suma un juego al marcador general y se reinician las piedras a cero.',
84
+ },
85
+ {
86
+ question: '¿Se guardan los datos si recargo la página o cierro el navegador?',
87
+ answer: 'Sí. La configuración de la mesa, los nombres, las piedras y los chicos ganados se guardan localmente en el navegador de tu dispositivo sin enviar datos a servidores externos.',
88
+ },
89
+ {
90
+ question: '¿El marcador valida automáticamente las señas o los lances?',
91
+ answer: 'No. El Mus cuenta con múltiples variantes regionales y de torneo. Este marcador gestiona de forma impecable el tanteo acordado por los jugadores, dejando los envites, señas y voces en la mesa.',
92
+ },
93
+ {
94
+ question: '¿Cómo adaptar una baraja francesa para jugar al mus?',
95
+ answer: 'Retira los 8, 9 y 10 para dejar la baraja en 40 cartas. Las Jotas funcionan como Sotas, las Reinas como Caballos y los Reyes como Reyes. Los 3 se juegan como Reyes y los 2 como Ases (pitos).',
96
+ },
97
+ ];
98
+
99
+ const howTo = [
100
+ {
101
+ name: 'Identificar a las parejas',
102
+ text: 'Escribe los nombres de los cuatro jugadores agrupados por parejas (Norte/Sur o nombres propios) para identificarlas en la mesa.',
103
+ },
104
+ {
105
+ name: 'Fijar el límite de tantos y la vaca',
106
+ text: 'Selecciona si jugáis a 30, 40 o 50 tantos por chico y cuántos chicos son necesarios para ganar la vaca.',
107
+ },
108
+ {
109
+ name: 'Anotar piedras y amarracos',
110
+ text: 'Pulsa piedra (+1) o amarraco (+5) conforme la pareja gane puntos en Grande, Chica, Pares, Juego o Punto.',
111
+ },
112
+ {
113
+ name: 'Cerrar el chico y contar la vaca',
114
+ text: 'Al alcanzar el límite, confirma la victoria de la pareja para sumar el chico y reiniciar las piedras de la mesa.',
115
+ },
116
+ ];
117
+
118
+ const faqSchema: WithContext<FAQPage> = {
119
+ '@context': 'https://schema.org',
120
+ '@type': 'FAQPage',
121
+ mainEntity: faq.map((item) => ({
122
+ '@type': 'Question',
123
+ name: item.question,
124
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
125
+ })),
126
+ };
127
+
128
+ const appSchema: WithContext<SoftwareApplication> = {
129
+ '@context': 'https://schema.org',
130
+ '@type': 'SoftwareApplication',
131
+ name: 'Marcador de Mus Online',
132
+ operatingSystem: 'All',
133
+ applicationCategory: 'GameApplication',
134
+ description: 'Contador de piedras, amarracos, chicos y vacas para partidas de mus en mesa real.',
135
+ };
136
+
137
+ const howToSchema: WithContext<HowTo> = {
138
+ '@context': 'https://schema.org',
139
+ '@type': 'HowTo',
140
+ name: 'Cómo llevar el tanteo en una partida de Mus',
141
+ step: howTo.map((item) => ({
142
+ '@type': 'HowToStep',
143
+ name: item.name,
144
+ text: item.text,
145
+ })),
146
+ };
147
+
148
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [
149
+ faqSchema,
150
+ appSchema,
151
+ howToSchema,
152
+ ];
153
+
154
+ export const content: MusScoreboardLocaleContent = {
155
+ slug: 'marcador-mus-online',
156
+ title: 'Marcador de Mus Online para Partidas en Vivo',
157
+ description: 'Anota piedras, amarracos, chicos y vacas en tus partidas de mus con baraja española o francesa. Partidas a 30, 40 o 50 tantos con guardado local.',
158
+ ui,
159
+ seo: [
160
+ { type: 'title', text: 'Lleva un Tanteo Claro y Dinámico en tus Partidas de Mus', level: 2 },
161
+ { type: 'paragraph', html: 'El Mus es un juego tradicional español repleto de dinamismo, envites e intensidad. Como los puntos se cantan al finalizar cada lance (Grande, Chica, Pares, Juego o Punto), tener un contador ágil evita discusiones y mantiene el ritmo en la mesa.' },
162
+ { type: 'title', text: 'Configura la Meta de Tantos Antes del Primer Mus', level: 2 },
163
+ { type: 'paragraph', html: 'Aunque el estándar habitual es jugar a 40 tantos, en muchas regiones y peñas se juega a 30 o 50 tantos. Ajusta la meta de puntos y la duración de la vaca antes de repartir la primera mano para que el contador visual coincida exactamente con las reglas de vuestra mesa.' },
164
+ {
165
+ type: 'table',
166
+ headers: ['Ajuste', 'Qué controla', 'Cuándo utilizarlo'],
167
+ rows: [
168
+ ['30 tantos', 'Chico corto', 'Partidas rápidas, torneos exprés o reglas locales'],
169
+ ['40 tantos', 'Chico estándar', 'El formato tradicional de partida entre amigos'],
170
+ ['50 tantos', 'Chico largo', 'Mesas que buscan partidas de mayor estrategia'],
171
+ ],
172
+ },
173
+ { type: 'tip', title: 'Acordad las Reglas de la Mesa en Voz Alta', html: 'Antes de cortar la baraja, confirmad si jugáis a 8 reyes y 8 ases (con 3s como reyes y 2s como ases), el límite de amarracos y quién custodia físicamente los garbanzos o fichas.' },
174
+ { type: 'title', text: 'Adaptación de Baraja Española y Francesa', level: 2 },
175
+ { type: 'paragraph', html: 'La baraja española tradicional de 40 cartas (Oros, Copas, Espadas y Bastos) es la referencia natural del Mus. Si jugáis con baraja francesa, retirad los ochos, nueves y dieces. Las Jotas representan a las Sotas, las Reinas a los Caballos y los Reyes a los Reyes. Los doses hacen de pitos (Ases) y los treses de reyes.' },
176
+ { type: 'title', text: 'Piedras y Amarracos: Control Visual Directo', level: 2 },
177
+ { type: 'paragraph', html: 'El marcador digital muestra el total numérico de puntos y desglosa automáticamente la cifra en amarracos (bloques de 5 tantos) y piedras sueltas. Esta equivalencia directa facilita que cualquier jugador en la mesa verifique el tanteo de un vistazo.' },
178
+ { type: 'list', items: ['<strong>Piedra:</strong> 1 punto individual sumado en el tanteo.', '<strong>Amarraco:</strong> 1 ficha o bloque equivalente a 5 piedras.', '<strong>Chico / Juego:</strong> carrera de puntos cerrada al alcanzar la meta acordada.', '<strong>Vaca:</strong> victoria definitiva al conseguir el número fijado de chicos.'] },
179
+ { type: 'title', text: 'Cierre de Chico y Gestión de Errores', level: 2 },
180
+ { type: 'paragraph', html: 'Cuando una pareja alcance los tantos necesarios, el botón de cierre se activa con advertencia de confirmación. Si os equivocáis al anotar un punto por despiste, el botón "Deshacer" permite revertir la última acción al instante sin alterar el historial.' },
181
+ { type: 'tip', title: 'Función Deshacer en Caso de Confusión', html: 'Si al cantar las pares o el juego se anota un punto a la pareja equivocada, pulsa Deshacer inmediatamente para corregir el tanteo de la mano.' },
182
+ ],
183
+ faq,
184
+ bibliography,
185
+ howTo,
186
+ schemas,
187
+ };