@stigg/react-sdk 7.7.1-beta.0 → 7.8.0-beta.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.
Files changed (289) hide show
  1. package/dist/index.d.mts +829 -0
  2. package/dist/index.d.ts +829 -935
  3. package/dist/stigg-sdk.cjs.js +5915 -0
  4. package/dist/stigg-sdk.esm.js +5915 -0
  5. package/package.json +18 -21
  6. package/dist/react-sdk.cjs.js +0 -3446
  7. package/dist/react-sdk.esm.js +0 -12191
  8. package/src/assets/add.svg +0 -3
  9. package/src/assets/addons.svg +0 -12
  10. package/src/assets/arrow-forward.svg +0 -3
  11. package/src/assets/arrow-right.svg +0 -6
  12. package/src/assets/billing-info-customer.svg +0 -11
  13. package/src/assets/check-stigg.svg +0 -3
  14. package/src/assets/check.svg +0 -5
  15. package/src/assets/close.svg +0 -3
  16. package/src/assets/contact-support.svg +0 -13
  17. package/src/assets/coupon.svg +0 -6
  18. package/src/assets/credit-card.svg +0 -10
  19. package/src/assets/dollar-coin.svg +0 -13
  20. package/src/assets/edit-icon.svg +0 -3
  21. package/src/assets/entitlement-check.svg +0 -3
  22. package/src/assets/lottie/checkout-success.json +0 -1
  23. package/src/assets/mini-schedule.svg +0 -3
  24. package/src/assets/outlined-checked-circle-disabled.svg +0 -6
  25. package/src/assets/outlined-checked-circle.svg +0 -6
  26. package/src/assets/outlined-circle.svg +0 -3
  27. package/src/assets/pay-as-you-go-charge.svg +0 -11
  28. package/src/assets/payment-method.svg +0 -4
  29. package/src/assets/plus-icon.svg +0 -6
  30. package/src/assets/powered-by-stigg.svg +0 -13
  31. package/src/assets/promotions.svg +0 -13
  32. package/src/assets/remove.svg +0 -3
  33. package/src/assets/restore.svg +0 -3
  34. package/src/assets/sand-clock.svg +0 -4
  35. package/src/assets/schedule-box.svg +0 -9
  36. package/src/assets/schedule.svg +0 -3
  37. package/src/assets/subscription-renews-icon.svg +0 -14
  38. package/src/assets/trash.svg +0 -8
  39. package/src/components/StiggProvider.tsx +0 -170
  40. package/src/components/checkout/Checkout.tsx +0 -37
  41. package/src/components/checkout/CheckoutContainer.style.ts +0 -51
  42. package/src/components/checkout/CheckoutContainer.tsx +0 -193
  43. package/src/components/checkout/CheckoutProvider.tsx +0 -181
  44. package/src/components/checkout/components/Button.tsx +0 -35
  45. package/src/components/checkout/components/ChangePlanButton.tsx +0 -30
  46. package/src/components/checkout/components/ContentLoadingSkeleton.tsx +0 -41
  47. package/src/components/checkout/components/DowngradeToFreeContainer.tsx +0 -115
  48. package/src/components/checkout/components/InputField.tsx +0 -26
  49. package/src/components/checkout/components/Skeletons.style.ts +0 -30
  50. package/src/components/checkout/components/StyledArrow.tsx +0 -9
  51. package/src/components/checkout/components/index.ts +0 -3
  52. package/src/components/checkout/configurations/steps.ts +0 -1
  53. package/src/components/checkout/configurations/textOverrides.ts +0 -150
  54. package/src/components/checkout/configurations/theme.ts +0 -46
  55. package/src/components/checkout/configurations/typography.ts +0 -30
  56. package/src/components/checkout/formatting.ts +0 -12
  57. package/src/components/checkout/hooks/index.ts +0 -8
  58. package/src/components/checkout/hooks/useAddonsStepModel.ts +0 -92
  59. package/src/components/checkout/hooks/useCheckoutModel.ts +0 -53
  60. package/src/components/checkout/hooks/useCouponModel.ts +0 -28
  61. package/src/components/checkout/hooks/useLoadCheckout.ts +0 -48
  62. package/src/components/checkout/hooks/usePaymentStepModel.ts +0 -68
  63. package/src/components/checkout/hooks/usePlanStepModel.ts +0 -184
  64. package/src/components/checkout/hooks/usePreviewSubscription.ts +0 -165
  65. package/src/components/checkout/hooks/useProgressBarModel.ts +0 -211
  66. package/src/components/checkout/hooks/useSubscriptionModel.ts +0 -22
  67. package/src/components/checkout/hooks/useSubscriptionState.ts +0 -26
  68. package/src/components/checkout/index.ts +0 -8
  69. package/src/components/checkout/planHeader/PlanHeader.tsx +0 -41
  70. package/src/components/checkout/planHeader/index.ts +0 -1
  71. package/src/components/checkout/progressBar/CheckoutProgressBar.style.ts +0 -35
  72. package/src/components/checkout/progressBar/CheckoutProgressBar.tsx +0 -82
  73. package/src/components/checkout/promotionCode/AddPromotionCode.tsx +0 -107
  74. package/src/components/checkout/promotionCode/AddPromotionCodeButton.tsx +0 -43
  75. package/src/components/checkout/promotionCode/AppliedPromotionCode.tsx +0 -49
  76. package/src/components/checkout/promotionCode/PromotionCodeSection.tsx +0 -40
  77. package/src/components/checkout/promotionCode/index.ts +0 -1
  78. package/src/components/checkout/steps/addons/CheckoutAddonsStep.style.tsx +0 -34
  79. package/src/components/checkout/steps/addons/CheckoutAddonsStep.tsx +0 -144
  80. package/src/components/checkout/steps/addons/addon.utils.ts +0 -67
  81. package/src/components/checkout/steps/addons/components/AddonInputContainer.tsx +0 -84
  82. package/src/components/checkout/steps/addons/components/AddonTextContainer.tsx +0 -45
  83. package/src/components/checkout/steps/addons/index.ts +0 -1
  84. package/src/components/checkout/steps/payment/PaymentMethods.style.ts +0 -36
  85. package/src/components/checkout/steps/payment/PaymentMethods.tsx +0 -106
  86. package/src/components/checkout/steps/payment/PaymentStep.tsx +0 -63
  87. package/src/components/checkout/steps/payment/index.ts +0 -1
  88. package/src/components/checkout/steps/payment/stripe/StripePaymentForm.tsx +0 -79
  89. package/src/components/checkout/steps/payment/stripe/index.ts +0 -3
  90. package/src/components/checkout/steps/payment/stripe/stripe.utils.ts +0 -122
  91. package/src/components/checkout/steps/payment/stripe/useStripeIntegration.ts +0 -33
  92. package/src/components/checkout/steps/payment/stripe/useSubmit.ts +0 -135
  93. package/src/components/checkout/steps/payment/zuora/ZuoraPaymentForm.tsx +0 -128
  94. package/src/components/checkout/steps/payment/zuora/index.ts +0 -9
  95. package/src/components/checkout/steps/payment/zuora/useZuoraIntegration.ts +0 -57
  96. package/src/components/checkout/steps/payment/zuora/useZuoraSubmit.ts +0 -125
  97. package/src/components/checkout/steps/payment/zuora/zuora.utils.ts +0 -72
  98. package/src/components/checkout/steps/plan/BillingPeriodPicker.style.tsx +0 -69
  99. package/src/components/checkout/steps/plan/BillingPeriodPicker.tsx +0 -86
  100. package/src/components/checkout/steps/plan/CheckoutChargeList.tsx +0 -223
  101. package/src/components/checkout/steps/plan/CheckoutPlanStep.style.tsx +0 -6
  102. package/src/components/checkout/steps/plan/CheckoutPlanStep.tsx +0 -31
  103. package/src/components/checkout/steps/plan/index.ts +0 -1
  104. package/src/components/checkout/summary/CheckoutSuccess.tsx +0 -82
  105. package/src/components/checkout/summary/CheckoutSummary.tsx +0 -458
  106. package/src/components/checkout/summary/CheckoutSummarySkeleton.tsx +0 -38
  107. package/src/components/checkout/summary/components/CheckoutCaptions.tsx +0 -145
  108. package/src/components/checkout/summary/components/GraduatedPriceBreakdown.tsx +0 -70
  109. package/src/components/checkout/summary/components/LineItems.tsx +0 -275
  110. package/src/components/checkout/summary/components/WithSkeleton.tsx +0 -16
  111. package/src/components/checkout/summary/components/getPriceBreakdownString.ts +0 -66
  112. package/src/components/checkout/summary/index.ts +0 -2
  113. package/src/components/checkout/types.ts +0 -82
  114. package/src/components/common/CollapsableSectionIcon.tsx +0 -9
  115. package/src/components/common/Icon.tsx +0 -61
  116. package/src/components/common/InformationTooltip.tsx +0 -28
  117. package/src/components/common/LongText.tsx +0 -100
  118. package/src/components/common/PoweredByStigg.tsx +0 -59
  119. package/src/components/common/ProgressBar.tsx +0 -41
  120. package/src/components/common/StatusChip.tsx +0 -29
  121. package/src/components/common/TiersSelectContainer.tsx +0 -39
  122. package/src/components/common/Typography.tsx +0 -117
  123. package/src/components/common/VolumeBulkSelect.tsx +0 -74
  124. package/src/components/common/VolumePerUnitInput.tsx +0 -42
  125. package/src/components/common/chart/chartjs.helpers.ts +0 -17
  126. package/src/components/common/chart/chartjs.plugins.ts +0 -34
  127. package/src/components/common/chart/chartjs.theme.ts +0 -41
  128. package/src/components/common/chart/chartjs.tooltip.plugin.tsx +0 -224
  129. package/src/components/common/customIcons.ts +0 -24
  130. package/src/components/common/iconColor.ts +0 -15
  131. package/src/components/common/mapExternalTheme.ts +0 -147
  132. package/src/components/common/mediaQuery.ts +0 -19
  133. package/src/components/common/table/DataRows.tsx +0 -33
  134. package/src/components/common/table/EmptyState.tsx +0 -19
  135. package/src/components/common/table/ErrorState.tsx +0 -19
  136. package/src/components/common/table/GenericTable.tsx +0 -155
  137. package/src/components/common/table/LoadingRows.tsx +0 -33
  138. package/src/components/common/table/index.ts +0 -6
  139. package/src/components/common/table/types.ts +0 -30
  140. package/src/components/credits/balance/CreditBalance.tsx +0 -70
  141. package/src/components/credits/balance/CreditBalanceValue.tsx +0 -60
  142. package/src/components/credits/creditUsageChart/CreditUsage.chartjs.ts +0 -223
  143. package/src/components/credits/creditUsageChart/CreditUsageChart.tsx +0 -128
  144. package/src/components/credits/creditUsageChart/CreditUsageChartEmptyState.tsx +0 -29
  145. package/src/components/credits/creditUsageChart/CreditUsageChartErrorState.tsx +0 -19
  146. package/src/components/credits/creditUsageChart/CreditUsageChartHeader.tsx +0 -104
  147. package/src/components/credits/creditUsageChart/CreditUsageChartTooltip.tsx +0 -93
  148. package/src/components/credits/creditUsageChart/CreditUsageLegend.tsx +0 -141
  149. package/src/components/credits/creditUsageChart/types.ts +0 -4
  150. package/src/components/credits/grants/CreditGrants.tsx +0 -64
  151. package/src/components/credits/grants/CreditGrantsTable.tsx +0 -101
  152. package/src/components/credits/grants/types.ts +0 -38
  153. package/src/components/credits/grants/utils.ts +0 -25
  154. package/src/components/credits/hooks/useCreditBalance.ts +0 -75
  155. package/src/components/credits/hooks/useCreditGrants.ts +0 -40
  156. package/src/components/credits/hooks/useCreditUsage.ts +0 -50
  157. package/src/components/credits/index.ts +0 -15
  158. package/src/components/credits/localization.ts +0 -25
  159. package/src/components/credits/utilization/CreditUtilization.tsx +0 -74
  160. package/src/components/credits/utilization/CreditUtilizationValue.tsx +0 -113
  161. package/src/components/credits/utils/creditBalanceUtils.ts +0 -31
  162. package/src/components/credits/utils/creditGrantUtils.ts +0 -27
  163. package/src/components/customerPortal/CustomerPortal.style.ts +0 -20
  164. package/src/components/customerPortal/CustomerPortal.tsx +0 -37
  165. package/src/components/customerPortal/CustomerPortalContainer.tsx +0 -77
  166. package/src/components/customerPortal/CustomerPortalContext.ts +0 -32
  167. package/src/components/customerPortal/CustomerPortalHeader.tsx +0 -18
  168. package/src/components/customerPortal/CustomerPortalProvider.tsx +0 -49
  169. package/src/components/customerPortal/billing/InformationGrid.tsx +0 -54
  170. package/src/components/customerPortal/billing/InvoicesSection.tsx +0 -41
  171. package/src/components/customerPortal/billing/PaymentDetailsSection.tsx +0 -140
  172. package/src/components/customerPortal/common/ExternalLinkButton.tsx +0 -34
  173. package/src/components/customerPortal/common/SectionContainer.tsx +0 -22
  174. package/src/components/customerPortal/common/SectionHeader.ts +0 -15
  175. package/src/components/customerPortal/common/SectionTitle.tsx +0 -23
  176. package/src/components/customerPortal/common/SkeletonButton.tsx +0 -5
  177. package/src/components/customerPortal/common/StyledButton.tsx +0 -13
  178. package/src/components/customerPortal/customerPortalTextOverrides.ts +0 -39
  179. package/src/components/customerPortal/customerPortalTheme.ts +0 -35
  180. package/src/components/customerPortal/hooks/useCustomerPortal.ts +0 -39
  181. package/src/components/customerPortal/index.ts +0 -16
  182. package/src/components/customerPortal/paywall/CustomerPortalPaywall.style.ts +0 -33
  183. package/src/components/customerPortal/paywall/CustomerPortalPaywall.tsx +0 -36
  184. package/src/components/customerPortal/subscriptionOverview/ContactCustomerSupport.tsx +0 -50
  185. package/src/components/customerPortal/subscriptionOverview/SubscriptionOverviewLoader.tsx +0 -28
  186. package/src/components/customerPortal/subscriptionOverview/SubscriptionsOverview.tsx +0 -106
  187. package/src/components/customerPortal/subscriptionOverview/SubscriptionsOverviewHeader.tsx +0 -48
  188. package/src/components/customerPortal/subscriptionOverview/charges/ChargeItem.tsx +0 -74
  189. package/src/components/customerPortal/subscriptionOverview/charges/ChargeList.tsx +0 -65
  190. package/src/components/customerPortal/subscriptionOverview/subscriptionScheduledUpdates/SubscriptionScheduledUpdateRow.tsx +0 -110
  191. package/src/components/customerPortal/subscriptionOverview/subscriptionScheduledUpdates/SubscriptionScheduledUpdatesAlert.tsx +0 -158
  192. package/src/components/customerPortal/subscriptionOverview/subscriptionView/SubscriptionView.style.ts +0 -6
  193. package/src/components/customerPortal/subscriptionOverview/subscriptionView/SubscriptionView.tsx +0 -37
  194. package/src/components/customerPortal/subscriptionOverview/subscriptionView/TrialPanel.tsx +0 -58
  195. package/src/components/customerPortal/subscriptionOverview/tabs/AddonsList.tsx +0 -28
  196. package/src/components/customerPortal/subscriptionOverview/tabs/Promotions.tsx +0 -62
  197. package/src/components/customerPortal/subscriptionOverview/tabs/SubscriptionTabs.style.tsx +0 -32
  198. package/src/components/customerPortal/subscriptionOverview/tabs/SubscriptionTabs.tsx +0 -100
  199. package/src/components/customerPortal/subscriptionOverview/types/customerPortal.types.ts +0 -4
  200. package/src/components/customerPortal/subscriptionOverview/upcomingBilling/NextEstimatedBill.tsx +0 -29
  201. package/src/components/customerPortal/subscriptionOverview/upcomingBilling/NoUpcomingBilling.tsx +0 -18
  202. package/src/components/customerPortal/subscriptionOverview/upcomingBilling/UpcomingBilling.tsx +0 -89
  203. package/src/components/customerPortal/types.ts +0 -20
  204. package/src/components/customerPortal/usage/CustomerUsageData.style.tsx +0 -22
  205. package/src/components/customerPortal/usage/CustomerUsageData.tsx +0 -124
  206. package/src/components/customerPortal/usage/featureUsage/EntitlementCTAButton.tsx +0 -62
  207. package/src/components/customerPortal/usage/featureUsage/FeatureUsage.helper.ts +0 -45
  208. package/src/components/customerPortal/usage/featureUsage/FeatureUsage.style.ts +0 -13
  209. package/src/components/customerPortal/usage/featureUsage/FeatureUsage.tsx +0 -96
  210. package/src/components/customerPortal/usage/featureUsage/FeatureUsageProgressBar.tsx +0 -56
  211. package/src/components/guards/BooleanEntitlementGuard.tsx +0 -21
  212. package/src/components/guards/EnumEntitlementGuard.tsx +0 -17
  213. package/src/components/guards/MeteredEntitlementGuard.tsx +0 -21
  214. package/src/components/guards/NumericEntitlementGuard.tsx +0 -21
  215. package/src/components/hooks/index.ts +0 -1
  216. package/src/components/hooks/useChargeSort.ts +0 -17
  217. package/src/components/hooks/useIsScreenWiderThan.ts +0 -6
  218. package/src/components/hooks/useWaitForCheckoutCompleted.ts +0 -65
  219. package/src/components/paywall/BillingPeriodPicker.tsx +0 -90
  220. package/src/components/paywall/EntitlementRow.tsx +0 -127
  221. package/src/components/paywall/Paywall.tsx +0 -189
  222. package/src/components/paywall/PaywallContainer.tsx +0 -119
  223. package/src/components/paywall/PaywallLoader.tsx +0 -96
  224. package/src/components/paywall/PlanCompatibleAddons.tsx +0 -127
  225. package/src/components/paywall/PlanEntitlements.tsx +0 -75
  226. package/src/components/paywall/PlanOffering.tsx +0 -256
  227. package/src/components/paywall/PlanOfferingButton.tsx +0 -232
  228. package/src/components/paywall/PlanPrice.tsx +0 -154
  229. package/src/components/paywall/hooks/useLoadPaywallData.ts +0 -75
  230. package/src/components/paywall/index.ts +0 -5
  231. package/src/components/paywall/paywallTextOverrides.ts +0 -79
  232. package/src/components/paywall/types.ts +0 -80
  233. package/src/components/paywall/utils/calculateTrialDaysLeft.ts +0 -5
  234. package/src/components/paywall/utils/calculateUnitQuantityText.ts +0 -23
  235. package/src/components/paywall/utils/computeDefaultBillingPeriod.ts +0 -36
  236. package/src/components/paywall/utils/getPlansToDisplay.ts +0 -13
  237. package/src/components/paywall/utils/hasPricePoints.ts +0 -10
  238. package/src/components/paywall/utils/mapPaywallData.ts +0 -126
  239. package/src/components/utils/calculateDiscountRate.ts +0 -49
  240. package/src/components/utils/currencyUtils.ts +0 -38
  241. package/src/components/utils/dateUtils.ts +0 -17
  242. package/src/components/utils/fixtures/price.fixtures.ts +0 -42
  243. package/src/components/utils/formatNumber.ts +0 -5
  244. package/src/components/utils/getFeatureName.ts +0 -26
  245. package/src/components/utils/getPaidPriceText.ts +0 -77
  246. package/src/components/utils/getPlanPrice.ts +0 -62
  247. package/src/components/utils/getSubscriptionScheduleUpdateTexts.tsx +0 -88
  248. package/src/components/utils/numberUtils.ts +0 -6
  249. package/src/components/utils/onWheelBlur.ts +0 -3
  250. package/src/components/utils/planPrices.ts +0 -10
  251. package/src/components/utils/priceTierUtils.spec.ts +0 -84
  252. package/src/components/utils/priceTierUtils.ts +0 -250
  253. package/src/components/utils/priceUtils.ts +0 -11
  254. package/src/custom.d.ts +0 -6
  255. package/src/hooks/index.ts +0 -8
  256. package/src/hooks/useActiveSubscriptions.ts +0 -21
  257. package/src/hooks/useBooleanEntitlement.ts +0 -20
  258. package/src/hooks/useCustomerPortal.ts +0 -21
  259. package/src/hooks/useEnumEntitlement.ts +0 -20
  260. package/src/hooks/useFetch.ts +0 -32
  261. package/src/hooks/useMeteredEntitlement.ts +0 -20
  262. package/src/hooks/useNumericEntitlement.ts +0 -20
  263. package/src/hooks/usePaywall.ts +0 -21
  264. package/src/hooks/useStiggContext.ts +0 -13
  265. package/src/index.ts +0 -103
  266. package/src/services/logger.ts +0 -22
  267. package/src/stories/Checkout.stories.tsx +0 -123
  268. package/src/stories/CreditBalance.stories.tsx +0 -248
  269. package/src/stories/CreditGrants.stories.tsx +0 -210
  270. package/src/stories/CreditUsageChart.stories.tsx +0 -347
  271. package/src/stories/CreditUtilization.stories.tsx +0 -287
  272. package/src/stories/CustomTheme.ts +0 -57
  273. package/src/stories/CustomerPortal.stories.tsx +0 -265
  274. package/src/stories/GenericTable.stories.tsx +0 -263
  275. package/src/stories/Paywall.stories.tsx +0 -147
  276. package/src/stories/ProgressBar.stories.tsx +0 -103
  277. package/src/stories/StatusChip.stories.tsx +0 -154
  278. package/src/stories/baseArgs.ts +0 -10
  279. package/src/stories/mocks/checkout/consts.ts +0 -15
  280. package/src/stories/mocks/checkout/mockCheckoutPreview.ts +0 -152
  281. package/src/stories/mocks/checkout/mockCheckoutState.ts +0 -212
  282. package/src/styles.css +0 -46
  283. package/src/theme/Fonts.tsx +0 -80
  284. package/src/theme/Theme.tsx +0 -64
  285. package/src/theme/emotion.d.ts +0 -17
  286. package/src/theme/getResolvedTheme.ts +0 -135
  287. package/src/theme/types.ts +0 -85
  288. package/src/types.ts +0 -22
  289. package/src/utils/styledUtils.ts +0 -64
@@ -1,347 +0,0 @@
1
- import styled from '@utils/style';
2
- import { mocked } from '@storybook/test';
3
- import type { Meta, StoryObj } from '@storybook/react';
4
- import { CreditUsageChart, CreditUsageChartProps } from '../components/credits';
5
- import { StiggProvider, StiggProviderProps } from '../components/StiggProvider';
6
- import { defaultArgsWithCustomer } from './baseArgs';
7
- import { customTheme } from './CustomTheme';
8
- import { useCreditUsage } from '../components/credits/hooks/useCreditUsage';
9
- import { CreditUsageTimeRange } from '@stigg/js-client-sdk';
10
-
11
- const Wrapper = styled.div`
12
- padding: 20px;
13
- width: 1000px;
14
- display: flex;
15
- flex-direction: column;
16
- gap: 20px;
17
- `;
18
-
19
- const meta = {
20
- title: 'Stigg React SDK/Credits/Credit Usage Chart',
21
- component: CreditUsageChart,
22
- args: {
23
- ...defaultArgsWithCustomer,
24
- currencyId: 'cred-type-ai-tokens',
25
- timeRange: CreditUsageTimeRange.LastMonth,
26
- },
27
- argTypes: {
28
- apiKey: {
29
- control: 'text',
30
- description: 'Stigg API Key (shared across credit stories)',
31
- },
32
- baseUri: {
33
- control: 'text',
34
- description: 'Stigg API Base URI (shared across credit stories)',
35
- },
36
- enableEdge: {
37
- control: 'boolean',
38
- description: 'Whether to enable Edge (shared across credit stories)',
39
- },
40
- customerId: {
41
- control: 'text',
42
- description: 'Customer ID (can be overridden per story)',
43
- },
44
- currencyId: {
45
- control: 'text',
46
- description: 'Currency identifier for fetching balance',
47
- },
48
- timeRange: {
49
- control: 'select',
50
- options: Object.values(CreditUsageTimeRange),
51
- description: 'Time range for fetching credit usage',
52
- },
53
- },
54
- decorators: [
55
- (Story, { args }) => (
56
- <Wrapper>
57
- <StiggProvider
58
- apiKey={args.apiKey}
59
- customerId={args.customerId}
60
- theme={args.theme}
61
- locale={args.locale}
62
- baseUri={args.baseUri}
63
- enableEdge={args.enableEdge}>
64
- <Story />
65
- </StiggProvider>
66
- </Wrapper>
67
- ),
68
- ],
69
- } as Meta<StiggProviderProps & CreditUsageChartProps & { currentBalance?: number }>;
70
-
71
- export default meta;
72
- type Story = StoryObj<typeof meta>;
73
-
74
- const aiTokensCurrency = {
75
- currencyId: 'cred-type-ai-tokens',
76
- displayName: 'AI Tokens',
77
- units: {
78
- singular: 'AI Token',
79
- plural: 'AI Tokens',
80
- },
81
- };
82
-
83
- export const RealImplementation: Story = {
84
- args: {
85
- currencyId: 'cred-type-ai-tokens',
86
- },
87
- };
88
-
89
- export const MockedImplementation: Story = {
90
- beforeEach: () => {
91
- // Cache for generated mock data to prevent regeneration on every call
92
- const mockDataCache = new Map<CreditUsageTimeRange, any>();
93
-
94
- // Create a function that generates mock data based on the current timeRange
95
- const generateMockData = (timeRange: CreditUsageTimeRange): ReturnType<typeof useCreditUsage> => {
96
- // Check if we already have cached data for this time range
97
- const cached = mockDataCache.get(timeRange) as ReturnType<typeof useCreditUsage> | undefined;
98
- if (cached) {
99
- return cached;
100
- }
101
-
102
- // Generate data points based on the selected time range
103
- const now = new Date();
104
- let dataPoints: number;
105
- let startDate: Date;
106
- let timeIncrement: (date: Date, i: number) => void;
107
-
108
- switch (timeRange) {
109
- case CreditUsageTimeRange.LastDay: {
110
- // Last 24 hours with hourly granularity (24 data points)
111
- dataPoints = 24;
112
- startDate = new Date(now);
113
- startDate.setHours(startDate.getHours() - 23);
114
- startDate.setMinutes(0, 0, 0); // Round to start of hour
115
- timeIncrement = (date, i) => date.setHours(date.getHours() + i);
116
- break;
117
- }
118
- case CreditUsageTimeRange.LastWeek: {
119
- // Last 7 days with daily granularity (7 data points)
120
- dataPoints = 7;
121
- startDate = new Date(now);
122
- startDate.setDate(startDate.getDate() - 6);
123
- startDate.setHours(0, 0, 0, 0);
124
- timeIncrement = (date, i) => date.setDate(date.getDate() + i);
125
- break;
126
- }
127
- case CreditUsageTimeRange.LastYear: {
128
- // Last 12 months with monthly granularity (12 data points)
129
- dataPoints = 12;
130
- startDate = new Date(now);
131
- startDate.setMonth(startDate.getMonth() - 11);
132
- startDate.setDate(1);
133
- startDate.setHours(0, 0, 0, 0);
134
- timeIncrement = (date, i) => date.setMonth(date.getMonth() + i);
135
- break;
136
- }
137
- case CreditUsageTimeRange.LastMonth:
138
- default: {
139
- // Last 30 days with daily granularity (30 data points)
140
- dataPoints = 30;
141
- startDate = new Date(now);
142
- startDate.setDate(startDate.getDate() - 29);
143
- startDate.setHours(0, 0, 0, 0);
144
- timeIncrement = (date, i) => date.setDate(date.getDate() + i);
145
- break;
146
- }
147
- }
148
-
149
- // Use a seeded random number generator for consistent data
150
- let seed = 12345; // Fixed seed for consistent generation
151
- const seededRandom = () => {
152
- seed = (seed * 9301 + 49297) % 233280;
153
- return seed / 233280;
154
- };
155
-
156
- // Generate points based on time range with more randomization
157
- const generatePoints = (baseValue: number, variation: number = 0.8) => {
158
- const points = [];
159
- for (let i = 0; i < dataPoints; i++) {
160
- const date = new Date(startDate);
161
- timeIncrement(date, i);
162
-
163
- // Add more randomization with different patterns using seeded random
164
- const randomVariation = (seededRandom() - 0.5) * variation;
165
- const spikeChance = seededRandom();
166
- const zeroChance = seededRandom();
167
-
168
- let value = baseValue * (1 + randomVariation);
169
-
170
- // Occasionally add spikes (20% chance)
171
- if (spikeChance < 0.2) {
172
- value *= 2 + seededRandom() * 3; // 2-5x multiplier
173
- }
174
-
175
- // Occasionally have zero usage (15% chance)
176
- if (zeroChance < 0.15) {
177
- value = 0;
178
- }
179
-
180
- // Add some weekend/weekday patterns (only for daily granularity)
181
- if (timeRange === CreditUsageTimeRange.LastMonth || timeRange === CreditUsageTimeRange.LastWeek) {
182
- const dayOfWeek = date.getDay();
183
- if (dayOfWeek === 0 || dayOfWeek === 6) {
184
- value *= 0.3 + seededRandom() * 0.4; // 30-70% of normal on weekends
185
- }
186
- }
187
-
188
- // Add hourly patterns for LastDay
189
- if (timeRange === CreditUsageTimeRange.LastDay) {
190
- const hour = date.getHours();
191
- if (hour >= 22 || hour <= 6) {
192
- value *= 0.2 + seededRandom() * 0.3; // 20-50% of normal during night hours
193
- } else if (hour >= 9 && hour <= 17) {
194
- value *= 1.2 + seededRandom() * 0.5; // 120-170% of normal during business hours
195
- }
196
- }
197
-
198
- // Add monthly patterns for LastYear
199
- if (timeRange === CreditUsageTimeRange.LastYear) {
200
- const month = date.getMonth();
201
- if (month === 11 || month === 0) {
202
- // December and January
203
- value *= 1.5 + seededRandom() * 0.5; // 150-200% during holiday season
204
- } else if (month === 6 || month === 7) {
205
- // July and August
206
- value *= 0.7 + seededRandom() * 0.3; // 70-100% during summer
207
- }
208
- }
209
-
210
- value = Math.max(0, Math.round(value));
211
-
212
- points.push({
213
- timestamp: date.toISOString(),
214
- value: value,
215
- });
216
- }
217
- return points;
218
- };
219
-
220
- // Calculate total credits for each feature with more varied base values
221
- const feature1Points = generatePoints(6 + seededRandom() * 8, 1.2); // 6-14 base with high variation
222
- const feature2Points = generatePoints(10 + seededRandom() * 15, 1.0); // 10-25 base with high variation
223
- const feature3Points = generatePoints(20 + seededRandom() * 20, 0.9); // 20-40 base with high variation
224
-
225
- const feature1Total = feature1Points.reduce((sum, point) => sum + point.value, 0);
226
- const feature2Total = feature2Points.reduce((sum, point) => sum + point.value, 0);
227
- const feature3Total = feature3Points.reduce((sum, point) => sum + point.value, 0);
228
-
229
- const result = {
230
- creditUsage: {
231
- series: [
232
- {
233
- featureId: 'feature-1',
234
- featureName: 'Feature 1',
235
- totalCredits: feature1Total,
236
- points: feature1Points,
237
- },
238
- {
239
- featureId: 'feature-2',
240
- featureName: 'Feature 2',
241
- totalCredits: feature2Total,
242
- points: feature2Points,
243
- },
244
- {
245
- featureId: 'feature-3',
246
- featureName: 'Feature 3',
247
- totalCredits: feature3Total,
248
- points: feature3Points,
249
- },
250
- ],
251
- currency: aiTokensCurrency,
252
- },
253
- isLoading: false,
254
- error: null,
255
- };
256
-
257
- // Cache the result for this time range
258
- mockDataCache.set(timeRange, result);
259
- return result;
260
- };
261
-
262
- // Mock the hook to call the function with the current timeRange parameter
263
- mocked(useCreditUsage).mockImplementation((params) => {
264
- return generateMockData(params.timeRange || CreditUsageTimeRange.LastMonth);
265
- });
266
- },
267
- };
268
-
269
- export const LoadingState: Story = {
270
- beforeEach: () => {
271
- mocked(useCreditUsage).mockReturnValue({
272
- creditUsage: null,
273
- isLoading: true,
274
- error: null,
275
- });
276
- },
277
- };
278
-
279
- export const ErrorState: Story = {
280
- beforeEach: () => {
281
- mocked(useCreditUsage).mockReturnValue({
282
- creditUsage: null,
283
- isLoading: false,
284
- error: new Error('Error loading credit usage'),
285
- });
286
- },
287
- };
288
-
289
- export const EmptyState: Story = {
290
- beforeEach: () => {
291
- mocked(useCreditUsage).mockReturnValue({
292
- creditUsage: {
293
- series: [],
294
- currency: aiTokensCurrency,
295
- },
296
- isLoading: false,
297
- error: null,
298
- });
299
- },
300
- };
301
-
302
- export const CustomThemedBalance: Story = {
303
- args: {
304
- currencyId: 'usd',
305
- theme: customTheme,
306
- },
307
- beforeEach: () => {
308
- // Generate realistic dates for the last month
309
- const now = new Date();
310
- const yesterday = new Date(now);
311
- yesterday.setDate(yesterday.getDate() - 1);
312
- const threeDaysAgo = new Date(now);
313
- threeDaysAgo.setDate(threeDaysAgo.getDate() - 3);
314
-
315
- mocked(useCreditUsage).mockReturnValue({
316
- creditUsage: {
317
- series: [
318
- {
319
- featureId: 'feature-1',
320
- featureName: 'Feature 1',
321
- totalCredits: 100,
322
- points: [
323
- {
324
- timestamp: yesterday.toISOString(),
325
- value: 10,
326
- },
327
- ],
328
- },
329
- {
330
- featureId: 'feature-2',
331
- featureName: 'Feature 2',
332
- totalCredits: 200,
333
- points: [
334
- {
335
- timestamp: threeDaysAgo.toISOString(),
336
- value: 20,
337
- },
338
- ],
339
- },
340
- ],
341
- currency: aiTokensCurrency,
342
- },
343
- isLoading: false,
344
- error: null,
345
- });
346
- },
347
- };
@@ -1,287 +0,0 @@
1
- import styled from '@utils/style';
2
- import { mocked } from '@storybook/test';
3
- import type { Meta, StoryObj } from '@storybook/react';
4
- import { CreditUtilization, CreditUtilizationProps } from '../components/credits';
5
- import { StiggProvider, StiggProviderProps } from '../components/StiggProvider';
6
- import { defaultArgsWithCustomer } from './baseArgs';
7
- import { customTheme } from './CustomTheme';
8
- import { useCreditBalance } from '../components/credits/hooks/useCreditBalance';
9
-
10
- const Wrapper = styled.div`
11
- padding: 20px;
12
- width: 1024px;
13
- display: flex;
14
- flex-direction: column;
15
- gap: 20px;
16
- `;
17
-
18
- const meta = {
19
- title: 'Stigg React SDK/Credits/Credit Utilization',
20
- component: CreditUtilization,
21
- args: {
22
- ...defaultArgsWithCustomer,
23
- consumed: 6000,
24
- granted: 1250,
25
- showUnits: true,
26
- showSymbol: false,
27
- },
28
- argTypes: {
29
- apiKey: {
30
- control: 'text',
31
- description: 'Stigg API Key (shared across credit stories)',
32
- },
33
- baseUri: {
34
- control: 'text',
35
- description: 'Stigg API Base URI (shared across credit stories)',
36
- },
37
- enableEdge: {
38
- control: 'boolean',
39
- description: 'Whether to enable Edge (shared across credit stories)',
40
- },
41
- customerId: {
42
- control: 'text',
43
- description: 'Customer ID (can be overridden per story)',
44
- },
45
- currencyId: {
46
- control: 'text',
47
- description: 'Currency identifier for fetching balance',
48
- },
49
- consumed: {
50
- control: 'number',
51
- description: 'Current usage amount',
52
- },
53
- granted: {
54
- control: 'number',
55
- description: 'Current remaining balance for mocked implementation',
56
- },
57
- localization: {
58
- control: 'object',
59
- description: 'Localization options (e.g., { title: "Credit Usage", remaining: "Left" })',
60
- },
61
- decimalPlaces: {
62
- control: { type: 'number', min: 0, max: 8 },
63
- description: 'Number of decimal places to display (null preserves full value)',
64
- },
65
- showUnits: {
66
- control: 'boolean',
67
- description: 'Whether to display units (e.g., tokens, dollars)',
68
- },
69
- showSymbol: {
70
- control: 'boolean',
71
- description: 'Whether to display currency symbol (e.g., $, €)',
72
- },
73
- },
74
- decorators: [
75
- (Story, { args }) => (
76
- <Wrapper>
77
- <StiggProvider
78
- apiKey={args.apiKey}
79
- customerId={args.customerId}
80
- theme={args.theme}
81
- locale={args.locale}
82
- baseUri={args.baseUri}
83
- enableEdge={args.enableEdge}>
84
- <Story />
85
- </StiggProvider>
86
- </Wrapper>
87
- ),
88
- ],
89
- } as Meta<StiggProviderProps & CreditUtilizationProps & { granted?: number; consumed?: number }>;
90
-
91
- export default meta;
92
- type Story = StoryObj<typeof meta>;
93
-
94
- export const RealImplementation: Story = {
95
- args: {
96
- currencyId: 'cred-type-ai-tokens',
97
- consumed: 6000,
98
- granted: 1250,
99
- },
100
- };
101
-
102
- export const MockedImplementation: Story = {
103
- args: {
104
- currencyId: 'cred-type-ai-tokens',
105
- consumed: 1250,
106
- granted: 6000,
107
- },
108
- beforeEach: ({ args }) => {
109
- mocked(useCreditBalance).mockReturnValue({
110
- balance: {
111
- currentBalance: (args?.granted ?? 6000) - (args?.consumed ?? 1250),
112
- totalConsumed: args.consumed || 1250,
113
- totalGranted: args.granted || 6000,
114
- currencyId: 'cred-type-ai-tokens',
115
- displayName: 'AI Tokens',
116
- symbol: '✨',
117
- units: { singular: 'AI Token', plural: 'AI Tokens' },
118
- },
119
- isLoading: false,
120
- error: null,
121
- });
122
- },
123
- };
124
-
125
- export const LowUtilization: Story = {
126
- args: {
127
- currencyId: 'cred-type-ai-tokens',
128
- consumed: 1000,
129
- granted: 9000,
130
- },
131
- beforeEach: ({ args }) => {
132
- mocked(useCreditBalance).mockReturnValue({
133
- balance: {
134
- currentBalance: (args?.granted ?? 9000) - (args?.consumed ?? 1000),
135
- totalConsumed: args.consumed || 1000,
136
- totalGranted: args.granted || 9000,
137
- currencyId: 'cred-type-ai-tokens',
138
- displayName: 'AI Tokens',
139
- symbol: null,
140
- units: { singular: 'AI Token', plural: 'AI Tokens' },
141
- },
142
- isLoading: false,
143
- error: null,
144
- });
145
- },
146
- };
147
-
148
- export const HighUtilization: Story = {
149
- args: {
150
- currencyId: 'cred-type-ai-tokens',
151
- consumed: 9000,
152
- granted: 9500,
153
- },
154
- beforeEach: ({ args }) => {
155
- mocked(useCreditBalance).mockReturnValue({
156
- balance: {
157
- currentBalance: (args?.granted ?? 9500) - (args?.consumed ?? 9000),
158
- totalConsumed: args.consumed || 9000,
159
- totalGranted: args.granted || 9500,
160
- currencyId: 'cred-type-ai-tokens',
161
- displayName: 'AI Tokens',
162
- symbol: null,
163
- units: { singular: 'AI Token', plural: 'AI Tokens' },
164
- },
165
- isLoading: false,
166
- error: null,
167
- });
168
- },
169
- };
170
-
171
- export const FullUtilization: Story = {
172
- args: {
173
- currencyId: 'cred-type-ai-tokens',
174
- consumed: 10000,
175
- granted: 10000,
176
- },
177
- beforeEach: ({ args }) => {
178
- mocked(useCreditBalance).mockReturnValue({
179
- balance: {
180
- currentBalance: (args?.granted ?? 10000) - (args?.consumed ?? 10000),
181
- totalConsumed: args.consumed || 10000,
182
- totalGranted: args.granted || 10000,
183
- currencyId: 'cred-type-ai-tokens',
184
- displayName: 'AI Tokens',
185
- symbol: null,
186
- units: { singular: 'AI Token', plural: 'AI Tokens' },
187
- },
188
- isLoading: false,
189
- error: null,
190
- });
191
- },
192
- };
193
-
194
- export const CustomThemedUtilization: Story = {
195
- args: {
196
- currencyId: 'usd',
197
- theme: customTheme,
198
- },
199
- beforeEach: ({ args }) => {
200
- mocked(useCreditBalance).mockReturnValue({
201
- balance: {
202
- currentBalance: (args?.granted ?? 350.25) - (args?.consumed ?? 149.75),
203
- totalConsumed: args.consumed || 149.75,
204
- totalGranted: args.granted || 350.25,
205
- currencyId: 'usd',
206
- displayName: 'US Dollars',
207
- symbol: '$',
208
- units: { singular: 'dollar', plural: 'dollars' },
209
- },
210
- isLoading: false,
211
- error: null,
212
- });
213
- },
214
- };
215
-
216
- export const ManyDecimalPoints: Story = {
217
- args: {
218
- currencyId: 'usd',
219
- decimalPlaces: 8,
220
- },
221
- beforeEach: ({ args }) => {
222
- mocked(useCreditBalance).mockReturnValue({
223
- balance: {
224
- currentBalance: (args?.granted ?? 350.258127982) - (args?.consumed ?? 149.89127481),
225
- totalConsumed: args.consumed || 149.89127481,
226
- totalGranted: args.granted || 350.258127982,
227
- currencyId: 'usd',
228
- displayName: 'Bitcoin',
229
- symbol: '₿',
230
- units: { singular: 'Bitcoin', plural: 'Bitcoins' },
231
- },
232
- isLoading: false,
233
- error: null,
234
- });
235
- },
236
- };
237
-
238
- export const CustomLocalization: Story = {
239
- args: {
240
- currencyId: 'cred-type-ai-tokens',
241
- localization: {
242
- title: 'Token Usage',
243
- remaining: 'Left',
244
- },
245
- },
246
- beforeEach: ({ args }) => {
247
- mocked(useCreditBalance).mockReturnValue({
248
- balance: {
249
- currentBalance: (args?.granted ?? 6000) - (args?.consumed ?? 1250),
250
- totalConsumed: args.consumed || 1250,
251
- totalGranted: args.granted || 6000,
252
- currencyId: 'cred-type-ai-tokens',
253
- displayName: 'AI Tokens',
254
- symbol: '✨',
255
- units: { singular: 'AI Token', plural: 'AI Tokens' },
256
- },
257
- isLoading: false,
258
- error: null,
259
- });
260
- },
261
- };
262
-
263
- export const LoadingState: Story = {
264
- args: {
265
- currencyId: 'cred-type-ai-tokens',
266
- },
267
- beforeEach: () => {
268
- mocked(useCreditBalance).mockReturnValue({
269
- balance: null,
270
- isLoading: true,
271
- error: null,
272
- });
273
- },
274
- };
275
-
276
- export const ErrorState: Story = {
277
- args: {
278
- currencyId: 'invalid-currency',
279
- },
280
- beforeEach: () => {
281
- mocked(useCreditBalance).mockReturnValue({
282
- balance: null,
283
- isLoading: false,
284
- error: new Error('Currency not found'),
285
- });
286
- },
287
- };
@@ -1,57 +0,0 @@
1
- import { CustomizedTheme } from '../theme/Theme';
2
-
3
- export const customTheme: CustomizedTheme = {
4
- palette: {
5
- primary: '#4CAF50',
6
- primaryDark: '#2E7D32',
7
- primaryLight: '#81C784',
8
- backgroundPaper: '#F1F8E9',
9
- backgroundHighlight: '#C8E6C9',
10
- backgroundSection: '#F1F8E9',
11
- backgroundButton: '#4CAF50',
12
- outlinedBorder: '#81C784',
13
- outlinedRestingBorder: '#A5D6A7',
14
- outlinedHoverBackground: '#E8F5E8',
15
- switchBorder: '#66BB6A',
16
- switchFill: '#4CAF50',
17
- switchHandle: '#2E7D32',
18
- warning: '#FF9800',
19
- error: '#F44336',
20
- errorDark: '#D32F2F',
21
- white: '#FFFFFF',
22
- success: '#4CAF50',
23
- successDark: '#2E7D32',
24
- text: {
25
- primary: '#1B5E20',
26
- secondary: '#388E3C',
27
- tertiary: '#66BB6A',
28
- disabled: '#9E9E9E',
29
- },
30
- },
31
- layout: {
32
- planMinWidth: '300px',
33
- planMaxWidth: '400px',
34
- planMargin: '16px',
35
- planPadding: '24px',
36
- ctaAlignment: 'center',
37
- headerAlignment: 'center',
38
- descriptionAlignment: 'center',
39
- descriptionMinHeight: '60px',
40
- switchBottomSpacing: '16px',
41
- },
42
- shadows: {
43
- light: '0 2px 4px rgba(0,0,0,0.1)',
44
- popover: '0 4px 20px rgba(0,0,0,0.15)',
45
- },
46
- border: {
47
- radius: '8px',
48
- },
49
- typography: {
50
- fontFamily: 'Inter, sans-serif',
51
- h1: { fontSize: '32px', fontWeight: 'bold' },
52
- h2: { fontSize: '24px', fontWeight: 'bold' },
53
- h3: { fontSize: '18px', fontWeight: 'bold' },
54
- body: { fontSize: '14px', fontWeight: 'normal' },
55
- caption: { fontSize: '12px', fontWeight: 'normal' },
56
- },
57
- };