@adminide-stack/yantra-help-browser 12.0.19-alpha.6 → 12.0.191-alpha.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 (178) hide show
  1. package/lib/components/HelpCenterFooter.d.ts.map +1 -1
  2. package/lib/components/HelpCenterFooter.js +126 -111
  3. package/lib/components/HelpCenterFooter.js.map +1 -1
  4. package/lib/components/HelpCenterHeader.d.ts +1 -2
  5. package/lib/components/HelpCenterHeader.d.ts.map +1 -1
  6. package/lib/components/HelpCenterHeader.js +19 -14
  7. package/lib/components/HelpCenterHeader.js.map +1 -1
  8. package/lib/components/HeroHeaderScrollStyles.d.ts +7 -0
  9. package/lib/components/HeroHeaderScrollStyles.d.ts.map +1 -0
  10. package/lib/components/HeroHeaderScrollStyles.js +23 -0
  11. package/lib/components/HeroHeaderScrollStyles.js.map +1 -0
  12. package/lib/components/Icons.d.ts +9 -9
  13. package/lib/components/Logo.d.ts +4 -1
  14. package/lib/components/Logo.d.ts.map +1 -1
  15. package/lib/components/Logo.js +95 -86
  16. package/lib/components/Logo.js.map +1 -1
  17. package/lib/components/PageHero.d.ts +9 -3
  18. package/lib/components/PageHero.d.ts.map +1 -1
  19. package/lib/components/PageHero.js +31 -18
  20. package/lib/components/PageHero.js.map +1 -1
  21. package/lib/components/enterprise/EnterprisePageStyles.d.ts +4 -0
  22. package/lib/components/enterprise/EnterprisePageStyles.d.ts.map +1 -0
  23. package/lib/components/enterprise/EnterprisePageStyles.js +100 -0
  24. package/lib/components/enterprise/EnterprisePageStyles.js.map +1 -0
  25. package/lib/components/enterprise/EnterpriseSection.d.ts +14 -0
  26. package/lib/components/enterprise/EnterpriseSection.d.ts.map +1 -0
  27. package/lib/components/enterprise/EnterpriseSection.js +35 -0
  28. package/lib/components/enterprise/EnterpriseSection.js.map +1 -0
  29. package/lib/components/enterprise/ScrollReveal.d.ts +15 -0
  30. package/lib/components/enterprise/ScrollReveal.d.ts.map +1 -0
  31. package/lib/components/enterprise/ScrollReveal.js +34 -0
  32. package/lib/components/enterprise/ScrollReveal.js.map +1 -0
  33. package/lib/components/enterprise/index.d.ts +4 -0
  34. package/lib/components/enterprise/index.d.ts.map +1 -0
  35. package/lib/components/navbar/index.d.ts +3 -0
  36. package/lib/components/navbar/index.d.ts.map +1 -1
  37. package/lib/components/navbar/index.js +25 -44
  38. package/lib/components/navbar/index.js.map +1 -1
  39. package/lib/compute.d.ts +1 -0
  40. package/lib/compute.d.ts.map +1 -1
  41. package/lib/compute.js +9 -0
  42. package/lib/compute.js.map +1 -1
  43. package/lib/hooks/useHeaderScrolled.d.ts +3 -0
  44. package/lib/hooks/useHeaderScrolled.d.ts.map +1 -0
  45. package/lib/hooks/useHeaderScrolled.js +23 -0
  46. package/lib/hooks/useHeaderScrolled.js.map +1 -0
  47. package/lib/hooks/useHeroHeaderAtTop.d.ts +7 -0
  48. package/lib/hooks/useHeroHeaderAtTop.d.ts.map +1 -0
  49. package/lib/hooks/useHeroHeaderAtTop.js +32 -0
  50. package/lib/hooks/useHeroHeaderAtTop.js.map +1 -0
  51. package/lib/hooks/usePrefersReducedMotion.d.ts +6 -0
  52. package/lib/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  53. package/lib/hooks/usePrefersReducedMotion.js +20 -0
  54. package/lib/hooks/usePrefersReducedMotion.js.map +1 -0
  55. package/lib/pages/About/index.d.ts +2 -1
  56. package/lib/pages/About/index.d.ts.map +1 -1
  57. package/lib/pages/About/index.js +29 -43
  58. package/lib/pages/About/index.js.map +1 -1
  59. package/lib/pages/Blog/index.d.ts +2 -1
  60. package/lib/pages/Blog/index.d.ts.map +1 -1
  61. package/lib/pages/Blog/index.js +12 -5
  62. package/lib/pages/Blog/index.js.map +1 -1
  63. package/lib/pages/BlogPost/index.d.ts +2 -1
  64. package/lib/pages/BlogPost/index.d.ts.map +1 -1
  65. package/lib/pages/Careers/index.d.ts +2 -1
  66. package/lib/pages/Careers/index.d.ts.map +1 -1
  67. package/lib/pages/CategoryCollection/index.d.ts.map +1 -1
  68. package/lib/pages/CategoryCollection/index.js +8 -4
  69. package/lib/pages/CategoryCollection/index.js.map +1 -1
  70. package/lib/pages/Community/index.d.ts +2 -1
  71. package/lib/pages/Community/index.d.ts.map +1 -1
  72. package/lib/pages/Contact/index.d.ts +2 -1
  73. package/lib/pages/Contact/index.d.ts.map +1 -1
  74. package/lib/pages/Feedback/index.d.ts +2 -1
  75. package/lib/pages/Feedback/index.d.ts.map +1 -1
  76. package/lib/pages/GetStarted/components/GetStartedHero.d.ts.map +1 -1
  77. package/lib/pages/GetStarted/index.d.ts +2 -1
  78. package/lib/pages/GetStarted/index.d.ts.map +1 -1
  79. package/lib/pages/GetStarted/index.js +100 -124
  80. package/lib/pages/GetStarted/index.js.map +1 -1
  81. package/lib/pages/HelpCenter/components/HelpCategoryCard.d.ts +1 -0
  82. package/lib/pages/HelpCenter/components/HelpCategoryCard.d.ts.map +1 -1
  83. package/lib/pages/HelpCenter/components/HelpCategoryCard.js +10 -3
  84. package/lib/pages/HelpCenter/components/HelpCategoryCard.js.map +1 -1
  85. package/lib/pages/HelpCenter/components/Icons.d.ts +28 -28
  86. package/lib/pages/HelpCenter/components/PopularArticle.d.ts.map +1 -1
  87. package/lib/pages/HelpCenter/components/PopularArticle.js +4 -1
  88. package/lib/pages/HelpCenter/components/PopularArticle.js.map +1 -1
  89. package/lib/pages/HelpCenter/index.d.ts.map +1 -1
  90. package/lib/pages/HelpCenter/index.js +51 -89
  91. package/lib/pages/HelpCenter/index.js.map +1 -1
  92. package/lib/pages/LandingPage/LandingPageStyles.d.ts +7 -0
  93. package/lib/pages/LandingPage/LandingPageStyles.d.ts.map +1 -0
  94. package/lib/pages/LandingPage/LandingPageStyles.js +5 -0
  95. package/lib/pages/LandingPage/LandingPageStyles.js.map +1 -0
  96. package/lib/pages/LandingPage/components/ArticleCard.d.ts.map +1 -1
  97. package/lib/pages/LandingPage/components/ArticleCard.js +4 -1
  98. package/lib/pages/LandingPage/components/ArticleCard.js.map +1 -1
  99. package/lib/pages/LandingPage/components/CategoriesSection.d.ts.map +1 -1
  100. package/lib/pages/LandingPage/components/CategoriesSection.js +15 -30
  101. package/lib/pages/LandingPage/components/CategoriesSection.js.map +1 -1
  102. package/lib/pages/LandingPage/components/CategoryCard.d.ts +1 -0
  103. package/lib/pages/LandingPage/components/CategoryCard.d.ts.map +1 -1
  104. package/lib/pages/LandingPage/components/CategoryCard.js +5 -1
  105. package/lib/pages/LandingPage/components/CategoryCard.js.map +1 -1
  106. package/lib/pages/LandingPage/components/FeaturedSection.d.ts.map +1 -1
  107. package/lib/pages/LandingPage/components/FeaturedSection.js +14 -27
  108. package/lib/pages/LandingPage/components/FeaturedSection.js.map +1 -1
  109. package/lib/pages/LandingPage/components/HeroAnimatedBackground.d.ts +4 -0
  110. package/lib/pages/LandingPage/components/HeroAnimatedBackground.d.ts.map +1 -0
  111. package/lib/pages/LandingPage/components/HeroAnimatedBackground.js +16 -0
  112. package/lib/pages/LandingPage/components/HeroAnimatedBackground.js.map +1 -0
  113. package/lib/pages/LandingPage/components/HeroFluidCanvas.d.ts +8 -0
  114. package/lib/pages/LandingPage/components/HeroFluidCanvas.d.ts.map +1 -0
  115. package/lib/pages/LandingPage/components/HeroFluidCanvas.js +433 -0
  116. package/lib/pages/LandingPage/components/HeroFluidCanvas.js.map +1 -0
  117. package/lib/pages/LandingPage/components/HeroSection.d.ts +3 -2
  118. package/lib/pages/LandingPage/components/HeroSection.d.ts.map +1 -1
  119. package/lib/pages/LandingPage/components/HeroSection.js +27 -20
  120. package/lib/pages/LandingPage/components/HeroSection.js.map +1 -1
  121. package/lib/pages/LandingPage/components/ResourceCard.d.ts +1 -0
  122. package/lib/pages/LandingPage/components/ResourceCard.d.ts.map +1 -1
  123. package/lib/pages/LandingPage/components/ResourceCard.js +5 -1
  124. package/lib/pages/LandingPage/components/ResourceCard.js.map +1 -1
  125. package/lib/pages/LandingPage/components/ResourcesSection.d.ts.map +1 -1
  126. package/lib/pages/LandingPage/components/ResourcesSection.js +15 -27
  127. package/lib/pages/LandingPage/components/ResourcesSection.js.map +1 -1
  128. package/lib/pages/LandingPage/index.d.ts +2 -1
  129. package/lib/pages/LandingPage/index.d.ts.map +1 -1
  130. package/lib/pages/LandingPage/index.js +4 -3
  131. package/lib/pages/LandingPage/index.js.map +1 -1
  132. package/lib/pages/Markdown/MarkdownAuroraCanvas.d.ts +12 -0
  133. package/lib/pages/Markdown/MarkdownAuroraCanvas.d.ts.map +1 -0
  134. package/lib/pages/Markdown/MarkdownAuroraCanvas.js +508 -0
  135. package/lib/pages/Markdown/MarkdownAuroraCanvas.js.map +1 -0
  136. package/lib/pages/Markdown/MarkdownPageLayout.d.ts.map +1 -1
  137. package/lib/pages/Markdown/MarkdownPageLayout.js +319 -102
  138. package/lib/pages/Markdown/MarkdownPageLayout.js.map +1 -1
  139. package/lib/pages/Markdown/MarkdownPageStyles.d.ts +14 -0
  140. package/lib/pages/Markdown/MarkdownPageStyles.d.ts.map +1 -0
  141. package/lib/pages/Markdown/MarkdownPageStyles.js +369 -0
  142. package/lib/pages/Markdown/MarkdownPageStyles.js.map +1 -0
  143. package/lib/pages/Markdown/MarkdownPageWithParams.d.ts.map +1 -1
  144. package/lib/pages/Markdown/MarkdownPageWithParams.js +2 -1
  145. package/lib/pages/Markdown/MarkdownPageWithParams.js.map +1 -1
  146. package/lib/pages/Markdown/index.d.ts +1 -1
  147. package/lib/pages/Markdown/index.d.ts.map +1 -1
  148. package/lib/pages/Privacy/index.d.ts +2 -1
  149. package/lib/pages/Privacy/index.d.ts.map +1 -1
  150. package/lib/pages/Privacy/index.js +40 -9
  151. package/lib/pages/Privacy/index.js.map +1 -1
  152. package/lib/pages/ReleaseNotes/index.d.ts +2 -1
  153. package/lib/pages/ReleaseNotes/index.d.ts.map +1 -1
  154. package/lib/pages/SmsTerms/index.d.ts +11 -0
  155. package/lib/pages/SmsTerms/index.d.ts.map +1 -0
  156. package/lib/pages/SmsTerms/index.js +376 -0
  157. package/lib/pages/SmsTerms/index.js.map +1 -0
  158. package/lib/pages/StatusPage/index.d.ts +2 -1
  159. package/lib/pages/StatusPage/index.d.ts.map +1 -1
  160. package/lib/pages/Terms/index.d.ts +8 -1
  161. package/lib/pages/Terms/index.d.ts.map +1 -1
  162. package/lib/pages/Terms/index.js +394 -43
  163. package/lib/pages/Terms/index.js.map +1 -1
  164. package/lib/routes.json +11 -0
  165. package/lib/slot-fill/FooterFill.d.ts +2 -1
  166. package/lib/slot-fill/FooterFill.d.ts.map +1 -1
  167. package/lib/slot-fill/HeaderSearchButtonFill.d.ts +2 -1
  168. package/lib/slot-fill/HeaderSearchButtonFill.d.ts.map +1 -1
  169. package/lib/slot-fill/LogoFill.d.ts +1 -1
  170. package/lib/slot-fill/LogoFill.d.ts.map +1 -1
  171. package/lib/slot-fill/RightContentFill.d.ts +2 -1
  172. package/lib/slot-fill/RightContentFill.d.ts.map +1 -1
  173. package/lib/slot-fill/SearchBarFill.d.ts +3 -2
  174. package/lib/slot-fill/SearchBarFill.d.ts.map +1 -1
  175. package/lib/utils/markdownLoader.d.ts.map +1 -1
  176. package/lib/utils/markdownLoader.js +32 -42
  177. package/lib/utils/markdownLoader.js.map +1 -1
  178. package/package.json +4 -4
@@ -0,0 +1,433 @@
1
+ import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useRef,useEffect}from'react';/**
2
+ * HeroFluidCanvas
3
+ * ---------------
4
+ * GPU-driven fluid for Yantra hero/footer surfaces. Domain-warped flow noise in
5
+ * the Yantra palette (deep ink → indigo → teal → gold), gently reactive to the
6
+ * pointer.
7
+ *
8
+ * Render path, best-effort with graceful fallback:
9
+ * 1. WebGPU (WGSL) — modern Chrome/Edge, Safari TP
10
+ * 2. WebGL2 (GLSL) — everywhere else
11
+ * 3. CSS gradient — the static layer underneath, if both fail
12
+ *
13
+ * Honors prefers-reduced-motion: a single static frame, no rAF, no pointer drift.
14
+ */
15
+ const WGSL = /* wgsl */`
16
+ struct Uniforms {
17
+ resolution: vec2f,
18
+ time: f32,
19
+ reduced: f32,
20
+ pointer: vec2f,
21
+ intensity: f32,
22
+ _pad: f32,
23
+ };
24
+
25
+ @group(0) @binding(0) var<uniform> u: Uniforms;
26
+
27
+ @vertex
28
+ fn vs(@builtin(vertex_index) vi: u32) -> @builtin(position) vec4f {
29
+ var pos = array<vec2f, 3>(vec2f(-1.0, -1.0), vec2f(3.0, -1.0), vec2f(-1.0, 3.0));
30
+ return vec4f(pos[vi], 0.0, 1.0);
31
+ }
32
+
33
+ fn hash(p: vec2f) -> f32 {
34
+ var q = fract(p * vec2f(123.34, 456.21));
35
+ q += dot(q, q + 45.32);
36
+ return fract(q.x * q.y);
37
+ }
38
+
39
+ fn vnoise(p: vec2f) -> f32 {
40
+ let i = floor(p);
41
+ let f = fract(p);
42
+ let a = hash(i);
43
+ let b = hash(i + vec2f(1.0, 0.0));
44
+ let c = hash(i + vec2f(0.0, 1.0));
45
+ let d = hash(i + vec2f(1.0, 1.0));
46
+ let w = f * f * (3.0 - 2.0 * f);
47
+ return mix(mix(a, b, w.x), mix(c, d, w.x), w.y);
48
+ }
49
+
50
+ fn fbm(p0: vec2f) -> f32 {
51
+ var p = p0;
52
+ var v = 0.0;
53
+ var amp = 0.5;
54
+ for (var i = 0; i < 5; i++) {
55
+ v += amp * vnoise(p);
56
+ p *= 2.0;
57
+ amp *= 0.5;
58
+ }
59
+ return v;
60
+ }
61
+
62
+ // Yantra ramp: deep ink -> indigo -> teal -> gold.
63
+ fn ramp(x0: f32) -> vec3f {
64
+ let x = clamp(x0, 0.0, 1.0);
65
+ let c0 = vec3f(0.045, 0.050, 0.078);
66
+ let c1 = vec3f(0.18, 0.12, 0.42);
67
+ let c2 = vec3f(0.20, 0.78, 0.74);
68
+ let c3 = vec3f(0.96, 0.78, 0.32);
69
+ if (x < 0.46) { return mix(c0, c1, smoothstep(0.0, 0.46, x)); }
70
+ if (x < 0.74) { return mix(c1, c2, smoothstep(0.46, 0.74, x)); }
71
+ return mix(c2, c3, smoothstep(0.74, 1.0, x));
72
+ }
73
+
74
+ @fragment
75
+ fn fs(@builtin(position) frag: vec4f) -> @location(0) vec4f {
76
+ let uv = frag.xy / u.resolution;
77
+ var p = uv - vec2f(0.5);
78
+ p.x *= u.resolution.x / u.resolution.y;
79
+
80
+ let t = select(u.time * 0.05, 4.2, u.reduced > 0.5);
81
+
82
+ let q = vec2f(fbm(p * 1.6 + t), fbm(p * 1.6 + vec2f(5.2, 1.3) - t));
83
+ let r = vec2f(
84
+ fbm(p * 1.6 + 1.7 * q + vec2f(1.7, 9.2) + 0.15 * t),
85
+ fbm(p * 1.6 + 1.7 * q + vec2f(8.3, 2.8) - 0.12 * t),
86
+ );
87
+ let f = fbm(p * 1.6 + 2.0 * r);
88
+
89
+ let pd = length(p - u.pointer);
90
+ let warm = smoothstep(0.85, -0.55, p.x + p.y);
91
+ var shade = pow(clamp(f * 0.98 + 0.14 * r.x + 0.10 * warm, 0.0, 1.0), 1.04);
92
+ shade += 0.10 * u.intensity * exp(-pd * pd * 5.0);
93
+
94
+ var col = ramp(shade);
95
+ col += vec3f(0.03, 0.04, 0.08) * warm * smoothstep(0.3, 0.72, shade);
96
+ let gold = vec3f(0.96, 0.78, 0.32);
97
+ col += gold * 0.14 * exp(-pd * pd * 3.0) * u.intensity;
98
+
99
+ let vig = 1.0 - smoothstep(0.5, 1.45, length(p));
100
+ col *= mix(0.5, 1.0, vig);
101
+ col *= 0.93;
102
+ col += (hash(uv * u.resolution * 0.5 + t) - 0.5) * 0.02;
103
+
104
+ return vec4f(col, 1.0);
105
+ }
106
+ `;
107
+ const GLSL_VERT = `#version 300 es
108
+ precision highp float;
109
+ void main() {
110
+ vec2 pos = vec2(float((gl_VertexID << 1) & 2), float(gl_VertexID & 2)) * 2.0 - 1.0;
111
+ gl_Position = vec4(pos, 0.0, 1.0);
112
+ }
113
+ `;
114
+ const GLSL_FRAG = `#version 300 es
115
+ precision highp float;
116
+ out vec4 outColor;
117
+
118
+ uniform vec2 u_resolution;
119
+ uniform float u_time;
120
+ uniform float u_reduced;
121
+ uniform vec2 u_pointer;
122
+ uniform float u_intensity;
123
+
124
+ float hash(vec2 p) {
125
+ vec2 q = fract(p * vec2(123.34, 456.21));
126
+ q += dot(q, q + 45.32);
127
+ return fract(q.x * q.y);
128
+ }
129
+
130
+ float vnoise(vec2 p) {
131
+ vec2 i = floor(p);
132
+ vec2 f = fract(p);
133
+ float a = hash(i);
134
+ float b = hash(i + vec2(1.0, 0.0));
135
+ float c = hash(i + vec2(0.0, 1.0));
136
+ float d = hash(i + vec2(1.0, 1.0));
137
+ vec2 w = f * f * (3.0 - 2.0 * f);
138
+ return mix(mix(a, b, w.x), mix(c, d, w.x), w.y);
139
+ }
140
+
141
+ float fbm(vec2 p) {
142
+ float v = 0.0;
143
+ float amp = 0.5;
144
+ for (int i = 0; i < 5; i++) {
145
+ v += amp * vnoise(p);
146
+ p *= 2.0;
147
+ amp *= 0.5;
148
+ }
149
+ return v;
150
+ }
151
+
152
+ // Yantra ramp: deep ink -> indigo -> teal -> gold.
153
+ vec3 ramp(float x) {
154
+ x = clamp(x, 0.0, 1.0);
155
+ vec3 c0 = vec3(0.045, 0.050, 0.078);
156
+ vec3 c1 = vec3(0.18, 0.12, 0.42);
157
+ vec3 c2 = vec3(0.20, 0.78, 0.74);
158
+ vec3 c3 = vec3(0.96, 0.78, 0.32);
159
+ if (x < 0.46) return mix(c0, c1, smoothstep(0.0, 0.46, x));
160
+ if (x < 0.74) return mix(c1, c2, smoothstep(0.46, 0.74, x));
161
+ return mix(c2, c3, smoothstep(0.74, 1.0, x));
162
+ }
163
+
164
+ void main() {
165
+ vec2 uv = gl_FragCoord.xy / u_resolution;
166
+ vec2 p = uv - vec2(0.5);
167
+ p.x *= u_resolution.x / u_resolution.y;
168
+
169
+ float t = u_reduced > 0.5 ? 4.2 : u_time * 0.05;
170
+
171
+ vec2 q = vec2(fbm(p * 1.6 + t), fbm(p * 1.6 + vec2(5.2, 1.3) - t));
172
+ vec2 r = vec2(
173
+ fbm(p * 1.6 + 1.7 * q + vec2(1.7, 9.2) + 0.15 * t),
174
+ fbm(p * 1.6 + 1.7 * q + vec2(8.3, 2.8) - 0.12 * t)
175
+ );
176
+ float f = fbm(p * 1.6 + 2.0 * r);
177
+
178
+ float pd = length(p - u_pointer);
179
+ float warm = smoothstep(0.85, -0.55, p.x + p.y);
180
+ float shade = pow(clamp(f * 0.98 + 0.14 * r.x + 0.10 * warm, 0.0, 1.0), 1.04);
181
+ shade += 0.10 * u_intensity * exp(-pd * pd * 5.0);
182
+
183
+ vec3 col = ramp(shade);
184
+ col += vec3(0.03, 0.04, 0.08) * warm * smoothstep(0.3, 0.72, shade);
185
+ vec3 gold = vec3(0.96, 0.78, 0.32);
186
+ col += gold * 0.14 * exp(-pd * pd * 3.0) * u_intensity;
187
+
188
+ float vig = 1.0 - smoothstep(0.5, 1.45, length(p));
189
+ col *= mix(0.5, 1.0, vig);
190
+ col *= 0.93;
191
+ col += (hash(uv * u_resolution * 0.5 + t) - 0.5) * 0.02;
192
+
193
+ outColor = vec4(col, 1.0);
194
+ }
195
+ `;
196
+ function HeroFluidCanvas({
197
+ reducedMotion,
198
+ className
199
+ }) {
200
+ const canvasRef = useRef(null);
201
+ const rafRef = useRef(0);
202
+ const startRef = useRef(0);
203
+ const pointerTarget = useRef([0, 0]);
204
+ const pointer = useRef([0, 0]);
205
+ const intensityTarget = useRef(0);
206
+ const intensity = useRef(0);
207
+ useEffect(() => {
208
+ const canvas = canvasRef.current;
209
+ if (!canvas) return undefined;
210
+ let disposed = false;
211
+ const dprCap = () => Math.min(window.devicePixelRatio || 1, 1.75);
212
+ const sizeCanvas = () => {
213
+ const host = canvas.parentElement;
214
+ if (!host) return;
215
+ const dpr = dprCap();
216
+ const w = Math.max(1, Math.floor(host.clientWidth * dpr));
217
+ const h = Math.max(1, Math.floor(host.clientHeight * dpr));
218
+ if (canvas.width !== w || canvas.height !== h) {
219
+ canvas.width = w;
220
+ canvas.height = h;
221
+ }
222
+ canvas.style.width = '100%';
223
+ canvas.style.height = '100%';
224
+ };
225
+ const onMove = e => {
226
+ const rect = canvas.getBoundingClientRect();
227
+ if (!rect.width || !rect.height) return;
228
+ const nx = (e.clientX - rect.left) / rect.width - 0.5;
229
+ const ny = (e.clientY - rect.top) / rect.height - 0.5;
230
+ pointerTarget.current = [nx * (rect.width / rect.height), ny];
231
+ intensityTarget.current = 1;
232
+ };
233
+ const onLeave = () => {
234
+ intensityTarget.current = 0;
235
+ };
236
+ if (!reducedMotion) {
237
+ window.addEventListener('pointermove', onMove, {
238
+ passive: true
239
+ });
240
+ window.addEventListener('pointerout', onLeave, {
241
+ passive: true
242
+ });
243
+ }
244
+ const advance = () => {
245
+ const k = 0.06;
246
+ pointer.current[0] += (pointerTarget.current[0] - pointer.current[0]) * k;
247
+ pointer.current[1] += (pointerTarget.current[1] - pointer.current[1]) * k;
248
+ intensity.current += (intensityTarget.current - intensity.current) * 0.05;
249
+ };
250
+ let stopWebgl = null;
251
+ let stopWebgpu = null;
252
+ const runWebGL2 = () => {
253
+ const gl = canvas.getContext('webgl2', {
254
+ antialias: false,
255
+ alpha: false,
256
+ premultipliedAlpha: false,
257
+ powerPreference: 'low-power'
258
+ });
259
+ if (!gl) return false;
260
+ const compile = (type, src) => {
261
+ const sh = gl.createShader(type);
262
+ gl.shaderSource(sh, src);
263
+ gl.compileShader(sh);
264
+ if (!gl.getShaderParameter(sh, gl.COMPILE_STATUS)) {
265
+ gl.deleteShader(sh);
266
+ return null;
267
+ }
268
+ return sh;
269
+ };
270
+ const vs = compile(gl.VERTEX_SHADER, GLSL_VERT);
271
+ const fs = compile(gl.FRAGMENT_SHADER, GLSL_FRAG);
272
+ if (!vs || !fs) return false;
273
+ const prog = gl.createProgram();
274
+ gl.attachShader(prog, vs);
275
+ gl.attachShader(prog, fs);
276
+ gl.linkProgram(prog);
277
+ if (!gl.getProgramParameter(prog, gl.LINK_STATUS)) return false;
278
+ gl.useProgram(prog);
279
+ const uRes = gl.getUniformLocation(prog, 'u_resolution');
280
+ const uTime = gl.getUniformLocation(prog, 'u_time');
281
+ const uReduced = gl.getUniformLocation(prog, 'u_reduced');
282
+ const uPointer = gl.getUniformLocation(prog, 'u_pointer');
283
+ const uIntensity = gl.getUniformLocation(prog, 'u_intensity');
284
+ const frame = now => {
285
+ if (disposed) return;
286
+ if (!startRef.current) startRef.current = now;
287
+ advance();
288
+ sizeCanvas();
289
+ gl.viewport(0, 0, canvas.width, canvas.height);
290
+ gl.uniform2f(uRes, canvas.width, canvas.height);
291
+ gl.uniform1f(uTime, (now - startRef.current) / 1000);
292
+ gl.uniform1f(uReduced, reducedMotion ? 1 : 0);
293
+ gl.uniform2f(uPointer, pointer.current[0], pointer.current[1]);
294
+ gl.uniform1f(uIntensity, intensity.current);
295
+ gl.drawArrays(gl.TRIANGLES, 0, 3);
296
+ if (!reducedMotion) rafRef.current = requestAnimationFrame(frame);
297
+ };
298
+ sizeCanvas();
299
+ if (reducedMotion) frame(performance.now());else rafRef.current = requestAnimationFrame(frame);
300
+ stopWebgl = () => {
301
+ cancelAnimationFrame(rafRef.current);
302
+ const ext = gl.getExtension('WEBGL_lose_context');
303
+ ext?.loseContext();
304
+ };
305
+ return true;
306
+ };
307
+ const runWebGPU = async () => {
308
+ const gpu = navigator.gpu;
309
+ if (!gpu) return false;
310
+ try {
311
+ const adapter = await gpu.requestAdapter({
312
+ powerPreference: 'low-power'
313
+ });
314
+ if (!adapter || disposed) return false;
315
+ const device = await adapter.requestDevice();
316
+ if (disposed) {
317
+ device.destroy();
318
+ return false;
319
+ }
320
+ const ctx = canvas.getContext('webgpu');
321
+ if (!ctx) return false;
322
+ const format = gpu.getPreferredCanvasFormat?.() ?? 'bgra8unorm';
323
+ ctx.configure({
324
+ device,
325
+ format,
326
+ alphaMode: 'opaque'
327
+ });
328
+ const module = device.createShaderModule({
329
+ code: WGSL
330
+ });
331
+ const pipeline = device.createRenderPipeline({
332
+ layout: 'auto',
333
+ vertex: {
334
+ module,
335
+ entryPoint: 'vs'
336
+ },
337
+ fragment: {
338
+ module,
339
+ entryPoint: 'fs',
340
+ targets: [{
341
+ format
342
+ }]
343
+ },
344
+ primitive: {
345
+ topology: 'triangle-list'
346
+ }
347
+ });
348
+ const uniformBuffer = device.createBuffer({
349
+ size: 32,
350
+ usage: 0x40 | 0x8
351
+ });
352
+ const bindGroup = device.createBindGroup({
353
+ layout: pipeline.getBindGroupLayout(0),
354
+ entries: [{
355
+ binding: 0,
356
+ resource: {
357
+ buffer: uniformBuffer
358
+ }
359
+ }]
360
+ });
361
+ const draw = now => {
362
+ if (disposed) return;
363
+ if (!startRef.current) startRef.current = now;
364
+ advance();
365
+ sizeCanvas();
366
+ const data = new Float32Array([canvas.width, canvas.height, (now - startRef.current) / 1000, reducedMotion ? 1 : 0, pointer.current[0], pointer.current[1], intensity.current, 0]);
367
+ device.queue.writeBuffer(uniformBuffer, 0, data);
368
+ const encoder = device.createCommandEncoder();
369
+ const pass = encoder.beginRenderPass({
370
+ colorAttachments: [{
371
+ view: ctx.getCurrentTexture().createView(),
372
+ clearValue: {
373
+ r: 0.045,
374
+ g: 0.05,
375
+ b: 0.078,
376
+ a: 1
377
+ },
378
+ loadOp: 'clear',
379
+ storeOp: 'store'
380
+ }]
381
+ });
382
+ pass.setPipeline(pipeline);
383
+ pass.setBindGroup(0, bindGroup);
384
+ pass.draw(3);
385
+ pass.end();
386
+ device.queue.submit([encoder.finish()]);
387
+ if (!reducedMotion) rafRef.current = requestAnimationFrame(draw);
388
+ };
389
+ sizeCanvas();
390
+ if (reducedMotion) draw(performance.now());else rafRef.current = requestAnimationFrame(draw);
391
+ stopWebgpu = () => {
392
+ cancelAnimationFrame(rafRef.current);
393
+ device.destroy();
394
+ };
395
+ return true;
396
+ } catch {
397
+ return false;
398
+ }
399
+ };
400
+ (async () => {
401
+ const okGpu = await runWebGPU();
402
+ if (disposed) return;
403
+ if (!okGpu) {
404
+ const okGl = runWebGL2();
405
+ if (!okGl) canvas.style.display = 'none';
406
+ }
407
+ })();
408
+ const ro = new ResizeObserver(() => sizeCanvas());
409
+ if (canvas.parentElement) ro.observe(canvas.parentElement);
410
+ return () => {
411
+ disposed = true;
412
+ cancelAnimationFrame(rafRef.current);
413
+ ro.disconnect();
414
+ window.removeEventListener('pointermove', onMove);
415
+ window.removeEventListener('pointerout', onLeave);
416
+ stopWebgl?.();
417
+ stopWebgpu?.();
418
+ };
419
+ }, [reducedMotion]);
420
+ return jsxs(Fragment, {
421
+ children: [jsx("div", {
422
+ className: "pointer-events-none absolute inset-0",
423
+ style: {
424
+ background: 'radial-gradient(1100px 760px at 22% 18%, rgba(107, 82, 242, 0.20), transparent 58%), radial-gradient(900px 680px at 82% 30%, rgba(51, 199, 189, 0.16), transparent 56%), radial-gradient(820px 620px at 60% 92%, rgba(245, 199, 82, 0.14), transparent 60%), #070810'
425
+ },
426
+ "aria-hidden": true
427
+ }), jsx("canvas", {
428
+ ref: canvasRef,
429
+ className: ['pointer-events-none absolute inset-0 z-[1] h-full w-full', className || ''].join(' '),
430
+ "aria-hidden": true
431
+ })]
432
+ });
433
+ }export{HeroFluidCanvas};//# sourceMappingURL=HeroFluidCanvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeroFluidCanvas.js","sources":["../../../../src/pages/LandingPage/components/HeroFluidCanvas.tsx"],"sourcesContent":[null],"names":["_jsxs","_Fragment"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  /**
3
- * Landing-page hero. Editorial typography, theme tokens only.
4
- * Apple/Arc scale, Linear/Vercel discipline. No orbs, no shimmer, no gradient text.
3
+ * Landing-page hero with GPU fluid backdrop (same family as Clockbook hero/footer).
4
+ * Pulls up under the site header (main has mt-16) so the fluid shows through the
5
+ * transparent/glass header bar instead of a white strip.
5
6
  */
6
7
  export declare const HeroSection: React.FC;
7
8
  //# sourceMappingURL=HeroSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeroSection.d.ts","sourceRoot":"","sources":["../../../../src/pages/LandingPage/components/HeroSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EA+C/B,CAAC"}
1
+ {"version":3,"file":"HeroSection.d.ts","sourceRoot":"","sources":["../../../../src/pages/LandingPage/components/HeroSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAwD/B,CAAC"}
@@ -1,59 +1,66 @@
1
- import {jsx,jsxs}from'react/jsx-runtime';import {Link}from'@remix-run/react';import {SearchBar}from'../../../components/SearchBar.js';import {Icons}from'../../../components/Icons.js';/**
2
- * Landing-page hero. Editorial typography, theme tokens only.
3
- * Apple/Arc scale, Linear/Vercel discipline. No orbs, no shimmer, no gradient text.
1
+ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';import {SearchBar}from'../../../components/SearchBar.js';import {Icons}from'../../../components/Icons.js';import {HeroAnimatedBackground}from'./HeroAnimatedBackground.js';/**
2
+ * Landing-page hero with GPU fluid backdrop (same family as Clockbook hero/footer).
3
+ * Pulls up under the site header (main has mt-16) so the fluid shows through the
4
+ * transparent/glass header bar instead of a white strip.
4
5
  */
5
6
  const HeroSection = () => {
6
- return jsx("section", {
7
- className: "relative w-full overflow-hidden border-b border-border bg-background",
8
- children: jsxs("div", {
9
- className: "relative mx-auto flex max-w-5xl flex-col items-center px-6 pt-28 pb-24 text-center lg:px-16 lg:pt-36 lg:pb-32",
7
+ return jsxs("section", {
8
+ className: "yh-hero-surface relative -mt-16 w-full overflow-hidden border-b border-white/10",
9
+ children: [jsx(HeroAnimatedBackground, {}), jsxs("div", {
10
+ className: "relative z-10 mx-auto flex max-w-5xl flex-col items-center px-6 pt-28 pb-24 text-center lg:px-16 lg:pt-36 lg:pb-32",
10
11
  children: [jsxs("div", {
11
- className: "inline-flex items-center gap-2 rounded-themed border border-border bg-card px-3 py-1 text-xs font-medium text-muted-foreground shadow-themed-sm",
12
+ className: "inline-flex items-center gap-2 rounded-themed border border-white/15 bg-white/10 px-3 py-1 text-xs font-medium text-white/70 shadow-themed-sm backdrop-blur-sm",
12
13
  children: [jsxs("span", {
13
14
  className: "relative flex h-1.5 w-1.5",
14
15
  children: [jsx("span", {
15
- className: "absolute inline-flex h-full w-full animate-ping rounded-full bg-success opacity-60"
16
+ className: "absolute inline-flex h-full w-full animate-ping rounded-full bg-emerald-400 opacity-60"
16
17
  }), jsx("span", {
17
- className: "relative inline-flex h-1.5 w-1.5 rounded-full bg-success"
18
+ className: "relative inline-flex h-1.5 w-1.5 rounded-full bg-emerald-400"
18
19
  })]
19
20
  }), jsx(Link, {
20
21
  to: "/release-notes",
21
- className: "hover:text-foreground transition-colors focus-themed",
22
+ className: "transition-colors hover:text-white focus-themed",
22
23
  children: "Yantra 2.4 \u2014 Improved AI employee latency"
23
24
  }), jsx(Icons.ArrowRightIcon, {
24
25
  className: "h-3 w-3"
25
26
  })]
26
27
  }), jsx("h1", {
27
- className: "mt-8 max-w-3xl text-balance text-5xl font-bold leading-[1.02] tracking-tight text-foreground sm:text-6xl lg:text-7xl",
28
+ className: "mt-8 max-w-3xl text-balance text-5xl font-bold leading-[1.02] tracking-tight text-white sm:text-6xl lg:text-7xl",
28
29
  children: "The manual for an automated platform."
29
30
  }), jsx("p", {
30
- className: "mt-6 max-w-prose text-lg leading-relaxed text-muted-foreground sm:text-xl",
31
+ className: "mt-6 max-w-prose text-lg leading-relaxed text-white/75 sm:text-xl",
31
32
  children: "Reference, guides, and operational notes for Yantra. Built for the people who run it: developers, operators, and the teams they work with."
32
33
  }), jsx("div", {
33
34
  className: "mt-10 w-full max-w-2xl",
34
35
  children: jsx(SearchBar, {})
35
36
  }), jsxs("div", {
36
- className: "mt-6 flex flex-wrap items-center justify-center gap-x-6 gap-y-2 text-sm text-muted-foreground",
37
+ className: "mt-6 flex flex-wrap items-center justify-center gap-x-6 gap-y-2 text-sm text-white/60",
37
38
  children: [jsx(Link, {
38
39
  to: "/get-started",
39
- className: "font-medium text-foreground underline-offset-4 hover:underline focus-themed",
40
+ className: "font-medium text-white underline-offset-4 hover:underline focus-themed",
40
41
  children: "Get started"
41
42
  }), jsx("span", {
42
- className: "text-border",
43
+ className: "text-white/25",
43
44
  children: "/"
44
45
  }), jsx(Link, {
45
46
  to: "/help-center",
46
- className: "hover:text-foreground transition-colors focus-themed",
47
+ className: "transition-colors hover:text-white focus-themed",
47
48
  children: "Browse all topics"
48
49
  }), jsx("span", {
49
- className: "text-border",
50
+ className: "text-white/25",
50
51
  children: "/"
51
52
  }), jsx(Link, {
52
53
  to: "/help-center/scope-api",
53
- className: "hover:text-foreground transition-colors focus-themed",
54
+ className: "transition-colors hover:text-white focus-themed",
54
55
  children: "API reference"
55
56
  })]
56
57
  })]
57
- })
58
+ }), jsx("div", {
59
+ className: "pointer-events-none absolute inset-x-0 bottom-0 z-[3] h-16",
60
+ style: {
61
+ background: 'linear-gradient(to top, hsl(var(--background)), transparent)'
62
+ },
63
+ "aria-hidden": true
64
+ })]
58
65
  });
59
66
  };export{HeroSection};//# sourceMappingURL=HeroSection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeroSection.js","sources":["../../../../src/pages/LandingPage/components/HeroSection.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"uLAKA;;;AAGG;AACI,MAAM,WAAW,GAAa,MAAK;AACtC,EAAA,OAAAA,GACI,CAAA,SAAA,EAAA;AA6CR,IAAE,SAAA,EAAA,sEAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HeroSection.js","sources":["../../../../src/pages/LandingPage/components/HeroSection.tsx"],"sourcesContent":[null],"names":["_jsxs"],"mappings":"wPAMA;;;;AAIG;AACI,MAAM,WAAW,GAAa,MAAK;AACtC,EAAA,OAAAA,IACI,CAAA,SAAA,EAAA;AAsDR,IAAE,SAAA,EAAA,iFAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -4,6 +4,7 @@ interface ResourceCardProps {
4
4
  description: string;
5
5
  icon?: React.ReactNode;
6
6
  ctaText?: string;
7
+ index?: number;
7
8
  onClick?: () => void;
8
9
  }
9
10
  export declare const ResourceCard: React.FC<ResourceCardProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceCard.d.ts","sourceRoot":"","sources":["../../../../src/pages/LandingPage/components/ResourceCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAwBpD,CAAC"}
1
+ {"version":3,"file":"ResourceCard.d.ts","sourceRoot":"","sources":["../../../../src/pages/LandingPage/components/ResourceCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAgCpD,CAAC"}
@@ -3,12 +3,16 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Icons}from'../../../components/
3
3
  description,
4
4
  icon,
5
5
  ctaText,
6
+ index = 0,
6
7
  onClick
7
8
  }) => {
8
9
  return jsxs("button", {
9
10
  type: "button",
10
11
  onClick: onClick,
11
- className: "themed-card group flex w-full flex-col items-start p-6 text-left interactive-hover focus-themed",
12
+ style: {
13
+ ['--i']: index
14
+ },
15
+ className: "yh-glass-card yh-hover-lift yh-stagger-item themed-card group flex w-full flex-col items-start rounded-themed-lg p-6 text-left focus-themed",
12
16
  children: [icon && jsx("div", {
13
17
  className: "mb-5 flex h-10 w-10 items-center justify-center rounded-themed bg-muted text-foreground transition-colors group-hover:bg-primary/10 group-hover:text-primary",
14
18
  children: icon
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceCard.js","sources":["../../../../src/pages/LandingPage/components/ResourceCard.tsx"],"sourcesContent":[null],"names":[],"mappings":"0FAWa,MAAA,YAAY,GAAgC,CAAC;AACtD,EAAA,KAAA;AAuBJ,EAAE,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ResourceCard.js","sources":["../../../../src/pages/LandingPage/components/ResourceCard.tsx"],"sourcesContent":[null],"names":[],"mappings":"gGAYa,YAAY,GAAgC,CAAC;AAQtD,EAAA,KAAA;AAwBJ,EAAE,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ResourcesSection.d.ts","sourceRoot":"","sources":["../../../../src/pages/LandingPage/components/ResourcesSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,QAAQ;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,qBAAqB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA0B5D,CAAC"}
1
+ {"version":3,"file":"ResourcesSection.d.ts","sourceRoot":"","sources":["../../../../src/pages/LandingPage/components/ResourcesSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,QAAQ;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,qBAAqB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAsB5D,CAAC"}
@@ -1,34 +1,22 @@
1
- import {jsx,jsxs}from'react/jsx-runtime';import {ResourceCard}from'./ResourceCard.js';const ResourcesSection = ({
1
+ import {jsx}from'react/jsx-runtime';import {ResourceCard}from'./ResourceCard.js';import'react';import'clsx';import'tailwind-merge';import {EnterpriseSection}from'../../../components/enterprise/EnterpriseSection.js';const ResourcesSection = ({
2
2
  title,
3
3
  resources,
4
4
  onResourceClick
5
5
  }) => {
6
- return jsx("section", {
7
- className: "border-b border-border py-20",
8
- children: jsxs("div", {
9
- className: "mx-auto max-w-7xl px-6 lg:px-16",
10
- children: [jsxs("div", {
11
- className: "mb-12 max-w-prose",
12
- children: [jsx("p", {
13
- className: "text-xs font-bold uppercase tracking-[0.18em] text-primary",
14
- children: "Resources"
15
- }), jsx("h2", {
16
- className: "mt-2 text-3xl font-bold tracking-tight text-foreground",
17
- children: title
18
- }), jsx("p", {
19
- className: "mt-2 text-base text-muted-foreground",
20
- children: "Posture, contact, feedback. The non-article surface area."
21
- })]
22
- }), jsx("div", {
23
- className: "grid grid-cols-1 gap-3 md:grid-cols-3",
24
- children: resources.map(r => jsx(ResourceCard, {
25
- title: r.title,
26
- description: r.description,
27
- icon: r.icon,
28
- ctaText: r.ctaText,
29
- onClick: () => onResourceClick?.(r.href)
30
- }, r.id))
31
- })]
6
+ return jsx(EnterpriseSection, {
7
+ eyebrow: "Resources",
8
+ title: title,
9
+ description: "Posture, contact, feedback. The non-article surface area.",
10
+ children: jsx("div", {
11
+ className: "grid grid-cols-1 gap-3 md:grid-cols-3",
12
+ children: resources.map((r, index) => jsx(ResourceCard, {
13
+ index: index,
14
+ title: r.title,
15
+ description: r.description,
16
+ icon: r.icon,
17
+ ctaText: r.ctaText,
18
+ onClick: () => onResourceClick?.(r.href)
19
+ }, r.id))
32
20
  })
33
21
  });
34
22
  };export{ResourcesSection};//# sourceMappingURL=ResourcesSection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResourcesSection.js","sources":["../../../../src/pages/LandingPage/components/ResourcesSection.tsx"],"sourcesContent":[null],"names":[],"mappings":"sFAkBO,MAAM,gBAAgB,GAAoC,CAAC;OACvD;AAyBX,EAAE,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ResourcesSection.js","sources":["../../../../src/pages/LandingPage/components/ResourcesSection.tsx"],"sourcesContent":[null],"names":[],"mappings":"uNAmBO,MAAM,gBAAgB,GAAoC,CAAC;AAC9D,EAAA,KAAA;AAqBJ,EAAE,SAAA;;;;;;;;;;;;;;;;;;;"}