@revturbine/sdk 0.2.13
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/headless.js +131 -0
- package/dist/headless.js.map +1 -0
- package/dist/index.js +131 -0
- package/dist/index.js.map +1 -0
- package/dist/types/server-node/client.d.ts +75 -0
- package/dist/types/server-node/client.d.ts.map +1 -0
- package/dist/types/server-node/index.d.ts +37 -0
- package/dist/types/server-node/index.d.ts.map +1 -0
- package/dist/types/server-node/local-server.d.ts +60 -0
- package/dist/types/server-node/local-server.d.ts.map +1 -0
- package/dist/types/server-node/types.d.ts +68 -0
- package/dist/types/server-node/types.d.ts.map +1 -0
- package/dist/types/web-sdk/adapters/api.d.ts +24 -0
- package/dist/types/web-sdk/adapters/api.d.ts.map +1 -0
- package/dist/types/web-sdk/analytics.d.ts +111 -0
- package/dist/types/web-sdk/analytics.d.ts.map +1 -0
- package/dist/types/web-sdk/api-client.d.ts +44 -0
- package/dist/types/web-sdk/api-client.d.ts.map +1 -0
- package/dist/types/web-sdk/browser-runtime.d.ts +62 -0
- package/dist/types/web-sdk/browser-runtime.d.ts.map +1 -0
- package/dist/types/web-sdk/controllers.d.ts +363 -0
- package/dist/types/web-sdk/controllers.d.ts.map +1 -0
- package/dist/types/web-sdk/customer-side.d.ts +1367 -0
- package/dist/types/web-sdk/customer-side.d.ts.map +1 -0
- package/dist/types/web-sdk/env.d.ts +5 -0
- package/dist/types/web-sdk/env.d.ts.map +1 -0
- package/dist/types/web-sdk/generated.d.ts +8 -0
- package/dist/types/web-sdk/generated.d.ts.map +1 -0
- package/dist/types/web-sdk/headless.d.ts +69 -0
- package/dist/types/web-sdk/headless.d.ts.map +1 -0
- package/dist/types/web-sdk/index.d.ts +51 -0
- package/dist/types/web-sdk/index.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/AccessGateSurfaceSlot.d.ts +88 -0
- package/dist/types/web-sdk/placements/AccessGateSurfaceSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/FixedSurfaceSlot.d.ts +56 -0
- package/dist/types/web-sdk/placements/FixedSurfaceSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/MessageSurfaceSlot.d.ts +87 -0
- package/dist/types/web-sdk/placements/MessageSurfaceSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/PlacementRenderer.d.ts +57 -0
- package/dist/types/web-sdk/placements/PlacementRenderer.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/SurfaceSlotComponent.d.ts +70 -0
- package/dist/types/web-sdk/placements/SurfaceSlotComponent.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/abstract/BannerFrame.d.ts +53 -0
- package/dist/types/web-sdk/placements/abstract/BannerFrame.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/abstract/InlineCardPlacement.d.ts +52 -0
- package/dist/types/web-sdk/placements/abstract/InlineCardPlacement.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/abstract/ModalFrame.d.ts +68 -0
- package/dist/types/web-sdk/placements/abstract/ModalFrame.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/abstract/QuotaMeterFrame.d.ts +76 -0
- package/dist/types/web-sdk/placements/abstract/QuotaMeterFrame.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/abstract/index.d.ts +9 -0
- package/dist/types/web-sdk/placements/abstract/index.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/builtin.d.ts +18 -0
- package/dist/types/web-sdk/placements/builtin.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/cta-resolvers.d.ts +67 -0
- package/dist/types/web-sdk/placements/cta-resolvers.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/index.d.ts +28 -0
- package/dist/types/web-sdk/placements/index.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/local-resolver.d.ts +8 -0
- package/dist/types/web-sdk/placements/local-resolver.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/payload-resolution.d.ts +8 -0
- package/dist/types/web-sdk/placements/payload-resolution.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/recommendation.d.ts +35 -0
- package/dist/types/web-sdk/placements/recommendation.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/registry.d.ts +84 -0
- package/dist/types/web-sdk/placements/registry.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/AgentConnectorSlot.d.ts +11 -0
- package/dist/types/web-sdk/placements/slots/AgentConnectorSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/BannerSlot.d.ts +35 -0
- package/dist/types/web-sdk/placements/slots/BannerSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/ButtonSlot.d.ts +23 -0
- package/dist/types/web-sdk/placements/slots/ButtonSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/ChannelPreviewSlots.d.ts +48 -0
- package/dist/types/web-sdk/placements/slots/ChannelPreviewSlots.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/CliSlot.d.ts +11 -0
- package/dist/types/web-sdk/placements/slots/CliSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/CreditBalanceSlot.d.ts +19 -0
- package/dist/types/web-sdk/placements/slots/CreditBalanceSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/FullPageSlot.d.ts +14 -0
- package/dist/types/web-sdk/placements/slots/FullPageSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/InPageSlot.d.ts +13 -0
- package/dist/types/web-sdk/placements/slots/InPageSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/InlineEmbedSlot.d.ts +16 -0
- package/dist/types/web-sdk/placements/slots/InlineEmbedSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/ModalSlot.d.ts +30 -0
- package/dist/types/web-sdk/placements/slots/ModalSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/QuotaMeterSlot.d.ts +19 -0
- package/dist/types/web-sdk/placements/slots/QuotaMeterSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/ToastSlot.d.ts +17 -0
- package/dist/types/web-sdk/placements/slots/ToastSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/TooltipSlot.d.ts +15 -0
- package/dist/types/web-sdk/placements/slots/TooltipSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/index.d.ts +14 -0
- package/dist/types/web-sdk/placements/slots/index.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/surface-slot-constants.d.ts +13 -0
- package/dist/types/web-sdk/placements/surface-slot-constants.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/surface-template-defaults.d.ts +16 -0
- package/dist/types/web-sdk/placements/surface-template-defaults.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/token-derivation.d.ts +7 -0
- package/dist/types/web-sdk/placements/token-derivation.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/types.d.ts +226 -0
- package/dist/types/web-sdk/placements/types.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/usePlacementPersonalization.d.ts +20 -0
- package/dist/types/web-sdk/placements/usePlacementPersonalization.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/useSurfaceSlot.d.ts +60 -0
- package/dist/types/web-sdk/placements/useSurfaceSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/providers/index.d.ts +3 -0
- package/dist/types/web-sdk/providers/index.d.ts.map +1 -0
- package/dist/types/web-sdk/providers/registry.d.ts +8 -0
- package/dist/types/web-sdk/providers/registry.d.ts.map +1 -0
- package/dist/types/web-sdk/providers/types.d.ts +8 -0
- package/dist/types/web-sdk/providers/types.d.ts.map +1 -0
- package/dist/types/web-sdk/react/Placement.d.ts +50 -0
- package/dist/types/web-sdk/react/Placement.d.ts.map +1 -0
- package/dist/types/web-sdk/react/PlacementDecisionInspector.d.ts +40 -0
- package/dist/types/web-sdk/react/PlacementDecisionInspector.d.ts.map +1 -0
- package/dist/types/web-sdk/react/RevTurbineProvider.d.ts +31 -0
- package/dist/types/web-sdk/react/RevTurbineProvider.d.ts.map +1 -0
- package/dist/types/web-sdk/react/SurfaceTypes.d.ts +19 -0
- package/dist/types/web-sdk/react/SurfaceTypes.d.ts.map +1 -0
- package/dist/types/web-sdk/react/UserProfile.d.ts +23 -0
- package/dist/types/web-sdk/react/UserProfile.d.ts.map +1 -0
- package/dist/types/web-sdk/react/index.d.ts +11 -0
- package/dist/types/web-sdk/react/index.d.ts.map +1 -0
- package/dist/types/web-sdk/react/useEntitlement.d.ts +53 -0
- package/dist/types/web-sdk/react/useEntitlement.d.ts.map +1 -0
- package/dist/types/web-sdk/react/usePlacement.d.ts +63 -0
- package/dist/types/web-sdk/react/usePlacement.d.ts.map +1 -0
- package/dist/types/web-sdk/react/useRevTurbine.d.ts +17 -0
- package/dist/types/web-sdk/react/useRevTurbine.d.ts.map +1 -0
- package/dist/types/web-sdk/react/useUsageSnapshot.d.ts +7 -0
- package/dist/types/web-sdk/react/useUsageSnapshot.d.ts.map +1 -0
- package/dist/types/web-sdk/segments.d.ts +9 -0
- package/dist/types/web-sdk/segments.d.ts.map +1 -0
- package/dist/types/web-sdk/storage.d.ts +38 -0
- package/dist/types/web-sdk/storage.d.ts.map +1 -0
- package/dist/types/web-sdk/theme/ThemeContext.d.ts +18 -0
- package/dist/types/web-sdk/theme/ThemeContext.d.ts.map +1 -0
- package/dist/types/web-sdk/theme/defaults.d.ts +13 -0
- package/dist/types/web-sdk/theme/defaults.d.ts.map +1 -0
- package/dist/types/web-sdk/theme/index.d.ts +6 -0
- package/dist/types/web-sdk/theme/index.d.ts.map +1 -0
- package/dist/types/web-sdk/theme/theme-loader.d.ts +26 -0
- package/dist/types/web-sdk/theme/theme-loader.d.ts.map +1 -0
- package/dist/types/web-sdk/theme/types.d.ts +121 -0
- package/dist/types/web-sdk/theme/types.d.ts.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PlacementSlotProps, ResolvedContent } from '../types';
|
|
3
|
+
export interface BannerFrameProps<C extends ResolvedContent = ResolvedContent> extends PlacementSlotProps<C> {
|
|
4
|
+
/** Banner position — sticks to the top or bottom of the viewport. */
|
|
5
|
+
position?: 'top' | 'bottom';
|
|
6
|
+
/**
|
|
7
|
+
* Visual variant that controls default colors.
|
|
8
|
+
* - `default` — uses primary theme color (default)
|
|
9
|
+
* - `info` — uses info/accent color with lighter background
|
|
10
|
+
* - `upsell` — uses accent color (purple-tinted)
|
|
11
|
+
* - `warning` — uses warning color
|
|
12
|
+
*/
|
|
13
|
+
variant?: 'default' | 'info' | 'upsell' | 'warning';
|
|
14
|
+
/** Accent color override (for background). */
|
|
15
|
+
accentColor?: string;
|
|
16
|
+
/** Accent text color override. */
|
|
17
|
+
accentTextColor?: string;
|
|
18
|
+
/** Override dismissibility (defaults to `content.dismissible !== false`). */
|
|
19
|
+
dismissible?: boolean;
|
|
20
|
+
/** Override the CTA label. */
|
|
21
|
+
ctaLabel?: string;
|
|
22
|
+
/** CTA visual style. `button` renders a contrasted pill; `link` renders a text link. */
|
|
23
|
+
ctaVariant?: 'button' | 'link';
|
|
24
|
+
/** Icon element rendered before the text. */
|
|
25
|
+
icon?: React.ReactNode;
|
|
26
|
+
/** Custom banner body (replaces default header + body text). */
|
|
27
|
+
children?: React.ReactNode;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Sticky banner component that handles:
|
|
31
|
+
* - Top/bottom position
|
|
32
|
+
* - Dismiss state + callback
|
|
33
|
+
* - Visibility reset when parent re-shows
|
|
34
|
+
* - Theme-aware default styles
|
|
35
|
+
*
|
|
36
|
+
* Extend by wrapping and injecting `children` for custom body content.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```tsx
|
|
40
|
+
* function TrialBanner(props: PlacementSlotProps<TrialBannerContent>) {
|
|
41
|
+
* return (
|
|
42
|
+
* <BannerFrame {...props} position="top">
|
|
43
|
+
* <span>🔥 {props.content.days_remaining} days left in your trial</span>
|
|
44
|
+
* </BannerFrame>
|
|
45
|
+
* );
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function BannerFrame<C extends ResolvedContent = ResolvedContent>({ content, onCtaClick, onDismiss, visible, className, style, position: positionProp, variant: variantProp, accentColor: accentColorProp, accentTextColor: accentTextColorProp, dismissible: dismissibleProp, ctaLabel, ctaVariant: ctaVariantProp, icon, children, }: BannerFrameProps<C>): React.JSX.Element | null;
|
|
50
|
+
export declare namespace BannerFrame {
|
|
51
|
+
var displayName: string;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=BannerFrame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerFrame.d.ts","sourceRoot":"","sources":["../../../../../placements/abstract/BannerFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAOpE,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,CAC3E,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC5B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpD,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC/B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,EAAE,EACvE,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,eAAe,EAC5B,eAAe,EAAE,mBAAmB,EACpC,WAAW,EAAE,eAAe,EAC5B,QAAQ,EACR,UAAU,EAAE,cAAc,EAC1B,IAAI,EACJ,QAAQ,GACT,EAAE,gBAAgB,CAAC,CAAC,CAAC,4BAuJrB;yBAvKe,WAAW"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PlacementSlotProps, ResolvedContent } from '../types';
|
|
3
|
+
export interface InlineCardPlacementProps<C extends ResolvedContent = ResolvedContent> extends PlacementSlotProps<C> {
|
|
4
|
+
/** Override the CTA label. */
|
|
5
|
+
ctaLabel?: string;
|
|
6
|
+
/**
|
|
7
|
+
* Content alignment.
|
|
8
|
+
* - `left` — standard left-aligned card (default)
|
|
9
|
+
* - `center` — centered content (for gate-style cards)
|
|
10
|
+
*/
|
|
11
|
+
alignment?: 'left' | 'center';
|
|
12
|
+
/**
|
|
13
|
+
* CTA visual style.
|
|
14
|
+
* - `filled` — solid background button (default)
|
|
15
|
+
* - `outline` — border-only button
|
|
16
|
+
* - `inline` — text-only compact button
|
|
17
|
+
*/
|
|
18
|
+
ctaVariant?: 'filled' | 'outline' | 'inline';
|
|
19
|
+
/** Accent color for CTA buttons. */
|
|
20
|
+
accentColor?: string;
|
|
21
|
+
/** Icon element rendered above the header (for gate-style cards). */
|
|
22
|
+
icon?: React.ReactNode;
|
|
23
|
+
/** Custom body to replace default content layout. */
|
|
24
|
+
children?: React.ReactNode;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Abstract inline card/embed placement rendered within the page flow.
|
|
28
|
+
*
|
|
29
|
+
* Handles:
|
|
30
|
+
* - Visibility gating
|
|
31
|
+
* - Theme-aware card container with border, radius, padding
|
|
32
|
+
* - Optional image, header, body, and CTA
|
|
33
|
+
* - `data-rt-placement="inline-embed"` attribute
|
|
34
|
+
*
|
|
35
|
+
* Extend by wrapping and injecting `children` for custom card bodies.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```tsx
|
|
39
|
+
* function FeatureCallout(props: PlacementSlotProps<MyContent>) {
|
|
40
|
+
* return (
|
|
41
|
+
* <InlineCardPlacement {...props}>
|
|
42
|
+
* <FeatureGrid features={props.content.features} />
|
|
43
|
+
* </InlineCardPlacement>
|
|
44
|
+
* );
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function InlineCardPlacement<C extends ResolvedContent = ResolvedContent>({ content, onCtaClick, visible, className, style, ctaLabel, alignment: alignmentProp, ctaVariant: ctaVariantProp, accentColor: accentColorProp, icon, children, }: InlineCardPlacementProps<C>): React.JSX.Element | null;
|
|
49
|
+
export declare namespace InlineCardPlacement {
|
|
50
|
+
var displayName: string;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=InlineCardPlacement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineCardPlacement.d.ts","sourceRoot":"","sources":["../../../../../placements/abstract/InlineCardPlacement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAOpE,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,CACnF,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC7B,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC7C,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,EAAE,EAC/E,OAAO,EACP,UAAU,EACV,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAE,eAAe,EAC5B,IAAI,EACJ,QAAQ,GACT,EAAE,wBAAwB,CAAC,CAAC,CAAC,4BAqH7B;yBAjIe,mBAAmB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PlacementSlotProps, ResolvedContent } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Modal layout variants:
|
|
5
|
+
* - `centered` — single column, centered content (default, existing behavior)
|
|
6
|
+
* - `two_column` — left content + right visual panel (paywall/trial style)
|
|
7
|
+
*/
|
|
8
|
+
export type ModalLayout = 'centered' | 'two_column';
|
|
9
|
+
export interface ModalFrameProps<C extends ResolvedContent = ResolvedContent> extends PlacementSlotProps<C> {
|
|
10
|
+
/**
|
|
11
|
+
* Modal dismissibility behavior.
|
|
12
|
+
* - `optional` — user can dismiss via ESC, close button, or clicking outside
|
|
13
|
+
* - `blocking` — user must interact with a CTA (no dismiss controls)
|
|
14
|
+
*/
|
|
15
|
+
modalType?: 'optional' | 'blocking';
|
|
16
|
+
/**
|
|
17
|
+
* Visual layout variant.
|
|
18
|
+
* - `centered` — classic single-column modal (default)
|
|
19
|
+
* - `two_column` — left content + right side panel with image/gradient
|
|
20
|
+
*/
|
|
21
|
+
layout?: ModalLayout;
|
|
22
|
+
/** Accent color for CTA buttons and decorative elements. */
|
|
23
|
+
accentColor?: string;
|
|
24
|
+
/** Accent background color (e.g. badge backgrounds, light tints). */
|
|
25
|
+
accentBg?: string;
|
|
26
|
+
/** Dialog width override. Defaults to 480px (centered) or 1024px (two_column). */
|
|
27
|
+
dialogWidth?: number | string;
|
|
28
|
+
/** Dialog height override. Only applied in two_column layout. Defaults to 600px. */
|
|
29
|
+
dialogHeight?: number | string;
|
|
30
|
+
/** Badge element rendered above the title (e.g. icon + label). */
|
|
31
|
+
badge?: React.ReactNode;
|
|
32
|
+
/** Side content for two_column layout (rendered in the right panel). */
|
|
33
|
+
sideContent?: React.ReactNode;
|
|
34
|
+
/** Side panel width for two_column layout. Defaults to 420px. */
|
|
35
|
+
sidePanelWidth?: number;
|
|
36
|
+
/** Override the primary CTA label (defaults to `content.cta_label`). */
|
|
37
|
+
ctaLabel?: string;
|
|
38
|
+
/** Override the secondary CTA label (defaults to `content.secondary_cta_label`). */
|
|
39
|
+
secondaryCtaLabel?: string;
|
|
40
|
+
/** Custom body to replace the default text body. */
|
|
41
|
+
children?: React.ReactNode;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Modal overlay component that handles:
|
|
45
|
+
* - Backdrop click dismiss (optional mode)
|
|
46
|
+
* - ESC key dismiss (optional mode)
|
|
47
|
+
* - Focus trap on the dialog
|
|
48
|
+
* - Visibility + dismissed state management
|
|
49
|
+
* - Theme-aware default styles
|
|
50
|
+
*
|
|
51
|
+
* Extend by wrapping and injecting `children` for custom body content.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```tsx
|
|
55
|
+
* function MyModal(props: PlacementSlotProps<MyContent>) {
|
|
56
|
+
* return (
|
|
57
|
+
* <ModalFrame {...props}>
|
|
58
|
+
* <BenefitsList items={props.content.benefits} />
|
|
59
|
+
* </ModalFrame>
|
|
60
|
+
* );
|
|
61
|
+
* }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function ModalFrame<C extends ResolvedContent = ResolvedContent>({ content, onCtaClick, onSecondaryCtaClick, onDismiss, visible, className, style, modalType: modalTypeProp, layout: layoutProp, accentColor, accentBg, dialogWidth, dialogHeight, badge, sideContent, sidePanelWidth, ctaLabel, secondaryCtaLabel, children, }: ModalFrameProps<C>): React.JSX.Element | null;
|
|
65
|
+
export declare namespace ModalFrame {
|
|
66
|
+
var displayName: string;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=ModalFrame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalFrame.d.ts","sourceRoot":"","sources":["../../../../../placements/abstract/ModalFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAOpE;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;AAEpD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,CAC1E,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACpC;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,kEAAkE;IAClE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,wEAAwE;IACxE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,EAAE,EACtE,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,SAAS,EACT,OAAO,EACP,SAAS,EACT,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,UAAU,EAClB,WAAW,EACX,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,KAAK,EACL,WAAW,EACX,cAAoB,EACpB,QAAQ,EACR,iBAAiB,EACjB,QAAQ,GACT,EAAE,eAAe,CAAC,CAAC,CAAC,4BA8RpB;yBAlTe,UAAU"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PlacementSlotProps, ResolvedContent } from '../types';
|
|
3
|
+
export interface QuotaMeterFrameProps<C extends ResolvedContent = ResolvedContent> extends PlacementSlotProps<C> {
|
|
4
|
+
/**
|
|
5
|
+
* Visual display variant.
|
|
6
|
+
* - `progress_bar` — horizontal bar (default)
|
|
7
|
+
* - `circular_gauge` — SVG circle
|
|
8
|
+
* - `numeric_counter` — large number display
|
|
9
|
+
*/
|
|
10
|
+
displayStyle?: 'progress_bar' | 'circular_gauge' | 'numeric_counter';
|
|
11
|
+
/**
|
|
12
|
+
* Size variant.
|
|
13
|
+
* - `standard` — full card with padding (default)
|
|
14
|
+
* - `compact` — minimal inline layout (mini meter)
|
|
15
|
+
*/
|
|
16
|
+
size?: 'standard' | 'compact';
|
|
17
|
+
/** Current usage value (overrides `content.usage_current`). */
|
|
18
|
+
usageCurrent?: number;
|
|
19
|
+
/** Usage limit (overrides `content.usage_limit`). */
|
|
20
|
+
usageLimit?: number;
|
|
21
|
+
/** Percentage threshold — hides the meter when usage is below this. */
|
|
22
|
+
showAtPercent?: number;
|
|
23
|
+
/** Override the CTA label. */
|
|
24
|
+
ctaLabel?: string;
|
|
25
|
+
/** CTA visual style. `button` renders a filled pill; `link` renders a text link. */
|
|
26
|
+
ctaVariant?: 'button' | 'link';
|
|
27
|
+
/** Accent color for the CTA link variant. */
|
|
28
|
+
accentColor?: string;
|
|
29
|
+
/** Custom content rendered below the meter. */
|
|
30
|
+
children?: React.ReactNode;
|
|
31
|
+
}
|
|
32
|
+
export interface CompactCircularGaugeProps {
|
|
33
|
+
/** Value between 0 and 1 (fraction filled). */
|
|
34
|
+
ratio: number;
|
|
35
|
+
/** Rendered size in pixels. Defaults to 16. */
|
|
36
|
+
size?: number;
|
|
37
|
+
/** Override arc/track colors. By default, red/yellow/blue based on ratio. */
|
|
38
|
+
arcColor?: string;
|
|
39
|
+
trackColor?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Minimal circular gauge for inline usage indicators.
|
|
43
|
+
* Can be used standalone or as part of a `QuotaMeterFrame`.
|
|
44
|
+
*/
|
|
45
|
+
export declare function CompactCircularGauge({ ratio, size: sizeProp, arcColor, trackColor }: CompactCircularGaugeProps): React.JSX.Element;
|
|
46
|
+
/**
|
|
47
|
+
* Quota/usage meter with multiple display variants.
|
|
48
|
+
*
|
|
49
|
+
* Handles:
|
|
50
|
+
* - Progress bar, circular gauge, or numeric counter rendering
|
|
51
|
+
* - Threshold-based visibility (`showAtPercent`)
|
|
52
|
+
* - Typed usage props override content fields
|
|
53
|
+
* - `data-rt-placement="quota-meter"` attribute
|
|
54
|
+
*
|
|
55
|
+
* Extend by wrapping and injecting `children` for custom content below the meter.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```tsx
|
|
59
|
+
* function MinutesMeter(props: PlacementSlotProps<MeterContent>) {
|
|
60
|
+
* const { minutesUsed, minutesLimit } = useUsage();
|
|
61
|
+
* return (
|
|
62
|
+
* <QuotaMeterFrame
|
|
63
|
+
* {...props}
|
|
64
|
+
* displayStyle="circular_gauge"
|
|
65
|
+
* usageCurrent={minutesUsed}
|
|
66
|
+
* usageLimit={minutesLimit}
|
|
67
|
+
* />
|
|
68
|
+
* );
|
|
69
|
+
* }
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function QuotaMeterFrame<C extends ResolvedContent = ResolvedContent>({ content, onCtaClick, visible, className, style, displayStyle: displayStyleProp, size: sizeProp, usageCurrent: usageCurrentProp, usageLimit: usageLimitProp, showAtPercent: showAtPercentProp, ctaLabel, ctaVariant: ctaVariantProp, accentColor: accentColorProp, children, }: QuotaMeterFrameProps<C>): React.JSX.Element | null;
|
|
73
|
+
export declare namespace QuotaMeterFrame {
|
|
74
|
+
var displayName: string;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=QuotaMeterFrame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuotaMeterFrame.d.ts","sourceRoot":"","sources":["../../../../../placements/abstract/QuotaMeterFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMpE,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,CAC/E,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC7B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;IACrE;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC/B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAgLD,MAAM,WAAW,yBAAyB;IACxC,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,yBAAyB,qBAyB9G;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,EAAE,EAC3E,OAAO,EACP,UAAU,EACV,OAAO,EACP,SAAS,EACT,KAAK,EACL,YAAY,EAAE,gBAAgB,EAC9B,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,iBAAiB,EAChC,QAAQ,EACR,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAE,eAAe,EAC5B,QAAQ,GACT,EAAE,oBAAoB,CAAC,CAAC,CAAC,4BAgGzB;yBA/Ge,eAAe"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { ModalFrame } from './ModalFrame';
|
|
2
|
+
export type { ModalFrameProps, ModalLayout } from './ModalFrame';
|
|
3
|
+
export { BannerFrame } from './BannerFrame';
|
|
4
|
+
export type { BannerFrameProps } from './BannerFrame';
|
|
5
|
+
export { InlineCardPlacement } from './InlineCardPlacement';
|
|
6
|
+
export type { InlineCardPlacementProps } from './InlineCardPlacement';
|
|
7
|
+
export { QuotaMeterFrame, CompactCircularGauge } from './QuotaMeterFrame';
|
|
8
|
+
export type { QuotaMeterFrameProps, CompactCircularGaugeProps } from './QuotaMeterFrame';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../placements/abstract/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,YAAY,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PlacementTypeRegistry } from './registry';
|
|
2
|
+
/**
|
|
3
|
+
* Register all built-in slot types on the given registry.
|
|
4
|
+
*
|
|
5
|
+
* Built-in types cover the core surface types:
|
|
6
|
+
* - banner → BannerSlot (full-width top/bottom)
|
|
7
|
+
* - modal → ModalSlot (overlay dialog, optional/blocking)
|
|
8
|
+
* - in_page → InPageSlot (card/embed in page flow)
|
|
9
|
+
* - toast → ToastSlot (ephemeral notification)
|
|
10
|
+
* - button → ButtonSlot (nav bar / CTA button)
|
|
11
|
+
* - full_page → FullPageSlot (dedicated managed page)
|
|
12
|
+
* - email/sms/push → channel previews (static out-of-band mocks)
|
|
13
|
+
*
|
|
14
|
+
* Additional specialized types registered as in_page variants:
|
|
15
|
+
* - quota_meter → QuotaMeterSlot (usage meter + upgrade CTA)
|
|
16
|
+
*/
|
|
17
|
+
export declare function registerBuiltinSlotTypes(registry: PlacementTypeRegistry): void;
|
|
18
|
+
//# sourceMappingURL=builtin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../../../placements/builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAcxD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAkN9E"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { CtaResolver, CtaResolverContext, PlacementUiPath } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Registry mapping CTA action types to resolver functions.
|
|
4
|
+
*
|
|
5
|
+
* Customers register a {@link CtaResolver} against an action type — typically a
|
|
6
|
+
* tenant-defined custom action name surfaced through `parseUiPath` — so the
|
|
7
|
+
* {@link PlacementRenderer} can dispatch a CTA click to dedicated logic instead
|
|
8
|
+
* of the generic `onCtaClick` callback. Built-in action types may also be
|
|
9
|
+
* overridden by registering a resolver for them.
|
|
10
|
+
*/
|
|
11
|
+
export declare class CtaResolverRegistry {
|
|
12
|
+
private readonly resolvers;
|
|
13
|
+
/**
|
|
14
|
+
* Register a resolver for an action type. Re-registering the same type
|
|
15
|
+
* replaces the previous resolver (and warns), matching the slot-type
|
|
16
|
+
* registry's override semantics.
|
|
17
|
+
*/
|
|
18
|
+
register(type: string, resolver: CtaResolver): void;
|
|
19
|
+
/**
|
|
20
|
+
* Remove the resolver for an action type.
|
|
21
|
+
* Returns true if a resolver was registered and removed.
|
|
22
|
+
*/
|
|
23
|
+
unregister(type: string): boolean;
|
|
24
|
+
/** Look up the resolver registered for an action type, if any. */
|
|
25
|
+
get(type: string): CtaResolver | undefined;
|
|
26
|
+
/** Whether a resolver is registered for an action type. */
|
|
27
|
+
has(type: string): boolean;
|
|
28
|
+
/** Remove every registered resolver. */
|
|
29
|
+
clear(): void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get or create the default global CTA resolver registry. The
|
|
33
|
+
* {@link PlacementRenderer} uses this when no `ctaResolvers` prop is supplied.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getDefaultCtaResolverRegistry(): CtaResolverRegistry;
|
|
36
|
+
/**
|
|
37
|
+
* Reset the default CTA resolver registry (useful for testing and for tearing
|
|
38
|
+
* down tenant-specific resolvers).
|
|
39
|
+
*/
|
|
40
|
+
export declare function resetDefaultCtaResolverRegistry(): void;
|
|
41
|
+
/**
|
|
42
|
+
* Register a {@link CtaResolver} on the default global registry.
|
|
43
|
+
*
|
|
44
|
+
* This is the ergonomic entry point for customers:
|
|
45
|
+
*
|
|
46
|
+
* ```ts
|
|
47
|
+
* registerCtaResolver('connect_crm', (uiPath) => {
|
|
48
|
+
* openCrmModal(uiPath.url, uiPath.params);
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function registerCtaResolver(type: string, resolver: CtaResolver): void;
|
|
53
|
+
/**
|
|
54
|
+
* Remove a resolver from the default global registry.
|
|
55
|
+
* Returns true if a resolver was registered and removed.
|
|
56
|
+
*/
|
|
57
|
+
export declare function unregisterCtaResolver(type: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Dispatch a CTA activation: invoke the registered resolver for the action
|
|
60
|
+
* type if one exists, otherwise fall back to the supplied callback.
|
|
61
|
+
*
|
|
62
|
+
* Returns `true` when a registered resolver handled the click, `false` when it
|
|
63
|
+
* fell through to `fallback`. A registered resolver fully handles the action —
|
|
64
|
+
* the fallback is not also called.
|
|
65
|
+
*/
|
|
66
|
+
export declare function dispatchCtaClick(uiPath: PlacementUiPath, context: CtaResolverContext, resolvers: CtaResolverRegistry, fallback?: (uiPath: PlacementUiPath) => void): boolean;
|
|
67
|
+
//# sourceMappingURL=cta-resolvers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cta-resolvers.d.ts","sourceRoot":"","sources":["../../../../placements/cta-resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEhF;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAE5D;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IAOnD;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,kEAAkE;IAClE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI1C,2DAA2D;IAC3D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,wCAAwC;IACxC,KAAK,IAAI,IAAI;CAGd;AAKD;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,mBAAmB,CAKnE;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,CAE7E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,mBAAmB,EAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,GAC3C,OAAO,CAQT"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type { PlacementSlotType, PlacementSlotProps, PlacementContentFields, ResolvedContent, PlacementUiPath, PlacementUiPathActionType, PlacementPromotion, RegisterPlacementSlotTypeOptions, PersonalizationContext, PlacementPreviewConfig, PlacementCustomCode, CtaResolver, CtaResolverContext, } from './types';
|
|
2
|
+
export { PlacementTypeRegistry, getDefaultRegistry, resetDefaultRegistry, resolveContent, resolveTokens, parseUiPath, parsePromotion, } from './registry';
|
|
3
|
+
export { CtaResolverRegistry, getDefaultCtaResolverRegistry, resetDefaultCtaResolverRegistry, registerCtaResolver, unregisterCtaResolver, dispatchCtaClick, } from './cta-resolvers';
|
|
4
|
+
export { registerBuiltinSlotTypes } from './builtin';
|
|
5
|
+
export { BannerSlot, ModalSlot, InlineEmbedSlot, InPageSlot, ToastSlot, ButtonSlot, QuotaMeterSlot, FullPageSlot, CliSlot, CreditBalanceSlot, TooltipSlot, AgentConnectorSlot, } from './slots';
|
|
6
|
+
export type { BannerSlotProps, ModalSlotProps, InlineEmbedSlotProps, InPageSlotProps, ToastSlotProps, ButtonSlotProps, QuotaMeterSlotProps, FullPageSlotProps, CliSlotProps, CreditBalanceSlotProps, TooltipSlotProps, AgentConnectorSlotProps, } from './slots';
|
|
7
|
+
export { PlacementRenderer } from './PlacementRenderer';
|
|
8
|
+
export type { PlacementRendererProps } from './PlacementRenderer';
|
|
9
|
+
export { useSurfaceSlot } from './useSurfaceSlot';
|
|
10
|
+
export type { UseSurfaceSlotOptions, UseSurfaceSlotResult } from './useSurfaceSlot';
|
|
11
|
+
export { usePlacementPersonalization } from './usePlacementPersonalization';
|
|
12
|
+
export type { UsePlacementPersonalizationOptions } from './usePlacementPersonalization';
|
|
13
|
+
export { SurfaceSlotComponent, } from './SurfaceSlotComponent';
|
|
14
|
+
export type { SurfaceSlotComponentProps, SurfaceSlotCategory, } from './SurfaceSlotComponent';
|
|
15
|
+
export { FixedSurfaceSlot, FIXED_SURFACE_TEMPLATE_IDS } from './FixedSurfaceSlot';
|
|
16
|
+
export type { FixedSurfaceSlotProps } from './FixedSurfaceSlot';
|
|
17
|
+
export { AccessGateSurfaceSlot, GATED_SURFACE_TEMPLATE_IDS } from './AccessGateSurfaceSlot';
|
|
18
|
+
export type { AccessGateSurfaceSlotProps, AccessGateCheck } from './AccessGateSurfaceSlot';
|
|
19
|
+
export { MessageSurfaceSlot, MESSAGE_SURFACE_TEMPLATE_IDS } from './MessageSurfaceSlot';
|
|
20
|
+
export type { MessageSurfaceSlotProps, MessageSurfaceSlotRef, MessageTriggerType } from './MessageSurfaceSlot';
|
|
21
|
+
export { FIXED_BANNER_TEMPLATE_IDS, GENERAL_BANNER_TEMPLATE_IDS, GENERAL_TOAST_TEMPLATE_IDS, GENERAL_MODAL_TEMPLATE_IDS, } from './surface-template-defaults';
|
|
22
|
+
export { resolvePayloadForUser, resolvePayloadForUserWithProvider, applyValueMaps, createStaticPlacementContentLookupProvider, } from './payload-resolution';
|
|
23
|
+
export type { ResolvedPayload, PlacementContentLookupProvider, } from './payload-resolution';
|
|
24
|
+
export { createStaticPlacementResolver, } from './local-resolver';
|
|
25
|
+
export type { LocalPlacementDataset, LocalPlacementEntry, LocalPlacementPayload, LocalPlacementSurface, StaticPlacementResolverOptions, } from './local-resolver';
|
|
26
|
+
export { derivePlacementPersonalizationTokens } from './token-derivation';
|
|
27
|
+
export * from './abstract';
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../placements/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,kBAAkB,EAClB,gCAAgC,EAChC,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,EACL,UAAU,EACV,SAAS,EACT,eAAe,EACf,UAAU,EACV,SAAS,EACT,UAAU,EACV,cAAc,EACd,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,YAAY,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAGxF,OAAO,EACL,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC5F,YAAY,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE3F,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACxF,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/G,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,cAAc,EACd,0CAA0C,GAC3C,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,eAAe,EACf,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAG1E,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local placement resolver — re-exported from @revt-eng/core.
|
|
3
|
+
*
|
|
4
|
+
* @see @revt-eng/core/resolution/local-resolver
|
|
5
|
+
*/
|
|
6
|
+
export { createStaticPlacementResolver, } from '@revt-eng/core';
|
|
7
|
+
export type { LocalPlacementDataset, LocalPlacementEntry, LocalPlacementPayload, LocalPlacementSurface, StaticPlacementResolverOptions, } from '@revt-eng/core';
|
|
8
|
+
//# sourceMappingURL=local-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-resolver.d.ts","sourceRoot":"","sources":["../../../../placements/local-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payload resolution — re-exported from @revt-eng/core.
|
|
3
|
+
*
|
|
4
|
+
* @see @revt-eng/core/resolution/payload-resolution
|
|
5
|
+
*/
|
|
6
|
+
export { resolveTokens, resolveContent, resolvePayloadForUser, resolvePayloadForUserWithProvider, applyValueMaps, createStaticPlacementContentLookupProvider, } from '@revt-eng/core';
|
|
7
|
+
export type { ResolvedPayload, PlacementContentLookupProvider, } from '@revt-eng/core';
|
|
8
|
+
//# sourceMappingURL=payload-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-resolution.d.ts","sourceRoot":"","sources":["../../../../placements/payload-resolution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,iCAAiC,EACjC,cAAc,EACd,0CAA0C,GAC3C,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,eAAe,EACf,8BAA8B,GAC/B,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** The spec-defined per-placement recommendation strategy. */
|
|
2
|
+
export type RecommendationStrategy = 'next_tier_up' | 'best_value' | 'custom';
|
|
3
|
+
/** Minimal plan shape the dispatcher reads (mirrors `PlanIR`). */
|
|
4
|
+
export interface RecommendationPlanInput {
|
|
5
|
+
source_id: string;
|
|
6
|
+
unique_handle: string;
|
|
7
|
+
name: string;
|
|
8
|
+
tier_position: number;
|
|
9
|
+
sort_order: number;
|
|
10
|
+
}
|
|
11
|
+
/** The resolved recommendation tokens. Empty strings when unresolved. */
|
|
12
|
+
export interface RecommendedPlanTokens {
|
|
13
|
+
recommended_plan_handle: string;
|
|
14
|
+
recommended_plan_name: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the recommended-plan tokens for one placement by strategy.
|
|
18
|
+
*
|
|
19
|
+
* Edge cases all resolve to empty tokens (the top-of-ladder convention from
|
|
20
|
+
* plan #46): empty plan list, unknown current plan, top of the hierarchy,
|
|
21
|
+
* and — for `custom` — a missing/unknown override or an override equal to the
|
|
22
|
+
* user's current plan.
|
|
23
|
+
*
|
|
24
|
+
* @param input.strategy The placement's `recommendation_strategy`.
|
|
25
|
+
* @param input.planOverride The `unique_handle` to force (only read when `strategy === 'custom'`).
|
|
26
|
+
* @param input.currentPlanHandle The user's current commercial plan handle (already normalized by the caller).
|
|
27
|
+
* @param input.plans The tenant's plan hierarchy.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveRecommendedPlanTokens(input: {
|
|
30
|
+
strategy: RecommendationStrategy;
|
|
31
|
+
planOverride?: string;
|
|
32
|
+
currentPlanHandle: string;
|
|
33
|
+
plans: readonly RecommendationPlanInput[];
|
|
34
|
+
}): RecommendedPlanTokens;
|
|
35
|
+
//# sourceMappingURL=recommendation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendation.d.ts","sourceRoot":"","sources":["../../../../placements/recommendation.ts"],"names":[],"mappings":"AAwBA,8DAA8D;AAC9D,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE9E,kEAAkE;AAClE,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yEAAyE;AACzE,MAAM,WAAW,qBAAqB;IACpC,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAOD;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,QAAQ,EAAE,sBAAsB,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;CAC3C,GAAG,qBAAqB,CAuBxB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { RevTurbineSurfaceType, PlacementOutput } from '../customer-side';
|
|
2
|
+
import type { PlacementSlotType, PlacementSlotProps, RegisterPlacementSlotTypeOptions, PersonalizationContext, ResolvedContent, PlacementUiPath, PlacementPromotion } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Registry for placement slot types.
|
|
5
|
+
*
|
|
6
|
+
* Manages built-in and custom placement renderers. The registry resolves
|
|
7
|
+
* a PlacementOutput to the best matching slot type based on surface type
|
|
8
|
+
* and template, then provides the component and resolved props for rendering.
|
|
9
|
+
*/
|
|
10
|
+
export declare class PlacementTypeRegistry {
|
|
11
|
+
private readonly types;
|
|
12
|
+
private readonly surfaceIndex;
|
|
13
|
+
/**
|
|
14
|
+
* Register a placement slot type. If a type with the same id already exists,
|
|
15
|
+
* it is replaced (allows customer overrides of built-in types).
|
|
16
|
+
*/
|
|
17
|
+
register<P extends PlacementSlotProps>(options: RegisterPlacementSlotTypeOptions<P>): void;
|
|
18
|
+
/**
|
|
19
|
+
* Unregister a placement slot type by id.
|
|
20
|
+
* Returns true if the type was found and removed.
|
|
21
|
+
*/
|
|
22
|
+
unregister(id: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Look up a slot type by its id.
|
|
25
|
+
*/
|
|
26
|
+
get(id: string): PlacementSlotType | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Resolve the best matching slot type for a placement output.
|
|
29
|
+
*
|
|
30
|
+
* Resolution order:
|
|
31
|
+
* 1. If the output's surface.template matches a registered type id, use it
|
|
32
|
+
* 2. Find all types for the output's surface.type, sort by priority descending,
|
|
33
|
+
* and pick the first whose `accepts()` returns true
|
|
34
|
+
* 3. Fall back to a 'custom' type if registered
|
|
35
|
+
* 4. Return undefined if no match
|
|
36
|
+
*/
|
|
37
|
+
resolve(output: PlacementOutput): PlacementSlotType | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* List all registered slot types.
|
|
40
|
+
*/
|
|
41
|
+
listAll(): PlacementSlotType[];
|
|
42
|
+
/**
|
|
43
|
+
* List slot types for a specific surface type.
|
|
44
|
+
*/
|
|
45
|
+
listBySurfaceType(surfaceType: RevTurbineSurfaceType): PlacementSlotType[];
|
|
46
|
+
/**
|
|
47
|
+
* Check if a slot type id is registered.
|
|
48
|
+
*/
|
|
49
|
+
has(id: string): boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolve personalization tokens in a string value.
|
|
53
|
+
* Tokens use the `{{token_name}}` format.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveTokens(template: string, context: PersonalizationContext): string;
|
|
56
|
+
/**
|
|
57
|
+
* Resolve all personalization tokens in a content object.
|
|
58
|
+
*/
|
|
59
|
+
export declare function resolveContent(content: Record<string, unknown>, // sdk-ok: boundary-parse
|
|
60
|
+
context: PersonalizationContext): ResolvedContent;
|
|
61
|
+
/**
|
|
62
|
+
* Parse a `cta_path` (or legacy `ui_path`) record from a placement output into
|
|
63
|
+
* a typed {@link PlacementUiPath}.
|
|
64
|
+
*
|
|
65
|
+
* Built-in fields (`url`, `plan_handle`, …) are lifted onto typed properties.
|
|
66
|
+
* The `type` is preserved verbatim for any non-empty string — including
|
|
67
|
+
* tenant-defined custom action names — so a registered {@link CtaResolver} can
|
|
68
|
+
* key on it; only an absent or non-string `type` defaults to `'dismiss'`. Every
|
|
69
|
+
* remaining key is collected into `params` for custom resolvers to read.
|
|
70
|
+
*/
|
|
71
|
+
export declare function parseUiPath(raw: Record<string, unknown>): PlacementUiPath;
|
|
72
|
+
/**
|
|
73
|
+
* Parse a promotion record from a placement output.
|
|
74
|
+
*/
|
|
75
|
+
export declare function parsePromotion(raw?: Record<string, unknown>): PlacementPromotion | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Get or create the default global placement type registry.
|
|
78
|
+
*/
|
|
79
|
+
export declare function getDefaultRegistry(): PlacementTypeRegistry;
|
|
80
|
+
/**
|
|
81
|
+
* Reset the default registry (useful for testing).
|
|
82
|
+
*/
|
|
83
|
+
export declare function resetDefaultRegistry(): void;
|
|
84
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../placements/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gCAAgC,EAChC,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAgBjB;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwC;IAC9D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8C;IAE3E;;;OAGG;IACH,QAAQ,CAAC,CAAC,SAAS,kBAAkB,EAAE,OAAO,EAAE,gCAAgC,CAAC,CAAC,CAAC,GAAG,IAAI;IA2B1F;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAmB/B;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI9C;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,iBAAiB,GAAG,SAAS;IAsB/D;;OAEG;IACH,OAAO,IAAI,iBAAiB,EAAE;IAI9B;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,qBAAqB,GAAG,iBAAiB,EAAE;IAK1E;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAGzB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAgDvF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB;AAC3D,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CAYjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAkBzE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,GAAG,SAAS,CAS5F;AAKD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,qBAAqB,CAM1D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PlacementSlotProps } from '../types';
|
|
2
|
+
type ConnectionState = 'connected' | 'pending' | 'disconnected';
|
|
3
|
+
export type AgentConnectorSlotProps = PlacementSlotProps & {
|
|
4
|
+
connectionState?: ConnectionState;
|
|
5
|
+
};
|
|
6
|
+
export declare function AgentConnectorSlot({ content, onCtaClick, visible, className, style, }: AgentConnectorSlotProps): import("react").JSX.Element | null;
|
|
7
|
+
export declare namespace AgentConnectorSlot {
|
|
8
|
+
var displayName: string;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=AgentConnectorSlot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentConnectorSlot.d.ts","sourceRoot":"","sources":["../../../../../placements/slots/AgentConnectorSlot.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGnD,KAAK,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,GAAG;IACzD,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAcF,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,UAAU,EACV,OAAO,EACP,SAAS,EACT,KAAK,GACN,EAAE,uBAAuB,sCAsFzB;yBA5Fe,kBAAkB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PlacementSlotProps } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Props for {@link BannerSlot}.
|
|
5
|
+
* Extends {@link PlacementSlotProps} with banner-specific options.
|
|
6
|
+
*/
|
|
7
|
+
export type BannerSlotProps = PlacementSlotProps & {
|
|
8
|
+
/** Banner position — sticks to the top or bottom of the viewport. */
|
|
9
|
+
position?: 'top' | 'bottom';
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Full-width sticky banner placement.
|
|
13
|
+
*
|
|
14
|
+
* Renders at the top or bottom of the viewport with a header, body,
|
|
15
|
+
* CTA button, and optional dismiss control.
|
|
16
|
+
*
|
|
17
|
+
* **Content fields used:** `header`, `body`, `message`, `cta_label`, `position`, `dismissible`
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* <BannerSlot
|
|
22
|
+
* placement={output}
|
|
23
|
+
* content={{ header: 'Upgrade to Pro', cta_label: 'Upgrade Now', position: 'top' }}
|
|
24
|
+
* uiPath={{ type: 'navigate_to_plans' }}
|
|
25
|
+
* onCtaClick={() => navigate('/plans')}
|
|
26
|
+
* onDismiss={() => {}}
|
|
27
|
+
* visible={true}
|
|
28
|
+
* />
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function BannerSlot({ content, onCtaClick, onDismiss, visible, className, style, }: BannerSlotProps): React.JSX.Element | null;
|
|
32
|
+
export declare namespace BannerSlot {
|
|
33
|
+
var displayName: string;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=BannerSlot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerSlot.d.ts","sourceRoot":"","sources":["../../../../../placements/slots/BannerSlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGnD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG;IACjD,qEAAqE;IACrE,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC7B,CAAC;AA4BF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,EACP,SAAS,EACT,KAAK,GACN,EAAE,eAAe,4BAkGjB;yBAzGe,UAAU"}
|