@sudobility/subscription-components-rn 1.0.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.
@@ -0,0 +1,71 @@
1
+ export interface SegmentedControlOption<T extends string = string> {
2
+ /** Value for this option */
3
+ value: T;
4
+ /** Display label */
5
+ label: string;
6
+ /** Optional badge text (e.g., "Save 20%") */
7
+ badge?: string;
8
+ /** Whether this option is disabled */
9
+ disabled?: boolean;
10
+ }
11
+ export interface SegmentedControlProps<T extends string = string> {
12
+ /** Available options */
13
+ options: SegmentedControlOption<T>[];
14
+ /** Currently selected value */
15
+ value: T;
16
+ /** Selection change handler */
17
+ onChange: (value: T) => void;
18
+ /** Additional NativeWind classes for the container */
19
+ className?: string;
20
+ /** Whether the control is disabled */
21
+ disabled?: boolean;
22
+ /** Size variant */
23
+ size?: 'sm' | 'md' | 'lg';
24
+ /** Full width mode */
25
+ fullWidth?: boolean;
26
+ /** Accessibility label */
27
+ accessibilityLabel?: string;
28
+ }
29
+ /**
30
+ * SegmentedControl - A toggle control for switching between options
31
+ *
32
+ * Commonly used for billing period selection (Monthly/Yearly).
33
+ * All labels are passed by the consumer for full localization control.
34
+ *
35
+ * @example
36
+ * ```tsx
37
+ * <SegmentedControl
38
+ * options={[
39
+ * { value: 'monthly', label: 'Monthly' },
40
+ * { value: 'yearly', label: 'Yearly', badge: 'Save 20%' },
41
+ * ]}
42
+ * value={billingPeriod}
43
+ * onChange={setBillingPeriod}
44
+ * />
45
+ * ```
46
+ */
47
+ export declare function SegmentedControl<T extends string = string>({ options, value, onChange, className, disabled, size, fullWidth, accessibilityLabel, }: SegmentedControlProps<T>): import("react/jsx-runtime").JSX.Element;
48
+ /**
49
+ * Pre-configured period selector for Monthly/Yearly toggle
50
+ */
51
+ export interface PeriodSelectorProps {
52
+ /** Current period */
53
+ period: 'monthly' | 'yearly';
54
+ /** Called when period changes */
55
+ onPeriodChange: (period: 'monthly' | 'yearly') => void;
56
+ /** Monthly label */
57
+ monthlyLabel?: string;
58
+ /** Yearly label */
59
+ yearlyLabel?: string;
60
+ /** Yearly savings badge */
61
+ yearlySavings?: string;
62
+ /** Size variant */
63
+ size?: 'sm' | 'md' | 'lg';
64
+ /** Custom class */
65
+ className?: string;
66
+ /** Disabled state */
67
+ disabled?: boolean;
68
+ }
69
+ export declare function PeriodSelector({ period, onPeriodChange, monthlyLabel, yearlyLabel, yearlySavings, size, className, disabled, }: PeriodSelectorProps): import("react/jsx-runtime").JSX.Element;
70
+ export default SegmentedControl;
71
+ //# sourceMappingURL=SegmentedControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../src/SegmentedControl.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC/D,4BAA4B;IAC5B,KAAK,EAAE,CAAC,CAAC;IACT,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC9D,wBAAwB;IACxB,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,+BAA+B;IAC/B,KAAK,EAAE,CAAC,CAAC;IACT,+BAA+B;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA0BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC1D,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAc,EACd,QAAgB,EAChB,IAAW,EACX,SAAgB,EAChB,kBAAkB,GACnB,EAAE,qBAAqB,CAAC,CAAC,CAAC,2CAqF1B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qBAAqB;IACrB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,iCAAiC;IACjC,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAC;IACvD,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,cAAc,EACd,YAAwB,EACxB,WAAsB,EACtB,aAAa,EACb,IAAW,EACX,SAAc,EACd,QAAgB,GACjB,EAAE,mBAAmB,2CAiBrB;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { ReactNode } from 'react';
2
+ import { FreeTileConfig, SubscriptionLayoutTrackingData, SubscriptionStatusConfig, ActionButtonConfig } from './types';
3
+ /**
4
+ * Layout variant:
5
+ * - 'selection': User selects a tile, then presses a shared CTA button (default)
6
+ * - 'cta': Each tile has its own CTA button, no shared action buttons
7
+ */
8
+ export type SubscriptionLayoutVariant = 'selection' | 'cta';
9
+ export interface SubscriptionLayoutProps {
10
+ /** Section title */
11
+ title: string;
12
+ /** Subscription tiles to render */
13
+ children: ReactNode;
14
+ /** Error message to display */
15
+ error?: string | null;
16
+ /**
17
+ * Layout variant
18
+ * - 'selection': User selects a tile, then presses primary action button
19
+ * - 'cta': Each tile has its own CTA button (use ctaButton prop on tiles)
20
+ * @default 'selection'
21
+ */
22
+ variant?: SubscriptionLayoutVariant;
23
+ /** Current subscription status configuration */
24
+ currentStatus?: SubscriptionStatusConfig;
25
+ /** Primary action button (e.g., "Subscribe Now") - only shown in 'selection' variant */
26
+ primaryAction?: ActionButtonConfig;
27
+ /** Secondary action button (e.g., "Restore Purchase") - only shown in 'selection' variant */
28
+ secondaryAction?: ActionButtonConfig;
29
+ /** Additional NativeWind classes */
30
+ className?: string;
31
+ /** Custom header content */
32
+ headerContent?: ReactNode;
33
+ /** Content to render above the product tiles (e.g., billing period selector) */
34
+ aboveProducts?: ReactNode;
35
+ /** Custom footer content (rendered above action buttons) */
36
+ footerContent?: ReactNode;
37
+ /** Label for "Current Status" section - for localization */
38
+ currentStatusLabel?: string;
39
+ /**
40
+ * Configuration for the free tile - only used when variant is 'cta'
41
+ * When provided, a "Free" subscription tile will be shown at the start of the list
42
+ */
43
+ freeTileConfig?: FreeTileConfig;
44
+ /** Optional tracking callback */
45
+ onTrack?: (data: SubscriptionLayoutTrackingData) => void;
46
+ /** Optional tracking label */
47
+ trackingLabel?: string;
48
+ /** Optional component name for tracking */
49
+ componentName?: string;
50
+ }
51
+ /**
52
+ * SubscriptionLayout - Container component for subscription selection UI
53
+ *
54
+ * Provides a consistent layout with:
55
+ * - Optional current status display
56
+ * - Title heading
57
+ * - Scrollable list of subscription tiles
58
+ * - Error message display
59
+ * - Primary and optional secondary action buttons
60
+ *
61
+ * All labels are passed by the consumer for full localization control.
62
+ */
63
+ export declare function SubscriptionLayout({ title, children, error, variant, currentStatus, primaryAction, secondaryAction, className, headerContent, aboveProducts, footerContent, currentStatusLabel, freeTileConfig, onTrack, trackingLabel, componentName, }: SubscriptionLayoutProps): import("react/jsx-runtime").JSX.Element;
64
+ /**
65
+ * Section divider for subscription layouts
66
+ */
67
+ export interface SubscriptionDividerProps {
68
+ /** Optional label text */
69
+ label?: string;
70
+ /** Custom class */
71
+ className?: string;
72
+ }
73
+ export declare function SubscriptionDivider({ label, className, }: SubscriptionDividerProps): import("react/jsx-runtime").JSX.Element;
74
+ /**
75
+ * Footer with terms and restore button
76
+ */
77
+ export interface SubscriptionFooterProps {
78
+ /** Terms text */
79
+ termsText?: string;
80
+ /** Privacy link text */
81
+ privacyText?: string;
82
+ /** Restore purchases text */
83
+ restoreText?: string;
84
+ /** Called when restore is pressed */
85
+ onRestore?: () => void;
86
+ /** Called when terms is pressed */
87
+ onTermsPress?: () => void;
88
+ /** Called when privacy is pressed */
89
+ onPrivacyPress?: () => void;
90
+ /** Custom class */
91
+ className?: string;
92
+ }
93
+ export declare function SubscriptionFooter({ termsText, privacyText, restoreText, onRestore, onTermsPress, onPrivacyPress, className, }: SubscriptionFooterProps): import("react/jsx-runtime").JSX.Element;
94
+ export default SubscriptionLayout;
95
+ //# sourceMappingURL=SubscriptionLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionLayout.d.ts","sourceRoot":"","sources":["../src/SubscriptionLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,OAAO,KAAK,EACV,cAAc,EACd,8BAA8B,EAC9B,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,KAAK,CAAC;AAE5D,MAAM,WAAW,uBAAuB;IACtC,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,yBAAyB,CAAC;IAEpC,gDAAgD;IAChD,aAAa,CAAC,EAAE,wBAAwB,CAAC;IAEzC,wFAAwF;IACxF,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAEnC,6FAA6F;IAC7F,eAAe,CAAC,EAAE,kBAAkB,CAAC;IAErC,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,gFAAgF;IAChF,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,4DAA4D;IAC5D,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,iCAAiC;IACjC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,8BAA8B,KAAK,IAAI,CAAC;IACzD,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,KAAK,EACL,OAAqB,EACrB,aAAa,EACb,aAAa,EACb,eAAe,EACf,SAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,kBAAqC,EACrC,cAAc,EACd,OAAO,EACP,aAAa,EACb,aAAoC,GACrC,EAAE,uBAAuB,2CAsKzB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,SAAc,GACf,EAAE,wBAAwB,2CAgB1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAA8B,EAC9B,WAA8B,EAC9B,WAAiC,EACjC,SAAS,EACT,YAAY,EACZ,cAAc,EACd,SAAc,GACf,EAAE,uBAAuB,2CA2CzB;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { ReactNode } from 'react';
2
+ import { SubscriptionContextValue, SubscriptionProviderConfig } from './types';
3
+ declare const SubscriptionContext: import('react').Context<SubscriptionContextValue | undefined>;
4
+ export interface SubscriptionProviderProps extends SubscriptionProviderConfig {
5
+ children: ReactNode;
6
+ }
7
+ /**
8
+ * SubscriptionProvider - Context provider for subscription management
9
+ *
10
+ * Provides subscription state and actions to all child components.
11
+ * Handles RevenueCat SDK initialization, product fetching, and purchase flow.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * <SubscriptionProvider
16
+ * apiKey="your_revenuecat_api_key"
17
+ * onError={(error) => console.error(error)}
18
+ * onPurchaseSuccess={(productId) => analytics.track('purchase', { productId })}
19
+ * >
20
+ * <App />
21
+ * </SubscriptionProvider>
22
+ * ```
23
+ */
24
+ export declare function SubscriptionProvider({ apiKey, userEmail, onError, onPurchaseSuccess, children, }: SubscriptionProviderProps): import("react/jsx-runtime").JSX.Element;
25
+ /**
26
+ * Hook to access subscription context
27
+ *
28
+ * @throws Error if used outside of SubscriptionProvider
29
+ */
30
+ export declare function useSubscriptionContext(): SubscriptionContextValue;
31
+ export { SubscriptionContext };
32
+ export default SubscriptionProvider;
33
+ //# sourceMappingURL=SubscriptionProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionProvider.d.ts","sourceRoot":"","sources":["../src/SubscriptionProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAGV,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,SAAS,CAAC;AAEjB,QAAA,MAAM,mBAAmB,+DAExB,CAAC;AAEF,MAAM,WAAW,yBAA0B,SAAQ,0BAA0B;IAC3E,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,QAAQ,GACT,EAAE,yBAAyB,2CAgM3B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,wBAAwB,CAQjE;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { ReactNode } from 'react';
2
+ import { BadgeConfig, CtaButtonConfig, DiscountBadgeConfig, PremiumCalloutConfig, SubscriptionTileTrackingData } from './types';
3
+ export interface SubscriptionTileProps {
4
+ /** Unique identifier for the subscription */
5
+ id: string;
6
+ /** Plan title */
7
+ title: string;
8
+ /** Formatted price string (e.g., "$9.99") */
9
+ price: string;
10
+ /** Period label (e.g., "/month", "/year") - passed by consumer for localization */
11
+ periodLabel?: string;
12
+ /** List of features/benefits */
13
+ features: string[];
14
+ /** Whether this tile is currently selected */
15
+ isSelected: boolean;
16
+ /** Selection callback */
17
+ onSelect: () => void;
18
+ /** Whether this is the user's current plan (shows persistent blue border) */
19
+ isCurrentPlan?: boolean;
20
+ /** Optional top badge (e.g., "Most Popular", "Free Trial") */
21
+ topBadge?: BadgeConfig;
22
+ /** Optional discount badge (e.g., "Save 40%") */
23
+ discountBadge?: DiscountBadgeConfig;
24
+ /** Optional premium callout section */
25
+ premiumCallout?: PremiumCalloutConfig;
26
+ /** Optional bottom note (e.g., new expiration date) */
27
+ bottomNote?: string;
28
+ /** Optional intro price note */
29
+ introPriceNote?: string;
30
+ /** Whether this is the best value option (affects styling) */
31
+ isBestValue?: boolean;
32
+ /** CTA button configuration - when provided, renders a button instead of radio indicator */
33
+ ctaButton?: CtaButtonConfig;
34
+ /** Additional NativeWind classes */
35
+ className?: string;
36
+ /** Custom content to render in the content area */
37
+ children?: ReactNode;
38
+ /** Disabled state (prevents interaction but keeps normal appearance) */
39
+ disabled?: boolean;
40
+ /** Whether this tile is enabled/selectable (false = grayed out, no indicator) */
41
+ enabled?: boolean;
42
+ /** Accessibility label */
43
+ accessibilityLabel?: string;
44
+ /** Optional tracking callback */
45
+ onTrack?: (data: SubscriptionTileTrackingData) => void;
46
+ /** Optional tracking label */
47
+ trackingLabel?: string;
48
+ /** Optional component name for tracking */
49
+ componentName?: string;
50
+ /** Hide both radio button and CTA button (for free tier tiles) */
51
+ hideSelectionIndicator?: boolean;
52
+ }
53
+ /**
54
+ * SubscriptionTile - A reusable subscription plan display component
55
+ *
56
+ * Displays a subscription plan with pricing, features, badges, and selection state.
57
+ * All text is passed by the consumer for full localization control.
58
+ *
59
+ * Layout: Uses flexbox with content area (flex-1) and a fixed-height bottom area
60
+ * for button/radio. This ensures no overlap between content and bottom elements.
61
+ */
62
+ export declare function SubscriptionTile({ id: _id, title, price, periodLabel, features, isSelected, onSelect, isCurrentPlan, topBadge, discountBadge, premiumCallout, bottomNote, introPriceNote, isBestValue: _isBestValue, ctaButton, className, children, disabled, enabled, accessibilityLabel, onTrack, trackingLabel, componentName, hideSelectionIndicator, }: SubscriptionTileProps): import("react/jsx-runtime").JSX.Element;
63
+ export default SubscriptionTile;
64
+ //# sourceMappingURL=SubscriptionTile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionTile.d.ts","sourceRoot":"","sources":["../src/SubscriptionTile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8CAA8C;IAC9C,UAAU,EAAE,OAAO,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,iDAAiD;IACjD,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,uCAAuC;IACvC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,iCAAiC;IACjC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,4BAA4B,KAAK,IAAI,CAAC;IACvD,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAUD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,EAAE,EAAE,GAAG,EACP,KAAK,EACL,KAAK,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAqB,EACrB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,UAAU,EACV,cAAc,EACd,WAAW,EAAE,YAAoB,EACjC,SAAS,EACT,SAAc,EACd,QAAQ,EACR,QAAgB,EAChB,OAAc,EACd,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,aAAkC,EAClC,sBAA8B,GAC/B,EAAE,qBAAqB,2CAwRvB;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @sudobility/subscription-components-rn
3
+ *
4
+ * Subscription UI components for React Native with RevenueCat integration.
5
+ * All components support full localization - text labels are passed by the consumer.
6
+ *
7
+ * Aligned with @sudobility/subscription-components (web).
8
+ */
9
+ export { SubscriptionTile, type SubscriptionTileProps, } from './SubscriptionTile';
10
+ export { SubscriptionLayout, SubscriptionDivider, SubscriptionFooter, type SubscriptionLayoutProps, type SubscriptionLayoutVariant, type SubscriptionDividerProps, type SubscriptionFooterProps, } from './SubscriptionLayout';
11
+ export { SegmentedControl, PeriodSelector, type SegmentedControlProps, type SegmentedControlOption, type PeriodSelectorProps, } from './SegmentedControl';
12
+ export { SubscriptionProvider, useSubscriptionContext, SubscriptionContext, type SubscriptionProviderProps, } from './SubscriptionProvider';
13
+ export type { SubscriptionProduct, SubscriptionStatus, SubscriptionContextValue, SubscriptionProviderConfig, BadgeConfig, CtaButtonConfig, DiscountBadgeConfig, PremiumCalloutConfig, FreeTileConfig, SubscriptionStatusConfig, ActionButtonConfig, SubscriptionTileTrackingData, SubscriptionLayoutTrackingData, } from './types';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,yBAAyB,GAC/B,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAC1B,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,SAAS,CAAC"}