@mmailaender/convex-creem 0.1.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 (383) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1176 -0
  3. package/dist/client/helpers.d.ts +17 -0
  4. package/dist/client/helpers.d.ts.map +1 -0
  5. package/dist/client/helpers.js +43 -0
  6. package/dist/client/helpers.js.map +1 -0
  7. package/dist/client/index.d.ts +1041 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +1068 -0
  10. package/dist/client/index.js.map +1 -0
  11. package/dist/client/parsers.d.ts +45 -0
  12. package/dist/client/parsers.d.ts.map +1 -0
  13. package/dist/client/parsers.js +138 -0
  14. package/dist/client/parsers.js.map +1 -0
  15. package/dist/client/polyfill.d.ts +2 -0
  16. package/dist/client/polyfill.d.ts.map +1 -0
  17. package/dist/client/polyfill.js +3 -0
  18. package/dist/client/polyfill.js.map +1 -0
  19. package/dist/component/_generated/api.d.ts +36 -0
  20. package/dist/component/_generated/api.d.ts.map +1 -0
  21. package/dist/component/_generated/api.js +31 -0
  22. package/dist/component/_generated/api.js.map +1 -0
  23. package/dist/component/_generated/component.d.ts +542 -0
  24. package/dist/component/_generated/component.d.ts.map +1 -0
  25. package/dist/component/_generated/component.js +11 -0
  26. package/dist/component/_generated/component.js.map +1 -0
  27. package/dist/component/_generated/dataModel.d.ts +46 -0
  28. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  29. package/dist/component/_generated/dataModel.js +11 -0
  30. package/dist/component/_generated/dataModel.js.map +1 -0
  31. package/dist/component/_generated/server.d.ts +121 -0
  32. package/dist/component/_generated/server.d.ts.map +1 -0
  33. package/dist/component/_generated/server.js +78 -0
  34. package/dist/component/_generated/server.js.map +1 -0
  35. package/dist/component/convex.config.d.ts +3 -0
  36. package/dist/component/convex.config.d.ts.map +1 -0
  37. package/dist/component/convex.config.js +3 -0
  38. package/dist/component/convex.config.js.map +1 -0
  39. package/dist/component/lib.d.ts +1005 -0
  40. package/dist/component/lib.d.ts.map +1 -0
  41. package/dist/component/lib.js +647 -0
  42. package/dist/component/lib.js.map +1 -0
  43. package/dist/component/schema.d.ts +191 -0
  44. package/dist/component/schema.d.ts.map +1 -0
  45. package/dist/component/schema.js +104 -0
  46. package/dist/component/schema.js.map +1 -0
  47. package/dist/component/util.d.ts +61 -0
  48. package/dist/component/util.d.ts.map +1 -0
  49. package/dist/component/util.js +142 -0
  50. package/dist/component/util.js.map +1 -0
  51. package/dist/core/catalog.d.ts +18 -0
  52. package/dist/core/catalog.d.ts.map +1 -0
  53. package/dist/core/catalog.js +82 -0
  54. package/dist/core/catalog.js.map +1 -0
  55. package/dist/core/index.d.ts +9 -0
  56. package/dist/core/index.d.ts.map +1 -0
  57. package/dist/core/index.js +9 -0
  58. package/dist/core/index.js.map +1 -0
  59. package/dist/core/markdown.d.ts +12 -0
  60. package/dist/core/markdown.d.ts.map +1 -0
  61. package/dist/core/markdown.js +26 -0
  62. package/dist/core/markdown.js.map +1 -0
  63. package/dist/core/payments.d.ts +11 -0
  64. package/dist/core/payments.d.ts.map +1 -0
  65. package/dist/core/payments.js +27 -0
  66. package/dist/core/payments.js.map +1 -0
  67. package/dist/core/pendingCheckout.d.ts +15 -0
  68. package/dist/core/pendingCheckout.d.ts.map +1 -0
  69. package/dist/core/pendingCheckout.js +40 -0
  70. package/dist/core/pendingCheckout.js.map +1 -0
  71. package/dist/core/resolver.d.ts +11 -0
  72. package/dist/core/resolver.d.ts.map +1 -0
  73. package/dist/core/resolver.js +106 -0
  74. package/dist/core/resolver.js.map +1 -0
  75. package/dist/core/selectors.d.ts +12 -0
  76. package/dist/core/selectors.d.ts.map +1 -0
  77. package/dist/core/selectors.js +18 -0
  78. package/dist/core/selectors.js.map +1 -0
  79. package/dist/core/subscriptionUpdate.d.ts +20 -0
  80. package/dist/core/subscriptionUpdate.d.ts.map +1 -0
  81. package/dist/core/subscriptionUpdate.js +64 -0
  82. package/dist/core/subscriptionUpdate.js.map +1 -0
  83. package/dist/core/types.d.ts +170 -0
  84. package/dist/core/types.d.ts.map +1 -0
  85. package/dist/core/types.js +15 -0
  86. package/dist/core/types.js.map +1 -0
  87. package/dist/design-system/colors/color-utils.d.ts +10 -0
  88. package/dist/design-system/colors/color-utils.d.ts.map +1 -0
  89. package/dist/design-system/colors/color-utils.js +91 -0
  90. package/dist/design-system/colors/color-utils.js.map +1 -0
  91. package/dist/design-system/colors/config.d.ts +33 -0
  92. package/dist/design-system/colors/config.d.ts.map +1 -0
  93. package/dist/design-system/colors/config.js +224 -0
  94. package/dist/design-system/colors/config.js.map +1 -0
  95. package/dist/design-system/colors/index.d.ts +3 -0
  96. package/dist/design-system/colors/index.d.ts.map +1 -0
  97. package/dist/design-system/colors/index.js +3 -0
  98. package/dist/design-system/colors/index.js.map +1 -0
  99. package/dist/design-system/rounded/config.d.ts +31 -0
  100. package/dist/design-system/rounded/config.d.ts.map +1 -0
  101. package/dist/design-system/rounded/config.js +76 -0
  102. package/dist/design-system/rounded/config.js.map +1 -0
  103. package/dist/design-system/rounded/index.d.ts +2 -0
  104. package/dist/design-system/rounded/index.d.ts.map +1 -0
  105. package/dist/design-system/rounded/index.js +2 -0
  106. package/dist/design-system/rounded/index.js.map +1 -0
  107. package/dist/design-system/typography/config.d.ts +55 -0
  108. package/dist/design-system/typography/config.d.ts.map +1 -0
  109. package/dist/design-system/typography/config.js +308 -0
  110. package/dist/design-system/typography/config.js.map +1 -0
  111. package/dist/design-system/typography/index.d.ts +3 -0
  112. package/dist/design-system/typography/index.d.ts.map +1 -0
  113. package/dist/design-system/typography/index.js +3 -0
  114. package/dist/design-system/typography/index.js.map +1 -0
  115. package/dist/design-system/typography/tokens.d.ts +23 -0
  116. package/dist/design-system/typography/tokens.d.ts.map +1 -0
  117. package/dist/design-system/typography/tokens.js +99 -0
  118. package/dist/design-system/typography/tokens.js.map +1 -0
  119. package/dist/react/hooks/useCheckoutSuccessParams.d.ts +2 -0
  120. package/dist/react/hooks/useCheckoutSuccessParams.d.ts.map +1 -0
  121. package/dist/react/hooks/useCheckoutSuccessParams.js +5 -0
  122. package/dist/react/hooks/useCheckoutSuccessParams.js.map +1 -0
  123. package/dist/react/index.d.ts +25 -0
  124. package/dist/react/index.d.ts.map +1 -0
  125. package/dist/react/index.js +22 -0
  126. package/dist/react/index.js.map +1 -0
  127. package/dist/react/primitives/BillingGate.d.ts +8 -0
  128. package/dist/react/primitives/BillingGate.d.ts.map +1 -0
  129. package/dist/react/primitives/BillingGate.js +13 -0
  130. package/dist/react/primitives/BillingGate.js.map +1 -0
  131. package/dist/react/primitives/BillingToggle.d.ts +8 -0
  132. package/dist/react/primitives/BillingToggle.d.ts.map +1 -0
  133. package/dist/react/primitives/BillingToggle.js +12 -0
  134. package/dist/react/primitives/BillingToggle.js.map +1 -0
  135. package/dist/react/primitives/CheckoutButton.d.ts +11 -0
  136. package/dist/react/primitives/CheckoutButton.d.ts.map +1 -0
  137. package/dist/react/primitives/CheckoutButton.js +21 -0
  138. package/dist/react/primitives/CheckoutButton.js.map +1 -0
  139. package/dist/react/primitives/CheckoutSuccessSummary.d.ts +7 -0
  140. package/dist/react/primitives/CheckoutSuccessSummary.d.ts.map +1 -0
  141. package/dist/react/primitives/CheckoutSuccessSummary.js +11 -0
  142. package/dist/react/primitives/CheckoutSuccessSummary.js.map +1 -0
  143. package/dist/react/primitives/CustomerPortalButton.d.ts +8 -0
  144. package/dist/react/primitives/CustomerPortalButton.d.ts.map +1 -0
  145. package/dist/react/primitives/CustomerPortalButton.js +21 -0
  146. package/dist/react/primitives/CustomerPortalButton.js.map +1 -0
  147. package/dist/react/primitives/NumberInput.d.ts +11 -0
  148. package/dist/react/primitives/NumberInput.d.ts.map +1 -0
  149. package/dist/react/primitives/NumberInput.js +18 -0
  150. package/dist/react/primitives/NumberInput.js.map +1 -0
  151. package/dist/react/primitives/OneTimeCheckoutButton.d.ts +11 -0
  152. package/dist/react/primitives/OneTimeCheckoutButton.d.ts.map +1 -0
  153. package/dist/react/primitives/OneTimeCheckoutButton.js +4 -0
  154. package/dist/react/primitives/OneTimeCheckoutButton.js.map +1 -0
  155. package/dist/react/primitives/OneTimePaymentStatusBadge.d.ts +6 -0
  156. package/dist/react/primitives/OneTimePaymentStatusBadge.d.ts.map +1 -0
  157. package/dist/react/primitives/OneTimePaymentStatusBadge.js +11 -0
  158. package/dist/react/primitives/OneTimePaymentStatusBadge.js.map +1 -0
  159. package/dist/react/primitives/PaymentWarningBanner.d.ts +7 -0
  160. package/dist/react/primitives/PaymentWarningBanner.d.ts.map +1 -0
  161. package/dist/react/primitives/PaymentWarningBanner.js +18 -0
  162. package/dist/react/primitives/PaymentWarningBanner.js.map +1 -0
  163. package/dist/react/primitives/PricingCard.d.ts +37 -0
  164. package/dist/react/primitives/PricingCard.d.ts.map +1 -0
  165. package/dist/react/primitives/PricingCard.js +125 -0
  166. package/dist/react/primitives/PricingCard.js.map +1 -0
  167. package/dist/react/primitives/PricingSection.d.ts +39 -0
  168. package/dist/react/primitives/PricingSection.d.ts.map +1 -0
  169. package/dist/react/primitives/PricingSection.js +24 -0
  170. package/dist/react/primitives/PricingSection.js.map +1 -0
  171. package/dist/react/primitives/ScheduledChangeBanner.d.ts +8 -0
  172. package/dist/react/primitives/ScheduledChangeBanner.d.ts.map +1 -0
  173. package/dist/react/primitives/ScheduledChangeBanner.js +13 -0
  174. package/dist/react/primitives/ScheduledChangeBanner.js.map +1 -0
  175. package/dist/react/primitives/SegmentControl.d.ts +11 -0
  176. package/dist/react/primitives/SegmentControl.d.ts.map +1 -0
  177. package/dist/react/primitives/SegmentControl.js +8 -0
  178. package/dist/react/primitives/SegmentControl.js.map +1 -0
  179. package/dist/react/primitives/SegmentGroup.d.ts +14 -0
  180. package/dist/react/primitives/SegmentGroup.d.ts.map +1 -0
  181. package/dist/react/primitives/SegmentGroup.js +11 -0
  182. package/dist/react/primitives/SegmentGroup.js.map +1 -0
  183. package/dist/react/primitives/TrialLimitBanner.d.ts +7 -0
  184. package/dist/react/primitives/TrialLimitBanner.d.ts.map +1 -0
  185. package/dist/react/primitives/TrialLimitBanner.js +14 -0
  186. package/dist/react/primitives/TrialLimitBanner.js.map +1 -0
  187. package/dist/react/shared.d.ts +28 -0
  188. package/dist/react/shared.d.ts.map +1 -0
  189. package/dist/react/shared.js +109 -0
  190. package/dist/react/shared.js.map +1 -0
  191. package/dist/react/widgets/BillingPortal.d.ts +9 -0
  192. package/dist/react/widgets/BillingPortal.d.ts.map +1 -0
  193. package/dist/react/widgets/BillingPortal.js +30 -0
  194. package/dist/react/widgets/BillingPortal.js.map +1 -0
  195. package/dist/react/widgets/ProductItem.d.ts +8 -0
  196. package/dist/react/widgets/ProductItem.d.ts.map +1 -0
  197. package/dist/react/widgets/ProductItem.js +14 -0
  198. package/dist/react/widgets/ProductItem.js.map +1 -0
  199. package/dist/react/widgets/ProductRoot.d.ts +16 -0
  200. package/dist/react/widgets/ProductRoot.d.ts.map +1 -0
  201. package/dist/react/widgets/ProductRoot.js +171 -0
  202. package/dist/react/widgets/ProductRoot.js.map +1 -0
  203. package/dist/react/widgets/SubscriptionItem.d.ts +27 -0
  204. package/dist/react/widgets/SubscriptionItem.d.ts.map +1 -0
  205. package/dist/react/widgets/SubscriptionItem.js +32 -0
  206. package/dist/react/widgets/SubscriptionItem.js.map +1 -0
  207. package/dist/react/widgets/SubscriptionRoot.d.ts +16 -0
  208. package/dist/react/widgets/SubscriptionRoot.d.ts.map +1 -0
  209. package/dist/react/widgets/SubscriptionRoot.js +405 -0
  210. package/dist/react/widgets/SubscriptionRoot.js.map +1 -0
  211. package/dist/react/widgets/index.d.ts +19 -0
  212. package/dist/react/widgets/index.d.ts.map +1 -0
  213. package/dist/react/widgets/index.js +16 -0
  214. package/dist/react/widgets/index.js.map +1 -0
  215. package/dist/react/widgets/productGroupContext.d.ts +6 -0
  216. package/dist/react/widgets/productGroupContext.d.ts.map +1 -0
  217. package/dist/react/widgets/productGroupContext.js +3 -0
  218. package/dist/react/widgets/productGroupContext.js.map +1 -0
  219. package/dist/react/widgets/subscriptionContext.d.ts +6 -0
  220. package/dist/react/widgets/subscriptionContext.d.ts.map +1 -0
  221. package/dist/react/widgets/subscriptionContext.js +3 -0
  222. package/dist/react/widgets/subscriptionContext.js.map +1 -0
  223. package/dist/react/widgets/types.d.ts +171 -0
  224. package/dist/react/widgets/types.d.ts.map +1 -0
  225. package/dist/react/widgets/types.js +2 -0
  226. package/dist/react/widgets/types.js.map +1 -0
  227. package/dist/svelte/index.d.ts +22 -0
  228. package/dist/svelte/index.d.ts.map +1 -0
  229. package/dist/svelte/index.js +20 -0
  230. package/dist/svelte/index.js.map +1 -0
  231. package/dist/svelte/primitives/BillingGate.svelte +28 -0
  232. package/dist/svelte/primitives/BillingToggle.svelte +27 -0
  233. package/dist/svelte/primitives/CheckoutButton.svelte +60 -0
  234. package/dist/svelte/primitives/CheckoutSuccessSummary.svelte +34 -0
  235. package/dist/svelte/primitives/CustomerPortalButton.svelte +60 -0
  236. package/dist/svelte/primitives/NumberInput.svelte +71 -0
  237. package/dist/svelte/primitives/OneTimeCheckoutButton.svelte +37 -0
  238. package/dist/svelte/primitives/OneTimePaymentStatusBadge.svelte +20 -0
  239. package/dist/svelte/primitives/PaymentWarningBanner.svelte +30 -0
  240. package/dist/svelte/primitives/PricingCard.svelte +356 -0
  241. package/dist/svelte/primitives/PricingSection.svelte +121 -0
  242. package/dist/svelte/primitives/ScheduledChangeBanner.svelte +46 -0
  243. package/dist/svelte/primitives/SegmentControl.svelte +38 -0
  244. package/dist/svelte/primitives/SegmentGroup.svelte +52 -0
  245. package/dist/svelte/primitives/TrialLimitBanner.svelte +32 -0
  246. package/dist/svelte/primitives/shared.d.ts +13 -0
  247. package/dist/svelte/primitives/shared.d.ts.map +1 -0
  248. package/dist/svelte/primitives/shared.js +87 -0
  249. package/dist/svelte/primitives/shared.js.map +1 -0
  250. package/dist/svelte/widgets/BillingPortal.svelte +55 -0
  251. package/dist/svelte/widgets/Product.svelte +35 -0
  252. package/dist/svelte/widgets/ProductRoot.svelte +428 -0
  253. package/dist/svelte/widgets/Subscription.svelte +52 -0
  254. package/dist/svelte/widgets/SubscriptionRoot.svelte +690 -0
  255. package/dist/svelte/widgets/index.d.ts +19 -0
  256. package/dist/svelte/widgets/index.d.ts.map +1 -0
  257. package/dist/svelte/widgets/index.js +16 -0
  258. package/dist/svelte/widgets/index.js.map +1 -0
  259. package/dist/svelte/widgets/productGroupContext.d.ts +6 -0
  260. package/dist/svelte/widgets/productGroupContext.d.ts.map +1 -0
  261. package/dist/svelte/widgets/productGroupContext.js +2 -0
  262. package/dist/svelte/widgets/productGroupContext.js.map +1 -0
  263. package/dist/svelte/widgets/subscriptionContext.d.ts +6 -0
  264. package/dist/svelte/widgets/subscriptionContext.d.ts.map +1 -0
  265. package/dist/svelte/widgets/subscriptionContext.js +2 -0
  266. package/dist/svelte/widgets/subscriptionContext.js.map +1 -0
  267. package/dist/svelte/widgets/types.d.ts +171 -0
  268. package/dist/svelte/widgets/types.d.ts.map +1 -0
  269. package/dist/svelte/widgets/types.js +2 -0
  270. package/dist/svelte/widgets/types.js.map +1 -0
  271. package/package.json +182 -0
  272. package/src/client/helpers.test.ts +139 -0
  273. package/src/client/helpers.ts +51 -0
  274. package/src/client/index.test.ts +1554 -0
  275. package/src/client/index.ts +1504 -0
  276. package/src/client/parsers.test.ts +1017 -0
  277. package/src/client/parsers.ts +182 -0
  278. package/src/client/polyfill.ts +2 -0
  279. package/src/component/_generated/api.ts +52 -0
  280. package/src/component/_generated/component.ts +619 -0
  281. package/src/component/_generated/dataModel.ts +60 -0
  282. package/src/component/_generated/server.ts +156 -0
  283. package/src/component/convex.config.ts +3 -0
  284. package/src/component/lib.test.ts +1359 -0
  285. package/src/component/lib.ts +726 -0
  286. package/src/component/schema.ts +112 -0
  287. package/src/component/util.test.ts +281 -0
  288. package/src/component/util.ts +228 -0
  289. package/src/core/catalog.test.ts +212 -0
  290. package/src/core/catalog.ts +119 -0
  291. package/src/core/index.ts +8 -0
  292. package/src/core/markdown.test.ts +43 -0
  293. package/src/core/markdown.ts +26 -0
  294. package/src/core/payments.test.ts +69 -0
  295. package/src/core/payments.ts +33 -0
  296. package/src/core/pendingCheckout.test.ts +44 -0
  297. package/src/core/pendingCheckout.ts +40 -0
  298. package/src/core/resolver.test.ts +283 -0
  299. package/src/core/resolver.ts +160 -0
  300. package/src/core/selectors.test.ts +119 -0
  301. package/src/core/selectors.ts +35 -0
  302. package/src/core/subscriptionUpdate.test.ts +164 -0
  303. package/src/core/subscriptionUpdate.ts +102 -0
  304. package/src/core/types.ts +220 -0
  305. package/src/design-system/README.md +40 -0
  306. package/src/design-system/base.css +27 -0
  307. package/src/design-system/colors/color-utils.ts +110 -0
  308. package/src/design-system/colors/config.ts +282 -0
  309. package/src/design-system/colors/index.ts +2 -0
  310. package/src/design-system/colors/utilities.css +2328 -0
  311. package/src/design-system/components/badges.css +65 -0
  312. package/src/design-system/components/buttons.css +256 -0
  313. package/src/design-system/components/dialog.css +218 -0
  314. package/src/design-system/components/icon-buttons.css +115 -0
  315. package/src/design-system/components/inputs.css +94 -0
  316. package/src/design-system/components/links.css +53 -0
  317. package/src/design-system/components/prose.css +67 -0
  318. package/src/design-system/components/segment-control.css +303 -0
  319. package/src/design-system/index.css +21 -0
  320. package/src/design-system/rounded/config.ts +91 -0
  321. package/src/design-system/rounded/index.ts +1 -0
  322. package/src/design-system/rounded/utilities.css +37 -0
  323. package/src/design-system/typography/config.ts +340 -0
  324. package/src/design-system/typography/index.ts +2 -0
  325. package/src/design-system/typography/tokens.ts +148 -0
  326. package/src/design-system/typography/utilities.css +728 -0
  327. package/src/library.css +20 -0
  328. package/src/react/hooks/useCheckoutSuccessParams.ts +7 -0
  329. package/src/react/index.tsx +47 -0
  330. package/src/react/primitives/BillingGate.tsx +26 -0
  331. package/src/react/primitives/BillingToggle.tsx +29 -0
  332. package/src/react/primitives/CheckoutButton.tsx +47 -0
  333. package/src/react/primitives/CheckoutSuccessSummary.tsx +36 -0
  334. package/src/react/primitives/CustomerPortalButton.tsx +50 -0
  335. package/src/react/primitives/NumberInput.tsx +83 -0
  336. package/src/react/primitives/OneTimeCheckoutButton.tsx +27 -0
  337. package/src/react/primitives/OneTimePaymentStatusBadge.tsx +18 -0
  338. package/src/react/primitives/PaymentWarningBanner.tsx +33 -0
  339. package/src/react/primitives/PricingCard.tsx +421 -0
  340. package/src/react/primitives/PricingSection.tsx +129 -0
  341. package/src/react/primitives/ScheduledChangeBanner.tsx +52 -0
  342. package/src/react/primitives/SegmentControl.tsx +32 -0
  343. package/src/react/primitives/SegmentGroup.tsx +53 -0
  344. package/src/react/primitives/TrialLimitBanner.tsx +32 -0
  345. package/src/react/shared.ts +138 -0
  346. package/src/react/widgets/BillingPortal.tsx +56 -0
  347. package/src/react/widgets/ProductItem.tsx +26 -0
  348. package/src/react/widgets/ProductRoot.tsx +441 -0
  349. package/src/react/widgets/SubscriptionItem.tsx +71 -0
  350. package/src/react/widgets/SubscriptionRoot.tsx +759 -0
  351. package/src/react/widgets/index.ts +36 -0
  352. package/src/react/widgets/productGroupContext.ts +10 -0
  353. package/src/react/widgets/subscriptionContext.ts +10 -0
  354. package/src/react/widgets/types.ts +179 -0
  355. package/src/svelte/index.ts +43 -0
  356. package/src/svelte/primitives/BillingGate.svelte +28 -0
  357. package/src/svelte/primitives/BillingToggle.svelte +27 -0
  358. package/src/svelte/primitives/CheckoutButton.svelte +60 -0
  359. package/src/svelte/primitives/CheckoutSuccessSummary.svelte +34 -0
  360. package/src/svelte/primitives/CustomerPortalButton.svelte +60 -0
  361. package/src/svelte/primitives/NumberInput.svelte +71 -0
  362. package/src/svelte/primitives/OneTimeCheckoutButton.svelte +37 -0
  363. package/src/svelte/primitives/OneTimePaymentStatusBadge.svelte +20 -0
  364. package/src/svelte/primitives/PaymentWarningBanner.svelte +30 -0
  365. package/src/svelte/primitives/PricingCard.svelte +356 -0
  366. package/src/svelte/primitives/PricingSection.svelte +121 -0
  367. package/src/svelte/primitives/ScheduledChangeBanner.svelte +46 -0
  368. package/src/svelte/primitives/SegmentControl.svelte +38 -0
  369. package/src/svelte/primitives/SegmentGroup.svelte +52 -0
  370. package/src/svelte/primitives/TrialLimitBanner.svelte +32 -0
  371. package/src/svelte/primitives/shared.ts +113 -0
  372. package/src/svelte/svelte.d.ts +6 -0
  373. package/src/svelte/widgets/BillingPortal.svelte +55 -0
  374. package/src/svelte/widgets/Product.svelte +35 -0
  375. package/src/svelte/widgets/ProductRoot.svelte +428 -0
  376. package/src/svelte/widgets/Subscription.svelte +52 -0
  377. package/src/svelte/widgets/SubscriptionRoot.svelte +690 -0
  378. package/src/svelte/widgets/index.ts +36 -0
  379. package/src/svelte/widgets/productGroupContext.ts +7 -0
  380. package/src/svelte/widgets/subscriptionContext.ts +7 -0
  381. package/src/svelte/widgets/types.ts +179 -0
  382. package/src/tailwind.css +6 -0
  383. package/src/test.ts +18 -0
@@ -0,0 +1,282 @@
1
+ export const COLOR_STEPS = [
2
+ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140,
3
+ ] as const;
4
+
5
+ export type ColorStep = (typeof COLOR_STEPS)[number];
6
+
7
+ export type Palette = {
8
+ id: string;
9
+ name: string;
10
+ colors: Record<ColorStep, string>; // oklch(...)
11
+ };
12
+
13
+ export type ColorRef = {
14
+ paletteId: string;
15
+ step: ColorStep;
16
+ };
17
+
18
+ export type SemanticRoleModeMap = {
19
+ light: ColorRef;
20
+ dark: ColorRef;
21
+ };
22
+
23
+ export type StateLayerRef = {
24
+ light: ColorRef;
25
+ dark: ColorRef;
26
+ opacityLight: number;
27
+ opacityDark: number;
28
+ };
29
+
30
+ const ref = (paletteId: string, step: ColorStep): ColorRef => ({
31
+ paletteId,
32
+ step,
33
+ });
34
+ const role = (light: ColorRef, dark: ColorRef): SemanticRoleModeMap => ({
35
+ light,
36
+ dark,
37
+ });
38
+
39
+ export const DEFAULT_PALETTES: Palette[] = [
40
+ {
41
+ id: "neutral",
42
+ name: "Neutral",
43
+ colors: {
44
+ 0: "oklch(0.2404 0.0015 17.26)",
45
+ 10: "oklch(0.2861 0.0015 17.24)",
46
+ 20: "oklch(0.3300 0.0014 17.23)",
47
+ 30: "oklch(0.3562 0.0000 89.88)",
48
+ 40: "oklch(0.3942 0.0000 89.88)",
49
+ 50: "oklch(0.4640 0.0000 89.88)",
50
+ 60: "oklch(0.6066 0.0000 89.88)",
51
+ 70: "oklch(0.7252 0.0000 89.88)",
52
+ 80: "oklch(0.7889 0.0000 89.88)",
53
+ 90: "oklch(0.8853 0.0000 89.88)",
54
+ 100: "oklch(0.9067 0.0000 89.88)",
55
+ 110: "oklch(0.9249 0.0000 89.88)",
56
+ 120: "oklch(0.9461 0.0000 89.88)",
57
+ 130: "oklch(0.9612 0.0000 89.88)",
58
+ 140: "oklch(0.9851 0.0000 89.88)",
59
+ },
60
+ },
61
+ {
62
+ id: "primary",
63
+ name: "Primary",
64
+ colors: {
65
+ 0: "oklch(0.2393 0.1035 267.86)",
66
+ 10: "oklch(0.2779 0.1284 267.40)",
67
+ 20: "oklch(0.3486 0.1710 266.59)",
68
+ 30: "oklch(0.3887 0.1943 266.54)",
69
+ 40: "oklch(0.4603 0.2332 266.15)",
70
+ 50: "oklch(0.5075 0.2521 266.56)",
71
+ 60: "oklch(0.5572 0.2221 268.76)",
72
+ 70: "oklch(0.6180 0.1883 271.07)",
73
+ 80: "oklch(0.6986 0.1411 273.24)",
74
+ 90: "oklch(0.8270 0.0785 274.99)",
75
+ 100: "oklch(0.8795 0.0545 276.10)",
76
+ 110: "oklch(0.9165 0.0373 275.70)",
77
+ 120: "oklch(0.9389 0.0262 274.11)",
78
+ 130: "oklch(0.9577 0.0189 279.53)",
79
+ 140: "oklch(0.9766 0.0096 273.36)",
80
+ },
81
+ },
82
+ {
83
+ id: "success",
84
+ name: "Success",
85
+ colors: {
86
+ 0: "oklch(0.2481 0.0527 149.95)",
87
+ 10: "oklch(0.3087 0.0659 149.58)",
88
+ 20: "oklch(0.3659 0.0802 149.07)",
89
+ 30: "oklch(0.4447 0.1057 147.39)",
90
+ 40: "oklch(0.5150 0.1252 146.76)",
91
+ 50: "oklch(0.5858 0.1454 146.29)",
92
+ 60: "oklch(0.6549 0.1305 147.84)",
93
+ 70: "oklch(0.7268 0.1093 149.35)",
94
+ 80: "oklch(0.8069 0.0778 152.59)",
95
+ 90: "oklch(0.8877 0.0484 154.56)",
96
+ 100: "oklch(0.9200 0.0369 150.26)",
97
+ 110: "oklch(0.9447 0.0259 150.77)",
98
+ 120: "oklch(0.9637 0.0190 152.82)",
99
+ 130: "oklch(0.9794 0.0132 152.61)",
100
+ 140: "oklch(0.9922 0.0074 151.89)",
101
+ },
102
+ },
103
+ {
104
+ id: "warning",
105
+ name: "Warning",
106
+ colors: {
107
+ 0: "oklch(0.2693 0.0489 78.79)",
108
+ 10: "oklch(0.3310 0.0619 77.75)",
109
+ 20: "oklch(0.3960 0.0765 75.73)",
110
+ 30: "oklch(0.4747 0.0942 74.38)",
111
+ 40: "oklch(0.5523 0.1110 74.37)",
112
+ 50: "oklch(0.6273 0.1267 74.22)",
113
+ 60: "oklch(0.7054 0.1250 77.42)",
114
+ 70: "oklch(0.7718 0.1075 79.76)",
115
+ 80: "oklch(0.8384 0.0836 81.23)",
116
+ 90: "oklch(0.9071 0.0556 83.98)",
117
+ 100: "oklch(0.9344 0.0423 85.96)",
118
+ 110: "oklch(0.9520 0.0313 84.59)",
119
+ 120: "oklch(0.9696 0.0204 81.78)",
120
+ 130: "oklch(0.9827 0.0126 86.83)",
121
+ 140: "oklch(0.9945 0.0057 84.57)",
122
+ },
123
+ },
124
+ {
125
+ id: "error",
126
+ name: "Error",
127
+ colors: {
128
+ 0: "oklch(0.2397 0.0707 17.94)",
129
+ 10: "oklch(0.2928 0.0940 18.41)",
130
+ 20: "oklch(0.3560 0.1189 19.66)",
131
+ 30: "oklch(0.4207 0.1444 20.13)",
132
+ 40: "oklch(0.4841 0.1679 20.24)",
133
+ 50: "oklch(0.5450 0.1913 19.79)",
134
+ 60: "oklch(0.6051 0.1741 15.61)",
135
+ 70: "oklch(0.6835 0.1350 11.37)",
136
+ 80: "oklch(0.7805 0.0854 9.02)",
137
+ 90: "oklch(0.8817 0.0426 5.18)",
138
+ 100: "oklch(0.9172 0.0294 4.55)",
139
+ 110: "oklch(0.9412 0.0213 3.09)",
140
+ 120: "oklch(0.9577 0.0154 7.49)",
141
+ 130: "oklch(0.9725 0.0110 3.49)",
142
+ 140: "oklch(0.9870 0.0065 5.62)",
143
+ },
144
+ },
145
+ ];
146
+
147
+ export const SEMANTIC_ROLE_ORDER = [
148
+ "surface.base",
149
+ "surface.subtle",
150
+ "surface.elevated",
151
+ "surface.tonal",
152
+ "surface.filled",
153
+ "surface.backdrop",
154
+ "border.subtle",
155
+ "border.default",
156
+ "foreground.default",
157
+ "foreground.muted",
158
+ "foreground.placeholder",
159
+ "foreground.on-filled",
160
+ "foreground.on-tonal",
161
+ "surface.inverse",
162
+ "foreground.on-inverse-primary",
163
+ "foreground.on-inverse-secondary",
164
+ ] as const;
165
+
166
+ export type SemanticRole = (typeof SEMANTIC_ROLE_ORDER)[number];
167
+
168
+ export const DEFAULT_SEMANTIC_ROLES: Record<SemanticRole, SemanticRoleModeMap> =
169
+ {
170
+ // Surface
171
+ "surface.base": role(ref("neutral", 140), ref("neutral", 0)),
172
+ "surface.subtle": role(ref("neutral", 130), ref("neutral", 10)),
173
+ "surface.elevated": role(ref("neutral", 120), ref("neutral", 20)),
174
+ "surface.tonal": role(ref("neutral", 110), ref("neutral", 30)),
175
+ "surface.filled": role(ref("neutral", 10), ref("neutral", 130)),
176
+ "surface.backdrop": role(ref("neutral", 70), ref("neutral", 30)),
177
+
178
+ // Border
179
+ "border.subtle": role(ref("neutral", 100), ref("neutral", 40)),
180
+ "border.default": role(ref("neutral", 90), ref("neutral", 50)),
181
+
182
+ // Foreground
183
+ "foreground.default": role(ref("neutral", 0), ref("neutral", 140)),
184
+ "foreground.muted": role(ref("neutral", 50), ref("neutral", 90)),
185
+ "foreground.placeholder": role(ref("neutral", 70), ref("neutral", 60)),
186
+ "foreground.on-filled": role(ref("neutral", 140), ref("neutral", 0)),
187
+ "foreground.on-tonal": role(ref("neutral", 10), ref("neutral", 130)),
188
+
189
+ // Inverse
190
+ "surface.inverse": role(ref("neutral", 0), ref("neutral", 140)),
191
+ "foreground.on-inverse-primary": role(
192
+ ref("neutral", 140),
193
+ ref("neutral", 0),
194
+ ),
195
+ "foreground.on-inverse-secondary": role(
196
+ ref("neutral", 80),
197
+ ref("neutral", 50),
198
+ ),
199
+ };
200
+
201
+ // Palette-specific semantic-role overrides when a palette does not follow
202
+ // the default neutral step mapping 1:1.
203
+ export const PALETTE_SEMANTIC_ROLE_OVERRIDES: Partial<
204
+ Record<string, Partial<Record<SemanticRole, SemanticRoleModeMap>>>
205
+ > = {
206
+ primary: {
207
+ "surface.base": role(ref("primary", 140), ref("primary", 0)),
208
+ "surface.subtle": role(ref("primary", 130), ref("primary", 10)),
209
+ "surface.elevated": role(ref("primary", 120), ref("primary", 20)),
210
+ "surface.tonal": role(ref("primary", 110), ref("primary", 30)),
211
+ "surface.filled": role(ref("primary", 60), ref("primary", 70)),
212
+
213
+ "border.subtle": role(ref("primary", 100), ref("primary", 40)),
214
+ "border.default": role(ref("primary", 90), ref("primary", 50)),
215
+
216
+ "foreground.default": role(ref("primary", 10), ref("primary", 130)),
217
+ "foreground.muted": role(ref("primary", 30), ref("primary", 110)),
218
+ "foreground.placeholder": role(ref("primary", 40), ref("primary", 100)),
219
+ "foreground.on-tonal": role(ref("primary", 60), ref("primary", 90)),
220
+ "foreground.on-filled": role(ref("primary", 140), ref("primary", 0)),
221
+
222
+ "surface.inverse": role(ref("primary", 0), ref("primary", 140)),
223
+ "foreground.on-inverse-primary": role(
224
+ ref("primary", 140),
225
+ ref("primary", 0),
226
+ ),
227
+ "foreground.on-inverse-secondary": role(
228
+ ref("primary", 80),
229
+ ref("primary", 50),
230
+ ),
231
+ },
232
+ };
233
+
234
+ export const STATE_LAYER_ORDER = [
235
+ "hover",
236
+ "pressed",
237
+ "focus-ring",
238
+ "border-active",
239
+ "drag",
240
+ "disabled",
241
+ ] as const;
242
+ export type StateLayerRole = (typeof STATE_LAYER_ORDER)[number];
243
+
244
+ export const DEFAULT_STATE_LAYERS: Record<
245
+ StateLayerRole,
246
+ StateLayerRef | { opacityLight: number; opacityDark: number }
247
+ > = {
248
+ hover: {
249
+ light: ref("neutral", 0),
250
+ dark: ref("neutral", 140),
251
+ opacityLight: 8,
252
+ opacityDark: 8,
253
+ },
254
+ pressed: {
255
+ light: ref("neutral", 0),
256
+ dark: ref("neutral", 140),
257
+ opacityLight: 10,
258
+ opacityDark: 10,
259
+ },
260
+ "focus-ring": {
261
+ light: ref("neutral", 60),
262
+ dark: ref("neutral", 60),
263
+ opacityLight: 100,
264
+ opacityDark: 100,
265
+ },
266
+ "border-active": {
267
+ light: ref("neutral", 40),
268
+ dark: ref("neutral", 90),
269
+ opacityLight: 100,
270
+ opacityDark: 100,
271
+ },
272
+ drag: {
273
+ light: ref("neutral", 0),
274
+ dark: ref("neutral", 140),
275
+ opacityLight: 16,
276
+ opacityDark: 16,
277
+ },
278
+ disabled: {
279
+ opacityLight: 50,
280
+ opacityDark: 50,
281
+ },
282
+ };
@@ -0,0 +1,2 @@
1
+ export * from "./config.js";
2
+ export * from "./color-utils.js";