@jant/core 0.2.17 → 0.2.19

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 (99) hide show
  1. package/dist/app.d.ts +1 -0
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +307 -137
  4. package/dist/client.js +1 -0
  5. package/dist/i18n/context.d.ts +2 -2
  6. package/dist/i18n/context.js +1 -1
  7. package/dist/i18n/i18n.d.ts +1 -1
  8. package/dist/i18n/i18n.js +1 -1
  9. package/dist/i18n/index.d.ts +1 -1
  10. package/dist/i18n/index.js +1 -1
  11. package/dist/i18n/locales/en.d.ts.map +1 -1
  12. package/dist/i18n/locales/en.js +1 -1
  13. package/dist/i18n/locales/zh-Hans.d.ts.map +1 -1
  14. package/dist/i18n/locales/zh-Hans.js +1 -1
  15. package/dist/i18n/locales/zh-Hant.d.ts.map +1 -1
  16. package/dist/i18n/locales/zh-Hant.js +1 -1
  17. package/dist/lib/config.d.ts +44 -10
  18. package/dist/lib/config.d.ts.map +1 -1
  19. package/dist/lib/config.js +69 -44
  20. package/dist/lib/constants.d.ts +2 -1
  21. package/dist/lib/constants.d.ts.map +1 -1
  22. package/dist/lib/constants.js +5 -2
  23. package/dist/lib/image-processor.js +0 -4
  24. package/dist/lib/media-upload.js +104 -0
  25. package/dist/lib/sse.d.ts +82 -13
  26. package/dist/lib/sse.d.ts.map +1 -1
  27. package/dist/lib/sse.js +115 -17
  28. package/dist/lib/theme.d.ts +44 -0
  29. package/dist/lib/theme.d.ts.map +1 -0
  30. package/dist/lib/theme.js +65 -0
  31. package/dist/routes/api/upload.js +16 -18
  32. package/dist/routes/dash/appearance.d.ts +13 -0
  33. package/dist/routes/dash/appearance.d.ts.map +1 -0
  34. package/dist/routes/dash/appearance.js +160 -0
  35. package/dist/routes/dash/collections.js +5 -13
  36. package/dist/routes/dash/media.js +17 -167
  37. package/dist/routes/dash/pages.js +4 -10
  38. package/dist/routes/dash/posts.js +4 -10
  39. package/dist/routes/dash/redirects.js +3 -7
  40. package/dist/routes/dash/settings.d.ts.map +1 -1
  41. package/dist/routes/dash/settings.js +52 -42
  42. package/dist/services/settings.d.ts +1 -0
  43. package/dist/services/settings.d.ts.map +1 -1
  44. package/dist/services/settings.js +3 -0
  45. package/dist/theme/color-themes.d.ts +30 -0
  46. package/dist/theme/color-themes.d.ts.map +1 -0
  47. package/dist/theme/color-themes.js +268 -0
  48. package/dist/theme/layouts/BaseLayout.d.ts +5 -0
  49. package/dist/theme/layouts/BaseLayout.d.ts.map +1 -1
  50. package/dist/theme/layouts/BaseLayout.js +70 -3
  51. package/dist/theme/layouts/DashLayout.d.ts +2 -0
  52. package/dist/theme/layouts/DashLayout.d.ts.map +1 -1
  53. package/dist/theme/layouts/DashLayout.js +11 -1
  54. package/dist/theme/layouts/index.d.ts +1 -1
  55. package/dist/theme/layouts/index.d.ts.map +1 -1
  56. package/dist/types.d.ts +53 -1
  57. package/dist/types.d.ts.map +1 -1
  58. package/dist/types.js +52 -0
  59. package/package.json +1 -1
  60. package/src/app.tsx +260 -81
  61. package/src/client.ts +1 -0
  62. package/src/db/migrations/{0000_solid_moon_knight.sql → 0000_square_wallflower.sql} +3 -3
  63. package/src/db/migrations/meta/0000_snapshot.json +9 -9
  64. package/src/db/migrations/meta/_journal.json +2 -30
  65. package/src/i18n/context.tsx +2 -2
  66. package/src/i18n/i18n.ts +1 -1
  67. package/src/i18n/index.ts +1 -1
  68. package/src/i18n/locales/en.po +328 -252
  69. package/src/i18n/locales/en.ts +1 -1
  70. package/src/i18n/locales/zh-Hans.po +315 -278
  71. package/src/i18n/locales/zh-Hans.ts +1 -1
  72. package/src/i18n/locales/zh-Hant.po +315 -278
  73. package/src/i18n/locales/zh-Hant.ts +1 -1
  74. package/src/lib/config.ts +73 -47
  75. package/src/lib/constants.ts +3 -0
  76. package/src/lib/image-processor.ts +0 -7
  77. package/src/lib/media-upload.ts +148 -0
  78. package/src/lib/sse.ts +156 -16
  79. package/src/lib/theme.ts +86 -0
  80. package/src/preset.css +9 -0
  81. package/src/routes/api/upload.ts +12 -18
  82. package/src/routes/dash/appearance.tsx +176 -0
  83. package/src/routes/dash/collections.tsx +5 -13
  84. package/src/routes/dash/media.tsx +16 -165
  85. package/src/routes/dash/pages.tsx +4 -10
  86. package/src/routes/dash/posts.tsx +4 -10
  87. package/src/routes/dash/redirects.tsx +3 -7
  88. package/src/routes/dash/settings.tsx +71 -55
  89. package/src/services/settings.ts +5 -0
  90. package/src/styles/components.css +93 -0
  91. package/src/theme/color-themes.ts +321 -0
  92. package/src/theme/layouts/BaseLayout.tsx +61 -1
  93. package/src/theme/layouts/DashLayout.tsx +14 -3
  94. package/src/theme/layouts/index.ts +5 -1
  95. package/src/types.ts +62 -1
  96. package/src/db/migrations/0001_add_search_fts.sql +0 -40
  97. package/src/db/migrations/0002_collection_path.sql +0 -2
  98. package/src/db/migrations/0003_collection_path_nullable.sql +0 -21
  99. package/src/db/migrations/0004_media_uuid.sql +0 -35
@@ -14,74 +14,79 @@ msgstr ""
14
14
  "Plural-Forms: \n"
15
15
 
16
16
  #. @context: Archive post reply indicator - plural
17
- #: src/routes/pages/archive.tsx:135
17
+ #: src/routes/pages/archive.tsx:180
18
18
  msgid "{count} replies"
19
19
  msgstr "{count} replies"
20
20
 
21
21
  #. @context: Navigation link
22
- #: src/routes/dash/collections.tsx:196
22
+ #: src/routes/dash/collections.tsx:272
23
23
  msgid "← Back to Collections"
24
24
  msgstr "← Back to Collections"
25
25
 
26
26
  #. @context: Navigation link
27
27
  #. @context: Navigation link
28
- #: src/routes/pages/collection.tsx:67
29
- #: src/routes/pages/post.tsx:69
28
+ #: src/routes/pages/collection.tsx:76
29
+ #: src/routes/pages/post.tsx:51
30
30
  msgid "← Back to home"
31
31
  msgstr "← Back to home"
32
32
 
33
33
  #. @context: Archive post reply indicator - single
34
- #: src/routes/pages/archive.tsx:134
34
+ #: src/routes/pages/archive.tsx:175
35
35
  msgid "1 reply"
36
36
  msgstr "1 reply"
37
37
 
38
38
  #. @context: Redirect type option
39
- #: src/routes/dash/redirects.tsx:95
39
+ #: src/routes/dash/redirects.tsx:145
40
40
  msgid "301 (Permanent)"
41
41
  msgstr "301 (Permanent)"
42
42
 
43
43
  #. @context: Redirect type option
44
- #: src/routes/dash/redirects.tsx:96
44
+ #: src/routes/dash/redirects.tsx:151
45
45
  msgid "302 (Temporary)"
46
46
  msgstr "302 (Temporary)"
47
47
 
48
48
  #. @context: Archive filter - all types
49
- #: src/routes/pages/archive.tsx:85
49
+ #: src/routes/pages/archive.tsx:115
50
50
  msgid "All"
51
51
  msgstr "All"
52
52
 
53
+ #. @context: Dashboard navigation - appearance settings
54
+ #: src/theme/layouts/DashLayout.tsx:142
55
+ msgid "Appearance"
56
+ msgstr "Appearance"
57
+
53
58
  #. @context: Archive page title
54
59
  #. @context: Navigation link to archive page
55
- #: src/routes/pages/archive.tsx:71
56
- #: src/routes/pages/home.tsx:39
60
+ #: src/routes/pages/archive.tsx:102
61
+ #: src/routes/pages/home.tsx:30
57
62
  msgid "Archive"
58
63
  msgstr "Archive"
59
64
 
60
65
  #. @context: Post type badge - article
61
66
  #. @context: Post type label - article
62
67
  #. @context: Post type option
63
- #: src/routes/pages/archive.tsx:169
64
- #: src/theme/components/PostForm.tsx:32
65
- #: src/theme/components/PostList.tsx:41
68
+ #: src/routes/pages/archive.tsx:28
69
+ #: src/theme/components/PostForm.tsx:48
70
+ #: src/theme/components/TypeBadge.tsx:20
66
71
  msgid "Article"
67
72
  msgstr "Article"
68
73
 
69
74
  #. @context: Post type label plural - articles
70
- #: src/routes/pages/archive.tsx:181
75
+ #: src/routes/pages/archive.tsx:53
71
76
  msgid "Articles"
72
77
  msgstr "Articles"
73
78
 
74
79
  #. @context: Button to go back to media list
75
- #: src/routes/dash/media.tsx:140
80
+ #: src/routes/dash/media.tsx:392
76
81
  msgid "Back"
77
82
  msgstr "Back"
78
83
 
79
84
  #. @context: Navigation link back to home page
80
85
  #. @context: Navigation link back to home page
81
86
  #. @context: Navigation link back to home page
82
- #: src/routes/pages/archive.tsx:158
83
- #: src/routes/pages/page.tsx:52
84
- #: src/routes/pages/search.tsx:138
87
+ #: src/routes/pages/archive.tsx:209
88
+ #: src/routes/pages/page.tsx:37
89
+ #: src/routes/pages/search.tsx:144
85
90
  msgid "Back to home"
86
91
  msgstr "Back to home"
87
92
 
@@ -90,165 +95,201 @@ msgstr "Back to home"
90
95
  #. @context: Button to cancel form
91
96
  #. @context: Button to cancel form
92
97
  #. @context: Button to cancel form
93
- #: src/routes/dash/collections.tsx:103
94
- #: src/routes/dash/collections.tsx:249
95
- #: src/routes/dash/redirects.tsx:105
96
- #: src/theme/components/PageForm.tsx:113
97
- #: src/theme/components/PostForm.tsx:120
98
+ #: src/routes/dash/collections.tsx:176
99
+ #: src/routes/dash/collections.tsx:345
100
+ #: src/routes/dash/redirects.tsx:167
101
+ #: src/theme/components/PageForm.tsx:161
102
+ #: src/theme/components/PostForm.tsx:181
98
103
  msgid "Cancel"
99
104
  msgstr "Cancel"
100
105
 
106
+ #. @context: Button to change password
107
+ #. @context: Settings section heading
108
+ #: src/routes/dash/settings.tsx:128
109
+ #: src/routes/dash/settings.tsx:188
110
+ msgid "Change Password"
111
+ msgstr "Change Password"
112
+
113
+ #. @context: Hint to click image for lightbox
114
+ #: src/routes/dash/media.tsx:425
115
+ msgid "Click image to view full size"
116
+ msgstr "Click image to view full size"
117
+
101
118
  #. @context: Dashboard heading
102
119
  #. @context: Dashboard navigation - collections management
103
- #. @context: Dashboard page title
104
- #: src/routes/dash/collections.tsx:24
105
- #: src/routes/dash/collections.tsx:26
106
- #: src/theme/layouts/DashLayout.tsx:31
120
+ #: src/routes/dash/collections.tsx:35
121
+ #: src/theme/layouts/DashLayout.tsx:114
107
122
  msgid "Collections"
108
123
  msgstr "Collections"
109
124
 
125
+ #. @context: Appearance settings heading
126
+ #: src/routes/dash/appearance.tsx:108
127
+ msgid "Color theme"
128
+ msgstr "Color theme"
129
+
110
130
  #. @context: Setup form submit button
111
- #: src/app.tsx:151
131
+ #: src/app.tsx:242
112
132
  msgid "Complete Setup"
113
133
  msgstr "Complete Setup"
114
134
 
135
+ #. @context: Password form field
136
+ #: src/routes/dash/settings.tsx:170
137
+ msgid "Confirm New Password"
138
+ msgstr "Confirm New Password"
139
+
140
+ #. @context: Password reset form field
141
+ #: src/app.tsx:526
142
+ msgid "Confirm Password"
143
+ msgstr "Confirm Password"
144
+
115
145
  #. @context: Page form field label - content
116
146
  #. @context: Post form field
117
- #: src/theme/components/PageForm.tsx:75
118
- #: src/theme/components/PostForm.tsx:60
147
+ #: src/theme/components/PageForm.tsx:95
148
+ #: src/theme/components/PostForm.tsx:84
119
149
  msgid "Content"
120
150
  msgstr "Content"
121
151
 
122
152
  #. @context: Button to copy Markdown to clipboard
123
153
  #. @context: Button to copy URL to clipboard
124
- #: src/routes/dash/media.tsx:184
125
- #: src/routes/dash/media.tsx:210
154
+ #: src/routes/dash/media.tsx:463
155
+ #: src/routes/dash/media.tsx:500
126
156
  msgid "Copy"
127
157
  msgstr "Copy"
128
158
 
129
159
  #. @context: Button to save new collection
130
- #: src/routes/dash/collections.tsx:100
160
+ #: src/routes/dash/collections.tsx:170
131
161
  msgid "Create Collection"
132
162
  msgstr "Create Collection"
133
163
 
134
164
  #. @context: Button to create new page
135
- #: src/theme/components/PageForm.tsx:110
165
+ #: src/theme/components/PageForm.tsx:155
136
166
  msgid "Create Page"
137
167
  msgstr "Create Page"
138
168
 
139
169
  #. @context: Button to save new redirect
140
- #: src/routes/dash/redirects.tsx:102
170
+ #: src/routes/dash/redirects.tsx:161
141
171
  msgid "Create Redirect"
142
172
  msgstr "Create Redirect"
143
173
 
174
+ #. @context: Setup page description
175
+ #: src/app.tsx:184
176
+ msgid "Create your admin account."
177
+ msgstr "Create your admin account."
178
+
144
179
  #. @context: Button in empty state to create first page
145
- #: src/routes/dash/pages.tsx:46
180
+ #: src/routes/dash/pages.tsx:50
146
181
  msgid "Create your first page"
147
182
  msgstr "Create your first page"
148
183
 
149
184
  #. @context: Button in empty state to create first post
150
- #: src/theme/components/PostList.tsx:57
185
+ #: src/theme/components/PostList.tsx:29
151
186
  msgid "Create your first post"
152
187
  msgstr "Create your first post"
153
188
 
189
+ #. @context: Password form field
190
+ #: src/routes/dash/settings.tsx:137
191
+ msgid "Current Password"
192
+ msgstr "Current Password"
193
+
154
194
  #. @context: Post form field
155
- #: src/theme/components/PostForm.tsx:104
195
+ #: src/theme/components/PostForm.tsx:154
156
196
  msgid "Custom Path (optional)"
157
197
  msgstr "Custom Path (optional)"
158
198
 
159
- #. @context: Heading for destructive actions section
160
- #. @context: Section heading for dangerous/destructive actions
161
199
  #. @context: Section heading for dangerous/destructive actions
162
- #: src/routes/dash/collections.tsx:255
163
- #: src/routes/dash/media.tsx:220
164
- #: src/routes/dash/pages.tsx:176
200
+ #: src/theme/components/DangerZone.tsx:55
165
201
  msgid "Danger Zone"
166
202
  msgstr "Danger Zone"
167
203
 
168
204
  #. @context: Dashboard main heading
169
205
  #. @context: Dashboard navigation - main dashboard page
170
- #. @context: Dashboard page title
171
- #: src/routes/dash/index.tsx:26
172
- #: src/routes/dash/index.tsx:28
173
- #: src/theme/layouts/DashLayout.tsx:27
206
+ #: src/routes/dash/index.tsx:36
207
+ #: src/theme/layouts/DashLayout.tsx:78
174
208
  msgid "Dashboard"
175
209
  msgstr "Dashboard"
176
210
 
211
+ #. @context: Button to delete item
177
212
  #. @context: Button to delete redirect
178
- #: src/routes/dash/redirects.tsx:47
213
+ #: src/routes/dash/redirects.tsx:60
214
+ #: src/theme/components/ActionButtons.tsx:80
179
215
  msgid "Delete"
180
216
  msgstr "Delete"
181
217
 
182
218
  #. @context: Button to delete collection
183
- #: src/routes/dash/collections.tsx:258
219
+ #: src/routes/dash/collections.tsx:354
184
220
  msgid "Delete Collection"
185
221
  msgstr "Delete Collection"
186
222
 
187
223
  #. @context: Button to delete media
188
- #: src/routes/dash/media.tsx:233
224
+ #: src/routes/dash/media.tsx:511
189
225
  msgid "Delete Media"
190
226
  msgstr "Delete Media"
191
227
 
192
228
  #. @context: Button to delete page
193
- #: src/routes/dash/pages.tsx:184
229
+ #: src/routes/dash/pages.tsx:160
194
230
  msgid "Delete Page"
195
231
  msgstr "Delete Page"
196
232
 
197
233
  #. @context: Warning message before deleting media
198
- #: src/routes/dash/media.tsx:225
234
+ #: src/routes/dash/media.tsx:517
199
235
  msgid "Deleting this media will remove it permanently from storage."
200
236
  msgstr "Deleting this media will remove it permanently from storage."
201
237
 
238
+ #. @context: Hint shown on signin page when demo credentials are pre-filled
239
+ #: src/app.tsx:345
240
+ msgid "Demo account pre-filled. Just click Sign In."
241
+ msgstr "Demo account pre-filled. Just click Sign In."
242
+
202
243
  #. @context: Collection form field
203
244
  #. @context: Collection form field
204
- #: src/routes/dash/collections.tsx:94
205
- #: src/routes/dash/collections.tsx:238
245
+ #: src/routes/dash/collections.tsx:152
246
+ #: src/routes/dash/collections.tsx:327
206
247
  msgid "Description (optional)"
207
248
  msgstr "Description (optional)"
208
249
 
209
- #. @context: Page status badge - draft
210
250
  #. @context: Page status option - draft
211
251
  #. @context: Post visibility badge - draft
212
252
  #. @context: Post visibility option
213
- #: src/routes/dash/pages.tsx:61
214
- #: src/theme/components/PageForm.tsx:97
215
- #: src/theme/components/PostForm.tsx:97
216
- #: src/theme/components/PostList.tsx:31
253
+ #: src/theme/components/PageForm.tsx:132
254
+ #: src/theme/components/PostForm.tsx:143
255
+ #: src/theme/components/VisibilityBadge.tsx:38
217
256
  msgid "Draft"
218
257
  msgstr "Draft"
219
258
 
220
- #. @context: Dashboard stat card - draft posts count
221
- #: src/routes/dash/index.tsx:43
259
+ #. @context: Post status label
260
+ #: src/routes/dash/index.tsx:55
222
261
  msgid "Drafts"
223
262
  msgstr "Drafts"
224
263
 
225
264
  #. @context: Button to edit collection
226
265
  #. @context: Button to edit collection
266
+ #. @context: Button to edit item
227
267
  #. @context: Button to edit page
228
268
  #. @context: Button to edit page
229
269
  #. @context: Button to edit post
230
270
  #. @context: Button to edit post
231
- #: src/routes/dash/collections.tsx:49
232
- #: src/routes/dash/collections.tsx:150
233
- #: src/routes/dash/pages.tsx:83
234
- #: src/routes/dash/pages.tsx:157
235
- #: src/routes/dash/posts.tsx:94
236
- #: src/theme/components/PostList.tsx:92
271
+ #: src/routes/dash/collections.tsx:66
272
+ #: src/routes/dash/collections.tsx:210
273
+ #: src/routes/dash/pages.tsx:64
274
+ #: src/routes/dash/pages.tsx:134
275
+ #: src/routes/dash/posts.tsx:126
276
+ #: src/theme/components/ActionButtons.tsx:72
277
+ #: src/theme/components/PostList.tsx:46
237
278
  msgid "Edit"
238
279
  msgstr "Edit"
239
280
 
240
281
  #. @context: Page heading
241
- #: src/routes/dash/collections.tsx:217
282
+ #: src/routes/dash/collections.tsx:294
242
283
  msgid "Edit Collection"
243
284
  msgstr "Edit Collection"
244
285
 
245
286
  #. @context: Edit page main heading
246
- #: src/routes/dash/pages.tsx:208
287
+ #: src/routes/dash/pages.tsx:176
247
288
  msgid "Edit Page"
248
289
  msgstr "Edit Page"
249
290
 
250
291
  #. @context: Page heading
251
- #: src/routes/dash/posts.tsx:126
292
+ #: src/routes/dash/posts.tsx:155
252
293
  msgid "Edit Post"
253
294
  msgstr "Edit Post"
254
295
 
@@ -258,618 +299,653 @@ msgstr "Edit Post"
258
299
  #: src/routes/dash/collections.tsx:213
259
300
  #: src/routes/dash/pages.tsx:203
260
301
  #: src/routes/dash/posts.tsx:122
261
- msgid "Edit: {title}"
262
- msgstr "Edit: {title}"
302
+ #~ msgid "Edit: {title}"
303
+ #~ msgstr "Edit: {title}"
263
304
 
264
305
  #. @context: Setup/signin form field - email
265
306
  #. @context: Setup/signin form field - email
266
- #: src/app.tsx:144
267
- #: src/app.tsx:221
307
+ #: src/app.tsx:213
308
+ #: src/app.tsx:359
268
309
  msgid "Email"
269
310
  msgstr "Email"
270
311
 
312
+ #. @context: Password reset page description
313
+ #: src/app.tsx:496
314
+ msgid "Enter your new password."
315
+ msgstr "Enter your new password."
316
+
271
317
  #. @context: Post visibility badge
272
318
  #. @context: Post visibility badge - featured
273
319
  #. @context: Post visibility option
274
- #: src/routes/pages/home.tsx:69
275
- #: src/theme/components/PostForm.tsx:91
276
- #: src/theme/components/PostList.tsx:28
320
+ #: src/routes/pages/home.tsx:75
321
+ #: src/theme/components/PostForm.tsx:131
322
+ #: src/theme/components/VisibilityBadge.tsx:26
277
323
  msgid "Featured"
278
324
  msgstr "Featured"
279
325
 
280
326
  #. @context: Search results count - multiple
281
- #: src/routes/pages/search.tsx:92
327
+ #: src/routes/pages/search.tsx:89
282
328
  msgid "Found {count} results"
283
329
  msgstr "Found {count} results"
284
330
 
285
331
  #. @context: Search results count - single
286
- #: src/routes/pages/search.tsx:91
332
+ #: src/routes/pages/search.tsx:85
287
333
  msgid "Found 1 result"
288
334
  msgstr "Found 1 result"
289
335
 
290
336
  #. @context: Redirect form field
291
- #: src/routes/dash/redirects.tsx:69
337
+ #: src/routes/dash/redirects.tsx:97
292
338
  msgid "From Path"
293
339
  msgstr "From Path"
294
340
 
295
341
  #. @context: Settings section heading
296
- #: src/routes/dash/settings.tsx:30
342
+ #: src/routes/dash/settings.tsx:52
297
343
  msgid "General"
298
344
  msgstr "General"
299
345
 
300
346
  #. @context: Post type badge - image
301
347
  #. @context: Post type label - image
302
348
  #. @context: Post type option
303
- #: src/routes/pages/archive.tsx:172
304
- #: src/theme/components/PostForm.tsx:41
305
- #: src/theme/components/PostList.tsx:44
349
+ #: src/routes/pages/archive.tsx:37
350
+ #: src/theme/components/PostForm.tsx:57
351
+ #: src/theme/components/TypeBadge.tsx:29
306
352
  msgid "Image"
307
353
  msgstr "Image"
308
354
 
309
355
  #. @context: Post type label plural - images
310
- #: src/routes/pages/archive.tsx:184
356
+ #: src/routes/pages/archive.tsx:65
311
357
  msgid "Images"
312
358
  msgstr "Images"
313
359
 
360
+ #. @context: Media upload instructions - auto optimization
361
+ #: src/routes/dash/media.tsx:305
362
+ msgid "Images are automatically optimized: resized to max 1920px, converted to WebP, and metadata stripped."
363
+ msgstr "Images are automatically optimized: resized to max 1920px, converted to WebP, and metadata stripped."
364
+
365
+ #. @context: Password reset error heading
366
+ #: src/app.tsx:561
367
+ msgid "Invalid or Expired Link"
368
+ msgstr "Invalid or Expired Link"
369
+
314
370
  #. @context: Settings form field
315
- #: src/routes/dash/settings.tsx:46
371
+ #: src/routes/dash/settings.tsx:93
316
372
  msgid "Language"
317
373
  msgstr "Language"
318
374
 
319
375
  #. @context: Setup page description
320
376
  #: src/app.tsx:130
321
- msgid "Let's set up your site."
322
- msgstr "Let's set up your site."
377
+ #~ msgid "Let's set up your site."
378
+ #~ msgstr "Let's set up your site."
323
379
 
324
380
  #. @context: Post type badge - link
325
381
  #. @context: Post type label - link
326
382
  #. @context: Post type option
327
- #: src/routes/pages/archive.tsx:170
328
- #: src/theme/components/PostForm.tsx:35
329
- #: src/theme/components/PostList.tsx:42
383
+ #: src/routes/pages/archive.tsx:32
384
+ #: src/theme/components/PostForm.tsx:51
385
+ #: src/theme/components/TypeBadge.tsx:24
330
386
  msgid "Link"
331
387
  msgstr "Link"
332
388
 
333
389
  #. @context: Post type label plural - links
334
- #: src/routes/pages/archive.tsx:182
390
+ #: src/routes/pages/archive.tsx:57
335
391
  msgid "Links"
336
392
  msgstr "Links"
337
393
 
338
394
  #. @context: Pagination button - load more items
339
- #: src/theme/components/Pagination.tsx:111
395
+ #: src/theme/components/Pagination.tsx:103
340
396
  msgid "Load more"
341
397
  msgstr "Load more"
342
398
 
343
399
  #. @context: Page path validation message
344
- #: src/theme/components/PageForm.tsx:63
400
+ #: src/theme/components/PageForm.tsx:76
345
401
  msgid "Lowercase letters, numbers, and hyphens only"
346
402
  msgstr "Lowercase letters, numbers, and hyphens only"
347
403
 
348
404
  #. @context: Media detail section - Markdown snippet
349
- #: src/routes/dash/media.tsx:195
405
+ #: src/routes/dash/media.tsx:481
350
406
  msgid "Markdown"
351
407
  msgstr "Markdown"
352
408
 
353
409
  #. @context: Dashboard navigation - media library
354
410
  #. @context: Media main heading
355
- #. @context: Media page title
356
- #: src/routes/dash/media.tsx:44
357
- #: src/routes/dash/media.tsx:47
358
- #: src/theme/layouts/DashLayout.tsx:30
411
+ #: src/routes/dash/media.tsx:285
412
+ #: src/theme/layouts/DashLayout.tsx:105
359
413
  msgid "Media"
360
414
  msgstr "Media"
361
415
 
362
416
  #. @context: Setup site name placeholder
363
417
  #: src/app.tsx:137
364
- msgid "My Blog"
365
- msgstr "My Blog"
418
+ #~ msgid "My Blog"
419
+ #~ msgstr "My Blog"
366
420
 
367
421
  #. @context: Collection title placeholder
368
- #: src/routes/dash/collections.tsx:75
422
+ #: src/routes/dash/collections.tsx:123
369
423
  msgid "My Collection"
370
424
  msgstr "My Collection"
371
425
 
426
+ #. @context: Help text with link
427
+ #: src/routes/dash/index.tsx:78
428
+ msgid "Need help? Visit the <0>documentation</0>"
429
+ msgstr "Need help? Visit the <0>documentation</0>"
430
+
431
+ #. @context: Button to create new collection
372
432
  #. @context: Button to create new collection
373
433
  #. @context: Page heading
374
- #. @context: Page title
375
- #: src/routes/dash/collections.tsx:28
376
- #: src/routes/dash/collections.tsx:69
377
- #: src/routes/dash/collections.tsx:70
434
+ #: src/routes/dash/collections.tsx:39
435
+ #: src/routes/dash/collections.tsx:52
436
+ #: src/routes/dash/collections.tsx:103
378
437
  msgid "New Collection"
379
438
  msgstr "New Collection"
380
439
 
381
440
  #. @context: Button to create new page
382
441
  #. @context: New page main heading
383
- #. @context: New page page title
384
- #: src/routes/dash/pages.tsx:38
385
- #: src/routes/dash/pages.tsx:105
386
- #: src/routes/dash/pages.tsx:107
442
+ #: src/routes/dash/pages.tsx:37
443
+ #: src/routes/dash/pages.tsx:110
387
444
  msgid "New Page"
388
445
  msgstr "New Page"
389
446
 
447
+ #. @context: Password form field
448
+ #. @context: Password reset form field
449
+ #: src/app.tsx:510
450
+ #: src/routes/dash/settings.tsx:153
451
+ msgid "New Password"
452
+ msgstr "New Password"
453
+
454
+ #. @context: Button to create new post
390
455
  #. @context: Button to create new post
391
- #. @context: Dashboard quick action button to create new post
392
456
  #. @context: Page heading
393
- #. @context: Page title
394
- #: src/routes/dash/index.tsx:56
395
- #: src/routes/dash/posts.tsx:31
396
- #: src/routes/dash/posts.tsx:45
457
+ #: src/routes/dash/index.tsx:68
458
+ #: src/routes/dash/posts.tsx:30
397
459
  #: src/routes/dash/posts.tsx:46
398
460
  msgid "New Post"
399
461
  msgstr "New Post"
400
462
 
463
+ #. @context: Button to create new redirect
401
464
  #. @context: Button to create new redirect
402
465
  #. @context: Page heading
403
- #. @context: Page title
404
- #: src/routes/dash/redirects.tsx:27
405
- #: src/routes/dash/redirects.tsx:64
406
- #: src/routes/dash/redirects.tsx:65
466
+ #: src/routes/dash/redirects.tsx:33
467
+ #: src/routes/dash/redirects.tsx:46
468
+ #: src/routes/dash/redirects.tsx:87
407
469
  msgid "New Redirect"
408
470
  msgstr "New Redirect"
409
471
 
410
472
  #. @context: Pagination button - next page
411
473
  #. @context: Pagination button - next page
412
- #: src/theme/components/Pagination.tsx:50
413
- #: src/theme/components/Pagination.tsx:164
474
+ #: src/theme/components/Pagination.tsx:49
475
+ #: src/theme/components/Pagination.tsx:160
414
476
  msgid "Next"
415
477
  msgstr "Next"
416
478
 
417
479
  #. @context: Empty state message
418
- #: src/routes/dash/collections.tsx:33
480
+ #: src/routes/dash/collections.tsx:48
419
481
  msgid "No collections yet."
420
482
  msgstr "No collections yet."
421
483
 
422
484
  #. @context: Empty state message when no media exists
423
- #: src/routes/dash/media.tsx:74
485
+ #: src/routes/dash/media.tsx:320
424
486
  msgid "No media uploaded yet."
425
487
  msgstr "No media uploaded yet."
426
488
 
427
489
  #. @context: Empty state message when no pages exist
428
- #: src/routes/dash/pages.tsx:44
490
+ #: src/routes/dash/pages.tsx:46
429
491
  msgid "No pages yet."
430
492
  msgstr "No pages yet."
431
493
 
432
494
  #. @context: Archive empty state
433
- #: src/routes/pages/archive.tsx:102
495
+ #: src/routes/pages/archive.tsx:135
434
496
  msgid "No posts found."
435
497
  msgstr "No posts found."
436
498
 
437
499
  #. @context: Empty state message
438
500
  #. @context: Empty state message
439
- #: src/routes/dash/collections.tsx:168
440
- #: src/routes/pages/collection.tsx:40
501
+ #: src/routes/dash/collections.tsx:233
502
+ #: src/routes/pages/collection.tsx:39
441
503
  msgid "No posts in this collection."
442
504
  msgstr "No posts in this collection."
443
505
 
444
506
  #. @context: Empty state message on home page
445
507
  #. @context: Empty state message when no posts exist
446
- #: src/routes/pages/home.tsx:49
447
- #: src/theme/components/PostList.tsx:55
508
+ #: src/routes/pages/home.tsx:44
509
+ #: src/theme/components/PostList.tsx:25
448
510
  msgid "No posts yet."
449
511
  msgstr "No posts yet."
450
512
 
451
513
  #. @context: Empty state message
452
- #: src/routes/dash/redirects.tsx:32
514
+ #: src/routes/dash/redirects.tsx:42
453
515
  msgid "No redirects configured."
454
516
  msgstr "No redirects configured."
455
517
 
456
518
  #. @context: Search empty results
457
- #: src/routes/pages/search.tsx:89
519
+ #: src/routes/pages/search.tsx:80
458
520
  msgid "No results found."
459
521
  msgstr "No results found."
460
522
 
461
523
  #. @context: Post type badge - note
462
524
  #. @context: Post type label - note
463
525
  #. @context: Post type option
464
- #: src/routes/pages/archive.tsx:168
465
- #: src/theme/components/PostForm.tsx:29
466
- #: src/theme/components/PostList.tsx:40
526
+ #: src/routes/pages/archive.tsx:27
527
+ #: src/theme/components/PostForm.tsx:45
528
+ #: src/theme/components/TypeBadge.tsx:19
467
529
  msgid "Note"
468
530
  msgstr "Note"
469
531
 
470
532
  #. @context: Post type label plural - notes
471
- #: src/routes/pages/archive.tsx:180
533
+ #: src/routes/pages/archive.tsx:49
472
534
  msgid "Notes"
473
535
  msgstr "Notes"
474
536
 
475
537
  #. @context: Default page heading when untitled
476
- #. @context: Default page title when untitled
477
- #. @context: Default page title when untitled
478
538
  #. @context: Post type badge - page
479
539
  #. @context: Post type label - page
480
- #: src/routes/dash/pages.tsx:147
481
- #: src/routes/dash/pages.tsx:150
482
- #: src/routes/dash/pages.tsx:202
483
- #: src/routes/pages/archive.tsx:173
484
- #: src/theme/components/PostList.tsx:45
540
+ #: src/routes/dash/pages.tsx:125
541
+ #: src/routes/pages/archive.tsx:41
542
+ #: src/theme/components/TypeBadge.tsx:33
485
543
  msgid "Page"
486
544
  msgstr "Page"
487
545
 
488
546
  #. @context: Pagination - current page indicator
489
- #: src/theme/components/Pagination.tsx:165
547
+ #: src/theme/components/Pagination.tsx:164
490
548
  msgid "Page {page}"
491
549
  msgstr "Page {page}"
492
550
 
493
551
  #. @context: Page content placeholder
494
- #: src/theme/components/PageForm.tsx:80
552
+ #: src/theme/components/PageForm.tsx:103
495
553
  msgid "Page content (Markdown supported)..."
496
554
  msgstr "Page content (Markdown supported)..."
497
555
 
498
556
  #. @context: Page title placeholder
499
- #: src/theme/components/PageForm.tsx:43
557
+ #: src/theme/components/PageForm.tsx:52
500
558
  msgid "Page title..."
501
559
  msgstr "Page title..."
502
560
 
503
561
  #. @context: Dashboard navigation - pages management
504
562
  #. @context: Pages main heading
505
- #. @context: Pages page title
506
563
  #. @context: Post type label plural - pages
507
- #: src/routes/dash/pages.tsx:32
508
- #: src/routes/dash/pages.tsx:35
509
- #: src/routes/pages/archive.tsx:185
510
- #: src/theme/layouts/DashLayout.tsx:29
564
+ #: src/routes/dash/pages.tsx:36
565
+ #: src/routes/pages/archive.tsx:69
566
+ #: src/theme/layouts/DashLayout.tsx:96
511
567
  msgid "Pages"
512
568
  msgstr "Pages"
513
569
 
514
570
  #. @context: Setup/signin form field - password
515
571
  #. @context: Setup/signin form field - password
516
- #: src/app.tsx:148
517
- #: src/app.tsx:225
572
+ #: src/app.tsx:228
573
+ #: src/app.tsx:368
518
574
  msgid "Password"
519
575
  msgstr "Password"
520
576
 
521
577
  #. @context: Page form field label - URL path
522
- #: src/theme/components/PageForm.tsx:52
578
+ #: src/theme/components/PageForm.tsx:63
523
579
  msgid "Path"
524
580
  msgstr "Path"
525
581
 
526
582
  #. @context: Link to individual post in thread
527
583
  #. @context: Link to permanent URL of post
528
- #: src/routes/pages/post.tsx:62
529
- #: src/theme/components/ThreadView.tsx:66
584
+ #: src/routes/pages/post.tsx:41
585
+ #: src/theme/components/ThreadView.tsx:68
530
586
  msgid "Permalink"
531
587
  msgstr "Permalink"
532
588
 
533
589
  #. @context: Default post title
534
- #. @context: Default post title
535
- #: src/routes/dash/posts.tsx:85
536
- #: src/routes/dash/posts.tsx:121
590
+ #: src/routes/dash/posts.tsx:115
537
591
  msgid "Post"
538
592
  msgstr "Post"
539
593
 
540
594
  #. @context: Post title placeholder
541
- #: src/theme/components/PostForm.tsx:53
595
+ #: src/theme/components/PostForm.tsx:74
542
596
  msgid "Post title..."
543
597
  msgstr "Post title..."
544
598
 
545
599
  #. @context: Dashboard heading
546
600
  #. @context: Dashboard navigation - posts management
547
- #. @context: Dashboard page title
548
- #: src/routes/dash/posts.tsx:27
549
601
  #: src/routes/dash/posts.tsx:29
550
- #: src/theme/layouts/DashLayout.tsx:28
602
+ #: src/theme/layouts/DashLayout.tsx:87
551
603
  msgid "Posts"
552
604
  msgstr "Posts"
553
605
 
554
606
  #. @context: Collection posts section heading
555
- #: src/routes/dash/collections.tsx:139
607
+ #: src/routes/dash/collections.tsx:195
556
608
  msgid "Posts in Collection ({count})"
557
609
  msgstr "Posts in Collection ({count})"
558
610
 
559
611
  #. @context: Media detail section - preview
560
- #: src/routes/dash/media.tsx:148
612
+ #: src/routes/dash/media.tsx:404
561
613
  msgid "Preview"
562
614
  msgstr "Preview"
563
615
 
564
616
  #. @context: Pagination button - previous page
565
617
  #. @context: Pagination button - previous page
566
- #: src/theme/components/Pagination.tsx:49
567
- #: src/theme/components/Pagination.tsx:163
618
+ #: src/theme/components/Pagination.tsx:45
619
+ #: src/theme/components/Pagination.tsx:156
568
620
  msgid "Previous"
569
621
  msgstr "Previous"
570
622
 
623
+ #. @context: Upload status - processing
624
+ #: src/routes/dash/media.tsx:107
625
+ msgid "Processing..."
626
+ msgstr "Processing..."
627
+
571
628
  #. @context: Button to publish new post
572
- #: src/theme/components/PostForm.tsx:117
629
+ #: src/theme/components/PostForm.tsx:175
573
630
  msgid "Publish"
574
631
  msgstr "Publish"
575
632
 
576
- #. @context: Dashboard stat card - published posts count
577
- #. @context: Page status badge - published
578
633
  #. @context: Page status option - published
579
- #: src/routes/dash/index.tsx:34
580
- #: src/routes/dash/pages.tsx:62
581
- #: src/theme/components/PageForm.tsx:94
634
+ #. @context: Post status label
635
+ #: src/routes/dash/index.tsx:45
636
+ #: src/theme/components/PageForm.tsx:126
582
637
  msgid "Published"
583
638
  msgstr "Published"
584
639
 
585
640
  #. @context: Page status helper text
586
- #: src/theme/components/PageForm.tsx:101
641
+ #: src/theme/components/PageForm.tsx:139
587
642
  msgid "Published pages are accessible via their path. Drafts are not visible."
588
643
  msgstr "Published pages are accessible via their path. Drafts are not visible."
589
644
 
590
- #. @context: Dashboard stat card - quick actions section
591
- #: src/routes/dash/index.tsx:52
645
+ #. @context: Dashboard section title
646
+ #: src/routes/dash/index.tsx:62
592
647
  msgid "Quick Actions"
593
648
  msgstr "Quick Actions"
594
649
 
595
650
  #. @context: Post visibility badge - normal
596
- #: src/theme/components/PostList.tsx:29
651
+ #: src/theme/components/VisibilityBadge.tsx:30
597
652
  msgid "Quiet"
598
653
  msgstr "Quiet"
599
654
 
600
655
  #. @context: Post visibility option
601
- #: src/theme/components/PostForm.tsx:88
656
+ #: src/theme/components/PostForm.tsx:125
602
657
  msgid "Quiet (normal)"
603
658
  msgstr "Quiet (normal)"
604
659
 
605
660
  #. @context: Post type badge - quote
606
661
  #. @context: Post type label - quote
607
662
  #. @context: Post type option
608
- #: src/routes/pages/archive.tsx:171
609
- #: src/theme/components/PostForm.tsx:38
610
- #: src/theme/components/PostList.tsx:43
663
+ #: src/routes/pages/archive.tsx:33
664
+ #: src/theme/components/PostForm.tsx:54
665
+ #: src/theme/components/TypeBadge.tsx:25
611
666
  msgid "Quote"
612
667
  msgstr "Quote"
613
668
 
614
669
  #. @context: Post type label plural - quotes
615
- #: src/routes/pages/archive.tsx:183
670
+ #: src/routes/pages/archive.tsx:61
616
671
  msgid "Quotes"
617
672
  msgstr "Quotes"
618
673
 
619
674
  #. @context: Dashboard heading
620
675
  #. @context: Dashboard navigation - URL redirects
621
- #. @context: Dashboard page title
622
- #: src/routes/dash/redirects.tsx:23
623
- #: src/routes/dash/redirects.tsx:25
624
- #: src/theme/layouts/DashLayout.tsx:32
676
+ #: src/routes/dash/redirects.tsx:29
677
+ #: src/theme/layouts/DashLayout.tsx:124
625
678
  msgid "Redirects"
626
679
  msgstr "Redirects"
627
680
 
628
681
  #. @context: Button to remove post from collection
629
- #: src/routes/dash/collections.tsx:184
682
+ #: src/routes/dash/collections.tsx:257
630
683
  msgid "Remove"
631
684
  msgstr "Remove"
632
685
 
686
+ #. @context: Password reset form submit button
687
+ #. @context: Password reset page heading
688
+ #: src/app.tsx:490
689
+ #: src/app.tsx:541
690
+ msgid "Reset Password"
691
+ msgstr "Reset Password"
692
+
633
693
  #. @context: Button to save settings
634
- #: src/routes/dash/settings.tsx:63
694
+ #: src/routes/dash/settings.tsx:114
635
695
  msgid "Save Settings"
636
696
  msgstr "Save Settings"
637
697
 
638
698
  #. @context: Search page title
639
699
  #. @context: Search submit button
640
- #: src/routes/pages/search.tsx:53
641
- #: src/routes/pages/search.tsx:72
700
+ #: src/routes/pages/search.tsx:36
701
+ #: src/routes/pages/search.tsx:60
642
702
  msgid "Search"
643
703
  msgstr "Search"
644
704
 
645
705
  #. @context: Search error message
646
706
  #: src/routes/pages/search.tsx:49
647
- msgid "Search failed. Please try again."
648
- msgstr "Search failed. Please try again."
707
+ #~ msgid "Search failed. Please try again."
708
+ #~ msgstr "Search failed. Please try again."
649
709
 
650
710
  #. @context: Search input placeholder
651
- #: src/routes/pages/search.tsx:67
711
+ #: src/routes/pages/search.tsx:52
652
712
  msgid "Search posts..."
653
713
  msgstr "Search posts..."
654
714
 
655
715
  #. @context: Dashboard heading
656
716
  #. @context: Dashboard navigation - site settings
657
- #. @context: Dashboard page title
658
- #: src/routes/dash/settings.tsx:24
659
- #: src/routes/dash/settings.tsx:25
660
- #: src/theme/layouts/DashLayout.tsx:33
717
+ #: src/routes/dash/settings.tsx:41
718
+ #: src/theme/layouts/DashLayout.tsx:133
661
719
  msgid "Settings"
662
720
  msgstr "Settings"
663
721
 
664
722
  #. @context: Setup page title
665
723
  #: src/app.tsx:125
666
- msgid "Setup"
667
- msgstr "Setup"
724
+ #~ msgid "Setup"
725
+ #~ msgstr "Setup"
668
726
 
669
727
  #. @context: Sign in form submit button
670
728
  #. @context: Sign in page heading
671
- #. @context: Sign in page title
672
- #: src/app.tsx:211
673
- #: src/app.tsx:215
674
- #: src/app.tsx:228
729
+ #: src/app.tsx:336
730
+ #: src/app.tsx:381
675
731
  msgid "Sign In"
676
732
  msgstr "Sign In"
677
733
 
678
734
  #. @context: Dashboard header link to sign out
679
- #: src/theme/layouts/DashLayout.tsx:64
735
+ #: src/theme/layouts/DashLayout.tsx:63
680
736
  msgid "Sign Out"
681
737
  msgstr "Sign Out"
682
738
 
683
739
  #. @context: Settings form field
684
- #: src/routes/dash/settings.tsx:39
740
+ #: src/routes/dash/settings.tsx:76
685
741
  msgid "Site Description"
686
742
  msgstr "Site Description"
687
743
 
688
744
  #. @context: Settings form field
689
- #. @context: Setup form field - site name
690
- #: src/app.tsx:136
691
- #: src/routes/dash/settings.tsx:34
745
+ #: src/routes/dash/settings.tsx:61
692
746
  msgid "Site Name"
693
747
  msgstr "Site Name"
694
748
 
695
749
  #. @context: Collection form field
696
750
  #. @context: Collection form field
697
- #: src/routes/dash/collections.tsx:79
698
- #: src/routes/dash/collections.tsx:226
751
+ #: src/routes/dash/collections.tsx:132
752
+ #: src/routes/dash/collections.tsx:314
699
753
  msgid "Slug"
700
754
  msgstr "Slug"
701
755
 
702
756
  #. @context: Post form field
703
- #: src/theme/components/PostForm.tsx:73
757
+ #: src/theme/components/PostForm.tsx:102
704
758
  msgid "Source URL (optional)"
705
759
  msgstr "Source URL (optional)"
706
760
 
707
761
  #. @context: Page form field label - publish status
708
- #: src/theme/components/PageForm.tsx:90
762
+ #: src/theme/components/PageForm.tsx:116
709
763
  msgid "Status"
710
764
  msgstr "Status"
711
765
 
712
766
  #. @context: Media upload instructions - supported formats
713
767
  #: src/routes/dash/media.tsx:67
714
- msgid "Supported formats: JPEG, PNG, GIF, WebP, SVG. Max size: 10MB."
715
- msgstr "Supported formats: JPEG, PNG, GIF, WebP, SVG. Max size: 10MB."
768
+ #~ msgid "Supported formats: JPEG, PNG, GIF, WebP, SVG. Max size: 10MB."
769
+ #~ msgstr "Supported formats: JPEG, PNG, GIF, WebP, SVG. Max size: 10MB."
716
770
 
717
771
  #. @context: Redirect to path help text
718
- #: src/routes/dash/redirects.tsx:89
772
+ #: src/routes/dash/redirects.tsx:132
719
773
  msgid "The destination path or URL"
720
774
  msgstr "The destination path or URL"
721
775
 
722
776
  #. @context: Redirect from path help text
723
- #: src/routes/dash/redirects.tsx:77
777
+ #: src/routes/dash/redirects.tsx:110
724
778
  msgid "The path to redirect from"
725
779
  msgstr "The path to redirect from"
726
780
 
727
781
  #. @context: Page path helper text
728
- #: src/theme/components/PageForm.tsx:68
782
+ #: src/theme/components/PageForm.tsx:84
729
783
  msgid "The URL path for this page. Use lowercase letters, numbers, and hyphens."
730
784
  msgstr "The URL path for this page. Use lowercase letters, numbers, and hyphens."
731
785
 
786
+ #. @context: Password reset error description
787
+ #: src/app.tsx:569
788
+ msgid "This password reset link is invalid or has expired. Please generate a new one."
789
+ msgstr "This password reset link is invalid or has expired. Please generate a new one."
790
+
791
+ #. @context: Appearance settings description
792
+ #: src/routes/dash/appearance.tsx:114
793
+ msgid "This will theme both your site and your dashboard. All color themes support dark mode."
794
+ msgstr "This will theme both your site and your dashboard. All color themes support dark mode."
795
+
732
796
  #. @context: Thread view indicator - first post in thread
733
- #: src/theme/components/ThreadView.tsx:58
797
+ #: src/theme/components/ThreadView.tsx:57
734
798
  msgid "Thread start"
735
799
  msgstr "Thread start"
736
800
 
737
801
  #. @context: Thread view header - multiple posts
738
- #: src/theme/components/ThreadView.tsx:92
802
+ #: src/theme/components/ThreadView.tsx:102
739
803
  msgid "Thread with {count} posts"
740
804
  msgstr "Thread with {count} posts"
741
805
 
742
806
  #. @context: Thread view header - single post
743
- #: src/theme/components/ThreadView.tsx:91
807
+ #: src/theme/components/ThreadView.tsx:98
744
808
  msgid "Thread with 1 post"
745
809
  msgstr "Thread with 1 post"
746
810
 
747
811
  #. @context: Collection form field
748
812
  #. @context: Collection form field
749
813
  #. @context: Page form field label - title
750
- #: src/routes/dash/collections.tsx:74
751
- #: src/routes/dash/collections.tsx:221
752
- #: src/theme/components/PageForm.tsx:37
814
+ #: src/routes/dash/collections.tsx:113
815
+ #: src/routes/dash/collections.tsx:304
816
+ #: src/theme/components/PageForm.tsx:43
753
817
  msgid "Title"
754
818
  msgstr "Title"
755
819
 
756
820
  #. @context: Post form field
757
- #: src/theme/components/PostForm.tsx:48
821
+ #: src/theme/components/PostForm.tsx:65
758
822
  msgid "Title (optional)"
759
823
  msgstr "Title (optional)"
760
824
 
761
825
  #. @context: Redirect form field
762
- #: src/routes/dash/redirects.tsx:81
826
+ #: src/routes/dash/redirects.tsx:119
763
827
  msgid "To Path"
764
828
  msgstr "To Path"
765
829
 
766
830
  #. @context: Post form field - post type
767
831
  #. @context: Redirect form field
768
- #: src/routes/dash/redirects.tsx:93
769
- #: src/theme/components/PostForm.tsx:26
832
+ #: src/routes/dash/redirects.tsx:141
833
+ #: src/theme/components/PostForm.tsx:38
770
834
  msgid "Type"
771
835
  msgstr "Type"
772
836
 
773
837
  #. @context: Post visibility badge - unlisted
774
838
  #. @context: Post visibility option
775
- #: src/theme/components/PostForm.tsx:94
776
- #: src/theme/components/PostList.tsx:30
839
+ #: src/theme/components/PostForm.tsx:137
840
+ #: src/theme/components/VisibilityBadge.tsx:34
777
841
  msgid "Unlisted"
778
842
  msgstr "Unlisted"
779
843
 
780
844
  #. @context: Default title for untitled page
781
845
  #. @context: Default title for untitled post
782
- #: src/routes/dash/pages.tsx:72
783
- #: src/theme/components/PostList.tsx:79
846
+ #: src/routes/dash/pages.tsx:91
847
+ #: src/theme/components/PostList.tsx:71
784
848
  msgid "Untitled"
785
849
  msgstr "Untitled"
786
850
 
787
851
  #. @context: Button to update existing post
788
- #: src/theme/components/PostForm.tsx:117
852
+ #: src/theme/components/PostForm.tsx:171
789
853
  msgid "Update"
790
854
  msgstr "Update"
791
855
 
792
856
  #. @context: Button to save collection changes
793
- #: src/routes/dash/collections.tsx:246
857
+ #: src/routes/dash/collections.tsx:339
794
858
  msgid "Update Collection"
795
859
  msgstr "Update Collection"
796
860
 
797
861
  #. @context: Button to update existing page
798
- #: src/theme/components/PageForm.tsx:109
862
+ #: src/theme/components/PageForm.tsx:151
799
863
  msgid "Update Page"
800
864
  msgstr "Update Page"
801
865
 
802
866
  #. @context: Button to upload media file
803
- #: src/routes/dash/media.tsx:50
867
+ #: src/routes/dash/media.tsx:115
804
868
  msgid "Upload"
805
869
  msgstr "Upload"
806
870
 
871
+ #. @context: Upload error message
872
+ #: src/routes/dash/media.tsx:119
873
+ msgid "Upload failed. Please try again."
874
+ msgstr "Upload failed. Please try again."
875
+
807
876
  #. @context: Media upload instructions - API usage
808
877
  #: src/routes/dash/media.tsx:64
809
- msgid "Upload images via the API: POST /api/upload with a file form field."
810
- msgstr "Upload images via the API: POST /api/upload with a file form field."
878
+ #~ msgid "Upload images via the API: POST /api/upload with a file form field."
879
+ #~ msgstr "Upload images via the API: POST /api/upload with a file form field."
880
+
881
+ #. @context: Upload status - uploading
882
+ #: src/routes/dash/media.tsx:111
883
+ msgid "Uploading..."
884
+ msgstr "Uploading..."
811
885
 
812
886
  #. @context: Media detail section - URL
813
- #: src/routes/dash/media.tsx:169
887
+ #: src/routes/dash/media.tsx:444
814
888
  msgid "URL"
815
889
  msgstr "URL"
816
890
 
817
891
  #. @context: Collection path help text
818
- #: src/routes/dash/collections.tsx:89
892
+ #: src/routes/dash/collections.tsx:143
819
893
  msgid "URL-safe identifier (lowercase, numbers, hyphens)"
820
894
  msgstr "URL-safe identifier (lowercase, numbers, hyphens)"
821
895
 
822
896
  #. @context: Media URL helper text
823
- #: src/routes/dash/media.tsx:188
897
+ #: src/routes/dash/media.tsx:470
824
898
  msgid "Use this URL to embed the media in your posts."
825
899
  msgstr "Use this URL to embed the media in your posts."
826
900
 
827
901
  #. @context: Button to view collection
828
902
  #. @context: Button to view collection
903
+ #. @context: Button to view item on public site
829
904
  #. @context: Button to view page on public site
830
905
  #. @context: Button to view page on public site
831
906
  #. @context: Button to view post
832
907
  #. @context: Button to view post on public site
833
- #: src/routes/dash/collections.tsx:52
834
- #: src/routes/dash/collections.tsx:153
835
- #: src/routes/dash/pages.tsx:87
836
- #: src/routes/dash/pages.tsx:161
837
- #: src/routes/dash/posts.tsx:97
838
- #: src/theme/components/PostList.tsx:95
908
+ #: src/routes/dash/collections.tsx:71
909
+ #: src/routes/dash/collections.tsx:215
910
+ #: src/routes/dash/pages.tsx:73
911
+ #: src/routes/dash/pages.tsx:143
912
+ #: src/routes/dash/posts.tsx:131
913
+ #: src/theme/components/ActionButtons.tsx:76
914
+ #: src/theme/components/PostList.tsx:51
839
915
  msgid "View"
840
916
  msgstr "View"
841
917
 
842
918
  #. @context: Link to view all posts on archive page
843
- #: src/routes/pages/home.tsx:80
919
+ #: src/routes/pages/home.tsx:93
844
920
  msgid "View all posts →"
845
921
  msgstr "View all posts →"
846
922
 
847
923
  #. @context: Dashboard header link to view the public site
848
- #: src/theme/layouts/DashLayout.tsx:61
924
+ #: src/theme/layouts/DashLayout.tsx:53
849
925
  msgid "View Site"
850
926
  msgstr "View Site"
851
927
 
852
928
  #. @context: Post form field
853
- #: src/theme/components/PostForm.tsx:85
929
+ #: src/theme/components/PostForm.tsx:118
854
930
  msgid "Visibility"
855
931
  msgstr "Visibility"
856
932
 
857
933
  #. @context: Setup page welcome heading
858
- #: src/app.tsx:129
934
+ #: src/app.tsx:178
859
935
  msgid "Welcome to Jant"
860
936
  msgstr "Welcome to Jant"
861
937
 
862
938
  #. @context: Post content placeholder
863
- #: src/theme/components/PostForm.tsx:64
939
+ #: src/theme/components/PostForm.tsx:89
864
940
  msgid "What's on your mind?"
865
941
  msgstr "What's on your mind?"
866
942
 
867
943
  #. @context: Collection description placeholder
868
- #: src/routes/dash/collections.tsx:95
944
+ #: src/routes/dash/collections.tsx:161
869
945
  msgid "What's this collection about?"
870
946
  msgstr "What's this collection about?"
871
947
 
872
948
  #. @context: Setup form field - user name
873
- #: src/app.tsx:140
949
+ #: src/app.tsx:198
874
950
  msgid "Your Name"
875
951
  msgstr "Your Name"