@jjlmoya/utils-performing-arts 1.1.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 (117) hide show
  1. package/.github/workflows/npm-publish.yml +40 -0
  2. package/.gitignore +6 -0
  3. package/.stylelintrc.json +98 -0
  4. package/astro.config.mjs +19 -0
  5. package/eslint.config.js +201 -0
  6. package/package.json +79 -0
  7. package/prompts/create_tool.md +98 -0
  8. package/prompts/i18n/de.md +16 -0
  9. package/prompts/i18n/en.md +16 -0
  10. package/prompts/i18n/es.md +16 -0
  11. package/prompts/i18n/fr.md +16 -0
  12. package/prompts/i18n/id.md +16 -0
  13. package/prompts/i18n/it.md +16 -0
  14. package/prompts/i18n/ja.md +16 -0
  15. package/prompts/i18n/ko.md +16 -0
  16. package/prompts/i18n/nl.md +16 -0
  17. package/prompts/i18n/pl.md +16 -0
  18. package/prompts/i18n/pt.md +16 -0
  19. package/prompts/i18n/ru.md +16 -0
  20. package/prompts/i18n/sv.md +16 -0
  21. package/prompts/i18n/tr.md +16 -0
  22. package/prompts/i18n/zh.md +16 -0
  23. package/prompts/seo.md +58 -0
  24. package/prompts/translations/french.md +33 -0
  25. package/scripts/postinstall.mjs +27 -0
  26. package/src/category/PerformingArtsCategorySEO.astro +9 -0
  27. package/src/category/i18n/de.ts +27 -0
  28. package/src/category/i18n/en.ts +27 -0
  29. package/src/category/i18n/es.ts +27 -0
  30. package/src/category/i18n/fr.ts +27 -0
  31. package/src/category/i18n/id.ts +27 -0
  32. package/src/category/i18n/it.ts +27 -0
  33. package/src/category/i18n/ja.ts +27 -0
  34. package/src/category/i18n/ko.ts +27 -0
  35. package/src/category/i18n/nl.ts +27 -0
  36. package/src/category/i18n/pl.ts +27 -0
  37. package/src/category/i18n/pt.ts +27 -0
  38. package/src/category/i18n/ru.ts +27 -0
  39. package/src/category/i18n/sv.ts +27 -0
  40. package/src/category/i18n/tr.ts +27 -0
  41. package/src/category/i18n/zh.ts +27 -0
  42. package/src/category/index.ts +10 -0
  43. package/src/components/PreviewNavSidebar.astro +116 -0
  44. package/src/components/PreviewToolbar.astro +143 -0
  45. package/src/data.ts +10 -0
  46. package/src/entries.ts +3 -0
  47. package/src/env.d.ts +5 -0
  48. package/src/index.ts +20 -0
  49. package/src/layouts/PreviewLayout.astro +118 -0
  50. package/src/pages/[locale]/[slug].astro +165 -0
  51. package/src/pages/[locale].astro +251 -0
  52. package/src/pages/index.astro +4 -0
  53. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  54. package/src/tests/category_seo_quality.test.ts +74 -0
  55. package/src/tests/diacritics_density.test.ts +118 -0
  56. package/src/tests/faq_count.test.ts +18 -0
  57. package/src/tests/i18n_coverage.test.ts +34 -0
  58. package/src/tests/inverted_punctuation.test.ts +84 -0
  59. package/src/tests/locale_completeness.test.ts +23 -0
  60. package/src/tests/mocks/astro_mock.js +2 -0
  61. package/src/tests/no_em_dash.test.ts +47 -0
  62. package/src/tests/no_en_dash.test.ts +70 -0
  63. package/src/tests/no_h1_in_components.test.ts +48 -0
  64. package/src/tests/pagespeed_best_practices.test.ts +198 -0
  65. package/src/tests/qa-test-helpers.ts +32 -0
  66. package/src/tests/qa_bibliography_links.test.ts +43 -0
  67. package/src/tests/qa_claim_evidence.test.ts +69 -0
  68. package/src/tests/qa_logic_reference_coverage.test.ts +46 -0
  69. package/src/tests/qa_runtime_i18n.test.ts +100 -0
  70. package/src/tests/schemas_fulfillment.test.ts +23 -0
  71. package/src/tests/script_density.test.ts +94 -0
  72. package/src/tests/seo_length.test.ts +22 -0
  73. package/src/tests/seo_parity.test.ts +60 -0
  74. package/src/tests/seo_translation_completeness.test.ts +69 -0
  75. package/src/tests/seo_wellformed_export.test.ts +65 -0
  76. package/src/tests/shared-test-helpers.ts +56 -0
  77. package/src/tests/slug_language_code_format.test.ts +23 -0
  78. package/src/tests/slug_uniqueness.test.ts +81 -0
  79. package/src/tests/spanish_leakage.test.ts +175 -0
  80. package/src/tests/title_quality.test.ts +55 -0
  81. package/src/tests/tool_exports.test.ts +34 -0
  82. package/src/tests/tool_validation.test.ts +16 -0
  83. package/src/tests/translation_copy.test.ts +115 -0
  84. package/src/tool/rehearsal-call-sheet-planner/bibliography.astro +6 -0
  85. package/src/tool/rehearsal-call-sheet-planner/bibliography.ts +12 -0
  86. package/src/tool/rehearsal-call-sheet-planner/component.astro +74 -0
  87. package/src/tool/rehearsal-call-sheet-planner/controller.ts +98 -0
  88. package/src/tool/rehearsal-call-sheet-planner/dom-views.ts +86 -0
  89. package/src/tool/rehearsal-call-sheet-planner/entry.ts +27 -0
  90. package/src/tool/rehearsal-call-sheet-planner/evaluator.ts +27 -0
  91. package/src/tool/rehearsal-call-sheet-planner/i18n/de.ts +60 -0
  92. package/src/tool/rehearsal-call-sheet-planner/i18n/en.ts +158 -0
  93. package/src/tool/rehearsal-call-sheet-planner/i18n/es.ts +60 -0
  94. package/src/tool/rehearsal-call-sheet-planner/i18n/fr.ts +60 -0
  95. package/src/tool/rehearsal-call-sheet-planner/i18n/id.ts +47 -0
  96. package/src/tool/rehearsal-call-sheet-planner/i18n/it.ts +47 -0
  97. package/src/tool/rehearsal-call-sheet-planner/i18n/ja.ts +47 -0
  98. package/src/tool/rehearsal-call-sheet-planner/i18n/ko.ts +47 -0
  99. package/src/tool/rehearsal-call-sheet-planner/i18n/nl.ts +47 -0
  100. package/src/tool/rehearsal-call-sheet-planner/i18n/pl.ts +47 -0
  101. package/src/tool/rehearsal-call-sheet-planner/i18n/pt.ts +47 -0
  102. package/src/tool/rehearsal-call-sheet-planner/i18n/ru.ts +48 -0
  103. package/src/tool/rehearsal-call-sheet-planner/i18n/sv.ts +48 -0
  104. package/src/tool/rehearsal-call-sheet-planner/i18n/tr.ts +48 -0
  105. package/src/tool/rehearsal-call-sheet-planner/i18n/zh.ts +48 -0
  106. package/src/tool/rehearsal-call-sheet-planner/index.ts +11 -0
  107. package/src/tool/rehearsal-call-sheet-planner/logic.test.ts +68 -0
  108. package/src/tool/rehearsal-call-sheet-planner/logic.ts +229 -0
  109. package/src/tool/rehearsal-call-sheet-planner/rehearsal-call-sheet-planner.css +593 -0
  110. package/src/tool/rehearsal-call-sheet-planner/seo.astro +16 -0
  111. package/src/tool/rehearsal-call-sheet-planner/storage.ts +33 -0
  112. package/src/tool/rehearsal-call-sheet-planner/types.ts +84 -0
  113. package/src/tool/rehearsal-call-sheet-planner/ui.ts +70 -0
  114. package/src/tools.ts +8 -0
  115. package/src/types.ts +68 -0
  116. package/tsconfig.json +15 -0
  117. package/vitest.config.ts +20 -0
@@ -0,0 +1,70 @@
1
+ export interface RehearsalCallSheetUI extends Record<string, string> {
2
+ productionSection: string;
3
+ showName: string;
4
+ showNamePlaceholder: string;
5
+ date: string;
6
+ timingSection: string;
7
+ dayStart: string;
8
+ dayEnd: string;
9
+ breakMinutes: string;
10
+ sceneSection: string;
11
+ scenesLabel: string;
12
+ scenesHint: string;
13
+ availabilitySection: string;
14
+ participantAvailability: string;
15
+ participantHint: string;
16
+ roomAvailability: string;
17
+ roomHint: string;
18
+ notes: string;
19
+ notesPlaceholder: string;
20
+ presets: string;
21
+ presetDay: string;
22
+ presetTight: string;
23
+ presetShowcase: string;
24
+ resultSection: string;
25
+ scheduled: string;
26
+ conflicts: string;
27
+ unscheduled: string;
28
+ minutes: string;
29
+ timelineLabel: string;
30
+ callSheetLabel: string;
31
+ statusScheduled: string;
32
+ statusConflict: string;
33
+ statusUnscheduled: string;
34
+ issueDayOverflow: string;
35
+ issueParticipantAvailability: string;
36
+ issueRoomAvailability: string;
37
+ issueMissingParticipantAvailability: string;
38
+ issueMissingRoomAvailability: string;
39
+ participantSummary: string;
40
+ roomSummary: string;
41
+ scene: string;
42
+ room: string;
43
+ participants: string;
44
+ time: string;
45
+ status: string;
46
+ detail: string;
47
+ dateNotSet: string;
48
+ untitledProduction: string;
49
+ noRoom: string;
50
+ noPeople: string;
51
+ readyDetail: string;
52
+ scenes: string;
53
+ firstCall: string;
54
+ lastCall: string;
55
+ inputIssuesTitle: string;
56
+ inputIssuesHint: string;
57
+ scenesInput: string;
58
+ peopleInput: string;
59
+ roomsInput: string;
60
+ line: string;
61
+ summaryReady: string;
62
+ summaryAttention: string;
63
+ summaryInputIssues: string;
64
+ noScenes: string;
65
+ exportData: string;
66
+ print: string;
67
+ reset: string;
68
+ rulesNote: string;
69
+ rulesLinkLabel: string;
70
+ }
package/src/tools.ts ADDED
@@ -0,0 +1,8 @@
1
+ export { ALL_ENTRIES } from './entries';
2
+ import type { ToolDefinition } from './types';
3
+ import { REHEARSAL_CALL_SHEET_PLANNER_TOOL } from './tool/rehearsal-call-sheet-planner';
4
+
5
+ export const ALL_TOOLS: ToolDefinition[] = [REHEARSAL_CALL_SHEET_PLANNER_TOOL];
6
+
7
+ export { rehearsalCallSheetPlanner } from './tool/rehearsal-call-sheet-planner/entry';
8
+ export type { RehearsalCallSheetUI, RehearsalCallSheetLocaleContent } from './tool/rehearsal-call-sheet-planner/entry';
package/src/types.ts ADDED
@@ -0,0 +1,68 @@
1
+ import type { SEOSection } from '@jjlmoya/utils-shared';
2
+
3
+ export type { SEOSection };
4
+
5
+ export type KnownLocale =
6
+ | 'ar' | 'da' | 'de' | 'en' | 'es' | 'fi'
7
+ | 'fr' | 'id' | 'it' | 'ja' | 'ko' | 'nb' | 'nl'
8
+ | 'pl' | 'pt' | 'ru' | 'sv' | 'tr' | 'zh';
9
+
10
+ export interface FAQItem {
11
+ question: string;
12
+ answer: string;
13
+ }
14
+
15
+ export interface BibliographyEntry {
16
+ name: string;
17
+ url: string;
18
+ }
19
+
20
+ export interface HowToStep {
21
+ name: string;
22
+ text: string;
23
+ }
24
+
25
+ export interface ToolLocaleContent<TUI extends Record<string, string> = Record<string, string>> {
26
+ slug: string;
27
+ title: string;
28
+ description: string;
29
+ ui: TUI;
30
+ seo: SEOSection[];
31
+ faq: FAQItem[];
32
+ bibliography: BibliographyEntry[];
33
+ howTo: HowToStep[];
34
+ schemas: Record<string, unknown>[];
35
+ }
36
+
37
+ export interface CategoryLocaleContent {
38
+ slug: string;
39
+ title: string;
40
+ description: string;
41
+ seo: SEOSection[];
42
+ }
43
+
44
+ export type LocaleLoader<T> = () => Promise<T>;
45
+
46
+ export type LocaleMap<T> = Partial<Record<KnownLocale, LocaleLoader<T>>>;
47
+
48
+ export interface PerformingArtsToolEntry<TUI extends Record<string, string> = Record<string, string>> {
49
+ id: string;
50
+ icons: {
51
+ bg: string;
52
+ fg: string;
53
+ };
54
+ i18n: LocaleMap<ToolLocaleContent<TUI>>;
55
+ }
56
+
57
+ export interface PerformingArtsCategoryEntry {
58
+ icon: string;
59
+ tools: PerformingArtsToolEntry[];
60
+ i18n: LocaleMap<CategoryLocaleContent>;
61
+ }
62
+
63
+ export interface ToolDefinition {
64
+ entry: PerformingArtsToolEntry;
65
+ Component: unknown;
66
+ SEOComponent: unknown;
67
+ BibliographyComponent: unknown;
68
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "extends": "astro/tsconfigs/strictest",
3
+ "include": ["src/**/*", ".astro/types.d.ts"],
4
+ "compilerOptions": {
5
+ "baseUrl": ".",
6
+ "strictNullChecks": true,
7
+ "noImplicitAny": true,
8
+ "strict": true,
9
+ "types": ["astro/client", "astro/jsx-runtime"],
10
+ "jsx": "preserve",
11
+ "jsxImportSource": "astro"
12
+ },
13
+ "exclude": ["node_modules", "dist"]
14
+ }
15
+
@@ -0,0 +1,20 @@
1
+ import { defineConfig } from 'vitest/config';
2
+ import path from 'path';
3
+
4
+ export default defineConfig({
5
+ test: {
6
+ environment: 'node',
7
+ },
8
+ resolve: {
9
+ alias: [
10
+ {
11
+ find: /^(.*)\.astro$/,
12
+ replacement: path.resolve(__dirname, './src/tests/mocks/astro_mock.js')
13
+ }
14
+ ]
15
+ },
16
+ ssr: {
17
+ external: ['astro']
18
+ }
19
+ });
20
+