@xenition/ui 0.1.0 → 0.1.2

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 (121) hide show
  1. package/dist/native/commerce/GenerativeCover.d.ts +14 -9
  2. package/dist/native/commerce/GenerativeCover.d.ts.map +1 -1
  3. package/dist/native/commerce/GenerativeCover.js +31 -7
  4. package/dist/native/commerce/GenerativeCover.js.map +1 -1
  5. package/dist/native/marketing/AnnouncementBar.d.ts +33 -0
  6. package/dist/native/marketing/AnnouncementBar.d.ts.map +1 -0
  7. package/dist/native/marketing/AnnouncementBar.js +101 -0
  8. package/dist/native/marketing/AnnouncementBar.js.map +1 -0
  9. package/dist/native/marketing/AuroraBackground.d.ts +35 -0
  10. package/dist/native/marketing/AuroraBackground.d.ts.map +1 -0
  11. package/dist/native/marketing/AuroraBackground.js +56 -0
  12. package/dist/native/marketing/AuroraBackground.js.map +1 -0
  13. package/dist/native/marketing/Bento.d.ts +54 -0
  14. package/dist/native/marketing/Bento.d.ts.map +1 -0
  15. package/dist/native/marketing/Bento.js +139 -0
  16. package/dist/native/marketing/Bento.js.map +1 -0
  17. package/dist/native/marketing/Carousel.d.ts +26 -0
  18. package/dist/native/marketing/Carousel.d.ts.map +1 -0
  19. package/dist/native/marketing/Carousel.js +95 -0
  20. package/dist/native/marketing/Carousel.js.map +1 -0
  21. package/dist/native/marketing/ComparisonTable.d.ts +38 -0
  22. package/dist/native/marketing/ComparisonTable.d.ts.map +1 -0
  23. package/dist/native/marketing/ComparisonTable.js +84 -0
  24. package/dist/native/marketing/ComparisonTable.js.map +1 -0
  25. package/dist/native/marketing/Countdown.d.ts +25 -0
  26. package/dist/native/marketing/Countdown.d.ts.map +1 -0
  27. package/dist/native/marketing/Countdown.js +107 -0
  28. package/dist/native/marketing/Countdown.js.map +1 -0
  29. package/dist/native/marketing/CoverGallery.d.ts +38 -0
  30. package/dist/native/marketing/CoverGallery.d.ts.map +1 -0
  31. package/dist/native/marketing/CoverGallery.js +41 -0
  32. package/dist/native/marketing/CoverGallery.js.map +1 -0
  33. package/dist/native/marketing/EditorialGrid.d.ts +73 -0
  34. package/dist/native/marketing/EditorialGrid.d.ts.map +1 -0
  35. package/dist/native/marketing/EditorialGrid.js +34 -0
  36. package/dist/native/marketing/EditorialGrid.js.map +1 -0
  37. package/dist/native/marketing/FeatureSplit.d.ts +29 -0
  38. package/dist/native/marketing/FeatureSplit.d.ts.map +1 -0
  39. package/dist/native/marketing/FeatureSplit.js +37 -0
  40. package/dist/native/marketing/FeatureSplit.js.map +1 -0
  41. package/dist/native/marketing/LocationBlock.d.ts +37 -0
  42. package/dist/native/marketing/LocationBlock.d.ts.map +1 -0
  43. package/dist/native/marketing/LocationBlock.js +49 -0
  44. package/dist/native/marketing/LocationBlock.js.map +1 -0
  45. package/dist/native/marketing/Navbar.d.ts +34 -0
  46. package/dist/native/marketing/Navbar.d.ts.map +1 -0
  47. package/dist/native/marketing/Navbar.js +100 -0
  48. package/dist/native/marketing/Navbar.js.map +1 -0
  49. package/dist/native/marketing/NewsletterSignup.d.ts +33 -0
  50. package/dist/native/marketing/NewsletterSignup.d.ts.map +1 -0
  51. package/dist/native/marketing/NewsletterSignup.js +97 -0
  52. package/dist/native/marketing/NewsletterSignup.js.map +1 -0
  53. package/dist/native/marketing/OrnamentRule.d.ts +23 -0
  54. package/dist/native/marketing/OrnamentRule.d.ts.map +1 -0
  55. package/dist/native/marketing/OrnamentRule.js +43 -0
  56. package/dist/native/marketing/OrnamentRule.js.map +1 -0
  57. package/dist/native/marketing/ParticleField.d.ts +25 -0
  58. package/dist/native/marketing/ParticleField.d.ts.map +1 -0
  59. package/dist/native/marketing/ParticleField.js +92 -0
  60. package/dist/native/marketing/ParticleField.js.map +1 -0
  61. package/dist/native/marketing/PointerHalo.d.ts +22 -0
  62. package/dist/native/marketing/PointerHalo.d.ts.map +1 -0
  63. package/dist/native/marketing/PointerHalo.js +15 -0
  64. package/dist/native/marketing/PointerHalo.js.map +1 -0
  65. package/dist/native/marketing/PriceList.d.ts +30 -0
  66. package/dist/native/marketing/PriceList.d.ts.map +1 -0
  67. package/dist/native/marketing/PriceList.js +42 -0
  68. package/dist/native/marketing/PriceList.js.map +1 -0
  69. package/dist/native/marketing/PricingToggle.d.ts +30 -0
  70. package/dist/native/marketing/PricingToggle.d.ts.map +1 -0
  71. package/dist/native/marketing/PricingToggle.js +55 -0
  72. package/dist/native/marketing/PricingToggle.js.map +1 -0
  73. package/dist/native/marketing/ProcessSteps.d.ts +24 -0
  74. package/dist/native/marketing/ProcessSteps.d.ts.map +1 -0
  75. package/dist/native/marketing/ProcessSteps.js +52 -0
  76. package/dist/native/marketing/ProcessSteps.js.map +1 -0
  77. package/dist/native/marketing/ProductMock.d.ts +47 -0
  78. package/dist/native/marketing/ProductMock.d.ts.map +1 -0
  79. package/dist/native/marketing/ProductMock.js +270 -0
  80. package/dist/native/marketing/ProductMock.js.map +1 -0
  81. package/dist/native/marketing/RichText.d.ts +40 -0
  82. package/dist/native/marketing/RichText.d.ts.map +1 -0
  83. package/dist/native/marketing/RichText.js +134 -0
  84. package/dist/native/marketing/RichText.js.map +1 -0
  85. package/dist/native/marketing/SectionDivider.d.ts +34 -0
  86. package/dist/native/marketing/SectionDivider.d.ts.map +1 -0
  87. package/dist/native/marketing/SectionDivider.js +41 -0
  88. package/dist/native/marketing/SectionDivider.js.map +1 -0
  89. package/dist/native/marketing/TeamGrid.d.ts +27 -0
  90. package/dist/native/marketing/TeamGrid.d.ts.map +1 -0
  91. package/dist/native/marketing/TeamGrid.js +37 -0
  92. package/dist/native/marketing/TeamGrid.js.map +1 -0
  93. package/dist/native/marketing/VideoEmbed.d.ts +23 -0
  94. package/dist/native/marketing/VideoEmbed.d.ts.map +1 -0
  95. package/dist/native/marketing/VideoEmbed.js +38 -0
  96. package/dist/native/marketing/VideoEmbed.js.map +1 -0
  97. package/dist/native/marketing/index.d.ts +48 -0
  98. package/dist/native/marketing/index.d.ts.map +1 -1
  99. package/dist/native/marketing/index.js +55 -1
  100. package/dist/native/marketing/index.js.map +1 -1
  101. package/dist/native/motion/AnimatedCounter.d.ts +24 -0
  102. package/dist/native/motion/AnimatedCounter.d.ts.map +1 -0
  103. package/dist/native/motion/AnimatedCounter.js +76 -0
  104. package/dist/native/motion/AnimatedCounter.js.map +1 -0
  105. package/dist/native/motion/Marquee.d.ts +23 -0
  106. package/dist/native/motion/Marquee.d.ts.map +1 -0
  107. package/dist/native/motion/Marquee.js +79 -0
  108. package/dist/native/motion/Marquee.js.map +1 -0
  109. package/dist/native/motion/index.d.ts +10 -5
  110. package/dist/native/motion/index.d.ts.map +1 -1
  111. package/dist/native/motion/index.js +11 -6
  112. package/dist/native/motion/index.js.map +1 -1
  113. package/dist/native/primitives/Wordmark.d.ts +27 -0
  114. package/dist/native/primitives/Wordmark.d.ts.map +1 -0
  115. package/dist/native/primitives/Wordmark.js +41 -0
  116. package/dist/native/primitives/Wordmark.js.map +1 -0
  117. package/dist/native/primitives/index.d.ts +2 -0
  118. package/dist/native/primitives/index.d.ts.map +1 -1
  119. package/dist/native/primitives/index.js +4 -2
  120. package/dist/native/primitives/index.js.map +1 -1
  121. package/package.json +1 -1
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProductMock = ProductMock;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_native_1 = require("react-native");
6
+ const theme_1 = require("../theme");
7
+ const color_1 = require("../primitives/internal/color");
8
+ const StatusDot_1 = require("../primitives/StatusDot");
9
+ const VARIANT_DEFAULTS = {
10
+ analytics: {
11
+ title: 'analytics / production',
12
+ kpis: [
13
+ { label: 'Active now', value: '8,412' },
14
+ { label: 'Events / min', value: '96,204' },
15
+ { label: 'Conversion', value: '4.8%' },
16
+ ],
17
+ chart: 'bars',
18
+ feed: [
19
+ 'signup.completed · eu-west',
20
+ 'checkout.paid · us-east',
21
+ 'funnel.converted · ap-south',
22
+ 'alert.anomaly · p99 spike',
23
+ ],
24
+ },
25
+ chat: {
26
+ title: 'inbox / live',
27
+ kpis: [
28
+ { label: 'Open', value: '24' },
29
+ { label: 'Median reply', value: '48s' },
30
+ { label: 'CSAT', value: '98%' },
31
+ ],
32
+ chart: 'scene',
33
+ feed: ['agent.assigned · queue a', 'conversation.resolved · web', 'note.added · api'],
34
+ },
35
+ commerce: {
36
+ title: 'storefront / today',
37
+ kpis: [
38
+ { label: 'Revenue', value: '$12,480' },
39
+ { label: 'Orders', value: '312' },
40
+ { label: 'AOV', value: '$40.00' },
41
+ ],
42
+ chart: 'sparkline',
43
+ feed: ['order.paid · #4821', 'cart.recovered · email', 'refund.issued · #4790'],
44
+ },
45
+ calendar: {
46
+ title: 'schedule / week',
47
+ kpis: [
48
+ { label: 'Booked', value: '38' },
49
+ { label: 'Utilization', value: '86%' },
50
+ { label: 'No-shows', value: '1' },
51
+ ],
52
+ chart: 'scene',
53
+ feed: ['booking.confirmed · 09:30', 'booking.rescheduled · 13:00', 'reminder.sent · sms'],
54
+ },
55
+ };
56
+ /** Deterministic pseudo-random equalizer heights (stable across renders/runtimes). */
57
+ const BARS = Array.from({ length: 20 }, (_, i) => {
58
+ const wave = Math.sin(i / 3.1) * 0.28 + Math.cos(i / 1.7) * 0.14;
59
+ return Math.min(1, Math.max(0.15, 0.38 + wave + ((i * 37) % 19) / 90));
60
+ });
61
+ /** Deterministic sparkline sample heights (0..1), rendered as a stepped area. */
62
+ const SPARK = Array.from({ length: 16 }, (_, i) => {
63
+ const wave = Math.sin(i / 2.2) * 0.3 + Math.cos(i / 3.7) * 0.18;
64
+ return Math.min(1, Math.max(0.12, 0.5 + wave));
65
+ });
66
+ /** Ring completion fractions, outer to inner. */
67
+ const RINGS = [0.78, 0.54, 0.32];
68
+ /** Chat scene: [width%, mine?] skeleton bubbles, deterministic. */
69
+ const BUBBLES = [
70
+ [58, false],
71
+ [42, true],
72
+ [66, false],
73
+ [30, true],
74
+ [50, false],
75
+ ];
76
+ /** Calendar scene: 5×7 month grid; which cells read "booked", deterministic. */
77
+ const MONTH_CELLS = Array.from({ length: 35 }, (_, i) => (i * 13 + 5) % 7 < 3);
78
+ const CANVAS_HEIGHT = 160;
79
+ /**
80
+ * A configurable fake-product panel — the native mirror of the web
81
+ * `ProductMock`, the "product shot" of a landing hero.
82
+ *
83
+ * The web version is entirely CSS-animated (3D tilt entrance, looping
84
+ * equalizer bars, self-drawing sparkline/rings, sliding feed rows) over glass
85
+ * chrome with `backdrop-filter`. React Native has no keyframe engine,
86
+ * `filter: blur()`, or SVG stroke-dash animation, so native renders a
87
+ * **static, deterministic token visual** — no animation loop, reduced-motion
88
+ * safe. The `variant`/`chart`/`kpis`/`feed` prop contract is preserved for
89
+ * parity: bars/sparkline become stacked Views, rings become concentric
90
+ * bordered circles, chat/calendar scenes become static bubble/grid layouts.
91
+ * Token-only colors throughout; it is decorative scenery (`aria-hidden`).
92
+ */
93
+ function ProductMock({ variant = 'analytics', title, kpis, chart, feed, live = 'LIVE', footnote, style, }) {
94
+ const { colors, tokens } = (0, theme_1.useXenitionTheme)();
95
+ const defaults = VARIANT_DEFAULTS[variant];
96
+ const resolvedTitle = title ?? defaults.title;
97
+ const resolvedKpis = kpis ?? defaults.kpis;
98
+ const resolvedChart = chart ?? defaults.chart;
99
+ const resolvedFeed = feed ?? defaults.feed;
100
+ const canvasBg = (0, color_1.withAlpha)(colors.surface, 0.6);
101
+ const tileBg = (0, color_1.withAlpha)(colors.surface, 0.6);
102
+ const tileBorder = (0, color_1.withAlpha)(colors.border, 0.55);
103
+ function renderVisual() {
104
+ if (resolvedChart === 'bars') {
105
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: { flex: 1, flexDirection: 'row', alignItems: 'flex-end', gap: 3 }, children: BARS.map((h, i) => ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: {
106
+ flex: 1,
107
+ height: `${(h * 100).toFixed(0)}%`,
108
+ borderTopLeftRadius: 2,
109
+ borderTopRightRadius: 2,
110
+ backgroundColor: tokens.ramps.primary[500],
111
+ opacity: 0.85,
112
+ } }, i))) }));
113
+ }
114
+ if (resolvedChart === 'sparkline') {
115
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: { flex: 1, flexDirection: 'row', alignItems: 'flex-end', gap: 2 }, children: SPARK.map((h, i) => ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: {
116
+ flex: 1,
117
+ height: `${(h * 100).toFixed(0)}%`,
118
+ borderTopLeftRadius: 2,
119
+ borderTopRightRadius: 2,
120
+ backgroundColor: (0, color_1.withAlpha)(tokens.ramps.accent[400], 0.7),
121
+ } }, i))) }));
122
+ }
123
+ if (resolvedChart === 'rings') {
124
+ const ringColors = [
125
+ tokens.ramps.primary[500],
126
+ tokens.ramps.accent[400],
127
+ tokens.ramps.primary[300],
128
+ ];
129
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: { flex: 1, alignItems: 'center', justifyContent: 'center' }, children: (0, jsx_runtime_1.jsx)(react_native_1.View, { style: { width: 112, height: 112, alignItems: 'center', justifyContent: 'center' }, children: RINGS.map((fraction, i) => {
130
+ const size = 112 - i * 34;
131
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: {
132
+ position: 'absolute',
133
+ width: size,
134
+ height: size,
135
+ borderRadius: size / 2,
136
+ borderWidth: 6,
137
+ // static "progress" hint: full track tinted, thicker top edge tone
138
+ borderColor: (0, color_1.withAlpha)(colors.border, 0.7),
139
+ borderTopColor: ringColors[i],
140
+ borderRightColor: fraction > 0.5 ? ringColors[i] : (0, color_1.withAlpha)(colors.border, 0.7),
141
+ } }, i));
142
+ }) }) }));
143
+ }
144
+ // scene: chat thread or month grid
145
+ if (variant === 'chat') {
146
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: { flex: 1, justifyContent: 'flex-end', gap: tokens.spacing.xs }, children: BUBBLES.map(([width, mine], i) => ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: {
147
+ height: 18,
148
+ width: `${width}%`,
149
+ borderRadius: tokens.radius.md,
150
+ alignSelf: mine ? 'flex-end' : 'flex-start',
151
+ backgroundColor: mine
152
+ ? (0, color_1.withAlpha)(tokens.ramps.primary[500], 0.5)
153
+ : (0, color_1.withAlpha)(colors.onSurface, 0.08),
154
+ } }, i))) }));
155
+ }
156
+ // calendar month grid
157
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: { flex: 1, flexDirection: 'row', flexWrap: 'wrap', gap: 6 }, children: MONTH_CELLS.map((booked, i) => ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: {
158
+ width: `${100 / 7}%`,
159
+ aspectRatio: 1,
160
+ maxWidth: 20,
161
+ borderRadius: tokens.radius.sm,
162
+ backgroundColor: booked
163
+ ? (0, color_1.withAlpha)(tokens.ramps.primary[500], 0.85)
164
+ : (0, color_1.withAlpha)(colors.onSurface, 0.06),
165
+ } }, i))) }));
166
+ }
167
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { testID: "xen-product-mock", accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants", style: [{ width: '100%' }, style], children: (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: {
168
+ overflow: 'hidden',
169
+ borderRadius: tokens.radius.lg,
170
+ backgroundColor: (0, color_1.withAlpha)(colors.surface, 0.78),
171
+ borderWidth: 1,
172
+ borderColor: (0, color_1.withAlpha)(colors.border, 0.7),
173
+ }, children: [(0, jsx_runtime_1.jsxs)(react_native_1.View, { style: {
174
+ flexDirection: 'row',
175
+ alignItems: 'center',
176
+ justifyContent: 'space-between',
177
+ paddingHorizontal: tokens.spacing.lg,
178
+ paddingVertical: tokens.spacing.sm,
179
+ borderBottomWidth: 1,
180
+ borderBottomColor: (0, color_1.withAlpha)(colors.border, 0.7),
181
+ }, children: [(0, jsx_runtime_1.jsxs)(react_native_1.View, { style: { flexDirection: 'row', alignItems: 'center', gap: tokens.spacing.md }, children: [(0, jsx_runtime_1.jsx)(react_native_1.View, { style: { flexDirection: 'row', gap: 6 }, children: [0, 1, 2].map((i) => ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: {
182
+ width: 10,
183
+ height: 10,
184
+ borderRadius: 5,
185
+ backgroundColor: (0, color_1.withAlpha)(colors.onSurface, 0.2),
186
+ } }, i))) }), (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: {
187
+ color: colors.muted,
188
+ fontSize: tokens.typography.scale.xs,
189
+ fontWeight: '500',
190
+ }, children: resolvedTitle })] }), live !== false ? ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: {
191
+ flexDirection: 'row',
192
+ alignItems: 'center',
193
+ gap: tokens.spacing.xs,
194
+ paddingHorizontal: tokens.spacing.sm,
195
+ paddingVertical: tokens.spacing.xs,
196
+ borderRadius: 9999,
197
+ borderWidth: 1,
198
+ borderColor: (0, color_1.withAlpha)(colors.accent, 0.35),
199
+ backgroundColor: (0, color_1.withAlpha)(colors.accent, 0.1),
200
+ }, children: [(0, jsx_runtime_1.jsx)(StatusDot_1.StatusDot, { tone: "accent", pulse: false, size: 6 }), (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: {
201
+ color: colors.accent,
202
+ fontSize: tokens.typography.scale.xs,
203
+ fontWeight: '700',
204
+ }, children: live })] })) : null] }), (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: { flexDirection: 'row', flexWrap: 'wrap' }, children: [(0, jsx_runtime_1.jsxs)(react_native_1.View, { style: {
205
+ flexGrow: 1,
206
+ flexBasis: 260,
207
+ gap: tokens.spacing.lg,
208
+ padding: tokens.spacing.lg,
209
+ }, children: [resolvedKpis.length > 0 ? ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: { flexDirection: 'row', gap: tokens.spacing.sm }, children: resolvedKpis.map((kpi) => ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: {
210
+ flex: 1,
211
+ padding: tokens.spacing.sm,
212
+ borderRadius: tokens.radius.md,
213
+ backgroundColor: tileBg,
214
+ borderWidth: 1,
215
+ borderColor: tileBorder,
216
+ }, children: [(0, jsx_runtime_1.jsx)(react_native_1.Text, { style: {
217
+ color: colors.muted,
218
+ fontSize: tokens.typography.scale.xs,
219
+ fontWeight: '500',
220
+ }, children: kpi.label }), (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: {
221
+ marginTop: tokens.spacing.xs,
222
+ color: colors.onSurface,
223
+ fontSize: tokens.typography.scale.lg,
224
+ fontWeight: '700',
225
+ }, children: kpi.value })] }, kpi.label))) })) : null, (0, jsx_runtime_1.jsx)(react_native_1.View, { style: {
226
+ height: CANVAS_HEIGHT,
227
+ overflow: 'hidden',
228
+ padding: tokens.spacing.md,
229
+ borderRadius: tokens.radius.md,
230
+ borderWidth: 1,
231
+ borderColor: tileBorder,
232
+ backgroundColor: canvasBg,
233
+ }, children: renderVisual() })] }), resolvedFeed.length > 0 ? ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: {
234
+ flexGrow: 1,
235
+ flexBasis: 200,
236
+ gap: tokens.spacing.md,
237
+ padding: tokens.spacing.lg,
238
+ borderLeftWidth: 1,
239
+ borderLeftColor: (0, color_1.withAlpha)(colors.border, 0.7),
240
+ }, children: [(0, jsx_runtime_1.jsx)(react_native_1.Text, { style: {
241
+ color: colors.muted,
242
+ fontSize: tokens.typography.scale.xs,
243
+ fontWeight: '600',
244
+ }, children: "EVENT STREAM" }), resolvedFeed.map((line, i) => ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: {
245
+ flexDirection: 'row',
246
+ alignItems: 'center',
247
+ gap: tokens.spacing.xs,
248
+ paddingHorizontal: tokens.spacing.sm,
249
+ paddingVertical: tokens.spacing.xs,
250
+ borderRadius: tokens.radius.md,
251
+ backgroundColor: tileBg,
252
+ borderWidth: 1,
253
+ borderColor: tileBorder,
254
+ }, children: [(0, jsx_runtime_1.jsx)(react_native_1.View, { style: {
255
+ width: 6,
256
+ height: 6,
257
+ borderRadius: 3,
258
+ backgroundColor: i % 2 === 0 ? colors.accent : colors.primary,
259
+ } }), (0, jsx_runtime_1.jsx)(react_native_1.Text, { numberOfLines: 1, style: {
260
+ flex: 1,
261
+ color: colors.muted,
262
+ fontSize: tokens.typography.scale.xs,
263
+ fontWeight: '500',
264
+ }, children: line })] }, i))), footnote !== undefined ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_native_1.View, { style: {
265
+ marginTop: 'auto',
266
+ height: 1,
267
+ backgroundColor: (0, color_1.withAlpha)(tokens.ramps.primary[500], 0.55),
268
+ } }), (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: { color: colors.muted, fontSize: tokens.typography.scale.xs }, children: footnote })] })) : null] })) : null] })] }) }));
269
+ }
270
+ //# sourceMappingURL=ProductMock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductMock.js","sourceRoot":"","sources":["../../../src/native/marketing/ProductMock.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import * as React from 'react';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
+ export interface RichTextProps {
4
+ /** Trusted CMS body HTML (e.g. a cms page's `bodyHtml`). */
5
+ html: string;
6
+ /** Optional container style override. */
7
+ style?: StyleProp<ViewStyle>;
8
+ }
9
+ type Block = {
10
+ kind: 'heading';
11
+ level: number;
12
+ text: string;
13
+ } | {
14
+ kind: 'paragraph';
15
+ text: string;
16
+ } | {
17
+ kind: 'listitem';
18
+ text: string;
19
+ } | {
20
+ kind: 'quote';
21
+ text: string;
22
+ };
23
+ /**
24
+ * Parse trusted CMS HTML into ordered blocks — headings, paragraphs, list items
25
+ * and blockquotes — preserving document order. Anything outside a recognised
26
+ * block tag (bare inline/plain text) is captured as a trailing paragraph.
27
+ */
28
+ export declare function parseRichText(html: string): Block[];
29
+ /**
30
+ * The native mirror of the web pattern of rendering a trusted CMS `bodyHtml`
31
+ * (which the web does via `dangerouslySetInnerHTML`). React Native has no DOM,
32
+ * so this dependency-free reader parses the HTML into ordered blocks and renders
33
+ * each as a token-styled `Text`: headings larger/bold, list items with a bullet,
34
+ * blockquotes muted/indented, paragraphs as body copy. Bold/links collapse to
35
+ * their text. Token-only — colors + spacing from the active theme. For trusted,
36
+ * seed-authored content only (it does not sanitise).
37
+ */
38
+ export declare function RichText({ html, style }: RichTextProps): React.JSX.Element;
39
+ export {};
40
+ //# sourceMappingURL=RichText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../../src/native/marketing/RichText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1E,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,KAAK,KAAK,GACN;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAoBpC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,CA2BnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,aAAa,qBAyDtD"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseRichText = parseRichText;
37
+ exports.RichText = RichText;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const react_native_1 = require("react-native");
41
+ const theme_1 = require("../theme");
42
+ const ENTITIES = {
43
+ '&nbsp;': ' ', '&amp;': '&', '&lt;': '<', '&gt;': '>', '&quot;': '"',
44
+ '&#39;': "'", '&apos;': "'", '&rsquo;': '’', '&lsquo;': '‘',
45
+ '&ldquo;': '“', '&rdquo;': '”', '&mdash;': '—', '&ndash;': '–',
46
+ '&hellip;': '…',
47
+ };
48
+ function decodeEntities(input) {
49
+ return input
50
+ .replace(/&#(\d+);/g, (_, n) => String.fromCodePoint(Number(n)))
51
+ .replace(/&[a-z#0-9]+;/gi, (m) => ENTITIES[m.toLowerCase()] ?? m);
52
+ }
53
+ /** Strip inline tags to their text and normalise whitespace. */
54
+ function inlineText(html) {
55
+ return decodeEntities(html.replace(/<[^>]+>/g, ' ')).replace(/\s+/g, ' ').trim();
56
+ }
57
+ /**
58
+ * Parse trusted CMS HTML into ordered blocks — headings, paragraphs, list items
59
+ * and blockquotes — preserving document order. Anything outside a recognised
60
+ * block tag (bare inline/plain text) is captured as a trailing paragraph.
61
+ */
62
+ function parseRichText(html) {
63
+ const blocks = [];
64
+ const re = /<(h[1-6]|p|li|blockquote)[^>]*>([\s\S]*?)<\/\1>/gi;
65
+ let lastIndex = 0;
66
+ let m;
67
+ const pushLoose = (chunk) => {
68
+ const t = inlineText(chunk);
69
+ if (t)
70
+ blocks.push({ kind: 'paragraph', text: t });
71
+ };
72
+ while ((m = re.exec(html)) !== null) {
73
+ if (m.index > lastIndex)
74
+ pushLoose(html.slice(lastIndex, m.index));
75
+ lastIndex = re.lastIndex;
76
+ const tag = m[1].toLowerCase();
77
+ const text = inlineText(m[2]);
78
+ if (!text)
79
+ continue;
80
+ if (tag[0] === 'h')
81
+ blocks.push({ kind: 'heading', level: Number(tag[1]), text });
82
+ else if (tag === 'li')
83
+ blocks.push({ kind: 'listitem', text });
84
+ else if (tag === 'blockquote')
85
+ blocks.push({ kind: 'quote', text });
86
+ else
87
+ blocks.push({ kind: 'paragraph', text });
88
+ }
89
+ if (lastIndex < html.length)
90
+ pushLoose(html.slice(lastIndex));
91
+ // No block tags at all → treat the whole thing as one paragraph.
92
+ if (blocks.length === 0) {
93
+ const t = inlineText(html);
94
+ if (t)
95
+ blocks.push({ kind: 'paragraph', text: t });
96
+ }
97
+ return blocks;
98
+ }
99
+ /**
100
+ * The native mirror of the web pattern of rendering a trusted CMS `bodyHtml`
101
+ * (which the web does via `dangerouslySetInnerHTML`). React Native has no DOM,
102
+ * so this dependency-free reader parses the HTML into ordered blocks and renders
103
+ * each as a token-styled `Text`: headings larger/bold, list items with a bullet,
104
+ * blockquotes muted/indented, paragraphs as body copy. Bold/links collapse to
105
+ * their text. Token-only — colors + spacing from the active theme. For trusted,
106
+ * seed-authored content only (it does not sanitise).
107
+ */
108
+ function RichText({ html, style }) {
109
+ const { colors, tokens } = (0, theme_1.useXenitionTheme)();
110
+ const blocks = React.useMemo(() => parseRichText(html), [html]);
111
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [{ gap: tokens.spacing.md }, style], children: blocks.map((b, i) => {
112
+ if (b.kind === 'heading') {
113
+ return ((0, jsx_runtime_1.jsx)(react_native_1.Text, { style: {
114
+ fontSize: b.level <= 2 ? 22 : 18,
115
+ lineHeight: b.level <= 2 ? 28 : 24,
116
+ fontWeight: '700',
117
+ color: colors.onSurface,
118
+ marginTop: i === 0 ? 0 : tokens.spacing.sm,
119
+ }, children: b.text }, i));
120
+ }
121
+ if (b.kind === 'listitem') {
122
+ return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: { flexDirection: 'row', gap: tokens.spacing.sm }, children: [(0, jsx_runtime_1.jsx)(react_native_1.Text, { style: { fontSize: 16, lineHeight: 26, color: colors.accent }, children: '•' }), (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: { flex: 1, fontSize: 16, lineHeight: 26, color: colors.onSurface }, children: b.text })] }, i));
123
+ }
124
+ if (b.kind === 'quote') {
125
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: {
126
+ borderLeftWidth: 3,
127
+ borderLeftColor: colors.border,
128
+ paddingLeft: tokens.spacing.md,
129
+ }, children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: { fontSize: 16, lineHeight: 26, fontStyle: 'italic', color: colors.muted }, children: b.text }) }, i));
130
+ }
131
+ return ((0, jsx_runtime_1.jsx)(react_native_1.Text, { style: { fontSize: 16, lineHeight: 26, color: colors.onSurface }, children: b.text }, i));
132
+ }) }));
133
+ }
134
+ //# sourceMappingURL=RichText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichText.js","sourceRoot":"","sources":["../../../src/native/marketing/RichText.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import * as React from 'react';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
+ import { type OrnamentShape, type OrnamentTone } from './OrnamentRule';
4
+ export type SectionDividerVariant = 'hairline' | 'ornament' | 'fade';
5
+ export interface SectionDividerProps {
6
+ /**
7
+ * `hairline` — a 1px primary→accent gradient rule (the SaaS band divider).
8
+ * `ornament` — delegates to `OrnamentRule` (the restaurant diamond rule).
9
+ * `fade` — a tall gradient that melts the section into the surface.
10
+ */
11
+ variant?: SectionDividerVariant;
12
+ /**
13
+ * Web-only parallax speed. Kept for prop parity with the web
14
+ * `SectionDivider`, but **inert on native** — there is no scroll-linked
15
+ * drift here.
16
+ */
17
+ parallax?: number;
18
+ /** Ornament shape when `variant="ornament"` (default `diamond`). */
19
+ ornament?: OrnamentShape;
20
+ /** Token tone when `variant="ornament"` (default `accent`). */
21
+ tone?: OrnamentTone;
22
+ style?: StyleProp<ViewStyle>;
23
+ }
24
+ /**
25
+ * Section separator — the native mirror of the web `SectionDivider`.
26
+ *
27
+ * The web `hairline` and `fade` variants use CSS gradients (`linear-gradient`
28
+ * + `color-mix`); React Native has no CSS gradients here, so both are
29
+ * **approximated with solid low-opacity token fills** (the tint always
30
+ * originates from a theme token). The web `parallax` prop is scroll-linked and
31
+ * is kept for parity but does nothing on native.
32
+ */
33
+ export declare function SectionDivider({ variant, parallax: _parallax, ornament, tone, style, }: SectionDividerProps): React.ReactElement;
34
+ //# sourceMappingURL=SectionDivider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionDivider.d.ts","sourceRoot":"","sources":["../../../src/native/marketing/SectionDivider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAoB,EACpB,QAAQ,EAAE,SAAS,EACnB,QAAoB,EACpB,IAAe,EACf,KAAK,GACN,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAqC1C"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SectionDivider = SectionDivider;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_native_1 = require("react-native");
6
+ const theme_1 = require("../theme");
7
+ const color_1 = require("../primitives/internal/color");
8
+ const OrnamentRule_1 = require("./OrnamentRule");
9
+ /**
10
+ * Section separator — the native mirror of the web `SectionDivider`.
11
+ *
12
+ * The web `hairline` and `fade` variants use CSS gradients (`linear-gradient`
13
+ * + `color-mix`); React Native has no CSS gradients here, so both are
14
+ * **approximated with solid low-opacity token fills** (the tint always
15
+ * originates from a theme token). The web `parallax` prop is scroll-linked and
16
+ * is kept for parity but does nothing on native.
17
+ */
18
+ function SectionDivider({ variant = 'hairline', parallax: _parallax, ornament = 'diamond', tone = 'accent', style, }) {
19
+ const { colors, tokens } = (0, theme_1.useXenitionTheme)();
20
+ if (variant === 'ornament') {
21
+ return (0, jsx_runtime_1.jsx)(OrnamentRule_1.OrnamentRule, { ornament: ornament, tone: tone, style: style });
22
+ }
23
+ if (variant === 'fade') {
24
+ // Web fades the surface upward; native approximates with a tall low-opacity
25
+ // surface-tinted band.
26
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { testID: "xen-section-divider", accessibilityRole: "none", style: [
27
+ {
28
+ height: tokens.spacing['2xl'],
29
+ backgroundColor: (0, color_1.withAlpha)(colors.surface, 0.6),
30
+ },
31
+ style,
32
+ ] }));
33
+ }
34
+ // hairline — solid low-opacity primary tint approximating the primary→accent
35
+ // gradient rule.
36
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { testID: "xen-section-divider", accessibilityRole: "none", style: [
37
+ { height: 1, backgroundColor: (0, color_1.withAlpha)(tokens.ramps.primary[500], 0.55) },
38
+ style,
39
+ ] }));
40
+ }
41
+ //# sourceMappingURL=SectionDivider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionDivider.js","sourceRoot":"","sources":["../../../src/native/marketing/SectionDivider.tsx"],"names":[],"mappings":";;AAyCA,wCA2CC;;AAnFD,+CAAoE;AACpE,oCAA4C;AAC5C,wDAAyD;AACzD,iDAIwB;AAwBxB;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAAC,EAC7B,OAAO,GAAG,UAAU,EACpB,QAAQ,EAAE,SAAS,EACnB,QAAQ,GAAG,SAAS,EACpB,IAAI,GAAG,QAAQ,EACf,KAAK,GACe;IACpB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,wBAAgB,GAAE,CAAC;IAE9C,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,uBAAC,2BAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;IACxE,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,4EAA4E;QAC5E,uBAAuB;QACvB,OAAO,CACL,uBAAC,mBAAI,IACH,MAAM,EAAC,qBAAqB,EAC5B,iBAAiB,EAAC,MAAM,EACxB,KAAK,EAAE;gBACL;oBACE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC7B,eAAe,EAAE,IAAA,iBAAS,EAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;iBAChD;gBACD,KAAK;aACN,GACD,CACH,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,iBAAiB;IACjB,OAAO,CACL,uBAAC,mBAAI,IACH,MAAM,EAAC,qBAAqB,EAC5B,iBAAiB,EAAC,MAAM,EACxB,KAAK,EAAE;YACL,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,IAAA,iBAAS,EAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE;YAC1E,KAAK;SACN,GACD,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ import * as React from 'react';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
+ export interface TeamMember {
4
+ /** Display name — also the source for the initials-fallback avatar. */
5
+ name: string;
6
+ /** Role / title line. */
7
+ role?: string;
8
+ /** Short bio paragraph. */
9
+ bio?: string;
10
+ /** Avatar image URL; falls back to initials when omitted. */
11
+ avatar?: string;
12
+ }
13
+ export interface TeamGridProps {
14
+ /** Team / member cards (mirrors the web `members` array). */
15
+ members: TeamMember[];
16
+ /** Max columns; native wraps into rows of this width (default 2 for phones). */
17
+ columns?: 2 | 3 | 4;
18
+ style?: StyleProp<ViewStyle>;
19
+ }
20
+ /**
21
+ * Responsive grid of team/member cards — the native mirror of the web
22
+ * `TeamGrid`. Cards wrap via flex `basis` rather than CSS grid breakpoints,
23
+ * with an initials-fallback avatar. The web `socials` link row is dropped
24
+ * (no `href` navigation surface on these cards). Token-only.
25
+ */
26
+ export declare function TeamGrid({ members, columns, style, }: TeamGridProps): React.ReactElement;
27
+ //# sourceMappingURL=TeamGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamGrid.d.ts","sourceRoot":"","sources":["../../../src/native/marketing/TeamGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAK1E,MAAM,WAAW,UAAU;IACzB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,gFAAgF;IAChF,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,OAAW,EACX,KAAK,GACN,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CA2DpC"}