playwright-director 0.2.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 (122) hide show
  1. package/README.md +860 -0
  2. package/dist/Tutorial.d.ts +108 -0
  3. package/dist/Tutorial.d.ts.map +1 -0
  4. package/dist/Tutorial.js +767 -0
  5. package/dist/Tutorial.js.map +1 -0
  6. package/dist/bin/export-transcript.d.ts +3 -0
  7. package/dist/bin/export-transcript.d.ts.map +1 -0
  8. package/dist/bin/export-transcript.js +111 -0
  9. package/dist/bin/export-transcript.js.map +1 -0
  10. package/dist/cursor.d.ts +24 -0
  11. package/dist/cursor.d.ts.map +1 -0
  12. package/dist/cursor.js +96 -0
  13. package/dist/cursor.js.map +1 -0
  14. package/dist/index.d.ts +16 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +12 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/init.d.ts +3 -0
  19. package/dist/init.d.ts.map +1 -0
  20. package/dist/init.js +183 -0
  21. package/dist/init.js.map +1 -0
  22. package/dist/merge.d.ts +26 -0
  23. package/dist/merge.d.ts.map +1 -0
  24. package/dist/merge.js +65 -0
  25. package/dist/merge.js.map +1 -0
  26. package/dist/music.d.ts +29 -0
  27. package/dist/music.d.ts.map +1 -0
  28. package/dist/music.js +107 -0
  29. package/dist/music.js.map +1 -0
  30. package/dist/overlay-html.d.ts +44 -0
  31. package/dist/overlay-html.d.ts.map +1 -0
  32. package/dist/overlay-html.js +150 -0
  33. package/dist/overlay-html.js.map +1 -0
  34. package/dist/overlay.d.ts +39 -0
  35. package/dist/overlay.d.ts.map +1 -0
  36. package/dist/overlay.js +134 -0
  37. package/dist/overlay.js.map +1 -0
  38. package/dist/postinstall.d.ts +3 -0
  39. package/dist/postinstall.d.ts.map +1 -0
  40. package/dist/postinstall.js +38 -0
  41. package/dist/postinstall.js.map +1 -0
  42. package/dist/reporter.d.ts +22 -0
  43. package/dist/reporter.d.ts.map +1 -0
  44. package/dist/reporter.js +166 -0
  45. package/dist/reporter.js.map +1 -0
  46. package/dist/site/build-site.d.ts +2 -0
  47. package/dist/site/build-site.d.ts.map +1 -0
  48. package/dist/site/build-site.js +82 -0
  49. package/dist/site/build-site.js.map +1 -0
  50. package/dist/site/embed.d.ts +48 -0
  51. package/dist/site/embed.d.ts.map +1 -0
  52. package/dist/site/embed.js +45 -0
  53. package/dist/site/embed.js.map +1 -0
  54. package/dist/site/generate-manifest.d.ts +15 -0
  55. package/dist/site/generate-manifest.d.ts.map +1 -0
  56. package/dist/site/generate-manifest.js +106 -0
  57. package/dist/site/generate-manifest.js.map +1 -0
  58. package/dist/site/scaffold.d.ts +3 -0
  59. package/dist/site/scaffold.d.ts.map +1 -0
  60. package/dist/site/scaffold.js +70 -0
  61. package/dist/site/scaffold.js.map +1 -0
  62. package/dist/site/scan-tutorials.d.ts +12 -0
  63. package/dist/site/scan-tutorials.d.ts.map +1 -0
  64. package/dist/site/scan-tutorials.js +54 -0
  65. package/dist/site/scan-tutorials.js.map +1 -0
  66. package/dist/site/types.d.ts +75 -0
  67. package/dist/site/types.d.ts.map +1 -0
  68. package/dist/site/types.js +2 -0
  69. package/dist/site/types.js.map +1 -0
  70. package/dist/skill-stamp.d.ts +21 -0
  71. package/dist/skill-stamp.d.ts.map +1 -0
  72. package/dist/skill-stamp.js +39 -0
  73. package/dist/skill-stamp.js.map +1 -0
  74. package/dist/slugify.d.ts +19 -0
  75. package/dist/slugify.d.ts.map +1 -0
  76. package/dist/slugify.js +29 -0
  77. package/dist/slugify.js.map +1 -0
  78. package/dist/stage-presets.d.ts +51 -0
  79. package/dist/stage-presets.d.ts.map +1 -0
  80. package/dist/stage-presets.js +45 -0
  81. package/dist/stage-presets.js.map +1 -0
  82. package/dist/styles.css +637 -0
  83. package/dist/timeline.d.ts +87 -0
  84. package/dist/timeline.d.ts.map +1 -0
  85. package/dist/timeline.js +108 -0
  86. package/dist/timeline.js.map +1 -0
  87. package/dist/transcript.d.ts +87 -0
  88. package/dist/transcript.d.ts.map +1 -0
  89. package/dist/transcript.js +291 -0
  90. package/dist/transcript.js.map +1 -0
  91. package/dist/tts-provider.d.ts +69 -0
  92. package/dist/tts-provider.d.ts.map +1 -0
  93. package/dist/tts-provider.js +182 -0
  94. package/dist/tts-provider.js.map +1 -0
  95. package/dist/types.d.ts +109 -0
  96. package/dist/types.d.ts.map +1 -0
  97. package/dist/types.js +2 -0
  98. package/dist/types.js.map +1 -0
  99. package/dist/voice-prerender.d.ts +41 -0
  100. package/dist/voice-prerender.d.ts.map +1 -0
  101. package/dist/voice-prerender.js +122 -0
  102. package/dist/voice-prerender.js.map +1 -0
  103. package/dist/voice.d.ts +76 -0
  104. package/dist/voice.d.ts.map +1 -0
  105. package/dist/voice.js +244 -0
  106. package/dist/voice.js.map +1 -0
  107. package/package.json +87 -0
  108. package/skills/tutorialize/SKILL.md +54 -0
  109. package/skills/tutorialize/agent.md +58 -0
  110. package/skills/tutorialize/references/api.md +489 -0
  111. package/skills/tutorialize/references/storytelling.md +193 -0
  112. package/src/styles.css +637 -0
  113. package/templates/site/public/.gitkeep +0 -0
  114. package/templates/site/public/widget.js +273 -0
  115. package/templates/site/src/components/TutorialsHome.astro +141 -0
  116. package/templates/site/src/components/VideoCard.astro +192 -0
  117. package/templates/site/src/components/VideoModal.astro +170 -0
  118. package/templates/site/src/data/.gitkeep +0 -0
  119. package/templates/site/src/layouts/Base.astro +56 -0
  120. package/templates/site/src/pages/[slug].astro +745 -0
  121. package/templates/site/src/pages/index.astro +5 -0
  122. package/templates/site/src/styles/tutorials.css +303 -0
@@ -0,0 +1,5 @@
1
+ ---
2
+ import TutorialsHome from '../components/TutorialsHome.astro';
3
+ ---
4
+
5
+ <TutorialsHome />
@@ -0,0 +1,303 @@
1
+ /* Tutorial video gallery styles */
2
+ :root {
3
+ --color-primary: #6366f1;
4
+ --color-primary-dark: #4f46e5;
5
+ --color-bg: #f8fafc;
6
+ --color-bg-card: #ffffff;
7
+ --color-text: #1e293b;
8
+ --color-text-muted: #64748b;
9
+ --color-border: #e2e8f0;
10
+ --color-pro: #f59e0b;
11
+ --font-family: system-ui, -apple-system, sans-serif;
12
+ --radius: 0.75rem;
13
+ --shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
14
+ --shadow-hover: 0 8px 24px rgba(0, 0, 0, 0.12);
15
+ }
16
+
17
+ @media (prefers-color-scheme: dark) {
18
+ :root:not([data-theme='light']) {
19
+ --color-bg: #0f172a;
20
+ --color-bg-card: #1e293b;
21
+ --color-text: #e2e8f0;
22
+ --color-text-muted: #94a3b8;
23
+ --color-border: #334155;
24
+ --shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
25
+ --shadow-hover: 0 8px 24px rgba(0, 0, 0, 0.4);
26
+ }
27
+ }
28
+
29
+ :root[data-theme='dark'] {
30
+ --color-bg: #0f172a;
31
+ --color-bg-card: #1e293b;
32
+ --color-text: #e2e8f0;
33
+ --color-text-muted: #94a3b8;
34
+ --color-border: #334155;
35
+ --shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
36
+ --shadow-hover: 0 8px 24px rgba(0, 0, 0, 0.4);
37
+ }
38
+
39
+ * {
40
+ box-sizing: border-box;
41
+ margin: 0;
42
+ padding: 0;
43
+ }
44
+
45
+ body {
46
+ font-family: var(--font-family, system-ui, -apple-system, sans-serif);
47
+ background: var(--color-bg);
48
+ color: var(--color-text);
49
+ line-height: 1.6;
50
+ min-height: 100vh;
51
+ display: flex;
52
+ flex-direction: column;
53
+ }
54
+
55
+ /* Header */
56
+ header {
57
+ background: var(--color-bg-card);
58
+ border-bottom: 1px solid var(--color-border);
59
+ position: sticky;
60
+ top: 0;
61
+ z-index: 100;
62
+ }
63
+
64
+ .header-content {
65
+ max-width: 1200px;
66
+ margin: 0 auto;
67
+ padding: 1rem 2rem;
68
+ display: flex;
69
+ justify-content: space-between;
70
+ align-items: center;
71
+ }
72
+
73
+ .logo {
74
+ display: flex;
75
+ align-items: center;
76
+ gap: 0.5rem;
77
+ text-decoration: none;
78
+ color: var(--color-text);
79
+ font-weight: 600;
80
+ font-size: 1.1rem;
81
+ }
82
+
83
+ .logo-icon {
84
+ font-size: 1.5rem;
85
+ }
86
+
87
+ .logo-img {
88
+ height: 32px;
89
+ width: auto;
90
+ }
91
+
92
+ /* Main content */
93
+ main {
94
+ flex: 1;
95
+ max-width: 1200px;
96
+ margin: 0 auto;
97
+ padding: 2rem;
98
+ width: 100%;
99
+ }
100
+
101
+ /* Hero section */
102
+ .hero {
103
+ text-align: center;
104
+ padding: 3rem 1rem;
105
+ }
106
+
107
+ .hero h1 {
108
+ font-size: 2.5rem;
109
+ margin-bottom: 0.5rem;
110
+ color: var(--color-text);
111
+ }
112
+
113
+ .hero p {
114
+ font-size: 1.25rem;
115
+ color: var(--color-text-muted);
116
+ }
117
+
118
+ /* Category sections */
119
+ .category {
120
+ margin-bottom: 3rem;
121
+ }
122
+
123
+ .category-header {
124
+ display: flex;
125
+ align-items: center;
126
+ gap: 0.5rem;
127
+ margin-bottom: 1.5rem;
128
+ padding-bottom: 0.5rem;
129
+ border-bottom: 2px solid var(--color-border);
130
+ }
131
+
132
+ .category-header h2 {
133
+ font-size: 1.25rem;
134
+ font-weight: 600;
135
+ }
136
+
137
+ .category-icon {
138
+ font-size: 1.25rem;
139
+ }
140
+
141
+ /* Video grid */
142
+ .video-grid {
143
+ display: grid;
144
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
145
+ gap: 1.5rem;
146
+ }
147
+
148
+ /* Video card */
149
+ .video-card {
150
+ background: var(--color-bg-card);
151
+ border-radius: var(--radius);
152
+ overflow: hidden;
153
+ box-shadow: var(--shadow);
154
+ transition: all 0.3s ease;
155
+ cursor: pointer;
156
+ }
157
+
158
+ .video-card:hover {
159
+ transform: translateY(-4px);
160
+ box-shadow: var(--shadow-hover);
161
+ }
162
+
163
+ .video-thumbnail {
164
+ position: relative;
165
+ aspect-ratio: 16 / 9;
166
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
167
+ display: flex;
168
+ align-items: center;
169
+ justify-content: center;
170
+ }
171
+
172
+ .video-thumbnail img {
173
+ width: 100%;
174
+ height: 100%;
175
+ object-fit: cover;
176
+ }
177
+
178
+ .play-button {
179
+ position: absolute;
180
+ width: 60px;
181
+ height: 60px;
182
+ background: rgba(255, 255, 255, 0.95);
183
+ border-radius: 50%;
184
+ display: flex;
185
+ align-items: center;
186
+ justify-content: center;
187
+ font-size: 1.5rem;
188
+ transition: transform 0.2s;
189
+ }
190
+
191
+ .video-card:hover .play-button {
192
+ transform: scale(1.1);
193
+ }
194
+
195
+ .video-info {
196
+ padding: 1rem;
197
+ }
198
+
199
+ .video-title {
200
+ font-weight: 600;
201
+ margin-bottom: 0.25rem;
202
+ font-size: 1rem;
203
+ }
204
+
205
+ .video-meta {
206
+ display: flex;
207
+ align-items: center;
208
+ gap: 0.75rem;
209
+ color: var(--color-text-muted);
210
+ font-size: 0.875rem;
211
+ }
212
+
213
+ .video-duration {
214
+ display: flex;
215
+ align-items: center;
216
+ gap: 0.25rem;
217
+ }
218
+
219
+ /* Video modal */
220
+ .video-modal {
221
+ position: fixed;
222
+ inset: 0;
223
+ background: rgba(0, 0, 0, 0.95);
224
+ display: flex;
225
+ flex-direction: column;
226
+ align-items: center;
227
+ justify-content: center;
228
+ z-index: 1000;
229
+ padding: 2rem;
230
+ }
231
+
232
+ .video-modal video {
233
+ max-width: 100%;
234
+ max-height: 70vh;
235
+ border-radius: var(--radius);
236
+ }
237
+
238
+ .video-modal-close {
239
+ position: absolute;
240
+ top: 1rem;
241
+ right: 1rem;
242
+ background: white;
243
+ border: none;
244
+ width: 40px;
245
+ height: 40px;
246
+ border-radius: 50%;
247
+ font-size: 1.5rem;
248
+ cursor: pointer;
249
+ z-index: 10;
250
+ }
251
+
252
+ .video-modal-close:hover {
253
+ background: #f0f0f0;
254
+ }
255
+
256
+ /* Footer */
257
+ footer {
258
+ background: var(--color-bg-card);
259
+ border-top: 1px solid var(--color-border);
260
+ padding: 1.5rem;
261
+ }
262
+
263
+ .footer-content {
264
+ max-width: 1200px;
265
+ margin: 0 auto;
266
+ display: flex;
267
+ justify-content: center;
268
+ gap: 1rem;
269
+ color: var(--color-text-muted);
270
+ font-size: 0.875rem;
271
+ }
272
+
273
+ .footer-content a {
274
+ color: var(--color-text-muted);
275
+ text-decoration: none;
276
+ }
277
+
278
+ .footer-content a:hover {
279
+ color: var(--color-primary);
280
+ }
281
+
282
+ /* Responsive */
283
+ @media (max-width: 768px) {
284
+ .hero h1 {
285
+ font-size: 1.75rem;
286
+ }
287
+
288
+ .hero p {
289
+ font-size: 1rem;
290
+ }
291
+
292
+ .video-grid {
293
+ grid-template-columns: 1fr;
294
+ }
295
+
296
+ .header-content {
297
+ padding: 1rem;
298
+ }
299
+
300
+ main {
301
+ padding: 1rem;
302
+ }
303
+ }