@opensite/ui 1.3.2 → 1.3.4

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 (167) hide show
  1. package/dist/footer-accordion-social.cjs +1344 -0
  2. package/dist/footer-accordion-social.d.cts +154 -0
  3. package/dist/footer-accordion-social.d.ts +154 -0
  4. package/dist/footer-accordion-social.js +1322 -0
  5. package/dist/footer-info-cards-accordion.cjs +1427 -0
  6. package/dist/footer-info-cards-accordion.d.cts +278 -0
  7. package/dist/footer-info-cards-accordion.d.ts +278 -0
  8. package/dist/footer-info-cards-accordion.js +1404 -0
  9. package/dist/footer-newsletter-contact.cjs +1281 -0
  10. package/dist/footer-newsletter-contact.d.cts +163 -0
  11. package/dist/footer-newsletter-contact.d.ts +163 -0
  12. package/dist/footer-newsletter-contact.js +1259 -0
  13. package/dist/footer-split-image-accordion.cjs +1395 -0
  14. package/dist/footer-split-image-accordion.d.cts +236 -0
  15. package/dist/footer-split-image-accordion.d.ts +236 -0
  16. package/dist/footer-split-image-accordion.js +1372 -0
  17. package/dist/list-achievements-showcase.cjs +1141 -0
  18. package/dist/list-achievements-showcase.d.cts +131 -0
  19. package/dist/list-achievements-showcase.d.ts +131 -0
  20. package/dist/list-achievements-showcase.js +1119 -0
  21. package/dist/list-career-timeline.cjs +531 -0
  22. package/dist/list-career-timeline.d.cts +153 -0
  23. package/dist/list-career-timeline.d.ts +153 -0
  24. package/dist/list-career-timeline.js +509 -0
  25. package/dist/list-feature-comparison.cjs +1211 -0
  26. package/dist/list-feature-comparison.d.cts +189 -0
  27. package/dist/list-feature-comparison.d.ts +189 -0
  28. package/dist/list-feature-comparison.js +1190 -0
  29. package/dist/list-metrics-dashboard.cjs +1402 -0
  30. package/dist/list-metrics-dashboard.d.cts +191 -0
  31. package/dist/list-metrics-dashboard.d.ts +191 -0
  32. package/dist/list-metrics-dashboard.js +1379 -0
  33. package/dist/list-service-category-table.cjs +762 -0
  34. package/dist/list-service-category-table.d.cts +135 -0
  35. package/dist/list-service-category-table.d.ts +135 -0
  36. package/dist/list-service-category-table.js +741 -0
  37. package/dist/offer-modal-membership-image.cjs +1361 -0
  38. package/dist/offer-modal-membership-image.d.cts +194 -0
  39. package/dist/offer-modal-membership-image.d.ts +194 -0
  40. package/dist/offer-modal-membership-image.js +1339 -0
  41. package/dist/offer-modal-newsletter-discount.cjs +1296 -0
  42. package/dist/offer-modal-newsletter-discount.d.cts +164 -0
  43. package/dist/offer-modal-newsletter-discount.d.ts +164 -0
  44. package/dist/offer-modal-newsletter-discount.js +1274 -0
  45. package/dist/offer-modal-sheet-newsletter.cjs +1360 -0
  46. package/dist/offer-modal-sheet-newsletter.d.cts +221 -0
  47. package/dist/offer-modal-sheet-newsletter.d.ts +221 -0
  48. package/dist/offer-modal-sheet-newsletter.js +1337 -0
  49. package/dist/pricing-addons-cards.cjs +1143 -0
  50. package/dist/pricing-addons-cards.d.cts +203 -0
  51. package/dist/pricing-addons-cards.d.ts +203 -0
  52. package/dist/pricing-addons-cards.js +1122 -0
  53. package/dist/pricing-addons-featured.cjs +1224 -0
  54. package/dist/pricing-addons-featured.d.cts +271 -0
  55. package/dist/pricing-addons-featured.d.ts +271 -0
  56. package/dist/pricing-addons-featured.js +1203 -0
  57. package/dist/pricing-collapsible-plans.cjs +1315 -0
  58. package/dist/pricing-collapsible-plans.d.cts +258 -0
  59. package/dist/pricing-collapsible-plans.d.ts +258 -0
  60. package/dist/pricing-collapsible-plans.js +1294 -0
  61. package/dist/pricing-columns-toggle.cjs +1234 -0
  62. package/dist/pricing-columns-toggle.d.cts +251 -0
  63. package/dist/pricing-columns-toggle.d.ts +251 -0
  64. package/dist/pricing-columns-toggle.js +1212 -0
  65. package/dist/pricing-comparison-headers.cjs +1235 -0
  66. package/dist/pricing-comparison-headers.d.cts +245 -0
  67. package/dist/pricing-comparison-headers.d.ts +245 -0
  68. package/dist/pricing-comparison-headers.js +1213 -0
  69. package/dist/pricing-comparison-table.cjs +1374 -0
  70. package/dist/pricing-comparison-table.d.cts +280 -0
  71. package/dist/pricing-comparison-table.d.ts +280 -0
  72. package/dist/pricing-comparison-table.js +1352 -0
  73. package/dist/pricing-discount-card.cjs +1217 -0
  74. package/dist/pricing-discount-card.d.cts +195 -0
  75. package/dist/pricing-discount-card.d.ts +195 -0
  76. package/dist/pricing-discount-card.js +1195 -0
  77. package/dist/pricing-enterprise-contact.cjs +1094 -0
  78. package/dist/pricing-enterprise-contact.d.cts +170 -0
  79. package/dist/pricing-enterprise-contact.d.ts +170 -0
  80. package/dist/pricing-enterprise-contact.js +1073 -0
  81. package/dist/pricing-feature-matrix.cjs +1197 -0
  82. package/dist/pricing-feature-matrix.d.cts +56 -0
  83. package/dist/pricing-feature-matrix.d.ts +56 -0
  84. package/dist/pricing-feature-matrix.js +1174 -0
  85. package/dist/pricing-four-tier-toggle.cjs +1320 -0
  86. package/dist/pricing-four-tier-toggle.d.cts +266 -0
  87. package/dist/pricing-four-tier-toggle.d.ts +266 -0
  88. package/dist/pricing-four-tier-toggle.js +1297 -0
  89. package/dist/pricing-full-comparison.cjs +1301 -0
  90. package/dist/pricing-full-comparison.d.cts +265 -0
  91. package/dist/pricing-full-comparison.d.ts +265 -0
  92. package/dist/pricing-full-comparison.js +1279 -0
  93. package/dist/pricing-gradient-cards.cjs +1248 -0
  94. package/dist/pricing-gradient-cards.d.cts +258 -0
  95. package/dist/pricing-gradient-cards.d.ts +258 -0
  96. package/dist/pricing-gradient-cards.js +1226 -0
  97. package/dist/pricing-icon-headers.cjs +1163 -0
  98. package/dist/pricing-icon-headers.d.cts +218 -0
  99. package/dist/pricing-icon-headers.d.ts +218 -0
  100. package/dist/pricing-icon-headers.js +1142 -0
  101. package/dist/pricing-minimal-cards.cjs +1146 -0
  102. package/dist/pricing-minimal-cards.d.cts +210 -0
  103. package/dist/pricing-minimal-cards.d.ts +210 -0
  104. package/dist/pricing-minimal-cards.js +1125 -0
  105. package/dist/pricing-packages-radio.cjs +1203 -0
  106. package/dist/pricing-packages-radio.d.cts +243 -0
  107. package/dist/pricing-packages-radio.d.ts +243 -0
  108. package/dist/pricing-packages-radio.js +1182 -0
  109. package/dist/pricing-popular-highlight.cjs +1293 -0
  110. package/dist/pricing-popular-highlight.d.cts +255 -0
  111. package/dist/pricing-popular-highlight.d.ts +255 -0
  112. package/dist/pricing-popular-highlight.js +1271 -0
  113. package/dist/pricing-radio-toggle.cjs +1277 -0
  114. package/dist/pricing-radio-toggle.d.cts +251 -0
  115. package/dist/pricing-radio-toggle.d.ts +251 -0
  116. package/dist/pricing-radio-toggle.js +1255 -0
  117. package/dist/pricing-responsive-table.cjs +1229 -0
  118. package/dist/pricing-responsive-table.d.cts +55 -0
  119. package/dist/pricing-responsive-table.d.ts +55 -0
  120. package/dist/pricing-responsive-table.js +1206 -0
  121. package/dist/pricing-services-cards.cjs +1209 -0
  122. package/dist/pricing-services-cards.d.cts +230 -0
  123. package/dist/pricing-services-cards.d.ts +230 -0
  124. package/dist/pricing-services-cards.js +1188 -0
  125. package/dist/pricing-simple-card.cjs +1102 -0
  126. package/dist/pricing-simple-card.d.cts +174 -0
  127. package/dist/pricing-simple-card.d.ts +174 -0
  128. package/dist/pricing-simple-card.js +1081 -0
  129. package/dist/pricing-single-card.cjs +1174 -0
  130. package/dist/pricing-single-card.d.cts +201 -0
  131. package/dist/pricing-single-card.d.ts +201 -0
  132. package/dist/pricing-single-card.js +1152 -0
  133. package/dist/pricing-split-layout.cjs +1001 -0
  134. package/dist/pricing-split-layout.d.cts +44 -0
  135. package/dist/pricing-split-layout.d.ts +44 -0
  136. package/dist/pricing-split-layout.js +980 -0
  137. package/dist/pricing-spotlight-card.cjs +1157 -0
  138. package/dist/pricing-spotlight-card.d.cts +201 -0
  139. package/dist/pricing-spotlight-card.d.ts +201 -0
  140. package/dist/pricing-spotlight-card.js +1136 -0
  141. package/dist/pricing-switch-cards.cjs +1274 -0
  142. package/dist/pricing-switch-cards.d.cts +254 -0
  143. package/dist/pricing-switch-cards.d.ts +254 -0
  144. package/dist/pricing-switch-cards.js +1252 -0
  145. package/dist/pricing-tabs-toggle.cjs +1314 -0
  146. package/dist/pricing-tabs-toggle.d.cts +274 -0
  147. package/dist/pricing-tabs-toggle.d.ts +274 -0
  148. package/dist/pricing-tabs-toggle.js +1291 -0
  149. package/dist/pricing-tier-grid.cjs +1190 -0
  150. package/dist/pricing-tier-grid.d.cts +224 -0
  151. package/dist/pricing-tier-grid.d.ts +224 -0
  152. package/dist/pricing-tier-grid.js +1169 -0
  153. package/dist/pricing-toggle-cards.cjs +1330 -0
  154. package/dist/pricing-toggle-cards.d.cts +267 -0
  155. package/dist/pricing-toggle-cards.d.ts +267 -0
  156. package/dist/pricing-toggle-cards.js +1307 -0
  157. package/dist/pricing-toggle-period.cjs +1251 -0
  158. package/dist/pricing-toggle-period.d.cts +265 -0
  159. package/dist/pricing-toggle-period.d.ts +265 -0
  160. package/dist/pricing-toggle-period.js +1230 -0
  161. package/dist/pricing-two-column-basic.cjs +1243 -0
  162. package/dist/pricing-two-column-basic.d.cts +244 -0
  163. package/dist/pricing-two-column-basic.d.ts +244 -0
  164. package/dist/pricing-two-column-basic.js +1222 -0
  165. package/dist/registry.cjs +109 -85
  166. package/dist/registry.js +931 -907
  167. package/package.json +1 -1
@@ -0,0 +1,531 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var React3 = require('react');
5
+ var clsx = require('clsx');
6
+ var tailwindMerge = require('tailwind-merge');
7
+ var SeparatorPrimitive = require('@radix-ui/react-separator');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
29
+ var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
30
+
31
+ // components/blocks/list/list-career-timeline.tsx
32
+ function cn(...inputs) {
33
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
34
+ }
35
+ function Separator({
36
+ className,
37
+ orientation = "horizontal",
38
+ decorative = true,
39
+ ...props
40
+ }) {
41
+ return /* @__PURE__ */ jsxRuntime.jsx(
42
+ SeparatorPrimitive__namespace.Root,
43
+ {
44
+ "data-slot": "separator",
45
+ decorative,
46
+ orientation,
47
+ className: cn(
48
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
49
+ className
50
+ ),
51
+ ...props
52
+ }
53
+ );
54
+ }
55
+ var maxWidthStyles = {
56
+ sm: "max-w-screen-sm",
57
+ md: "max-w-screen-md",
58
+ lg: "max-w-screen-lg",
59
+ xl: "max-w-7xl",
60
+ "2xl": "max-w-screen-2xl",
61
+ "4xl": "max-w-[1536px]",
62
+ full: "max-w-full"
63
+ };
64
+ var Container = React3__namespace.default.forwardRef(
65
+ ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
66
+ const Component = as;
67
+ return /* @__PURE__ */ jsxRuntime.jsx(
68
+ Component,
69
+ {
70
+ ref,
71
+ className: cn(
72
+ "mx-auto w-full px-2 sm:px-4 lg:px-8",
73
+ maxWidthStyles[maxWidth],
74
+ className
75
+ ),
76
+ ...props,
77
+ children
78
+ }
79
+ );
80
+ }
81
+ );
82
+ Container.displayName = "Container";
83
+
84
+ // lib/patternSvgs.ts
85
+ var patternSvgs = {
86
+ squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
87
+ grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
88
+ noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
89
+ dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
90
+ dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
91
+ dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
92
+ circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
93
+ waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
94
+ crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
95
+ architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
96
+ tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
97
+ p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
98
+ };
99
+ var maskTop = "radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%)";
100
+ var maskBottom = "radial-gradient(ellipse 100% 80% at 50% 100%, #000 50%, transparent 90%)";
101
+ var maskCenter = "radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 70%)";
102
+ var maskTopLeft = "radial-gradient(ellipse 80% 80% at 0% 0%, #000 50%, transparent 90%)";
103
+ var maskTopRight = "radial-gradient(ellipse 80% 80% at 100% 0%, #000 50%, transparent 90%)";
104
+ var maskBottomLeft = "radial-gradient(ellipse 80% 80% at 0% 100%, #000 50%, transparent 90%)";
105
+ var maskBottomRight = "radial-gradient(ellipse 80% 80% at 100% 100%, #000 50%, transparent 90%)";
106
+ var circuitBoardPattern = (id, mask) => /* @__PURE__ */ jsxRuntime.jsxs(
107
+ "svg",
108
+ {
109
+ className: "h-full w-full",
110
+ xmlns: "http://www.w3.org/2000/svg",
111
+ style: mask ? {
112
+ maskImage: mask,
113
+ WebkitMaskImage: mask
114
+ } : void 0,
115
+ children: [
116
+ /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs(
117
+ "pattern",
118
+ {
119
+ id,
120
+ x: "0",
121
+ y: "0",
122
+ width: "100",
123
+ height: "100",
124
+ patternUnits: "userSpaceOnUse",
125
+ children: [
126
+ /* @__PURE__ */ jsxRuntime.jsx(
127
+ "path",
128
+ {
129
+ d: "M0 50h40M60 50h40M50 0v40M50 60v40",
130
+ stroke: "hsl(var(--muted))",
131
+ strokeWidth: "1",
132
+ fill: "none"
133
+ }
134
+ ),
135
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "50", cy: "50", r: "3", fill: "hsl(var(--muted))" }),
136
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "0", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
137
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "100", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
138
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "50", cy: "0", r: "2", fill: "hsl(var(--muted))" }),
139
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "50", cy: "100", r: "2", fill: "hsl(var(--muted))" })
140
+ ]
141
+ }
142
+ ) }),
143
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
144
+ ]
145
+ }
146
+ );
147
+ var gridDotsPattern = (id, mask) => /* @__PURE__ */ jsxRuntime.jsxs(
148
+ "svg",
149
+ {
150
+ className: "h-full w-full",
151
+ xmlns: "http://www.w3.org/2000/svg",
152
+ style: mask ? {
153
+ maskImage: mask,
154
+ WebkitMaskImage: mask
155
+ } : void 0,
156
+ children: [
157
+ /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs(
158
+ "pattern",
159
+ {
160
+ id,
161
+ x: "0",
162
+ y: "0",
163
+ width: "40",
164
+ height: "40",
165
+ patternUnits: "userSpaceOnUse",
166
+ children: [
167
+ /* @__PURE__ */ jsxRuntime.jsx(
168
+ "path",
169
+ {
170
+ d: "M0 20h40M20 0v40",
171
+ stroke: "hsl(var(--muted))",
172
+ strokeWidth: "0.5",
173
+ fill: "none"
174
+ }
175
+ ),
176
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "20", cy: "20", r: "2", fill: "hsl(var(--muted))" })
177
+ ]
178
+ }
179
+ ) }),
180
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
181
+ ]
182
+ }
183
+ );
184
+ var gridPattern = (size, mask) => /* @__PURE__ */ jsxRuntime.jsx(
185
+ "div",
186
+ {
187
+ className: "h-full w-full bg-[linear-gradient(to_right,_hsl(var(--muted))_1px,_transparent_1px),linear-gradient(to_bottom,_hsl(var(--muted))_1px,_transparent_1px)]",
188
+ style: {
189
+ backgroundSize: `${size}px ${size}px`,
190
+ ...mask ? {
191
+ maskImage: mask,
192
+ WebkitMaskImage: mask
193
+ } : {}
194
+ }
195
+ }
196
+ );
197
+ var diagonalCrossPattern = (mask) => /* @__PURE__ */ jsxRuntime.jsx(
198
+ "div",
199
+ {
200
+ className: "h-full w-full",
201
+ style: {
202
+ backgroundImage: "repeating-linear-gradient(45deg, transparent, transparent 32px, hsl(var(--muted)) 32px, hsl(var(--muted)) 33px), repeating-linear-gradient(135deg, transparent, transparent 32px, hsl(var(--muted)) 32px, hsl(var(--muted)) 33px)",
203
+ ...mask ? {
204
+ maskImage: mask,
205
+ WebkitMaskImage: mask
206
+ } : {}
207
+ }
208
+ }
209
+ );
210
+ var dashedGridMaskBase = "repeating-linear-gradient(to right, black 0px, black 3px, transparent 3px, transparent 8px), repeating-linear-gradient(to bottom, black 0px, black 3px, transparent 3px, transparent 8px)";
211
+ var dashedGridPattern = (fadeMask) => {
212
+ const mask = fadeMask ? `${dashedGridMaskBase}, ${fadeMask}` : dashedGridMaskBase;
213
+ return /* @__PURE__ */ jsxRuntime.jsx(
214
+ "div",
215
+ {
216
+ className: "h-full w-full",
217
+ style: {
218
+ backgroundImage: "linear-gradient(to right, hsl(var(--muted)) 1px, transparent 1px), linear-gradient(to bottom, hsl(var(--muted)) 1px, transparent 1px)",
219
+ backgroundSize: "20px 20px",
220
+ backgroundPosition: "0 0, 0 0",
221
+ maskImage: mask,
222
+ WebkitMaskImage: mask,
223
+ maskComposite: "intersect",
224
+ WebkitMaskComposite: "source-in"
225
+ }
226
+ }
227
+ );
228
+ };
229
+ var gradientGlow = (position) => /* @__PURE__ */ jsxRuntime.jsx(
230
+ "div",
231
+ {
232
+ className: cn(
233
+ "pointer-events-none absolute left-1/2 z-0 aspect-square w-3/4 -translate-x-1/2 rounded-full opacity-50 blur-3xl",
234
+ position === "top" ? "-top-1/4" : "-bottom-1/4"
235
+ ),
236
+ style: {
237
+ background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
238
+ }
239
+ }
240
+ );
241
+ var spotlight = (position) => /* @__PURE__ */ jsxRuntime.jsx(
242
+ "div",
243
+ {
244
+ className: cn(
245
+ "pointer-events-none absolute top-1/2 z-0 aspect-square w-3/4 -translate-y-1/2 rounded-full opacity-40 blur-3xl",
246
+ position === "left" ? "-left-1/4" : "-right-1/4"
247
+ ),
248
+ style: {
249
+ background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
250
+ }
251
+ }
252
+ );
253
+ var patternOverlays = {
254
+ circuitBoardBasic: () => circuitBoardPattern("circuit-board-basic"),
255
+ circuitBoardFadeTop: () => circuitBoardPattern("circuit-board-fade-top", maskTop),
256
+ circuitBoardFadeBottom: () => circuitBoardPattern("circuit-board-fade-bottom", maskBottom),
257
+ circuitBoardFadeCenter: () => circuitBoardPattern("circuit-board-fade-center", maskCenter),
258
+ circuitBoardFadeTopLeft: () => circuitBoardPattern("circuit-board-fade-top-left", maskTopLeft),
259
+ circuitBoardFadeTopRight: () => circuitBoardPattern("circuit-board-fade-top-right", maskTopRight),
260
+ circuitBoardFadeBottomLeft: () => circuitBoardPattern("circuit-board-fade-bottom-left", maskBottomLeft),
261
+ circuitBoardFadeBottomRight: () => circuitBoardPattern("circuit-board-fade-bottom-right", maskBottomRight),
262
+ dashedGridBasic: () => dashedGridPattern(),
263
+ dashedGridFadeTop: () => dashedGridPattern(maskTop),
264
+ dashedGridFadeBottom: () => dashedGridPattern(maskBottom),
265
+ dashedGridFadeCenter: () => dashedGridPattern(maskCenter),
266
+ dashedGridFadeTopLeft: () => dashedGridPattern(maskTopLeft),
267
+ dashedGridFadeTopRight: () => dashedGridPattern(maskTopRight),
268
+ dashedGridFadeBottomLeft: () => dashedGridPattern(maskBottomLeft),
269
+ dashedGridFadeBottomRight: () => dashedGridPattern(maskBottomRight),
270
+ diagonalCrossBasic: () => diagonalCrossPattern(),
271
+ diagonalCrossFadeTop: () => diagonalCrossPattern(maskTop),
272
+ diagonalCrossFadeBottom: () => diagonalCrossPattern(maskBottom),
273
+ diagonalCrossFadeCenter: () => diagonalCrossPattern(maskCenter),
274
+ diagonalCrossFadeTopLeft: () => diagonalCrossPattern(maskTopLeft),
275
+ diagonalCrossFadeTopRight: () => diagonalCrossPattern(maskTopRight),
276
+ diagonalCrossFadeBottomLeft: () => diagonalCrossPattern(maskBottomLeft),
277
+ diagonalCrossFadeBottomRight: () => diagonalCrossPattern(maskBottomRight),
278
+ gridBasic: () => gridPattern(40),
279
+ gridFadeTop: () => gridPattern(32, maskTop),
280
+ gridFadeBottom: () => gridPattern(32, maskBottom),
281
+ gridFadeCenter: () => gridPattern(40, maskCenter),
282
+ gridFadeTopLeft: () => gridPattern(32, maskTopLeft),
283
+ gridFadeTopRight: () => gridPattern(32, maskTopRight),
284
+ gridFadeBottomLeft: () => gridPattern(32, maskBottomLeft),
285
+ gridFadeBottomRight: () => gridPattern(32, maskBottomRight),
286
+ gridDotsBasic: () => gridDotsPattern("grid-dots-basic"),
287
+ gridDotsFadeCenter: () => gridDotsPattern("grid-dots-fade-center", maskCenter),
288
+ gradientGlowTop: () => gradientGlow("top"),
289
+ gradientGlowBottom: () => gradientGlow("bottom"),
290
+ spotlightLeft: () => spotlight("left"),
291
+ spotlightRight: () => spotlight("right")
292
+ };
293
+ var inlinePatternStyles = {
294
+ radialGradientTop: {
295
+ background: "radial-gradient(125% 125% at 50% 10%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
296
+ },
297
+ radialGradientBottom: {
298
+ background: "radial-gradient(125% 125% at 50% 90%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
299
+ }
300
+ };
301
+ function PatternBackground({
302
+ pattern,
303
+ opacity = 0.08,
304
+ className,
305
+ style
306
+ }) {
307
+ if (!pattern) {
308
+ return null;
309
+ }
310
+ if (pattern in inlinePatternStyles) {
311
+ const inlineStyle = inlinePatternStyles[pattern];
312
+ return /* @__PURE__ */ jsxRuntime.jsx(
313
+ "div",
314
+ {
315
+ className: cn("pointer-events-none absolute inset-0 z-0", className),
316
+ style: { ...inlineStyle, opacity, ...style },
317
+ "aria-hidden": "true"
318
+ }
319
+ );
320
+ }
321
+ if (pattern in patternOverlays) {
322
+ const Overlay = patternOverlays[pattern];
323
+ return /* @__PURE__ */ jsxRuntime.jsx(
324
+ "div",
325
+ {
326
+ className: cn("pointer-events-none absolute inset-0 z-0", className),
327
+ style: { opacity, ...style },
328
+ "aria-hidden": "true",
329
+ children: Overlay()
330
+ }
331
+ );
332
+ }
333
+ const patternUrl = pattern in patternSvgs ? patternSvgs[pattern] : pattern;
334
+ return /* @__PURE__ */ jsxRuntime.jsx(
335
+ "div",
336
+ {
337
+ className: cn("pointer-events-none absolute inset-0 z-0", className),
338
+ style: {
339
+ backgroundImage: `url(${patternUrl})`,
340
+ backgroundRepeat: "repeat",
341
+ backgroundSize: "auto",
342
+ opacity,
343
+ ...style
344
+ },
345
+ "aria-hidden": "true"
346
+ }
347
+ );
348
+ }
349
+ var backgroundStyles = {
350
+ default: "bg-background text-foreground",
351
+ white: "bg-white text-dark",
352
+ gray: "bg-muted/30 text-foreground",
353
+ dark: "bg-foreground text-background",
354
+ transparent: "bg-transparent text-foreground",
355
+ gradient: "bg-linear-to-br from-primary via-primary/90 to-foreground text-primary-foreground",
356
+ primary: "bg-primary text-primary-foreground",
357
+ secondary: "bg-secondary text-secondary-foreground",
358
+ muted: "bg-muted text-muted-foreground"
359
+ };
360
+ var spacingStyles = {
361
+ none: "py-0 md:py-0",
362
+ sm: "py-12 md:py-16",
363
+ md: "py-16 md:py-24",
364
+ lg: "py-20 md:py-32",
365
+ xl: "py-24 md:py-40"
366
+ };
367
+ var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
368
+ var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
369
+ var Section = React3__namespace.default.forwardRef(
370
+ ({
371
+ id,
372
+ title,
373
+ subtitle,
374
+ children,
375
+ className,
376
+ style,
377
+ background = "default",
378
+ spacing = "lg",
379
+ pattern,
380
+ patternOpacity,
381
+ patternClassName,
382
+ containerClassName,
383
+ containerMaxWidth = "xl",
384
+ ...props
385
+ }, ref) => {
386
+ const effectivePatternOpacity = patternOpacity !== void 0 ? patternOpacity : pattern ? 1 : 0;
387
+ return /* @__PURE__ */ jsxRuntime.jsxs(
388
+ "section",
389
+ {
390
+ ref,
391
+ id,
392
+ className: cn(
393
+ "relative",
394
+ pattern ? "overflow-hidden" : null,
395
+ backgroundStyles[background],
396
+ isPredefinedSpacing(spacing) ? spacingStyles[spacing] : spacing,
397
+ className
398
+ ),
399
+ style,
400
+ ...props,
401
+ children: [
402
+ /* @__PURE__ */ jsxRuntime.jsx(
403
+ PatternBackground,
404
+ {
405
+ pattern,
406
+ opacity: effectivePatternOpacity,
407
+ className: patternClassName
408
+ }
409
+ ),
410
+ /* @__PURE__ */ jsxRuntime.jsxs(
411
+ Container,
412
+ {
413
+ maxWidth: containerMaxWidth,
414
+ className: cn("relative z-10", containerClassName),
415
+ children: [
416
+ (title || subtitle) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6 text-center md:mb-16", children: [
417
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm font-semibold uppercase tracking-wider", children: subtitle }),
418
+ title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", children: title })
419
+ ] }),
420
+ children
421
+ ]
422
+ }
423
+ )
424
+ ]
425
+ }
426
+ );
427
+ }
428
+ );
429
+ Section.displayName = "Section";
430
+ function ListCareerTimeline({
431
+ sectionLabel,
432
+ sectionLabelClassName,
433
+ heading,
434
+ headingClassName,
435
+ experienceLabel,
436
+ experienceLabelClassName,
437
+ experiences,
438
+ experiencesSlot,
439
+ experiencesClassName,
440
+ experienceRowClassName,
441
+ achievementsLabel,
442
+ achievementsLabelClassName,
443
+ awards,
444
+ awardsSlot,
445
+ awardsClassName,
446
+ awardRowClassName,
447
+ contentClassName,
448
+ className,
449
+ background,
450
+ spacing,
451
+ pattern,
452
+ patternOpacity
453
+ }) {
454
+ const renderExperiences = React3.useMemo(() => {
455
+ if (experiencesSlot) return experiencesSlot;
456
+ if (!experiences || experiences.length === 0) return null;
457
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: experiencesClassName, children: experiences.map((experience, idx) => /* @__PURE__ */ jsxRuntime.jsxs(React3__namespace.Fragment, { children: [
458
+ /* @__PURE__ */ jsxRuntime.jsx(Separator, {}),
459
+ /* @__PURE__ */ jsxRuntime.jsxs(
460
+ "div",
461
+ {
462
+ className: cn(
463
+ "my-2.5 grid gap-2.5 text-sm sm:grid-cols-3",
464
+ experienceRowClassName
465
+ ),
466
+ children: [
467
+ experience.year && (typeof experience.year === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: experience.year }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: experience.year })),
468
+ experience.role && (typeof experience.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: experience.role }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: experience.role })),
469
+ experience.company && (typeof experience.company === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: experience.company }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: experience.company }))
470
+ ]
471
+ }
472
+ )
473
+ ] }, idx)) });
474
+ }, [experiencesSlot, experiences, experiencesClassName, experienceRowClassName]);
475
+ const renderAwards = React3.useMemo(() => {
476
+ if (awardsSlot) return awardsSlot;
477
+ if (!awards || awards.length === 0) return null;
478
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: awardsClassName, children: awards.map((award, idx) => /* @__PURE__ */ jsxRuntime.jsxs(React3__namespace.Fragment, { children: [
479
+ /* @__PURE__ */ jsxRuntime.jsx(Separator, {}),
480
+ /* @__PURE__ */ jsxRuntime.jsxs(
481
+ "div",
482
+ {
483
+ className: cn(
484
+ "my-2.5 grid gap-2.5 text-sm sm:grid-cols-3",
485
+ awardRowClassName
486
+ ),
487
+ children: [
488
+ award.year && (typeof award.year === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: award.year }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: award.year })),
489
+ award.title && (typeof award.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: award.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: award.title })),
490
+ award.organization && (typeof award.organization === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: award.organization }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: award.organization }))
491
+ ]
492
+ }
493
+ )
494
+ ] }, idx)) });
495
+ }, [awardsSlot, awards, awardsClassName, awardRowClassName]);
496
+ return /* @__PURE__ */ jsxRuntime.jsx(
497
+ Section,
498
+ {
499
+ background,
500
+ spacing,
501
+ className,
502
+ pattern,
503
+ patternOpacity,
504
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-12", contentClassName), children: [
505
+ (sectionLabel || heading) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5", children: [
506
+ sectionLabel && (typeof sectionLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
507
+ "span",
508
+ {
509
+ className: cn(
510
+ "text-sm text-muted-foreground",
511
+ sectionLabelClassName
512
+ ),
513
+ children: sectionLabel
514
+ }
515
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: sectionLabelClassName, children: sectionLabel })),
516
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl md:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-4xl md:text-6xl", headingClassName), children: heading }))
517
+ ] }),
518
+ (experienceLabel || experiencesSlot || experiences) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-7", children: [
519
+ experienceLabel && (typeof experienceLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-xl", experienceLabelClassName), children: experienceLabel }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: experienceLabelClassName, children: experienceLabel })),
520
+ renderExperiences
521
+ ] }),
522
+ (achievementsLabel || awardsSlot || awards) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-7", children: [
523
+ achievementsLabel && (typeof achievementsLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-xl", achievementsLabelClassName), children: achievementsLabel }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: achievementsLabelClassName, children: achievementsLabel })),
524
+ renderAwards
525
+ ] })
526
+ ] })
527
+ }
528
+ );
529
+ }
530
+
531
+ exports.ListCareerTimeline = ListCareerTimeline;
@@ -0,0 +1,153 @@
1
+ import * as React from 'react';
2
+ import { f as SectionBackground, g as SectionSpacing, t as PatternName } from './community-initiatives-Bz_A5vLU.cjs';
3
+ import 'react/jsx-runtime';
4
+ import './blocks-Cohq4eio.cjs';
5
+ import 'class-variance-authority';
6
+ import './button-variants-lRElsmTc.cjs';
7
+ import 'class-variance-authority/types';
8
+
9
+ interface ListExperienceItem {
10
+ /**
11
+ * Time period (e.g., "2019 - PRESENT")
12
+ */
13
+ year?: React.ReactNode;
14
+ /**
15
+ * Job role or position
16
+ */
17
+ role?: React.ReactNode;
18
+ /**
19
+ * Company or organization name
20
+ */
21
+ company?: React.ReactNode;
22
+ }
23
+ interface ListAwardItem {
24
+ /**
25
+ * Year of the award
26
+ */
27
+ year?: React.ReactNode;
28
+ /**
29
+ * Title of the award
30
+ */
31
+ title?: React.ReactNode;
32
+ /**
33
+ * Organization that gave the award
34
+ */
35
+ organization?: React.ReactNode;
36
+ }
37
+ interface ListCareerTimelineProps {
38
+ /**
39
+ * Section label (e.g., "/ CAREER PATH")
40
+ */
41
+ sectionLabel?: React.ReactNode;
42
+ /**
43
+ * Additional CSS classes for the section label
44
+ */
45
+ sectionLabelClassName?: string;
46
+ /**
47
+ * Main heading text (supports line breaks)
48
+ */
49
+ heading?: React.ReactNode;
50
+ /**
51
+ * Additional CSS classes for the heading
52
+ */
53
+ headingClassName?: string;
54
+ /**
55
+ * Experience section label
56
+ */
57
+ experienceLabel?: React.ReactNode;
58
+ /**
59
+ * Additional CSS classes for the experience label
60
+ */
61
+ experienceLabelClassName?: string;
62
+ /**
63
+ * Array of experience items
64
+ */
65
+ experiences?: ListExperienceItem[];
66
+ /**
67
+ * Custom slot for rendering experiences (overrides experiences array)
68
+ */
69
+ experiencesSlot?: React.ReactNode;
70
+ /**
71
+ * Additional CSS classes for the experiences container
72
+ */
73
+ experiencesClassName?: string;
74
+ /**
75
+ * Additional CSS classes for individual experience rows
76
+ */
77
+ experienceRowClassName?: string;
78
+ /**
79
+ * Achievements section label
80
+ */
81
+ achievementsLabel?: React.ReactNode;
82
+ /**
83
+ * Additional CSS classes for the achievements label
84
+ */
85
+ achievementsLabelClassName?: string;
86
+ /**
87
+ * Array of award/achievement items
88
+ */
89
+ awards?: ListAwardItem[];
90
+ /**
91
+ * Custom slot for rendering awards (overrides awards array)
92
+ */
93
+ awardsSlot?: React.ReactNode;
94
+ /**
95
+ * Additional CSS classes for the awards container
96
+ */
97
+ awardsClassName?: string;
98
+ /**
99
+ * Additional CSS classes for individual award rows
100
+ */
101
+ awardRowClassName?: string;
102
+ /**
103
+ * Additional CSS classes for the content wrapper
104
+ */
105
+ contentClassName?: string;
106
+ /**
107
+ * Additional CSS classes for the section wrapper
108
+ */
109
+ className?: string;
110
+ /**
111
+ * Background style for the section
112
+ */
113
+ background?: SectionBackground;
114
+ /**
115
+ * Vertical spacing for the section
116
+ */
117
+ spacing?: SectionSpacing;
118
+ /**
119
+ * Optional background pattern name or URL
120
+ */
121
+ pattern?: PatternName | undefined;
122
+ /**
123
+ * Pattern overlay opacity (0-1)
124
+ */
125
+ patternOpacity?: number;
126
+ }
127
+ /**
128
+ * ListCareerTimeline - A two-section timeline displaying professional experience
129
+ * and achievements/awards. Features a bold heading, experience history with roles
130
+ * and companies, and a comprehensive awards section with organizations.
131
+ *
132
+ * Perfect for portfolio pages, about sections, or resume-style presentations
133
+ * showcasing career progression and professional recognition.
134
+ *
135
+ * @example
136
+ * ```tsx
137
+ * <ListCareerTimeline
138
+ * sectionLabel="/ CAREER PATH"
139
+ * heading={<>BUILDING SOLUTIONS,<br /> SHAPING THE FUTURE</>}
140
+ * experienceLabel="/ EXPERIENCE"
141
+ * experiences={[
142
+ * { year: "2019 - PRESENT", role: "SENIOR SOFTWARE ENGINEER", company: "TECH CORP" }
143
+ * ]}
144
+ * achievementsLabel="/ ACHIEVEMENTS"
145
+ * awards={[
146
+ * { year: "2023", title: "BEST SOFTWARE ENGINEER", organization: "TECH AWARDS" }
147
+ * ]}
148
+ * />
149
+ * ```
150
+ */
151
+ declare function ListCareerTimeline({ sectionLabel, sectionLabelClassName, heading, headingClassName, experienceLabel, experienceLabelClassName, experiences, experiencesSlot, experiencesClassName, experienceRowClassName, achievementsLabel, achievementsLabelClassName, awards, awardsSlot, awardsClassName, awardRowClassName, contentClassName, className, background, spacing, pattern, patternOpacity, }: ListCareerTimelineProps): React.JSX.Element;
152
+
153
+ export { ListCareerTimeline, type ListCareerTimelineProps };