@stigg/react-sdk 7.7.1-beta.0 → 7.7.1-beta.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.
Files changed (286) hide show
  1. package/dist/index.d.ts +5 -2
  2. package/dist/react-sdk.cjs.js +298 -238
  3. package/dist/react-sdk.esm.js +5223 -3827
  4. package/package.json +2 -3
  5. package/src/assets/add.svg +0 -3
  6. package/src/assets/addons.svg +0 -12
  7. package/src/assets/arrow-forward.svg +0 -3
  8. package/src/assets/arrow-right.svg +0 -6
  9. package/src/assets/billing-info-customer.svg +0 -11
  10. package/src/assets/check-stigg.svg +0 -3
  11. package/src/assets/check.svg +0 -5
  12. package/src/assets/close.svg +0 -3
  13. package/src/assets/contact-support.svg +0 -13
  14. package/src/assets/coupon.svg +0 -6
  15. package/src/assets/credit-card.svg +0 -10
  16. package/src/assets/dollar-coin.svg +0 -13
  17. package/src/assets/edit-icon.svg +0 -3
  18. package/src/assets/entitlement-check.svg +0 -3
  19. package/src/assets/lottie/checkout-success.json +0 -1
  20. package/src/assets/mini-schedule.svg +0 -3
  21. package/src/assets/outlined-checked-circle-disabled.svg +0 -6
  22. package/src/assets/outlined-checked-circle.svg +0 -6
  23. package/src/assets/outlined-circle.svg +0 -3
  24. package/src/assets/pay-as-you-go-charge.svg +0 -11
  25. package/src/assets/payment-method.svg +0 -4
  26. package/src/assets/plus-icon.svg +0 -6
  27. package/src/assets/powered-by-stigg.svg +0 -13
  28. package/src/assets/promotions.svg +0 -13
  29. package/src/assets/remove.svg +0 -3
  30. package/src/assets/restore.svg +0 -3
  31. package/src/assets/sand-clock.svg +0 -4
  32. package/src/assets/schedule-box.svg +0 -9
  33. package/src/assets/schedule.svg +0 -3
  34. package/src/assets/subscription-renews-icon.svg +0 -14
  35. package/src/assets/trash.svg +0 -8
  36. package/src/components/StiggProvider.tsx +0 -170
  37. package/src/components/checkout/Checkout.tsx +0 -37
  38. package/src/components/checkout/CheckoutContainer.style.ts +0 -51
  39. package/src/components/checkout/CheckoutContainer.tsx +0 -193
  40. package/src/components/checkout/CheckoutProvider.tsx +0 -181
  41. package/src/components/checkout/components/Button.tsx +0 -35
  42. package/src/components/checkout/components/ChangePlanButton.tsx +0 -30
  43. package/src/components/checkout/components/ContentLoadingSkeleton.tsx +0 -41
  44. package/src/components/checkout/components/DowngradeToFreeContainer.tsx +0 -115
  45. package/src/components/checkout/components/InputField.tsx +0 -26
  46. package/src/components/checkout/components/Skeletons.style.ts +0 -30
  47. package/src/components/checkout/components/StyledArrow.tsx +0 -9
  48. package/src/components/checkout/components/index.ts +0 -3
  49. package/src/components/checkout/configurations/steps.ts +0 -1
  50. package/src/components/checkout/configurations/textOverrides.ts +0 -150
  51. package/src/components/checkout/configurations/theme.ts +0 -46
  52. package/src/components/checkout/configurations/typography.ts +0 -30
  53. package/src/components/checkout/formatting.ts +0 -12
  54. package/src/components/checkout/hooks/index.ts +0 -8
  55. package/src/components/checkout/hooks/useAddonsStepModel.ts +0 -92
  56. package/src/components/checkout/hooks/useCheckoutModel.ts +0 -53
  57. package/src/components/checkout/hooks/useCouponModel.ts +0 -28
  58. package/src/components/checkout/hooks/useLoadCheckout.ts +0 -48
  59. package/src/components/checkout/hooks/usePaymentStepModel.ts +0 -68
  60. package/src/components/checkout/hooks/usePlanStepModel.ts +0 -184
  61. package/src/components/checkout/hooks/usePreviewSubscription.ts +0 -165
  62. package/src/components/checkout/hooks/useProgressBarModel.ts +0 -211
  63. package/src/components/checkout/hooks/useSubscriptionModel.ts +0 -22
  64. package/src/components/checkout/hooks/useSubscriptionState.ts +0 -26
  65. package/src/components/checkout/index.ts +0 -8
  66. package/src/components/checkout/planHeader/PlanHeader.tsx +0 -41
  67. package/src/components/checkout/planHeader/index.ts +0 -1
  68. package/src/components/checkout/progressBar/CheckoutProgressBar.style.ts +0 -35
  69. package/src/components/checkout/progressBar/CheckoutProgressBar.tsx +0 -82
  70. package/src/components/checkout/promotionCode/AddPromotionCode.tsx +0 -107
  71. package/src/components/checkout/promotionCode/AddPromotionCodeButton.tsx +0 -43
  72. package/src/components/checkout/promotionCode/AppliedPromotionCode.tsx +0 -49
  73. package/src/components/checkout/promotionCode/PromotionCodeSection.tsx +0 -40
  74. package/src/components/checkout/promotionCode/index.ts +0 -1
  75. package/src/components/checkout/steps/addons/CheckoutAddonsStep.style.tsx +0 -34
  76. package/src/components/checkout/steps/addons/CheckoutAddonsStep.tsx +0 -144
  77. package/src/components/checkout/steps/addons/addon.utils.ts +0 -67
  78. package/src/components/checkout/steps/addons/components/AddonInputContainer.tsx +0 -84
  79. package/src/components/checkout/steps/addons/components/AddonTextContainer.tsx +0 -45
  80. package/src/components/checkout/steps/addons/index.ts +0 -1
  81. package/src/components/checkout/steps/payment/PaymentMethods.style.ts +0 -36
  82. package/src/components/checkout/steps/payment/PaymentMethods.tsx +0 -106
  83. package/src/components/checkout/steps/payment/PaymentStep.tsx +0 -63
  84. package/src/components/checkout/steps/payment/index.ts +0 -1
  85. package/src/components/checkout/steps/payment/stripe/StripePaymentForm.tsx +0 -79
  86. package/src/components/checkout/steps/payment/stripe/index.ts +0 -3
  87. package/src/components/checkout/steps/payment/stripe/stripe.utils.ts +0 -122
  88. package/src/components/checkout/steps/payment/stripe/useStripeIntegration.ts +0 -33
  89. package/src/components/checkout/steps/payment/stripe/useSubmit.ts +0 -135
  90. package/src/components/checkout/steps/payment/zuora/ZuoraPaymentForm.tsx +0 -128
  91. package/src/components/checkout/steps/payment/zuora/index.ts +0 -9
  92. package/src/components/checkout/steps/payment/zuora/useZuoraIntegration.ts +0 -57
  93. package/src/components/checkout/steps/payment/zuora/useZuoraSubmit.ts +0 -125
  94. package/src/components/checkout/steps/payment/zuora/zuora.utils.ts +0 -72
  95. package/src/components/checkout/steps/plan/BillingPeriodPicker.style.tsx +0 -69
  96. package/src/components/checkout/steps/plan/BillingPeriodPicker.tsx +0 -86
  97. package/src/components/checkout/steps/plan/CheckoutChargeList.tsx +0 -223
  98. package/src/components/checkout/steps/plan/CheckoutPlanStep.style.tsx +0 -6
  99. package/src/components/checkout/steps/plan/CheckoutPlanStep.tsx +0 -31
  100. package/src/components/checkout/steps/plan/index.ts +0 -1
  101. package/src/components/checkout/summary/CheckoutSuccess.tsx +0 -82
  102. package/src/components/checkout/summary/CheckoutSummary.tsx +0 -458
  103. package/src/components/checkout/summary/CheckoutSummarySkeleton.tsx +0 -38
  104. package/src/components/checkout/summary/components/CheckoutCaptions.tsx +0 -145
  105. package/src/components/checkout/summary/components/GraduatedPriceBreakdown.tsx +0 -70
  106. package/src/components/checkout/summary/components/LineItems.tsx +0 -275
  107. package/src/components/checkout/summary/components/WithSkeleton.tsx +0 -16
  108. package/src/components/checkout/summary/components/getPriceBreakdownString.ts +0 -66
  109. package/src/components/checkout/summary/index.ts +0 -2
  110. package/src/components/checkout/types.ts +0 -82
  111. package/src/components/common/CollapsableSectionIcon.tsx +0 -9
  112. package/src/components/common/Icon.tsx +0 -61
  113. package/src/components/common/InformationTooltip.tsx +0 -28
  114. package/src/components/common/LongText.tsx +0 -100
  115. package/src/components/common/PoweredByStigg.tsx +0 -59
  116. package/src/components/common/ProgressBar.tsx +0 -41
  117. package/src/components/common/StatusChip.tsx +0 -29
  118. package/src/components/common/TiersSelectContainer.tsx +0 -39
  119. package/src/components/common/Typography.tsx +0 -117
  120. package/src/components/common/VolumeBulkSelect.tsx +0 -74
  121. package/src/components/common/VolumePerUnitInput.tsx +0 -42
  122. package/src/components/common/chart/chartjs.helpers.ts +0 -17
  123. package/src/components/common/chart/chartjs.plugins.ts +0 -34
  124. package/src/components/common/chart/chartjs.theme.ts +0 -41
  125. package/src/components/common/chart/chartjs.tooltip.plugin.tsx +0 -224
  126. package/src/components/common/customIcons.ts +0 -24
  127. package/src/components/common/iconColor.ts +0 -15
  128. package/src/components/common/mapExternalTheme.ts +0 -147
  129. package/src/components/common/mediaQuery.ts +0 -19
  130. package/src/components/common/table/DataRows.tsx +0 -33
  131. package/src/components/common/table/EmptyState.tsx +0 -19
  132. package/src/components/common/table/ErrorState.tsx +0 -19
  133. package/src/components/common/table/GenericTable.tsx +0 -155
  134. package/src/components/common/table/LoadingRows.tsx +0 -33
  135. package/src/components/common/table/index.ts +0 -6
  136. package/src/components/common/table/types.ts +0 -30
  137. package/src/components/credits/balance/CreditBalance.tsx +0 -70
  138. package/src/components/credits/balance/CreditBalanceValue.tsx +0 -60
  139. package/src/components/credits/creditUsageChart/CreditUsage.chartjs.ts +0 -223
  140. package/src/components/credits/creditUsageChart/CreditUsageChart.tsx +0 -128
  141. package/src/components/credits/creditUsageChart/CreditUsageChartEmptyState.tsx +0 -29
  142. package/src/components/credits/creditUsageChart/CreditUsageChartErrorState.tsx +0 -19
  143. package/src/components/credits/creditUsageChart/CreditUsageChartHeader.tsx +0 -104
  144. package/src/components/credits/creditUsageChart/CreditUsageChartTooltip.tsx +0 -93
  145. package/src/components/credits/creditUsageChart/CreditUsageLegend.tsx +0 -141
  146. package/src/components/credits/creditUsageChart/types.ts +0 -4
  147. package/src/components/credits/grants/CreditGrants.tsx +0 -64
  148. package/src/components/credits/grants/CreditGrantsTable.tsx +0 -101
  149. package/src/components/credits/grants/types.ts +0 -38
  150. package/src/components/credits/grants/utils.ts +0 -25
  151. package/src/components/credits/hooks/useCreditBalance.ts +0 -75
  152. package/src/components/credits/hooks/useCreditGrants.ts +0 -40
  153. package/src/components/credits/hooks/useCreditUsage.ts +0 -50
  154. package/src/components/credits/index.ts +0 -15
  155. package/src/components/credits/localization.ts +0 -25
  156. package/src/components/credits/utilization/CreditUtilization.tsx +0 -74
  157. package/src/components/credits/utilization/CreditUtilizationValue.tsx +0 -113
  158. package/src/components/credits/utils/creditBalanceUtils.ts +0 -31
  159. package/src/components/credits/utils/creditGrantUtils.ts +0 -27
  160. package/src/components/customerPortal/CustomerPortal.style.ts +0 -20
  161. package/src/components/customerPortal/CustomerPortal.tsx +0 -37
  162. package/src/components/customerPortal/CustomerPortalContainer.tsx +0 -77
  163. package/src/components/customerPortal/CustomerPortalContext.ts +0 -32
  164. package/src/components/customerPortal/CustomerPortalHeader.tsx +0 -18
  165. package/src/components/customerPortal/CustomerPortalProvider.tsx +0 -49
  166. package/src/components/customerPortal/billing/InformationGrid.tsx +0 -54
  167. package/src/components/customerPortal/billing/InvoicesSection.tsx +0 -41
  168. package/src/components/customerPortal/billing/PaymentDetailsSection.tsx +0 -140
  169. package/src/components/customerPortal/common/ExternalLinkButton.tsx +0 -34
  170. package/src/components/customerPortal/common/SectionContainer.tsx +0 -22
  171. package/src/components/customerPortal/common/SectionHeader.ts +0 -15
  172. package/src/components/customerPortal/common/SectionTitle.tsx +0 -23
  173. package/src/components/customerPortal/common/SkeletonButton.tsx +0 -5
  174. package/src/components/customerPortal/common/StyledButton.tsx +0 -13
  175. package/src/components/customerPortal/customerPortalTextOverrides.ts +0 -39
  176. package/src/components/customerPortal/customerPortalTheme.ts +0 -35
  177. package/src/components/customerPortal/hooks/useCustomerPortal.ts +0 -39
  178. package/src/components/customerPortal/index.ts +0 -16
  179. package/src/components/customerPortal/paywall/CustomerPortalPaywall.style.ts +0 -33
  180. package/src/components/customerPortal/paywall/CustomerPortalPaywall.tsx +0 -36
  181. package/src/components/customerPortal/subscriptionOverview/ContactCustomerSupport.tsx +0 -50
  182. package/src/components/customerPortal/subscriptionOverview/SubscriptionOverviewLoader.tsx +0 -28
  183. package/src/components/customerPortal/subscriptionOverview/SubscriptionsOverview.tsx +0 -106
  184. package/src/components/customerPortal/subscriptionOverview/SubscriptionsOverviewHeader.tsx +0 -48
  185. package/src/components/customerPortal/subscriptionOverview/charges/ChargeItem.tsx +0 -74
  186. package/src/components/customerPortal/subscriptionOverview/charges/ChargeList.tsx +0 -65
  187. package/src/components/customerPortal/subscriptionOverview/subscriptionScheduledUpdates/SubscriptionScheduledUpdateRow.tsx +0 -110
  188. package/src/components/customerPortal/subscriptionOverview/subscriptionScheduledUpdates/SubscriptionScheduledUpdatesAlert.tsx +0 -158
  189. package/src/components/customerPortal/subscriptionOverview/subscriptionView/SubscriptionView.style.ts +0 -6
  190. package/src/components/customerPortal/subscriptionOverview/subscriptionView/SubscriptionView.tsx +0 -37
  191. package/src/components/customerPortal/subscriptionOverview/subscriptionView/TrialPanel.tsx +0 -58
  192. package/src/components/customerPortal/subscriptionOverview/tabs/AddonsList.tsx +0 -28
  193. package/src/components/customerPortal/subscriptionOverview/tabs/Promotions.tsx +0 -62
  194. package/src/components/customerPortal/subscriptionOverview/tabs/SubscriptionTabs.style.tsx +0 -32
  195. package/src/components/customerPortal/subscriptionOverview/tabs/SubscriptionTabs.tsx +0 -100
  196. package/src/components/customerPortal/subscriptionOverview/types/customerPortal.types.ts +0 -4
  197. package/src/components/customerPortal/subscriptionOverview/upcomingBilling/NextEstimatedBill.tsx +0 -29
  198. package/src/components/customerPortal/subscriptionOverview/upcomingBilling/NoUpcomingBilling.tsx +0 -18
  199. package/src/components/customerPortal/subscriptionOverview/upcomingBilling/UpcomingBilling.tsx +0 -89
  200. package/src/components/customerPortal/types.ts +0 -20
  201. package/src/components/customerPortal/usage/CustomerUsageData.style.tsx +0 -22
  202. package/src/components/customerPortal/usage/CustomerUsageData.tsx +0 -124
  203. package/src/components/customerPortal/usage/featureUsage/EntitlementCTAButton.tsx +0 -62
  204. package/src/components/customerPortal/usage/featureUsage/FeatureUsage.helper.ts +0 -45
  205. package/src/components/customerPortal/usage/featureUsage/FeatureUsage.style.ts +0 -13
  206. package/src/components/customerPortal/usage/featureUsage/FeatureUsage.tsx +0 -96
  207. package/src/components/customerPortal/usage/featureUsage/FeatureUsageProgressBar.tsx +0 -56
  208. package/src/components/guards/BooleanEntitlementGuard.tsx +0 -21
  209. package/src/components/guards/EnumEntitlementGuard.tsx +0 -17
  210. package/src/components/guards/MeteredEntitlementGuard.tsx +0 -21
  211. package/src/components/guards/NumericEntitlementGuard.tsx +0 -21
  212. package/src/components/hooks/index.ts +0 -1
  213. package/src/components/hooks/useChargeSort.ts +0 -17
  214. package/src/components/hooks/useIsScreenWiderThan.ts +0 -6
  215. package/src/components/hooks/useWaitForCheckoutCompleted.ts +0 -65
  216. package/src/components/paywall/BillingPeriodPicker.tsx +0 -90
  217. package/src/components/paywall/EntitlementRow.tsx +0 -127
  218. package/src/components/paywall/Paywall.tsx +0 -189
  219. package/src/components/paywall/PaywallContainer.tsx +0 -119
  220. package/src/components/paywall/PaywallLoader.tsx +0 -96
  221. package/src/components/paywall/PlanCompatibleAddons.tsx +0 -127
  222. package/src/components/paywall/PlanEntitlements.tsx +0 -75
  223. package/src/components/paywall/PlanOffering.tsx +0 -256
  224. package/src/components/paywall/PlanOfferingButton.tsx +0 -232
  225. package/src/components/paywall/PlanPrice.tsx +0 -154
  226. package/src/components/paywall/hooks/useLoadPaywallData.ts +0 -75
  227. package/src/components/paywall/index.ts +0 -5
  228. package/src/components/paywall/paywallTextOverrides.ts +0 -79
  229. package/src/components/paywall/types.ts +0 -80
  230. package/src/components/paywall/utils/calculateTrialDaysLeft.ts +0 -5
  231. package/src/components/paywall/utils/calculateUnitQuantityText.ts +0 -23
  232. package/src/components/paywall/utils/computeDefaultBillingPeriod.ts +0 -36
  233. package/src/components/paywall/utils/getPlansToDisplay.ts +0 -13
  234. package/src/components/paywall/utils/hasPricePoints.ts +0 -10
  235. package/src/components/paywall/utils/mapPaywallData.ts +0 -126
  236. package/src/components/utils/calculateDiscountRate.ts +0 -49
  237. package/src/components/utils/currencyUtils.ts +0 -38
  238. package/src/components/utils/dateUtils.ts +0 -17
  239. package/src/components/utils/fixtures/price.fixtures.ts +0 -42
  240. package/src/components/utils/formatNumber.ts +0 -5
  241. package/src/components/utils/getFeatureName.ts +0 -26
  242. package/src/components/utils/getPaidPriceText.ts +0 -77
  243. package/src/components/utils/getPlanPrice.ts +0 -62
  244. package/src/components/utils/getSubscriptionScheduleUpdateTexts.tsx +0 -88
  245. package/src/components/utils/numberUtils.ts +0 -6
  246. package/src/components/utils/onWheelBlur.ts +0 -3
  247. package/src/components/utils/planPrices.ts +0 -10
  248. package/src/components/utils/priceTierUtils.spec.ts +0 -84
  249. package/src/components/utils/priceTierUtils.ts +0 -250
  250. package/src/components/utils/priceUtils.ts +0 -11
  251. package/src/custom.d.ts +0 -6
  252. package/src/hooks/index.ts +0 -8
  253. package/src/hooks/useActiveSubscriptions.ts +0 -21
  254. package/src/hooks/useBooleanEntitlement.ts +0 -20
  255. package/src/hooks/useCustomerPortal.ts +0 -21
  256. package/src/hooks/useEnumEntitlement.ts +0 -20
  257. package/src/hooks/useFetch.ts +0 -32
  258. package/src/hooks/useMeteredEntitlement.ts +0 -20
  259. package/src/hooks/useNumericEntitlement.ts +0 -20
  260. package/src/hooks/usePaywall.ts +0 -21
  261. package/src/hooks/useStiggContext.ts +0 -13
  262. package/src/index.ts +0 -103
  263. package/src/services/logger.ts +0 -22
  264. package/src/stories/Checkout.stories.tsx +0 -123
  265. package/src/stories/CreditBalance.stories.tsx +0 -248
  266. package/src/stories/CreditGrants.stories.tsx +0 -210
  267. package/src/stories/CreditUsageChart.stories.tsx +0 -347
  268. package/src/stories/CreditUtilization.stories.tsx +0 -287
  269. package/src/stories/CustomTheme.ts +0 -57
  270. package/src/stories/CustomerPortal.stories.tsx +0 -265
  271. package/src/stories/GenericTable.stories.tsx +0 -263
  272. package/src/stories/Paywall.stories.tsx +0 -147
  273. package/src/stories/ProgressBar.stories.tsx +0 -103
  274. package/src/stories/StatusChip.stories.tsx +0 -154
  275. package/src/stories/baseArgs.ts +0 -10
  276. package/src/stories/mocks/checkout/consts.ts +0 -15
  277. package/src/stories/mocks/checkout/mockCheckoutPreview.ts +0 -152
  278. package/src/stories/mocks/checkout/mockCheckoutState.ts +0 -212
  279. package/src/styles.css +0 -46
  280. package/src/theme/Fonts.tsx +0 -80
  281. package/src/theme/Theme.tsx +0 -64
  282. package/src/theme/emotion.d.ts +0 -17
  283. package/src/theme/getResolvedTheme.ts +0 -135
  284. package/src/theme/types.ts +0 -85
  285. package/src/types.ts +0 -22
  286. 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
- };