@revenuecat/purchases-ui-js 0.0.16 → 0.0.18

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 (67) hide show
  1. package/dist/components/button/Button.svelte +0 -13
  2. package/dist/components/button/Button.svelte.d.ts +4 -2
  3. package/dist/components/button/ButtonNode.stories.svelte +16 -11
  4. package/dist/components/button/ButtonNode.svelte +26 -1
  5. package/dist/components/button/ButtonNode.svelte.d.ts +1 -0
  6. package/dist/components/button/button-utils.d.ts +2 -0
  7. package/dist/components/button/button-utils.js +19 -0
  8. package/dist/components/footer/Footer.stories.svelte +47 -155
  9. package/dist/components/footer/Footer.stories.svelte.d.ts +1 -2
  10. package/dist/components/footer/Footer.svelte +10 -1
  11. package/dist/components/footer/Footer.svelte.d.ts +1 -0
  12. package/dist/components/image/Image.stories.svelte +13 -7
  13. package/dist/components/image/Image.svelte +37 -19
  14. package/dist/components/image/Image.svelte.d.ts +1 -0
  15. package/dist/components/image/image-utils.d.ts +2 -12
  16. package/dist/components/image/image-utils.js +28 -11
  17. package/dist/components/package/Package.stories.svelte +5 -5
  18. package/dist/components/package/Package.svelte +15 -6
  19. package/dist/components/package/Package.svelte.d.ts +1 -0
  20. package/dist/components/paywall/Node.svelte +77 -17
  21. package/dist/components/paywall/Node.svelte.d.ts +21 -2
  22. package/dist/components/paywall/Paywall.stories.svelte +93 -15
  23. package/dist/components/paywall/Paywall.svelte +110 -88
  24. package/dist/components/paywall/Paywall.svelte.d.ts +4 -0
  25. package/dist/components/paywall/paywall-utils.d.ts +1 -1
  26. package/dist/components/paywall/paywall-utils.js +11 -9
  27. package/dist/components/purchase-button/PurchaseButton.stories.svelte +7 -8
  28. package/dist/components/purchase-button/PurchaseButton.svelte +24 -10
  29. package/dist/components/purchase-button/PurchaseButton.svelte.d.ts +1 -0
  30. package/dist/components/purchase-button/purchase-button-utils.d.ts +2 -0
  31. package/dist/components/purchase-button/purchase-button-utils.js +20 -0
  32. package/dist/components/stack/Stack.stories.svelte +1138 -6
  33. package/dist/components/stack/Stack.svelte +160 -42
  34. package/dist/components/stack/Stack.svelte.d.ts +1 -0
  35. package/dist/components/stack/stack-utils.d.ts +24 -24
  36. package/dist/components/stack/stack-utils.js +245 -12
  37. package/dist/components/text/Text.svelte +24 -19
  38. package/dist/components/text/Text.svelte.d.ts +4 -2
  39. package/dist/components/text/TextNode.stories.svelte +13 -13
  40. package/dist/components/text/TextNode.svelte +24 -34
  41. package/dist/components/text/TextNode.svelte.d.ts +1 -0
  42. package/dist/components/text/text-utils.d.ts +11 -14
  43. package/dist/components/text/text-utils.js +130 -15
  44. package/dist/components/timeline/Timeline.stories.svelte +640 -0
  45. package/dist/components/timeline/Timeline.stories.svelte.d.ts +19 -0
  46. package/dist/components/timeline/Timeline.svelte +40 -0
  47. package/dist/components/timeline/Timeline.svelte.d.ts +4 -0
  48. package/dist/components/timeline/TimelineItem.svelte +112 -0
  49. package/dist/components/timeline/TimelineItem.svelte.d.ts +4 -0
  50. package/dist/components/timeline/timeline-utils.d.ts +8 -0
  51. package/dist/components/timeline/timeline-utils.js +128 -0
  52. package/dist/data/entities.d.ts +89 -9
  53. package/dist/data/state.d.ts +2 -0
  54. package/dist/index.d.ts +3 -2
  55. package/dist/index.js +3 -2
  56. package/dist/stories/fixtures.d.ts +7 -1
  57. package/dist/stories/fixtures.js +6898 -7
  58. package/dist/stories/meta-templates.d.ts +0 -1
  59. package/dist/stories/meta-templates.js +0 -5
  60. package/dist/types.d.ts +16 -7
  61. package/dist/types.js +7 -0
  62. package/dist/utils/style-utils.d.ts +80 -41
  63. package/dist/utils/style-utils.js +157 -70
  64. package/dist/utils/variable-utils.d.ts +27 -0
  65. package/dist/utils/variable-utils.js +37 -0
  66. package/package.json +27 -25
  67. package/dist/components/paywall/global-styles.css +0 -9
@@ -32,3 +32,40 @@ export const replaceVariables = ({ value = "", variableDictionary: dictionary, }
32
32
  return currentVariableReplaced;
33
33
  }, value);
34
34
  };
35
+ /**
36
+ * Given a ComponentLocalizations object and a locale returns the label with label_id in the chosen locale, if any. Falls
37
+ * back to the label with the same label_id in the fallbackLocale, if any. Finally returns undefined if no label can be
38
+ * found for the requested label_id.
39
+ * @param label_id - The id of the label to be returned
40
+ * @param locale - The preferred locale to return the label
41
+ * @param fallbackLocale - The locale to fall back to in case no label is found in the preferred one
42
+ * @param labels - A ComponentLocalizations instance
43
+ * @returns The label in the preferred or fallback locale, or undefined.
44
+ */
45
+ export function getLabelById(label_id, locale, fallbackLocale, labels) {
46
+ if (!label_id)
47
+ return "";
48
+ const fallback = labels[fallbackLocale]?.[label_id];
49
+ if (!(labels[locale] || {})[label_id]) {
50
+ return fallback;
51
+ }
52
+ return labels[locale][label_id];
53
+ }
54
+ /**
55
+ * Gets a label by ID and replaces any variables in it with values from the dictionary
56
+ * @param text_lid - The ID of the text label to retrieve
57
+ * @param purchaseState - Object containing locale and defaultLocale
58
+ * @param labels - ComponentLocalizations containing the labels
59
+ * @param variableDictionary - Dictionary of variables to replace in the label text
60
+ * @returns The label with variables replaced, or undefined if label not found
61
+ */
62
+ export function getLabelAndReplaceVariables({ text_lid, locale, defaultLocale, labels, variableDictionary, }) {
63
+ if (!text_lid)
64
+ return "";
65
+ const label = getLabelById(text_lid, locale, defaultLocale, labels);
66
+ const parsedLabel = replaceVariables({
67
+ value: label,
68
+ variableDictionary,
69
+ });
70
+ return parsedLabel;
71
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@revenuecat/purchases-ui-js",
3
3
  "description": "Web components for Paywalls. Powered by RevenueCat",
4
4
  "private": false,
5
- "version": "0.0.16",
5
+ "version": "0.0.18",
6
6
  "author": {
7
7
  "name": "RevenueCat, Inc."
8
8
  },
@@ -36,7 +36,7 @@
36
36
  "chromatic": "chromatic",
37
37
  "format": "prettier --write .",
38
38
  "typecheck": "tsc --noEmit",
39
- "test": "vitest",
39
+ "test": "vitest --config vitest.config.ts",
40
40
  "lint": "eslint --config eslint.config.js src/**/*"
41
41
  },
42
42
  "files": [
@@ -58,39 +58,41 @@
58
58
  }
59
59
  },
60
60
  "peerDependencies": {
61
- "svelte": "^5.0.0"
61
+ "svelte": "^5.3.0"
62
62
  },
63
63
  "devDependencies": {
64
- "@chromatic-com/storybook": "^1.9.0",
64
+ "@chromatic-com/storybook": "^3.2.2",
65
65
  "@eslint/js": "^9.16.0",
66
- "@storybook/addon-essentials": "^8.3.6",
67
- "@storybook/addon-interactions": "^8.3.6",
68
- "@storybook/addon-links": "^8.3.6",
69
- "@storybook/addon-svelte-csf": "^5.0.0-next.9",
70
- "@storybook/blocks": "^8.3.6",
71
- "@storybook/svelte": "^8.3.6",
72
- "@storybook/sveltekit": "^8.3.6",
73
- "@storybook/test": "^8.3.6",
66
+ "@storybook/addon-essentials": "^8.4.7",
67
+ "@storybook/addon-interactions": "^8.4.7",
68
+ "@storybook/addon-links": "^8.4.7",
69
+ "@storybook/addon-svelte-csf": "^5.0.0-next.14",
70
+ "@storybook/blocks": "^8.4.7",
71
+ "@storybook/svelte": "^8.4.7",
72
+ "@storybook/sveltekit": "^8.4.7",
73
+ "@storybook/test": "^8.4.7",
74
74
  "@sveltejs/adapter-node": "^5.2.9",
75
- "@sveltejs/kit": "^2.0.0",
76
- "@sveltejs/package": "^2.0.0",
77
- "@sveltejs/vite-plugin-svelte": "^4.0.0",
75
+ "@sveltejs/kit": "^2.9.0",
76
+ "@sveltejs/package": "^2.3.7",
77
+ "@sveltejs/vite-plugin-svelte": "^5.0.2",
78
78
  "@typescript-eslint/parser": "^8.17.0",
79
- "chromatic": "^11.16.1",
79
+ "chromatic": "^11.20.0",
80
80
  "eslint": "^9.16.0",
81
81
  "eslint-plugin-svelte": "^2.46.1",
82
82
  "globals": "^15.13.0",
83
- "husky": "^9.1.6",
83
+ "husky": "^9.1.7",
84
+ "jsdom": "^25.0.1",
84
85
  "lint-staged": "^15.2.10",
85
- "prettier": "^3.3.3",
86
- "prettier-plugin-svelte": "^3.2.7",
87
- "publint": "^0.2.0",
88
- "storybook": "^8.3.6",
89
- "svelte": "^5.0.0",
90
- "svelte-check": "^4.0.0",
91
- "typescript": "^5.0.0",
86
+ "prettier": "^3.4.2",
87
+ "prettier-plugin-svelte": "^3.3.2",
88
+ "publint": "^0.2.12",
89
+ "storybook": "^8.4.7",
90
+ "svelte": "^5.9.1",
91
+ "svelte-check": "^4.1.1",
92
+ "typescript": "^5.7.2",
92
93
  "typescript-eslint": "^8.17.0",
93
- "vite": "^5.0.11"
94
+ "vite": "^6.0.3",
95
+ "vitest": "^2.1.8"
94
96
  },
95
97
  "lint-staged": {
96
98
  "**/*": [
@@ -1,9 +0,0 @@
1
- *,
2
- *::before,
3
- *::after {
4
- box-sizing: border-box;
5
- }
6
- body {
7
- margin: 0;
8
- padding: 0;
9
- }