@openpawlabs/diy-guides-ui 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import { type ReactNode } from "react";
2
2
  import { type GuideColor } from "../../types/colors";
3
3
  /**
4
4
  * Optional, editor-only media affordances. Presence switches `GuideStep.Media`
5
- * into edit mode: an empty-state add target, click-to-replace on the main image,
5
+ * into edit mode: an empty-state add target, click-to-annotate on the main image,
6
6
  * a remove control per thumbnail, a "+" tile to append, and (with `onReorderImage`)
7
7
  * drag-to-reorder thumbnails. All members are intent callbacks — the library
8
8
  * performs no file or menu logic. Omit entirely for the read-only reader experience.
@@ -10,8 +10,8 @@ import { type GuideColor } from "../../types/colors";
10
10
  export interface GuideStepMediaEditing {
11
11
  /** Append a new image (e.g. open a file picker). Drives the empty target and "+" tile. */
12
12
  onAddImage?: () => void;
13
- /** Replace the image at `index` (fired by clicking the main image). */
14
- onReplaceImage?: (index: number) => void;
13
+ /** Edit annotations for the image at `index` (fired by clicking the main image). */
14
+ onEditAnnotations?: (index: number) => void;
15
15
  /** Remove the image at `index` (fired by a thumbnail's remove control). */
16
16
  onRemoveImage?: (index: number) => void;
17
17
  /**
@@ -41,7 +41,7 @@ export interface GuideStepProps {
41
41
  completable?: boolean;
42
42
  /**
43
43
  * Editor-only media affordances. When provided, the media area becomes
44
- * editable (add / replace / remove / select). Leave undefined for readers.
44
+ * editable (add / annotate / remove / select). Leave undefined for readers.
45
45
  */
46
46
  mediaEditing?: GuideStepMediaEditing;
47
47
  /** Step body — requires `GuideStep.Media` (≥1 image) and `GuideStep.Bullets` (≥1 bullet). */
@@ -1 +1 @@
1
- {"version":3,"file":"GuideStep.d.ts","sourceRoot":"","sources":["../../../src/components/GuideStep/GuideStep.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GuideStep.d.ts","sourceRoot":"","sources":["../../../src/components/GuideStep/GuideStep.tsx"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@ export default meta;
30
30
  type Story = StoryObj<typeof meta>;
31
31
  export declare const Anatomy: Story;
32
32
  export declare const MultipleImages: Story;
33
+ export declare const MixedMedia: Story;
33
34
  export declare const DotBullets: Story;
34
35
  export declare const SemanticBullets: Story;
35
36
  export declare const ButtonBullet: Story;
@@ -1 +1 @@
1
- {"version":3,"file":"GuideStep.stories.d.ts","sourceRoot":"","sources":["../../../src/components/GuideStep/GuideStep.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAuE5D,QAAA,MAAM,IAAI;;;;oBAqNJ,CAAH;;;;qBASW,CAAC;mBAGD,CAAC;;;;;;;;;;;;;;;;;CArNmB,CAAC;AAEnC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAgCrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAmC5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAsCxB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAoC7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAsC1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAwBvB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KA2GhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KA0B/B,CAAC"}
1
+ {"version":3,"file":"GuideStep.stories.d.ts","sourceRoot":"","sources":["../../../src/components/GuideStep/GuideStep.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAyE5D,QAAA,MAAM,IAAI;;;;oBAmNU,CAAC;;;;qBAYV,CAAC;mBACmG,CAAC;;;;;;;;;;;;;;;;;CApN9E,CAAC;AAEnC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAgCrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAmC5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAiDxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAsCxB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAoC7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAsC1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAwBvB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAgHhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KA0B/B,CAAC"}
@@ -45,6 +45,32 @@ export interface RectangleAnnotation extends MediaAnnotationBase {
45
45
  }
46
46
  export type MediaAnnotation = PointAnnotation | CircleAnnotation | RectangleAnnotation;
47
47
  export type { MediaDisplayRegion };
48
+ /** Active annotation tool: `select` edits existing markers; the rest draw a new shape. */
49
+ export type AnnotationTool = "select" | "point" | "circle" | "rectangle";
50
+ /**
51
+ * Editor-only annotation affordances. Passing this turns the figure into an
52
+ * interactive annotation canvas — click or drag to draw, click to select, drag to
53
+ * move, and drag the handles to resize (the lightbox is disabled). The library owns
54
+ * all frame-percentage geometry and reports intent through these callbacks; tool
55
+ * selection, color choice, and persistence stay with the consumer. Editing relies on
56
+ * stable annotation `id`s so selection and updates can target a specific marker.
57
+ */
58
+ export interface MediaAnnotationEditing {
59
+ /** Active tool (controlled). */
60
+ tool: AnnotationTool;
61
+ /** Color applied to newly drawn annotations. */
62
+ color: GuideColor;
63
+ /** Selected annotation id, or `null` when nothing is selected (controlled). */
64
+ selectedId?: string | null;
65
+ /** Selection changed to an annotation `id`, or `null` when cleared. */
66
+ onSelect?: (id: string | null) => void;
67
+ /** A new annotation was drawn. It carries no `id` — the consumer assigns one. */
68
+ onAdd?: (annotation: MediaAnnotation) => void;
69
+ /** The annotation with `id` was moved or resized. */
70
+ onChange?: (id: string, annotation: MediaAnnotation) => void;
71
+ /** The selected annotation was deleted via `Delete` / `Backspace`. */
72
+ onRemove?: (id: string) => void;
73
+ }
48
74
  export interface MediaFigureProps {
49
75
  /** Image, video, or 3D model source URL. */
50
76
  src: string;
@@ -57,6 +83,17 @@ export interface MediaFigureProps {
57
83
  * scaled to fill the frame without re-encoding the image.
58
84
  */
59
85
  displayRegion?: MediaDisplayRegion;
86
+ /**
87
+ * Let readers click an image to open it full size in a modal lightbox. Applies
88
+ * only to `type="image"`; turn it off in editing contexts where the click drives
89
+ * another action. @default true
90
+ */
91
+ zoomable?: boolean;
92
+ /**
93
+ * Editor-only annotation affordances. When set, the figure becomes an interactive
94
+ * annotation canvas (the lightbox is disabled). Leave undefined for readers.
95
+ */
96
+ annotationEditing?: MediaAnnotationEditing;
60
97
  className?: string;
61
98
  }
62
99
  /**
@@ -65,6 +102,8 @@ export interface MediaFigureProps {
65
102
  * `displayRegion` selects a source-pixel crop. Point markers use
66
103
  * {@link GuideColor} values so they can be visually linked to matching `GuideStep`
67
104
  * bullets; circles and rectangles use the same color for their outline and fill.
105
+ * Image figures are zoomable by default: clicking opens the full-size source in a
106
+ * modal lightbox (see `zoomable`).
68
107
  */
69
- export declare function MediaFigure({ src, type, annotations, displayRegion, className, }: MediaFigureProps): import("react").JSX.Element;
108
+ export declare function MediaFigure({ src, type, annotations, displayRegion, zoomable, annotationEditing, className, }: MediaFigureProps): import("react").JSX.Element;
70
109
  //# sourceMappingURL=MediaFigure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MediaFigure.d.ts","sourceRoot":"","sources":["../../../src/components/MediaFigure/MediaFigure.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,gDAAgD;AAChD,UAAU,mBAAmB;IAC3B,6CAA6C;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uFAAuF;IACvF,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,uBAAuB;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sEAAsE;IACtE,CAAC,EAAE,MAAM,CAAC;IACV,qEAAqE;IACrE,CAAC,EAAE,MAAM,CAAC;IACV,uEAAuE;IACvE,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,IAAI,EAAE,QAAQ,CAAC;IACf,6EAA6E;IAC7E,CAAC,EAAE,MAAM,CAAC;IACV,4EAA4E;IAC5E,CAAC,EAAE,MAAM,CAAC;IACV,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,IAAI,EAAE,WAAW,CAAC;IAClB,qFAAqF;IACrF,EAAE,EAAE,MAAM,CAAC;IACX,oFAAoF;IACpF,EAAE,EAAE,MAAM,CAAC;IACX,wFAAwF;IACxF,EAAE,EAAE,MAAM,CAAC;IACX,uFAAuF;IACvF,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,eAAe,GACvB,eAAe,GACf,gBAAgB,GAChB,mBAAmB,CAAC;AAExB,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAiFnC,MAAM,WAAW,gBAAgB;IAC/B,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACnC,oFAAoF;IACpF,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,IAAc,EACd,WAAgB,EAChB,aAAa,EACb,SAAS,GACV,EAAE,gBAAgB,+BAclB"}
1
+ {"version":3,"file":"MediaFigure.d.ts","sourceRoot":"","sources":["../../../src/components/MediaFigure/MediaFigure.tsx"],"names":[],"mappings":"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"}
@@ -16,6 +16,9 @@ declare const meta: {
16
16
  control: "inline-radio";
17
17
  options: string[];
18
18
  };
19
+ zoomable: {
20
+ control: "boolean";
21
+ };
19
22
  };
20
23
  args: {
21
24
  src: string;
@@ -24,10 +27,12 @@ declare const meta: {
24
27
  export default meta;
25
28
  type Story = StoryObj<typeof meta>;
26
29
  export declare const Default: Story;
30
+ export declare const Lightbox: Story;
27
31
  export declare const WithPointAnnotations: Story;
28
32
  export declare const WithShapeAnnotations: Story;
29
33
  export declare const Video: Story;
30
34
  export declare const Model3D: Story;
31
35
  export declare const TallImageCenterCrop: Story;
32
36
  export declare const DisplayRegion: Story;
37
+ export declare const AnnotationEditor: Story;
33
38
  //# sourceMappingURL=MediaFigure.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MediaFigure.stories.d.ts","sourceRoot":"","sources":["../../../src/components/MediaFigure/MediaFigure.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA0C5C,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;CAa0B,CAAC;AAErC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAcrB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAqBlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KA2ClC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAkBnB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAkBrB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAiBjC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAkB3B,CAAC"}
1
+ {"version":3,"file":"MediaFigure.stories.d.ts","sourceRoot":"","sources":["../../../src/components/MediaFigure/MediaFigure.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EACL,WAAW,EAGZ,MAAM,eAAe,CAAC;AA0DvB,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;CAc0B,CAAC;AAErC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAcrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAiBtB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAqBlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KA2ClC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAkBnB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAkBrB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAiBjC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAkB3B,CAAC;AAKF,eAAO,MAAM,gBAAgB,EAAE,KA0F9B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { MediaAnnotation, MediaAnnotationEditing } from "./MediaFigure";
2
+ export interface MediaFigureAnnotationEditorProps {
3
+ annotations: MediaAnnotation[];
4
+ editing: MediaAnnotationEditing;
5
+ }
6
+ /**
7
+ * Interactive overlay that turns {@link MediaFigure} annotations into a drawing
8
+ * canvas: click or drag to add, click to select, drag to move, and drag the
9
+ * handles to resize. All geometry is computed in frame percentages and reported
10
+ * through the editing callbacks — selection, color, and persistence stay external.
11
+ */
12
+ export declare function MediaFigureAnnotationEditor({ annotations, editing, }: MediaFigureAnnotationEditorProps): import("react").JSX.Element;
13
+ //# sourceMappingURL=MediaFigureAnnotationEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaFigureAnnotationEditor.d.ts","sourceRoot":"","sources":["../../../src/components/MediaFigure/MediaFigureAnnotationEditor.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,eAAe,EACf,sBAAsB,EAGvB,MAAM,eAAe,CAAC;AAkJvB,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,OAAO,EAAE,sBAAsB,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,WAAW,EACX,OAAO,GACR,EAAE,gCAAgC,+BA4OlC"}
@@ -0,0 +1,15 @@
1
+ import type { MediaFigureProps } from "./MediaFigure";
2
+ export interface MediaFigureThumbnailProps {
3
+ /** Source URL of the underlying media. */
4
+ src: string;
5
+ /** Media kind. Non-image types render a colored placeholder. @default "image" */
6
+ type?: MediaFigureProps["type"];
7
+ className?: string;
8
+ }
9
+ /**
10
+ * A square thumbnail for a {@link MediaFigure} source. Images render directly;
11
+ * videos and 3D models — which have no still image — render a colored placeholder
12
+ * (a play icon or "3D") so they never appear as a broken image in a gallery.
13
+ */
14
+ export declare function MediaFigureThumbnail({ src, type, className, }: MediaFigureThumbnailProps): import("react").JSX.Element;
15
+ //# sourceMappingURL=MediaFigureThumbnail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaFigureThumbnail.d.ts","sourceRoot":"","sources":["../../../src/components/MediaFigure/MediaFigureThumbnail.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAmBtD,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,iFAAiF;IACjF,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,GAAG,EACH,IAAc,EACd,SAAS,GACV,EAAE,yBAAyB,+BAsB3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MediaFigureThumbnail.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaFigureThumbnail.test.d.ts","sourceRoot":"","sources":["../../../src/components/MediaFigure/MediaFigureThumbnail.test.tsx"],"names":[],"mappings":""}
@@ -1,3 +1,5 @@
1
1
  export { MediaFigure } from "./MediaFigure";
2
- export type { MediaFigureProps, MediaAnnotation, MediaDisplayRegion, PointAnnotation, CircleAnnotation, RectangleAnnotation, } from "./MediaFigure";
2
+ export type { MediaFigureProps, MediaAnnotation, MediaAnnotationEditing, AnnotationTool, MediaDisplayRegion, PointAnnotation, CircleAnnotation, RectangleAnnotation, } from "./MediaFigure";
3
+ export { MediaFigureThumbnail } from "./MediaFigureThumbnail";
4
+ export type { MediaFigureThumbnailProps } from "./MediaFigureThumbnail";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MediaFigure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MediaFigure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC"}