@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,100 +0,0 @@
1
- import { CSSProperties, ReactNode, useEffect, useRef, useState } from 'react';
2
- import styled from '@utils/style';
3
- import { css } from '@emotion/react';
4
- import { TooltipProps } from '@mui/material/Tooltip';
5
- import { InformationTooltip } from './InformationTooltip';
6
- import { Typography, TypographyProps } from './Typography';
7
-
8
- const StyledText = styled(Typography)<{ $maxLines: number; $wordBreak?: boolean; $display: string; $bold?: boolean }>`
9
- display: ${({ $display }) => $display};
10
- -webkit-line-clamp: ${({ $maxLines }) => $maxLines};
11
- -webkit-box-orient: vertical;
12
- text-overflow: ellipsis;
13
- overflow: hidden;
14
- white-space: normal;
15
- ${({ $wordBreak }) =>
16
- $wordBreak &&
17
- css`
18
- word-break: break-word;
19
- `}
20
-
21
- ${({ $bold }) =>
22
- $bold &&
23
- css`
24
- font-weight: bold;
25
- `}
26
- `;
27
-
28
- function checkTextClamped(element: HTMLDivElement) {
29
- return element && (element.clientHeight < element.scrollHeight || element.offsetWidth < element.scrollWidth);
30
- }
31
-
32
- export const LongText = ({
33
- leaveDelay,
34
- children,
35
- variant,
36
- color,
37
- maxLines = 1,
38
- wordBreak,
39
- bold,
40
- tooltipPlacement = 'top',
41
- className,
42
- display = '-webkit-box',
43
- style,
44
- 'data-testid': dataTestId,
45
- }: {
46
- children: ReactNode;
47
- leaveDelay?: number;
48
- variant?: TypographyProps['variant'];
49
- color?: TypographyProps['color'];
50
- maxLines?: number;
51
- wordBreak?: boolean;
52
- bold?: boolean;
53
- tooltipPlacement?: TooltipProps['placement'];
54
- className?: string;
55
- display?: string;
56
- style?: CSSProperties;
57
- ['data-testid']?: string;
58
- }) => {
59
- const [isTextClamped, setIsTextClamped] = useState(false);
60
- const ref = useRef<HTMLDivElement>(null);
61
- const content = (
62
- <StyledText
63
- ref={ref}
64
- variant={variant}
65
- color={color}
66
- $maxLines={maxLines}
67
- $wordBreak={wordBreak}
68
- $bold={bold}
69
- className={className}
70
- $display={display}
71
- style={style}
72
- data-testid={dataTestId}>
73
- {children}
74
- </StyledText>
75
- );
76
-
77
- // Trigger recalculate of text clamped since ref is not always exists on first render
78
- useEffect(() => {
79
- if (ref?.current) {
80
- const textClamped = checkTextClamped(ref.current);
81
- setIsTextClamped(textClamped);
82
- }
83
- }, [ref]);
84
-
85
- const textClamped = ref?.current && checkTextClamped(ref.current);
86
- return (
87
- <span>
88
- {isTextClamped || textClamped ? (
89
- <InformationTooltip
90
- placement={tooltipPlacement}
91
- leaveDelay={leaveDelay}
92
- title={<Typography variant="body1">{children}</Typography>}>
93
- {content}
94
- </InformationTooltip>
95
- ) : (
96
- content
97
- )}
98
- </span>
99
- );
100
- };
@@ -1,59 +0,0 @@
1
- import styled from '@utils/style';
2
- import PoweredByStiggSvg from '../../assets/powered-by-stigg.svg';
3
-
4
- export const STIGG_WATERMARK_CLASSNAME = 'stigg-watermark';
5
-
6
- export type PoweredByStiggSources = 'paywall' | 'customer_portal' | 'checkout' | 'grant_list' | 'credit_usage_chart';
7
-
8
- const PoweredByStiggThemedSvg = styled(PoweredByStiggSvg)`
9
- * {
10
- fill: ${({ theme }) => theme.stigg.palette.text.secondary};
11
- }
12
- `;
13
-
14
- type PoweredByStiggProps = {
15
- source: PoweredByStiggSources;
16
- showWatermark?: boolean;
17
- style?: React.CSSProperties;
18
- align?: 'center' | 'end';
19
- smallScreenAlign?: 'center' | 'end';
20
- };
21
-
22
- const StyledPoweredByStigg = styled.div<{ $alignSelf?: string; $smallScreenAlign?: string }>`
23
- align-self: ${({ $alignSelf }) => $alignSelf || 'unset'};
24
-
25
- @media (max-width: 1040px) {
26
- ${({ $smallScreenAlign }) => $smallScreenAlign && `align-self: ${$smallScreenAlign};`}
27
- }
28
- `;
29
-
30
- export function PoweredByStigg({
31
- source,
32
- showWatermark,
33
- align,
34
- smallScreenAlign = 'center',
35
- style = {},
36
- }: PoweredByStiggProps) {
37
- if (!showWatermark) {
38
- return null;
39
- }
40
-
41
- const onWatermarkClick = () => {
42
- const sourceDomain = window.location.hostname.replace('www.', '');
43
- window.open(
44
- `https://www.stigg.io/?utm_source=${sourceDomain}&utm_medium=referral&utm_campaign=${source}`,
45
- '_blank',
46
- );
47
- };
48
-
49
- return (
50
- <StyledPoweredByStigg
51
- $alignSelf={align}
52
- $smallScreenAlign={smallScreenAlign}
53
- className={STIGG_WATERMARK_CLASSNAME}
54
- style={{ cursor: 'pointer', ...style }}
55
- onClick={onWatermarkClick}>
56
- <PoweredByStiggThemedSvg />
57
- </StyledPoweredByStigg>
58
- );
59
- }
@@ -1,41 +0,0 @@
1
- import styled from '@utils/style';
2
- import { StiggTheme } from '@/theme/types';
3
-
4
- const getProgressColor = (percentage: number, theme: StiggTheme) => {
5
- if (percentage >= 100) {
6
- return theme.palette.progress.high;
7
- } else if (percentage >= 75) {
8
- return theme.palette.progress.medium;
9
- } else {
10
- return theme.palette.progress.low;
11
- }
12
- };
13
-
14
- const ProgressBarContainer = styled.div`
15
- width: 100%;
16
- height: 8px;
17
- background-color: ${({ theme }) => theme.stigg.palette.progress.background};
18
- border-radius: 4px;
19
- overflow: hidden;
20
- `;
21
-
22
- const ProgressBarFill = styled.div<{ percentage: number }>`
23
- height: 100%;
24
- width: ${({ percentage }) => Math.max(0, Math.min(100, percentage))}%;
25
- background-color: ${({ theme, percentage }) => getProgressColor(percentage, theme.stigg)};
26
- border-radius: 4px;
27
- transition: width 0.3s ease-in-out;
28
- `;
29
-
30
- export interface ProgressBarProps {
31
- percentage: number;
32
- className?: string;
33
- }
34
-
35
- export function ProgressBar({ percentage, className }: ProgressBarProps) {
36
- return (
37
- <ProgressBarContainer className={className}>
38
- <ProgressBarFill percentage={percentage} />
39
- </ProgressBarContainer>
40
- );
41
- }
@@ -1,29 +0,0 @@
1
- import styled from '@utils/style';
2
- import { Chip, ChipProps } from '@mui/material';
3
- import { StatusChipVariant } from '../../theme/types';
4
-
5
- interface StatusChipProps extends Omit<ChipProps, 'variant' | 'color'> {
6
- variant: StatusChipVariant;
7
- label: string;
8
- }
9
-
10
- const StyledChip = styled(Chip)<{ $variant: StatusChipVariant }>`
11
- font-size: 0.75rem;
12
- height: 24px;
13
- border-radius: 4px;
14
- border: none;
15
- background-color: ${({ theme, $variant }) => theme?.stigg?.palette?.statusChips?.[$variant]?.background};
16
- color: ${({ theme, $variant }) => theme?.stigg?.palette?.statusChips?.[$variant]?.text};
17
- `;
18
-
19
- /**
20
- * StatusChip component for displaying status indicators with consistent theming
21
- *
22
- * @param variant - The status variant (success, warning, error, info, neutral)
23
- * @param label - The text to display in the chip
24
- * @param className - Optional CSS class name
25
- * @param size - Size of the chip (defaults to 'small')
26
- */
27
- export function StatusChip({ variant, label, className, size = 'small', ...props }: StatusChipProps) {
28
- return <StyledChip label={label} size={size} $variant={variant} className={className} {...props} />;
29
- }
@@ -1,39 +0,0 @@
1
- import { PriceTierFragment, TiersMode } from '@stigg/js-client-sdk';
2
- import styled from '@utils/style';
3
- import { hasTierWithUnitPrice } from '../utils/priceTierUtils';
4
- import { Typography } from './Typography';
5
- import { VolumePerUnitInput } from './VolumePerUnitInput';
6
- import { VolumeBulkSelect } from './VolumeBulkSelect';
7
- import { Box } from '@mui/material';
8
-
9
- export type TiersSelectContainerProps = {
10
- componentId: string;
11
- tiers?: PriceTierFragment[] | null;
12
- tierUnits?: string;
13
- tiersMode?: TiersMode | null;
14
- errorMessage?: string;
15
- handleChange: (quantity: number) => void;
16
- value: number;
17
- width?: number | string;
18
- };
19
-
20
- const TiersSelectLayout = styled(Typography)`
21
- min-height: 46px;
22
- `;
23
-
24
- export function TiersSelectContainer(props: TiersSelectContainerProps) {
25
- const { tiers, errorMessage } = props;
26
-
27
- return (
28
- <>
29
- <Box display="flex" flexDirection="column" justifyContent="center" style={{ width: '100%' }}>
30
- <TiersSelectLayout as="div" className="stigg-price-tier-select">
31
- {hasTierWithUnitPrice(tiers) ? <VolumePerUnitInput {...props} /> : <VolumeBulkSelect {...props} />}
32
- </TiersSelectLayout>
33
- <Typography style={{ margin: '4px' }} variant="caption" color="error">
34
- {errorMessage}
35
- </Typography>
36
- </Box>
37
- </>
38
- );
39
- }
@@ -1,117 +0,0 @@
1
- import React, { CSSProperties, forwardRef } from 'react';
2
- import styled from '@utils/style';
3
- import { Theme, useTheme } from '@emotion/react';
4
-
5
- type Colors =
6
- | 'primary'
7
- | 'primary.main'
8
- | 'primary.main.light'
9
- | 'secondary'
10
- | 'tertiary'
11
- | 'disabled'
12
- | 'white'
13
- | 'warning'
14
- | 'error';
15
-
16
- export type TypographyProps = {
17
- children: React.ReactNode;
18
- variant?: 'h1' | 'h3' | 'h6' | 'body1' | 'caption';
19
- style?: CSSProperties;
20
- color?: Colors;
21
- overrideColor?: string;
22
- className?: string;
23
- bold?: boolean;
24
- as?: 'div' | 'p' | 'span';
25
- lineHeight?: string;
26
- };
27
-
28
- function getColor(theme: Theme, colorName: Colors): string {
29
- const palette = theme.stigg.palette;
30
-
31
- switch (colorName) {
32
- case 'white':
33
- return 'white';
34
- case 'primary.main':
35
- return palette.primary;
36
- case 'primary.main.light':
37
- return palette.primaryLight;
38
- case 'warning':
39
- return palette.warning;
40
- case 'error':
41
- return palette.error;
42
- default:
43
- return palette.text[colorName] || palette.text.primary;
44
- }
45
- }
46
-
47
- function getTypographyStyle(theme: Theme, variant: TypographyProps['variant'] = 'body1') {
48
- const typography = theme.stigg.typography;
49
-
50
- const variantMap = {
51
- h1: typography.h1,
52
- h3: typography.h2, // h3 variant uses h2 theme
53
- h6: typography.h3, // h6 variant uses h3 theme
54
- body1: typography.body,
55
- caption: typography.caption,
56
- };
57
-
58
- return variantMap[variant] || variantMap.body1;
59
- }
60
-
61
- const StyledText = styled.div<{
62
- $isInline: boolean;
63
- $variant: TypographyProps['variant'];
64
- $bold: boolean;
65
- $color: string;
66
- $lineHeight?: string;
67
- }>`
68
- margin: 0;
69
- ${({ $isInline }) => $isInline && `display: inline`};
70
-
71
- /* Apply typography styles from theme */
72
- font-family: ${({ theme }) => theme.stigg.typography.fontFamily};
73
- color: ${({ $color }) => $color};
74
- font-weight: ${({ $bold, theme, $variant }) => {
75
- return $bold ? 'bold' : getTypographyStyle(theme, $variant).fontWeight;
76
- }};
77
- font-size: ${({ theme, $variant }) => getTypographyStyle(theme, $variant).fontSize};
78
- ${({ $lineHeight }) => $lineHeight && `line-height: ${$lineHeight};`}
79
- `;
80
-
81
- export const Typography = forwardRef<HTMLDivElement, TypographyProps>((props, ref) => {
82
- const {
83
- children,
84
- style,
85
- variant = 'body1',
86
- color = 'primary',
87
- overrideColor,
88
- bold = false,
89
- as,
90
- className,
91
- lineHeight,
92
- ...rest
93
- } = props;
94
- const theme = useTheme();
95
-
96
- const typographyStyle = getTypographyStyle(theme, variant);
97
- const elementType = as || typographyStyle.semanticElement;
98
- const finalColor = overrideColor || getColor(theme, color);
99
-
100
- return (
101
- <StyledText
102
- as={elementType}
103
- ref={ref}
104
- {...rest}
105
- className={className}
106
- style={style}
107
- $variant={variant}
108
- $bold={bold}
109
- $color={finalColor}
110
- $lineHeight={lineHeight}
111
- $isInline={elementType === 'span'}>
112
- {children}
113
- </StyledText>
114
- );
115
- });
116
-
117
- Typography.displayName = 'Typography';
@@ -1,74 +0,0 @@
1
- import { PriceTierFragment } from '@stigg/js-client-sdk';
2
- import styled from '@utils/style';
3
- import OutlinedInput from '@mui/material/OutlinedInput';
4
- import Select from '@mui/material/Select';
5
- import MenuItem from '@mui/material/MenuItem';
6
- import { map } from 'lodash';
7
- import { Typography } from './Typography';
8
- import { TiersSelectContainerProps } from './TiersSelectContainer';
9
- import { formatNumber } from '../utils/formatNumber';
10
-
11
- const TierSelect = styled(Select)`
12
- border-radius: 10px;
13
- min-height: 42px;
14
- min-width: 120px;
15
-
16
- &:hover .MuiOutlinedInput-notchedOutline {
17
- border-color: ${({ theme }) => theme.stigg.palette.outlinedBorder};
18
- }
19
- `;
20
-
21
- const TierInput = styled(OutlinedInput)`
22
- & .MuiInputBase-input {
23
- padding: 10px 12px;
24
- }
25
-
26
- &.Mui-focused .MuiOutlinedInput-notchedOutline {
27
- border-color: ${({ theme }) => theme.stigg.palette.primary} !important;
28
- }
29
- `;
30
-
31
- export function VolumeBulkSelect({
32
- value,
33
- componentId,
34
- tierUnits,
35
- tiers,
36
- handleChange,
37
- errorMessage,
38
- }: Pick<TiersSelectContainerProps, 'value' | 'componentId' | 'tiers' | 'tierUnits'> & {
39
- errorMessage?: string;
40
- handleChange: (quantity: number) => void;
41
- }) {
42
- if (!tiers) {
43
- return null;
44
- }
45
-
46
- return (
47
- <TierSelect
48
- value={value.toString()}
49
- fullWidth
50
- error={!!errorMessage}
51
- onChange={(event) => {
52
- const quantity = event?.target?.value ? Number(event?.target?.value) : null;
53
- if (quantity) {
54
- handleChange(quantity);
55
- }
56
- }}
57
- id={componentId}
58
- input={<TierInput />}
59
- MenuProps={{
60
- MenuListProps: { disablePadding: true },
61
- PaperProps: {
62
- sx: { marginTop: '4px', borderRadius: '10px' },
63
- },
64
- }}>
65
- {map(tiers, (tier: PriceTierFragment) => (
66
- <MenuItem className="stigg-price-tier-menu-item-text" key={tier.upTo} value={tier.upTo?.toString()}>
67
- <Typography variant="body1" color="primary" style={{ lineHeight: 'unset' }}>
68
- {formatNumber(tier.upTo)} {tierUnits}
69
- </Typography>
70
- </MenuItem>
71
- ))}
72
- </TierSelect>
73
- );
74
- }
@@ -1,42 +0,0 @@
1
- import InputAdornment from '@mui/material/InputAdornment';
2
- import { Typography } from './Typography';
3
- import { InputField } from '../checkout/components';
4
- import { TiersSelectContainerProps } from './TiersSelectContainer';
5
- import { ON_WHEEL_BLUR } from '../utils/onWheelBlur';
6
-
7
- export function VolumePerUnitInput({
8
- width,
9
- tierUnits,
10
- value,
11
- handleChange,
12
- errorMessage,
13
- }: Pick<TiersSelectContainerProps, 'width' | 'tierUnits' | 'value'> & {
14
- errorMessage?: string;
15
- handleChange: (quantity: number) => void;
16
- }) {
17
- return (
18
- <InputField
19
- type="number"
20
- onWheel={ON_WHEEL_BLUR}
21
- fullWidth
22
- error={!!errorMessage}
23
- sx={{ minHeight: '46px', width }}
24
- InputProps={{
25
- endAdornment: (
26
- <InputAdornment position="end">
27
- <Typography variant="body1" color="primary">
28
- {tierUnits}
29
- </Typography>
30
- </InputAdornment>
31
- ),
32
- }}
33
- value={value}
34
- onChange={(event) => {
35
- const quantity = event?.target?.value ? Number(event?.target?.value) : null;
36
- if (quantity) {
37
- handleChange(quantity);
38
- }
39
- }}
40
- />
41
- );
42
- }
@@ -1,17 +0,0 @@
1
- import { Chart, Plugin } from 'chart.js';
2
-
3
- // This is a workaround for data-labels plugin which runs the text formatter
4
- // function before the bar element is drawn, so we don't have the width yet.
5
- // So this small plugin update the chart before draw in order to re-run the formatter
6
- export const redrawBeforeFirstDrawPlugin: Plugin = {
7
- id: 'redrawBeforeFirstDrawPlugin',
8
-
9
- beforeDraw(chart: Chart) {
10
- // @ts-ignore
11
- if (!chart.$rendered) {
12
- // @ts-ignore
13
- chart.$rendered = true;
14
- chart.update('none');
15
- }
16
- },
17
- };
@@ -1,34 +0,0 @@
1
- import {
2
- BarElement,
3
- CategoryScale,
4
- Chart as ChartJS,
5
- Legend,
6
- LinearScale,
7
- Title,
8
- Tooltip,
9
- PointElement,
10
- LineElement,
11
- Filler,
12
- ArcElement,
13
- } from 'chart.js';
14
- import ChartDataLabels from 'chartjs-plugin-datalabels';
15
- import annotationPlugin from 'chartjs-plugin-annotation';
16
- import Gradient from 'chartjs-plugin-gradient';
17
-
18
- const PLUGINS = [
19
- CategoryScale,
20
- LinearScale,
21
- BarElement,
22
- Title,
23
- Tooltip,
24
- Legend,
25
- ChartDataLabels,
26
- PointElement,
27
- LineElement,
28
- Filler,
29
- ArcElement,
30
- annotationPlugin,
31
- Gradient,
32
- ];
33
-
34
- ChartJS.register(...PLUGINS);
@@ -1,41 +0,0 @@
1
- import { StiggTheme } from '../../../theme/types';
2
-
3
- export const getOtherColor = (theme: StiggTheme) => theme.palette.backgroundSection;
4
-
5
- export const getLineColor = (theme: StiggTheme) => theme.palette.outlinedBorder;
6
-
7
- export const opacityColor = (color: string, opacity = 1) => {
8
- const hex = Math.round(opacity * 255)
9
- .toString(16)
10
- .padStart(2, '0');
11
- return `${color}${hex}`;
12
- };
13
-
14
- export const LEGEND_BOX_SIZE = 12;
15
-
16
- export const getLabelColor = (theme: StiggTheme) => theme.palette.text.secondary;
17
-
18
- export const getLabelFont = (theme: StiggTheme) => ({
19
- family: theme.typography.fontFamily,
20
- size: parseInt(theme.typography.body.fontSize),
21
- });
22
-
23
- export const getAxisTitleColor = (theme: StiggTheme) => theme.palette.text.primary;
24
-
25
- export const getAxisTitleFont = (theme: StiggTheme) => ({
26
- family: theme.typography.fontFamily,
27
- size: parseInt(theme.typography.body.fontSize),
28
- });
29
-
30
- export const getAxisTickColor = (theme: StiggTheme) => theme.palette.text.secondary;
31
-
32
- export const getAxisColor = (theme: StiggTheme) => theme.palette.outlinedBorder;
33
-
34
- export const getAxisTickFont = (theme: StiggTheme) => ({
35
- family: theme.typography.fontFamily,
36
- size: parseInt(theme.typography.body.fontSize),
37
- });
38
-
39
- export const GRID_BORDER_DASH = [8, 8];
40
-
41
- export const AXIS_TITLE_SPACING = 15;