@mevdragon/vidfarm-devcli 0.2.14 → 0.3.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 (204) hide show
  1. package/README.md +11 -4
  2. package/SKILL.director.md +97 -0
  3. package/SKILL.platform.md +66 -6
  4. package/dist/src/cli.js +135 -1527
  5. package/package.json +5 -24
  6. package/.env.example +0 -60
  7. package/auto-create-hyperframe-templates/AUTO_CREATE_HYPERFRAME_TEMPLATES.md +0 -275
  8. package/auto-create-hyperframe-templates/extractor-system-prompt.md +0 -128
  9. package/auto-create-hyperframe-templates/input-manifest.schema.json +0 -56
  10. package/auto-create-hyperframe-templates/lambda-memory-estimator.md +0 -118
  11. package/auto-create-hyperframe-templates/production-graph.schema.json +0 -314
  12. package/auto-create-hyperframe-templates/runbook.md +0 -198
  13. package/auto-create-hyperframe-templates/scripts/create-hyperframe-template.mjs +0 -368
  14. package/auto-create-hyperframe-templates/template-plan.schema.json +0 -311
  15. package/auto-create-hyperframe-templates/template-planner-prompt.md +0 -144
  16. package/auto-create-templates/AUTO_CREATE_TEMPLATES.md +0 -599
  17. package/auto-create-templates/extractor-system-prompt.md +0 -119
  18. package/auto-create-templates/production-graph.schema.json +0 -276
  19. package/auto-create-templates/runbook.md +0 -140
  20. package/auto-create-templates/template-plan.schema.json +0 -301
  21. package/auto-create-templates/template-planner-prompt.md +0 -137
  22. package/dist/src/account-pages-legacy.js +0 -9338
  23. package/dist/src/account-pages-legacy.js.map +0 -1
  24. package/dist/src/account-pages.js +0 -52
  25. package/dist/src/account-pages.js.map +0 -1
  26. package/dist/src/app.js +0 -13711
  27. package/dist/src/app.js.map +0 -1
  28. package/dist/src/cli.js.map +0 -1
  29. package/dist/src/composition-runtime.js +0 -581
  30. package/dist/src/composition-runtime.js.map +0 -1
  31. package/dist/src/config.js +0 -140
  32. package/dist/src/config.js.map +0 -1
  33. package/dist/src/context.js +0 -492
  34. package/dist/src/context.js.map +0 -1
  35. package/dist/src/dev-app-legacy.js +0 -694
  36. package/dist/src/dev-app-legacy.js.map +0 -1
  37. package/dist/src/dev-app.js +0 -6
  38. package/dist/src/dev-app.js.map +0 -1
  39. package/dist/src/dev-serve.js.map +0 -1
  40. package/dist/src/domain.js +0 -2
  41. package/dist/src/domain.js.map +0 -1
  42. package/dist/src/editor-chat-history.js +0 -82
  43. package/dist/src/editor-chat-history.js.map +0 -1
  44. package/dist/src/editor-chat.js +0 -312
  45. package/dist/src/editor-chat.js.map +0 -1
  46. package/dist/src/editor-dark-theme.js +0 -1128
  47. package/dist/src/editor-dark-theme.js.map +0 -1
  48. package/dist/src/frontend/flockposter-cache-store.js +0 -124
  49. package/dist/src/frontend/flockposter-cache-store.js.map +0 -1
  50. package/dist/src/frontend/homepage-client.js +0 -117
  51. package/dist/src/frontend/homepage-client.js.map +0 -1
  52. package/dist/src/frontend/homepage-shared.js +0 -4
  53. package/dist/src/frontend/homepage-shared.js.map +0 -1
  54. package/dist/src/frontend/homepage-store.js +0 -28
  55. package/dist/src/frontend/homepage-store.js.map +0 -1
  56. package/dist/src/frontend/homepage-view.js +0 -260
  57. package/dist/src/frontend/homepage-view.js.map +0 -1
  58. package/dist/src/frontend/page-runtime-client.js +0 -124
  59. package/dist/src/frontend/page-runtime-client.js.map +0 -1
  60. package/dist/src/frontend/page-runtime-store.js +0 -9
  61. package/dist/src/frontend/page-runtime-store.js.map +0 -1
  62. package/dist/src/frontend/sentry.js +0 -42
  63. package/dist/src/frontend/sentry.js.map +0 -1
  64. package/dist/src/frontend/template-editor-chat.js +0 -3760
  65. package/dist/src/frontend/template-editor-chat.js.map +0 -1
  66. package/dist/src/help-page.js +0 -333
  67. package/dist/src/help-page.js.map +0 -1
  68. package/dist/src/homepage.js +0 -919
  69. package/dist/src/homepage.js.map +0 -1
  70. package/dist/src/hyperframes/composition.js +0 -180
  71. package/dist/src/hyperframes/composition.js.map +0 -1
  72. package/dist/src/index.js +0 -16
  73. package/dist/src/index.js.map +0 -1
  74. package/dist/src/instrument.js +0 -30
  75. package/dist/src/instrument.js.map +0 -1
  76. package/dist/src/lib/crypto.js +0 -45
  77. package/dist/src/lib/crypto.js.map +0 -1
  78. package/dist/src/lib/dev-log.js +0 -54
  79. package/dist/src/lib/dev-log.js.map +0 -1
  80. package/dist/src/lib/display-name.js +0 -11
  81. package/dist/src/lib/display-name.js.map +0 -1
  82. package/dist/src/lib/ids.js +0 -24
  83. package/dist/src/lib/ids.js.map +0 -1
  84. package/dist/src/lib/images.js +0 -19
  85. package/dist/src/lib/images.js.map +0 -1
  86. package/dist/src/lib/json.js +0 -15
  87. package/dist/src/lib/json.js.map +0 -1
  88. package/dist/src/lib/template-dna.js +0 -543
  89. package/dist/src/lib/template-dna.js.map +0 -1
  90. package/dist/src/lib/template-paths.js +0 -28
  91. package/dist/src/lib/template-paths.js.map +0 -1
  92. package/dist/src/lib/template-style-options.js +0 -203
  93. package/dist/src/lib/template-style-options.js.map +0 -1
  94. package/dist/src/lib/time.js +0 -7
  95. package/dist/src/lib/time.js.map +0 -1
  96. package/dist/src/lib/video-quality-harness.js +0 -60
  97. package/dist/src/lib/video-quality-harness.js.map +0 -1
  98. package/dist/src/page-runtime.js +0 -2
  99. package/dist/src/page-runtime.js.map +0 -1
  100. package/dist/src/page-shell.js +0 -1315
  101. package/dist/src/page-shell.js.map +0 -1
  102. package/dist/src/primitive-context.js +0 -299
  103. package/dist/src/primitive-context.js.map +0 -1
  104. package/dist/src/primitive-registry.js +0 -2181
  105. package/dist/src/primitive-registry.js.map +0 -1
  106. package/dist/src/primitive-sdk.js +0 -4
  107. package/dist/src/primitive-sdk.js.map +0 -1
  108. package/dist/src/primitives/remotion/html-image.js +0 -30
  109. package/dist/src/primitives/remotion/html-image.js.map +0 -1
  110. package/dist/src/primitives/remotion/media-slideshow.js +0 -60
  111. package/dist/src/primitives/remotion/media-slideshow.js.map +0 -1
  112. package/dist/src/react-page-shell.js +0 -35
  113. package/dist/src/react-page-shell.js.map +0 -1
  114. package/dist/src/ready-post-schedule-component.js +0 -1515
  115. package/dist/src/ready-post-schedule-component.js.map +0 -1
  116. package/dist/src/registry.js +0 -296
  117. package/dist/src/registry.js.map +0 -1
  118. package/dist/src/runtime.js +0 -31
  119. package/dist/src/runtime.js.map +0 -1
  120. package/dist/src/services/api-call-history.js +0 -249
  121. package/dist/src/services/api-call-history.js.map +0 -1
  122. package/dist/src/services/auth.js +0 -152
  123. package/dist/src/services/auth.js.map +0 -1
  124. package/dist/src/services/billing.js +0 -231
  125. package/dist/src/services/billing.js.map +0 -1
  126. package/dist/src/services/chat-threads.js +0 -92
  127. package/dist/src/services/chat-threads.js.map +0 -1
  128. package/dist/src/services/fork-access.js +0 -93
  129. package/dist/src/services/fork-access.js.map +0 -1
  130. package/dist/src/services/fork-manifest.js +0 -43
  131. package/dist/src/services/fork-manifest.js.map +0 -1
  132. package/dist/src/services/ghostcut.js +0 -132
  133. package/dist/src/services/ghostcut.js.map +0 -1
  134. package/dist/src/services/hyperframes.js +0 -1014
  135. package/dist/src/services/hyperframes.js.map +0 -1
  136. package/dist/src/services/job-capacity.js +0 -14
  137. package/dist/src/services/job-capacity.js.map +0 -1
  138. package/dist/src/services/job-logs.js +0 -197
  139. package/dist/src/services/job-logs.js.map +0 -1
  140. package/dist/src/services/jobs.js +0 -136
  141. package/dist/src/services/jobs.js.map +0 -1
  142. package/dist/src/services/media-processing.js +0 -743
  143. package/dist/src/services/media-processing.js.map +0 -1
  144. package/dist/src/services/primitive-media-lambda.js +0 -280
  145. package/dist/src/services/primitive-media-lambda.js.map +0 -1
  146. package/dist/src/services/providers.js +0 -2870
  147. package/dist/src/services/providers.js.map +0 -1
  148. package/dist/src/services/rate-limits.js +0 -237
  149. package/dist/src/services/rate-limits.js.map +0 -1
  150. package/dist/src/services/remotion.js +0 -688
  151. package/dist/src/services/remotion.js.map +0 -1
  152. package/dist/src/services/serverless-auth.js +0 -374
  153. package/dist/src/services/serverless-auth.js.map +0 -1
  154. package/dist/src/services/serverless-jobs.js +0 -1074
  155. package/dist/src/services/serverless-jobs.js.map +0 -1
  156. package/dist/src/services/serverless-provider-keys.js +0 -401
  157. package/dist/src/services/serverless-provider-keys.js.map +0 -1
  158. package/dist/src/services/serverless-records.js +0 -1088
  159. package/dist/src/services/serverless-records.js.map +0 -1
  160. package/dist/src/services/serverless-template-configs.js +0 -67
  161. package/dist/src/services/serverless-template-configs.js.map +0 -1
  162. package/dist/src/services/storage.js +0 -383
  163. package/dist/src/services/storage.js.map +0 -1
  164. package/dist/src/services/template-certification.js +0 -475
  165. package/dist/src/services/template-certification.js.map +0 -1
  166. package/dist/src/services/template-loader.js +0 -99
  167. package/dist/src/services/template-loader.js.map +0 -1
  168. package/dist/src/services/template-runtime-bundles.js +0 -217
  169. package/dist/src/services/template-runtime-bundles.js.map +0 -1
  170. package/dist/src/services/template-sources.js +0 -1017
  171. package/dist/src/services/template-sources.js.map +0 -1
  172. package/dist/src/services/video-normalization.js +0 -2
  173. package/dist/src/services/video-normalization.js.map +0 -1
  174. package/dist/src/services/webhooks.js +0 -62
  175. package/dist/src/services/webhooks.js.map +0 -1
  176. package/dist/src/template-editor-pages.js +0 -2491
  177. package/dist/src/template-editor-pages.js.map +0 -1
  178. package/dist/src/template-editor-shell.js +0 -2702
  179. package/dist/src/template-editor-shell.js.map +0 -1
  180. package/dist/src/template-sdk.js +0 -4
  181. package/dist/src/template-sdk.js.map +0 -1
  182. package/dist/src/worker.js +0 -17
  183. package/dist/src/worker.js.map +0 -1
  184. package/public/assets/homepage-app.js +0 -54
  185. package/public/assets/homepage-client-app.js +0 -80
  186. package/public/assets/page-runtime-client-app.js +0 -94
  187. package/readme.secret.md +0 -89
  188. package/templates/vidfarm_template_0000/README.md +0 -106
  189. package/templates/vidfarm_template_0000/SKILL.md +0 -266
  190. package/templates/vidfarm_template_0000/assets/Abel-Regular.ttf +0 -0
  191. package/templates/vidfarm_template_0000/assets/DMSerifDisplay-Regular.ttf +0 -0
  192. package/templates/vidfarm_template_0000/assets/Montserrat[wght].ttf +0 -0
  193. package/templates/vidfarm_template_0000/assets/SourceCodePro[wght].ttf +0 -0
  194. package/templates/vidfarm_template_0000/assets/TikTokSans-SemiBold.ttf +0 -0
  195. package/templates/vidfarm_template_0000/assets/Yesteryear-Regular.ttf +0 -0
  196. package/templates/vidfarm_template_0000/composition.json +0 -11
  197. package/templates/vidfarm_template_0000/src/lib/images.js +0 -221
  198. package/templates/vidfarm_template_0000/src/remotion/Root.js +0 -33
  199. package/templates/vidfarm_template_0000/src/remotion/index.js +0 -3
  200. package/templates/vidfarm_template_0000/src/sdk.js +0 -3
  201. package/templates/vidfarm_template_0000/src/style-options.js +0 -200
  202. package/templates/vidfarm_template_0000/src/template-dna.js +0 -9
  203. package/templates/vidfarm_template_0000/src/template.js +0 -1566
  204. package/templates/vidfarm_template_0000/template.config.json +0 -21
@@ -1,919 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { renderToString } from "react-dom/server";
3
- import { HomepageShell } from "./frontend/homepage-view.js";
4
- import { escapeJsonForHtml, renderPageShell, resolveAccountDisplayName } from "./page-shell.js";
5
- import { TEMPLATE_EDITOR_SHELL_STYLES } from "./template-editor-shell.js";
6
- const HOMEPAGE_CLIENT_ASSET = "/assets/homepage-client-app.js";
7
- export function renderHomepage(input) {
8
- const boot = {
9
- templates: input.templates,
10
- account: input.account,
11
- loadEndpoint: input.loadEndpoint,
12
- skillEndpointPrefix: "/discover/skills/"
13
- };
14
- return renderPageShell({
15
- title: input.account.isLoggedIn
16
- ? resolveAccountDisplayName({ displayName: input.account.displayName, email: input.account.email }) || "VidFarm AI"
17
- : "Studio",
18
- mainClass: "is-wide",
19
- runtimeBoot: input.editorChat
20
- ? {
21
- pageKind: "legacy",
22
- title: "Discover",
23
- userId: input.account.userId ?? null,
24
- editorChat: input.editorChat
25
- }
26
- : undefined,
27
- body: `
28
- <div id="homepage-root">${renderToString(_jsx(HomepageShell, { account: input.account, templates: input.templates, visibleTemplates: input.templates, searchQuery: "", bookmarksOnly: false, bookmarks: new Set(), loading: input.templates.length === 0, error: null, onSearchQueryChange: undefined, onBookmarksOnlyChange: undefined, onToggleBookmark: undefined, skillEndpointPrefix: boot.skillEndpointPrefix }))}</div>
29
- <script type="application/json" id="homepage-boot">${escapeJsonForHtml(boot)}</script>
30
- <script type="module" src="${HOMEPAGE_CLIENT_ASSET}"></script>
31
- `,
32
- style: `
33
- ${TEMPLATE_EDITOR_SHELL_STYLES}
34
-
35
- #homepage-root {
36
- display: grid;
37
- height: 100%;
38
- min-height: 0;
39
- }
40
-
41
- .discover-frame {
42
- height: 100%;
43
- min-height: 0;
44
- }
45
-
46
- .discover-frame.has-chat-rail { padding-left: 432px; }
47
-
48
- .discover-frame .frame-body {
49
- grid-template-rows: minmax(0, 1fr);
50
- height: 100%;
51
- min-height: 0;
52
- overflow: hidden;
53
- }
54
-
55
- .discover-shell {
56
- display: grid;
57
- min-height: 0;
58
- height: 100%;
59
- gap: 0;
60
- overflow: hidden;
61
- border: 1px solid rgba(255, 255, 255, 0.82);
62
- border-radius: 32px;
63
- background: rgba(255, 251, 245, 0.84);
64
- box-shadow: var(--shadow);
65
- grid-template-columns: minmax(0, 1fr);
66
- grid-template-rows: auto minmax(0, 1fr);
67
- }
68
-
69
- .discover-filter-bar {
70
- position: sticky;
71
- top: 0;
72
- z-index: 5;
73
- display: grid;
74
- grid-template-columns: minmax(220px, 1fr) auto auto auto;
75
- align-items: center;
76
- gap: 12px;
77
- padding: 14px 22px;
78
- border-bottom: 1px solid rgba(209, 219, 233, 0.7);
79
- background: rgba(255, 251, 245, 0.96);
80
- backdrop-filter: blur(8px);
81
- }
82
-
83
- .discover-filter-search input {
84
- min-height: 44px;
85
- padding-left: 46px;
86
- border-radius: 999px;
87
- }
88
-
89
- .discover-filter-search .search-icon { left: 14px; }
90
-
91
- .discover-filter-toggle {
92
- display: inline-flex;
93
- align-items: center;
94
- gap: 10px;
95
- min-height: 44px;
96
- padding: 0 16px;
97
- border: 1px solid rgba(209, 219, 233, 0.96);
98
- border-radius: 999px;
99
- background: rgba(255, 255, 255, 0.9);
100
- color: #55637b;
101
- cursor: pointer;
102
- font-size: 0.86rem;
103
- font-weight: 700;
104
- white-space: nowrap;
105
- }
106
-
107
- .discover-filter-toggle[data-active="true"] {
108
- border-color: rgba(219, 193, 122, 0.9);
109
- background: rgba(219, 193, 122, 0.16);
110
- color: #8a6b1b;
111
- }
112
-
113
- .discover-filter-more {
114
- position: relative;
115
- }
116
-
117
- .discover-filter-more-button {
118
- display: inline-flex;
119
- align-items: center;
120
- min-height: 44px;
121
- padding: 0 18px;
122
- border: 1px solid rgba(209, 219, 233, 0.96);
123
- border-radius: 999px;
124
- background: rgba(255, 255, 255, 0.9);
125
- color: #55637b;
126
- cursor: pointer;
127
- font-size: 0.86rem;
128
- font-weight: 700;
129
- }
130
-
131
- .discover-filter-more-button[aria-expanded="true"] {
132
- border-color: rgba(219, 193, 122, 0.9);
133
- color: #8a6b1b;
134
- }
135
-
136
- .discover-filter-more-popover {
137
- position: absolute;
138
- right: 0;
139
- top: calc(100% + 10px);
140
- z-index: 10;
141
- display: grid;
142
- gap: 12px;
143
- width: min(320px, calc(100vw - 40px));
144
- padding: 16px;
145
- border: 1px solid rgba(209, 219, 233, 0.96);
146
- border-radius: 18px;
147
- background: rgba(255, 252, 247, 0.98);
148
- box-shadow: 0 18px 42px rgba(37, 45, 61, 0.16);
149
- }
150
-
151
- .discover-filter-more-hint {
152
- margin: 0;
153
- color: #8d99ae;
154
- font-size: 0.8rem;
155
- }
156
-
157
- .discover-filter-count {
158
- justify-self: end;
159
- color: #8d99ae;
160
- font-size: 0.86rem;
161
- white-space: nowrap;
162
- }
163
-
164
- .discover-filter-group {
165
- display: grid;
166
- gap: 8px;
167
- }
168
-
169
- .discover-filter-block,
170
- .discover-filter-group,
171
- .discover-filter-panel-body {
172
- display: grid;
173
- gap: 10px;
174
- }
175
-
176
- .discover-filter-panel {
177
- display: contents;
178
- }
179
-
180
- .discover-filter-panel > summary {
181
- display: none;
182
- }
183
-
184
- .discover-filter-panel:not([open]) > .discover-filter-panel-body {
185
- display: grid;
186
- }
187
-
188
- .discover-filter-block p {
189
- max-width: 30ch;
190
- }
191
-
192
- .search-field {
193
- position: relative;
194
- }
195
-
196
- .search-icon {
197
- position: absolute;
198
- left: 16px;
199
- top: 50%;
200
- width: 20px;
201
- height: 20px;
202
- color: #9aa6ba;
203
- transform: translateY(-50%);
204
- }
205
-
206
- .search-icon svg {
207
- width: 20px;
208
- height: 20px;
209
- }
210
-
211
- .search-field input {
212
- padding-left: 54px;
213
- }
214
-
215
- .bookmarks-row {
216
- display: flex;
217
- align-items: center;
218
- justify-content: space-between;
219
- min-height: 60px;
220
- padding: 0 18px;
221
- border: 1px solid var(--line);
222
- border-radius: 999px;
223
- background: rgba(255, 255, 255, 0.9);
224
- color: #58667e;
225
- }
226
-
227
- .switch-label {
228
- cursor: pointer;
229
- }
230
-
231
- .switch-shell {
232
- display: inline-flex;
233
- align-items: center;
234
- width: 44px;
235
- height: 24px;
236
- padding: 3px;
237
- border-radius: 999px;
238
- background: rgba(47, 55, 72, 0.08);
239
- cursor: pointer;
240
- transition: background 140ms ease;
241
- }
242
-
243
- .switch-input {
244
- position: absolute;
245
- opacity: 0;
246
- pointer-events: none;
247
- }
248
-
249
- .switch-knob {
250
- display: block;
251
- width: 18px;
252
- height: 18px;
253
- border-radius: 999px;
254
- background: rgba(255, 255, 255, 0.98);
255
- box-shadow: 0 2px 8px rgba(15, 23, 42, 0.16);
256
- transition: transform 140ms ease;
257
- }
258
-
259
- .switch-input:checked + .switch-knob {
260
- transform: translateX(20px);
261
- }
262
-
263
- .switch-shell[data-active="true"] {
264
- background: #dbc17a;
265
- }
266
-
267
- .discover-results {
268
- display: grid;
269
- min-width: 0;
270
- min-height: 0;
271
- height: 100%;
272
- overflow: hidden;
273
- padding: 18px 22px 22px;
274
- }
275
-
276
- .discover-count { display: none; }
277
-
278
- .discover-results-scroll {
279
- display: grid;
280
- gap: 20px;
281
- align-content: stretch;
282
- height: 100%;
283
- min-height: 0;
284
- overflow-y: auto;
285
- padding-right: 6px;
286
- }
287
-
288
- .discover-count {
289
- position: sticky;
290
- top: 0;
291
- z-index: 2;
292
- padding-bottom: 2px;
293
- background: linear-gradient(180deg, rgba(255, 251, 245, 0.98), rgba(255, 251, 245, 0.86) 72%, rgba(255, 251, 245, 0));
294
- }
295
-
296
- .discover-count {
297
- justify-self: end;
298
- color: #8d99ae;
299
- font-size: 0.9rem;
300
- }
301
-
302
- .discover-list {
303
- list-style: none;
304
- margin: 0;
305
- padding: 0;
306
- display: grid;
307
- gap: 22px;
308
- }
309
-
310
- .discover-card {
311
- display: grid;
312
- grid-template-columns: minmax(220px, 340px) minmax(0, 1fr);
313
- gap: 24px;
314
- padding: 28px;
315
- border: 1px solid rgba(255, 255, 255, 0.82);
316
- border-radius: 30px;
317
- background: rgba(255, 255, 255, 0.76);
318
- box-shadow: 0 18px 44px rgba(15, 23, 42, 0.06);
319
- }
320
-
321
- .discover-card-media {
322
- position: relative;
323
- display: flex;
324
- align-items: center;
325
- justify-content: center;
326
- min-height: 280px;
327
- max-height: 540px;
328
- overflow: hidden;
329
- border: 1px solid rgba(209, 219, 233, 0.96);
330
- border-radius: 30px;
331
- background: rgba(255, 255, 255, 0.84);
332
- }
333
-
334
- .discover-card-media-button {
335
- width: 100%;
336
- padding: 0;
337
- color: inherit;
338
- cursor: zoom-in;
339
- transition:
340
- border-color 140ms ease,
341
- box-shadow 140ms ease,
342
- transform 140ms ease;
343
- }
344
-
345
- .discover-card-media-button:hover,
346
- .discover-card-media-button:focus-visible {
347
- border-color: rgba(219, 193, 122, 0.96);
348
- box-shadow: 0 18px 38px rgba(138, 107, 27, 0.16);
349
- transform: translateY(-1px);
350
- }
351
-
352
- .discover-card-media-affordance {
353
- position: absolute;
354
- right: 14px;
355
- bottom: 14px;
356
- display: inline-flex;
357
- align-items: center;
358
- justify-content: center;
359
- min-height: 34px;
360
- padding: 0 14px;
361
- border: 1px solid rgba(255, 255, 255, 0.72);
362
- border-radius: 999px;
363
- background: rgba(33, 41, 56, 0.72);
364
- color: #fffaf3;
365
- font-size: 0.78rem;
366
- font-weight: 800;
367
- letter-spacing: 0.08em;
368
- line-height: 1;
369
- opacity: 0;
370
- text-transform: uppercase;
371
- transform: translateY(4px);
372
- transition: opacity 140ms ease, transform 140ms ease;
373
- }
374
-
375
- .discover-card-media-button:hover .discover-card-media-affordance,
376
- .discover-card-media-button:focus-visible .discover-card-media-affordance {
377
- opacity: 1;
378
- transform: translateY(0);
379
- }
380
-
381
- .discover-card-copy {
382
- display: grid;
383
- align-content: start;
384
- gap: 24px;
385
- min-width: 0;
386
- }
387
-
388
- .discover-card-head {
389
- display: flex;
390
- align-items: start;
391
- justify-content: space-between;
392
- gap: 18px;
393
- }
394
-
395
- .discover-card-title-wrap {
396
- min-width: 0;
397
- }
398
-
399
- .discover-card-title-wrap h2 {
400
- font-size: 1.85rem;
401
- }
402
-
403
- .discover-card-meta {
404
- margin-top: 14px;
405
- color: #b0b9c8;
406
- font-size: 0.95rem;
407
- }
408
-
409
- .discover-card-actions {
410
- display: flex;
411
- align-items: center;
412
- gap: 12px;
413
- }
414
-
415
- .bookmark-button {
416
- width: 58px;
417
- min-width: 58px;
418
- height: 58px;
419
- min-height: 58px;
420
- padding: 0;
421
- border-color: rgba(209, 219, 233, 0.96);
422
- background: rgba(255, 255, 255, 0.9);
423
- color: #55637b;
424
- transition:
425
- background 140ms ease,
426
- border-color 140ms ease,
427
- color 140ms ease,
428
- box-shadow 140ms ease;
429
- }
430
-
431
- .bookmark-button svg {
432
- width: 22px;
433
- height: 22px;
434
- }
435
-
436
- .bookmark-button[data-active="true"] {
437
- border-color: rgba(219, 193, 122, 0.9);
438
- background: rgba(219, 193, 122, 0.2);
439
- color: #8a6b1b;
440
- box-shadow: 0 10px 24px rgba(138, 107, 27, 0.14);
441
- }
442
-
443
- .cta-button {
444
- min-width: 132px;
445
- height: 58px;
446
- padding: 0 28px;
447
- }
448
-
449
- .discover-card-body p {
450
- color: #5f6e86;
451
- font-size: 1.02rem;
452
- line-height: 1.65;
453
- }
454
-
455
- .discover-card-tags {
456
- display: flex;
457
- flex-wrap: wrap;
458
- gap: 10px;
459
- padding-top: 18px;
460
- border-top: 1px solid rgba(209, 219, 233, 0.8);
461
- }
462
-
463
- .pill-tag {
464
- display: inline-flex;
465
- align-items: center;
466
- min-height: 34px;
467
- padding: 0 14px;
468
- border: 1px solid rgba(209, 219, 233, 0.96);
469
- border-radius: 999px;
470
- background: rgba(255, 255, 255, 0.92);
471
- color: #687791;
472
- font-size: 0.86rem;
473
- text-decoration: none;
474
- }
475
-
476
- .difficulty-pill {
477
- border-color: rgba(219, 193, 122, 0.42);
478
- background: rgba(219, 193, 122, 0.16);
479
- color: #6f5514;
480
- font-weight: 800;
481
- }
482
-
483
- .difficulty-pill[data-difficulty="hard"],
484
- .difficulty-pill[data-difficulty="expert"] {
485
- border-color: rgba(134, 92, 255, 0.3);
486
- background: rgba(134, 92, 255, 0.1);
487
- color: #5942a8;
488
- }
489
-
490
- .copy-inline {
491
- position: relative;
492
- gap: 8px;
493
- cursor: pointer;
494
- transition:
495
- border-color 140ms ease,
496
- background 140ms ease,
497
- color 140ms ease,
498
- box-shadow 140ms ease;
499
- }
500
-
501
- .copy-inline-label {
502
- transition: opacity 140ms ease, transform 140ms ease;
503
- }
504
-
505
- .copy-inline-feedback {
506
- color: #8a6b1b;
507
- font-size: 0.79rem;
508
- font-weight: 700;
509
- letter-spacing: 0.02em;
510
- opacity: 0;
511
- transform: translateY(1px);
512
- transition: opacity 140ms ease, transform 140ms ease;
513
- pointer-events: none;
514
- }
515
-
516
- .copy-inline[data-state="done"] {
517
- border-color: rgba(219, 193, 122, 0.96);
518
- background: rgba(219, 193, 122, 0.18);
519
- color: #5f6e86;
520
- box-shadow: 0 8px 18px rgba(138, 107, 27, 0.08);
521
- }
522
-
523
- .copy-inline[data-state="done"] .copy-inline-feedback {
524
- opacity: 1;
525
- transform: translateY(0);
526
- }
527
-
528
- .copy-inline[data-state="done"] .copy-inline-label {
529
- opacity: 0.82;
530
- }
531
-
532
- .copy-inline[data-state="error"] {
533
- border-color: rgba(214, 107, 107, 0.35);
534
- background: rgba(191, 38, 38, 0.08);
535
- }
536
-
537
- .copy-inline[data-state="error"] .copy-inline-feedback {
538
- opacity: 1;
539
- transform: translateY(0);
540
- color: #a14444;
541
- }
542
-
543
- .preview {
544
- width: 100%;
545
- height: 100%;
546
- object-fit: cover;
547
- object-position: top center;
548
- }
549
-
550
- .preview-empty {
551
- display: flex;
552
- align-items: center;
553
- justify-content: center;
554
- color: #8d99ae;
555
- }
556
-
557
- .discover-media-modal-backdrop {
558
- position: fixed;
559
- inset: 0;
560
- z-index: 60;
561
- display: flex;
562
- align-items: center;
563
- justify-content: center;
564
- padding: 24px;
565
- background: rgba(28, 34, 45, 0.76);
566
- backdrop-filter: blur(18px);
567
- }
568
-
569
- .discover-media-modal {
570
- display: grid;
571
- grid-template-rows: auto minmax(0, 1fr);
572
- gap: 14px;
573
- width: min(1180px, 100%);
574
- max-height: calc(100dvh - 48px);
575
- padding: 16px;
576
- border: 1px solid rgba(255, 255, 255, 0.28);
577
- border-radius: 24px;
578
- background: rgba(255, 251, 245, 0.96);
579
- box-shadow: 0 28px 80px rgba(5, 10, 20, 0.34);
580
- }
581
-
582
- .discover-media-modal-head {
583
- display: grid;
584
- grid-template-columns: minmax(0, 1fr) auto;
585
- align-items: center;
586
- gap: 12px;
587
- }
588
-
589
- .discover-media-modal-head h2 {
590
- min-width: 0;
591
- overflow: hidden;
592
- color: #283244;
593
- font-size: 1.05rem;
594
- line-height: 1.15;
595
- text-overflow: ellipsis;
596
- white-space: nowrap;
597
- }
598
-
599
- .discover-media-modal-actions {
600
- display: inline-flex;
601
- align-items: center;
602
- gap: 8px;
603
- }
604
-
605
- .discover-media-modal-action {
606
- display: inline-flex;
607
- align-items: center;
608
- justify-content: center;
609
- width: 44px;
610
- min-width: 44px;
611
- height: 44px;
612
- min-height: 44px;
613
- padding: 0;
614
- border-color: rgba(209, 219, 233, 0.96);
615
- border-style: solid;
616
- border-width: 1px;
617
- border-radius: 999px;
618
- background: rgba(255, 255, 255, 0.9);
619
- color: #53627c;
620
- cursor: pointer;
621
- text-decoration: none;
622
- }
623
-
624
- .discover-media-modal-action:hover,
625
- .discover-media-modal-action:focus-visible {
626
- border-color: rgba(173, 135, 46, 0.5);
627
- color: #8a6b1b;
628
- }
629
-
630
- .discover-media-modal-action[data-state="done"] {
631
- border-color: rgba(56, 142, 91, 0.42);
632
- background: rgba(56, 142, 91, 0.12);
633
- color: #2f7d4f;
634
- }
635
-
636
- .discover-media-modal-action[data-state="error"] {
637
- border-color: rgba(161, 68, 68, 0.42);
638
- background: rgba(161, 68, 68, 0.1);
639
- color: #a14444;
640
- }
641
-
642
- .discover-media-modal-action svg {
643
- width: 20px;
644
- height: 20px;
645
- }
646
-
647
- .discover-media-modal-stage {
648
- display: flex;
649
- align-items: center;
650
- justify-content: center;
651
- min-height: 0;
652
- overflow: hidden;
653
- border-radius: 18px;
654
- background: #111827;
655
- }
656
-
657
- .discover-media-modal-stage img,
658
- .discover-media-modal-stage video {
659
- display: block;
660
- width: auto;
661
- height: auto;
662
- max-width: 100%;
663
- max-height: calc(100dvh - 154px);
664
- object-fit: contain;
665
- }
666
-
667
- .empty {
668
- display: none;
669
- }
670
-
671
- .empty[data-visible="true"] {
672
- display: block;
673
- }
674
-
675
- @media (max-width: 1180px) {
676
- .discover-frame.has-chat-rail { padding-left: 0; }
677
-
678
- .discover-card {
679
- grid-template-columns: minmax(200px, 300px) minmax(0, 1fr);
680
- gap: 20px;
681
- padding: 24px;
682
- }
683
-
684
- .discover-card-media {
685
- min-height: 240px;
686
- }
687
-
688
- .discover-results-scroll {
689
- max-height: none;
690
- }
691
- }
692
-
693
- @media (max-width: 1024px) {
694
- .discover-frame,
695
- .discover-frame .frame-body,
696
- .discover-shell,
697
- .discover-results,
698
- .discover-results-scroll {
699
- min-height: auto;
700
- height: auto;
701
- overflow: visible;
702
- }
703
-
704
- .discover-frame .frame-body {
705
- overflow: visible;
706
- padding-top: 10px;
707
- padding-bottom: 4px;
708
- }
709
-
710
- .discover-shell {
711
- display: grid;
712
- min-width: 0;
713
- grid-template-columns: 1fr;
714
- border-radius: 24px;
715
- overflow: visible;
716
- }
717
-
718
- .discover-sidebar,
719
- .discover-results {
720
- padding: 14px;
721
- }
722
-
723
- .discover-sidebar {
724
- gap: 14px;
725
- border-right: 0;
726
- border-bottom: 1px solid rgba(209, 219, 233, 0.8);
727
- border-radius: 24px 24px 0 0;
728
- }
729
-
730
- .discover-filter-panel {
731
- display: grid;
732
- gap: 14px;
733
- }
734
-
735
- .discover-filter-panel > summary {
736
- display: flex;
737
- align-items: center;
738
- justify-content: space-between;
739
- gap: 12px;
740
- min-height: 54px;
741
- padding: 0 16px;
742
- border: 1px solid rgba(209, 219, 233, 0.96);
743
- border-radius: 18px;
744
- background: rgba(255, 255, 255, 0.9);
745
- color: #53627c;
746
- cursor: pointer;
747
- list-style: none;
748
- font-size: 0.88rem;
749
- font-weight: 800;
750
- letter-spacing: 0.16em;
751
- text-transform: uppercase;
752
- }
753
-
754
- .discover-filter-panel > summary::-webkit-details-marker {
755
- display: none;
756
- }
757
-
758
- .discover-filter-panel > summary::after {
759
- content: "";
760
- width: 10px;
761
- height: 10px;
762
- border-right: 2px solid currentColor;
763
- border-bottom: 2px solid currentColor;
764
- transform: rotate(45deg) translateY(-2px);
765
- transition: transform 140ms ease;
766
- }
767
-
768
- .discover-filter-panel[open] > summary::after {
769
- transform: rotate(225deg) translateY(-1px);
770
- }
771
-
772
- .discover-filter-panel:not([open]) > .discover-filter-panel-body {
773
- display: none;
774
- }
775
-
776
- .discover-filter-panel-body {
777
- gap: 14px;
778
- }
779
-
780
- .discover-filter-block {
781
- display: none;
782
- }
783
-
784
- .discover-filter-group {
785
- gap: 8px;
786
- }
787
-
788
- .bookmarks-row {
789
- min-height: 52px;
790
- padding: 0 14px;
791
- }
792
-
793
- .discover-results-scroll {
794
- gap: 14px;
795
- padding-right: 0;
796
- }
797
-
798
- .discover-card {
799
- grid-template-columns: 1fr;
800
- gap: 16px;
801
- padding: 14px;
802
- border-radius: 22px;
803
- }
804
-
805
- .discover-card-media {
806
- min-height: 0;
807
- max-height: none;
808
- aspect-ratio: 16 / 11;
809
- border-radius: 20px;
810
- }
811
-
812
- .discover-card-media-affordance {
813
- opacity: 1;
814
- transform: none;
815
- }
816
-
817
- .discover-card-copy {
818
- gap: 16px;
819
- }
820
-
821
- .discover-card-head {
822
- display: grid;
823
- grid-template-columns: minmax(0, 1fr);
824
- gap: 14px;
825
- }
826
-
827
- .discover-card-title-wrap h2 {
828
- font-size: 1.55rem;
829
- line-height: 0.96;
830
- }
831
-
832
- .discover-card-meta {
833
- margin-top: 8px;
834
- font-size: 0.86rem;
835
- }
836
-
837
- .discover-card-actions {
838
- display: grid;
839
- grid-template-columns: 52px minmax(0, 1fr);
840
- gap: 10px;
841
- width: 100%;
842
- }
843
-
844
- .bookmark-button {
845
- width: 52px;
846
- min-width: 52px;
847
- height: 52px;
848
- min-height: 52px;
849
- }
850
-
851
- .cta-button {
852
- width: 100%;
853
- min-width: 0;
854
- height: 52px;
855
- padding: 0 18px;
856
- }
857
-
858
- .discover-card-body p {
859
- font-size: 0.96rem;
860
- line-height: 1.58;
861
- }
862
-
863
- .discover-card-tags {
864
- gap: 8px;
865
- padding-top: 14px;
866
- }
867
-
868
- .pill-tag {
869
- max-width: 100%;
870
- }
871
-
872
- .copy-inline {
873
- min-width: 0;
874
- }
875
-
876
- .copy-inline-label {
877
- min-width: 0;
878
- overflow: hidden;
879
- text-overflow: ellipsis;
880
- white-space: nowrap;
881
- }
882
-
883
- .discover-count {
884
- position: static;
885
- justify-self: start;
886
- padding-bottom: 0;
887
- background: transparent;
888
- }
889
-
890
- .search-field input {
891
- min-height: 52px;
892
- font-size: 16px;
893
- }
894
-
895
- .discover-media-modal-backdrop {
896
- align-items: stretch;
897
- padding: 12px;
898
- }
899
-
900
- .discover-media-modal {
901
- width: 100%;
902
- max-height: calc(100dvh - 24px);
903
- padding: 12px;
904
- border-radius: 20px;
905
- }
906
-
907
- .discover-media-modal-stage {
908
- border-radius: 14px;
909
- }
910
-
911
- .discover-media-modal-stage img,
912
- .discover-media-modal-stage video {
913
- max-height: calc(100dvh - 126px);
914
- }
915
- }
916
- `
917
- });
918
- }
919
- //# sourceMappingURL=homepage.js.map