@squeletteapp/widget 0.3.9 → 0.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.
@@ -8,9 +8,10 @@ type Ticket = {
8
8
  };
9
9
  export declare const showModal: import("@preact/signals").Signal<boolean>;
10
10
  export declare const modalTicket: import("@preact/signals").Signal<Ticket | null>;
11
- export declare function BannerModal({ workspaceSlug, theme, base, }: {
11
+ export declare function BannerModal({ workspaceSlug, theme, base, ticketId, }: {
12
12
  workspaceSlug: string;
13
13
  theme: "light" | "dark";
14
14
  base: string;
15
+ ticketId?: number;
15
16
  }): import("preact").VNode<any> | null;
16
17
  export {};
@@ -2,8 +2,10 @@ type SqueletteBannerWidgetProps = {
2
2
  workspaceSlug: string;
3
3
  theme: "light" | "dark";
4
4
  base?: string;
5
+ debug?: boolean;
6
+ ticketId?: number;
5
7
  };
6
- export declare function Banner({ workspaceSlug, theme, base, }: SqueletteBannerWidgetProps): import("preact").JSX.Element | null;
8
+ export declare function Banner({ workspaceSlug, theme, base, debug, ticketId, }: SqueletteBannerWidgetProps): import("preact").JSX.Element | null;
7
9
  type MarqueeSpanProps = {
8
10
  children: string;
9
11
  duration?: number;
@@ -5,6 +5,8 @@ type BannerInitPayload = {
5
5
  contentTheme?: "light" | "dark";
6
6
  theme?: BannerTheme;
7
7
  base?: string;
8
+ debug?: boolean;
9
+ ticketId?: number;
8
10
  };
9
11
  export type BannerTheme = {
10
12
  bg?: string;
@@ -15,6 +17,8 @@ export type BannerTheme = {
15
17
  buttonHover?: string | number;
16
18
  };
17
19
  export declare const SqueletteBanner: {
18
- init({ slug, theme, contentTheme, base, }: BannerInitPayload): SqueletteBannerElement | null;
20
+ init({ slug, theme, contentTheme, base, debug, ticketId, }: BannerInitPayload): SqueletteBannerElement | null;
19
21
  setTheme(theme: BannerTheme): void;
22
+ setContentTheme(contentTheme: "light" | "dark"): void;
23
+ destroy(): void;
20
24
  };
@@ -0,0 +1,15 @@
1
+ import { h } from "preact";
2
+ interface ChangelogProps {
3
+ workspaceSlug: string;
4
+ workspace: string;
5
+ theme: "light" | "dark";
6
+ contentTheme: "light" | "dark";
7
+ base: string;
8
+ debug?: boolean;
9
+ onClose: () => void;
10
+ }
11
+ /**
12
+ * Changelog component renders iframe pointing to workspace widget changelog page.
13
+ */
14
+ export declare function Changelog({ workspaceSlug, workspace, theme, contentTheme, base, debug, onClose, }: ChangelogProps): h.JSX.Element;
15
+ export {};
@@ -0,0 +1,86 @@
1
+ declare class SqueletteChangelogElement extends HTMLElement {
2
+ private shadow;
3
+ private targetElement;
4
+ private resizeObserver;
5
+ private scrollListener;
6
+ private clickListener;
7
+ private outsideClickListener;
8
+ private isOpen;
9
+ private currentAlign;
10
+ private instanceId;
11
+ static get observedAttributes(): string[];
12
+ constructor();
13
+ connectedCallback(): void;
14
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
15
+ private renderChangelog;
16
+ disconnectedCallback(): void;
17
+ /**
18
+ * Opens the changelog widget with animation based on position.
19
+ */
20
+ private lastToggleTs;
21
+ open(): void;
22
+ /**
23
+ * Toggles the changelog widget open/close state.
24
+ * Debounced to prevent double firing in the same tick (StrictMode / duplicate listeners).
25
+ */
26
+ toggle(): void;
27
+ /**
28
+ * Closes the changelog widget with animation.
29
+ */
30
+ close(): void;
31
+ /**
32
+ * Applies opening animation based on the current align position.
33
+ */
34
+ private applyOpenAnimation;
35
+ /**
36
+ * Applies closing animation.
37
+ */
38
+ private applyCloseAnimation;
39
+ /**
40
+ * Sets up click listener on the target element to toggle changelog.
41
+ * Also sets up element tracking for positioning when element-based.
42
+ */
43
+ private setupClickListener;
44
+ /**
45
+ * Cleans up click listener.
46
+ */
47
+ private cleanupClickListener;
48
+ /**
49
+ * Sets up outside click listener to close the widget.
50
+ */
51
+ private setupOutsideClickListener;
52
+ /**
53
+ * Cleans up outside click listener.
54
+ */
55
+ private cleanupOutsideClickListener;
56
+ /**
57
+ * Updates the widget position based on alignment.
58
+ * Screen-based positioning is relative to viewport.
59
+ * Element-based positioning is relative to the target element.
60
+ */
61
+ private updatePosition;
62
+ /**
63
+ * Positions the widget relative to the viewport.
64
+ */
65
+ private positionRelativeToScreen;
66
+ /**
67
+ * Positions the widget relative to a target element.
68
+ * If position is 'auto', finds the best position based on available viewport space.
69
+ */
70
+ private positionRelativeToElement;
71
+ /**
72
+ * Calculates the best position for the widget based on available viewport space.
73
+ * Returns the position with the most available space.
74
+ */
75
+ private calculateBestPosition;
76
+ /**
77
+ * Sets up ResizeObserver and scroll listener to track element position changes.
78
+ * Only updates position when widget is open.
79
+ */
80
+ private setupElementTracking;
81
+ /**
82
+ * Cleans up observers and listeners.
83
+ */
84
+ private cleanupTracking;
85
+ }
86
+ export { SqueletteChangelogElement };
@@ -0,0 +1,32 @@
1
+ import { SqueletteChangelogElement } from "./element";
2
+ export { SqueletteChangelogElement };
3
+ type ChangelogInitPayload = {
4
+ workspace: string;
5
+ contentTheme?: "light" | "dark";
6
+ theme?: ChangelogTheme;
7
+ base?: string;
8
+ debug?: boolean;
9
+ selector?: string;
10
+ align?: ChangelogAlign;
11
+ height?: number | string;
12
+ };
13
+ export type ChangelogTheme = {
14
+ bg?: string;
15
+ border?: string;
16
+ };
17
+ /**
18
+ * Alignment format: <anchor>-<position>
19
+ * - anchor: "screen" or "element"
20
+ * - position: "top-left" | "top-center" | "top-right" | "left" | "center" | "right" | "bottom-left" | "bottom-center" | "bottom-right" | "auto"
21
+ * - "auto" is only supported for element-based positioning and will automatically choose the best position
22
+ */
23
+ export type ChangelogAlign = "screen-top-left" | "screen-top-center" | "screen-top-right" | "screen-left" | "screen-center" | "screen-right" | "screen-bottom-left" | "screen-bottom-center" | "screen-bottom-right" | "element-top-left" | "element-top-center" | "element-top-right" | "element-left" | "element-center" | "element-right" | "element-bottom-left" | "element-bottom-center" | "element-bottom-right" | "element-auto";
24
+ export declare const SqueletteChangelog: {
25
+ init({ workspace, theme, contentTheme, base, debug, selector, align, height, }: ChangelogInitPayload): SqueletteChangelogElement | null;
26
+ open(): void;
27
+ close(): void;
28
+ toggle(): void;
29
+ setTheme(theme: ChangelogTheme): void;
30
+ setContentTheme(contentTheme: "light" | "dark"): void;
31
+ destroy(): void;
32
+ };
@@ -8,3 +8,5 @@ export { identify, clearIdentity } from "./widget/element";
8
8
  export { createWidget, createFeedbackWidget, createRoadmapWidget, createChangelogWidget, } from "./widget/factories";
9
9
  export * from "./banner";
10
10
  export type { BannerTheme } from "./banner";
11
+ export * from "./changelog";
12
+ export type { ChangelogTheme, ChangelogAlign } from "./changelog";
package/dist/widget.es.js CHANGED
@@ -1,14 +1,16 @@
1
- import { h as a, g as r, S as s, c as d, e as i, b as l, d as g, a as n, f as c, i as W, r as o } from "./index-CqZ9Uw3Y.js";
1
+ import { h as a, g as l, k as s, j as g, S as r, c as n, e as d, b as i, d as c, a as o, f as u, i as S, r as q } from "./index-Bj_9-5Hl.js";
2
2
  export {
3
3
  a as SqueletteBanner,
4
- r as SqueletteBannerElement,
5
- s as SqueletteWidgetElement,
6
- d as clearIdentity,
7
- i as createChangelogWidget,
8
- l as createFeedbackWidget,
9
- g as createRoadmapWidget,
10
- n as createWidget,
11
- c as ensureGlobalHelper,
12
- W as identify,
13
- o as registerSqueletteWidget
4
+ l as SqueletteBannerElement,
5
+ s as SqueletteChangelog,
6
+ g as SqueletteChangelogElement,
7
+ r as SqueletteWidgetElement,
8
+ n as clearIdentity,
9
+ d as createChangelogWidget,
10
+ i as createFeedbackWidget,
11
+ c as createRoadmapWidget,
12
+ o as createWidget,
13
+ u as ensureGlobalHelper,
14
+ S as identify,
15
+ q as registerSqueletteWidget
14
16
  };