@open-slide/core 1.7.0 → 1.9.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.
- package/dist/{build-tLrkKUHr.js → build-ZM7IfDO-.js} +1 -1
- package/dist/cli/bin.js +3 -3
- package/dist/{config-PwUHqZ_X.js → config-BAZeaz2P.js} +289 -246
- package/dist/{config-CfMThYN9.d.ts → config-D_5nlXFU.d.ts} +6 -1
- package/dist/{dev-DpCIRbhT.js → dev-BQkNTG_t.js} +1 -1
- package/dist/format-CYOb2cAQ.js +1573 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +38 -4
- package/dist/locale/index.d.ts +1 -1
- package/dist/locale/index.js +1 -1144
- package/dist/{preview-BSGlM6Se.js → preview-D8hUtbRA.js} +1 -1
- package/dist/{types-B-KrjgX8.d.ts → types-AalTbxMj.d.ts} +17 -3
- package/dist/vite/index.d.ts +2 -2
- package/dist/vite/index.js +1 -1
- package/package.json +2 -1
- package/skills/create-theme/SKILL.md +1 -1
- package/src/app/components/inspector/comment-widget.tsx +16 -2
- package/src/app/components/language-toggle.tsx +39 -0
- package/src/app/components/player.tsx +12 -17
- package/src/app/components/pptx-progress-toast.tsx +32 -0
- package/src/app/components/sidebar/folder-item.tsx +7 -2
- package/src/app/components/sidebar/sidebar-footer.tsx +51 -0
- package/src/app/components/sidebar/sidebar.tsx +95 -17
- package/src/app/lib/design-presets.ts +1 -1
- package/src/app/lib/export-pptx.ts +284 -0
- package/src/app/lib/folders.ts +28 -0
- package/src/app/lib/inspector/fiber.test.ts +154 -0
- package/src/app/lib/inspector/fiber.ts +12 -1
- package/src/app/lib/locale-store.ts +67 -0
- package/src/app/lib/use-click-page-navigation.ts +52 -0
- package/src/app/lib/use-is-mobile.ts +21 -0
- package/src/app/lib/use-locale.ts +4 -16
- package/src/app/routes/home-shell.tsx +8 -0
- package/src/app/routes/home.tsx +1 -1
- package/src/app/routes/slide.tsx +145 -53
- package/src/app/virtual.d.ts +1 -0
- package/src/locale/en.ts +18 -3
- package/src/locale/ja.ts +19 -3
- package/src/locale/types.ts +18 -3
- package/src/locale/zh-cn.ts +17 -3
- package/src/locale/zh-tw.ts +17 -3
- package/dist/en-BDnM5zKJ.js +0 -378
- package/src/app/components/click-nav-zones.tsx +0 -36
package/dist/en-BDnM5zKJ.js
DELETED
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
//#region src/locale/en.ts
|
|
2
|
-
const en = {
|
|
3
|
-
id: "en",
|
|
4
|
-
common: {
|
|
5
|
-
cancel: "Cancel",
|
|
6
|
-
save: "Save",
|
|
7
|
-
saving: "Saving",
|
|
8
|
-
saved: "Saved",
|
|
9
|
-
discard: "Discard",
|
|
10
|
-
delete: "Delete",
|
|
11
|
-
rename: "Rename",
|
|
12
|
-
move: "Move",
|
|
13
|
-
close: "Close",
|
|
14
|
-
loading: "Loading",
|
|
15
|
-
loadFailed: "Load failed",
|
|
16
|
-
failedToLoadSlide: "Failed to load slide",
|
|
17
|
-
home: "Home",
|
|
18
|
-
backToHome: "Back to home",
|
|
19
|
-
preview: "Preview",
|
|
20
|
-
add: "Add",
|
|
21
|
-
done: "Done",
|
|
22
|
-
tryAgain: "Try again",
|
|
23
|
-
undo: "Undo",
|
|
24
|
-
redo: "Redo",
|
|
25
|
-
light: "Light",
|
|
26
|
-
dark: "Dark",
|
|
27
|
-
system: "System",
|
|
28
|
-
selected: "Selected"
|
|
29
|
-
},
|
|
30
|
-
notFound: {
|
|
31
|
-
eyebrow: "404 · not found",
|
|
32
|
-
title: "Page not found"
|
|
33
|
-
},
|
|
34
|
-
home: {
|
|
35
|
-
appTitle: "open-slide",
|
|
36
|
-
draft: "Draft",
|
|
37
|
-
duplicate: "Duplicate",
|
|
38
|
-
themes: "Themes",
|
|
39
|
-
assets: "Assets",
|
|
40
|
-
folders: "Folders",
|
|
41
|
-
newFolder: "New folder",
|
|
42
|
-
folderName: "Folder name",
|
|
43
|
-
changeIcon: "Change icon",
|
|
44
|
-
iconEmojiTab: "Emoji",
|
|
45
|
-
iconColorTab: "Color",
|
|
46
|
-
folderActions: "Folder actions",
|
|
47
|
-
searchPlaceholder: "Search slides",
|
|
48
|
-
clearSearch: "Clear search",
|
|
49
|
-
sortLabel: "Sort",
|
|
50
|
-
sortByCreatedDesc: "Newest",
|
|
51
|
-
sortByCreatedAsc: "Oldest",
|
|
52
|
-
sortByTitleAsc: "A–Z",
|
|
53
|
-
sortByTitleDesc: "Z–A",
|
|
54
|
-
noMatches: "No matches",
|
|
55
|
-
nothingMatchesPrefix: "Nothing matches ",
|
|
56
|
-
nothingMatchesSuffix: " in this folder.",
|
|
57
|
-
noSlidesYet: "No slides yet",
|
|
58
|
-
createSlideHintPrefix: "Run ",
|
|
59
|
-
createSlideHintSuffix: " in your agent to scaffold one.",
|
|
60
|
-
folderEmptyTitle: "{name} is empty",
|
|
61
|
-
folderEmptyHint: "Drag a slide from Draft into this folder in the sidebar.",
|
|
62
|
-
slideActions: "Slide actions",
|
|
63
|
-
moveToFolder: "Move to folder…",
|
|
64
|
-
renameDialogEyebrow: "Rename",
|
|
65
|
-
renameDialogTitle: "Rename slide",
|
|
66
|
-
renameDialogDescription: "Give this slide a new display name.",
|
|
67
|
-
slideNamePlaceholder: "Slide name",
|
|
68
|
-
moveDialogEyebrow: "Move",
|
|
69
|
-
moveDialogTitle: "Move slide",
|
|
70
|
-
moveDialogDescriptionPrefix: "Choose a folder for ",
|
|
71
|
-
moveDialogDescriptionSuffix: ".",
|
|
72
|
-
deleteDialogEyebrow: "Destructive",
|
|
73
|
-
deleteDialogTitle: "Delete slide?",
|
|
74
|
-
deleteDialogDescriptionPrefix: "This permanently removes ",
|
|
75
|
-
deleteDialogDescriptionMid: " and its files from disk. ",
|
|
76
|
-
deleteDialogDescriptionSuffix: "This action cannot be undone.",
|
|
77
|
-
toastFolderCreated: "Created folder “{name}”",
|
|
78
|
-
toastFolderCreateFailed: "Failed to create folder",
|
|
79
|
-
toastSlideDuplicated: "Duplicated “{slide}” as {newSlide}",
|
|
80
|
-
toastSlideDuplicateFailed: "Could not duplicate slide",
|
|
81
|
-
toastSlideMoved: "Moved “{slide}” to {folder}",
|
|
82
|
-
toastSlideMoveFailed: "Failed to move slide",
|
|
83
|
-
toastFolderDeleted: "Deleted folder “{name}”",
|
|
84
|
-
toastFolderDeleteFailed: "Failed to delete folder",
|
|
85
|
-
pickIcon: "Pick icon"
|
|
86
|
-
},
|
|
87
|
-
slide: {
|
|
88
|
-
home: "Home",
|
|
89
|
-
backToHome: "Back to home",
|
|
90
|
-
agentConnected: "Agent connected",
|
|
91
|
-
agentConnectedTooltip: "The current slide and inspector selection are synced to your agent in real time.",
|
|
92
|
-
agentDisconnected: "Agent disconnected",
|
|
93
|
-
agentDisconnectedTooltip: "Lost connection to the dev server, so your agent can no longer see the current slide or inspector selection. Restart the dev server to restore the connection.",
|
|
94
|
-
download: "Download",
|
|
95
|
-
copyLink: "Copy link",
|
|
96
|
-
toastCopyLinkSuccess: "Link copied to clipboard",
|
|
97
|
-
toastCopyLinkFailed: "Failed to copy link",
|
|
98
|
-
exportAsHtml: "Export as HTML",
|
|
99
|
-
exportAsPdf: "Export as PDF",
|
|
100
|
-
pdfExportFailed: "PDF export failed",
|
|
101
|
-
pdfExportSafariUnsupported: "Export as PDF is not supported on Safari. Please try a Chromium-based browser instead.",
|
|
102
|
-
present: "Present",
|
|
103
|
-
presentMenuAria: "Present options",
|
|
104
|
-
presentInWindow: "Play",
|
|
105
|
-
presentFullscreen: "Fullscreen",
|
|
106
|
-
presentPresenter: "Presenter mode",
|
|
107
|
-
slidesTab: "Slides",
|
|
108
|
-
assetsTab: "Assets",
|
|
109
|
-
renameSlide: "Rename slide",
|
|
110
|
-
loadingEyebrow: "Loading",
|
|
111
|
-
emptyEyebrow: "Empty",
|
|
112
|
-
nothingToShow: "Nothing to show.",
|
|
113
|
-
emptyHintPrefix: "",
|
|
114
|
-
emptyHintMust: " must ",
|
|
115
|
-
emptyHintSuffix: " a non-empty array of components."
|
|
116
|
-
},
|
|
117
|
-
presenter: {
|
|
118
|
-
eyebrow: "Presenter",
|
|
119
|
-
notLinked: "Not linked",
|
|
120
|
-
nowShowing: "Now showing",
|
|
121
|
-
upNext: "Up next",
|
|
122
|
-
lastSlide: "Last slide",
|
|
123
|
-
endOfDeck: "End of deck",
|
|
124
|
-
speakerNotes: "Speaker notes",
|
|
125
|
-
noNotesPrefix: "No speaker notes for this slide. Add ",
|
|
126
|
-
noNotesSuffix: " to your slide module to see notes here.",
|
|
127
|
-
blackScreen: "Black screen",
|
|
128
|
-
whiteScreen: "White screen",
|
|
129
|
-
prev: "Prev",
|
|
130
|
-
next: "Next",
|
|
131
|
-
black: "Black",
|
|
132
|
-
white: "White",
|
|
133
|
-
reset: "Reset",
|
|
134
|
-
resetTimer: "Reset timer",
|
|
135
|
-
currentTime: "Current time",
|
|
136
|
-
elapsed: "Elapsed",
|
|
137
|
-
jump: "Jump",
|
|
138
|
-
loadingSlide: "Loading {slideId}…"
|
|
139
|
-
},
|
|
140
|
-
present: {
|
|
141
|
-
prevSlideAria: "Previous slide (←)",
|
|
142
|
-
nextSlideAria: "Next slide (→)",
|
|
143
|
-
overviewAria: "Slide overview (O)",
|
|
144
|
-
blackoutAria: "Black screen (B)",
|
|
145
|
-
whiteoutAria: "White screen (W)",
|
|
146
|
-
laserAria: "Laser pointer (L)",
|
|
147
|
-
presenterAria: "Presenter view (P)",
|
|
148
|
-
enterFullscreenAria: "Enter fullscreen",
|
|
149
|
-
exitFullscreenAria: "Exit fullscreen",
|
|
150
|
-
helpAria: "Keyboard shortcuts (?)",
|
|
151
|
-
exitAria: "Exit (Esc)",
|
|
152
|
-
elapsedTime: "Elapsed time",
|
|
153
|
-
helpEyebrow: "Present mode",
|
|
154
|
-
helpTitle: "Keyboard shortcuts",
|
|
155
|
-
shortcutNext: "Next slide",
|
|
156
|
-
shortcutPrev: "Previous slide",
|
|
157
|
-
shortcutFirstLast: "First / last slide",
|
|
158
|
-
shortcutJump: "Jump to slide",
|
|
159
|
-
shortcutOverview: "Slide overview",
|
|
160
|
-
shortcutBlack: "Black screen",
|
|
161
|
-
shortcutWhite: "White screen",
|
|
162
|
-
shortcutLaser: "Laser pointer",
|
|
163
|
-
shortcutPresenter: "Open Presenter View",
|
|
164
|
-
shortcutToggleHelp: "Toggle this help",
|
|
165
|
-
shortcutCloseExit: "Close overlay / exit",
|
|
166
|
-
overviewDialogAria: "Slide overview",
|
|
167
|
-
overviewEyebrow: "Overview",
|
|
168
|
-
overviewGoToAria: "Go to slide {n}",
|
|
169
|
-
nowBadge: "Now"
|
|
170
|
-
},
|
|
171
|
-
inspector: {
|
|
172
|
-
inspect: "Inspect",
|
|
173
|
-
deselect: "Deselect",
|
|
174
|
-
agentWatching: "Agent is watching",
|
|
175
|
-
agentWatchingTooltip: "The selected element is synced to your agent in real time.",
|
|
176
|
-
agentNotWatching: "Agent not watching",
|
|
177
|
-
agentNotWatchingTooltip: "Lost connection to the dev server, so your agent can no longer see the selected element. Restart the dev server to restore the connection.",
|
|
178
|
-
contentSection: "Content",
|
|
179
|
-
typographySection: "Typography",
|
|
180
|
-
colorSection: "Color",
|
|
181
|
-
textColor: "Text",
|
|
182
|
-
backgroundColor: "Background",
|
|
183
|
-
imageSection: "Image",
|
|
184
|
-
imagePlaceholderSection: "Image placeholder",
|
|
185
|
-
elementTextPlaceholder: "Element text",
|
|
186
|
-
sizeLabel: "Size",
|
|
187
|
-
weightLabel: "Weight",
|
|
188
|
-
weightLight: "Light · 300",
|
|
189
|
-
weightRegular: "Regular · 400",
|
|
190
|
-
weightMedium: "Medium · 500",
|
|
191
|
-
weightSemibold: "Semibold · 600",
|
|
192
|
-
weightBold: "Bold · 700",
|
|
193
|
-
weightExtrabold: "Extrabold · 800",
|
|
194
|
-
styleLabel: "Style",
|
|
195
|
-
boldAria: "Bold",
|
|
196
|
-
italicAria: "Italic",
|
|
197
|
-
lineHeightLabel: "Line height",
|
|
198
|
-
trackingLabel: "Tracking",
|
|
199
|
-
alignLabel: "Align",
|
|
200
|
-
clearAria: "Clear",
|
|
201
|
-
replace: "Replace…",
|
|
202
|
-
replaceImageDialogTitle: "Replace image",
|
|
203
|
-
replaceImageDescription: "Pick an asset from {path}.",
|
|
204
|
-
pickerLoading: "Loading…",
|
|
205
|
-
pickerEmpty: "No images in this slide's assets folder yet. Add some from the Assets tab.",
|
|
206
|
-
placeholderHintLabel: "Hint:",
|
|
207
|
-
crop: "Crop…",
|
|
208
|
-
cropDialogTitle: "Crop image",
|
|
209
|
-
cropDialogDescription: "Drag the frame to choose what stays visible.",
|
|
210
|
-
cropFitCover: "Fill",
|
|
211
|
-
cropFitContain: "Fit",
|
|
212
|
-
cropApply: "Apply",
|
|
213
|
-
cropResetAria: "Reset crop",
|
|
214
|
-
leaveComment: "Leave a comment",
|
|
215
|
-
commentPlaceholder: "Describe a change for the agent…",
|
|
216
|
-
commentShortcutHint: "⌘/ to focus · ⌘↵ to add",
|
|
217
|
-
addComment: "Add comment",
|
|
218
|
-
unsavedChanges: {
|
|
219
|
-
one: "{count} unsaved change",
|
|
220
|
-
other: "{count} unsaved changes"
|
|
221
|
-
},
|
|
222
|
-
commentsCount: {
|
|
223
|
-
one: "{count} comment",
|
|
224
|
-
other: "{count} comments"
|
|
225
|
-
},
|
|
226
|
-
commentLineLabel: "line {n}",
|
|
227
|
-
commentsEmpty: "No comments yet. Toggle Inspect and click a slide element.",
|
|
228
|
-
commentsApplyHintPrefix: "Run ",
|
|
229
|
-
commentsApplyHintSuffix: " in your agent to apply these.",
|
|
230
|
-
commentDeleteAria: "Delete",
|
|
231
|
-
saveFailed: "Couldn't save:"
|
|
232
|
-
},
|
|
233
|
-
stylePanel: {
|
|
234
|
-
designTokens: "Design tokens",
|
|
235
|
-
draftBadge: "draft",
|
|
236
|
-
unsavedTitle: "Unsaved",
|
|
237
|
-
closePanelAria: "Close design panel",
|
|
238
|
-
colorsSection: "Colors",
|
|
239
|
-
typographySection: "Typography",
|
|
240
|
-
shapeSection: "Shape",
|
|
241
|
-
backgroundLabel: "Background",
|
|
242
|
-
textLabel: "Text",
|
|
243
|
-
accentLabel: "Accent",
|
|
244
|
-
displayFontLabel: "Display",
|
|
245
|
-
bodyFontLabel: "Body",
|
|
246
|
-
heroLabel: "Hero",
|
|
247
|
-
bodyLabel: "Body",
|
|
248
|
-
radiusLabel: "Radius",
|
|
249
|
-
designToggle: "Design",
|
|
250
|
-
designToggleTitle: "Design tokens",
|
|
251
|
-
fontPresetCustom: "Custom…",
|
|
252
|
-
shuffleAria: "Shuffle design",
|
|
253
|
-
shuffleTitle: "Shuffle for inspiration"
|
|
254
|
-
},
|
|
255
|
-
asset: {
|
|
256
|
-
devOnlyMessage: "Asset management is only available in dev mode.",
|
|
257
|
-
sectionAria: "Slide assets",
|
|
258
|
-
eyebrow: "Assets",
|
|
259
|
-
scopeSlide: "This slide",
|
|
260
|
-
scopeGlobal: "Global",
|
|
261
|
-
fileCount: {
|
|
262
|
-
one: "{count} file",
|
|
263
|
-
other: "{count} files"
|
|
264
|
-
},
|
|
265
|
-
usageUnused: "Unused",
|
|
266
|
-
searchLogos: "Search logos",
|
|
267
|
-
upload: "Upload",
|
|
268
|
-
dropToUpload: "Drop to upload",
|
|
269
|
-
loading: "Loading…",
|
|
270
|
-
noAssetsYet: "No assets yet",
|
|
271
|
-
noAssetsHintPrefix: "Drop files anywhere here, or use ",
|
|
272
|
-
noAssetsHintSuffix: ".",
|
|
273
|
-
nameAlreadyExists: "A file with that name already exists.",
|
|
274
|
-
previewAria: "Preview {name}",
|
|
275
|
-
actionsAria: "Actions for {name}",
|
|
276
|
-
previewMenuItem: "Preview",
|
|
277
|
-
renameMenuItem: "Rename",
|
|
278
|
-
deleteMenuItem: "Delete",
|
|
279
|
-
conflictTitle: "File already exists",
|
|
280
|
-
conflictDescription: "{name} is already in the assets folder.",
|
|
281
|
-
conflictReplace: "Replace",
|
|
282
|
-
conflictRenameCopy: "Rename copy",
|
|
283
|
-
deleteAssetTitle: "Delete asset",
|
|
284
|
-
deleteAssetDescription: "Delete {name}? Imports referencing this file in the slide will break.",
|
|
285
|
-
deleteAssetInUseDescription: "{name} is used in {count} place(s) across {slides} slide(s).",
|
|
286
|
-
deleteAssetInUseHint: "Deleting will revert these usages back to image placeholders.",
|
|
287
|
-
deleteAndRevert: "Delete & revert",
|
|
288
|
-
toastRevertFailed: "Couldn't revert usage in {slideId}",
|
|
289
|
-
toastDeletedWithRevert: "Deleted {name} and reverted {count} usage(s)",
|
|
290
|
-
noPreview: "No preview available",
|
|
291
|
-
importHintComment: "import asset from ",
|
|
292
|
-
importHintSemi: ";",
|
|
293
|
-
logoSearchTitle: "Search logos",
|
|
294
|
-
logoSearchPoweredByPrefix: "Powered by ",
|
|
295
|
-
logoSearchPlaceholder: "Search by brand…",
|
|
296
|
-
logoSearchErrorTitle: "Couldn't reach svgl",
|
|
297
|
-
logoSearchErrorBody: "Check your connection and try again.",
|
|
298
|
-
logoSearchNoResults: "No logos for \"{query}\"",
|
|
299
|
-
logoSearchEmpty: "No logos available",
|
|
300
|
-
logoSearchEmptyHintPrefix: "Try a different brand name, or browse the full catalog at ",
|
|
301
|
-
logoSearchEmptyHintSuffix: ".",
|
|
302
|
-
logoVariantLight: "Light",
|
|
303
|
-
logoVariantDark: "Dark",
|
|
304
|
-
toastUploadFailed: "Upload failed ({status})",
|
|
305
|
-
toastReplaced: "Replaced {name}",
|
|
306
|
-
toastUploadedAs: "Uploaded as {name}",
|
|
307
|
-
toastUploaded: "Uploaded {name}",
|
|
308
|
-
toastRenameFailed: "Rename failed ({status})",
|
|
309
|
-
toastRenamed: "Renamed to {name}",
|
|
310
|
-
toastDeleteFailed: "Delete failed ({status})",
|
|
311
|
-
toastDeleted: "Deleted {name}",
|
|
312
|
-
toastDownloadFailed: "Failed to download logo",
|
|
313
|
-
toastSearchFailed: "Search failed"
|
|
314
|
-
},
|
|
315
|
-
thumbnailRail: {
|
|
316
|
-
pages: "Pages",
|
|
317
|
-
goToPageAria: "Go to page {n}",
|
|
318
|
-
duplicatePage: "Duplicate",
|
|
319
|
-
deletePage: "Delete",
|
|
320
|
-
pageActionsAria: "Page {n} actions",
|
|
321
|
-
toastDuplicated: "Duplicated page {n}",
|
|
322
|
-
toastDeleted: "Deleted page {n}",
|
|
323
|
-
toastDuplicateFailed: "Could not duplicate page",
|
|
324
|
-
toastDeleteFailed: "Could not delete page",
|
|
325
|
-
resizeRail: "Resize thumbnail rail"
|
|
326
|
-
},
|
|
327
|
-
pdfToast: {
|
|
328
|
-
title: "Exporting PDF",
|
|
329
|
-
processing: "Processing page {current} of {total}",
|
|
330
|
-
printing: "Opening print dialog…",
|
|
331
|
-
done: "Done"
|
|
332
|
-
},
|
|
333
|
-
themeToggle: {
|
|
334
|
-
toggleAria: "Toggle theme",
|
|
335
|
-
title: "Theme",
|
|
336
|
-
light: "Light",
|
|
337
|
-
dark: "Dark",
|
|
338
|
-
system: "System"
|
|
339
|
-
},
|
|
340
|
-
clickNav: {
|
|
341
|
-
prevAria: "Previous page",
|
|
342
|
-
nextAria: "Next page"
|
|
343
|
-
},
|
|
344
|
-
imagePlaceholder: {
|
|
345
|
-
dropOverlay: "Drop image to use here",
|
|
346
|
-
uploading: "Uploading…",
|
|
347
|
-
uploadFailed: "Couldn't upload image"
|
|
348
|
-
},
|
|
349
|
-
notesDrawer: {
|
|
350
|
-
toggle: "Notes",
|
|
351
|
-
pageLabel: "page {n}/{total}",
|
|
352
|
-
placeholder: "Write speaker notes for this slide…",
|
|
353
|
-
statusSaving: "Saving…",
|
|
354
|
-
statusSaved: "Saved",
|
|
355
|
-
statusError: "Save failed: {msg}"
|
|
356
|
-
},
|
|
357
|
-
themes: {
|
|
358
|
-
title: "Themes",
|
|
359
|
-
noThemesTitle: "No themes yet",
|
|
360
|
-
noThemesHintPrefix: "Run ",
|
|
361
|
-
noThemesHintSuffix: " to author one — a markdown file under themes/ plus a sibling demo slide.",
|
|
362
|
-
noDemoYet: "No demo yet",
|
|
363
|
-
noDemoHintPrefix: "Re-run ",
|
|
364
|
-
noDemoHintSuffix: " for this theme to generate a preview slide.",
|
|
365
|
-
backToGallery: "Back to themes",
|
|
366
|
-
pageOf: "page {n}/{total}",
|
|
367
|
-
nextPageAria: "Next page",
|
|
368
|
-
prevPageAria: "Previous page",
|
|
369
|
-
openThemeAria: "Open theme {name}",
|
|
370
|
-
usedBy: "Slides using this theme",
|
|
371
|
-
usedByEmpty: "No slides use this theme yet.",
|
|
372
|
-
expandPromptAria: "Expand prompt",
|
|
373
|
-
collapsePromptAria: "Collapse prompt"
|
|
374
|
-
}
|
|
375
|
-
};
|
|
376
|
-
|
|
377
|
-
//#endregion
|
|
378
|
-
export { en };
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { useLocale } from '@/lib/use-locale';
|
|
2
|
-
import { useInspector } from './inspector/inspector-provider';
|
|
3
|
-
|
|
4
|
-
type Props = {
|
|
5
|
-
onPrev: () => void;
|
|
6
|
-
onNext: () => void;
|
|
7
|
-
canPrev: boolean;
|
|
8
|
-
canNext: boolean;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export function ClickNavZones({ onPrev, onNext, canPrev, canNext }: Props) {
|
|
12
|
-
const { active } = useInspector();
|
|
13
|
-
const t = useLocale();
|
|
14
|
-
if (active) return null;
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<>
|
|
18
|
-
<button
|
|
19
|
-
type="button"
|
|
20
|
-
aria-label={t.clickNav.prevAria}
|
|
21
|
-
onClick={onPrev}
|
|
22
|
-
disabled={!canPrev}
|
|
23
|
-
data-inspector-ui
|
|
24
|
-
className="absolute inset-y-0 left-0 z-20 w-[18%] min-w-12 md:hidden"
|
|
25
|
-
/>
|
|
26
|
-
<button
|
|
27
|
-
type="button"
|
|
28
|
-
aria-label={t.clickNav.nextAria}
|
|
29
|
-
onClick={onNext}
|
|
30
|
-
disabled={!canNext}
|
|
31
|
-
data-inspector-ui
|
|
32
|
-
className="absolute inset-y-0 right-0 z-20 w-[18%] min-w-12 md:hidden"
|
|
33
|
-
/>
|
|
34
|
-
</>
|
|
35
|
-
);
|
|
36
|
-
}
|