@manifest-editor/components 1.3.1 → 1.4.1

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/index.js CHANGED
@@ -5,32 +5,27 @@ import "iiif-browser/dist/index.css";
5
5
 
6
6
  // src/ActionButton.tsx
7
7
  import { Button } from "react-aria-components";
8
-
9
- // src/utils.ts
10
- import { clsx } from "clsx";
11
8
  import { twMerge } from "tailwind-merge";
12
- var cn = (...inputs) => {
13
- return twMerge(clsx(inputs));
14
- };
15
-
16
- // src/ActionButton.tsx
17
9
  import { jsx } from "react/jsx-runtime";
18
10
  function ActionButton({
19
11
  className: className2,
20
12
  primary,
21
13
  center,
14
+ large,
22
15
  children,
23
16
  ...props
24
17
  }) {
25
18
  return /* @__PURE__ */ jsx(
26
19
  Button,
27
20
  {
28
- className: cn(
21
+ className: (t) => twMerge(
29
22
  //
30
- "border-none flex gap-1 items-center px-2 py-1 bg-gray-100 text-me-primary-500 text-sm rounded hover:bg-gray-200",
23
+ "border-none flex gap-1 items-center bg-gray-100 text-me-primary-500 text-sm rounded hover:bg-gray-200",
31
24
  primary ? "bg-me-primary-500 text-white hover:bg-me-primary-600" : "",
32
25
  center ? "place-content-center" : "",
33
- className2
26
+ large ? "px-4 py-2" : "px-2 py-1",
27
+ t.isDisabled ? "opacity-70 cursor-not-allowed pointer-events-none" : "",
28
+ typeof className2 === "string" ? className2 : className2?.(t)
34
29
  ),
35
30
  ...props,
36
31
  children
@@ -38,25 +33,39 @@ function ActionButton({
38
33
  );
39
34
  }
40
35
 
36
+ // src/AccessibilityButton.tsx
37
+ import { Button as Button2 } from "react-aria-components";
38
+ import { jsx as jsx2 } from "react/jsx-runtime";
39
+ function AccessibilityButton({ className: className2, children, ...props }) {
40
+ return /* @__PURE__ */ jsx2(Button2, { className: ["sr-only focus:not-sr-only p-2 bg-white text-black", className2].join(" "), ...props, children });
41
+ }
42
+
43
+ // src/utils.ts
44
+ import { clsx } from "clsx";
45
+ import { twMerge as twMerge2 } from "tailwind-merge";
46
+ var cn = (...inputs) => {
47
+ return twMerge2(clsx(inputs));
48
+ };
49
+
41
50
  // src/Tooltip.tsx
42
- import * as React from "react";
43
51
  import {
44
- useFloating,
52
+ FloatingPortal,
45
53
  autoUpdate,
46
- offset,
47
54
  flip,
55
+ offset,
48
56
  shift,
49
- useHover,
50
- useFocus,
51
57
  useDismiss,
52
- useRole,
58
+ useFloating,
59
+ useFocus,
60
+ useHover,
53
61
  useInteractions,
54
62
  useMergeRefs,
55
- FloatingPortal
63
+ useRole
56
64
  } from "@floating-ui/react";
57
- import { Button as Button2 } from "react-aria-components";
58
- import { twMerge as twMerge2 } from "tailwind-merge";
59
- import { jsx as jsx2 } from "react/jsx-runtime";
65
+ import * as React from "react";
66
+ import { Button as Button3 } from "react-aria-components";
67
+ import { twMerge as twMerge3 } from "tailwind-merge";
68
+ import { jsx as jsx3 } from "react/jsx-runtime";
60
69
  function useTooltip({
61
70
  initialOpen = false,
62
71
  placement = "top",
@@ -110,12 +119,9 @@ var useTooltipContext = () => {
110
119
  }
111
120
  return context;
112
121
  };
113
- function Tooltip({
114
- children,
115
- ...options
116
- }) {
122
+ function Tooltip({ children, ...options }) {
117
123
  const tooltip = useTooltip(options);
118
- return /* @__PURE__ */ jsx2(TooltipContext.Provider, { value: tooltip, children });
124
+ return /* @__PURE__ */ jsx3(TooltipContext.Provider, { value: tooltip, children });
119
125
  }
120
126
  var TooltipTrigger = React.forwardRef(function TooltipTrigger2({ children, asChild = false, ...props }, propRef) {
121
127
  const context = useTooltipContext();
@@ -132,8 +138,8 @@ var TooltipTrigger = React.forwardRef(function TooltipTrigger2({ children, asChi
132
138
  })
133
139
  );
134
140
  }
135
- return /* @__PURE__ */ jsx2(
136
- Button2,
141
+ return /* @__PURE__ */ jsx3(
142
+ Button3,
137
143
  {
138
144
  ref,
139
145
  "data-state": context.open ? "open" : "closed",
@@ -142,12 +148,12 @@ var TooltipTrigger = React.forwardRef(function TooltipTrigger2({ children, asChi
142
148
  }
143
149
  );
144
150
  });
145
- var TooltipContent = React.forwardRef(function TooltipContent2({ style, ...props }, propRef) {
151
+ var TooltipContent = React.forwardRef(function TooltipContent2({ style, root, ...props }, propRef) {
146
152
  const context = useTooltipContext();
147
153
  const ref = useMergeRefs([context.refs.setFloating, propRef]);
148
154
  if (!context.open)
149
155
  return null;
150
- return /* @__PURE__ */ jsx2(FloatingPortal, { children: /* @__PURE__ */ jsx2(
156
+ return /* @__PURE__ */ jsx3(FloatingPortal, { root, children: /* @__PURE__ */ jsx3(
151
157
  "div",
152
158
  {
153
159
  ref,
@@ -160,36 +166,34 @@ var TooltipContent = React.forwardRef(function TooltipContent2({ style, ...props
160
166
  ) });
161
167
  });
162
168
  function DefaultTooltipContent(props) {
163
- return /* @__PURE__ */ jsx2(
169
+ return /* @__PURE__ */ jsx3(
164
170
  TooltipContent,
165
171
  {
166
- className: twMerge2(
167
- "bg-me-gray-900 text-white text-sm px-3 py-2 rounded-lg opacity-90 z-50",
168
- props.className
169
- ),
172
+ root: props.root,
173
+ className: twMerge3("bg-me-gray-900 text-white text-sm px-3 py-2 rounded opacity-90 z-50", props.className),
170
174
  children: props.children
171
175
  }
172
176
  );
173
177
  }
174
178
 
175
179
  // src/Sidebar.tsx
176
- import { jsx as jsx3, jsxs } from "react/jsx-runtime";
180
+ import { jsx as jsx4, jsxs } from "react/jsx-runtime";
177
181
  function Sidebar({ children }) {
178
- return /* @__PURE__ */ jsx3("div", { className: "w-full h-full flex flex-col overflow-hidden", children });
182
+ return /* @__PURE__ */ jsx4("div", { className: "w-full h-full flex flex-col overflow-hidden", children });
179
183
  }
180
184
  function SidebarContent({
181
185
  children,
182
186
  className: className2,
183
187
  padding
184
188
  }) {
185
- return /* @__PURE__ */ jsx3("div", { className: cn("flex-1 min-h-0 overflow-y-auto pb-64", className2, padding && "px-3 pt-3"), children });
189
+ return /* @__PURE__ */ jsx4("div", { className: cn("flex-1 min-h-0 overflow-y-auto pb-64", className2, padding && "px-3 pt-3"), children });
186
190
  }
187
191
  function SidebarHeader(props) {
188
192
  const { actions, title } = props;
189
193
  return /* @__PURE__ */ jsxs("div", { className: "bg-me-gray-100 h-12 flex items-center px-3 z-10 text-black border-b-me-gray-300 border-b flex-shrink-0", children: [
190
- /* @__PURE__ */ jsx3("div", { className: "flex-1", children: title }),
191
- /* @__PURE__ */ jsx3("div", { className: "ml-auto flex gap-2 items-center", children: actions?.map((action, index) => /* @__PURE__ */ jsxs(Tooltip, { placement: "bottom", children: [
192
- /* @__PURE__ */ jsx3(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx3(
194
+ /* @__PURE__ */ jsx4("div", { className: "flex-1", children: title }),
195
+ /* @__PURE__ */ jsx4("div", { className: "ml-auto flex gap-2 items-center", children: actions?.map((action, index) => /* @__PURE__ */ jsxs(Tooltip, { placement: "bottom", children: [
196
+ /* @__PURE__ */ jsx4(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx4(
193
197
  "button",
194
198
  {
195
199
  className: cn(
@@ -205,7 +209,7 @@ function SidebarHeader(props) {
205
209
  },
206
210
  index
207
211
  ) }),
208
- !action.disabled ? /* @__PURE__ */ jsx3(DefaultTooltipContent, { children: action.title }) : null
212
+ !action.disabled ? /* @__PURE__ */ jsx4(DefaultTooltipContent, { children: action.title }) : null
209
213
  ] }, index)) })
210
214
  ] });
211
215
  }
@@ -214,9 +218,9 @@ function SidebarHeader(props) {
214
218
  import { Fragment } from "react/jsx-runtime";
215
219
 
216
220
  // src/PanelSideMenuItem.tsx
217
- import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
221
+ import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
218
222
  function PanelSideMenuItem(props) {
219
- return /* @__PURE__ */ jsx4(Tooltip, { placement: "right", children: /* @__PURE__ */ jsx4(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs2(
223
+ return /* @__PURE__ */ jsx5(Tooltip, { placement: "right", children: /* @__PURE__ */ jsx5(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs2(
220
224
  "button",
221
225
  {
222
226
  className: cn(
@@ -227,18 +231,18 @@ function PanelSideMenuItem(props) {
227
231
  onMouseDown: props.onClick,
228
232
  children: [
229
233
  props.icon,
230
- /* @__PURE__ */ jsx4(TooltipContent, { className: "bg-me-gray-900 text-white text-sm px-3 py-2 rounded-lg opacity-90 z-50", children: props.label })
234
+ /* @__PURE__ */ jsx5(TooltipContent, { className: "bg-me-gray-900 text-white text-sm px-3 py-2 rounded opacity-90 z-50", children: props.label })
231
235
  ]
232
236
  }
233
237
  ) }) });
234
238
  }
235
239
 
236
240
  // src/PanelSideMenu.tsx
237
- import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
241
+ import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
238
242
  function PanelSideMenu(props) {
239
- return /* @__PURE__ */ jsx5("div", { className: "bg-white border-me-gray-300 border-t border-r flex flex-col w-12 pb-2", "data-open": props.open, children: props.items.map((panel) => /* @__PURE__ */ jsxs3(Fragment, { children: [
240
- panel.divide ? /* @__PURE__ */ jsx5("div", { className: "flex-1 block w-2 min-h-1" }) : null,
241
- /* @__PURE__ */ jsx5(
243
+ return /* @__PURE__ */ jsx6("div", { className: "bg-white border-me-gray-300 border-t border-r flex flex-col w-12 pb-2", "data-open": props.open, children: props.items.map((panel) => /* @__PURE__ */ jsxs3(Fragment, { children: [
244
+ panel.divide ? /* @__PURE__ */ jsx6("div", { className: "flex-1 block w-2 min-h-1" }) : null,
245
+ /* @__PURE__ */ jsx6(
242
246
  PanelSideMenuItem,
243
247
  {
244
248
  label: panel.label,
@@ -252,12 +256,12 @@ function PanelSideMenu(props) {
252
256
  }
253
257
 
254
258
  // src/ThumbnailGridContainer.tsx
255
- import { jsx as jsx6 } from "react/jsx-runtime";
259
+ import { jsx as jsx7 } from "react/jsx-runtime";
256
260
  function ThumbnailGridContainer(props) {
257
261
  if (props.wide) {
258
- return /* @__PURE__ */ jsx6("div", { className: "grid grid-md gap-4 p-4 overflow-y-auto", children: props.children });
262
+ return /* @__PURE__ */ jsx7("div", { className: "grid grid-md gap-4 p-4 overflow-y-auto", children: props.children });
259
263
  }
260
- return /* @__PURE__ */ jsx6("div", { className: "grid grid-cols-2 gap-4 p-4", children: props.children });
264
+ return /* @__PURE__ */ jsx7("div", { className: "grid grid-cols-2 gap-4 p-4", children: props.children });
261
265
  }
262
266
 
263
267
  // src/LazyThumbnail.tsx
@@ -273,12 +277,12 @@ import {
273
277
  useThumbnail
274
278
  } from "react-iiif-vault";
275
279
  import { LazyLoadComponent } from "react-lazy-load-image-component";
276
- import { twMerge as twMerge3 } from "tailwind-merge";
280
+ import { twMerge as twMerge4 } from "tailwind-merge";
277
281
 
278
282
  // src/Spinner.tsx
279
- import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
283
+ import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
280
284
  function Spinner(props) {
281
- return /* @__PURE__ */ jsx7(
285
+ return /* @__PURE__ */ jsx8(
282
286
  "svg",
283
287
  {
284
288
  width: "1em",
@@ -288,8 +292,8 @@ function Spinner(props) {
288
292
  stroke: "currentColor",
289
293
  ...props,
290
294
  children: /* @__PURE__ */ jsxs4("g", { transform: "translate(2 2)", strokeWidth: 5, fill: "none", fillRule: "evenodd", children: [
291
- /* @__PURE__ */ jsx7("circle", { strokeOpacity: 0.5, cx: 18, cy: 18, r: 18 }),
292
- /* @__PURE__ */ jsx7("path", { d: "M36 18c0-9.94-8.06-18-18-18", children: /* @__PURE__ */ jsx7(
295
+ /* @__PURE__ */ jsx8("circle", { strokeOpacity: 0.5, cx: 18, cy: 18, r: 18 }),
296
+ /* @__PURE__ */ jsx8("path", { d: "M36 18c0-9.94-8.06-18-18-18", children: /* @__PURE__ */ jsx8(
293
297
  "animateTransform",
294
298
  {
295
299
  attributeName: "transform",
@@ -306,7 +310,7 @@ function Spinner(props) {
306
310
  }
307
311
 
308
312
  // src/icons/TextIcon.tsx
309
- import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
313
+ import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
310
314
  function TextIcon(props) {
311
315
  return /* @__PURE__ */ jsxs5(
312
316
  "svg",
@@ -317,8 +321,8 @@ function TextIcon(props) {
317
321
  viewBox: "0 0 24 24",
318
322
  ...props,
319
323
  children: [
320
- /* @__PURE__ */ jsx8("title", { children: "Text" }),
321
- /* @__PURE__ */ jsx8(
324
+ /* @__PURE__ */ jsx9("title", { children: "Text" }),
325
+ /* @__PURE__ */ jsx9(
322
326
  "path",
323
327
  {
324
328
  fill: "currentColor",
@@ -331,12 +335,12 @@ function TextIcon(props) {
331
335
  }
332
336
 
333
337
  // src/LazyThumbnail.tsx
334
- import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
338
+ import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
335
339
  function LazyThumbnail({
336
340
  cover,
337
341
  fade = true
338
342
  }) {
339
- return /* @__PURE__ */ jsx9(LazyLoadComponent, { children: /* @__PURE__ */ jsx9(LazyThumbnailInner, { cover, fade }) });
343
+ return /* @__PURE__ */ jsx10(LazyLoadComponent, { children: /* @__PURE__ */ jsx10(LazyThumbnailInner, { cover, fade }) });
340
344
  }
341
345
  var renderCache = /* @__PURE__ */ new Map();
342
346
  function LazyThumbnailInner({
@@ -370,7 +374,7 @@ function LazyThumbnailInner({
370
374
  [isCached]
371
375
  );
372
376
  return /* @__PURE__ */ jsxs6("div", { className: `w-full h-full relative`, children: [
373
- thumbnail?.id ? /* @__PURE__ */ jsx9(
377
+ thumbnail?.id ? /* @__PURE__ */ jsx10(
374
378
  "img",
375
379
  {
376
380
  onLoad: () => setIsLoading(false),
@@ -379,15 +383,15 @@ function LazyThumbnailInner({
379
383
  alt: "",
380
384
  className: `w-full h-full ${cover ? "object-cover" : "object-contain"} ${!isLoading ? isCached ? "" : "animate-fadeIn" : "opacity-0"}`
381
385
  }
382
- ) : /* @__PURE__ */ jsx9(ThumbnailFallback, {}),
383
- !thumbnail?.id || isLoading ? /* @__PURE__ */ jsx9(
386
+ ) : /* @__PURE__ */ jsx10(ThumbnailFallback, {}),
387
+ !thumbnail?.id || isLoading ? /* @__PURE__ */ jsx10(
384
388
  "div",
385
389
  {
386
- className: twMerge3(
390
+ className: twMerge4(
387
391
  "absolute inset-0 flex items-center justify-center bg-me-gray-100 text-2xl z-10",
388
392
  fade && "animate-fadeIn"
389
393
  ),
390
- children: /* @__PURE__ */ jsx9(Spinner, {})
394
+ children: /* @__PURE__ */ jsx10(Spinner, {})
391
395
  }
392
396
  ) : null
393
397
  ] });
@@ -395,9 +399,9 @@ function LazyThumbnailInner({
395
399
  function ThumbnailFallback() {
396
400
  const [strategy] = useRenderingStrategy();
397
401
  if (strategy.type === "textual-content") {
398
- return /* @__PURE__ */ jsx9("div", { className: "text-black/30 flex items-center justify-center h-full bg-me-gray-100 animate-fadeInDelayed absolute inset-0 z-20", children: /* @__PURE__ */ jsx9(TextIcon, { className: "w-16 h-16" }) });
402
+ return /* @__PURE__ */ jsx10("div", { className: "text-black/30 flex items-center justify-center h-full bg-me-gray-100 animate-fadeInDelayed absolute inset-0 z-20", children: /* @__PURE__ */ jsx10(TextIcon, { className: "w-16 h-16" }) });
399
403
  }
400
- return /* @__PURE__ */ jsx9("div", { className: "text-black/30 flex items-center justify-center h-full bg-me-gray-100 animate-fadeInDelayed absolute inset-0 z-20", children: "No thumbnail" });
404
+ return /* @__PURE__ */ jsx10("div", { className: "text-black/30 flex items-center justify-center h-full bg-me-gray-100 animate-fadeInDelayed absolute inset-0 z-20", children: "No thumbnail" });
401
405
  }
402
406
 
403
407
  // src/CanvasThumbnailGridItem.tsx
@@ -405,18 +409,18 @@ import { CanvasContext } from "react-iiif-vault";
405
409
 
406
410
  // src/CanvasLabel.tsx
407
411
  import { LocaleString, useCanvas as useCanvas2 } from "react-iiif-vault";
408
- import { jsx as jsx10 } from "react/jsx-runtime";
412
+ import { jsx as jsx11 } from "react/jsx-runtime";
409
413
  function CanvasLabel(props) {
410
414
  const canvas = useCanvas2();
411
415
  if (!canvas)
412
416
  return null;
413
- return /* @__PURE__ */ jsx10(LocaleString, { className: props.className, as: props.as, children: canvas.label });
417
+ return /* @__PURE__ */ jsx11(LocaleString, { className: props.className, as: props.as, children: canvas.label });
414
418
  }
415
419
 
416
420
  // src/Card3D.tsx
417
421
  import { useLayoutEffect as useLayoutEffect2, useRef as useRef2 } from "react";
418
- import { twMerge as twMerge4 } from "tailwind-merge";
419
- import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
422
+ import { twMerge as twMerge5 } from "tailwind-merge";
423
+ import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
420
424
  function Card3D({
421
425
  className: className2,
422
426
  shouldTranslate,
@@ -491,7 +495,7 @@ function Card3D({
491
495
  "div",
492
496
  {
493
497
  ref: outer,
494
- className: twMerge4(
498
+ className: twMerge5(
495
499
  //
496
500
  "relative transition-all hover:duration-50",
497
501
  shouldTranslate && "hover:shadow-xl",
@@ -500,7 +504,7 @@ function Card3D({
500
504
  ...props,
501
505
  children: [
502
506
  children,
503
- /* @__PURE__ */ jsx11(
507
+ /* @__PURE__ */ jsx12(
504
508
  "div",
505
509
  {
506
510
  className: "pointer-events-none absolute inset-0 transition-all",
@@ -516,10 +520,10 @@ function Card3D({
516
520
  }
517
521
 
518
522
  // src/CanvasThumbnailGridItem.tsx
519
- import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
523
+ import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
520
524
  function CanvasThumbnailGridItem(props) {
521
- return /* @__PURE__ */ jsx12(CanvasContext, { canvas: props.id, children: /* @__PURE__ */ jsxs8("div", { onMouseDown: props.onClick, className: "flex flex-col", "data-canvas-selected": props.selected, children: [
522
- /* @__PURE__ */ jsx12("div", { className: "bg-me-gray-100 w-full aspect-square flex-1 overflow-hidden rounded", children: /* @__PURE__ */ jsx12(
525
+ return /* @__PURE__ */ jsx13(CanvasContext, { canvas: props.id, children: /* @__PURE__ */ jsxs8("div", { onMouseDown: props.onClick, className: "flex flex-col", "data-canvas-selected": props.selected, children: [
526
+ /* @__PURE__ */ jsx13("div", { className: "bg-me-gray-100 w-full aspect-square flex-1 overflow-hidden rounded", children: /* @__PURE__ */ jsx13(
523
527
  Card3D,
524
528
  {
525
529
  "data-canvas-selected": props.active,
@@ -528,87 +532,68 @@ function CanvasThumbnailGridItem(props) {
528
532
  "border-2 border-transparent p-1 w-full h-full rounded",
529
533
  props.selected && "border-me-primary-500"
530
534
  ),
531
- children: /* @__PURE__ */ jsx12(LazyThumbnail, {})
535
+ children: /* @__PURE__ */ jsx13(LazyThumbnail, {})
532
536
  }
533
537
  ) }),
534
- /* @__PURE__ */ jsx12(CanvasLabel, { className: "text-sm text-center truncate mt-1", as: "div" })
538
+ /* @__PURE__ */ jsx13(CanvasLabel, { className: "text-sm text-center truncate mt-1", as: "div" })
535
539
  ] }) });
536
540
  }
537
541
 
538
542
  // src/Modal.tsx
539
- import {
540
- CloseButton,
541
- Dialog,
542
- DialogPanel,
543
- DialogTitle
544
- } from "@headlessui/react";
545
- import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
546
- function Modal({
547
- id,
548
- title,
549
- open = true,
550
- onClose,
551
- actions,
552
- children
553
- }) {
554
- return /* @__PURE__ */ jsx13(Fragment2, { children: /* @__PURE__ */ jsxs9(
555
- Dialog,
556
- {
557
- open,
558
- onClose,
559
- id,
560
- className: "relative z-[500]",
561
- children: [
562
- /* @__PURE__ */ jsx13(
563
- "div",
564
- {
565
- className: `fixed inset-0 bg-black/30 animate-fadeIn z-[501]`,
566
- "aria-hidden": "true"
567
- }
568
- ),
569
- /* @__PURE__ */ jsx13("div", { className: "fixed inset-0 flex w-screen items-center justify-center p-4 z-[502]", children: /* @__PURE__ */ jsx13("div", { className: "relative p-4 w-full max-w-4xl max-h-full", children: /* @__PURE__ */ jsxs9(DialogPanel, { className: "relative bg-white rounded-lg overflow-hidden shadow-2xl max-h-[80vh] flex flex-col", children: [
570
- /* @__PURE__ */ jsxs9("div", { className: "flex items-center justify-between p-4 md:p-5 rounded-t-lg sticky top-0 bg-white", children: [
571
- /* @__PURE__ */ jsx13(DialogTitle, { className: "text-xl font-semibold text-gray-900 ", children: title }),
572
- /* @__PURE__ */ jsxs9(CloseButton, { className: "text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm w-8 h-8 ms-auto inline-flex justify-center items-center", children: [
573
- /* @__PURE__ */ jsx13(
574
- "svg",
543
+ import { CloseButton, Dialog, DialogPanel, DialogTitle } from "@headlessui/react";
544
+ import { createPortal } from "react-dom";
545
+ import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
546
+ function ModalBackSlot({ children }) {
547
+ const element = document.getElementById("modal-back-slot");
548
+ if (!element)
549
+ return null;
550
+ return createPortal(children, element);
551
+ }
552
+ function Modal({ id, title, open = true, onClose, actions, children }) {
553
+ return /* @__PURE__ */ jsx14(Fragment2, { children: /* @__PURE__ */ jsxs9(Dialog, { open, onClose, id, className: "relative z-[500]", children: [
554
+ /* @__PURE__ */ jsx14("div", { className: `fixed inset-0 bg-black/30 animate-fadeIn z-[501]`, "aria-hidden": "true" }),
555
+ /* @__PURE__ */ jsx14("div", { className: "fixed inset-0 flex w-screen items-center justify-center p-4 z-[502]", children: /* @__PURE__ */ jsx14("div", { className: "relative p-4 w-full max-w-4xl max-h-full", children: /* @__PURE__ */ jsxs9(DialogPanel, { className: "relative bg-white rounded-lg overflow-hidden shadow-2xl max-h-[80vh] flex flex-col", children: [
556
+ /* @__PURE__ */ jsxs9("div", { className: "flex items-center justify-between gap-3 p-4 rounded-t-lg sticky top-0 bg-white", children: [
557
+ /* @__PURE__ */ jsx14("div", { id: "modal-back-slot" }),
558
+ /* @__PURE__ */ jsx14(DialogTitle, { className: "text-xl font-semibold text-gray-900 ", children: title }),
559
+ /* @__PURE__ */ jsxs9(CloseButton, { className: "text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm w-8 h-8 ms-auto inline-flex justify-center items-center", children: [
560
+ /* @__PURE__ */ jsx14(
561
+ "svg",
562
+ {
563
+ className: "w-3 h-3",
564
+ "aria-hidden": "true",
565
+ xmlns: "http://www.w3.org/2000/svg",
566
+ fill: "none",
567
+ viewBox: "0 0 14 14",
568
+ children: /* @__PURE__ */ jsx14(
569
+ "path",
575
570
  {
576
- className: "w-3 h-3",
577
- "aria-hidden": "true",
578
- xmlns: "http://www.w3.org/2000/svg",
579
- fill: "none",
580
- viewBox: "0 0 14 14",
581
- children: /* @__PURE__ */ jsx13(
582
- "path",
583
- {
584
- stroke: "currentColor",
585
- strokeLinecap: "round",
586
- strokeLinejoin: "round",
587
- strokeWidth: "2",
588
- d: "m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6"
589
- }
590
- )
571
+ stroke: "currentColor",
572
+ strokeLinecap: "round",
573
+ strokeLinejoin: "round",
574
+ strokeWidth: "2",
575
+ d: "m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6"
591
576
  }
592
- ),
593
- /* @__PURE__ */ jsx13("span", { className: "sr-only", children: "Close" })
594
- ] })
595
- ] }),
596
- /* @__PURE__ */ jsx13("div", { className: "flex-1 min-h-0 overflow-y-auto flex flex-col", children }),
597
- actions ? /* @__PURE__ */ jsx13("div", { className: "flex items-center p-4 md:p-5 border-t border-gray-200 rounded-b justify-end", children: actions }) : null
598
- ] }) }) })
599
- ]
600
- }
601
- ) });
577
+ )
578
+ }
579
+ ),
580
+ /* @__PURE__ */ jsx14("span", { className: "sr-only", children: "Close" })
581
+ ] })
582
+ ] }),
583
+ /* @__PURE__ */ jsx14("div", { className: "flex-1 min-h-0 overflow-y-auto flex flex-col", children }),
584
+ actions ? /* @__PURE__ */ jsx14("div", { className: "flex items-center p-4 border-t border-gray-200 rounded-b justify-end", children: actions }) : null
585
+ ] }) }) })
586
+ ] }) });
602
587
  }
603
588
 
604
589
  // src/ControlButton.tsx
605
- import { jsx as jsx14 } from "react/jsx-runtime";
590
+ import { jsx as jsx15 } from "react/jsx-runtime";
606
591
  function ControlButton({
607
592
  children,
608
593
  className: className2,
609
594
  ...props
610
595
  }) {
611
- return /* @__PURE__ */ jsx14(
596
+ return /* @__PURE__ */ jsx15(
612
597
  "button",
613
598
  {
614
599
  className: cn(
@@ -622,9 +607,9 @@ function ControlButton({
622
607
  }
623
608
 
624
609
  // src/OpaqueControls.tsx
625
- import { jsx as jsx15 } from "react/jsx-runtime";
610
+ import { jsx as jsx16 } from "react/jsx-runtime";
626
611
  function OpaqueControls(props) {
627
- return /* @__PURE__ */ jsx15(
612
+ return /* @__PURE__ */ jsx16(
628
613
  "div",
629
614
  {
630
615
  className: cn("flex w-full p-0.5 opacity-0 transition-opacity duration-300 gap-2", props.active && "opacity-1"),
@@ -640,9 +625,9 @@ import {
640
625
  Tab as BaseTab,
641
626
  TabPanel as BaseTabPanel
642
627
  } from "react-aria-components";
643
- import { jsx as jsx16 } from "react/jsx-runtime";
628
+ import { jsx as jsx17 } from "react/jsx-runtime";
644
629
  function Tabs({ className: className2, children, ...props }) {
645
- return /* @__PURE__ */ jsx16(
630
+ return /* @__PURE__ */ jsx17(
646
631
  BaseTabs,
647
632
  {
648
633
  className: (state) => {
@@ -659,7 +644,7 @@ function TabList({
659
644
  children,
660
645
  ...props
661
646
  }) {
662
- return /* @__PURE__ */ jsx16(
647
+ return /* @__PURE__ */ jsx17(
663
648
  BaseTabList,
664
649
  {
665
650
  className: (state) => {
@@ -672,7 +657,7 @@ function TabList({
672
657
  );
673
658
  }
674
659
  function Tab({ className: className2, children, ...props }) {
675
- return /* @__PURE__ */ jsx16(
660
+ return /* @__PURE__ */ jsx17(
676
661
  BaseTab,
677
662
  {
678
663
  className: (state) => {
@@ -690,7 +675,7 @@ function Tab({ className: className2, children, ...props }) {
690
675
  );
691
676
  }
692
677
  function TabPanel({ className: className2, children, ...props }) {
693
- return /* @__PURE__ */ jsx16(
678
+ return /* @__PURE__ */ jsx17(
694
679
  BaseTabPanel,
695
680
  {
696
681
  className: (state) => {
@@ -705,10 +690,10 @@ function TabPanel({ className: className2, children, ...props }) {
705
690
 
706
691
  // src/CreatorGrid.tsx
707
692
  import { ListBox, ListBoxItem } from "react-aria-components";
708
- import { twMerge as twMerge5 } from "tailwind-merge";
709
- import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
693
+ import { twMerge as twMerge6 } from "tailwind-merge";
694
+ import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
710
695
  function CreatorGrid(props) {
711
- return /* @__PURE__ */ jsx17(
696
+ return /* @__PURE__ */ jsx18(
712
697
  ListBox,
713
698
  {
714
699
  orientation: "horizontal",
@@ -716,7 +701,7 @@ function CreatorGrid(props) {
716
701
  selectionMode: "single",
717
702
  items: props.items,
718
703
  className: "grid grid-sm gap-4 p-4 mb-8",
719
- children: (item) => /* @__PURE__ */ jsx17(CreatorGridItem, { ...item })
704
+ children: (item) => /* @__PURE__ */ jsx18(CreatorGridItem, { ...item })
720
705
  }
721
706
  );
722
707
  }
@@ -726,22 +711,22 @@ function CreatorGridItem(props) {
726
711
  {
727
712
  id: props.id,
728
713
  onAction: props.onClick,
729
- className: ($s) => twMerge5(
714
+ className: ($s) => twMerge6(
730
715
  "bg-white p-2 border-me-gray-300 rounded-md border hover:border-me-primary-500",
731
716
  $s.isFocused && "border-me-primary-500 outline-me-primary-500 outline-2"
732
717
  ),
733
718
  children: [
734
- /* @__PURE__ */ jsx17("div", { className: "rounded bg-me-gray-300 mb-2 flex items-center justify-center py-1 aspect-square", children: /* @__PURE__ */ jsx17("div", { className: "text-center [&>svg]:w-16 [&>svg]:h-16", children: props.icon }) }),
735
- /* @__PURE__ */ jsx17("div", { className: "text-center font-semibold text-sm", children: props.title }),
736
- /* @__PURE__ */ jsx17("div", { className: "text-sm text-center text-black/50", children: props.description })
719
+ /* @__PURE__ */ jsx18("div", { className: "rounded bg-me-gray-300 mb-2 flex items-center justify-center py-1 aspect-square", children: /* @__PURE__ */ jsx18("div", { className: "text-center [&>svg]:w-16 [&>svg]:h-16", children: props.icon }) }),
720
+ /* @__PURE__ */ jsx18("div", { className: "text-center font-semibold text-sm", children: props.title }),
721
+ /* @__PURE__ */ jsx18("div", { className: "text-sm text-center text-black/50", children: props.description })
737
722
  ]
738
723
  }
739
724
  );
740
725
  }
741
726
 
742
727
  // src/icons/DownloadIcon.tsx
743
- import { jsx as jsx18 } from "react/jsx-runtime";
744
- var DownloadIcon = (props) => /* @__PURE__ */ jsx18("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx18(
728
+ import { jsx as jsx19 } from "react/jsx-runtime";
729
+ var DownloadIcon = (props) => /* @__PURE__ */ jsx19("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx19(
745
730
  "path",
746
731
  {
747
732
  d: "M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z",
@@ -751,10 +736,10 @@ var DownloadIcon = (props) => /* @__PURE__ */ jsx18("svg", { xmlns: "http://www.
751
736
 
752
737
  // src/DownloadButton.tsx
753
738
  import { useId } from "react-aria";
754
- import { jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
739
+ import { jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
755
740
  function DownloadButton({ label, id: _id, getData, fileName, fileType }) {
756
741
  const id = useId(_id);
757
- return /* @__PURE__ */ jsx19(Tooltip, { placement: "bottom", children: /* @__PURE__ */ jsxs11(
742
+ return /* @__PURE__ */ jsx20(Tooltip, { placement: "bottom", children: /* @__PURE__ */ jsxs11(
758
743
  TooltipTrigger,
759
744
  {
760
745
  className: "bg-me-gray-100 hover:bg-me-primary-500 hover:text-white p-1 rounded-md text-me-primary-500 text-2xl",
@@ -762,8 +747,8 @@ function DownloadButton({ label, id: _id, getData, fileName, fileType }) {
762
747
  id,
763
748
  onPress: () => createDownload(getData(), fileName, fileType),
764
749
  children: [
765
- /* @__PURE__ */ jsx19(DownloadIcon, { "aria-labelledby": _id }),
766
- /* @__PURE__ */ jsx19(DefaultTooltipContent, { children: label })
750
+ /* @__PURE__ */ jsx20(DownloadIcon, { "aria-labelledby": _id }),
751
+ /* @__PURE__ */ jsx20(DefaultTooltipContent, { children: label })
767
752
  ]
768
753
  }
769
754
  ) });
@@ -783,11 +768,11 @@ function createDownload(data, fileName, fileType = "text/json") {
783
768
  }
784
769
 
785
770
  // src/AtlasBanner.tsx
786
- import { jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
771
+ import { jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
787
772
  function AtlasBanner({ children, controlsId }) {
788
773
  return /* @__PURE__ */ jsxs12("div", { className: "bg-me-gray-100 border-b text-black p-1 flex gap-4 items-center h-12", children: [
789
- /* @__PURE__ */ jsx20("div", { className: "px-4", children }),
790
- /* @__PURE__ */ jsx20("div", { id: controlsId || "atlas-controls", className: "flex gap-2" })
774
+ /* @__PURE__ */ jsx21("div", { className: "px-4", children }),
775
+ /* @__PURE__ */ jsx21("div", { id: controlsId || "atlas-controls", className: "flex gap-2" })
791
776
  ] });
792
777
  }
793
778
 
@@ -795,7 +780,7 @@ function AtlasBanner({ children, controlsId }) {
795
780
  import { RenderSvgEditorControls } from "react-iiif-vault";
796
781
 
797
782
  // src/icons/DrawIcon.tsx
798
- import { jsx as jsx21, jsxs as jsxs13 } from "react/jsx-runtime";
783
+ import { jsx as jsx22, jsxs as jsxs13 } from "react/jsx-runtime";
799
784
  var DrawIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs13(
800
785
  "svg",
801
786
  {
@@ -806,8 +791,8 @@ var DrawIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs13(
806
791
  "aria-labelledby": titleId,
807
792
  ...props,
808
793
  children: [
809
- title ? /* @__PURE__ */ jsx21("title", { id: titleId, children: title }) : null,
810
- /* @__PURE__ */ jsx21(
794
+ title ? /* @__PURE__ */ jsx22("title", { id: titleId, children: title }) : null,
795
+ /* @__PURE__ */ jsx22(
811
796
  "path",
812
797
  {
813
798
  fill: "currentColor",
@@ -819,7 +804,7 @@ var DrawIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs13(
819
804
  );
820
805
 
821
806
  // src/icons/PolygonIcon.tsx
822
- import { jsx as jsx22, jsxs as jsxs14 } from "react/jsx-runtime";
807
+ import { jsx as jsx23, jsxs as jsxs14 } from "react/jsx-runtime";
823
808
  var PolygonIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs14(
824
809
  "svg",
825
810
  {
@@ -830,8 +815,8 @@ var PolygonIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs14(
830
815
  "aria-labelledby": titleId,
831
816
  ...props,
832
817
  children: [
833
- title ? /* @__PURE__ */ jsx22("title", { id: titleId, children: title }) : null,
834
- /* @__PURE__ */ jsx22(
818
+ title ? /* @__PURE__ */ jsx23("title", { id: titleId, children: title }) : null,
819
+ /* @__PURE__ */ jsx23(
835
820
  "path",
836
821
  {
837
822
  fill: "currentColor",
@@ -843,33 +828,33 @@ var PolygonIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs14(
843
828
  );
844
829
 
845
830
  // src/icons/LineIcon.tsx
846
- import { jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
831
+ import { jsx as jsx24, jsxs as jsxs15 } from "react/jsx-runtime";
847
832
  function LineIcon({ title, titleId, ...props }) {
848
833
  return /* @__PURE__ */ jsxs15("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", "aria-labelledby": titleId, ...props, children: [
849
- title ? /* @__PURE__ */ jsx23("title", { id: titleId, children: title }) : null,
834
+ title ? /* @__PURE__ */ jsx24("title", { id: titleId, children: title }) : null,
850
835
  /* @__PURE__ */ jsxs15("g", { fill: "none", fillRule: "evenodd", children: [
851
- /* @__PURE__ */ jsx23("circle", { cx: 4.5, cy: 4.5, r: 2.5, fill: "currentColor" }),
852
- /* @__PURE__ */ jsx23("circle", { cx: 15.5, cy: 15.5, r: 2.5, fill: "currentColor" }),
853
- /* @__PURE__ */ jsx23("path", { stroke: "currentColor", strokeLinecap: "square", strokeWidth: 2, d: "m13.5 13.5-9-9" })
836
+ /* @__PURE__ */ jsx24("circle", { cx: 4.5, cy: 4.5, r: 2.5, fill: "currentColor" }),
837
+ /* @__PURE__ */ jsx24("circle", { cx: 15.5, cy: 15.5, r: 2.5, fill: "currentColor" }),
838
+ /* @__PURE__ */ jsx24("path", { stroke: "currentColor", strokeLinecap: "square", strokeWidth: 2, d: "m13.5 13.5-9-9" })
854
839
  ] })
855
840
  ] });
856
841
  }
857
842
 
858
843
  // src/icons/LineBoxIcon.tsx
859
- import { jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
844
+ import { jsx as jsx25, jsxs as jsxs16 } from "react/jsx-runtime";
860
845
  function LineBoxIcon({ title, titleId, ...props }) {
861
846
  return /* @__PURE__ */ jsxs16("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", "aria-labelledby": titleId, ...props, children: [
862
- title ? /* @__PURE__ */ jsx24("title", { id: titleId, children: title }) : null,
847
+ title ? /* @__PURE__ */ jsx25("title", { id: titleId, children: title }) : null,
863
848
  /* @__PURE__ */ jsxs16("g", { fill: "none", fillRule: "evenodd", children: [
864
- /* @__PURE__ */ jsx24("path", { d: "M0 0h20v20H0z" }),
865
- /* @__PURE__ */ jsx24("path", { stroke: "currentColor", strokeLinecap: "square", strokeWidth: 2, d: "m8.5 11.5 6-6M16 4v3m0-3h-3m0 14L2 7" }),
866
- /* @__PURE__ */ jsx24("path", { stroke: "currentColor", strokeOpacity: 0.407, strokeWidth: 2, d: "m2 7 5-5 11 11-5 5z" })
849
+ /* @__PURE__ */ jsx25("path", { d: "M0 0h20v20H0z" }),
850
+ /* @__PURE__ */ jsx25("path", { stroke: "currentColor", strokeLinecap: "square", strokeWidth: 2, d: "m8.5 11.5 6-6M16 4v3m0-3h-3m0 14L2 7" }),
851
+ /* @__PURE__ */ jsx25("path", { stroke: "currentColor", strokeOpacity: 0.407, strokeWidth: 2, d: "m2 7 5-5 11 11-5 5z" })
867
852
  ] })
868
853
  ] });
869
854
  }
870
855
 
871
856
  // src/icons/ShapesIcon.tsx
872
- import { jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
857
+ import { jsx as jsx26, jsxs as jsxs17 } from "react/jsx-runtime";
873
858
  var ShapesIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs17(
874
859
  "svg",
875
860
  {
@@ -880,8 +865,8 @@ var ShapesIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs17(
880
865
  "aria-labelledby": titleId,
881
866
  ...props,
882
867
  children: [
883
- title ? /* @__PURE__ */ jsx25("title", { id: titleId, children: title }) : null,
884
- /* @__PURE__ */ jsx25(
868
+ title ? /* @__PURE__ */ jsx26("title", { id: titleId, children: title }) : null,
869
+ /* @__PURE__ */ jsx26(
885
870
  "path",
886
871
  {
887
872
  fill: "currentColor",
@@ -893,7 +878,7 @@ var ShapesIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs17(
893
878
  );
894
879
 
895
880
  // src/icons/SquareIcon.tsx
896
- import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
881
+ import { jsx as jsx27, jsxs as jsxs18 } from "react/jsx-runtime";
897
882
  var SquareIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs18(
898
883
  "svg",
899
884
  {
@@ -904,8 +889,8 @@ var SquareIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs18(
904
889
  "aria-labelledby": titleId,
905
890
  ...props,
906
891
  children: [
907
- title ? /* @__PURE__ */ jsx26("title", { id: titleId, children: title }) : null,
908
- /* @__PURE__ */ jsx26(
892
+ title ? /* @__PURE__ */ jsx27("title", { id: titleId, children: title }) : null,
893
+ /* @__PURE__ */ jsx27(
909
894
  "path",
910
895
  {
911
896
  fill: "currentColor",
@@ -917,7 +902,7 @@ var SquareIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs18(
917
902
  );
918
903
 
919
904
  // src/icons/TriangleIcon.tsx
920
- import { jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
905
+ import { jsx as jsx28, jsxs as jsxs19 } from "react/jsx-runtime";
921
906
  var TriangleIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs19(
922
907
  "svg",
923
908
  {
@@ -928,14 +913,14 @@ var TriangleIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs19(
928
913
  "aria-labelledby": titleId,
929
914
  ...props,
930
915
  children: [
931
- title ? /* @__PURE__ */ jsx27("title", { id: titleId, children: title }) : null,
932
- /* @__PURE__ */ jsx27("path", { d: "m80-160 400-640 400 640H80Zm144-80h512L480-650 224-240Zm256-205Z", fill: "currentColor" })
916
+ title ? /* @__PURE__ */ jsx28("title", { id: titleId, children: title }) : null,
917
+ /* @__PURE__ */ jsx28("path", { d: "m80-160 400-640 400 640H80Zm144-80h512L480-650 224-240Zm256-205Z", fill: "currentColor" })
933
918
  ]
934
919
  }
935
920
  );
936
921
 
937
922
  // src/icons/HexagonIcon.tsx
938
- import { jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
923
+ import { jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
939
924
  var HexagonIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs20(
940
925
  "svg",
941
926
  {
@@ -946,8 +931,8 @@ var HexagonIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs20(
946
931
  "aria-labelledby": titleId,
947
932
  ...props,
948
933
  children: [
949
- title ? /* @__PURE__ */ jsx28("title", { id: titleId, children: title }) : null,
950
- /* @__PURE__ */ jsx28(
934
+ title ? /* @__PURE__ */ jsx29("title", { id: titleId, children: title }) : null,
935
+ /* @__PURE__ */ jsx29(
951
936
  "path",
952
937
  {
953
938
  fill: "currentColor",
@@ -959,12 +944,12 @@ var HexagonIcon = ({ title, titleId, ...props }) => /* @__PURE__ */ jsxs20(
959
944
  );
960
945
 
961
946
  // src/icons/DeleteForeverIcon.tsx
962
- import { jsx as jsx29, jsxs as jsxs21 } from "react/jsx-runtime";
947
+ import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
963
948
  function DeleteForeverIcon(props) {
964
949
  return /* @__PURE__ */ jsxs21("svg", { height: "1em", width: "1em", viewBox: "0 0 24 24", ...props, children: [
965
- /* @__PURE__ */ jsx29("path", { d: "M0 0h24v24H0z", fill: "none" }),
966
- /* @__PURE__ */ jsx29("path", { d: "M0 0h24v24H0V0z", fill: "none" }),
967
- /* @__PURE__ */ jsx29(
950
+ /* @__PURE__ */ jsx30("path", { d: "M0 0h24v24H0z", fill: "none" }),
951
+ /* @__PURE__ */ jsx30("path", { d: "M0 0h24v24H0V0z", fill: "none" }),
952
+ /* @__PURE__ */ jsx30(
968
953
  "path",
969
954
  {
970
955
  d: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z",
@@ -976,18 +961,18 @@ function DeleteForeverIcon(props) {
976
961
 
977
962
  // src/SvgControlBar.tsx
978
963
  import { useEffect as useEffect2 } from "react";
979
- import { jsx as jsx30 } from "react/jsx-runtime";
964
+ import { jsx as jsx31 } from "react/jsx-runtime";
980
965
  var className = 'bg-me-gray-100 border hover:bg-me-gray-300 rounded p-1 text-2xl text-me-primary-500 data-[active="true"]:border-me-primary-600';
981
966
  var icons = {
982
- DrawIcon: /* @__PURE__ */ jsx30(DrawIcon, {}),
983
- PolygonIcon: /* @__PURE__ */ jsx30(PolygonIcon, {}),
984
- LineIcon: /* @__PURE__ */ jsx30(LineIcon, {}),
985
- LineBoxIcon: /* @__PURE__ */ jsx30(LineBoxIcon, {}),
986
- ShapesIcon: /* @__PURE__ */ jsx30(ShapesIcon, {}),
987
- SquareIcon: /* @__PURE__ */ jsx30(SquareIcon, {}),
988
- TriangleIcon: /* @__PURE__ */ jsx30(TriangleIcon, {}),
989
- HexagonIcon: /* @__PURE__ */ jsx30(HexagonIcon, {}),
990
- DeleteForeverIcon: /* @__PURE__ */ jsx30(DeleteForeverIcon, {})
967
+ DrawIcon: /* @__PURE__ */ jsx31(DrawIcon, {}),
968
+ PolygonIcon: /* @__PURE__ */ jsx31(PolygonIcon, {}),
969
+ LineIcon: /* @__PURE__ */ jsx31(LineIcon, {}),
970
+ LineBoxIcon: /* @__PURE__ */ jsx31(LineBoxIcon, {}),
971
+ ShapesIcon: /* @__PURE__ */ jsx31(ShapesIcon, {}),
972
+ SquareIcon: /* @__PURE__ */ jsx31(SquareIcon, {}),
973
+ TriangleIcon: /* @__PURE__ */ jsx31(TriangleIcon, {}),
974
+ HexagonIcon: /* @__PURE__ */ jsx31(HexagonIcon, {}),
975
+ DeleteForeverIcon: /* @__PURE__ */ jsx31(DeleteForeverIcon, {})
991
976
  };
992
977
  function SvgControlBar({
993
978
  helper,
@@ -997,7 +982,7 @@ function SvgControlBar({
997
982
  useEffect2(() => {
998
983
  helper.stamps.square();
999
984
  }, []);
1000
- return /* @__PURE__ */ jsx30(
985
+ return /* @__PURE__ */ jsx31(
1001
986
  RenderSvgEditorControls,
1002
987
  {
1003
988
  icons,
@@ -1012,18 +997,18 @@ function SvgControlBar({
1012
997
  }
1013
998
 
1014
999
  // src/ConfirmSelectionButton.tsx
1015
- import { Button as Button3 } from "react-aria-components";
1016
- import { jsx as jsx31 } from "react/jsx-runtime";
1000
+ import { Button as Button4 } from "react-aria-components";
1001
+ import { jsx as jsx32 } from "react/jsx-runtime";
1017
1002
  function ConfirmSelectionButton({ onPress, children }) {
1018
- return /* @__PURE__ */ jsx31(Button3, { className: "bg-me-primary-500 px-3 py-1 hover:bg-me-primary-600 text-white rounded", onPress, children });
1003
+ return /* @__PURE__ */ jsx32(Button4, { className: "bg-me-primary-500 px-3 py-1 hover:bg-me-primary-600 text-white rounded", onPress, children });
1019
1004
  }
1020
1005
 
1021
1006
  // src/ManifestOverviewEmptyState.tsx
1022
- import { Button as Button4 } from "react-aria-components";
1023
- import { jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
1007
+ import { Button as Button5 } from "react-aria-components";
1008
+ import { jsx as jsx33, jsxs as jsxs22 } from "react/jsx-runtime";
1024
1009
  function ManifestOverviewEmptyState({ onCreate, canCreate }) {
1025
1010
  return /* @__PURE__ */ jsxs22("div", { className: "flex items-center flex-col gap-5 py-16", children: [
1026
- /* @__PURE__ */ jsx32(
1011
+ /* @__PURE__ */ jsx33(
1027
1012
  Card3D,
1028
1013
  {
1029
1014
  shouldTranslate: true,
@@ -1031,10 +1016,10 @@ function ManifestOverviewEmptyState({ onCreate, canCreate }) {
1031
1016
  className: "border-2 border-dotted bg-black/5 aspect-[3/4] rounded w-32 border-black"
1032
1017
  }
1033
1018
  ),
1034
- /* @__PURE__ */ jsx32("div", { className: "font-bold text-lg", children: "Let's get started!" }),
1035
- /* @__PURE__ */ jsx32("div", { className: "max-w-xl px-5 my-4", children: "Add a title and top level information for this manifest using the editing panel on the right, and then add some canvases and content." }),
1036
- canCreate ? /* @__PURE__ */ jsx32(
1037
- Button4,
1019
+ /* @__PURE__ */ jsx33("div", { className: "font-bold text-lg", children: "Let's get started!" }),
1020
+ /* @__PURE__ */ jsx33("div", { className: "max-w-xl px-5 my-4", children: "Add a title and top level information for this manifest using the editing panel on the right, and then add some canvases and content." }),
1021
+ canCreate ? /* @__PURE__ */ jsx33(
1022
+ Button5,
1038
1023
  {
1039
1024
  className: "px-8 font-bold py-2 border rounded-lg border-me-primary-500 text-me-primary-500 hover:border-me-primary-600 hover:text-me-primary-600",
1040
1025
  onPress: onCreate,
@@ -1052,7 +1037,7 @@ import {
1052
1037
  useState as useState3
1053
1038
  } from "react";
1054
1039
  import {
1055
- Button as Button5,
1040
+ Button as Button6,
1056
1041
  Menu,
1057
1042
  MenuItem,
1058
1043
  MenuTrigger,
@@ -1063,8 +1048,8 @@ import {
1063
1048
  Tabs as Tabs2
1064
1049
  } from "react-aria-components";
1065
1050
  import { createHideableComponent } from "@react-aria/collections";
1066
- import { createPortal } from "react-dom";
1067
- import { Fragment as Fragment3, jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
1051
+ import { createPortal as createPortal2 } from "react-dom";
1052
+ import { Fragment as Fragment3, jsx as jsx34, jsxs as jsxs23 } from "react/jsx-runtime";
1068
1053
  function SidebarTabs({
1069
1054
  menu,
1070
1055
  menuId,
@@ -1122,14 +1107,14 @@ function SidebarTabs({
1122
1107
  onSelectionChange,
1123
1108
  children: [
1124
1109
  /* @__PURE__ */ jsxs23("div", { className: "flex items-center w-full tab-shadow", children: [
1125
- /* @__PURE__ */ jsx33(
1110
+ /* @__PURE__ */ jsx34(
1126
1111
  TabList2,
1127
1112
  {
1128
1113
  ref,
1129
1114
  className: "flex-1 overflow-hidden w-full flex text-sm whitespace-nowrap",
1130
1115
  children: menu.map((item, idx) => {
1131
1116
  const isHidden = hidden >= menu.length - idx;
1132
- return /* @__PURE__ */ jsx33(
1117
+ return /* @__PURE__ */ jsx34(
1133
1118
  Tab2,
1134
1119
  {
1135
1120
  ref: (el) => itemsRef.current[idx] = el,
@@ -1148,9 +1133,9 @@ function SidebarTabs({
1148
1133
  })
1149
1134
  }
1150
1135
  ),
1151
- /* @__PURE__ */ jsx33("div", { ref: setHiddenMenu, id: "hidden-menu" })
1136
+ /* @__PURE__ */ jsx34("div", { ref: setHiddenMenu, id: "hidden-menu" })
1152
1137
  ] }),
1153
- menu.map((item) => /* @__PURE__ */ jsx33(
1138
+ menu.map((item) => /* @__PURE__ */ jsx34(
1154
1139
  TabPanel2,
1155
1140
  {
1156
1141
  id: item.id,
@@ -1163,8 +1148,8 @@ function SidebarTabs({
1163
1148
  },
1164
1149
  menuId
1165
1150
  ),
1166
- hiddenMenu && hidden > 0 ? createPortal(
1167
- /* @__PURE__ */ jsx33(
1151
+ hiddenMenu && hidden > 0 ? createPortal2(
1152
+ /* @__PURE__ */ jsx34(
1168
1153
  MoreMenu,
1169
1154
  {
1170
1155
  hidden,
@@ -1180,8 +1165,8 @@ function SidebarTabs({
1180
1165
  }
1181
1166
  var MoreMenu = createHideableComponent(({ selectedIndex, hidden, menuHidden, selectedKey, onSelectionChange }) => {
1182
1167
  return /* @__PURE__ */ jsxs23(MenuTrigger, { children: [
1183
- /* @__PURE__ */ jsx33(
1184
- Button5,
1168
+ /* @__PURE__ */ jsx34(
1169
+ Button6,
1185
1170
  {
1186
1171
  className: cn(
1187
1172
  "border-none rounded bg-gray-100 px-1.5 py-1 mr-2 mb-1 text-me-primary-500 semibold uppercase text-[10px]",
@@ -1190,12 +1175,12 @@ var MoreMenu = createHideableComponent(({ selectedIndex, hidden, menuHidden, sel
1190
1175
  children: "MORE"
1191
1176
  }
1192
1177
  ),
1193
- /* @__PURE__ */ jsx33(Popover, { children: menuHidden.length ? /* @__PURE__ */ jsx33(
1178
+ /* @__PURE__ */ jsx34(Popover, { children: menuHidden.length ? /* @__PURE__ */ jsx34(
1194
1179
  Menu,
1195
1180
  {
1196
1181
  className: "bg-white rounded shadow-lg flex flex-col gap-0.5 p-0.5 min-w-28",
1197
1182
  children: menuHidden.map((item) => {
1198
- return /* @__PURE__ */ jsx33(
1183
+ return /* @__PURE__ */ jsx34(
1199
1184
  MenuItem,
1200
1185
  {
1201
1186
  className: (state) => cn(
@@ -1215,7 +1200,7 @@ var MoreMenu = createHideableComponent(({ selectedIndex, hidden, menuHidden, sel
1215
1200
 
1216
1201
  // src/MetadataContainer.tsx
1217
1202
  import { LocaleString as LocaleString2 } from "react-iiif-vault";
1218
- import { jsx as jsx34, jsxs as jsxs24 } from "react/jsx-runtime";
1203
+ import { jsx as jsx35, jsxs as jsxs24 } from "react/jsx-runtime";
1219
1204
  function MetadataContainer({
1220
1205
  className: className2,
1221
1206
  label,
@@ -1223,7 +1208,7 @@ function MetadataContainer({
1223
1208
  ...props
1224
1209
  }) {
1225
1210
  return /* @__PURE__ */ jsxs24(
1226
- "div",
1211
+ "fieldset",
1227
1212
  {
1228
1213
  className: cn(
1229
1214
  "hover:ring ring-gray-200 focus-within:ring-me-primary-500 focus-within:ring p-2 rounded mb-2",
@@ -1231,7 +1216,7 @@ function MetadataContainer({
1231
1216
  ),
1232
1217
  ...props,
1233
1218
  children: [
1234
- /* @__PURE__ */ jsx34(LocaleString2, { className: "text-lg font-bold text-[#333] mb-2", as: "h3", children: label }),
1219
+ /* @__PURE__ */ jsx35(LocaleString2, { className: "text-lg font-bold text-[#333] mb-2", as: "h3", children: label }),
1235
1220
  children
1236
1221
  ]
1237
1222
  }
@@ -1239,9 +1224,9 @@ function MetadataContainer({
1239
1224
  }
1240
1225
 
1241
1226
  // src/EmptyState.tsx
1242
- import { jsx as jsx35 } from "react/jsx-runtime";
1227
+ import { jsx as jsx36 } from "react/jsx-runtime";
1243
1228
  function EmptyState(props) {
1244
- return /* @__PURE__ */ jsx35(
1229
+ return /* @__PURE__ */ jsx36(
1245
1230
  "div",
1246
1231
  {
1247
1232
  className: cn(
@@ -1255,9 +1240,9 @@ function EmptyState(props) {
1255
1240
  }
1256
1241
 
1257
1242
  // src/ManifestEditorLogo.tsx
1258
- import { jsx as jsx36, jsxs as jsxs25 } from "react/jsx-runtime";
1243
+ import { jsx as jsx37, jsxs as jsxs25 } from "react/jsx-runtime";
1259
1244
  function ManifestEditorLogo(props) {
1260
- return /* @__PURE__ */ jsx36(
1245
+ return /* @__PURE__ */ jsx37(
1261
1246
  "svg",
1262
1247
  {
1263
1248
  width: "1em",
@@ -1267,26 +1252,26 @@ function ManifestEditorLogo(props) {
1267
1252
  className: "me-logo h-[23px] w-[176px]",
1268
1253
  ...props,
1269
1254
  children: /* @__PURE__ */ jsxs25("g", { fill: "none", children: [
1270
- /* @__PURE__ */ jsx36(
1255
+ /* @__PURE__ */ jsx37(
1271
1256
  "path",
1272
1257
  {
1273
1258
  d: "M62.558 5.41v14.873h-2.983v-9.675l-3.985 9.675h-2.26l-4.006-9.675v9.675H46.34V5.41h3.388l4.73 11.06L59.19 5.41zm2.173 8.928c0-1.194.238-2.252.714-3.176.476-.923 1.123-1.633 1.94-2.13.816-.498 1.73-.746 2.738-.746.88 0 1.651.177 2.312.532.66.355 1.19.803 1.588 1.343V8.477h3.004v11.806h-3.004v-1.726c-.384.554-.913 1.012-1.588 1.374-.675.363-1.453.544-2.334.544-.994 0-1.9-.256-2.717-.767-.816-.512-1.463-1.233-1.939-2.163-.476-.93-.714-2-.714-3.207Zm9.292.042c0-.724-.143-1.346-.427-1.864a3.005 3.005 0 0 0-1.15-1.194 3.076 3.076 0 0 0-1.556-.415c-.554 0-1.066.135-1.534.405-.47.27-.85.664-1.14 1.182-.292.519-.437 1.133-.437 1.844 0 .71.145 1.331.437 1.864.29.533.674.941 1.15 1.226.476.284.984.426 1.524.426.554 0 1.073-.139 1.556-.416a3.005 3.005 0 0 0 1.15-1.193c.284-.519.427-1.14.427-1.865Zm12.466-6.073c1.406 0 2.543.444 3.41 1.332.866.888 1.3 2.127 1.3 3.718v6.926h-2.984v-6.52c0-.938-.234-1.66-.703-2.164-.47-.504-1.108-.756-1.918-.756-.824 0-1.474.252-1.95.756-.476.505-.714 1.226-.714 2.163v6.521h-2.983V8.477h2.983v1.47a4.121 4.121 0 0 1 1.524-1.203 4.713 4.713 0 0 1 2.035-.437Zm9.057-1.237c-.526 0-.963-.166-1.311-.5a1.657 1.657 0 0 1-.522-1.247c0-.497.174-.912.522-1.246.348-.334.785-.5 1.31-.5.526 0 .963.166 1.311.5.348.334.522.75.522 1.246 0 .498-.174.913-.522 1.247-.348.334-.785.5-1.31.5Zm1.47 1.407v11.806h-2.983V8.477h2.983Zm8.354 2.451h-2.068v9.355h-3.026v-9.355h-1.342v-2.45h1.342V7.88c0-1.45.412-2.515 1.236-3.197.824-.682 2.067-1.001 3.73-.959V6.24c-.725-.014-1.23.106-1.513.362-.284.256-.427.718-.427 1.385v.49h2.068v2.451Zm12.913 3.197c0 .426-.028.81-.085 1.15h-8.63c.07.853.369 1.52.895 2.003.525.483 1.172.725 1.939.725 1.108 0 1.896-.476 2.365-1.428h3.218c-.34 1.137-.994 2.07-1.96 2.802-.967.732-2.153 1.098-3.56 1.098-1.136 0-2.155-.252-3.057-.757a5.325 5.325 0 0 1-2.11-2.141c-.504-.924-.756-1.99-.756-3.197 0-1.222.248-2.294.745-3.218a5.204 5.204 0 0 1 2.089-2.13c.895-.498 1.925-.746 3.09-.746 1.122 0 2.127.241 3.015.724a5.1 5.1 0 0 1 2.067 2.057c.49.887.735 1.907.735 3.058Zm-3.09-.853c-.014-.767-.29-1.381-.83-1.843-.54-.462-1.201-.693-1.982-.693-.74 0-1.36.224-1.865.671-.504.448-.813 1.07-.927 1.865h5.604Zm9.782 7.203c-.966 0-1.833-.174-2.6-.522-.767-.348-1.375-.82-1.822-1.417a3.591 3.591 0 0 1-.735-1.982h3.004c.057.454.281.83.672 1.13.39.298.877.447 1.46.447.568 0 1.012-.114 1.331-.341.32-.227.48-.519.48-.874 0-.383-.196-.671-.586-.863-.391-.192-1.012-.401-1.865-.629-.88-.213-1.602-.433-2.163-.66a3.755 3.755 0 0 1-1.449-1.044c-.405-.47-.607-1.101-.607-1.897 0-.653.188-1.25.564-1.79.377-.54.917-.966 1.62-1.279.703-.312 1.53-.468 2.483-.468 1.406 0 2.528.351 3.367 1.054.838.704 1.3 1.652 1.385 2.845h-2.856c-.042-.469-.238-.841-.586-1.118-.348-.277-.813-.416-1.396-.416-.54 0-.955.1-1.246.298a.951.951 0 0 0-.437.831c0 .398.199.7.597.906.397.206 1.015.416 1.854.629.852.213 1.555.433 2.11.66a3.727 3.727 0 0 1 1.438 1.055c.405.476.614 1.105.628 1.886 0 .682-.188 1.293-.564 1.833-.377.54-.917.962-1.62 1.268-.703.305-1.524.458-2.461.458Zm10.569-9.547v5.711c0 .398.096.686.288.863.192.178.515.267.97.267h1.385v2.514h-1.875c-2.515 0-3.772-1.222-3.772-3.665v-5.69h-1.407v-2.45h1.407v-2.92h3.004v2.92h2.643v2.45h-2.643Zm12.851-3.111v3.73h5.007v2.364h-5.007v3.943h5.647v2.43h-8.631V5.386h8.63v2.43zm7.585 6.521c0-1.194.239-2.252.715-3.176.476-.923 1.126-1.633 1.95-2.13.824-.498 1.74-.746 2.749-.746.767 0 1.498.167 2.194.5.697.334 1.25.778 1.663 1.332V4.514h3.026v15.77h-3.026v-1.748c-.37.582-.888 1.051-1.556 1.406s-1.442.533-2.323.533a5.07 5.07 0 0 1-2.727-.767c-.824-.512-1.474-1.233-1.95-2.163-.476-.93-.714-2-.714-3.207Zm9.292.042c0-.724-.142-1.346-.426-1.864a3.005 3.005 0 0 0-1.151-1.194 3.076 3.076 0 0 0-1.556-.415 3.02 3.02 0 0 0-1.534.405c-.469.27-.849.664-1.14 1.182-.291.519-.437 1.133-.437 1.844 0 .71.146 1.331.437 1.864.291.533.675.941 1.15 1.226a2.93 2.93 0 0 0 1.524.426c.554 0 1.073-.139 1.556-.416a3.005 3.005 0 0 0 1.15-1.193c.285-.519.427-1.14.427-1.865Zm7.438-7.31c-.527 0-.963-.166-1.311-.5a1.657 1.657 0 0 1-.523-1.247c0-.497.174-.912.523-1.246.348-.334.784-.5 1.31-.5s.963.166 1.31.5c.349.334.523.75.523 1.246 0 .498-.174.913-.522 1.247-.348.334-.785.5-1.31.5Zm1.47 1.407v11.806h-2.984V8.477h2.984Zm6.414 2.451v5.711c0 .398.096.686.287.863.192.178.515.267.97.267h1.385v2.514h-1.875c-2.515 0-3.772-1.222-3.772-3.665v-5.69h-1.406v-2.45h1.406v-2.92h3.005v2.92h2.642v2.45h-2.642Zm10.036 9.547c-1.136 0-2.159-.252-3.068-.757a5.447 5.447 0 0 1-2.141-2.141c-.519-.924-.778-1.99-.778-3.197s.266-2.273.799-3.196a5.553 5.553 0 0 1 2.184-2.142c.924-.504 1.954-.756 3.09-.756 1.137 0 2.167.252 3.09.756a5.553 5.553 0 0 1 2.184 2.142c.533.923.8 1.989.8 3.196 0 1.208-.274 2.273-.821 3.197a5.681 5.681 0 0 1-2.216 2.141c-.93.505-1.971.757-3.122.757Zm0-2.6a3.1 3.1 0 0 0 1.524-.394c.476-.263.856-.657 1.14-1.183.285-.526.427-1.165.427-1.918 0-1.122-.295-1.985-.885-2.589a2.907 2.907 0 0 0-2.163-.906c-.852 0-1.566.302-2.141.906-.576.604-.863 1.467-.863 2.59 0 1.122.28 1.985.841 2.588.562.604 1.268.906 2.12.906Zm11.338-7.565a4.194 4.194 0 0 1 1.502-1.47c.618-.356 1.325-.533 2.12-.533v3.132h-.788c-.938 0-1.644.22-2.12.661-.476.44-.714 1.208-.714 2.302v5.881h-2.984V8.477h2.984v1.833Z",
1274
1259
  fill: "#000"
1275
1260
  }
1276
1261
  ),
1277
- /* @__PURE__ */ jsx36("path", { fill: "#E94581", className: "me-logo-1", d: "M0 13.343 13.343 0l13.343 13.343-13.343 13.343z" }),
1278
- /* @__PURE__ */ jsx36("path", { fill: "#E94581", className: "me-logo-2", d: "M12.137 13.346 25.48.003l13.343 13.343L25.48 26.69z" }),
1279
- /* @__PURE__ */ jsx36("path", { fill: "#C63E75", className: "me-logo-3", d: "m12.104 13.348 7.311-7.311 7.312 7.311-7.312 7.312z" })
1262
+ /* @__PURE__ */ jsx37("path", { fill: "#E94581", className: "me-logo-1", d: "M0 13.343 13.343 0l13.343 13.343-13.343 13.343z" }),
1263
+ /* @__PURE__ */ jsx37("path", { fill: "#E94581", className: "me-logo-2", d: "M12.137 13.346 25.48.003l13.343 13.343L25.48 26.69z" }),
1264
+ /* @__PURE__ */ jsx37("path", { fill: "#C63E75", className: "me-logo-3", d: "m12.104 13.348 7.311-7.311 7.312 7.311-7.312 7.312z" })
1280
1265
  ] })
1281
1266
  }
1282
1267
  );
1283
1268
  }
1284
1269
 
1285
1270
  // src/Forms.tsx
1286
- import { Label, Form as RAForm, Input, RadioGroup, Radio } from "react-aria-components";
1287
- import { jsx as jsx37 } from "react/jsx-runtime";
1271
+ import { Input, Label, Form as RAForm, Radio, RadioGroup, TextArea } from "react-aria-components";
1272
+ import { jsx as jsx38 } from "react/jsx-runtime";
1288
1273
  function MeLabel({ className: className2, ...props }) {
1289
- return /* @__PURE__ */ jsx37(
1274
+ return /* @__PURE__ */ jsx38(
1290
1275
  Label,
1291
1276
  {
1292
1277
  className: cn(
@@ -1299,7 +1284,7 @@ function MeLabel({ className: className2, ...props }) {
1299
1284
  );
1300
1285
  }
1301
1286
  function MeRadioGroup({ className: className2, ...props }) {
1302
- return /* @__PURE__ */ jsx37(
1287
+ return /* @__PURE__ */ jsx38(
1303
1288
  RadioGroup,
1304
1289
  {
1305
1290
  className: cn(
@@ -1312,7 +1297,7 @@ function MeRadioGroup({ className: className2, ...props }) {
1312
1297
  );
1313
1298
  }
1314
1299
  function MeRadio({ className: className2, ...props }) {
1315
- return /* @__PURE__ */ jsx37(
1300
+ return /* @__PURE__ */ jsx38(
1316
1301
  Radio,
1317
1302
  {
1318
1303
  className: (state) => cn(
@@ -1325,7 +1310,7 @@ function MeRadio({ className: className2, ...props }) {
1325
1310
  );
1326
1311
  }
1327
1312
  function MeForm({ className: className2, ...props }) {
1328
- return /* @__PURE__ */ jsx37(
1313
+ return /* @__PURE__ */ jsx38(
1329
1314
  RAForm,
1330
1315
  {
1331
1316
  className: cn(
@@ -1338,7 +1323,7 @@ function MeForm({ className: className2, ...props }) {
1338
1323
  );
1339
1324
  }
1340
1325
  function MeInput({ className: className2, ...props }) {
1341
- return /* @__PURE__ */ jsx37(
1326
+ return /* @__PURE__ */ jsx38(
1342
1327
  Input,
1343
1328
  {
1344
1329
  className: cn(
@@ -1351,12 +1336,26 @@ function MeInput({ className: className2, ...props }) {
1351
1336
  }
1352
1337
  );
1353
1338
  }
1339
+ function MeTextArea({ className: className2, ...props }) {
1340
+ return /* @__PURE__ */ jsx38(
1341
+ TextArea,
1342
+ {
1343
+ className: cn(
1344
+ //
1345
+ "p-2 bg-me-gray-100 border-b border-b-me-gray-500",
1346
+ "focus:ring-0 outline-0 focus:border-me-primary-500 focus:bg-[#ECEEF5]",
1347
+ className2
1348
+ ),
1349
+ ...props
1350
+ }
1351
+ );
1352
+ }
1354
1353
  function MeInputContainer({
1355
1354
  horizontal,
1356
1355
  className: className2,
1357
1356
  ...props
1358
1357
  }) {
1359
- return /* @__PURE__ */ jsx37(
1358
+ return /* @__PURE__ */ jsx38(
1360
1359
  "div",
1361
1360
  {
1362
1361
  className: cn(
@@ -1375,7 +1374,8 @@ var Form = {
1375
1374
  Label: MeLabel,
1376
1375
  InputContainer: MeInputContainer,
1377
1376
  RadioGroup: MeRadioGroup,
1378
- Radio: MeRadio
1377
+ Radio: MeRadio,
1378
+ TextArea: MeTextArea
1379
1379
  };
1380
1380
 
1381
1381
  // src/HTMLEditor.tsx
@@ -1405,12 +1405,12 @@ import {
1405
1405
  toolbarPlugin
1406
1406
  } from "@mdxeditor/editor";
1407
1407
  import { useMemo as useMemo3 } from "react";
1408
- import { Fragment as Fragment4, jsx as jsx38, jsxs as jsxs26 } from "react/jsx-runtime";
1408
+ import { Fragment as Fragment4, jsx as jsx39, jsxs as jsxs26 } from "react/jsx-runtime";
1409
1409
  function MDXEditor({
1410
1410
  editorRef,
1411
1411
  ...props
1412
1412
  }) {
1413
- return /* @__PURE__ */ jsx38(
1413
+ return /* @__PURE__ */ jsx39(
1414
1414
  BaseMDXEditor,
1415
1415
  {
1416
1416
  plugins: useMemo3(
@@ -1428,12 +1428,12 @@ function MDXEditor({
1428
1428
  toolbarClassName: "mdx-toolbar",
1429
1429
  toolbarContents: () => /* @__PURE__ */ jsxs26(Fragment4, { children: [
1430
1430
  " ",
1431
- /* @__PURE__ */ jsx38(UndoRedo, {}),
1432
- /* @__PURE__ */ jsx38(BoldItalicUnderlineToggles, {}),
1433
- /* @__PURE__ */ jsx38(BlockTypeSelect, {}),
1434
- /* @__PURE__ */ jsx38(ListsToggle, { options: ["bullet", "number"] }),
1435
- /* @__PURE__ */ jsx38(CreateLink, {}),
1436
- /* @__PURE__ */ jsx38(InsertImage, {})
1431
+ /* @__PURE__ */ jsx39(UndoRedo, {}),
1432
+ /* @__PURE__ */ jsx39(BoldItalicUnderlineToggles, {}),
1433
+ /* @__PURE__ */ jsx39(BlockTypeSelect, {}),
1434
+ /* @__PURE__ */ jsx39(ListsToggle, { options: ["bullet", "number"] }),
1435
+ /* @__PURE__ */ jsx39(CreateLink, {}),
1436
+ /* @__PURE__ */ jsx39(InsertImage, {})
1437
1437
  ] })
1438
1438
  })
1439
1439
  ],
@@ -1446,7 +1446,7 @@ function MDXEditor({
1446
1446
  }
1447
1447
 
1448
1448
  // src/HTMLEditor.tsx
1449
- import { jsx as jsx39 } from "react/jsx-runtime";
1449
+ import { jsx as jsx40 } from "react/jsx-runtime";
1450
1450
  var converter = new Converter();
1451
1451
  converter.setFlavor("github");
1452
1452
  var turndownService = new TurndownService();
@@ -1474,7 +1474,7 @@ function HTMLEditor({
1474
1474
  }
1475
1475
  };
1476
1476
  }, []);
1477
- return /* @__PURE__ */ jsx39(
1477
+ return /* @__PURE__ */ jsx40(
1478
1478
  MDXEditor,
1479
1479
  {
1480
1480
  editorRef,
@@ -1499,34 +1499,39 @@ function HTMLEditor({
1499
1499
  }
1500
1500
 
1501
1501
  // src/IconButton.tsx
1502
- import { twMerge as twMerge6 } from "tailwind-merge";
1503
- import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
1502
+ import { twMerge as twMerge7 } from "tailwind-merge";
1503
+ import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
1504
1504
  function IconButton({
1505
1505
  children,
1506
1506
  active,
1507
1507
  label,
1508
1508
  disabled,
1509
- onPress
1509
+ onPress,
1510
+ root,
1511
+ className: className2,
1512
+ placement = "top"
1510
1513
  }) {
1511
- return /* @__PURE__ */ jsx40(Tooltip, { placement: "top", children: /* @__PURE__ */ jsxs27(
1514
+ return /* @__PURE__ */ jsx41(Tooltip, { placement, children: /* @__PURE__ */ jsxs27(
1512
1515
  TooltipTrigger,
1513
1516
  {
1517
+ "aria-label": label,
1514
1518
  onClick: onPress,
1515
- className: twMerge6(
1519
+ className: twMerge7(
1516
1520
  "rounded flex items-center bg-white justify-center p-2 hover:bg-gray-100 text-2xl",
1517
1521
  active ? "bg-me-primary-500 bg-opacity-40 hover:bg-opacity-70 hover:bg-me-primary-500" : "",
1518
- disabled ? "opacity-50 pointer-events-none" : ""
1522
+ disabled ? "opacity-50 pointer-events-none" : "",
1523
+ className2
1519
1524
  ),
1520
1525
  children: [
1521
1526
  children,
1522
- /* @__PURE__ */ jsx40(DefaultTooltipContent, { className: "translate-x-3", children: label })
1527
+ /* @__PURE__ */ jsx41(DefaultTooltipContent, { root, className: "translate-x-3 z-50", children: label })
1523
1528
  ]
1524
1529
  }
1525
1530
  ) });
1526
1531
  }
1527
1532
 
1528
1533
  // src/ItemWithHandle.tsx
1529
- import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
1534
+ import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
1530
1535
  function ItemWithHandle({
1531
1536
  children,
1532
1537
  handle,
@@ -1538,7 +1543,7 @@ function ItemWithHandle({
1538
1543
  "absolute flex p-1 gap-1 bg-white z-1 right-1 top-1 rounded"
1539
1544
  ) : "flex-shrink-0 flex items-center gap-1 px-1";
1540
1545
  return /* @__PURE__ */ jsxs28("div", { className: grid ? "relative flex flex-col" : "flex items-center", children: [
1541
- /* @__PURE__ */ jsx41("div", { className: "flex-1 min-w-0", style: { flex: 1, minWidth: 0 }, children }),
1546
+ /* @__PURE__ */ jsx42("div", { className: "flex-1 min-w-0", style: { flex: 1, minWidth: 0 }, children }),
1542
1547
  /* @__PURE__ */ jsxs28("div", { className: gridStyleClassName, children: [
1543
1548
  actions,
1544
1549
  handle
@@ -1548,9 +1553,9 @@ function ItemWithHandle({
1548
1553
 
1549
1554
  // src/HandleContainer.tsx
1550
1555
  import { forwardRef as forwardRef2 } from "react";
1551
- import { jsx as jsx42 } from "react/jsx-runtime";
1556
+ import { jsx as jsx43 } from "react/jsx-runtime";
1552
1557
  var HandleContainer = forwardRef2(function HandleContainer2({ className: className2, ...props }, ref) {
1553
- return /* @__PURE__ */ jsx42(
1558
+ return /* @__PURE__ */ jsx43(
1554
1559
  "div",
1555
1560
  {
1556
1561
  ref,
@@ -1560,12 +1565,126 @@ var HandleContainer = forwardRef2(function HandleContainer2({ className: classNa
1560
1565
  );
1561
1566
  });
1562
1567
 
1568
+ // src/CollectionListItem.tsx
1569
+ import { LocaleString as LocaleString3, useCollection } from "react-iiif-vault";
1570
+
1571
+ // src/icons/CollectionIcon.tsx
1572
+ import { jsx as jsx44 } from "react/jsx-runtime";
1573
+ function CollectionIcon(props) {
1574
+ return /* @__PURE__ */ jsx44(
1575
+ "svg",
1576
+ {
1577
+ xmlns: "http://www.w3.org/2000/svg",
1578
+ width: "1em",
1579
+ height: "1em",
1580
+ viewBox: "0 -960 960 960",
1581
+ "aria-label": "collection",
1582
+ role: "img",
1583
+ ...props,
1584
+ children: /* @__PURE__ */ jsx44(
1585
+ "path",
1586
+ {
1587
+ d: "M320-320h480v-480h-80v280l-100-60-100 60v-280H320v480Zm0 80q-33 0-56.5-23.5T240-320v-480q0-33 23.5-56.5T320-880h480q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H320ZM160-80q-33 0-56.5-23.5T80-160v-560h80v560h560v80H160Zm360-720h200-200Zm-200 0h480-480Z",
1588
+ fill: "currentColor"
1589
+ }
1590
+ )
1591
+ }
1592
+ );
1593
+ }
1594
+
1595
+ // src/CollectionListItem.tsx
1596
+ import { usePress } from "react-aria";
1597
+ import { getValue } from "@iiif/helpers/i18n";
1598
+ import { jsx as jsx45, jsxs as jsxs29 } from "react/jsx-runtime";
1599
+ function CollectionListItem({ isActive, onAction }) {
1600
+ const collection = useCollection({});
1601
+ const { pressProps } = usePress({
1602
+ onPress: onAction
1603
+ });
1604
+ return /* @__PURE__ */ jsxs29(
1605
+ "li",
1606
+ {
1607
+ "aria-label": getValue(collection?.label),
1608
+ className: "border-b-2 border-b-gray-200 flex p-2 gap-3 text-left truncate items-center w-full hover:bg-gray-100 data-[active]:bg-gray-200 data-[active]:border-b-me-primary-500",
1609
+ "data-active": isActive || void 0,
1610
+ ...pressProps,
1611
+ children: [
1612
+ /* @__PURE__ */ jsx45(
1613
+ CollectionIcon,
1614
+ {
1615
+ "data-active": isActive || void 0,
1616
+ className: "flex-shrink-0 text-2xl data-[active]:text-me-primary-500 text-gray-400"
1617
+ }
1618
+ ),
1619
+ /* @__PURE__ */ jsx45(LocaleString3, { children: collection?.label })
1620
+ ]
1621
+ }
1622
+ );
1623
+ }
1624
+
1625
+ // src/ManifestListItem.tsx
1626
+ import { LocaleString as LocaleString4, useManifest } from "react-iiif-vault";
1627
+
1628
+ // src/icons/ManifestIcon.tsx
1629
+ import { jsx as jsx46 } from "react/jsx-runtime";
1630
+ function ManifestIcon(props) {
1631
+ return /* @__PURE__ */ jsx46(
1632
+ "svg",
1633
+ {
1634
+ xmlns: "http://www.w3.org/2000/svg",
1635
+ width: "1em",
1636
+ height: "1em",
1637
+ viewBox: "20 -910 960 960",
1638
+ "aria-label": "manifest",
1639
+ role: "img",
1640
+ ...props,
1641
+ children: /* @__PURE__ */ jsx46(
1642
+ "path",
1643
+ {
1644
+ d: "M480-160q-48-38-104-59t-116-21q-42 0-82.5 11T100-198q-21 11-40.5-1T40-234v-482q0-11 5.5-21T62-752q46-24 96-36t102-12q58 0 113.5 15T480-740v484q51-32 107-48t113-16q36 0 70.5 6t69.5 18v-480q15 5 29.5 10.5T898-752q11 5 16.5 15t5.5 21v482q0 23-19.5 35t-40.5 1q-37-20-77.5-31T700-240q-60 0-116 21t-104 59Zm80-200v-380l200-200v400L560-360Zm-160 65v-396q-33-14-68.5-21.5T260-720q-37 0-72 7t-68 21v397q35-13 69.5-19t70.5-6q36 0 70.5 6t69.5 19Zm0 0v-396 396Z",
1645
+ fill: "currentColor"
1646
+ }
1647
+ )
1648
+ }
1649
+ );
1650
+ }
1651
+
1652
+ // src/ManifestListItem.tsx
1653
+ import { usePress as usePress2 } from "react-aria";
1654
+ import { getValue as getValue2 } from "@iiif/helpers";
1655
+ import { jsx as jsx47, jsxs as jsxs30 } from "react/jsx-runtime";
1656
+ function ManifestListItem({ isActive, onAction }) {
1657
+ const manifest = useManifest();
1658
+ const { pressProps } = usePress2({
1659
+ onPress: onAction
1660
+ });
1661
+ return /* @__PURE__ */ jsxs30(
1662
+ "li",
1663
+ {
1664
+ "aria-label": getValue2(manifest?.label),
1665
+ className: "border-b-2 border-b-gray-200 flex p-2 gap-3 text-left truncate items-center w-full hover:bg-gray-100 data-[active]:bg-gray-200 data-[active]:border-b-me-primary-500",
1666
+ "data-active": isActive || void 0,
1667
+ ...pressProps,
1668
+ children: [
1669
+ /* @__PURE__ */ jsx47(
1670
+ ManifestIcon,
1671
+ {
1672
+ "data-active": isActive || void 0,
1673
+ className: "flex-shrink-0 text-2xl data-[active]:text-me-primary-500 text-gray-400"
1674
+ }
1675
+ ),
1676
+ /* @__PURE__ */ jsx47(LocaleString4, { children: manifest?.label })
1677
+ ]
1678
+ }
1679
+ );
1680
+ }
1681
+
1563
1682
  // src/icons/CreateCanvasIcon.tsx
1564
- import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
1683
+ import { jsx as jsx48, jsxs as jsxs31 } from "react/jsx-runtime";
1565
1684
  function CreateCanvasIcon() {
1566
- return /* @__PURE__ */ jsxs29("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24", viewBox: "0 0 24 24", width: "24", children: [
1567
- /* @__PURE__ */ jsx43("path", { d: "M0 0h24v24H0V0z", fill: "none" }),
1568
- /* @__PURE__ */ jsx43(
1685
+ return /* @__PURE__ */ jsxs31("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24", viewBox: "0 0 24 24", width: "24", children: [
1686
+ /* @__PURE__ */ jsx48("path", { d: "M0 0h24v24H0V0z", fill: "none" }),
1687
+ /* @__PURE__ */ jsx48(
1569
1688
  "path",
1570
1689
  {
1571
1690
  d: "M13 11h-2v3H8v2h3v3h2v-3h3v-2h-3zm1-9H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z",
@@ -1576,8 +1695,8 @@ function CreateCanvasIcon() {
1576
1695
  }
1577
1696
 
1578
1697
  // src/icons/AddImageIcon.tsx
1579
- import { jsx as jsx44 } from "react/jsx-runtime";
1580
- var AddImageIcon = (props) => /* @__PURE__ */ jsx44("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx44(
1698
+ import { jsx as jsx49 } from "react/jsx-runtime";
1699
+ var AddImageIcon = (props) => /* @__PURE__ */ jsx49("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx49(
1581
1700
  "path",
1582
1701
  {
1583
1702
  d: "M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h360v80H200v560h560v-360h80v360q0 33-23.5 56.5T760-120H200Zm480-480v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80ZM240-280h480L570-480 450-320l-90-120-120 160Zm-40-480v560-560Z",
@@ -1586,8 +1705,8 @@ var AddImageIcon = (props) => /* @__PURE__ */ jsx44("svg", { xmlns: "http://www.
1586
1705
  ) });
1587
1706
 
1588
1707
  // src/icons/IIIFLogo.tsx
1589
- import { jsx as jsx45, jsxs as jsxs30 } from "react/jsx-runtime";
1590
- var IIIFLogo = ({ mono = true, ...props }) => /* @__PURE__ */ jsxs30(
1708
+ import { jsx as jsx50, jsxs as jsxs32 } from "react/jsx-runtime";
1709
+ var IIIFLogo = ({ mono = true, ...props }) => /* @__PURE__ */ jsxs32(
1591
1710
  "svg",
1592
1711
  {
1593
1712
  xmlns: "http://www.w3.org/2000/svg",
@@ -1597,7 +1716,7 @@ var IIIFLogo = ({ mono = true, ...props }) => /* @__PURE__ */ jsxs30(
1597
1716
  ...props,
1598
1717
  viewBox: "0 0 493.36 441.333",
1599
1718
  children: [
1600
- /* @__PURE__ */ jsx45(
1719
+ /* @__PURE__ */ jsx50(
1601
1720
  "path",
1602
1721
  {
1603
1722
  d: "m65.242 2178.75 710-263.75-1.25-1900-708.75 261.25v1902.5m738.903 461.34c81.441-240.91-26.473-436.2-241.04-436.2-214.558 0-454.511 195.29-535.953 436.2-81.433 240.89 26.48 436.18 241.039 436.18 214.567 0 454.512-195.29 535.954-436.18",
@@ -1610,7 +1729,7 @@ var IIIFLogo = ({ mono = true, ...props }) => /* @__PURE__ */ jsxs30(
1610
1729
  transform: "matrix(.13333 0 0 -.13333 0 441.333)"
1611
1730
  }
1612
1731
  ),
1613
- /* @__PURE__ */ jsx45(
1732
+ /* @__PURE__ */ jsx50(
1614
1733
  "path",
1615
1734
  {
1616
1735
  d: "M1678.58 2178.75 968.578 1915l1.25-1900 708.752 261.25v1902.5m-743.498 461.34c-81.437-240.91 26.477-436.2 241.038-436.2 214.56 0 454.51 195.29 535.96 436.2 81.43 240.89-26.48 436.18-241.04 436.18-214.57 0-454.52-195.29-535.958-436.18",
@@ -1623,7 +1742,7 @@ var IIIFLogo = ({ mono = true, ...props }) => /* @__PURE__ */ jsxs30(
1623
1742
  transform: "matrix(.13333 0 0 -.13333 0 441.333)"
1624
1743
  }
1625
1744
  ),
1626
- /* @__PURE__ */ jsx45(
1745
+ /* @__PURE__ */ jsx50(
1627
1746
  "path",
1628
1747
  {
1629
1748
  d: "m1860.24 2178.75 710-263.75-1.25-1900-708.75 261.25v1902.5m743.5 461.34c81.45-240.91-26.47-436.2-241.03-436.2-214.58 0-454.52 195.29-535.96 436.2-81.44 240.89 26.48 436.18 241.03 436.18 214.57 0 454.51-195.29 535.96-436.18",
@@ -1636,7 +1755,7 @@ var IIIFLogo = ({ mono = true, ...props }) => /* @__PURE__ */ jsxs30(
1636
1755
  transform: "matrix(.13333 0 0 -.13333 0 441.333)"
1637
1756
  }
1638
1757
  ),
1639
- /* @__PURE__ */ jsx45(
1758
+ /* @__PURE__ */ jsx50(
1640
1759
  "path",
1641
1760
  {
1642
1761
  d: "M3700.24 3310v-652.5s-230 90-257.5-142.5c-2.5-247.5 0-336.25 0-336.25l257.5 83.75V1690l-258.61-92.5v-1335L2735.24 0v2360s-15 850 965 950",
@@ -1654,8 +1773,8 @@ var IIIFLogo = ({ mono = true, ...props }) => /* @__PURE__ */ jsxs30(
1654
1773
  );
1655
1774
 
1656
1775
  // src/icons/HTMLIcon.tsx
1657
- import { jsx as jsx46 } from "react/jsx-runtime";
1658
- var HTMLIcon = (props) => /* @__PURE__ */ jsx46("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx46(
1776
+ import { jsx as jsx51 } from "react/jsx-runtime";
1777
+ var HTMLIcon = (props) => /* @__PURE__ */ jsx51("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx51(
1659
1778
  "path",
1660
1779
  {
1661
1780
  d: "M0-360v-240h60v80h80v-80h60v240h-60v-100H60v100H0Zm310 0v-180h-70v-60h200v60h-70v180h-60Zm170 0v-200q0-17 11.5-28.5T520-600h180q17 0 28.5 11.5T740-560v200h-60v-180h-40v140h-60v-140h-40v180h-60Zm320 0v-240h60v180h100v60H800Z",
@@ -1664,8 +1783,8 @@ var HTMLIcon = (props) => /* @__PURE__ */ jsx46("svg", { xmlns: "http://www.w3.o
1664
1783
  ) });
1665
1784
 
1666
1785
  // src/icons/IIIFBrowserIcon.tsx
1667
- import { jsx as jsx47 } from "react/jsx-runtime";
1668
- var IIIFBrowserIcon = (props) => /* @__PURE__ */ jsx47("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx47(
1786
+ import { jsx as jsx52 } from "react/jsx-runtime";
1787
+ var IIIFBrowserIcon = (props) => /* @__PURE__ */ jsx52("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx52(
1669
1788
  "path",
1670
1789
  {
1671
1790
  d: "M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h200v80H200v560h560v-214l80 80v134q0 33-23.5 56.5T760-120H200Zm40-160 120-160 90 120 120-160 150 200H240Zm622-144L738-548q-21 14-45 21t-51 7q-74 0-126-52.5T464-700q0-75 52.5-127.5T644-880q75 0 127.5 52.5T824-700q0 27-8 52t-20 46l122 122-56 56ZM644-600q42 0 71-29t29-71q0-42-29-71t-71-29q-42 0-71 29t-29 71q0 42 29 71t71 29Z",
@@ -1673,9 +1792,59 @@ var IIIFBrowserIcon = (props) => /* @__PURE__ */ jsx47("svg", { xmlns: "http://w
1673
1792
  }
1674
1793
  ) });
1675
1794
 
1795
+ // src/icons/InfoIcon.tsx
1796
+ import { jsx as jsx53, jsxs as jsxs33 } from "react/jsx-runtime";
1797
+ function InfoIcon({ title, titleId, ...props }) {
1798
+ return /* @__PURE__ */ jsxs33("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", "aria-labelledby": titleId, ...props, children: [
1799
+ title ? /* @__PURE__ */ jsx53("title", { id: titleId, children: title }) : null,
1800
+ /* @__PURE__ */ jsx53("path", { d: "M0 0h24v24H0V0z", fill: "none" }),
1801
+ /* @__PURE__ */ jsx53(
1802
+ "path",
1803
+ {
1804
+ d: "M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z",
1805
+ fill: "currentColor"
1806
+ }
1807
+ )
1808
+ ] });
1809
+ }
1810
+
1811
+ // src/icons/ListingIcon.tsx
1812
+ import { jsx as jsx54, jsxs as jsxs34 } from "react/jsx-runtime";
1813
+ function ListingIcon({
1814
+ title,
1815
+ titleId,
1816
+ ...props
1817
+ }) {
1818
+ return /* @__PURE__ */ jsxs34(
1819
+ "svg",
1820
+ {
1821
+ xmlns: "http://www.w3.org/2000/svg",
1822
+ viewBox: "0 0 24 24",
1823
+ width: "1em",
1824
+ height: "1em",
1825
+ "aria-labelledby": titleId,
1826
+ ...props,
1827
+ children: [
1828
+ title ? /* @__PURE__ */ jsx54("title", { id: titleId, children: title }) : null,
1829
+ /* @__PURE__ */ jsxs34("g", { fill: "none", children: [
1830
+ /* @__PURE__ */ jsx54("path", { d: "M0 0h24v24H0V0z" }),
1831
+ /* @__PURE__ */ jsx54("path", { d: "M0 0h24v24H0V0z", opacity: ".87" })
1832
+ ] }),
1833
+ /* @__PURE__ */ jsx54(
1834
+ "path",
1835
+ {
1836
+ d: "M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7zm-4 6h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z",
1837
+ fill: "currentColor"
1838
+ }
1839
+ )
1840
+ ]
1841
+ }
1842
+ );
1843
+ }
1844
+
1676
1845
  // src/icons/YouTubeIcon.tsx
1677
- import { jsx as jsx48 } from "react/jsx-runtime";
1678
- var YouTubeIcon = (props) => /* @__PURE__ */ jsx48("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx48(
1846
+ import { jsx as jsx55 } from "react/jsx-runtime";
1847
+ var YouTubeIcon = (props) => /* @__PURE__ */ jsx55("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx55(
1679
1848
  "path",
1680
1849
  {
1681
1850
  d: "M616-242q-27 1-51.5 1.5t-43.5.5h-41q-71 0-133-2-53-2-104.5-5.5T168-257q-26-7-45-26t-26-45q-6-23-9.5-56T82-447q-2-36-2-73t2-73q2-30 5.5-63t9.5-56q7-26 26-45t45-26q23-6 74.5-9.5T347-798q62-2 133-2t133 2q53 2 104.5 5.5T792-783q26 7 45 26t26 45q6 23 9.5 56t5.5 63q2 36 2 73v17q-19-8-39-12.5t-41-4.5q-83 0-141.5 58.5T600-320q0 21 4 40.5t12 37.5ZM400-400l208-120-208-120v240Zm360 200v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80Z",
@@ -1683,9 +1852,34 @@ var YouTubeIcon = (props) => /* @__PURE__ */ jsx48("svg", { xmlns: "http://www.w
1683
1852
  }
1684
1853
  ) });
1685
1854
 
1855
+ // src/icons/ListEditIcon.tsx
1856
+ import { jsx as jsx56, jsxs as jsxs35 } from "react/jsx-runtime";
1857
+ function ListEditIcon({
1858
+ title,
1859
+ titleId,
1860
+ ...props
1861
+ }) {
1862
+ return /* @__PURE__ */ jsxs35(
1863
+ "svg",
1864
+ {
1865
+ xmlns: "http://www.w3.org/2000/svg",
1866
+ height: "24",
1867
+ viewBox: "0 0 24 24",
1868
+ width: "24",
1869
+ "aria-labelledby": titleId,
1870
+ ...props,
1871
+ children: [
1872
+ title ? /* @__PURE__ */ jsx56("title", { id: titleId, children: title }) : null,
1873
+ /* @__PURE__ */ jsx56("path", { d: "M0 0h24v24H0V0z", fill: "none" }),
1874
+ /* @__PURE__ */ jsx56("path", { d: "M14.06 9.02l.92.92L5.92 19H5v-.92l9.06-9.06M17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29zm-3.6 3.19L3 17.25V21h3.75L17.81 9.94l-3.75-3.75z" })
1875
+ ]
1876
+ }
1877
+ );
1878
+ }
1879
+
1686
1880
  // src/icons/VideoIcon.tsx
1687
- import { jsx as jsx49 } from "react/jsx-runtime";
1688
- var VideoIcon = (props) => /* @__PURE__ */ jsx49("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx49(
1881
+ import { jsx as jsx57 } from "react/jsx-runtime";
1882
+ var VideoIcon = (props) => /* @__PURE__ */ jsx57("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx57(
1689
1883
  "path",
1690
1884
  {
1691
1885
  d: "M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h480q33 0 56.5 23.5T720-720v180l160-160v440L720-420v180q0 33-23.5 56.5T640-160H160Zm0-80h480v-480H160v480Zm0 0v-480 480Z",
@@ -1694,8 +1888,8 @@ var VideoIcon = (props) => /* @__PURE__ */ jsx49("svg", { xmlns: "http://www.w3.
1694
1888
  ) });
1695
1889
 
1696
1890
  // src/icons/AudioIcon.tsx
1697
- import { jsx as jsx50 } from "react/jsx-runtime";
1698
- var AudioIcon = (props) => /* @__PURE__ */ jsx50("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx50(
1891
+ import { jsx as jsx58 } from "react/jsx-runtime";
1892
+ var AudioIcon = (props) => /* @__PURE__ */ jsx58("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx58(
1699
1893
  "path",
1700
1894
  {
1701
1895
  d: "M480-400q-50 0-85-35t-35-85v-240q0-50 35-85t85-35q50 0 85 35t35 85v240q0 50-35 85t-85 35Zm0-240Zm-40 520v-123q-104-14-172-93t-68-184h80q0 83 58.5 141.5T480-320q83 0 141.5-58.5T680-520h80q0 105-68 184t-172 93v123h-80Zm40-360q17 0 28.5-11.5T520-520v-240q0-17-11.5-28.5T480-800q-17 0-28.5 11.5T440-760v240q0 17 11.5 28.5T480-480Z",
@@ -1704,8 +1898,8 @@ var AudioIcon = (props) => /* @__PURE__ */ jsx50("svg", { xmlns: "http://www.w3.
1704
1898
  ) });
1705
1899
 
1706
1900
  // src/icons/EmptyCanvasIcon.tsx
1707
- import { jsx as jsx51 } from "react/jsx-runtime";
1708
- var EmptyCanvasIcon = (props) => /* @__PURE__ */ jsx51("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx51(
1901
+ import { jsx as jsx59 } from "react/jsx-runtime";
1902
+ var EmptyCanvasIcon = (props) => /* @__PURE__ */ jsx59("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "#5f6368", viewBox: "0 -960 960 960", ...props, children: /* @__PURE__ */ jsx59(
1709
1903
  "path",
1710
1904
  {
1711
1905
  d: "M240-80q-33 0-56.5-23.5T160-160v-640q0-33 23.5-56.5T240-880h320l240 240v480q0 33-23.5 56.5T720-80H240Zm280-520v-200H240v640h480v-440H520ZM240-800v200-200 640-640Z",
@@ -1714,14 +1908,14 @@ var EmptyCanvasIcon = (props) => /* @__PURE__ */ jsx51("svg", { xmlns: "http://w
1714
1908
  ) });
1715
1909
 
1716
1910
  // src/icons/AddIcon.tsx
1717
- import { jsx as jsx52, jsxs as jsxs31 } from "react/jsx-runtime";
1911
+ import { jsx as jsx60, jsxs as jsxs36 } from "react/jsx-runtime";
1718
1912
  function AddIcon({
1719
1913
  className: className2,
1720
1914
  inline,
1721
1915
  height = 16,
1722
1916
  color = "black"
1723
1917
  }) {
1724
- return /* @__PURE__ */ jsxs31(
1918
+ return /* @__PURE__ */ jsxs36(
1725
1919
  "svg",
1726
1920
  {
1727
1921
  xmlns: "http://www.w3.org/2000/svg",
@@ -1732,17 +1926,17 @@ function AddIcon({
1732
1926
  style: { verticalAlign: inline ? "bottom" : void 0 },
1733
1927
  className: className2,
1734
1928
  children: [
1735
- /* @__PURE__ */ jsx52("path", { d: "M0 0h24v24H0z", fill: "none" }),
1736
- /* @__PURE__ */ jsx52("path", { d: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z", fill: "currentColor" })
1929
+ /* @__PURE__ */ jsx60("path", { d: "M0 0h24v24H0z", fill: "none" }),
1930
+ /* @__PURE__ */ jsx60("path", { d: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z", fill: "currentColor" })
1737
1931
  ]
1738
1932
  }
1739
1933
  );
1740
1934
  }
1741
1935
 
1742
1936
  // src/icons/MoreMenu.tsx
1743
- import { jsx as jsx53, jsxs as jsxs32 } from "react/jsx-runtime";
1937
+ import { jsx as jsx61, jsxs as jsxs37 } from "react/jsx-runtime";
1744
1938
  function MoreMenu2() {
1745
- return /* @__PURE__ */ jsxs32(
1939
+ return /* @__PURE__ */ jsxs37(
1746
1940
  "svg",
1747
1941
  {
1748
1942
  xmlns: "http://www.w3.org/2000/svg",
@@ -1750,8 +1944,8 @@ function MoreMenu2() {
1750
1944
  viewBox: "0 0 24 24",
1751
1945
  width: "1em",
1752
1946
  children: [
1753
- /* @__PURE__ */ jsx53("path", { d: "M0 0h24v24H0z", fill: "none" }),
1754
- /* @__PURE__ */ jsx53(
1947
+ /* @__PURE__ */ jsx61("path", { d: "M0 0h24v24H0z", fill: "none" }),
1948
+ /* @__PURE__ */ jsx61(
1755
1949
  "path",
1756
1950
  {
1757
1951
  d: "M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z",
@@ -1763,14 +1957,78 @@ function MoreMenu2() {
1763
1957
  );
1764
1958
  }
1765
1959
 
1960
+ // src/icons/PreviewIcon.tsx
1961
+ import { jsx as jsx62 } from "react/jsx-runtime";
1962
+ function PreviewIcon(props) {
1963
+ return /* @__PURE__ */ jsx62("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ jsx62(
1964
+ "path",
1965
+ {
1966
+ fill: "currentColor",
1967
+ d: "M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5s5 2.24 5 5s-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3s3-1.34 3-3s-1.34-3-3-3"
1968
+ }
1969
+ ) });
1970
+ }
1971
+
1972
+ // src/icons/ImageListIcon.tsx
1973
+ import { jsx as jsx63 } from "react/jsx-runtime";
1974
+ function ImageListIcon(props) {
1975
+ return /* @__PURE__ */ jsx63("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ jsx63(
1976
+ "path",
1977
+ {
1978
+ fill: "currentColor",
1979
+ d: "M1 5h2v14H1zm4 0h2v14H5zm17 0H10c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1M11 17l2.5-3.15L15.29 16l2.5-3.22L21 17z"
1980
+ }
1981
+ ) });
1982
+ }
1983
+
1984
+ // src/icons/BackIcon.tsx
1985
+ import { jsx as jsx64 } from "react/jsx-runtime";
1986
+ function BackIcon(props) {
1987
+ return /* @__PURE__ */ jsx64("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ jsx64("path", { fill: "currentColor", d: "M20 11H7.83l5.59-5.59L12 4l-8 8l8 8l1.41-1.41L7.83 13H20z" }) });
1988
+ }
1989
+
1990
+ // src/icons/GridIcon.tsx
1991
+ import { jsx as jsx65, jsxs as jsxs38 } from "react/jsx-runtime";
1992
+ function GridIcon(props) {
1993
+ return /* @__PURE__ */ jsxs38("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props, children: [
1994
+ /* @__PURE__ */ jsx65(
1995
+ "path",
1996
+ {
1997
+ fill: "currentColor",
1998
+ d: "M10 10h4v4h-4zm0 6h4v4h-4zM4 4h4v4H4zm0 6h4v4H4zm0 6h4v4H4zM16 4h4v4h-4zm0 6h4v4h-4zm0 6h4v4h-4zM10 4h4v4h-4z",
1999
+ opacity: ".3"
2000
+ }
2001
+ ),
2002
+ /* @__PURE__ */ jsx65(
2003
+ "path",
2004
+ {
2005
+ fill: "currentColor",
2006
+ d: "M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2M8 20H4v-4h4zm0-6H4v-4h4zm0-6H4V4h4zm6 12h-4v-4h4zm0-6h-4v-4h4zm0-6h-4V4h4zm6 12h-4v-4h4zm0-6h-4v-4h4zm0-6h-4V4h4z"
2007
+ }
2008
+ )
2009
+ ] });
2010
+ }
2011
+
2012
+ // src/icons/ScaledImageIcon.tsx
2013
+ import { jsx as jsx66 } from "react/jsx-runtime";
2014
+ function ScaledImageIcon(props) {
2015
+ return /* @__PURE__ */ jsx66("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ jsx66(
2016
+ "path",
2017
+ {
2018
+ fill: "currentColor",
2019
+ d: "M21 15h2v2h-2zm0-4h2v2h-2zm2 8h-2v2c1 0 2-1 2-2M13 3h2v2h-2zm8 4h2v2h-2zm0-4v2h2c0-1-1-2-2-2M1 7h2v2H1zm16-4h2v2h-2zm0 16h2v2h-2zM3 3C2 3 1 4 1 5h2zm6 0h2v2H9zM5 3h2v2H5zm-4 8v8c0 1.1.9 2 2 2h12V11zm2 8l2.5-3.21l1.79 2.15l2.5-3.22L13 19z"
2020
+ }
2021
+ ) });
2022
+ }
2023
+
1766
2024
  // src/ErrorMessage.tsx
1767
- import { twMerge as twMerge7 } from "tailwind-merge";
1768
- import { jsx as jsx54 } from "react/jsx-runtime";
2025
+ import { twMerge as twMerge8 } from "tailwind-merge";
2026
+ import { jsx as jsx67 } from "react/jsx-runtime";
1769
2027
  function ErrorMessage({ children, small = false, className: className2 }) {
1770
- return /* @__PURE__ */ jsx54(
2028
+ return /* @__PURE__ */ jsx67(
1771
2029
  "div",
1772
2030
  {
1773
- className: twMerge7(
2031
+ className: twMerge8(
1774
2032
  "bg-red-500 text-white",
1775
2033
  "border-1 drop-shadow border-red-700 w-full rounded-md py-2 px-4 leading-[1.9em] flex items-center",
1776
2034
  "has-[a]:text-white",
@@ -1804,11 +2062,11 @@ function useFastList(list, firstRender = 24) {
1804
2062
 
1805
2063
  // src/RenderTextualContent.tsx
1806
2064
  import { useState as useState6 } from "react";
1807
- import { Button as Button6 } from "react-aria-components";
2065
+ import { Button as Button7 } from "react-aria-components";
1808
2066
  import {
1809
- LocaleString as LocaleString3
2067
+ LocaleString as LocaleString5
1810
2068
  } from "react-iiif-vault";
1811
- import { jsx as jsx55, jsxs as jsxs33 } from "react/jsx-runtime";
2069
+ import { jsx as jsx68, jsxs as jsxs39 } from "react/jsx-runtime";
1812
2070
  function RenderTextualContent(props) {
1813
2071
  const languages = props.strategy.items.map(
1814
2072
  (item) => Object.keys(item.text)[0]
@@ -1817,10 +2075,10 @@ function RenderTextualContent(props) {
1817
2075
  const selected = props.strategy.items.find(
1818
2076
  (item) => Object.keys(item.text)[0] === langauge
1819
2077
  );
1820
- return /* @__PURE__ */ jsxs33("div", { className: "overflow-y-auto bg-white shadow", children: [
1821
- /* @__PURE__ */ jsx55("div", { className: "flex gap-2 border-b", children: languages.map((language) => {
1822
- return /* @__PURE__ */ jsx55(
1823
- Button6,
2078
+ return /* @__PURE__ */ jsxs39("div", { className: "overflow-y-auto bg-white shadow", children: [
2079
+ /* @__PURE__ */ jsx68("div", { className: "flex gap-2 border-b", children: languages.map((language) => {
2080
+ return /* @__PURE__ */ jsx68(
2081
+ Button7,
1824
2082
  {
1825
2083
  className: `py-1 px-3 ${langauge === language ? "bg-me-500 text-white" : "bg-white text-black"}`,
1826
2084
  onPress: () => setLanguage(language),
@@ -1829,11 +2087,11 @@ function RenderTextualContent(props) {
1829
2087
  language
1830
2088
  );
1831
2089
  }) }),
1832
- /* @__PURE__ */ jsx55("div", { className: "p-4 prose", children: /* @__PURE__ */ jsx55(
1833
- LocaleString3,
2090
+ /* @__PURE__ */ jsx68("div", { className: "p-4 prose", children: /* @__PURE__ */ jsx68(
2091
+ LocaleString5,
1834
2092
  {
1835
2093
  enableDangerouslySetInnerHTML: true,
1836
- defaultText: /* @__PURE__ */ jsx55("span", { className: "text-gray-500 my-8", children: "No content available" }),
2094
+ defaultText: /* @__PURE__ */ jsx68("span", { className: "text-gray-500 my-8", children: "No content available" }),
1837
2095
  children: selected?.text
1838
2096
  }
1839
2097
  ) })
@@ -1847,15 +2105,15 @@ import "@vidstack/react/player/styles/default/captions.css";
1847
2105
  import "@vidstack/react/player/styles/default/layouts/video.css";
1848
2106
  import { MediaPlayer, MediaProvider, Poster, Gesture, Track } from "@vidstack/react";
1849
2107
  import { defaultLayoutIcons, DefaultVideoLayout } from "@vidstack/react/player/layouts/default";
1850
- import { getValue } from "@iiif/helpers";
2108
+ import { getValue as getValue3 } from "@iiif/helpers";
1851
2109
  import { useRef as useRef5 } from "react";
1852
- import { Fragment as Fragment5, jsx as jsx56, jsxs as jsxs34 } from "react/jsx-runtime";
2110
+ import { Fragment as Fragment5, jsx as jsx69, jsxs as jsxs40 } from "react/jsx-runtime";
1853
2111
  function IIIFMediaPlayer(props) {
1854
2112
  const mediaPlayer = useRef5(null);
1855
2113
  const captions = props.captions || [];
1856
2114
  const language = props.language;
1857
2115
  const timeRef = useRef5(props.startTime || 0);
1858
- return /* @__PURE__ */ jsx56(
2116
+ return /* @__PURE__ */ jsx69(
1859
2117
  MediaPlayer,
1860
2118
  {
1861
2119
  onTimeUpdate: (time) => {
@@ -1876,29 +2134,29 @@ function IIIFMediaPlayer(props) {
1876
2134
  type: props.media.format
1877
2135
  }
1878
2136
  ],
1879
- children: /* @__PURE__ */ jsxs34(MediaProvider, { className: "w-full h-full [&>video]:w-full [&>video]:h-full [&>video]:object-contain", children: [
2137
+ children: /* @__PURE__ */ jsxs40(MediaProvider, { className: "w-full h-full [&>video]:w-full [&>video]:h-full [&>video]:object-contain", children: [
1880
2138
  captions.map((caption) => {
1881
- return /* @__PURE__ */ jsx56(
2139
+ return /* @__PURE__ */ jsx69(
1882
2140
  Track,
1883
2141
  {
1884
2142
  src: caption.id,
1885
2143
  kind: "subtitles",
1886
- label: getValue(caption.label),
2144
+ label: getValue3(caption.label),
1887
2145
  default: caption.language === language,
1888
2146
  language: caption.language
1889
2147
  },
1890
2148
  caption.id
1891
2149
  );
1892
2150
  }),
1893
- props.poster ? /* @__PURE__ */ jsx56(
2151
+ props.poster ? /* @__PURE__ */ jsx69(
1894
2152
  Poster,
1895
2153
  {
1896
2154
  className: "absolute inset-0 bg-black block h-full w-full opacity-0 transition-opacity data-[visible]:opacity-100 object-contain",
1897
2155
  src: props.poster
1898
2156
  }
1899
2157
  ) : null,
1900
- /* @__PURE__ */ jsx56(Gestures, {}),
1901
- /* @__PURE__ */ jsx56(
2158
+ /* @__PURE__ */ jsx69(Gestures, {}),
2159
+ /* @__PURE__ */ jsx69(
1902
2160
  DefaultVideoLayout,
1903
2161
  {
1904
2162
  className: "z-1",
@@ -1911,8 +2169,8 @@ function IIIFMediaPlayer(props) {
1911
2169
  );
1912
2170
  }
1913
2171
  function Gestures() {
1914
- return /* @__PURE__ */ jsxs34(Fragment5, { children: [
1915
- /* @__PURE__ */ jsx56(
2172
+ return /* @__PURE__ */ jsxs40(Fragment5, { children: [
2173
+ /* @__PURE__ */ jsx69(
1916
2174
  Gesture,
1917
2175
  {
1918
2176
  className: "pointer-coarse:hidden absolute top-0 start-12 bottom-20 right-0 -z-1 block",
@@ -1920,17 +2178,21 @@ function Gestures() {
1920
2178
  action: "toggle:paused"
1921
2179
  }
1922
2180
  ),
1923
- /* @__PURE__ */ jsx56(Gesture, { className: "absolute inset-0 z-0 block h-full w-full", event: "dblpointerup", action: "toggle:fullscreen" })
2181
+ /* @__PURE__ */ jsx69(Gesture, { className: "absolute inset-0 z-0 block h-full w-full", event: "dblpointerup", action: "toggle:fullscreen" })
1924
2182
  ] });
1925
2183
  }
1926
2184
  export {
2185
+ AccessibilityButton,
1927
2186
  ActionButton,
1928
2187
  AddIcon,
1929
2188
  AddImageIcon,
1930
2189
  AtlasBanner,
1931
2190
  AudioIcon,
2191
+ BackIcon,
1932
2192
  CanvasThumbnailGridItem,
1933
2193
  Card3D,
2194
+ CollectionIcon,
2195
+ CollectionListItem,
1934
2196
  ConfirmSelectionButton,
1935
2197
  ControlButton,
1936
2198
  CreateCanvasIcon,
@@ -1943,6 +2205,7 @@ export {
1943
2205
  EmptyState,
1944
2206
  ErrorMessage,
1945
2207
  Form,
2208
+ GridIcon,
1946
2209
  HTMLEditor,
1947
2210
  HTMLIcon,
1948
2211
  HandleContainer,
@@ -1950,21 +2213,31 @@ export {
1950
2213
  IIIFLogo,
1951
2214
  IIIFMediaPlayer,
1952
2215
  IconButton,
2216
+ ImageListIcon,
2217
+ InfoIcon,
1953
2218
  ItemWithHandle,
1954
2219
  LazyThumbnail,
2220
+ ListEditIcon,
2221
+ ListingIcon,
1955
2222
  MDXEditor,
1956
2223
  ManifestEditorLogo,
2224
+ ManifestIcon,
2225
+ ManifestListItem,
1957
2226
  ManifestOverviewEmptyState,
1958
2227
  MetadataContainer,
1959
2228
  Modal,
2229
+ ModalBackSlot,
1960
2230
  MoreMenu2 as MoreMenu,
1961
2231
  OpaqueControls,
1962
2232
  PanelSideMenu,
2233
+ PreviewIcon,
1963
2234
  RenderTextualContent,
2235
+ ScaledImageIcon,
1964
2236
  Sidebar,
1965
2237
  SidebarContent,
1966
2238
  SidebarHeader,
1967
2239
  SidebarTabs,
2240
+ Spinner,
1968
2241
  SvgControlBar,
1969
2242
  Tab,
1970
2243
  TabList,