@dmitriikapustin/ui 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -40,6 +40,12 @@ var __objRest = (source, exclude) => {
40
40
  }
41
41
  return target;
42
42
  };
43
+
44
+ // src/atoms/Spinner.module.scss
45
+ var Spinner_module_default = {
46
+ root: "Spinner_module_root",
47
+ fallback: "Spinner_module_fallback"
48
+ };
43
49
  var sizeMap = {
44
50
  sm: 32,
45
51
  md: 48,
@@ -47,7 +53,7 @@ var sizeMap = {
47
53
  };
48
54
  var cachedData = null;
49
55
  function Spinner({ size = "md", className = "" }) {
50
- const s = sizeMap[size];
56
+ const px = sizeMap[size];
51
57
  const [data, setData] = react.useState(() => cachedData);
52
58
  react.useEffect(() => {
53
59
  if (data) return;
@@ -66,8 +72,8 @@ function Spinner({ size = "md", className = "" }) {
66
72
  return /* @__PURE__ */ jsxRuntime.jsx(
67
73
  "div",
68
74
  {
69
- className: `inline-flex items-center justify-center ${className}`,
70
- style: { width: s, height: s },
75
+ className: `${Spinner_module_default.root} ${className}`,
76
+ style: { width: px, height: px },
71
77
  "aria-label": "Loading",
72
78
  children: data ? /* @__PURE__ */ jsxRuntime.jsx(
73
79
  Lottie__default.default,
@@ -75,27 +81,29 @@ function Spinner({ size = "md", className = "" }) {
75
81
  animationData: data,
76
82
  loop: true,
77
83
  autoplay: true,
78
- style: { width: s, height: s }
84
+ style: { width: px, height: px }
79
85
  }
80
86
  ) : /* @__PURE__ */ jsxRuntime.jsx(
81
87
  "div",
82
88
  {
83
- className: "rounded-full border-2 border-[var(--border-color)] border-t-[var(--fg)] animate-spin",
84
- style: { width: s * 0.7, height: s * 0.7 }
89
+ className: Spinner_module_default.fallback,
90
+ style: { width: px * 0.7, height: px * 0.7 }
85
91
  }
86
92
  )
87
93
  }
88
94
  );
89
95
  }
90
- var variantStyles = {
91
- primary: "bg-[var(--fg)] text-[var(--bg)] border border-[var(--bg)] hover:opacity-90 active:opacity-80 shadow-[var(--shadow-sm)]",
92
- secondary: "bg-[var(--bg-tertiary)] text-[var(--fg)] hover:bg-[var(--border-color)] active:bg-[var(--border-color-strong)]",
93
- outline: "border border-[var(--fg-secondary)] text-[var(--fg-secondary)] hover:bg-[var(--bg-tertiary)] active:bg-[var(--border-color)]",
94
- ghost: "text-[var(--fg-secondary)] hover:text-[var(--fg)] hover:bg-[var(--bg-tertiary)] active:bg-[var(--border-color)]"
95
- };
96
- var sizeStyles = {
97
- sm: "text-[13px] px-4 py-2 gap-1.5 rounded-full tracking-[-0.25px]",
98
- md: "text-[13px] px-4 py-2 gap-2 rounded-full tracking-[-0.25px]"
96
+
97
+ // src/atoms/Button.module.scss
98
+ var Button_module_default = {
99
+ root: "Button_module_root",
100
+ primary: "Button_module_primary",
101
+ secondary: "Button_module_secondary",
102
+ outline: "Button_module_outline",
103
+ ghost: "Button_module_ghost",
104
+ sm: "Button_module_sm",
105
+ md: "Button_module_md",
106
+ disabled: "Button_module_disabled"
99
107
  };
100
108
  function Button(_a) {
101
109
  var _b = _a, {
@@ -120,7 +128,7 @@ function Button(_a) {
120
128
  return /* @__PURE__ */ jsxRuntime.jsxs(
121
129
  "button",
122
130
  __spreadProps(__spreadValues({
123
- className: `inline-flex items-center justify-center font-medium transition-all duration-[var(--transition-fast)] cursor-pointer select-none whitespace-nowrap ${variantStyles[variant]} ${sizeStyles[size]} ${disabled || loading ? "opacity-50 cursor-not-allowed pointer-events-none" : ""} ${className}`,
131
+ className: `${Button_module_default.root} ${Button_module_default[variant]} ${Button_module_default[size]}${disabled || loading ? ` ${Button_module_default.disabled}` : ""}${className ? ` ${className}` : ""}`,
124
132
  disabled: disabled || loading
125
133
  }, props), {
126
134
  children: [
@@ -131,6 +139,20 @@ function Button(_a) {
131
139
  })
132
140
  );
133
141
  }
142
+
143
+ // src/atoms/Input.module.scss
144
+ var Input_module_default = {
145
+ wrapper: "Input_module_wrapper",
146
+ label: "Input_module_label",
147
+ inputWrap: "Input_module_inputWrap",
148
+ input: "Input_module_input",
149
+ hasIconLeft: "Input_module_hasIconLeft",
150
+ hasIconRight: "Input_module_hasIconRight",
151
+ iconLeft: "Input_module_iconLeft",
152
+ iconRight: "Input_module_iconRight",
153
+ error: "Input_module_error",
154
+ errorText: "Input_module_errorText"
155
+ };
134
156
  function Input(_a) {
135
157
  var _b = _a, {
136
158
  label,
@@ -148,41 +170,37 @@ function Input(_a) {
148
170
  "id"
149
171
  ]);
150
172
  const inputId = id || (label == null ? void 0 : label.toLowerCase().replace(/\s+/g, "-"));
151
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
152
- label && /* @__PURE__ */ jsxRuntime.jsx(
153
- "label",
154
- {
155
- htmlFor: inputId,
156
- className: "text-[13px] font-medium text-[var(--fg)] tracking-[-0.25px]",
157
- children: label
158
- }
159
- ),
160
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
161
- icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-3.5 top-1/2 -translate-y-1/2 text-[var(--fg-muted)]", children: icon }),
173
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Input_module_default.wrapper, children: [
174
+ label && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: inputId, className: Input_module_default.label, children: label }),
175
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Input_module_default.inputWrap, children: [
176
+ icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Input_module_default.iconLeft, children: icon }),
162
177
  /* @__PURE__ */ jsxRuntime.jsx(
163
178
  "input",
164
179
  __spreadValues({
165
180
  id: inputId,
166
- className: `w-full border border-[var(--fg-muted)] bg-[var(--bg)] px-[15px] py-3 text-[13px] tracking-[-0.25px] text-[var(--fg-secondary)] placeholder:text-[var(--fg-muted)] transition-all duration-[var(--transition-fast)] focus:outline-none focus:border-[var(--fg)] rounded-full ${icon ? "pl-10" : ""} ${iconRight ? "pr-10" : ""} ${error ? "border-[var(--color-error)] focus:border-[var(--color-error)]" : ""} ${className}`
181
+ className: `${Input_module_default.input}${icon ? ` ${Input_module_default.hasIconLeft}` : ""}${iconRight ? ` ${Input_module_default.hasIconRight}` : ""}${error ? ` ${Input_module_default.error}` : ""}${className ? ` ${className}` : ""}`
167
182
  }, props)
168
183
  ),
169
- iconRight && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-3.5 top-1/2 -translate-y-1/2 text-[var(--fg-muted)]", children: iconRight })
184
+ iconRight && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Input_module_default.iconRight, children: iconRight })
170
185
  ] }),
171
- error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] tracking-[-0.25px] text-[var(--color-error)]", children: error })
186
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: Input_module_default.errorText, children: error })
172
187
  ] });
173
188
  }
174
- var colorStyles = {
175
- default: "bg-[var(--bg-tertiary)] text-[var(--fg)]",
176
- success: "bg-[var(--bg-tertiary)] text-[var(--color-success)]",
177
- warning: "bg-[var(--bg-tertiary)] text-[var(--color-warning)]",
178
- error: "bg-[var(--bg-tertiary)] text-[var(--color-error)]",
179
- info: "bg-[var(--bg-tertiary)] text-[var(--color-info)]"
189
+
190
+ // src/atoms/Badge.module.scss
191
+ var Badge_module_default = {
192
+ root: "Badge_module_root",
193
+ default: "Badge_module_default",
194
+ success: "Badge_module_success",
195
+ warning: "Badge_module_warning",
196
+ error: "Badge_module_error",
197
+ info: "Badge_module_info"
180
198
  };
181
199
  function Badge({ color = "default", children, className = "" }) {
182
200
  return /* @__PURE__ */ jsxRuntime.jsx(
183
201
  "span",
184
202
  {
185
- className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-[13px] font-semibold tracking-[-0.25px] ${colorStyles[color]} ${className}`,
203
+ className: `${Badge_module_default.root} ${Badge_module_default[color]}${className ? ` ${className}` : ""}`,
186
204
  children
187
205
  }
188
206
  );
@@ -220,71 +238,108 @@ var IconlyEye = IconlyActivity;
220
238
  var IconlyEyeOff = IconlyActivity;
221
239
  var IconlyChevronRight = IconlyActivity;
222
240
  var IconlyChevronLeft = IconlyActivity;
223
- var colorStyles2 = {
224
- default: "bg-[var(--bg-tertiary)] text-[var(--fg-secondary)] border-[var(--border-color)]",
225
- primary: "bg-[var(--bg-tertiary)] text-[var(--fg)] border-[var(--border-color-strong)]",
226
- success: "bg-[var(--bg-tertiary)] text-[var(--color-success)] border-[var(--border-color)]",
227
- warning: "bg-[var(--bg-tertiary)] text-[var(--color-warning)] border-[var(--border-color)]",
228
- error: "bg-[var(--bg-tertiary)] text-[var(--color-error)] border-[var(--border-color)]"
241
+
242
+ // src/atoms/Tag.module.scss
243
+ var Tag_module_default = {
244
+ root: "Tag_module_root",
245
+ default: "Tag_module_default",
246
+ primary: "Tag_module_primary",
247
+ success: "Tag_module_success",
248
+ warning: "Tag_module_warning",
249
+ error: "Tag_module_error",
250
+ closeBtn: "Tag_module_closeBtn"
229
251
  };
230
252
  function Tag({ color = "default", closable = false, onClose, children, className = "" }) {
253
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `${Tag_module_default.root} ${Tag_module_default[color]} ${className}`, children: [
254
+ children,
255
+ closable && /* @__PURE__ */ jsxRuntime.jsx(
256
+ "button",
257
+ {
258
+ onClick: onClose,
259
+ className: Tag_module_default.closeBtn,
260
+ "aria-label": "Remove tag",
261
+ children: /* @__PURE__ */ jsxRuntime.jsx(IconlyClose, { size: 12 })
262
+ }
263
+ )
264
+ ] });
265
+ }
266
+
267
+ // src/atoms/Toggle.module.scss
268
+ var Toggle_module_default = {
269
+ root: "Toggle_module_root",
270
+ track: "Toggle_module_track",
271
+ trackOn: "Toggle_module_trackOn",
272
+ trackOff: "Toggle_module_trackOff",
273
+ knob: "Toggle_module_knob",
274
+ knobOn: "Toggle_module_knobOn",
275
+ knobOff: "Toggle_module_knobOff",
276
+ label: "Toggle_module_label",
277
+ disabled: "Toggle_module_disabled"
278
+ };
279
+ function Toggle({
280
+ checked = false,
281
+ onChange,
282
+ label,
283
+ disabled = false,
284
+ className = ""
285
+ }) {
231
286
  return /* @__PURE__ */ jsxRuntime.jsxs(
232
- "span",
287
+ "label",
233
288
  {
234
- className: `inline-flex items-center gap-1.5 px-3 py-1 rounded-full text-[13px] font-medium tracking-[-0.25px] border ${colorStyles2[color]} ${className}`,
289
+ className: `${Toggle_module_default.root}${disabled ? ` ${Toggle_module_default.disabled}` : ""}${className ? ` ${className}` : ""}`,
235
290
  children: [
236
- children,
237
- closable && /* @__PURE__ */ jsxRuntime.jsx(
291
+ /* @__PURE__ */ jsxRuntime.jsx(
238
292
  "button",
239
293
  {
240
- onClick: onClose,
241
- className: "hover:opacity-70 transition-opacity cursor-pointer",
242
- "aria-label": "Remove tag",
243
- children: /* @__PURE__ */ jsxRuntime.jsx(IconlyClose, { size: 12 })
294
+ role: "switch",
295
+ type: "button",
296
+ "aria-checked": checked,
297
+ disabled,
298
+ onClick: () => onChange == null ? void 0 : onChange(!checked),
299
+ className: `${Toggle_module_default.track} ${checked ? Toggle_module_default.trackOn : Toggle_module_default.trackOff}${disabled ? ` ${Toggle_module_default.disabled}` : ""}`,
300
+ children: /* @__PURE__ */ jsxRuntime.jsx(
301
+ "span",
302
+ {
303
+ className: `${Toggle_module_default.knob} ${checked ? Toggle_module_default.knobOn : Toggle_module_default.knobOff}`
304
+ }
305
+ )
244
306
  }
245
- )
307
+ ),
308
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Toggle_module_default.label, children: label })
246
309
  ]
247
310
  }
248
311
  );
249
312
  }
250
- function Toggle({ checked = false, onChange, label, disabled = false, className = "" }) {
251
- return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `inline-flex items-center gap-2.5 ${disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"} ${className}`, children: [
252
- /* @__PURE__ */ jsxRuntime.jsx(
253
- "button",
254
- {
255
- role: "switch",
256
- type: "button",
257
- "aria-checked": checked,
258
- disabled,
259
- onClick: () => onChange == null ? void 0 : onChange(!checked),
260
- className: `relative inline-flex h-6 w-11 shrink-0 items-center rounded-full px-0.5 transition-colors duration-200 ease-in-out focus:outline-none cursor-pointer ${checked ? "bg-[var(--color-accent)] justify-end" : "bg-[var(--border-color)]"} ${disabled ? "cursor-not-allowed" : ""}`,
261
- children: /* @__PURE__ */ jsxRuntime.jsx(
262
- "span",
263
- {
264
- className: "pointer-events-none inline-block h-5 w-5 rounded-full bg-white transition-transform duration-200 ease-in-out"
265
- }
266
- )
267
- }
268
- ),
269
- label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] font-medium text-[var(--fg)] tracking-[-0.25px]", children: label })
270
- ] });
271
- }
272
- var sizeMap2 = {
273
- sm: { container: "w-8 h-8", text: "text-xs" },
274
- md: { container: "w-10 h-10", text: "text-sm" },
275
- lg: { container: "w-12 h-12", text: "text-base" },
276
- xl: { container: "w-16 h-16", text: "text-lg" }
313
+
314
+ // src/atoms/Avatar.module.scss
315
+ var Avatar_module_default = {
316
+ root: "Avatar_module_root",
317
+ initials: "Avatar_module_initials",
318
+ initialsText: "Avatar_module_initialsText",
319
+ sm: "Avatar_module_sm",
320
+ md: "Avatar_module_md",
321
+ lg: "Avatar_module_lg",
322
+ xl: "Avatar_module_xl",
323
+ textSm: "Avatar_module_textSm",
324
+ textMd: "Avatar_module_textMd",
325
+ textLg: "Avatar_module_textLg",
326
+ textXl: "Avatar_module_textXl"
327
+ };
328
+ var textSizeMap = {
329
+ sm: Avatar_module_default.textSm,
330
+ md: Avatar_module_default.textMd,
331
+ lg: Avatar_module_default.textLg,
332
+ xl: Avatar_module_default.textXl
277
333
  };
278
334
  function Avatar(_a) {
279
335
  var _b = _a, { src, alt = "", initials, size = "md", className = "" } = _b, props = __objRest(_b, ["src", "alt", "initials", "size", "className"]);
280
- const s = sizeMap2[size];
281
336
  if (!src && initials) {
282
337
  return /* @__PURE__ */ jsxRuntime.jsx(
283
338
  "div",
284
339
  {
285
- className: `${s.container} rounded-full bg-[var(--bg-tertiary)] border border-[var(--border-color)] flex items-center justify-center ${className}`,
340
+ className: `${Avatar_module_default.initials} ${Avatar_module_default[size]}${className ? ` ${className}` : ""}`,
286
341
  "aria-label": alt || initials,
287
- children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${s.text} font-medium text-[var(--fg-secondary)] select-none`, children: initials })
342
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${Avatar_module_default.initialsText} ${textSizeMap[size]}`, children: initials })
288
343
  }
289
344
  );
290
345
  }
@@ -296,37 +351,55 @@ function Avatar(_a) {
296
351
  __spreadValues({
297
352
  src: imgSrc,
298
353
  alt,
299
- className: `${s.container} rounded-full object-cover ${className}`
354
+ className: `${Avatar_module_default.root} ${Avatar_module_default[size]}${className ? ` ${className}` : ""}`
300
355
  }, props)
301
356
  )
302
357
  );
303
358
  }
359
+
360
+ // src/atoms/Divider.module.scss
361
+ var Divider_module_default = {
362
+ root: "Divider_module_root",
363
+ withLabel: "Divider_module_withLabel",
364
+ line: "Divider_module_line",
365
+ label: "Divider_module_label"
366
+ };
304
367
  function Divider({ className = "", label }) {
305
368
  if (label) {
306
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-center gap-4 ${className}`, children: [
307
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 h-px bg-[var(--border-color)]" }),
308
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-[var(--fg-muted)] uppercase tracking-wider", children: label }),
309
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 h-px bg-[var(--border-color)]" })
369
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${Divider_module_default.withLabel}${className ? ` ${className}` : ""}`, children: [
370
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: Divider_module_default.line }),
371
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: Divider_module_default.label, children: label }),
372
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: Divider_module_default.line })
310
373
  ] });
311
374
  }
312
- return /* @__PURE__ */ jsxRuntime.jsx("hr", { className: `border-none h-px bg-[var(--border-color)] ${className}` });
375
+ return /* @__PURE__ */ jsxRuntime.jsx("hr", { className: `${Divider_module_default.root}${className ? ` ${className}` : ""}` });
313
376
  }
377
+
378
+ // src/atoms/MenuItem.module.scss
379
+ var MenuItem_module_default = {
380
+ root: "MenuItem_module_root",
381
+ active: "MenuItem_module_active"
382
+ };
314
383
  function MenuItem({ text, active = false, onClick, className = "" }) {
315
384
  return /* @__PURE__ */ jsxRuntime.jsx(
316
385
  "button",
317
386
  {
318
387
  onClick,
319
- className: `inline-flex items-center px-[4px] py-[2px] text-[13px] font-medium tracking-[-0.25px] cursor-pointer border-none text-left whitespace-nowrap transition-colors duration-150 ${active ? "bg-[var(--bg-secondary)] text-[var(--fg)]" : "bg-transparent text-[var(--fg-muted)] hover:text-[var(--fg-secondary)]"} ${className}`,
388
+ className: `${MenuItem_module_default.root}${active ? ` ${MenuItem_module_default.active}` : ""}${className ? ` ${className}` : ""}`,
320
389
  children: text
321
390
  }
322
391
  );
323
392
  }
324
- var variantStyles2 = {
325
- primary: "bg-[var(--fg)] text-[var(--bg)] border border-[var(--bg)] shadow-[var(--shadow-sm)]",
326
- secondary: "bg-[var(--bg-tertiary)] text-[var(--fg-secondary)]",
327
- clear: "bg-transparent text-[var(--fg-secondary)] shadow-[var(--shadow-sm)]",
328
- disabled: "bg-[var(--bg-tertiary)] text-[var(--fg-muted)] opacity-50 cursor-not-allowed",
329
- contrast: "bg-[var(--border-color)] text-[var(--fg-secondary)]"
393
+
394
+ // src/atoms/IconButton.module.scss
395
+ var IconButton_module_default = {
396
+ root: "IconButton_module_root",
397
+ primary: "IconButton_module_primary",
398
+ secondary: "IconButton_module_secondary",
399
+ clear: "IconButton_module_clear",
400
+ disabled: "IconButton_module_disabled",
401
+ contrast: "IconButton_module_contrast",
402
+ isDisabled: "IconButton_module_isDisabled"
330
403
  };
331
404
  function IconButton(_a) {
332
405
  var _b = _a, { icon, variant = "primary", className = "", disabled } = _b, props = __objRest(_b, ["icon", "variant", "className", "disabled"]);
@@ -334,34 +407,57 @@ function IconButton(_a) {
334
407
  return /* @__PURE__ */ jsxRuntime.jsx(
335
408
  "button",
336
409
  __spreadProps(__spreadValues({
337
- className: `inline-flex items-center justify-center w-9 h-9 rounded-full transition-all duration-[var(--transition-fast)] cursor-pointer shrink-0 ${variantStyles2[variant]} ${isDisabled ? "cursor-not-allowed" : ""} ${className}`,
410
+ className: `${IconButton_module_default.root} ${IconButton_module_default[variant]}${isDisabled ? ` ${IconButton_module_default.isDisabled}` : ""}${className ? ` ${className}` : ""}`,
338
411
  disabled: isDisabled
339
412
  }, props), {
340
413
  children: icon
341
414
  })
342
415
  );
343
416
  }
417
+
418
+ // src/atoms/Logo.module.scss
419
+ var Logo_module_default = {
420
+ short: "Logo_module_short",
421
+ full: "Logo_module_full",
422
+ third: "Logo_module_third",
423
+ thirdText: "Logo_module_thirdText"
424
+ };
344
425
  function Logo({ version = "short", className = "" }) {
345
426
  if (version === "short") {
346
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-[19px] h-5 ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("img", { className: "logo-img", src: "/assets/logos/logo-short.svg", alt: "aiacade.me", width: 19, height: 20 }) });
427
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${Logo_module_default.short}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("img", { className: "logo-img", src: "/assets/logos/logo-short.svg", alt: "aiacade.me", width: 19, height: 20 }) });
347
428
  }
348
429
  if (version === "third") {
349
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-center gap-1.5 ${className}`, children: [
430
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${Logo_module_default.third}${className ? ` ${className}` : ""}`, children: [
350
431
  /* @__PURE__ */ jsxRuntime.jsx("img", { className: "logo-img", src: "/assets/logos/logo-icon.svg", alt: "", width: 20, height: 20 }),
351
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] font-medium text-[var(--fg)] tracking-[-0.25px]", children: "aiacade.me" })
432
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: Logo_module_default.thirdText, children: "aiacade.me" })
352
433
  ] });
353
434
  }
354
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-5 w-[130px] ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("img", { className: "logo-img", src: "/assets/logos/logo-full.svg", alt: "aiacade.me", width: 130, height: 20 }) });
435
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${Logo_module_default.full}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("img", { className: "logo-img", src: "/assets/logos/logo-full.svg", alt: "aiacade.me", width: 130, height: 20 }) });
355
436
  }
437
+
438
+ // src/atoms/StatBadge.module.scss
439
+ var StatBadge_module_default = {
440
+ root: "StatBadge_module_root",
441
+ bracket: "StatBadge_module_bracket"
442
+ };
356
443
  function StatBadge({ value, suffix, showBrackets = false, className = "" }) {
357
- return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `inline-flex items-center text-[13px] font-medium text-[var(--fg-secondary)] tracking-[-0.25px] whitespace-nowrap ${className}`, children: [
358
- showBrackets && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[var(--fg-muted)]", children: "[ " }),
444
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `${StatBadge_module_default.root}${className ? ` ${className}` : ""}`, children: [
445
+ showBrackets && /* @__PURE__ */ jsxRuntime.jsx("span", { className: StatBadge_module_default.bracket, children: "[ " }),
359
446
  value,
360
447
  " ",
361
448
  suffix,
362
- showBrackets && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[var(--fg-muted)]", children: " ]" })
449
+ showBrackets && /* @__PURE__ */ jsxRuntime.jsx("span", { className: StatBadge_module_default.bracket, children: " ]" })
363
450
  ] });
364
451
  }
452
+
453
+ // src/atoms/Textarea.module.scss
454
+ var Textarea_module_default = {
455
+ wrapper: "Textarea_module_wrapper",
456
+ label: "Textarea_module_label",
457
+ textarea: "Textarea_module_textarea",
458
+ error: "Textarea_module_error",
459
+ errorText: "Textarea_module_errorText"
460
+ };
365
461
  function Textarea(_a) {
366
462
  var _b = _a, {
367
463
  label,
@@ -377,26 +473,30 @@ function Textarea(_a) {
377
473
  "rows"
378
474
  ]);
379
475
  const textareaId = id || (label == null ? void 0 : label.toLowerCase().replace(/\s+/g, "-"));
380
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
381
- label && /* @__PURE__ */ jsxRuntime.jsx(
382
- "label",
383
- {
384
- htmlFor: textareaId,
385
- className: "text-[13px] font-medium text-[var(--fg)] tracking-[-0.25px]",
386
- children: label
387
- }
388
- ),
476
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Textarea_module_default.wrapper, children: [
477
+ label && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: textareaId, className: Textarea_module_default.label, children: label }),
389
478
  /* @__PURE__ */ jsxRuntime.jsx(
390
479
  "textarea",
391
480
  __spreadValues({
392
481
  id: textareaId,
393
482
  rows,
394
- className: `w-full border border-[var(--fg-muted)] bg-[var(--bg)] px-[15px] py-3 text-[13px] tracking-[-0.25px] text-[var(--fg-secondary)] placeholder:text-[var(--fg-muted)] transition-all duration-[var(--transition-fast)] focus:outline-none focus:border-[var(--fg)] rounded-[var(--radius-lg)] resize-vertical ${error ? "border-[var(--color-error)] focus:border-[var(--color-error)]" : ""} ${className}`
483
+ className: `${Textarea_module_default.textarea}${error ? ` ${Textarea_module_default.error}` : ""}${className ? ` ${className}` : ""}`
395
484
  }, props)
396
485
  ),
397
- error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] tracking-[-0.25px] text-[var(--color-error)]", children: error })
486
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: Textarea_module_default.errorText, children: error })
398
487
  ] });
399
488
  }
489
+
490
+ // src/atoms/Select.module.scss
491
+ var Select_module_default = {
492
+ wrapper: "Select_module_wrapper",
493
+ label: "Select_module_label",
494
+ selectWrap: "Select_module_selectWrap",
495
+ select: "Select_module_select",
496
+ chevron: "Select_module_chevron",
497
+ error: "Select_module_error",
498
+ errorText: "Select_module_errorText"
499
+ };
400
500
  function Select(_a) {
401
501
  var _b = _a, {
402
502
  label,
@@ -414,21 +514,14 @@ function Select(_a) {
414
514
  "id"
415
515
  ]);
416
516
  const selectId = id || (label == null ? void 0 : label.toLowerCase().replace(/\s+/g, "-"));
417
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
418
- label && /* @__PURE__ */ jsxRuntime.jsx(
419
- "label",
420
- {
421
- htmlFor: selectId,
422
- className: "text-[13px] font-medium text-[var(--fg)] tracking-[-0.25px]",
423
- children: label
424
- }
425
- ),
426
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
517
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Select_module_default.wrapper, children: [
518
+ label && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: selectId, className: Select_module_default.label, children: label }),
519
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Select_module_default.selectWrap, children: [
427
520
  /* @__PURE__ */ jsxRuntime.jsxs(
428
521
  "select",
429
522
  __spreadProps(__spreadValues(__spreadValues({
430
523
  id: selectId,
431
- className: `w-full appearance-none border border-[var(--fg-muted)] bg-[var(--bg)] px-[15px] py-3 pr-10 text-[13px] tracking-[-0.25px] text-[var(--fg-secondary)] transition-all duration-[var(--transition-fast)] focus:outline-none focus:border-[var(--fg)] rounded-full ${error ? "border-[var(--color-error)] focus:border-[var(--color-error)]" : ""} ${className}`
524
+ className: `${Select_module_default.select}${error ? ` ${Select_module_default.error}` : ""}${className ? ` ${className}` : ""}`
432
525
  }, !("value" in props) && { defaultValue: "" }), props), {
433
526
  children: [
434
527
  placeholder && /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", disabled: true, children: placeholder }),
@@ -436,11 +529,22 @@ function Select(_a) {
436
529
  ]
437
530
  })
438
531
  ),
439
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-3.5 top-1/2 -translate-y-1/2 pointer-events-none text-[var(--fg-muted)]", children: /* @__PURE__ */ jsxRuntime.jsx(IconlyChevronDown, { size: 16 }) })
532
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: Select_module_default.chevron, children: /* @__PURE__ */ jsxRuntime.jsx(IconlyChevronDown, { size: 16 }) })
440
533
  ] }),
441
- error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] tracking-[-0.25px] text-[var(--color-error)]", children: error })
534
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: Select_module_default.errorText, children: error })
442
535
  ] });
443
536
  }
537
+
538
+ // src/atoms/Checkbox.module.scss
539
+ var Checkbox_module_default = {
540
+ root: "Checkbox_module_root",
541
+ hiddenInput: "Checkbox_module_hiddenInput",
542
+ box: "Checkbox_module_box",
543
+ checked: "Checkbox_module_checked",
544
+ unchecked: "Checkbox_module_unchecked",
545
+ label: "Checkbox_module_label",
546
+ disabled: "Checkbox_module_disabled"
547
+ };
444
548
  function Checkbox({
445
549
  checked = false,
446
550
  onChange,
@@ -451,7 +555,7 @@ function Checkbox({
451
555
  return /* @__PURE__ */ jsxRuntime.jsxs(
452
556
  "label",
453
557
  {
454
- className: `inline-flex items-center gap-2.5 ${disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"} ${className}`,
558
+ className: `${Checkbox_module_default.root}${disabled ? ` ${Checkbox_module_default.disabled}` : ""}${className ? ` ${className}` : ""}`,
455
559
  children: [
456
560
  /* @__PURE__ */ jsxRuntime.jsx(
457
561
  "input",
@@ -460,13 +564,13 @@ function Checkbox({
460
564
  checked,
461
565
  disabled,
462
566
  onChange: () => onChange == null ? void 0 : onChange(!checked),
463
- className: "absolute opacity-0 w-0 h-0"
567
+ className: Checkbox_module_default.hiddenInput
464
568
  }
465
569
  ),
466
570
  /* @__PURE__ */ jsxRuntime.jsx(
467
571
  "span",
468
572
  {
469
- className: `flex items-center justify-center w-[18px] h-[18px] rounded-[5px] border transition-colors duration-200 shrink-0 ${checked ? "bg-[var(--color-accent)] border-[var(--color-accent)]" : "border-[var(--fg-muted)] bg-transparent"}`,
573
+ className: `${Checkbox_module_default.box} ${checked ? Checkbox_module_default.checked : Checkbox_module_default.unchecked}`,
470
574
  children: checked && /* @__PURE__ */ jsxRuntime.jsx(
471
575
  "svg",
472
576
  {
@@ -489,11 +593,23 @@ function Checkbox({
489
593
  )
490
594
  }
491
595
  ),
492
- label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] font-medium text-[var(--fg)] tracking-[-0.25px]", children: label })
596
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Checkbox_module_default.label, children: label })
493
597
  ]
494
598
  }
495
599
  );
496
600
  }
601
+
602
+ // src/atoms/Radio.module.scss
603
+ var Radio_module_default = {
604
+ root: "Radio_module_root",
605
+ hiddenInput: "Radio_module_hiddenInput",
606
+ circle: "Radio_module_circle",
607
+ checked: "Radio_module_checked",
608
+ unchecked: "Radio_module_unchecked",
609
+ dot: "Radio_module_dot",
610
+ label: "Radio_module_label",
611
+ disabled: "Radio_module_disabled"
612
+ };
497
613
  function Radio({
498
614
  checked = false,
499
615
  onChange,
@@ -506,7 +622,7 @@ function Radio({
506
622
  return /* @__PURE__ */ jsxRuntime.jsxs(
507
623
  "label",
508
624
  {
509
- className: `inline-flex items-center gap-2.5 ${disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"} ${className}`,
625
+ className: `${Radio_module_default.root}${disabled ? ` ${Radio_module_default.disabled}` : ""}${className ? ` ${className}` : ""}`,
510
626
  children: [
511
627
  /* @__PURE__ */ jsxRuntime.jsx(
512
628
  "input",
@@ -517,60 +633,71 @@ function Radio({
517
633
  name,
518
634
  value,
519
635
  onChange: () => onChange == null ? void 0 : onChange(!checked),
520
- className: "absolute opacity-0 w-0 h-0"
636
+ className: Radio_module_default.hiddenInput
521
637
  }
522
638
  ),
523
639
  /* @__PURE__ */ jsxRuntime.jsx(
524
640
  "span",
525
641
  {
526
- className: `flex items-center justify-center w-[18px] h-[18px] rounded-full border transition-colors duration-200 shrink-0 ${checked ? "border-[var(--color-accent)]" : "border-[var(--fg-muted)]"}`,
527
- children: checked && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-[8px] h-[8px] rounded-full bg-[var(--color-accent)]" })
642
+ className: `${Radio_module_default.circle} ${checked ? Radio_module_default.checked : Radio_module_default.unchecked}`,
643
+ children: checked && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Radio_module_default.dot })
528
644
  }
529
645
  ),
530
- label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] font-medium text-[var(--fg)] tracking-[-0.25px]", children: label })
646
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Radio_module_default.label, children: label })
531
647
  ]
532
648
  }
533
649
  );
534
650
  }
535
- var variantStyles3 = {
536
- default: "text-[var(--color-accent)] hover:underline",
537
- muted: "text-[var(--fg-muted)] hover:text-[var(--fg)]",
538
- underline: "text-[var(--fg)] underline underline-offset-2 hover:text-[var(--color-accent)]"
651
+
652
+ // src/atoms/Link.module.scss
653
+ var Link_module_default = {
654
+ root: "Link_module_root",
655
+ default: "Link_module_default",
656
+ muted: "Link_module_muted",
657
+ underline: "Link_module_underline"
539
658
  };
540
659
  function Link(_a) {
541
660
  var _b = _a, { variant = "default", className = "", children } = _b, rest = __objRest(_b, ["variant", "className", "children"]);
542
661
  return /* @__PURE__ */ jsxRuntime.jsx(
543
662
  "a",
544
663
  __spreadProps(__spreadValues({
545
- className: `text-[13px] tracking-[-0.25px] transition-colors duration-[var(--transition-fast)] inline-flex items-center gap-1 ${variantStyles3[variant]} ${className}`
664
+ className: `${Link_module_default.root} ${Link_module_default[variant]}${className ? ` ${className}` : ""}`
546
665
  }, rest), {
547
666
  children
548
667
  })
549
668
  );
550
669
  }
551
- var positionStyles = {
552
- top: "bottom-full left-1/2 -translate-x-1/2 mb-1.5",
553
- bottom: "top-full left-1/2 -translate-x-1/2 mt-1.5",
554
- left: "right-full top-1/2 -translate-y-1/2 mr-1.5",
555
- right: "left-full top-1/2 -translate-y-1/2 ml-1.5"
670
+
671
+ // src/atoms/Tooltip.module.scss
672
+ var Tooltip_module_default = {
673
+ root: "Tooltip_module_root",
674
+ tooltip: "Tooltip_module_tooltip",
675
+ top: "Tooltip_module_top",
676
+ bottom: "Tooltip_module_bottom",
677
+ left: "Tooltip_module_left",
678
+ right: "Tooltip_module_right"
556
679
  };
557
680
  function Tooltip({ content, position = "top", children, className = "" }) {
558
- return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `relative inline-flex group ${className}`, children: [
681
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `${Tooltip_module_default.root} ${className}`, children: [
559
682
  children,
560
683
  /* @__PURE__ */ jsxRuntime.jsx(
561
684
  "span",
562
685
  {
563
686
  role: "tooltip",
564
- className: `absolute invisible group-hover:visible opacity-0 group-hover:opacity-100 transition-opacity bg-[var(--fg)] text-[var(--bg)] text-[11px] px-2 py-1 rounded-md whitespace-nowrap z-50 pointer-events-none ${positionStyles[position]}`,
687
+ className: `${Tooltip_module_default.tooltip} ${Tooltip_module_default[position]}`,
565
688
  children: content
566
689
  }
567
690
  )
568
691
  ] });
569
692
  }
570
- var variantStyles4 = {
571
- line: "h-4 w-full rounded-full",
572
- circle: "rounded-full",
573
- rect: "rounded-[var(--radius-lg)]"
693
+
694
+ // src/atoms/Skeleton.module.scss
695
+ var Skeleton_module_default = {
696
+ pulse: "Skeleton_module_pulse",
697
+ root: "Skeleton_module_root",
698
+ line: "Skeleton_module_line",
699
+ circle: "Skeleton_module_circle",
700
+ rect: "Skeleton_module_rect"
574
701
  };
575
702
  function Skeleton({ variant = "line", width, height, className = "" }) {
576
703
  const style = {};
@@ -583,12 +710,23 @@ function Skeleton({ variant = "line", width, height, className = "" }) {
583
710
  return /* @__PURE__ */ jsxRuntime.jsx(
584
711
  "div",
585
712
  {
586
- className: `animate-pulse bg-[var(--bg-tertiary)] ${variantStyles4[variant]} ${className}`,
713
+ className: `${Skeleton_module_default.root} ${Skeleton_module_default[variant]} ${className}`,
587
714
  style: Object.keys(style).length > 0 ? style : void 0,
588
715
  "aria-hidden": "true"
589
716
  }
590
717
  );
591
718
  }
719
+
720
+ // src/atoms/TicketButton.module.scss
721
+ var TicketButton_module_default = {
722
+ root: "TicketButton_module_root",
723
+ stub: "TicketButton_module_stub",
724
+ body: "TicketButton_module_body",
725
+ bodySvg: "TicketButton_module_bodySvg",
726
+ bodyText: "TicketButton_module_bodyText",
727
+ stubSvg: "TicketButton_module_stubSvg",
728
+ stubIcon: "TicketButton_module_stubIcon"
729
+ };
592
730
  var DefaultIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "9 18 15 12 9 6" }) });
593
731
  function TicketButton(_a) {
594
732
  var _b = _a, {
@@ -611,14 +749,14 @@ function TicketButton(_a) {
611
749
  return /* @__PURE__ */ jsxRuntime.jsxs(
612
750
  "button",
613
751
  __spreadProps(__spreadValues({
614
- className: `group relative inline-flex items-stretch cursor-pointer border-none bg-transparent p-0 select-none ${className}`
752
+ className: `${TicketButton_module_default.root} ${className}`
615
753
  }, props), {
616
754
  children: [
617
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative flex items-center", children: [
755
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: TicketButton_module_default.body, children: [
618
756
  /* @__PURE__ */ jsxRuntime.jsxs(
619
757
  "svg",
620
758
  {
621
- className: "absolute inset-0 w-full h-full",
759
+ className: TicketButton_module_default.bodySvg,
622
760
  viewBox: "0 0 140 56",
623
761
  fill: "none",
624
762
  preserveAspectRatio: "none",
@@ -643,13 +781,13 @@ function TicketButton(_a) {
643
781
  ]
644
782
  }
645
783
  ),
646
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative z-10 px-6 py-4 text-[13px] font-semibold tracking-[-0.25px] whitespace-nowrap", style: { color: fg }, children })
784
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: TicketButton_module_default.bodyText, style: { color: fg }, children })
647
785
  ] }),
648
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative flex items-center transition-transform duration-300 ease-[cubic-bezier(0.34,1.56,0.64,1)] group-hover:translate-x-1.5", children: [
786
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: TicketButton_module_default.stub, children: [
649
787
  /* @__PURE__ */ jsxRuntime.jsxs(
650
788
  "svg",
651
789
  {
652
- className: "absolute inset-0 w-full h-full",
790
+ className: TicketButton_module_default.stubSvg,
653
791
  viewBox: "0 0 56 56",
654
792
  fill: "none",
655
793
  preserveAspectRatio: "none",
@@ -673,36 +811,55 @@ function TicketButton(_a) {
673
811
  ]
674
812
  }
675
813
  ),
676
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative z-10 w-[56px] h-[56px] flex items-center justify-center", style: { color: fg }, children: icon || /* @__PURE__ */ jsxRuntime.jsx(DefaultIcon, {}) })
814
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: TicketButton_module_default.stubIcon, style: { color: fg }, children: icon || /* @__PURE__ */ jsxRuntime.jsx(DefaultIcon, {}) })
677
815
  ] })
678
816
  ]
679
817
  })
680
818
  );
681
819
  }
820
+
821
+ // src/molecules/Card.module.scss
822
+ var Card_module_default = {
823
+ root: "Card_module_root",
824
+ imageWrapper: "Card_module_imageWrapper",
825
+ image: "Card_module_image",
826
+ body: "Card_module_body",
827
+ title: "Card_module_title",
828
+ description: "Card_module_description",
829
+ footer: "Card_module_footer"
830
+ };
682
831
  function Card({ image, title, description, footer, children, className = "" }) {
683
- return /* @__PURE__ */ jsxRuntime.jsxs(
684
- "div",
685
- {
686
- className: `rounded-[var(--radius-xl)] border border-[var(--border-color)] bg-[var(--bg)] overflow-hidden shadow-[var(--shadow-xs)] transition-all duration-[var(--transition-base)] hover:shadow-[var(--shadow-md)] hover:-translate-y-0.5 ${className}`,
687
- children: [
688
- image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: image, alt: title || "", className: "w-full h-full object-cover" }) }),
689
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5", children: [
690
- title && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold text-[var(--fg)] mb-1", children: title }),
691
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-[var(--fg-secondary)] leading-relaxed", children: description }),
692
- children
693
- ] }),
694
- footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-5 py-3 border-t border-[var(--border-color)] bg-[var(--bg-secondary)]", children: footer })
695
- ]
696
- }
697
- );
832
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${Card_module_default.root}${className ? ` ${className}` : ""}`, children: [
833
+ image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: Card_module_default.imageWrapper, children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: image, alt: title || "", className: Card_module_default.image }) }),
834
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Card_module_default.body, children: [
835
+ title && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: Card_module_default.title, children: title }),
836
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: Card_module_default.description, children: description }),
837
+ children
838
+ ] }),
839
+ footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: Card_module_default.footer, children: footer })
840
+ ] });
698
841
  }
842
+
843
+ // src/molecules/FormField.module.scss
844
+ var FormField_module_default = {
845
+ root: "FormField_module_root",
846
+ hint: "FormField_module_hint"
847
+ };
699
848
  function FormField(_a) {
700
849
  var _b = _a, { label, error, hint, icon } = _b, inputProps = __objRest(_b, ["label", "error", "hint", "icon"]);
701
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
850
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: FormField_module_default.root, children: [
702
851
  /* @__PURE__ */ jsxRuntime.jsx(Input, __spreadValues({ label, error, icon }, inputProps)),
703
- hint && !error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[0.8125rem] text-[var(--fg-muted)]", children: hint })
852
+ hint && !error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: FormField_module_default.hint, children: hint })
704
853
  ] });
705
854
  }
855
+
856
+ // src/molecules/SearchBar.module.scss
857
+ var SearchBar_module_default = {
858
+ root: "SearchBar_module_root",
859
+ searchIcon: "SearchBar_module_searchIcon",
860
+ input: "SearchBar_module_input",
861
+ clearBtn: "SearchBar_module_clearBtn"
862
+ };
706
863
  function SearchBar({ placeholder = "Search...", value: controlledValue, onChange, className = "" }) {
707
864
  const [internalValue, setInternalValue] = react.useState("");
708
865
  const value = controlledValue != null ? controlledValue : internalValue;
@@ -710,8 +867,8 @@ function SearchBar({ placeholder = "Search...", value: controlledValue, onChange
710
867
  setInternalValue(val);
711
868
  onChange == null ? void 0 : onChange(val);
712
869
  };
713
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `relative flex items-center ${className}`, children: [
714
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-3 text-[var(--fg-muted)]", children: /* @__PURE__ */ jsxRuntime.jsx(IconlySearch, { size: 18 }) }),
870
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${SearchBar_module_default.root}${className ? ` ${className}` : ""}`, children: [
871
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: SearchBar_module_default.searchIcon, children: /* @__PURE__ */ jsxRuntime.jsx(IconlySearch, { size: 18 }) }),
715
872
  /* @__PURE__ */ jsxRuntime.jsx(
716
873
  "input",
717
874
  {
@@ -720,73 +877,95 @@ function SearchBar({ placeholder = "Search...", value: controlledValue, onChange
720
877
  onChange: (e) => handleChange(e.target.value),
721
878
  placeholder,
722
879
  "aria-label": "Search",
723
- className: "w-full rounded-[var(--radius-lg)] border border-[var(--border-color)] bg-[var(--bg)] pl-10 pr-10 py-2.5 text-sm text-[var(--fg)] placeholder:text-[var(--fg-muted)] transition-all duration-[var(--transition-fast)] focus:outline-none focus:ring-2 focus:ring-[var(--brand-primary)] focus:border-transparent"
880
+ className: SearchBar_module_default.input
724
881
  }
725
882
  ),
726
883
  value && /* @__PURE__ */ jsxRuntime.jsx(
727
884
  "button",
728
885
  {
729
886
  onClick: () => handleChange(""),
730
- className: "absolute right-3 text-[var(--fg-muted)] hover:text-[var(--fg)] transition-colors cursor-pointer",
887
+ className: SearchBar_module_default.clearBtn,
731
888
  "aria-label": "Clear search",
732
889
  children: /* @__PURE__ */ jsxRuntime.jsx(IconlyClose, { size: 16 })
733
890
  }
734
891
  )
735
892
  ] });
736
893
  }
894
+
895
+ // src/molecules/Stat.module.scss
896
+ var Stat_module_default = {
897
+ root: "Stat_module_root",
898
+ valueRow: "Stat_module_valueRow",
899
+ value: "Stat_module_value",
900
+ trend: "Stat_module_trend",
901
+ positive: "Stat_module_positive",
902
+ negative: "Stat_module_negative",
903
+ label: "Stat_module_label"
904
+ };
737
905
  function Stat({ value, label, trend, className = "" }) {
738
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex flex-col gap-1 ${className}`, children: [
739
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-baseline gap-2", children: [
740
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-2xl font-bold text-[var(--fg)]", children: value }),
741
- trend && /* @__PURE__ */ jsxRuntime.jsxs(
742
- "span",
743
- {
744
- className: `text-sm font-medium ${trend.positive ? "text-[var(--color-success)]" : "text-[var(--color-error)]"}`,
745
- children: [
746
- trend.positive ? "\u2191" : "\u2193",
747
- " ",
748
- trend.value
749
- ]
750
- }
751
- )
906
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${Stat_module_default.root}${className ? ` ${className}` : ""}`, children: [
907
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Stat_module_default.valueRow, children: [
908
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: Stat_module_default.value, children: value }),
909
+ trend && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `${Stat_module_default.trend} ${trend.positive ? Stat_module_default.positive : Stat_module_default.negative}`, children: [
910
+ trend.positive ? "\u2191" : "\u2193",
911
+ " ",
912
+ trend.value
913
+ ] })
752
914
  ] }),
753
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-[var(--fg-muted)]", children: label })
915
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: Stat_module_default.label, children: label })
754
916
  ] });
755
917
  }
756
- var variantConfig = {
757
- info: { accentColor: "text-[var(--color-info)]", Icon: IconlyInfoCircle },
758
- success: { accentColor: "text-[var(--color-success)]", Icon: IconlySuccess },
759
- warning: { accentColor: "text-[var(--color-warning)]", Icon: IconlyWarning },
760
- error: { accentColor: "text-[var(--color-error)]", Icon: IconlyError }
918
+
919
+ // src/molecules/Alert.module.scss
920
+ var Alert_module_default = {
921
+ root: "Alert_module_root",
922
+ icon: "Alert_module_icon",
923
+ info: "Alert_module_info",
924
+ success: "Alert_module_success",
925
+ warning: "Alert_module_warning",
926
+ error: "Alert_module_error",
927
+ content: "Alert_module_content",
928
+ title: "Alert_module_title",
929
+ message: "Alert_module_message",
930
+ dismiss: "Alert_module_dismiss"
931
+ };
932
+ var variantIcons = {
933
+ info: IconlyInfoCircle,
934
+ success: IconlySuccess,
935
+ warning: IconlyWarning,
936
+ error: IconlyError
761
937
  };
762
938
  function Alert({ variant = "info", title, children, closable = false, className = "" }) {
763
939
  const [visible, setVisible] = react.useState(true);
764
940
  if (!visible) return null;
765
- const config = variantConfig[variant];
766
- const { Icon } = config;
767
- return /* @__PURE__ */ jsxRuntime.jsxs(
768
- "div",
769
- {
770
- className: `flex gap-3 p-4 rounded-[var(--radius-lg)] border border-[var(--border-color)] bg-[var(--bg-secondary)] ${className}`,
771
- children: [
772
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `shrink-0 mt-0.5 ${config.accentColor}`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: 20 }) }),
773
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
774
- title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-[13px] font-medium tracking-[-0.25px] mb-0.5 ${config.accentColor}`, children: title }),
775
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] tracking-[-0.25px] text-[var(--fg-secondary)]", children })
776
- ] }),
777
- closable && /* @__PURE__ */ jsxRuntime.jsx(
778
- "button",
779
- {
780
- onClick: () => setVisible(false),
781
- className: "shrink-0 text-[var(--fg-muted)] hover:text-[var(--fg)] transition-all duration-[var(--transition-fast)] cursor-pointer",
782
- "aria-label": "Dismiss",
783
- children: /* @__PURE__ */ jsxRuntime.jsx(IconlyClose, { size: 16 })
784
- }
785
- )
786
- ]
787
- }
788
- );
941
+ const Icon = variantIcons[variant];
942
+ const variantClass = Alert_module_default[variant];
943
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${Alert_module_default.root}${className ? ` ${className}` : ""}`, children: [
944
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${Alert_module_default.icon} ${variantClass}`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: 20 }) }),
945
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Alert_module_default.content, children: [
946
+ title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `${Alert_module_default.title} ${variantClass}`, children: title }),
947
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: Alert_module_default.message, children })
948
+ ] }),
949
+ closable && /* @__PURE__ */ jsxRuntime.jsx(
950
+ "button",
951
+ {
952
+ onClick: () => setVisible(false),
953
+ className: Alert_module_default.dismiss,
954
+ "aria-label": "Dismiss",
955
+ children: /* @__PURE__ */ jsxRuntime.jsx(IconlyClose, { size: 16 })
956
+ }
957
+ )
958
+ ] });
789
959
  }
960
+
961
+ // src/molecules/Tabs.module.scss
962
+ var Tabs_module_default = {
963
+ tabList: "Tabs_module_tabList",
964
+ tab: "Tabs_module_tab",
965
+ active: "Tabs_module_active",
966
+ indicator: "Tabs_module_indicator",
967
+ panel: "Tabs_module_panel"
968
+ };
790
969
  function Tabs({ tabs, defaultTab, onChange, className = "" }) {
791
970
  var _a, _b;
792
971
  const [activeTab, setActiveTab] = react.useState(defaultTab || ((_a = tabs[0]) == null ? void 0 : _a.id));
@@ -817,7 +996,7 @@ function Tabs({ tabs, defaultTab, onChange, className = "" }) {
817
996
  "div",
818
997
  {
819
998
  role: "tablist",
820
- className: "flex border-b border-[var(--border-color)]",
999
+ className: Tabs_module_default.tabList,
821
1000
  onKeyDown: handleKeyDown,
822
1001
  children: tabs.map((tab, index) => /* @__PURE__ */ jsxRuntime.jsxs(
823
1002
  "button",
@@ -831,10 +1010,10 @@ function Tabs({ tabs, defaultTab, onChange, className = "" }) {
831
1010
  "aria-controls": `panel-${tab.id}`,
832
1011
  tabIndex: activeTab === tab.id ? 0 : -1,
833
1012
  onClick: () => activateTab(tab.id),
834
- className: `px-4 py-2.5 text-sm font-medium transition-colors cursor-pointer relative ${activeTab === tab.id ? "text-[var(--brand-primary)]" : "text-[var(--fg-muted)] hover:text-[var(--fg)]"}`,
1013
+ className: `${Tabs_module_default.tab} ${activeTab === tab.id ? Tabs_module_default.active : ""}`,
835
1014
  children: [
836
1015
  tab.label,
837
- activeTab === tab.id && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute bottom-0 left-0 right-0 h-0.5 bg-[var(--brand-primary)] rounded-full" })
1016
+ activeTab === tab.id && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Tabs_module_default.indicator })
838
1017
  ]
839
1018
  },
840
1019
  tab.id
@@ -847,12 +1026,24 @@ function Tabs({ tabs, defaultTab, onChange, className = "" }) {
847
1026
  role: "tabpanel",
848
1027
  id: `panel-${activeTab}`,
849
1028
  "aria-labelledby": `tab-${activeTab}`,
850
- className: "pt-4",
1029
+ className: Tabs_module_default.panel,
851
1030
  children: activeContent
852
1031
  }
853
1032
  )
854
1033
  ] });
855
1034
  }
1035
+
1036
+ // src/molecules/ChatInput.module.scss
1037
+ var ChatInput_module_default = {
1038
+ root: "ChatInput_module_root",
1039
+ contrast: "ChatInput_module_contrast",
1040
+ plain: "ChatInput_module_plain",
1041
+ input: "ChatInput_module_input",
1042
+ actions: "ChatInput_module_actions",
1043
+ actionsFull: "ChatInput_module_actionsFull",
1044
+ actionsEasy: "ChatInput_module_actionsEasy",
1045
+ toolGroup: "ChatInput_module_toolGroup"
1046
+ };
856
1047
  function ChatInput({
857
1048
  placeholder = "\u0412\u0432\u0435\u0434\u0438 \u0441\u0432\u043E\u0439 email...",
858
1049
  buttonText = "\u041D\u0430\u0447\u0430\u0442\u044C \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E",
@@ -870,7 +1061,6 @@ function ChatInput({
870
1061
  setValue("");
871
1062
  }
872
1063
  };
873
- const containerStyles = contrast ? "bg-[var(--bg)] border border-[var(--bg-tertiary)] shadow-[var(--shadow-md)] px-[15px] py-[13px]" : "bg-[var(--bg-tertiary)] pl-3.5 pr-3 py-3";
874
1064
  return /* @__PURE__ */ jsxRuntime.jsxs(
875
1065
  "form",
876
1066
  {
@@ -879,7 +1069,7 @@ function ChatInput({
879
1069
  var _a;
880
1070
  return (_a = inputRef.current) == null ? void 0 : _a.focus();
881
1071
  },
882
- className: `rounded-[16px] overflow-hidden flex flex-col gap-4 w-full max-w-[440px] cursor-text ${containerStyles} ${className}`,
1072
+ className: `${ChatInput_module_default.root} ${contrast ? ChatInput_module_default.contrast : ChatInput_module_default.plain}${className ? ` ${className}` : ""}`,
883
1073
  children: [
884
1074
  /* @__PURE__ */ jsxRuntime.jsx(
885
1075
  "input",
@@ -889,11 +1079,11 @@ function ChatInput({
889
1079
  value,
890
1080
  onChange: (e) => setValue(e.target.value),
891
1081
  placeholder,
892
- className: "w-full bg-transparent border-none outline-none text-[13px] tracking-[-0.25px] text-[var(--fg)] placeholder:text-[var(--fg-muted)] font-normal"
1082
+ className: ChatInput_module_default.input
893
1083
  }
894
1084
  ),
895
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-center ${type === "full" ? "justify-between" : "justify-end"}`, children: [
896
- type === "full" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
1085
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${ChatInput_module_default.actions} ${type === "full" ? ChatInput_module_default.actionsFull : ChatInput_module_default.actionsEasy}`, children: [
1086
+ type === "full" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ChatInput_module_default.toolGroup, children: [
897
1087
  /* @__PURE__ */ jsxRuntime.jsx(IconButton, { variant: "secondary", icon: /* @__PURE__ */ jsxRuntime.jsx(IconlySmile, { size: 20 }), type: "button", "aria-label": "Emoji" }),
898
1088
  /* @__PURE__ */ jsxRuntime.jsx(IconButton, { variant: "clear", icon: /* @__PURE__ */ jsxRuntime.jsx(IconlyAttach, { size: 20 }), type: "button", "aria-label": "Attach" }),
899
1089
  /* @__PURE__ */ jsxRuntime.jsx(IconButton, { variant: "clear", icon: /* @__PURE__ */ jsxRuntime.jsx(IconlyInfo, { size: 20 }), type: "button", "aria-label": "Info" })
@@ -904,43 +1094,83 @@ function ChatInput({
904
1094
  }
905
1095
  );
906
1096
  }
1097
+
1098
+ // src/molecules/ChatMessage.module.scss
1099
+ var ChatMessage_module_default = {
1100
+ root: "ChatMessage_module_root",
1101
+ user: "ChatMessage_module_user",
1102
+ ai: "ChatMessage_module_ai",
1103
+ bubble: "ChatMessage_module_bubble",
1104
+ sm: "ChatMessage_module_sm",
1105
+ lg: "ChatMessage_module_lg",
1106
+ bubbleUser: "ChatMessage_module_bubbleUser",
1107
+ bubbleAi: "ChatMessage_module_bubbleAi"
1108
+ };
907
1109
  function ChatMessage({ children, role = "user", size = "sm", className = "" }) {
908
1110
  const isUser = role === "user";
909
- const isLarge = size === "lg";
910
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex ${isUser ? "justify-end" : "justify-start"} ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx(
1111
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${ChatMessage_module_default.root} ${isUser ? ChatMessage_module_default.user : ChatMessage_module_default.ai}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(
911
1112
  "div",
912
1113
  {
913
- className: `text-[13px] tracking-[-0.25px] font-normal px-4 rounded-tl-[16px] rounded-tr-[16px] ${isLarge ? "w-[225px] py-3" : "py-2"} ${isUser ? "bg-[var(--bg-secondary)] text-[var(--fg)] rounded-bl-[16px]" : "bg-[var(--color-accent)] text-[var(--bg)] rounded-br-[16px]"} ${isLarge ? "leading-normal" : "leading-normal"}`,
1114
+ className: `${ChatMessage_module_default.bubble} ${ChatMessage_module_default[size]} ${isUser ? ChatMessage_module_default.bubbleUser : ChatMessage_module_default.bubbleAi}`,
914
1115
  children
915
1116
  }
916
1117
  ) });
917
1118
  }
1119
+
1120
+ // src/molecules/TopPromo.module.scss
1121
+ var TopPromo_module_default = {
1122
+ root: "TopPromo_module_root",
1123
+ text: "TopPromo_module_text"
1124
+ };
918
1125
  function TopPromo({ text, buttonText = "\u0421\u043C\u043E\u0442\u0440\u0435\u0442\u044C", onButtonClick, className = "" }) {
919
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-center gap-2.5 ${className}`, children: [
920
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] tracking-[-0.25px] text-[var(--fg-secondary)]", children: text }),
1126
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${TopPromo_module_default.root}${className ? ` ${className}` : ""}`, children: [
1127
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: TopPromo_module_default.text, children: text }),
921
1128
  /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "primary", size: "sm", onClick: onButtonClick, children: buttonText })
922
1129
  ] });
923
1130
  }
1131
+
1132
+ // src/molecules/ProfileNav.module.scss
1133
+ var ProfileNav_module_default = {
1134
+ root: "ProfileNav_module_root",
1135
+ stats: "ProfileNav_module_stats",
1136
+ statItem: "ProfileNav_module_statItem",
1137
+ statText: "ProfileNav_module_statText",
1138
+ separator: "ProfileNav_module_separator"
1139
+ };
924
1140
  function ProfileNav({ stats, avatarSrc, avatarInitials = "DK", className = "" }) {
925
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-center gap-5 ${className}`, children: [
926
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", children: stats.map((stat, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center text-[13px] font-medium tracking-[-0.25px] whitespace-nowrap", children: [
927
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[var(--fg-secondary)]", children: [
1141
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${ProfileNav_module_default.root}${className ? ` ${className}` : ""}`, children: [
1142
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ProfileNav_module_default.stats, children: stats.map((stat, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: ProfileNav_module_default.statItem, children: [
1143
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: ProfileNav_module_default.statText, children: [
928
1144
  stat.value,
929
1145
  " ",
930
1146
  stat.suffix
931
1147
  ] }),
932
- i < stats.length - 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[var(--fg-muted)]", children: " //" })
1148
+ i < stats.length - 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: ProfileNav_module_default.separator, children: " //" })
933
1149
  ] }, i)) }),
934
1150
  /* @__PURE__ */ jsxRuntime.jsx(Avatar, { size: "sm", src: avatarSrc, initials: avatarInitials })
935
1151
  ] });
936
1152
  }
1153
+
1154
+ // src/molecules/IconWithText.module.scss
1155
+ var IconWithText_module_default = {
1156
+ root: "IconWithText_module_root",
1157
+ icon: "IconWithText_module_icon",
1158
+ text: "IconWithText_module_text"
1159
+ };
937
1160
  function IconWithText({ icon, text, side = "left", className = "" }) {
938
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `inline-flex items-center gap-1.5 py-1 rounded-full ${className}`, children: [
939
- side === "left" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 w-5 h-5 flex items-center justify-center", children: icon }),
940
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] font-medium text-[var(--fg)] tracking-[-0.25px] whitespace-nowrap", children: text }),
941
- side === "right" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 w-5 h-5 flex items-center justify-center", children: icon })
1161
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${IconWithText_module_default.root}${className ? ` ${className}` : ""}`, children: [
1162
+ side === "left" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: IconWithText_module_default.icon, children: icon }),
1163
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: IconWithText_module_default.text, children: text }),
1164
+ side === "right" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: IconWithText_module_default.icon, children: icon })
942
1165
  ] });
943
1166
  }
1167
+
1168
+ // src/molecules/StampCard.module.scss
1169
+ var StampCard_module_default = {
1170
+ root: "StampCard_module_root",
1171
+ plain: "StampCard_module_plain",
1172
+ inner: "StampCard_module_inner"
1173
+ };
944
1174
  function StampCard({
945
1175
  children,
946
1176
  className = "",
@@ -992,9 +1222,9 @@ function StampCard({
992
1222
  };
993
1223
  }, [build, stamp]);
994
1224
  if (!stamp) {
995
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `rounded-[var(--radius-xl)] border border-[var(--border-color)] bg-[var(--bg)] overflow-hidden shadow-[var(--shadow-xs)] ${className}`, children });
1225
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${StampCard_module_default.plain} ${className}`, children });
996
1226
  }
997
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: outerRef, className: `relative ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: { filter: "drop-shadow(0 1px 3px rgba(0,0,0,0.25)) drop-shadow(0 4px 12px rgba(0,0,0,0.20))" }, children: /* @__PURE__ */ jsxRuntime.jsx(
1227
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: outerRef, className: `${StampCard_module_default.root} ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: { filter: "drop-shadow(0 1px 3px rgba(0,0,0,0.25)) drop-shadow(0 4px 12px rgba(0,0,0,0.20))" }, children: /* @__PURE__ */ jsxRuntime.jsx(
998
1228
  "div",
999
1229
  {
1000
1230
  style: {
@@ -1003,10 +1233,15 @@ function StampCard({
1003
1233
  WebkitMaskSize: "100% 100%",
1004
1234
  maskSize: "100% 100%"
1005
1235
  },
1006
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-[var(--bg)]", children })
1236
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: StampCard_module_default.inner, children })
1007
1237
  }
1008
1238
  ) }) });
1009
1239
  }
1240
+
1241
+ // src/molecules/PasswordInput.module.scss
1242
+ var PasswordInput_module_default = {
1243
+ toggle: "PasswordInput_module_toggle"
1244
+ };
1010
1245
  function PasswordInput(_a) {
1011
1246
  var props = __objRest(_a, []);
1012
1247
  const [showPassword, setShowPassword] = react.useState(false);
@@ -1019,7 +1254,7 @@ function PasswordInput(_a) {
1019
1254
  {
1020
1255
  type: "button",
1021
1256
  onClick: () => setShowPassword((prev) => !prev),
1022
- className: "flex items-center justify-center cursor-pointer",
1257
+ className: PasswordInput_module_default.toggle,
1023
1258
  "aria-label": showPassword ? "Hide password" : "Show password",
1024
1259
  tabIndex: -1,
1025
1260
  children: showPassword ? /* @__PURE__ */ jsxRuntime.jsx(IconlyEyeOff, { size: 18 }) : /* @__PURE__ */ jsxRuntime.jsx(IconlyEye, { size: 18 })
@@ -1028,31 +1263,54 @@ function PasswordInput(_a) {
1028
1263
  })
1029
1264
  );
1030
1265
  }
1266
+
1267
+ // src/molecules/Breadcrumbs.module.scss
1268
+ var Breadcrumbs_module_default = {
1269
+ list: "Breadcrumbs_module_list",
1270
+ item: "Breadcrumbs_module_item",
1271
+ separator: "Breadcrumbs_module_separator",
1272
+ active: "Breadcrumbs_module_active",
1273
+ link: "Breadcrumbs_module_link"
1274
+ };
1031
1275
  function Breadcrumbs({
1032
1276
  items,
1033
1277
  separator = /* @__PURE__ */ jsxRuntime.jsx(IconlyChevronRight, { size: 14 })
1034
1278
  }) {
1035
- return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Breadcrumb", children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "flex items-center gap-1.5 text-[13px] tracking-[-0.25px]", children: items.map((item, index) => {
1279
+ return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Breadcrumb", children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: Breadcrumbs_module_default.list, children: items.map((item, index) => {
1036
1280
  var _a;
1037
1281
  const isLast = index === items.length - 1;
1038
- return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-1.5", children: [
1039
- index > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[var(--fg-muted)]", "aria-hidden": "true", children: separator }),
1040
- isLast ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[var(--fg)] font-medium", "aria-current": "page", children: item.label }) : /* @__PURE__ */ jsxRuntime.jsx(
1282
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: Breadcrumbs_module_default.item, children: [
1283
+ index > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Breadcrumbs_module_default.separator, "aria-hidden": "true", children: separator }),
1284
+ isLast ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: Breadcrumbs_module_default.active, "aria-current": "page", children: item.label }) : /* @__PURE__ */ jsxRuntime.jsx(
1041
1285
  "a",
1042
1286
  {
1043
1287
  href: (_a = item.href) != null ? _a : "#",
1044
- className: "text-[var(--fg-muted)] hover:text-[var(--fg)] transition-colors duration-[var(--transition-fast)]",
1288
+ className: Breadcrumbs_module_default.link,
1045
1289
  children: item.label
1046
1290
  }
1047
1291
  )
1048
1292
  ] }, index);
1049
1293
  }) }) });
1050
1294
  }
1051
- var variantConfig2 = {
1052
- info: { accentColor: "text-[var(--color-info)]", Icon: IconlyInfoCircle },
1053
- success: { accentColor: "text-[var(--color-success)]", Icon: IconlySuccess },
1054
- warning: { accentColor: "text-[var(--color-warning)]", Icon: IconlyWarning },
1055
- error: { accentColor: "text-[var(--color-error)]", Icon: IconlyError }
1295
+
1296
+ // src/molecules/Toast.module.scss
1297
+ var Toast_module_default = {
1298
+ root: "Toast_module_root",
1299
+ icon: "Toast_module_icon",
1300
+ info: "Toast_module_info",
1301
+ success: "Toast_module_success",
1302
+ warning: "Toast_module_warning",
1303
+ error: "Toast_module_error",
1304
+ content: "Toast_module_content",
1305
+ title: "Toast_module_title",
1306
+ message: "Toast_module_message",
1307
+ dismiss: "Toast_module_dismiss"
1308
+ };
1309
+ var variantIcons2 = {
1310
+ info: IconlyInfoCircle,
1311
+ success: IconlySuccess,
1312
+ warning: IconlyWarning,
1313
+ error: IconlyError
1056
1314
  };
1057
1315
  function Toast({
1058
1316
  variant = "info",
@@ -1069,25 +1327,25 @@ function Toast({
1069
1327
  return () => clearTimeout(timer);
1070
1328
  }, [visible, duration, onClose]);
1071
1329
  if (!visible) return null;
1072
- const config = variantConfig2[variant];
1073
- const { Icon } = config;
1330
+ const Icon = variantIcons2[variant];
1331
+ const variantClass = Toast_module_default[variant];
1074
1332
  return /* @__PURE__ */ jsxRuntime.jsxs(
1075
1333
  "div",
1076
1334
  {
1077
1335
  role: "alert",
1078
1336
  "aria-live": "assertive",
1079
- className: `fixed bottom-6 right-6 z-50 flex gap-3 p-4 rounded-[var(--radius-lg)] border border-[var(--border-color)] bg-[var(--bg-secondary)] shadow-lg max-w-sm ${className}`,
1337
+ className: `${Toast_module_default.root}${className ? ` ${className}` : ""}`,
1080
1338
  children: [
1081
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `shrink-0 mt-0.5 ${config.accentColor}`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: 20 }) }),
1082
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
1083
- title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-[13px] font-medium tracking-[-0.25px] mb-0.5 ${config.accentColor}`, children: title }),
1084
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] tracking-[-0.25px] text-[var(--fg-secondary)]", children: message })
1339
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${Toast_module_default.icon} ${variantClass}`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: 20 }) }),
1340
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Toast_module_default.content, children: [
1341
+ title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `${Toast_module_default.title} ${variantClass}`, children: title }),
1342
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: Toast_module_default.message, children: message })
1085
1343
  ] }),
1086
1344
  /* @__PURE__ */ jsxRuntime.jsx(
1087
1345
  "button",
1088
1346
  {
1089
1347
  onClick: onClose,
1090
- className: "shrink-0 text-[var(--fg-muted)] hover:text-[var(--fg)] transition-all duration-[var(--transition-fast)] cursor-pointer",
1348
+ className: Toast_module_default.dismiss,
1091
1349
  "aria-label": "Dismiss",
1092
1350
  children: /* @__PURE__ */ jsxRuntime.jsx(IconlyClose, { size: 16 })
1093
1351
  }
@@ -1096,6 +1354,15 @@ function Toast({
1096
1354
  }
1097
1355
  );
1098
1356
  }
1357
+
1358
+ // src/molecules/Pagination.module.scss
1359
+ var Pagination_module_default = {
1360
+ root: "Pagination_module_root",
1361
+ pageBtn: "Pagination_module_pageBtn",
1362
+ activePage: "Pagination_module_activePage",
1363
+ ellipsis: "Pagination_module_ellipsis",
1364
+ nav: "Pagination_module_nav"
1365
+ };
1099
1366
  function getPageRange(current, total, siblings) {
1100
1367
  const range = /* @__PURE__ */ new Set();
1101
1368
  range.add(1);
@@ -1124,32 +1391,24 @@ function Pagination({
1124
1391
  const pages = getPageRange(currentPage, totalPages, siblingCount);
1125
1392
  const isFirst = currentPage === 1;
1126
1393
  const isLast = currentPage === totalPages;
1127
- const buttonBase = "min-w-[36px] h-[36px] flex items-center justify-center text-[13px] tracking-[-0.25px] transition-all duration-[var(--transition-fast)] cursor-pointer";
1128
- return /* @__PURE__ */ jsxRuntime.jsxs("nav", { "aria-label": "Pagination", className: `flex items-center gap-1 ${className}`, children: [
1394
+ return /* @__PURE__ */ jsxRuntime.jsxs("nav", { "aria-label": "Pagination", className: `${Pagination_module_default.root} ${className}`, children: [
1129
1395
  /* @__PURE__ */ jsxRuntime.jsx(
1130
1396
  "button",
1131
1397
  {
1132
1398
  onClick: () => onPageChange(currentPage - 1),
1133
1399
  disabled: isFirst,
1134
1400
  "aria-label": "Previous page",
1135
- className: `${buttonBase} text-[var(--fg-secondary)] hover:text-[var(--fg)] ${isFirst ? "opacity-50 cursor-not-allowed" : ""}`,
1401
+ className: Pagination_module_default.nav,
1136
1402
  children: /* @__PURE__ */ jsxRuntime.jsx(IconlyChevronLeft, { size: 18 })
1137
1403
  }
1138
1404
  ),
1139
1405
  pages.map(
1140
- (page, i) => page === "\u2026" ? /* @__PURE__ */ jsxRuntime.jsx(
1141
- "span",
1142
- {
1143
- className: "min-w-[36px] h-[36px] flex items-center justify-center text-[13px] text-[var(--fg-muted)]",
1144
- children: "\u2026"
1145
- },
1146
- `ellipsis-${i}`
1147
- ) : /* @__PURE__ */ jsxRuntime.jsx(
1406
+ (page, i) => page === "\u2026" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: Pagination_module_default.ellipsis, children: "\u2026" }, `ellipsis-${i}`) : /* @__PURE__ */ jsxRuntime.jsx(
1148
1407
  "button",
1149
1408
  {
1150
1409
  onClick: () => onPageChange(page),
1151
1410
  "aria-current": page === currentPage ? "page" : void 0,
1152
- className: `${buttonBase} rounded-full ${page === currentPage ? "bg-[var(--fg)] text-[var(--bg)] font-medium" : "text-[var(--fg-secondary)] hover:text-[var(--fg)] hover:bg-[var(--bg-secondary)]"}`,
1411
+ className: `${Pagination_module_default.pageBtn} ${page === currentPage ? Pagination_module_default.activePage : ""}`,
1153
1412
  children: page
1154
1413
  },
1155
1414
  page
@@ -1161,12 +1420,22 @@ function Pagination({
1161
1420
  onClick: () => onPageChange(currentPage + 1),
1162
1421
  disabled: isLast,
1163
1422
  "aria-label": "Next page",
1164
- className: `${buttonBase} text-[var(--fg-secondary)] hover:text-[var(--fg)] ${isLast ? "opacity-50 cursor-not-allowed" : ""}`,
1423
+ className: Pagination_module_default.nav,
1165
1424
  children: /* @__PURE__ */ jsxRuntime.jsx(IconlyChevronRight, { size: 18 })
1166
1425
  }
1167
1426
  )
1168
1427
  ] });
1169
1428
  }
1429
+
1430
+ // src/molecules/CodeInput.module.scss
1431
+ var CodeInput_module_default = {
1432
+ root: "CodeInput_module_root",
1433
+ label: "CodeInput_module_label",
1434
+ group: "CodeInput_module_group",
1435
+ digitInput: "CodeInput_module_digitInput",
1436
+ digitError: "CodeInput_module_digitError",
1437
+ errorText: "CodeInput_module_errorText"
1438
+ };
1170
1439
  function CodeInput({
1171
1440
  length,
1172
1441
  value,
@@ -1219,16 +1488,9 @@ function CodeInput({
1219
1488
  [length, onChange, focusInput]
1220
1489
  );
1221
1490
  const inputId = label == null ? void 0 : label.toLowerCase().replace(/\s+/g, "-");
1222
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex flex-col gap-1.5 ${className}`, children: [
1223
- label && /* @__PURE__ */ jsxRuntime.jsx(
1224
- "label",
1225
- {
1226
- htmlFor: inputId,
1227
- className: "text-[13px] font-medium text-[var(--fg)] tracking-[-0.25px]",
1228
- children: label
1229
- }
1230
- ),
1231
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-3", role: "group", "aria-label": label || "Code input", children: Array.from({ length }, (_, i) => /* @__PURE__ */ jsxRuntime.jsx(
1491
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CodeInput_module_default.root} ${className}`, children: [
1492
+ label && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: inputId, className: CodeInput_module_default.label, children: label }),
1493
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: CodeInput_module_default.group, role: "group", "aria-label": label || "Code input", children: Array.from({ length }, (_, i) => /* @__PURE__ */ jsxRuntime.jsx(
1232
1494
  "input",
1233
1495
  {
1234
1496
  id: i === 0 ? inputId : void 0,
@@ -1243,14 +1505,25 @@ function CodeInput({
1243
1505
  onKeyDown: handleKeyDown(i),
1244
1506
  onPaste: handlePaste,
1245
1507
  autoComplete: "one-time-code",
1246
- className: `w-12 h-12 text-center text-lg border bg-[var(--bg)] text-[var(--fg)] rounded-[var(--radius-lg)] transition-all duration-[var(--transition-fast)] focus:outline-none focus:border-[var(--fg)] ${error ? "border-[var(--color-error)] focus:border-[var(--color-error)]" : "border-[var(--fg-muted)]"}`,
1508
+ className: `${CodeInput_module_default.digitInput} ${error ? CodeInput_module_default.digitError : ""}`,
1247
1509
  "aria-label": `Digit ${i + 1}`
1248
1510
  },
1249
1511
  i
1250
1512
  )) }),
1251
- error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] tracking-[-0.25px] text-[var(--color-error)]", children: error })
1513
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: CodeInput_module_default.errorText, children: error })
1252
1514
  ] });
1253
1515
  }
1516
+
1517
+ // src/molecules/Modal.module.scss
1518
+ var Modal_module_default = {
1519
+ dialog: "Modal_module_dialog",
1520
+ content: "Modal_module_content",
1521
+ header: "Modal_module_header",
1522
+ title: "Modal_module_title",
1523
+ closeBtn: "Modal_module_closeBtn",
1524
+ body: "Modal_module_body",
1525
+ footer: "Modal_module_footer"
1526
+ };
1254
1527
  function Modal({
1255
1528
  open,
1256
1529
  onClose,
@@ -1280,27 +1553,39 @@ function Modal({
1280
1553
  ref: dialogRef,
1281
1554
  onClose,
1282
1555
  onClick: handleBackdropClick,
1283
- className: `max-w-lg w-full p-0 rounded-[var(--radius-lg)] shadow-xl bg-[var(--bg)] border border-[var(--border-color)] backdrop:bg-black/50 ${className}`,
1284
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-6", children: [
1285
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between mb-4", children: [
1286
- title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-[var(--fg)] tracking-[-0.25px]", children: title }),
1556
+ className: `${Modal_module_default.dialog}${className ? ` ${className}` : ""}`,
1557
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Modal_module_default.content, children: [
1558
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Modal_module_default.header, children: [
1559
+ title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: Modal_module_default.title, children: title }),
1287
1560
  /* @__PURE__ */ jsxRuntime.jsx(
1288
1561
  "button",
1289
1562
  {
1290
1563
  type: "button",
1291
1564
  onClick: onClose,
1292
- className: "shrink-0 ml-auto text-[var(--fg-muted)] hover:text-[var(--fg)] transition-all duration-[var(--transition-fast)] cursor-pointer",
1565
+ className: Modal_module_default.closeBtn,
1293
1566
  "aria-label": "Close",
1294
1567
  children: /* @__PURE__ */ jsxRuntime.jsx(IconlyClose, { size: 20 })
1295
1568
  }
1296
1569
  )
1297
1570
  ] }),
1298
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[14px] text-[var(--fg-secondary)] leading-relaxed", children }),
1299
- footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-3 justify-end mt-6", children: footer })
1571
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: Modal_module_default.body, children }),
1572
+ footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: Modal_module_default.footer, children: footer })
1300
1573
  ] })
1301
1574
  }
1302
1575
  );
1303
1576
  }
1577
+
1578
+ // src/molecules/DropdownMenu.module.scss
1579
+ var DropdownMenu_module_default = {
1580
+ root: "DropdownMenu_module_root",
1581
+ trigger: "DropdownMenu_module_trigger",
1582
+ menu: "DropdownMenu_module_menu",
1583
+ alignLeft: "DropdownMenu_module_alignLeft",
1584
+ alignRight: "DropdownMenu_module_alignRight",
1585
+ item: "DropdownMenu_module_item",
1586
+ itemIcon: "DropdownMenu_module_itemIcon",
1587
+ divider: "DropdownMenu_module_divider"
1588
+ };
1304
1589
  function DropdownMenu({
1305
1590
  trigger,
1306
1591
  items,
@@ -1368,7 +1653,7 @@ function DropdownMenu({
1368
1653
  openMenu();
1369
1654
  }
1370
1655
  };
1371
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: containerRef, className: `relative inline-block ${className}`, children: [
1656
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: containerRef, className: `${DropdownMenu_module_default.root} ${className}`, children: [
1372
1657
  /* @__PURE__ */ jsxRuntime.jsx(
1373
1658
  "div",
1374
1659
  {
@@ -1377,7 +1662,7 @@ function DropdownMenu({
1377
1662
  tabIndex: 0,
1378
1663
  onClick: () => isOpen ? closeMenu() : openMenu(),
1379
1664
  onKeyDown: handleTriggerKeyDown,
1380
- className: "cursor-pointer inline-flex",
1665
+ className: DropdownMenu_module_default.trigger,
1381
1666
  "aria-haspopup": "true",
1382
1667
  "aria-expanded": isOpen,
1383
1668
  children: trigger
@@ -1388,9 +1673,9 @@ function DropdownMenu({
1388
1673
  {
1389
1674
  role: "menu",
1390
1675
  onKeyDown: handleMenuKeyDown,
1391
- className: `absolute top-full mt-1 z-50 rounded-[var(--radius-lg)] shadow-lg border border-[var(--border-color)] bg-[var(--bg)] min-w-[180px] py-1 ${align === "right" ? "right-0" : "left-0"}`,
1676
+ className: `${DropdownMenu_module_default.menu} ${align === "right" ? DropdownMenu_module_default.alignRight : DropdownMenu_module_default.alignLeft}`,
1392
1677
  children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1393
- item.divider && /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "my-1 border-[var(--border-color)]" }),
1678
+ item.divider && /* @__PURE__ */ jsxRuntime.jsx("hr", { className: DropdownMenu_module_default.divider }),
1394
1679
  /* @__PURE__ */ jsxRuntime.jsxs(
1395
1680
  "button",
1396
1681
  {
@@ -1404,9 +1689,9 @@ function DropdownMenu({
1404
1689
  item.onClick();
1405
1690
  closeMenu();
1406
1691
  },
1407
- className: "flex items-center gap-2 w-full px-3 py-2 text-[13px] tracking-[-0.25px] text-[var(--fg-secondary)] hover:bg-[var(--bg-secondary)] hover:text-[var(--fg)] transition-all duration-[var(--transition-fast)] cursor-pointer text-left",
1692
+ className: DropdownMenu_module_default.item,
1408
1693
  children: [
1409
- item.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-[var(--fg-muted)]", children: item.icon }),
1694
+ item.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: DropdownMenu_module_default.itemIcon, children: item.icon }),
1410
1695
  item.label
1411
1696
  ]
1412
1697
  }
@@ -1416,56 +1701,90 @@ function DropdownMenu({
1416
1701
  )
1417
1702
  ] });
1418
1703
  }
1704
+
1705
+ // src/organisms/Header.module.scss
1706
+ var Header_module_default = {
1707
+ root: "Header_module_root",
1708
+ container: "Header_module_container",
1709
+ bar: "Header_module_bar",
1710
+ leftGroup: "Header_module_leftGroup",
1711
+ logoFallback: "Header_module_logoFallback",
1712
+ logoBrand: "Header_module_logoBrand",
1713
+ desktopNav: "Header_module_desktopNav",
1714
+ navLink: "Header_module_navLink",
1715
+ desktopActions: "Header_module_desktopActions",
1716
+ mobileToggle: "Header_module_mobileToggle",
1717
+ mobileMenu: "Header_module_mobileMenu",
1718
+ mobileNav: "Header_module_mobileNav",
1719
+ mobileActions: "Header_module_mobileActions"
1720
+ };
1419
1721
  function Header({ logo, navItems = [], className = "" }) {
1420
1722
  const [mobileOpen, setMobileOpen] = react.useState(false);
1421
- return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: `border-b border-[var(--border-color)] bg-[var(--bg)]/80 backdrop-blur-md sticky top-0 z-50 ${className}`, children: [
1422
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between h-16", children: [
1423
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-8", children: [
1424
- logo || /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-lg font-bold text-[var(--fg)]", children: [
1425
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[var(--brand-primary)]", children: "K" }),
1723
+ return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: `${Header_module_default.root}${className ? ` ${className}` : ""}`, children: [
1724
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: Header_module_default.container, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Header_module_default.bar, children: [
1725
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Header_module_default.leftGroup, children: [
1726
+ logo || /* @__PURE__ */ jsxRuntime.jsxs("span", { className: Header_module_default.logoFallback, children: [
1727
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: Header_module_default.logoBrand, children: "K" }),
1426
1728
  "apustin"
1427
1729
  ] }),
1428
- /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "hidden md:flex items-center gap-1", children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
1730
+ /* @__PURE__ */ jsxRuntime.jsx("nav", { className: Header_module_default.desktopNav, children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
1429
1731
  "a",
1430
1732
  {
1431
1733
  href: item.href,
1432
- className: "px-3 py-2 text-sm text-[var(--fg-secondary)] hover:text-[var(--fg)] rounded-[var(--radius-md)] hover:bg-[var(--bg-tertiary)] transition-colors",
1734
+ className: Header_module_default.navLink,
1433
1735
  children: item.label
1434
1736
  },
1435
1737
  item.label
1436
1738
  )) })
1437
1739
  ] }),
1438
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden md:flex items-center gap-3", children: [
1740
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Header_module_default.desktopActions, children: [
1439
1741
  /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", children: "Sign in" }),
1440
1742
  /* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", children: "Get started" })
1441
1743
  ] }),
1442
1744
  /* @__PURE__ */ jsxRuntime.jsx(
1443
1745
  "button",
1444
1746
  {
1445
- className: "md:hidden p-2 text-[var(--fg-secondary)] hover:text-[var(--fg)] cursor-pointer",
1747
+ className: Header_module_default.mobileToggle,
1446
1748
  onClick: () => setMobileOpen(!mobileOpen),
1447
1749
  "aria-label": "Toggle menu",
1448
1750
  children: mobileOpen ? /* @__PURE__ */ jsxRuntime.jsx(IconlyClose, { size: 24 }) : /* @__PURE__ */ jsxRuntime.jsx(IconlyMenu, { size: 24 })
1449
1751
  }
1450
1752
  )
1451
1753
  ] }) }),
1452
- mobileOpen && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "md:hidden border-t border-[var(--border-color)] bg-[var(--bg)] px-4 py-4", children: [
1453
- /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "flex flex-col gap-1", children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
1754
+ mobileOpen && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Header_module_default.mobileMenu, children: [
1755
+ /* @__PURE__ */ jsxRuntime.jsx("nav", { className: Header_module_default.mobileNav, children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
1454
1756
  "a",
1455
1757
  {
1456
1758
  href: item.href,
1457
- className: "px-3 py-2 text-sm text-[var(--fg-secondary)] hover:text-[var(--fg)] rounded-[var(--radius-md)] hover:bg-[var(--bg-tertiary)] transition-colors",
1759
+ className: Header_module_default.navLink,
1458
1760
  children: item.label
1459
1761
  },
1460
1762
  item.label
1461
1763
  )) }),
1462
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 mt-4 pt-4 border-t border-[var(--border-color)]", children: [
1764
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Header_module_default.mobileActions, children: [
1463
1765
  /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", children: "Sign in" }),
1464
1766
  /* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", children: "Get started" })
1465
1767
  ] })
1466
1768
  ] })
1467
1769
  ] });
1468
1770
  }
1771
+
1772
+ // src/organisms/Footer.module.scss
1773
+ var Footer_module_default = {
1774
+ root: "Footer_module_root",
1775
+ container: "Footer_module_container",
1776
+ grid: "Footer_module_grid",
1777
+ brand: "Footer_module_brand",
1778
+ brandAccent: "Footer_module_brandAccent",
1779
+ tagline: "Footer_module_tagline",
1780
+ columnTitle: "Footer_module_columnTitle",
1781
+ linkList: "Footer_module_linkList",
1782
+ link: "Footer_module_link",
1783
+ bottom: "Footer_module_bottom",
1784
+ copyright: "Footer_module_copyright",
1785
+ socials: "Footer_module_socials",
1786
+ socialLink: "Footer_module_socialLink"
1787
+ };
1469
1788
  var defaultColumns = [
1470
1789
  {
1471
1790
  title: "Product",
@@ -1496,38 +1815,38 @@ var defaultColumns = [
1496
1815
  }
1497
1816
  ];
1498
1817
  function Footer({ columns = defaultColumns, className = "" }) {
1499
- return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: `border-t border-[var(--border-color)] bg-[var(--bg)] ${className}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12", children: [
1500
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-8", children: [
1818
+ return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: `${Footer_module_default.root}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module_default.container, children: [
1819
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module_default.grid, children: [
1501
1820
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1502
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-lg font-bold text-[var(--fg)]", children: [
1503
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[var(--brand-primary)]", children: "K" }),
1821
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: Footer_module_default.brand, children: [
1822
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: Footer_module_default.brandAccent, children: "K" }),
1504
1823
  "apustin"
1505
1824
  ] }),
1506
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-[13px] text-[var(--fg-muted)] leading-relaxed tracking-[-0.25px]", children: "A modern design system for building beautiful interfaces." })
1825
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: Footer_module_default.tagline, children: "A modern design system for building beautiful interfaces." })
1507
1826
  ] }),
1508
1827
  columns.map((col) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1509
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-[13px] font-semibold text-[var(--fg-secondary)] mb-3 tracking-[-0.25px]", children: col.title }),
1510
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-2.5", children: col.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1828
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: Footer_module_default.columnTitle, children: col.title }),
1829
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: Footer_module_default.linkList, children: col.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1511
1830
  "a",
1512
1831
  {
1513
1832
  href: link.href,
1514
- className: "text-[13px] text-[var(--fg-muted)] hover:text-[var(--fg)] transition-colors duration-[var(--transition-fast)] tracking-[-0.25px]",
1833
+ className: Footer_module_default.link,
1515
1834
  children: link.label
1516
1835
  }
1517
1836
  ) }, link.label)) })
1518
1837
  ] }, col.title))
1519
1838
  ] }),
1520
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-12 pt-8 border-t border-[var(--border-color)] flex flex-col sm:flex-row justify-between items-center gap-4", children: [
1521
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[13px] text-[var(--fg-muted)] tracking-[-0.25px]", children: [
1839
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module_default.bottom, children: [
1840
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: Footer_module_default.copyright, children: [
1522
1841
  "\xA9 ",
1523
1842
  (/* @__PURE__ */ new Date()).getFullYear(),
1524
1843
  " Kapustin Team. All rights reserved."
1525
1844
  ] }),
1526
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4", children: ["Twitter", "GitHub", "Discord"].map((social) => /* @__PURE__ */ jsxRuntime.jsx(
1845
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: Footer_module_default.socials, children: ["Twitter", "GitHub", "Discord"].map((social) => /* @__PURE__ */ jsxRuntime.jsx(
1527
1846
  "a",
1528
1847
  {
1529
1848
  href: "#",
1530
- className: "text-[13px] text-[var(--fg-muted)] hover:text-[var(--fg)] transition-colors duration-[var(--transition-fast)] tracking-[-0.25px]",
1849
+ className: Footer_module_default.socialLink,
1531
1850
  children: social
1532
1851
  },
1533
1852
  social
@@ -1535,6 +1854,23 @@ function Footer({ columns = defaultColumns, className = "" }) {
1535
1854
  ] })
1536
1855
  ] }) });
1537
1856
  }
1857
+
1858
+ // src/organisms/PricingCard.module.scss
1859
+ var PricingCard_module_default = {
1860
+ root: "PricingCard_module_root",
1861
+ highlighted: "PricingCard_module_highlighted",
1862
+ badgeWrap: "PricingCard_module_badgeWrap",
1863
+ header: "PricingCard_module_header",
1864
+ plan: "PricingCard_module_plan",
1865
+ description: "PricingCard_module_description",
1866
+ priceBlock: "PricingCard_module_priceBlock",
1867
+ price: "PricingCard_module_price",
1868
+ period: "PricingCard_module_period",
1869
+ features: "PricingCard_module_features",
1870
+ featureItem: "PricingCard_module_featureItem",
1871
+ featureIcon: "PricingCard_module_featureIcon",
1872
+ cta: "PricingCard_module_cta"
1873
+ };
1538
1874
  function PricingCard({
1539
1875
  plan,
1540
1876
  price,
@@ -1548,63 +1884,88 @@ function PricingCard({
1548
1884
  return /* @__PURE__ */ jsxRuntime.jsxs(
1549
1885
  "div",
1550
1886
  {
1551
- className: `relative rounded-[var(--radius-xl)] border p-6 flex flex-col ${highlighted ? "border-[var(--brand-primary)] shadow-[0_0_0_1px_var(--brand-primary),var(--shadow-lg)] bg-[var(--bg)]" : "border-[var(--border-color)] bg-[var(--bg)] shadow-[var(--shadow-xs)]"} ${className}`,
1887
+ className: `${PricingCard_module_default.root}${highlighted ? ` ${PricingCard_module_default.highlighted}` : ""}${className ? ` ${className}` : ""}`,
1552
1888
  children: [
1553
- badge && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -top-3 left-1/2 -translate-x-1/2", children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { color: "info", children: badge }) }),
1554
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
1555
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-[var(--fg)]", children: plan }),
1556
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-[var(--fg-muted)] mt-1", children: description })
1889
+ badge && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PricingCard_module_default.badgeWrap, children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { color: "info", children: badge }) }),
1890
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PricingCard_module_default.header, children: [
1891
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: PricingCard_module_default.plan, children: plan }),
1892
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: PricingCard_module_default.description, children: description })
1557
1893
  ] }),
1558
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6", children: [
1559
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-4xl font-bold text-[var(--fg)]", children: price }),
1560
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[var(--fg-muted)]", children: period })
1894
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PricingCard_module_default.priceBlock, children: [
1895
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: PricingCard_module_default.price, children: price }),
1896
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: PricingCard_module_default.period, children: period })
1561
1897
  ] }),
1562
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-3 mb-8 flex-1", children: features.map((feature, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2.5 text-sm text-[var(--fg-secondary)]", children: [
1563
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 mt-0.5 text-[var(--color-success)]", children: /* @__PURE__ */ jsxRuntime.jsx(IconlyCheck, { size: 16 }) }),
1898
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: PricingCard_module_default.features, children: features.map((feature, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: PricingCard_module_default.featureItem, children: [
1899
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: PricingCard_module_default.featureIcon, children: /* @__PURE__ */ jsxRuntime.jsx(IconlyCheck, { size: 16 }) }),
1564
1900
  feature
1565
1901
  ] }, i)) }),
1566
- /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: highlighted ? "primary" : "outline", className: "w-full", children: "Get started" })
1902
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: highlighted ? "primary" : "outline", className: PricingCard_module_default.cta, children: "Get started" })
1567
1903
  ]
1568
1904
  }
1569
1905
  );
1570
1906
  }
1907
+
1908
+ // src/organisms/TestimonialCard.module.scss
1909
+ var TestimonialCard_module_default = {
1910
+ root: "TestimonialCard_module_root",
1911
+ quoteIcon: "TestimonialCard_module_quoteIcon",
1912
+ quoteText: "TestimonialCard_module_quoteText",
1913
+ author: "TestimonialCard_module_author",
1914
+ authorName: "TestimonialCard_module_authorName",
1915
+ authorRole: "TestimonialCard_module_authorRole"
1916
+ };
1571
1917
  function TestimonialCard({ quote, name, role, avatarSrc, className = "" }) {
1572
1918
  const initials = name.split(" ").map((n) => n[0]).join("").toUpperCase();
1573
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `rounded-[var(--radius-xl)] border border-[var(--border-color)] bg-[var(--bg)] p-6 shadow-[var(--shadow-xs)] ${className}`, children: [
1574
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[var(--brand-primary)] opacity-30 mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(IconlyQuote, { size: 32 }) }),
1575
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-[var(--fg-secondary)] leading-relaxed mb-6", children: [
1919
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${TestimonialCard_module_default.root}${className ? ` ${className}` : ""}`, children: [
1920
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: TestimonialCard_module_default.quoteIcon, children: /* @__PURE__ */ jsxRuntime.jsx(IconlyQuote, { size: 32 }) }),
1921
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: TestimonialCard_module_default.quoteText, children: [
1576
1922
  "\u201C",
1577
1923
  quote,
1578
1924
  "\u201D"
1579
1925
  ] }),
1580
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
1926
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: TestimonialCard_module_default.author, children: [
1581
1927
  /* @__PURE__ */ jsxRuntime.jsx(Avatar, { src: avatarSrc, initials, size: "sm" }),
1582
1928
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1583
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-[var(--fg)]", children: name }),
1584
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-[var(--fg-muted)]", children: role })
1929
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: TestimonialCard_module_default.authorName, children: name }),
1930
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: TestimonialCard_module_default.authorRole, children: role })
1585
1931
  ] })
1586
1932
  ] })
1587
1933
  ] });
1588
1934
  }
1935
+
1936
+ // src/organisms/FeatureGrid.module.scss
1937
+ var FeatureGrid_module_default = {
1938
+ root: "FeatureGrid_module_root",
1939
+ cols2: "FeatureGrid_module_cols2",
1940
+ cols3: "FeatureGrid_module_cols3",
1941
+ cols4: "FeatureGrid_module_cols4",
1942
+ card: "FeatureGrid_module_card",
1943
+ cardIcon: "FeatureGrid_module_cardIcon",
1944
+ cardTitle: "FeatureGrid_module_cardTitle",
1945
+ cardDescription: "FeatureGrid_module_cardDescription"
1946
+ };
1589
1947
  function FeatureGrid({ features, columns = 3, className = "" }) {
1590
- const gridCols = {
1591
- 2: "md:grid-cols-2",
1592
- 3: "md:grid-cols-3",
1593
- 4: "md:grid-cols-2 lg:grid-cols-4"
1948
+ const colsClass = {
1949
+ 2: FeatureGrid_module_default.cols2,
1950
+ 3: FeatureGrid_module_default.cols3,
1951
+ 4: FeatureGrid_module_default.cols4
1594
1952
  };
1595
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `grid grid-cols-1 ${gridCols[columns]} gap-6 ${className}`, children: features.map((feature, i) => /* @__PURE__ */ jsxRuntime.jsxs(
1596
- "div",
1597
- {
1598
- className: "rounded-[var(--radius-xl)] border border-[var(--border-color)] bg-[var(--bg)] p-6 transition-all duration-[var(--transition-base)] hover:shadow-[var(--shadow-md)] hover:-translate-y-0.5",
1599
- children: [
1600
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-10 h-10 rounded-[var(--radius-lg)] bg-[var(--brand-primary)]/10 flex items-center justify-center text-[var(--brand-primary)] mb-4", children: feature.icon }),
1601
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-[var(--fg)] mb-1.5", children: feature.title }),
1602
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-[var(--fg-muted)] leading-relaxed", children: feature.description })
1603
- ]
1604
- },
1605
- i
1606
- )) });
1953
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${FeatureGrid_module_default.root} ${colsClass[columns]}${className ? ` ${className}` : ""}`, children: features.map((feature, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: FeatureGrid_module_default.card, children: [
1954
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: FeatureGrid_module_default.cardIcon, children: feature.icon }),
1955
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: FeatureGrid_module_default.cardTitle, children: feature.title }),
1956
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: FeatureGrid_module_default.cardDescription, children: feature.description })
1957
+ ] }, i)) });
1607
1958
  }
1959
+
1960
+ // src/organisms/Sidebar.module.scss
1961
+ var Sidebar_module_default = {
1962
+ root: "Sidebar_module_root",
1963
+ menu: "Sidebar_module_menu",
1964
+ courseSubmenu: "Sidebar_module_courseSubmenu",
1965
+ nav: "Sidebar_module_nav",
1966
+ footer: "Sidebar_module_footer",
1967
+ legal: "Sidebar_module_legal"
1968
+ };
1608
1969
  var defaultMenuItems = [
1609
1970
  "\u0413\u043B\u0430\u0432\u043D\u0430\u044F",
1610
1971
  "\u041C\u043E\u0438 \u043A\u0443\u0440\u0441\u044B",
@@ -1626,13 +1987,13 @@ var courseMenuItems = [
1626
1987
  function Sidebar({ type = "menu", menuItems, footer, className = "" }) {
1627
1988
  const items = menuItems || (type === "courseSubmenu" ? courseMenuItems : defaultMenuItems);
1628
1989
  const [active, setActive] = react.useState(0);
1629
- const width = type === "courseSubmenu" ? "w-[340px]" : "w-[240px]";
1990
+ const widthClass = type === "courseSubmenu" ? Sidebar_module_default.courseSubmenu : Sidebar_module_default.menu;
1630
1991
  return /* @__PURE__ */ jsxRuntime.jsxs(
1631
1992
  "aside",
1632
1993
  {
1633
- className: `bg-[var(--bg)] border-r border-[var(--border-color)] flex flex-col justify-between p-8 shrink-0 h-full ${width} ${className}`,
1994
+ className: `${Sidebar_module_default.root} ${widthClass}${className ? ` ${className}` : ""}`,
1634
1995
  children: [
1635
- /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "flex flex-col gap-1 items-start", children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(
1996
+ /* @__PURE__ */ jsxRuntime.jsx("nav", { className: Sidebar_module_default.nav, children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(
1636
1997
  MenuItem,
1637
1998
  {
1638
1999
  text: item,
@@ -1641,9 +2002,9 @@ function Sidebar({ type = "menu", menuItems, footer, className = "" }) {
1641
2002
  },
1642
2003
  `${item}-${i}`
1643
2004
  )) }),
1644
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5 w-full", children: [
2005
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Sidebar_module_default.footer, children: [
1645
2006
  type === "menu" && footer,
1646
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[10px] text-[var(--fg-muted)] tracking-[-0.2px]", children: [
2007
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: Sidebar_module_default.legal, children: [
1647
2008
  "kapustin.cc, 2026 ",
1648
2009
  /* @__PURE__ */ jsxRuntime.jsx("br", {}),
1649
2010
  "\u0418\u041F \u041A\u0430\u043F\u0443\u0441\u0442\u0438\u043D \u0414.\u0412., \u0418\u041D\u041D 7721250201"
@@ -1653,6 +2014,25 @@ function Sidebar({ type = "menu", menuItems, footer, className = "" }) {
1653
2014
  }
1654
2015
  );
1655
2016
  }
2017
+
2018
+ // src/organisms/AppCard.module.scss
2019
+ var AppCard_module_default = {
2020
+ defaultCard: "AppCard_module_defaultCard",
2021
+ stampCard: "AppCard_module_stampCard",
2022
+ imageWrap: "AppCard_module_imageWrap",
2023
+ imageWrapRounded: "AppCard_module_imageWrap AppCard_module_imageWrapRounded",
2024
+ image: "AppCard_module_image",
2025
+ contentDefaultNoImage: "AppCard_module_contentArea AppCard_module_contentDefault AppCard_module_contentDefaultNoImage",
2026
+ contentDefaultWithImage: "AppCard_module_contentArea AppCard_module_contentDefault AppCard_module_contentDefaultWithImage",
2027
+ contentStamp: "AppCard_module_contentArea AppCard_module_contentStamp",
2028
+ textGroup: "AppCard_module_textGroup",
2029
+ cardTitle: "AppCard_module_cardTitle",
2030
+ cardDesc: "AppCard_module_cardDesc",
2031
+ footer: "AppCard_module_footer",
2032
+ iconRow: "AppCard_module_iconRow",
2033
+ shadowWrap: "AppCard_module_shadowWrap",
2034
+ stampBg: "AppCard_module_stampBg"
2035
+ };
1656
2036
  var HOLE_R = 4;
1657
2037
  var HOLE_SP = 16;
1658
2038
  function buildStampMask(w, h) {
@@ -1679,18 +2059,18 @@ function CardContent({
1679
2059
  isStamp
1680
2060
  }) {
1681
2061
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1682
- image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `relative w-full aspect-[16/9] overflow-hidden ${isStamp ? "" : "rounded-t-[16px]"}`, children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: image, alt: title, className: "absolute inset-0 w-full h-full object-cover" }) }),
2062
+ image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: isStamp ? AppCard_module_default.imageWrap : AppCard_module_default.imageWrapRounded, children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: image, alt: title, className: AppCard_module_default.image }) }),
1683
2063
  /* @__PURE__ */ jsxRuntime.jsxs(
1684
2064
  "div",
1685
2065
  {
1686
- className: `bg-[var(--bg)] overflow-hidden flex flex-col justify-between px-[25px] pt-[25px] pb-[21px] flex-1 min-h-[220px] relative ${isStamp ? "" : `border border-[var(--bg-tertiary)] shadow-[var(--shadow-md)] ${image ? "rounded-b-[16px]" : "rounded-[16px]"}`}`,
2066
+ className: isStamp ? AppCard_module_default.contentStamp : image ? AppCard_module_default.contentDefaultWithImage : AppCard_module_default.contentDefaultNoImage,
1687
2067
  children: [
1688
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3 pr-8", children: [
1689
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold text-[var(--fg-secondary)] tracking-[-0.25px]", children: title }),
1690
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-[var(--fg-muted)] tracking-[-0.25px] leading-normal", children: description })
2068
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: AppCard_module_default.textGroup, children: [
2069
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: AppCard_module_default.cardTitle, children: title }),
2070
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: AppCard_module_default.cardDesc, children: description })
1691
2071
  ] }),
1692
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mt-5", children: [
1693
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", children: icons }),
2072
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: AppCard_module_default.footer, children: [
2073
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: AppCard_module_default.iconRow, children: icons }),
1694
2074
  /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: buttonVariant === "outline" ? "outline" : "primary", size: "sm", onClick: onButtonClick, children: buttonText })
1695
2075
  ] })
1696
2076
  ]
@@ -1707,7 +2087,7 @@ function AppCard(_a) {
1707
2087
  "className"
1708
2088
  ]);
1709
2089
  if (variant === "default") {
1710
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex flex-col w-[320px] ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, __spreadProps(__spreadValues({}, contentProps), { isStamp: false })) });
2090
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${AppCard_module_default.defaultCard}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, __spreadProps(__spreadValues({}, contentProps), { isStamp: false })) });
1711
2091
  }
1712
2092
  const padded = variant === "stamp-padded";
1713
2093
  return /* @__PURE__ */ jsxRuntime.jsx(StampWrapper, { className, padded, children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, __spreadProps(__spreadValues({}, contentProps), { isStamp: true })) });
@@ -1733,7 +2113,7 @@ function StampWrapper({ children, className, padded }) {
1733
2113
  ro.disconnect();
1734
2114
  };
1735
2115
  }, [build]);
1736
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: `flex flex-col w-[320px] relative ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: { filter: "drop-shadow(0 1px 3px rgba(0,0,0,0.15)) drop-shadow(0 4px 12px rgba(0,0,0,0.12))" }, children: /* @__PURE__ */ jsxRuntime.jsx(
2116
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: `${AppCard_module_default.stampCard}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: AppCard_module_default.shadowWrap, children: /* @__PURE__ */ jsxRuntime.jsx(
1737
2117
  "div",
1738
2118
  {
1739
2119
  style: {
@@ -1742,10 +2122,15 @@ function StampWrapper({ children, className, padded }) {
1742
2122
  WebkitMaskSize: "100% 100%",
1743
2123
  maskSize: "100% 100%"
1744
2124
  },
1745
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-[var(--bg)]", style: padded ? { padding: STAMP_PADDING } : void 0, children })
2125
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: AppCard_module_default.stampBg, style: padded ? { padding: STAMP_PADDING } : void 0, children })
1746
2126
  }
1747
2127
  ) }) });
1748
2128
  }
2129
+
2130
+ // src/organisms/AppTopLine.module.scss
2131
+ var AppTopLine_module_default = {
2132
+ root: "AppTopLine_module_root"
2133
+ };
1749
2134
  function AppTopLine({
1750
2135
  promoText = "\u0412\u0430\u043C \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0430 \u0441\u043A\u0438\u0434\u043A\u0430 10% \u043D\u0430 \u0432\u0441\u0435 \u043F\u043B\u0430\u0442\u043D\u044B\u0435 \u043A\u0443\u0440\u0441\u044B",
1751
2136
  promoButtonText = "\u0421\u043C\u043E\u0442\u0440\u0435\u0442\u044C",
@@ -1758,19 +2143,51 @@ function AppTopLine({
1758
2143
  avatarSrc,
1759
2144
  className = ""
1760
2145
  }) {
1761
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `bg-[var(--bg)] flex items-center justify-between w-full ${className}`, children: [
2146
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${AppTopLine_module_default.root}${className ? ` ${className}` : ""}`, children: [
1762
2147
  /* @__PURE__ */ jsxRuntime.jsx(TopPromo, { text: promoText, buttonText: promoButtonText }),
1763
2148
  /* @__PURE__ */ jsxRuntime.jsx(ProfileNav, { stats, avatarSrc })
1764
2149
  ] });
1765
2150
  }
2151
+
2152
+ // src/organisms/EmptyState.module.scss
2153
+ var EmptyState_module_default = {
2154
+ root: "EmptyState_module_root",
2155
+ icon: "EmptyState_module_icon",
2156
+ title: "EmptyState_module_title",
2157
+ description: "EmptyState_module_description",
2158
+ action: "EmptyState_module_action"
2159
+ };
1766
2160
  function EmptyState({ icon, title, description, action, className = "" }) {
1767
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `rounded-[var(--radius-xl)] border border-[var(--border-color)] bg-[var(--bg)] p-8 shadow-[var(--shadow-xs)] flex flex-col items-center text-center ${className}`, children: [
1768
- icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[var(--fg-muted)] mb-4", children: icon }),
1769
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-[var(--fg)]", children: title }),
1770
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-[var(--fg-muted)] tracking-[-0.25px] mt-1 max-w-sm", children: description }),
1771
- action && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-5", children: action })
2161
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${EmptyState_module_default.root}${className ? ` ${className}` : ""}`, children: [
2162
+ icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: EmptyState_module_default.icon, children: icon }),
2163
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: EmptyState_module_default.title, children: title }),
2164
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: EmptyState_module_default.description, children: description }),
2165
+ action && /* @__PURE__ */ jsxRuntime.jsx("div", { className: EmptyState_module_default.action, children: action })
1772
2166
  ] });
1773
2167
  }
2168
+
2169
+ // src/organisms/HeroSection.module.scss
2170
+ var HeroSection_module_default = {
2171
+ root: "HeroSection_module_root",
2172
+ bgGlow: "HeroSection_module_bgGlow",
2173
+ glowOrb: "HeroSection_module_glowOrb",
2174
+ inner: "HeroSection_module_inner",
2175
+ innerCompact: "HeroSection_module_innerCompact",
2176
+ content: "HeroSection_module_content",
2177
+ contentCenter: "HeroSection_module_content HeroSection_module_contentCenter",
2178
+ eyebrowWrap: "HeroSection_module_eyebrowWrap",
2179
+ eyebrowCenter: "HeroSection_module_eyebrowCenter",
2180
+ eyebrow: "HeroSection_module_eyebrow",
2181
+ eyebrowDot: "HeroSection_module_eyebrowDot",
2182
+ title: "HeroSection_module_title",
2183
+ subtitle: "HeroSection_module_subtitle",
2184
+ subtitleCenter: "HeroSection_module_subtitleCenter",
2185
+ actions: "HeroSection_module_actions",
2186
+ actionsCenter: "HeroSection_module_actionsCenter",
2187
+ mediaWrapCenter: "HeroSection_module_mediaWrap HeroSection_module_mediaWrapCenter",
2188
+ mediaWrapLeft: "HeroSection_module_mediaWrap HeroSection_module_mediaWrapLeft",
2189
+ mediaBox: "HeroSection_module_mediaBox"
2190
+ };
1774
2191
  function HeroSection({
1775
2192
  eyebrow,
1776
2193
  title,
@@ -1783,30 +2200,40 @@ function HeroSection({
1783
2200
  }) {
1784
2201
  const isCenter = align === "center";
1785
2202
  const isCompact = size === "compact";
1786
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `relative overflow-hidden ${className}`, children: [
1787
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 pointer-events-none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 left-1/2 -translate-x-1/2 w-[800px] h-[600px] bg-[radial-gradient(ellipse_at_center,var(--brand-primary)_0%,transparent_70%)] opacity-[0.04]" }) }),
1788
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `relative ${isCompact ? "py-16 md:py-20" : "py-20 md:py-32"}`, children: [
1789
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `max-w-4xl ${isCenter ? "mx-auto text-center" : ""}`, children: [
1790
- eyebrow && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `mb-4 md:mb-5 ${isCenter ? "flex justify-center" : ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 px-3 py-1 rounded-full text-[11px] font-semibold uppercase tracking-[0.08em] bg-[var(--brand-primary)]/10 text-[var(--brand-primary)] border border-[var(--brand-primary)]/15", children: [
1791
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-[var(--brand-primary)] animate-pulse" }),
2203
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `${HeroSection_module_default.root}${className ? ` ${className}` : ""}`, children: [
2204
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroSection_module_default.bgGlow, "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroSection_module_default.glowOrb }) }),
2205
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: isCompact ? HeroSection_module_default.innerCompact : HeroSection_module_default.inner, children: [
2206
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: isCenter ? HeroSection_module_default.contentCenter : HeroSection_module_default.content, children: [
2207
+ eyebrow && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${HeroSection_module_default.eyebrowWrap}${isCenter ? ` ${HeroSection_module_default.eyebrowCenter}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: HeroSection_module_default.eyebrow, children: [
2208
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: HeroSection_module_default.eyebrowDot }),
1792
2209
  eyebrow
1793
2210
  ] }) }),
1794
- /* @__PURE__ */ jsxRuntime.jsx("h1", { className: `text-[clamp(2rem,5vw,3.75rem)] font-bold leading-[1.08] tracking-[-0.035em] text-[var(--fg)] text-balance`, children: title }),
1795
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `mt-5 md:mt-6 text-base md:text-lg text-[var(--fg-secondary)] leading-relaxed max-w-2xl ${isCenter ? "mx-auto" : ""}`, children: subtitle }),
1796
- actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `mt-8 md:mt-10 flex flex-wrap gap-3 ${isCenter ? "justify-center" : ""}`, children: actions })
2211
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { className: HeroSection_module_default.title, children: title }),
2212
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `${HeroSection_module_default.subtitle}${isCenter ? ` ${HeroSection_module_default.subtitleCenter}` : ""}`, children: subtitle }),
2213
+ actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${HeroSection_module_default.actions}${isCenter ? ` ${HeroSection_module_default.actionsCenter}` : ""}`, children: actions })
1797
2214
  ] }),
1798
- media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `mt-12 md:mt-16 ${isCenter ? "max-w-5xl mx-auto" : "max-w-4xl"}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-[var(--radius-xl)] border border-[var(--border-color)] shadow-[var(--shadow-xl)] overflow-hidden bg-[var(--bg-secondary)]", children: media }) })
2215
+ media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: isCenter ? HeroSection_module_default.mediaWrapCenter : HeroSection_module_default.mediaWrapLeft, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroSection_module_default.mediaBox, children: media }) })
1799
2216
  ] })
1800
2217
  ] });
1801
2218
  }
2219
+
2220
+ // src/organisms/LogoCloud.module.scss
2221
+ var LogoCloud_module_default = {
2222
+ root: "LogoCloud_module_root",
2223
+ label: "LogoCloud_module_label",
2224
+ grid: "LogoCloud_module_grid",
2225
+ logoItem: "LogoCloud_module_logoItem",
2226
+ logoImg: "LogoCloud_module_logoImg",
2227
+ logoText: "LogoCloud_module_logoText"
2228
+ };
1802
2229
  function LogoCloud({
1803
2230
  label = "Trusted by teams at",
1804
2231
  logos,
1805
2232
  className = ""
1806
2233
  }) {
1807
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `py-10 md:py-14 ${className}`, children: [
1808
- label && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-[11px] font-semibold uppercase tracking-[0.1em] text-[var(--fg-muted)] mb-8", children: label }),
1809
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center justify-center gap-x-10 gap-y-6 md:gap-x-14", children: logos.map((logo) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 opacity-40 hover:opacity-70 transition-opacity duration-[var(--transition-base)]", children: logo.src ? (
2234
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `${LogoCloud_module_default.root}${className ? ` ${className}` : ""}`, children: [
2235
+ label && /* @__PURE__ */ jsxRuntime.jsx("p", { className: LogoCloud_module_default.label, children: label }),
2236
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: LogoCloud_module_default.grid, children: logos.map((logo) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: LogoCloud_module_default.logoItem, children: logo.src ? (
1810
2237
  // eslint-disable-next-line @next/next/no-img-element
1811
2238
  /* @__PURE__ */ jsxRuntime.jsx(
1812
2239
  "img",
@@ -1814,32 +2241,52 @@ function LogoCloud({
1814
2241
  src: logo.src,
1815
2242
  alt: logo.name,
1816
2243
  width: logo.width || 100,
1817
- className: "h-6 md:h-7 w-auto object-contain logo-img"
2244
+ className: `${LogoCloud_module_default.logoImg} logo-img`
1818
2245
  }
1819
2246
  )
1820
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm md:text-base font-bold tracking-[-0.02em] text-[var(--fg)] select-none", children: logo.name }) }, logo.name)) })
2247
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: LogoCloud_module_default.logoText, children: logo.name }) }, logo.name)) })
1821
2248
  ] });
1822
2249
  }
2250
+
2251
+ // src/organisms/StatsBar.module.scss
2252
+ var StatsBar_module_default = {
2253
+ root: "StatsBar_module_root",
2254
+ inline: "StatsBar_module_inline",
2255
+ inlineGrid: "StatsBar_module_inlineGrid",
2256
+ inlineItem: "StatsBar_module_inlineItem",
2257
+ cardsGrid: "StatsBar_module_cardsGrid",
2258
+ card: "StatsBar_module_card",
2259
+ cardIconWrap: "StatsBar_module_cardIconWrap",
2260
+ statValue: "StatsBar_module_statValue",
2261
+ statLabel: "StatsBar_module_statLabel"
2262
+ };
1823
2263
  function StatsBar({ stats, variant = "inline", className = "" }) {
1824
2264
  if (variant === "cards") {
1825
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `py-10 md:py-14 ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4", children: stats.map((stat, i) => /* @__PURE__ */ jsxRuntime.jsxs(
1826
- "div",
1827
- {
1828
- className: "rounded-[var(--radius-xl)] border border-[var(--border-color)] bg-[var(--bg)] p-5 md:p-6 text-center transition-all duration-[var(--transition-base)] hover:shadow-[var(--shadow-md)] hover:-translate-y-0.5",
1829
- children: [
1830
- stat.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center mb-3 text-[var(--brand-primary)]", children: stat.icon }),
1831
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-2xl md:text-3xl font-bold text-[var(--fg)] tracking-[-0.03em] tabular-nums", children: stat.value }),
1832
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-[13px] text-[var(--fg-muted)] tracking-[-0.25px]", children: stat.label })
1833
- ]
1834
- },
1835
- i
1836
- )) }) });
2265
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `${StatsBar_module_default.root}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: StatsBar_module_default.cardsGrid, children: stats.map((stat, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: StatsBar_module_default.card, children: [
2266
+ stat.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: StatsBar_module_default.cardIconWrap, children: stat.icon }),
2267
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: StatsBar_module_default.statValue, children: stat.value }),
2268
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: StatsBar_module_default.statLabel, children: stat.label })
2269
+ ] }, i)) }) });
1837
2270
  }
1838
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `py-10 md:py-14 border-y border-[var(--border-color)] ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center justify-center gap-8 md:gap-16", children: stats.map((stat, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
1839
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-2xl md:text-3xl font-bold text-[var(--fg)] tracking-[-0.03em] tabular-nums", children: stat.value }),
1840
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-[13px] text-[var(--fg-muted)] tracking-[-0.25px]", children: stat.label })
2271
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `${StatsBar_module_default.root} ${StatsBar_module_default.inline}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: StatsBar_module_default.inlineGrid, children: stats.map((stat, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: StatsBar_module_default.inlineItem, children: [
2272
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: StatsBar_module_default.statValue, children: stat.value }),
2273
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: StatsBar_module_default.statLabel, children: stat.label })
1841
2274
  ] }, i)) }) });
1842
2275
  }
2276
+
2277
+ // src/organisms/CTASection.module.scss
2278
+ var CTASection_module_default = {
2279
+ root: "CTASection_module_root",
2280
+ default: "CTASection_module_default",
2281
+ filled: "CTASection_module_filled",
2282
+ bordered: "CTASection_module_bordered",
2283
+ inner: "CTASection_module_inner",
2284
+ title: "CTASection_module_title",
2285
+ titleFilled: "CTASection_module_titleFilled",
2286
+ description: "CTASection_module_description",
2287
+ descriptionFilled: "CTASection_module_descriptionFilled",
2288
+ actions: "CTASection_module_actions"
2289
+ };
1843
2290
  function CTASection({
1844
2291
  title,
1845
2292
  description,
@@ -1847,44 +2294,42 @@ function CTASection({
1847
2294
  variant = "default",
1848
2295
  className = ""
1849
2296
  }) {
1850
- const variantStyles5 = {
1851
- default: "py-16 md:py-24",
1852
- filled: "py-12 md:py-16 px-6 md:px-12 rounded-[var(--radius-xl)] bg-[var(--fg)] text-[var(--bg)]",
1853
- bordered: "py-12 md:py-16 px-6 md:px-12 rounded-[var(--radius-xl)] border-2 border-dashed border-[var(--border-color-strong)]"
1854
- };
1855
2297
  const isFilled = variant === "filled";
1856
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `${variantStyles5[variant]} ${className}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-2xl mx-auto text-center", children: [
1857
- /* @__PURE__ */ jsxRuntime.jsx(
1858
- "h2",
1859
- {
1860
- className: `text-2xl md:text-4xl font-bold tracking-[-0.03em] leading-[1.1] ${isFilled ? "text-[var(--bg)]" : "text-[var(--fg)]"}`,
1861
- children: title
1862
- }
1863
- ),
1864
- description && /* @__PURE__ */ jsxRuntime.jsx(
1865
- "p",
1866
- {
1867
- className: `mt-4 text-base leading-relaxed ${isFilled ? "text-[var(--bg)]/70" : "text-[var(--fg-secondary)]"}`,
1868
- children: description
1869
- }
1870
- ),
1871
- actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-8 flex flex-wrap gap-3 justify-center", children: actions })
2298
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `${CTASection_module_default.root} ${CTASection_module_default[variant]}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CTASection_module_default.inner, children: [
2299
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: `${CTASection_module_default.title}${isFilled ? ` ${CTASection_module_default.titleFilled}` : ""}`, children: title }),
2300
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `${CTASection_module_default.description}${isFilled ? ` ${CTASection_module_default.descriptionFilled}` : ""}`, children: description }),
2301
+ actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: CTASection_module_default.actions, children: actions })
1872
2302
  ] }) });
1873
2303
  }
2304
+
2305
+ // src/organisms/BentoGrid.module.scss
2306
+ var BentoGrid_module_default = {
2307
+ root: "BentoGrid_module_root",
2308
+ grid: "BentoGrid_module_grid",
2309
+ item: "BentoGrid_module_item",
2310
+ colSpan2: "BentoGrid_module_colSpan2",
2311
+ rowSpan2: "BentoGrid_module_rowSpan2",
2312
+ mediaWrap: "BentoGrid_module_mediaWrap",
2313
+ content: "BentoGrid_module_content",
2314
+ contentTall: "BentoGrid_module_contentTall",
2315
+ itemIcon: "BentoGrid_module_itemIcon",
2316
+ itemTitle: "BentoGrid_module_itemTitle",
2317
+ itemDescription: "BentoGrid_module_itemDescription"
2318
+ };
1874
2319
  function BentoGrid({ items, className = "" }) {
1875
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `py-10 md:py-14 ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4", children: items.map((item, i) => {
1876
- const colSpanClass = item.span === 2 ? "md:col-span-2" : "";
1877
- const rowSpanClass = item.rowSpan === 2 ? "md:row-span-2" : "";
2320
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `${BentoGrid_module_default.root}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: BentoGrid_module_default.grid, children: items.map((item, i) => {
2321
+ const spanClass = item.span === 2 ? ` ${BentoGrid_module_default.colSpan2}` : "";
2322
+ const rowClass = item.rowSpan === 2 ? ` ${BentoGrid_module_default.rowSpan2}` : "";
1878
2323
  return /* @__PURE__ */ jsxRuntime.jsxs(
1879
2324
  "div",
1880
2325
  {
1881
- className: `group relative rounded-[var(--radius-xl)] border border-[var(--border-color)] bg-[var(--bg)] overflow-hidden transition-all duration-[var(--transition-base)] hover:shadow-[var(--shadow-md)] hover:border-[var(--border-color-strong)] ${colSpanClass} ${rowSpanClass} ${item.className || ""}`,
2326
+ className: `${BentoGrid_module_default.item}${spanClass}${rowClass}${item.className ? ` ${item.className}` : ""}`,
1882
2327
  children: [
1883
- item.media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full overflow-hidden", children: item.media }),
1884
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `p-5 md:p-6 ${item.rowSpan === 2 ? "flex flex-col h-full" : ""}`, children: [
1885
- item.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-9 h-9 rounded-[var(--radius-md)] bg-[var(--brand-primary)]/10 flex items-center justify-center text-[var(--brand-primary)] mb-3.5", children: item.icon }),
1886
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-[15px] font-semibold text-[var(--fg)] tracking-[-0.01em]", children: item.title }),
1887
- item.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1.5 text-[13px] text-[var(--fg-muted)] leading-relaxed tracking-[-0.25px]", children: item.description })
2328
+ item.media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: BentoGrid_module_default.mediaWrap, children: item.media }),
2329
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${BentoGrid_module_default.content}${item.rowSpan === 2 ? ` ${BentoGrid_module_default.contentTall}` : ""}`, children: [
2330
+ item.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: BentoGrid_module_default.itemIcon, children: item.icon }),
2331
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: BentoGrid_module_default.itemTitle, children: item.title }),
2332
+ item.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: BentoGrid_module_default.itemDescription, children: item.description })
1888
2333
  ] })
1889
2334
  ]
1890
2335
  },
@@ -1892,6 +2337,23 @@ function BentoGrid({ items, className = "" }) {
1892
2337
  );
1893
2338
  }) }) });
1894
2339
  }
2340
+
2341
+ // src/organisms/FAQSection.module.scss
2342
+ var FAQSection_module_default = {
2343
+ root: "FAQSection_module_root",
2344
+ container: "FAQSection_module_container",
2345
+ title: "FAQSection_module_title",
2346
+ subtitle: "FAQSection_module_subtitle",
2347
+ list: "FAQSection_module_list",
2348
+ item: "FAQSection_module_item",
2349
+ question: "FAQSection_module_question",
2350
+ questionText: "FAQSection_module_questionText",
2351
+ toggleIcon: "FAQSection_module_toggleIcon",
2352
+ toggleIconOpen: "FAQSection_module_toggleIcon FAQSection_module_toggleIconOpen",
2353
+ answerOpen: "FAQSection_module_answer FAQSection_module_answerOpen",
2354
+ answerClosed: "FAQSection_module_answer FAQSection_module_answerClosed",
2355
+ answerText: "FAQSection_module_answerText"
2356
+ };
1895
2357
  function FAQSection({
1896
2358
  title = "Frequently asked questions",
1897
2359
  subtitle,
@@ -1900,64 +2362,72 @@ function FAQSection({
1900
2362
  }) {
1901
2363
  const [openIndex, setOpenIndex] = react.useState(null);
1902
2364
  const toggle = (i) => setOpenIndex(openIndex === i ? null : i);
1903
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `py-14 md:py-20 ${className}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-2xl mx-auto", children: [
1904
- title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-2xl md:text-3xl font-bold text-[var(--fg)] tracking-[-0.03em] text-center", children: title }),
1905
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-base text-[var(--fg-secondary)] text-center", children: subtitle }),
1906
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${title || subtitle ? "mt-10" : ""} divide-y divide-[var(--border-color)]`, children: items.map((item, i) => {
2365
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `${FAQSection_module_default.root}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: FAQSection_module_default.container, children: [
2366
+ title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: FAQSection_module_default.title, children: title }),
2367
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: FAQSection_module_default.subtitle, children: subtitle }),
2368
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: title || subtitle ? FAQSection_module_default.list : "", children: items.map((item, i) => {
1907
2369
  const isOpen = openIndex === i;
1908
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-5", children: [
2370
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: FAQSection_module_default.item, children: [
1909
2371
  /* @__PURE__ */ jsxRuntime.jsxs(
1910
2372
  "button",
1911
2373
  {
1912
2374
  onClick: () => toggle(i),
1913
- className: "w-full flex items-center justify-between gap-4 text-left cursor-pointer group",
2375
+ className: FAQSection_module_default.question,
1914
2376
  "aria-expanded": isOpen,
1915
2377
  children: [
1916
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[15px] font-medium text-[var(--fg)] group-hover:text-[var(--brand-primary)] transition-colors", children: item.question }),
1917
- /* @__PURE__ */ jsxRuntime.jsx(
1918
- "span",
1919
- {
1920
- className: `shrink-0 w-5 h-5 flex items-center justify-center text-[var(--fg-muted)] transition-transform duration-200 ${isOpen ? "rotate-45" : ""}`,
1921
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7 1v12M1 7h12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) })
1922
- }
1923
- )
2378
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: FAQSection_module_default.questionText, children: item.question }),
2379
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: isOpen ? FAQSection_module_default.toggleIconOpen : FAQSection_module_default.toggleIcon, children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7 1v12M1 7h12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) })
1924
2380
  ]
1925
2381
  }
1926
2382
  ),
1927
- /* @__PURE__ */ jsxRuntime.jsx(
1928
- "div",
1929
- {
1930
- className: `overflow-hidden transition-all duration-200 ease-out ${isOpen ? "max-h-96 opacity-100 mt-3" : "max-h-0 opacity-0"}`,
1931
- children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[14px] text-[var(--fg-secondary)] leading-relaxed pr-8", children: item.answer })
1932
- }
1933
- )
2383
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: isOpen ? FAQSection_module_default.answerOpen : FAQSection_module_default.answerClosed, children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: FAQSection_module_default.answerText, children: item.answer }) })
1934
2384
  ] }, i);
1935
2385
  }) })
1936
2386
  ] }) });
1937
2387
  }
2388
+
2389
+ // src/organisms/ComparisonTable.module.scss
2390
+ var ComparisonTable_module_default = {
2391
+ root: "ComparisonTable_module_root",
2392
+ scrollWrap: "ComparisonTable_module_scrollWrap",
2393
+ table: "ComparisonTable_module_table",
2394
+ headerCell: "ComparisonTable_module_headerCell",
2395
+ columnHeader: "ComparisonTable_module_columnHeader",
2396
+ columnHeaderHighlighted: "ComparisonTable_module_columnHeader ComparisonTable_module_columnHeaderHighlighted",
2397
+ bodyRow: "ComparisonTable_module_bodyRow",
2398
+ featureCell: "ComparisonTable_module_featureCell",
2399
+ valueCell: "ComparisonTable_module_valueCell",
2400
+ valueCellHighlighted: "ComparisonTable_module_valueCell ComparisonTable_module_valueCellHighlighted",
2401
+ valueCellHighlightedLast: "ComparisonTable_module_valueCell ComparisonTable_module_valueCellHighlighted ComparisonTable_module_valueCellHighlightedLast",
2402
+ iconSuccess: "ComparisonTable_module_iconSuccess",
2403
+ iconMuted: "ComparisonTable_module_iconMuted",
2404
+ textValue: "ComparisonTable_module_textValue"
2405
+ };
1938
2406
  function ComparisonTable({ columns, rows, className = "" }) {
1939
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `py-10 md:py-14 ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-x-auto -mx-4 px-4", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full border-collapse min-w-[500px]", children: [
2407
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `${ComparisonTable_module_default.root}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: ComparisonTable_module_default.scrollWrap, children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: ComparisonTable_module_default.table, children: [
1940
2408
  /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
1941
- /* @__PURE__ */ jsxRuntime.jsx("th", { className: "text-left py-4 px-4 text-[13px] font-medium text-[var(--fg-muted)] tracking-[-0.25px] w-[40%]" }),
2409
+ /* @__PURE__ */ jsxRuntime.jsx("th", { className: ComparisonTable_module_default.headerCell }),
1942
2410
  columns.map((col, i) => /* @__PURE__ */ jsxRuntime.jsx(
1943
2411
  "th",
1944
2412
  {
1945
- className: `py-4 px-4 text-center text-sm font-semibold ${col.highlighted ? "text-[var(--brand-primary)] bg-[var(--brand-primary)]/5 rounded-t-[var(--radius-lg)]" : "text-[var(--fg)]"}`,
2413
+ className: col.highlighted ? ComparisonTable_module_default.columnHeaderHighlighted : ComparisonTable_module_default.columnHeader,
1946
2414
  children: col.label
1947
2415
  },
1948
2416
  i
1949
2417
  ))
1950
2418
  ] }) }),
1951
- /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row, ri) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-t border-[var(--border-color)]", children: [
1952
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3.5 px-4 text-[14px] text-[var(--fg-secondary)]", children: row.feature }),
2419
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row, ri) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: ComparisonTable_module_default.bodyRow, children: [
2420
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: ComparisonTable_module_default.featureCell, children: row.feature }),
1953
2421
  row.values.map((val, vi) => {
1954
2422
  var _a;
1955
2423
  const isHighlighted = (_a = columns[vi]) == null ? void 0 : _a.highlighted;
2424
+ const isLast = ri === rows.length - 1;
2425
+ const cellClass = isHighlighted ? isLast ? ComparisonTable_module_default.valueCellHighlightedLast : ComparisonTable_module_default.valueCellHighlighted : ComparisonTable_module_default.valueCell;
1956
2426
  return /* @__PURE__ */ jsxRuntime.jsx(
1957
2427
  "td",
1958
2428
  {
1959
- className: `py-3.5 px-4 text-center ${isHighlighted ? "bg-[var(--brand-primary)]/5" : ""} ${ri === rows.length - 1 && isHighlighted ? "rounded-b-[var(--radius-lg)]" : ""}`,
1960
- children: typeof val === "boolean" ? val ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex text-[var(--color-success)]", children: /* @__PURE__ */ jsxRuntime.jsx(IconlyCheck, { size: 18 }) }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex text-[var(--fg-muted)]/40", children: /* @__PURE__ */ jsxRuntime.jsx(IconlyClose, { size: 18 }) }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] font-medium text-[var(--fg)]", children: val })
2429
+ className: cellClass,
2430
+ children: typeof val === "boolean" ? val ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: ComparisonTable_module_default.iconSuccess, children: /* @__PURE__ */ jsxRuntime.jsx(IconlyCheck, { size: 18 }) }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: ComparisonTable_module_default.iconMuted, children: /* @__PURE__ */ jsxRuntime.jsx(IconlyClose, { size: 18 }) }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: ComparisonTable_module_default.textValue, children: val })
1961
2431
  },
1962
2432
  vi
1963
2433
  );
@@ -1965,79 +2435,121 @@ function ComparisonTable({ columns, rows, className = "" }) {
1965
2435
  ] }, ri)) })
1966
2436
  ] }) }) });
1967
2437
  }
2438
+
2439
+ // src/organisms/PromoBento.module.scss
2440
+ var PromoBento_module_default = {
2441
+ root: "PromoBento_module_root",
2442
+ header: "PromoBento_module_header",
2443
+ heading: "PromoBento_module_heading",
2444
+ subtitle: "PromoBento_module_subtitle",
2445
+ grid: "PromoBento_module_grid",
2446
+ card: "PromoBento_module_card",
2447
+ cardMedia: "PromoBento_module_cardMedia",
2448
+ cardMediaInner: "PromoBento_module_cardMediaInner",
2449
+ cardFade: "PromoBento_module_cardFade",
2450
+ cardContent: "PromoBento_module_cardContent",
2451
+ pill: "PromoBento_module_pill",
2452
+ pillInner: "PromoBento_module_pillInner",
2453
+ pillIcon: "PromoBento_module_pillIcon",
2454
+ cardTitle: "PromoBento_module_cardTitle",
2455
+ cardDesc: "PromoBento_module_cardDesc",
2456
+ cardCta: "PromoBento_module_cardCta"
2457
+ };
1968
2458
  function PromoBentoCard({ pill, title, description, cta, media, className = "" }) {
1969
- return /* @__PURE__ */ jsxRuntime.jsxs(
1970
- "div",
1971
- {
1972
- className: `relative flex flex-col rounded-[clamp(24px,3vw,48px)] bg-[var(--bg-secondary)] overflow-hidden group transition-shadow duration-[var(--transition-slow)] hover:shadow-[var(--shadow-lg)] ${className}`,
1973
- children: [
1974
- media && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex-1 min-h-[240px] md:min-h-[320px] overflow-hidden", children: [
1975
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center p-6", children: media }),
1976
- /* @__PURE__ */ jsxRuntime.jsx(
1977
- "div",
1978
- {
1979
- className: "absolute bottom-0 left-0 right-0 h-[140px] pointer-events-none",
1980
- style: {
1981
- background: "linear-gradient(to top, var(--bg-secondary) 0%, transparent 100%)"
1982
- }
1983
- }
1984
- )
1985
- ] }),
1986
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex flex-col gap-4 p-6 md:p-8 pt-0", children: [
1987
- pill && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-2 px-4 py-2 rounded-full bg-[var(--bg)] border border-[var(--border-color)] text-sm font-semibold text-[var(--fg)]", children: [
1988
- pill.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-5 h-5 flex items-center justify-center", children: pill.icon }),
1989
- pill.label
1990
- ] }) }),
1991
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl md:text-[28px] leading-[1.2] tracking-[-0.02em] text-[var(--fg)]", children: title }),
1992
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm md:text-base leading-relaxed text-[var(--fg-secondary)] max-w-[85%]", children: description }),
1993
- cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1994
- Button,
1995
- {
1996
- variant: "outline",
1997
- onClick: cta.onClick,
1998
- icon: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M6 3l5 5-5 5" }) }),
1999
- children: cta.label
2000
- }
2001
- ) })
2002
- ] })
2003
- ]
2004
- }
2005
- );
2459
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${PromoBento_module_default.card}${className ? ` ${className}` : ""}`, children: [
2460
+ media && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoBento_module_default.cardMedia, children: [
2461
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoBento_module_default.cardMediaInner, children: media }),
2462
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoBento_module_default.cardFade })
2463
+ ] }),
2464
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoBento_module_default.cardContent, children: [
2465
+ pill && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoBento_module_default.pill, children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: PromoBento_module_default.pillInner, children: [
2466
+ pill.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: PromoBento_module_default.pillIcon, children: pill.icon }),
2467
+ pill.label
2468
+ ] }) }),
2469
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: PromoBento_module_default.cardTitle, children: title }),
2470
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoBento_module_default.cardDesc, children: description }),
2471
+ cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoBento_module_default.cardCta, children: /* @__PURE__ */ jsxRuntime.jsx(
2472
+ Button,
2473
+ {
2474
+ variant: "outline",
2475
+ onClick: cta.onClick,
2476
+ icon: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M6 3l5 5-5 5" }) }),
2477
+ children: cta.label
2478
+ }
2479
+ ) })
2480
+ ] })
2481
+ ] });
2006
2482
  }
2007
2483
  function PromoBento({ heading, subtitle, items, className = "" }) {
2008
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `py-16 md:py-24 ${className}`, children: [
2009
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-10 md:mb-14 max-w-xl", children: [
2010
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-[clamp(1.75rem,4vw,2.75rem)] font-bold leading-[1.1] tracking-[-0.03em] text-[var(--fg)] text-balance", children: heading }),
2011
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-base text-[var(--fg-secondary)] leading-relaxed", children: subtitle })
2484
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `${PromoBento_module_default.root}${className ? ` ${className}` : ""}`, children: [
2485
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoBento_module_default.header, children: [
2486
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: PromoBento_module_default.heading, children: heading }),
2487
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoBento_module_default.subtitle, children: subtitle })
2012
2488
  ] }),
2013
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6 md:gap-9", children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(PromoBentoCard, __spreadValues({}, item), i)) })
2489
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoBento_module_default.grid, children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(PromoBentoCard, __spreadValues({}, item), i)) })
2014
2490
  ] });
2015
2491
  }
2492
+
2493
+ // src/organisms/PromoShowcase.module.scss
2494
+ var PromoShowcase_module_default = {
2495
+ root: "PromoShowcase_module_root",
2496
+ heading: "PromoShowcase_module_heading",
2497
+ headingText: "PromoShowcase_module_headingText",
2498
+ body: "PromoShowcase_module_body",
2499
+ stepper: "PromoShowcase_module_stepper",
2500
+ stepButton: "PromoShowcase_module_stepButton",
2501
+ stepButtonActive: "PromoShowcase_module_stepButtonActive",
2502
+ contentArea: "PromoShowcase_module_contentArea",
2503
+ panel: "PromoShowcase_module_panel",
2504
+ panelActive: "PromoShowcase_module_panelActive",
2505
+ panelInner: "PromoShowcase_module_panelInner"
2506
+ };
2016
2507
  function PromoShowcase({ heading, steps, className = "" }) {
2017
2508
  const [activeIndex, setActiveIndex] = react.useState(0);
2018
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `py-16 md:py-24 ${className}`, children: [
2019
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-10 md:mb-14 max-w-xl", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-[clamp(1.75rem,4vw,2.75rem)] font-bold leading-[1.1] tracking-[-0.03em] text-[var(--fg)] text-balance", children: heading }) }),
2020
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 md:gap-8", children: [
2021
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1 p-1 rounded-full bg-[var(--bg-secondary)] border border-[var(--border-color)] w-fit", children: steps.map((step, i) => /* @__PURE__ */ jsxRuntime.jsx(
2509
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `${PromoShowcase_module_default.root}${className ? ` ${className}` : ""}`, children: [
2510
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoShowcase_module_default.heading, children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: PromoShowcase_module_default.headingText, children: heading }) }),
2511
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoShowcase_module_default.body, children: [
2512
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoShowcase_module_default.stepper, children: steps.map((step, i) => /* @__PURE__ */ jsxRuntime.jsx(
2022
2513
  "button",
2023
2514
  {
2024
2515
  onClick: () => setActiveIndex(i),
2025
- className: `px-5 py-2.5 rounded-full text-sm font-medium transition-all duration-[var(--transition-base)] cursor-pointer ${i === activeIndex ? "bg-[var(--fg)] text-[var(--bg)] shadow-[var(--shadow-sm)]" : "text-[var(--fg-secondary)] hover:text-[var(--fg)] hover:bg-[var(--bg-tertiary)]"}`,
2516
+ className: `${PromoShowcase_module_default.stepButton}${i === activeIndex ? ` ${PromoShowcase_module_default.stepButtonActive}` : ""}`,
2026
2517
  children: step.label
2027
2518
  },
2028
2519
  i
2029
2520
  )) }),
2030
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative rounded-[clamp(16px,2vw,32px)] border border-[var(--border-color)] bg-[var(--bg-secondary)] overflow-hidden min-h-[300px] md:min-h-[480px]", children: steps.map((step, i) => /* @__PURE__ */ jsxRuntime.jsx(
2521
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoShowcase_module_default.contentArea, children: steps.map((step, i) => /* @__PURE__ */ jsxRuntime.jsx(
2031
2522
  "div",
2032
2523
  {
2033
- className: `absolute inset-0 transition-opacity duration-300 ease-out ${i === activeIndex ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`,
2034
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center p-6 md:p-10", children: step.content })
2524
+ className: `${PromoShowcase_module_default.panel}${i === activeIndex ? ` ${PromoShowcase_module_default.panelActive}` : ""}`,
2525
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoShowcase_module_default.panelInner, children: step.content })
2035
2526
  },
2036
2527
  i
2037
2528
  )) })
2038
2529
  ] })
2039
2530
  ] });
2040
2531
  }
2532
+
2533
+ // src/organisms/PromoSplit.module.scss
2534
+ var PromoSplit_module_default = {
2535
+ root: "PromoSplit_module_root",
2536
+ grid: "PromoSplit_module_grid",
2537
+ gridReversed: "PromoSplit_module_grid PromoSplit_module_gridReversed",
2538
+ textColumn: "PromoSplit_module_textColumn",
2539
+ textColumnLtr: "PromoSplit_module_textColumnLtr",
2540
+ heading: "PromoSplit_module_heading",
2541
+ description: "PromoSplit_module_description",
2542
+ features: "PromoSplit_module_features",
2543
+ feature: "PromoSplit_module_feature",
2544
+ featureTitle: "PromoSplit_module_featureTitle",
2545
+ featureDesc: "PromoSplit_module_featureDesc",
2546
+ mediaColumn: "PromoSplit_module_mediaColumn",
2547
+ mediaColumnLtr: "PromoSplit_module_mediaColumnLtr",
2548
+ mediaBox: "PromoSplit_module_mediaBox",
2549
+ mediaContent: "PromoSplit_module_mediaContent",
2550
+ mediaPlaceholder: "PromoSplit_module_mediaPlaceholder",
2551
+ placeholderCircle: "PromoSplit_module_placeholderCircle"
2552
+ };
2041
2553
  function PromoSplit({
2042
2554
  heading,
2043
2555
  description,
@@ -2047,66 +2559,118 @@ function PromoSplit({
2047
2559
  className = ""
2048
2560
  }) {
2049
2561
  const isLeft = mediaPosition === "left";
2050
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `py-16 md:py-24 ${className}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `grid grid-cols-1 lg:grid-cols-2 gap-10 md:gap-16 items-center ${isLeft ? "lg:[direction:rtl]" : ""}`, children: [
2051
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex flex-col gap-6 ${isLeft ? "lg:[direction:ltr]" : ""}`, children: [
2052
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-[clamp(1.75rem,4vw,2.75rem)] font-bold leading-[1.1] tracking-[-0.03em] text-[var(--fg)] text-balance", children: heading }),
2053
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base md:text-lg leading-relaxed text-[var(--fg-secondary)]", children: description }),
2054
- features && features.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-5 mt-2", children: features.map((feature, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
2055
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold text-[var(--fg)]", children: feature.title }),
2056
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-[var(--fg-secondary)] leading-relaxed", children: feature.description })
2562
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `${PromoSplit_module_default.root}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: isLeft ? PromoSplit_module_default.gridReversed : PromoSplit_module_default.grid, children: [
2563
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${PromoSplit_module_default.textColumn}${isLeft ? ` ${PromoSplit_module_default.textColumnLtr}` : ""}`, children: [
2564
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: PromoSplit_module_default.heading, children: heading }),
2565
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoSplit_module_default.description, children: description }),
2566
+ features && features.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoSplit_module_default.features, children: features.map((feature, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoSplit_module_default.feature, children: [
2567
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: PromoSplit_module_default.featureTitle, children: feature.title }),
2568
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoSplit_module_default.featureDesc, children: feature.description })
2057
2569
  ] }, i)) })
2058
2570
  ] }),
2059
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `relative ${isLeft ? "lg:[direction:ltr]" : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative rounded-[clamp(16px,2vw,32px)] bg-[var(--bg-secondary)] border border-[var(--border-color)] overflow-hidden min-h-[280px] md:min-h-[380px]", children: media ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center p-6", children: media }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-20 h-20 rounded-full bg-[var(--bg-tertiary)] flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: "var(--fg-muted)", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
2571
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${PromoSplit_module_default.mediaColumn}${isLeft ? ` ${PromoSplit_module_default.mediaColumnLtr}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoSplit_module_default.mediaBox, children: media ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoSplit_module_default.mediaContent, children: media }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoSplit_module_default.mediaPlaceholder, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoSplit_module_default.placeholderCircle, children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: "var(--fg-muted)", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
2060
2572
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
2061
2573
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "8.5", cy: "8.5", r: "1.5" }),
2062
2574
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m21 15-5-5L5 21" })
2063
2575
  ] }) }) }) }) })
2064
2576
  ] }) });
2065
2577
  }
2578
+
2579
+ // src/organisms/PromoTrustGrid.module.scss
2580
+ var PromoTrustGrid_module_default = {
2581
+ root: "PromoTrustGrid_module_root",
2582
+ heading: "PromoTrustGrid_module_heading",
2583
+ headingText: "PromoTrustGrid_module_headingText",
2584
+ grid: "PromoTrustGrid_module_grid",
2585
+ featureCard: "PromoTrustGrid_module_featureCard",
2586
+ featureIcon: "PromoTrustGrid_module_featureIcon",
2587
+ featureTitle: "PromoTrustGrid_module_featureTitle",
2588
+ featureDescription: "PromoTrustGrid_module_featureDescription",
2589
+ media: "PromoTrustGrid_module_media",
2590
+ mediaInner: "PromoTrustGrid_module_mediaInner"
2591
+ };
2066
2592
  function PromoTrustGrid({ heading, features, media, className = "" }) {
2067
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `py-16 md:py-24 ${className}`, children: [
2068
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-10 md:mb-14", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-[clamp(1.75rem,4vw,2.75rem)] font-bold leading-[1.1] tracking-[-0.03em] text-[var(--fg)] text-balance", children: heading }) }),
2069
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-6 mb-10 md:mb-14", children: features.map((feature, i) => /* @__PURE__ */ jsxRuntime.jsxs(
2070
- "div",
2071
- {
2072
- className: "group relative flex flex-col gap-3 p-6 md:p-8 rounded-[var(--radius-xl)] bg-[var(--bg)] border border-[var(--border-color)] transition-all duration-[var(--transition-base)] hover:shadow-[var(--shadow-md)] hover:-translate-y-0.5",
2073
- children: [
2074
- feature.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-10 h-10 rounded-[var(--radius-lg)] bg-[var(--fg)]/5 flex items-center justify-center text-[var(--fg)] mb-1", children: feature.icon }),
2075
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold text-[var(--fg)] leading-snug", children: feature.title }),
2076
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-[var(--fg-secondary)] leading-relaxed", children: feature.description })
2077
- ]
2078
- },
2079
- i
2080
- )) }),
2081
- media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative rounded-[clamp(16px,2vw,32px)] bg-[var(--bg-secondary)] border border-[var(--border-color)] overflow-hidden min-h-[280px] md:min-h-[420px]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center p-6", children: media }) })
2593
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `${PromoTrustGrid_module_default.root}${className ? ` ${className}` : ""}`, children: [
2594
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTrustGrid_module_default.heading, children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: PromoTrustGrid_module_default.headingText, children: heading }) }),
2595
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTrustGrid_module_default.grid, children: features.map((feature, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoTrustGrid_module_default.featureCard, children: [
2596
+ feature.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTrustGrid_module_default.featureIcon, children: feature.icon }),
2597
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: PromoTrustGrid_module_default.featureTitle, children: feature.title }),
2598
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoTrustGrid_module_default.featureDescription, children: feature.description })
2599
+ ] }, i)) }),
2600
+ media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTrustGrid_module_default.media, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTrustGrid_module_default.mediaInner, children: media }) })
2082
2601
  ] });
2083
2602
  }
2603
+
2604
+ // src/organisms/PromoDevicesCTA.module.scss
2605
+ var PromoDevicesCTA_module_default = {
2606
+ root: "PromoDevicesCTA_module_root",
2607
+ textBlock: "PromoDevicesCTA_module_textBlock",
2608
+ heading: "PromoDevicesCTA_module_heading",
2609
+ description: "PromoDevicesCTA_module_description",
2610
+ ctaWrap: "PromoDevicesCTA_module_ctaWrap",
2611
+ devices: "PromoDevicesCTA_module_devices",
2612
+ laptop: "PromoDevicesCTA_module_laptop",
2613
+ laptopScreen: "PromoDevicesCTA_module_laptopScreen",
2614
+ laptopScreenInner: "PromoDevicesCTA_module_laptopScreenInner",
2615
+ laptopHinge: "PromoDevicesCTA_module_laptopHinge",
2616
+ laptopBase: "PromoDevicesCTA_module_laptopBase",
2617
+ tablet: "PromoDevicesCTA_module_tablet",
2618
+ tabletShell: "PromoDevicesCTA_module_tabletShell",
2619
+ tabletScreen: "PromoDevicesCTA_module_tabletScreen",
2620
+ phone: "PromoDevicesCTA_module_phone",
2621
+ phoneShell: "PromoDevicesCTA_module_phoneShell",
2622
+ phoneNotch: "PromoDevicesCTA_module_phoneNotch",
2623
+ phoneScreen: "PromoDevicesCTA_module_phoneScreen"
2624
+ };
2084
2625
  function PromoDevicesCTA({
2085
2626
  heading,
2086
2627
  description,
2087
2628
  cta,
2088
2629
  className = ""
2089
2630
  }) {
2090
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `py-16 md:py-24 ${className}`, children: [
2091
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-2xl mx-auto text-center mb-8 md:mb-10", children: [
2092
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-[clamp(1.75rem,4vw,2.75rem)] font-bold leading-[1.1] tracking-[-0.03em] text-[var(--fg)] text-balance", children: heading }),
2093
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-base md:text-lg leading-relaxed text-[var(--fg-secondary)]", children: description }),
2094
- cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-6 flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "primary", onClick: cta.onClick, children: cta.label }) })
2631
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `${PromoDevicesCTA_module_default.root}${className ? ` ${className}` : ""}`, children: [
2632
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoDevicesCTA_module_default.textBlock, children: [
2633
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: PromoDevicesCTA_module_default.heading, children: heading }),
2634
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoDevicesCTA_module_default.description, children: description }),
2635
+ cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.ctaWrap, children: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "primary", onClick: cta.onClick, children: cta.label }) })
2095
2636
  ] }),
2096
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex items-end justify-center gap-6 md:gap-10 px-4 md:px-0 max-w-4xl mx-auto", children: [
2097
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden md:block relative w-[38%] max-w-[380px]", children: [
2098
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-[16/10] rounded-t-[var(--radius-lg)] border border-b-0 border-[var(--border-color)] bg-[var(--bg-secondary)] overflow-hidden shadow-[var(--shadow-md)]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-3 rounded-[var(--radius-md)] bg-[var(--bg-tertiary)]" }) }),
2099
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-2.5 bg-[var(--bg-tertiary)] border border-[var(--border-color)] rounded-b-sm" }),
2100
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-1 bg-[var(--bg-tertiary)] border-x border-b border-[var(--border-color)] rounded-b-[var(--radius-sm)] mx-[-4%]" })
2637
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoDevicesCTA_module_default.devices, children: [
2638
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoDevicesCTA_module_default.laptop, children: [
2639
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.laptopScreen, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.laptopScreenInner }) }),
2640
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.laptopHinge }),
2641
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.laptopBase })
2101
2642
  ] }),
2102
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-[40%] md:w-[28%] max-w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-[3/4] rounded-[var(--radius-xl)] border-2 border-[var(--border-color)] bg-[var(--bg-secondary)] overflow-hidden shadow-[var(--shadow-lg)]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-2.5 rounded-[var(--radius-lg)] bg-[var(--bg-tertiary)]" }) }) }),
2103
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-[24%] md:w-[14%] max-w-[140px]", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "aspect-[9/19] rounded-[clamp(12px,2vw,24px)] border-2 border-[var(--border-color)] bg-[var(--bg-secondary)] overflow-hidden shadow-[var(--shadow-lg)]", children: [
2104
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1.5 left-1/2 -translate-x-1/2 w-[40%] h-[3%] rounded-full bg-[var(--border-color)]" }),
2105
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-1.5 top-[6%] rounded-[clamp(8px,1.5vw,16px)] bg-[var(--bg-tertiary)]" })
2643
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.tablet, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.tabletShell, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.tabletScreen }) }) }),
2644
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.phone, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoDevicesCTA_module_default.phoneShell, children: [
2645
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.phoneNotch }),
2646
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoDevicesCTA_module_default.phoneScreen })
2106
2647
  ] }) })
2107
2648
  ] })
2108
2649
  ] });
2109
2650
  }
2651
+
2652
+ // src/organisms/PromoTestimonials.module.scss
2653
+ var PromoTestimonials_module_default = {
2654
+ root: "PromoTestimonials_module_root",
2655
+ wrapper: "PromoTestimonials_module_wrapper",
2656
+ avatarSection: "PromoTestimonials_module_avatarSection",
2657
+ avatarStack: "PromoTestimonials_module_avatarStack",
2658
+ avatarRing: "PromoTestimonials_module_avatarRing",
2659
+ overflowBadge: "PromoTestimonials_module_overflowBadge",
2660
+ overflowCircle: "PromoTestimonials_module_overflowCircle",
2661
+ headingSection: "PromoTestimonials_module_headingSection",
2662
+ heading: "PromoTestimonials_module_heading",
2663
+ subtitle: "PromoTestimonials_module_subtitle",
2664
+ cardsSection: "PromoTestimonials_module_cardsSection",
2665
+ cardsGrid: "PromoTestimonials_module_cardsGrid",
2666
+ card: "PromoTestimonials_module_card",
2667
+ quote: "PromoTestimonials_module_quote",
2668
+ author: "PromoTestimonials_module_author",
2669
+ authorName: "PromoTestimonials_module_authorName",
2670
+ authorRole: "PromoTestimonials_module_authorRole",
2671
+ mediaSection: "PromoTestimonials_module_mediaSection",
2672
+ mediaBox: "PromoTestimonials_module_mediaBox"
2673
+ };
2110
2674
  function PromoTestimonials({
2111
2675
  heading,
2112
2676
  subtitle,
@@ -2114,14 +2678,14 @@ function PromoTestimonials({
2114
2678
  media,
2115
2679
  className = ""
2116
2680
  }) {
2117
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `py-16 md:py-24 ${className}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative rounded-[clamp(20px,3vw,40px)] border border-[var(--border-color)] bg-[var(--bg)] overflow-hidden", children: [
2118
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center pt-10 md:pt-14 pb-2", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex -space-x-3", children: [
2681
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `${PromoTestimonials_module_default.root}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoTestimonials_module_default.wrapper, children: [
2682
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTestimonials_module_default.avatarSection, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoTestimonials_module_default.avatarStack, children: [
2119
2683
  testimonials.slice(0, 5).map((t, i) => {
2120
2684
  const initials = t.name.split(" ").map((n) => n[0]).join("").toUpperCase();
2121
2685
  return /* @__PURE__ */ jsxRuntime.jsx(
2122
2686
  "div",
2123
2687
  {
2124
- className: "relative ring-3 ring-[var(--bg)] rounded-full",
2688
+ className: PromoTestimonials_module_default.avatarRing,
2125
2689
  style: { zIndex: 10 - i },
2126
2690
  children: /* @__PURE__ */ jsxRuntime.jsx(
2127
2691
  Avatar,
@@ -2135,32 +2699,32 @@ function PromoTestimonials({
2135
2699
  i
2136
2700
  );
2137
2701
  }),
2138
- testimonials.length > 5 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative ring-3 ring-[var(--bg)] rounded-full z-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-10 h-10 rounded-full bg-[var(--bg-tertiary)] flex items-center justify-center text-xs font-semibold text-[var(--fg-secondary)]", children: [
2702
+ testimonials.length > 5 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTestimonials_module_default.overflowBadge, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoTestimonials_module_default.overflowCircle, children: [
2139
2703
  "+",
2140
2704
  testimonials.length - 5
2141
2705
  ] }) })
2142
2706
  ] }) }),
2143
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center px-6 pb-8 md:pb-10", children: [
2144
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-[clamp(1.75rem,4vw,2.75rem)] font-bold leading-[1.1] tracking-[-0.03em] text-[var(--fg)] text-balance", children: heading }),
2145
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-base text-[var(--fg-secondary)] leading-relaxed max-w-lg mx-auto", children: subtitle })
2707
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoTestimonials_module_default.headingSection, children: [
2708
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: PromoTestimonials_module_default.heading, children: heading }),
2709
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoTestimonials_module_default.subtitle, children: subtitle })
2146
2710
  ] }),
2147
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-6 md:px-10 pb-8 md:pb-12", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 md:gap-5", children: testimonials.map((t, i) => {
2711
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTestimonials_module_default.cardsSection, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTestimonials_module_default.cardsGrid, children: testimonials.map((t, i) => {
2148
2712
  const initials = t.name.split(" ").map((n) => n[0]).join("").toUpperCase();
2149
2713
  return /* @__PURE__ */ jsxRuntime.jsxs(
2150
2714
  "div",
2151
2715
  {
2152
- className: "flex flex-col gap-4 p-5 md:p-6 rounded-[var(--radius-xl)] border border-[var(--border-color)] bg-[var(--bg)] transition-shadow duration-[var(--transition-base)] hover:shadow-[var(--shadow-md)]",
2716
+ className: PromoTestimonials_module_default.card,
2153
2717
  children: [
2154
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-[var(--fg-secondary)] leading-relaxed flex-1", children: [
2718
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: PromoTestimonials_module_default.quote, children: [
2155
2719
  "\u201C",
2156
2720
  t.quote,
2157
2721
  "\u201D"
2158
2722
  ] }),
2159
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 pt-1", children: [
2723
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoTestimonials_module_default.author, children: [
2160
2724
  /* @__PURE__ */ jsxRuntime.jsx(Avatar, { size: "sm", src: t.avatarSrc, initials }),
2161
2725
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2162
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-[var(--fg)]", children: t.name }),
2163
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-[var(--fg-muted)]", children: t.role })
2726
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoTestimonials_module_default.authorName, children: t.name }),
2727
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoTestimonials_module_default.authorRole, children: t.role })
2164
2728
  ] })
2165
2729
  ] })
2166
2730
  ]
@@ -2168,9 +2732,30 @@ function PromoTestimonials({
2168
2732
  i
2169
2733
  );
2170
2734
  }) }) }),
2171
- media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-6 md:px-10 pb-8 md:pb-12", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-[var(--radius-xl)] bg-[var(--bg-secondary)] overflow-hidden", children: media }) })
2735
+ media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTestimonials_module_default.mediaSection, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoTestimonials_module_default.mediaBox, children: media }) })
2172
2736
  ] }) });
2173
2737
  }
2738
+
2739
+ // src/organisms/PromoHero.module.scss
2740
+ var PromoHero_module_default = {
2741
+ root: "PromoHero_module_root",
2742
+ dark: "PromoHero_module_dark",
2743
+ light: "PromoHero_module_light",
2744
+ gradient: "PromoHero_module_gradient",
2745
+ glowLayer: "PromoHero_module_glowLayer",
2746
+ glowTop: "PromoHero_module_glowTop",
2747
+ glowBottom: "PromoHero_module_glowBottom",
2748
+ inner: "PromoHero_module_inner",
2749
+ textColumn: "PromoHero_module_textColumn",
2750
+ title: "PromoHero_module_title",
2751
+ subtitle: "PromoHero_module_subtitle",
2752
+ subtitleDark: "PromoHero_module_subtitleDark",
2753
+ subtitleLight: "PromoHero_module_subtitleLight",
2754
+ actions: "PromoHero_module_actions",
2755
+ ctaDark: "PromoHero_module_ctaDark",
2756
+ ghostDark: "PromoHero_module_ghostDark",
2757
+ mediaColumn: "PromoHero_module_mediaColumn"
2758
+ };
2174
2759
  function PromoHero({
2175
2760
  title,
2176
2761
  subtitle,
@@ -2180,36 +2765,29 @@ function PromoHero({
2180
2765
  variant = "dark",
2181
2766
  className = ""
2182
2767
  }) {
2183
- const variantStyles5 = {
2184
- dark: "bg-[var(--neutral-900)] text-white",
2185
- light: "bg-[var(--bg)] text-[var(--fg)]",
2186
- gradient: "bg-gradient-to-br from-[var(--neutral-900)] via-[var(--neutral-800)] to-[var(--neutral-700)] text-white"
2187
- };
2188
- const subtitleColor = {
2189
- dark: "text-white/70",
2190
- light: "text-[var(--fg-secondary)]",
2191
- gradient: "text-white/70"
2192
- };
2768
+ const variantClass = variant === "dark" ? PromoHero_module_default.dark : variant === "gradient" ? PromoHero_module_default.gradient : PromoHero_module_default.light;
2769
+ const subtitleClass = variant === "light" ? PromoHero_module_default.subtitleLight : PromoHero_module_default.subtitleDark;
2770
+ const isLight = variant === "light";
2193
2771
  return /* @__PURE__ */ jsxRuntime.jsxs(
2194
2772
  "section",
2195
2773
  {
2196
- className: `relative overflow-hidden rounded-[clamp(20px,3vw,40px)] min-h-[480px] md:min-h-[600px] flex items-center ${variantStyles5[variant]} ${className}`,
2774
+ className: `${PromoHero_module_default.root} ${variantClass}${className ? ` ${className}` : ""}`,
2197
2775
  children: [
2198
- variant !== "light" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", "aria-hidden": "true", children: [
2199
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-[-20%] right-[-10%] w-[600px] h-[600px] rounded-full bg-white/[0.03] blur-[100px]" }),
2200
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-[-30%] left-[-5%] w-[400px] h-[400px] rounded-full bg-white/[0.02] blur-[80px]" })
2776
+ !isLight && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoHero_module_default.glowLayer, "aria-hidden": "true", children: [
2777
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoHero_module_default.glowTop }),
2778
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoHero_module_default.glowBottom })
2201
2779
  ] }),
2202
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 grid grid-cols-1 lg:grid-cols-2 gap-10 md:gap-16 w-full p-8 md:p-12 lg:p-16 items-center", children: [
2203
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5 md:gap-6", children: [
2204
- /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-[clamp(2.25rem,5.5vw,5rem)] font-bold leading-[0.95] tracking-[-0.04em] text-balance", children: title }),
2205
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-base md:text-lg leading-relaxed max-w-lg ${subtitleColor[variant]}`, children: subtitle }),
2206
- (cta || secondaryCta) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-3 mt-2", children: [
2780
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoHero_module_default.inner, children: [
2781
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoHero_module_default.textColumn, children: [
2782
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { className: PromoHero_module_default.title, children: title }),
2783
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `${PromoHero_module_default.subtitle} ${subtitleClass}`, children: subtitle }),
2784
+ (cta || secondaryCta) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoHero_module_default.actions, children: [
2207
2785
  cta && /* @__PURE__ */ jsxRuntime.jsx(
2208
2786
  Button,
2209
2787
  {
2210
- variant: variant === "light" ? "primary" : "outline",
2788
+ variant: isLight ? "primary" : "outline",
2211
2789
  onClick: cta.onClick,
2212
- className: variant !== "light" ? "border-white/20 text-white hover:bg-white/10" : "",
2790
+ className: !isLight ? PromoHero_module_default.ctaDark : "",
2213
2791
  children: cta.label
2214
2792
  }
2215
2793
  ),
@@ -2218,18 +2796,65 @@ function PromoHero({
2218
2796
  {
2219
2797
  variant: "ghost",
2220
2798
  onClick: secondaryCta.onClick,
2221
- className: variant !== "light" ? "text-white/70 hover:text-white hover:bg-white/5" : "",
2799
+ className: !isLight ? PromoHero_module_default.ghostDark : "",
2222
2800
  children: secondaryCta.label
2223
2801
  }
2224
2802
  )
2225
2803
  ] })
2226
2804
  ] }),
2227
- media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex items-center justify-center", children: media })
2805
+ media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoHero_module_default.mediaColumn, children: media })
2228
2806
  ] })
2229
2807
  ]
2230
2808
  }
2231
2809
  );
2232
2810
  }
2811
+
2812
+ // src/organisms/PromoPricing.module.scss
2813
+ var PromoPricing_module_default = {
2814
+ root: "PromoPricing_module_root",
2815
+ dark: "PromoPricing_module_dark",
2816
+ light: "PromoPricing_module_light",
2817
+ headingSection: "PromoPricing_module_headingSection",
2818
+ heading: "PromoPricing_module_heading",
2819
+ headingDark: "PromoPricing_module_headingDark",
2820
+ headingLight: "PromoPricing_module_headingLight",
2821
+ subtitle: "PromoPricing_module_subtitle",
2822
+ subtitleDark: "PromoPricing_module_subtitleDark",
2823
+ subtitleLight: "PromoPricing_module_subtitleLight",
2824
+ tiersGrid: "PromoPricing_module_tiersGrid",
2825
+ tierDefault: "PromoPricing_module_tierCard PromoPricing_module_tierDefault",
2826
+ tierHighlighted: "PromoPricing_module_tierCard PromoPricing_module_tierHighlighted",
2827
+ tierDark: "PromoPricing_module_tierCard PromoPricing_module_tierDark",
2828
+ tierDarkHighlighted: "PromoPricing_module_tierCard PromoPricing_module_tierDarkHighlighted",
2829
+ tierName: "PromoPricing_module_tierName",
2830
+ tierNameMuted: "PromoPricing_module_tierNameMuted",
2831
+ tierNameDark: "PromoPricing_module_tierNameDark",
2832
+ tierNameHighlightedLight: "PromoPricing_module_tierNameHighlightedLight",
2833
+ tierNameHighlightedDark: "PromoPricing_module_tierNameHighlightedDark",
2834
+ price: "PromoPricing_module_price",
2835
+ period: "PromoPricing_module_period",
2836
+ periodMuted: "PromoPricing_module_periodMuted",
2837
+ periodDark: "PromoPricing_module_periodDark",
2838
+ periodHighlightedLight: "PromoPricing_module_periodHighlightedLight",
2839
+ periodHighlightedDark: "PromoPricing_module_periodHighlightedDark",
2840
+ tierDesc: "PromoPricing_module_tierDesc",
2841
+ tierDescMuted: "PromoPricing_module_tierDescMuted",
2842
+ tierDescDark: "PromoPricing_module_tierDescDark",
2843
+ tierDescHighlightedLight: "PromoPricing_module_tierDescHighlightedLight",
2844
+ tierDescHighlightedDark: "PromoPricing_module_tierDescHighlightedDark",
2845
+ featureList: "PromoPricing_module_featureList",
2846
+ featureItem: "PromoPricing_module_featureItem",
2847
+ checkIcon: "PromoPricing_module_checkIcon",
2848
+ checkDefault: "PromoPricing_module_checkDefault",
2849
+ checkDark: "PromoPricing_module_checkDark",
2850
+ checkHighlightedLight: "PromoPricing_module_checkHighlightedLight",
2851
+ checkHighlightedDark: "PromoPricing_module_checkHighlightedDark",
2852
+ featureTextMuted: "PromoPricing_module_featureTextMuted",
2853
+ featureTextDark: "PromoPricing_module_featureTextDark",
2854
+ featureTextHighlightedLight: "PromoPricing_module_featureTextHighlightedLight",
2855
+ featureTextHighlightedDark: "PromoPricing_module_featureTextHighlightedDark",
2856
+ ctaWrap: "PromoPricing_module_ctaWrap"
2857
+ };
2233
2858
  function PromoPricing({
2234
2859
  heading,
2235
2860
  subtitle,
@@ -2238,39 +2863,51 @@ function PromoPricing({
2238
2863
  className = ""
2239
2864
  }) {
2240
2865
  const isDark = variant === "dark";
2866
+ const getTierClass = (highlighted) => {
2867
+ if (highlighted) return isDark ? PromoPricing_module_default.tierDarkHighlighted : PromoPricing_module_default.tierHighlighted;
2868
+ return isDark ? PromoPricing_module_default.tierDark : PromoPricing_module_default.tierDefault;
2869
+ };
2870
+ const getNameClass = (highlighted) => {
2871
+ if (highlighted) return isDark ? PromoPricing_module_default.tierNameHighlightedDark : PromoPricing_module_default.tierNameHighlightedLight;
2872
+ return isDark ? PromoPricing_module_default.tierNameDark : PromoPricing_module_default.tierNameMuted;
2873
+ };
2874
+ const getPeriodClass = (highlighted) => {
2875
+ if (highlighted) return isDark ? PromoPricing_module_default.periodHighlightedDark : PromoPricing_module_default.periodHighlightedLight;
2876
+ return isDark ? PromoPricing_module_default.periodDark : PromoPricing_module_default.periodMuted;
2877
+ };
2878
+ const getDescClass = (highlighted) => {
2879
+ if (highlighted) return isDark ? PromoPricing_module_default.tierDescHighlightedDark : PromoPricing_module_default.tierDescHighlightedLight;
2880
+ return isDark ? PromoPricing_module_default.tierDescDark : PromoPricing_module_default.tierDescMuted;
2881
+ };
2882
+ const getCheckClass = (highlighted) => {
2883
+ if (highlighted) return isDark ? PromoPricing_module_default.checkHighlightedDark : PromoPricing_module_default.checkHighlightedLight;
2884
+ return isDark ? PromoPricing_module_default.checkDark : PromoPricing_module_default.checkDefault;
2885
+ };
2886
+ const getFeatureTextClass = (highlighted) => {
2887
+ if (highlighted) return isDark ? PromoPricing_module_default.featureTextHighlightedDark : PromoPricing_module_default.featureTextHighlightedLight;
2888
+ return isDark ? PromoPricing_module_default.featureTextDark : PromoPricing_module_default.featureTextMuted;
2889
+ };
2241
2890
  return /* @__PURE__ */ jsxRuntime.jsxs(
2242
2891
  "section",
2243
2892
  {
2244
- className: `py-16 md:py-24 px-6 md:px-12 rounded-[clamp(20px,3vw,40px)] ${isDark ? "bg-[var(--neutral-900)] text-white" : "bg-[var(--bg)]"} ${className}`,
2893
+ className: `${PromoPricing_module_default.root} ${isDark ? PromoPricing_module_default.dark : PromoPricing_module_default.light}${className ? ` ${className}` : ""}`,
2245
2894
  children: [
2246
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center mb-10 md:mb-14 max-w-2xl mx-auto", children: [
2247
- /* @__PURE__ */ jsxRuntime.jsx(
2248
- "h2",
2249
- {
2250
- className: `text-[clamp(2rem,5vw,4.75rem)] font-bold leading-[0.95] tracking-[-0.04em] text-balance ${isDark ? "text-white" : "text-[var(--fg)]"}`,
2251
- children: heading
2252
- }
2253
- ),
2254
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `mt-4 text-base md:text-lg leading-relaxed ${isDark ? "text-white/60" : "text-[var(--fg-secondary)]"}`, children: subtitle })
2895
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoPricing_module_default.headingSection, children: [
2896
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: `${PromoPricing_module_default.heading} ${isDark ? PromoPricing_module_default.headingDark : PromoPricing_module_default.headingLight}`, children: heading }),
2897
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `${PromoPricing_module_default.subtitle} ${isDark ? PromoPricing_module_default.subtitleDark : PromoPricing_module_default.subtitleLight}`, children: subtitle })
2255
2898
  ] }),
2256
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5 md:gap-6 max-w-5xl mx-auto", children: tiers.map((tier, i) => /* @__PURE__ */ jsxRuntime.jsxs(
2899
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoPricing_module_default.tiersGrid, children: tiers.map((tier, i) => /* @__PURE__ */ jsxRuntime.jsxs(
2257
2900
  "div",
2258
2901
  {
2259
- className: `relative flex flex-col rounded-[var(--radius-xl)] p-6 md:p-8 transition-all duration-[var(--transition-base)] ${tier.highlighted ? isDark ? "bg-white text-[var(--neutral-900)] shadow-[0_0_60px_rgba(255,255,255,0.1)]" : "bg-[var(--fg)] text-[var(--bg)] shadow-[var(--shadow-xl)]" : isDark ? "bg-white/[0.06] border border-white/10 text-white hover:bg-white/[0.1]" : "bg-[var(--bg)] border border-[var(--border-color)] hover:shadow-[var(--shadow-md)] hover:-translate-y-0.5"}`,
2902
+ className: getTierClass(tier.highlighted),
2260
2903
  children: [
2261
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2262
- "h3",
2263
- {
2264
- className: `text-sm font-semibold uppercase tracking-[0.06em] ${tier.highlighted ? isDark ? "text-[var(--neutral-500)]" : "text-[var(--bg)]/60" : isDark ? "text-white/50" : "text-[var(--fg-muted)]"}`,
2265
- children: tier.name
2266
- }
2267
- ) }),
2268
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2", children: [
2269
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-4xl md:text-5xl font-bold tracking-[-0.03em]", children: tier.price }),
2270
- tier.period && /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-sm ml-1 ${tier.highlighted ? isDark ? "text-[var(--neutral-500)]" : "text-[var(--bg)]/50" : isDark ? "text-white/40" : "text-[var(--fg-muted)]"}`, children: tier.period })
2904
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoPricing_module_default.tierName, children: /* @__PURE__ */ jsxRuntime.jsx("h3", { className: getNameClass(tier.highlighted), children: tier.name }) }),
2905
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoPricing_module_default.price, children: [
2906
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: tier.price }),
2907
+ tier.period && /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${PromoPricing_module_default.period} ${getPeriodClass(tier.highlighted)}`, children: tier.period })
2271
2908
  ] }),
2272
- tier.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-sm mb-6 ${tier.highlighted ? isDark ? "text-[var(--neutral-600)]" : "text-[var(--bg)]/60" : isDark ? "text-white/50" : "text-[var(--fg-secondary)]"}`, children: tier.description }),
2273
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-2.5 mb-8 flex-1", children: tier.features.map((feature, fi) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2.5 text-sm", children: [
2909
+ tier.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `${PromoPricing_module_default.tierDesc} ${getDescClass(tier.highlighted)}`, children: tier.description }),
2910
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: PromoPricing_module_default.featureList, children: tier.features.map((feature, fi) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: PromoPricing_module_default.featureItem, children: [
2274
2911
  /* @__PURE__ */ jsxRuntime.jsx(
2275
2912
  "svg",
2276
2913
  {
@@ -2278,13 +2915,13 @@ function PromoPricing({
2278
2915
  height: "16",
2279
2916
  viewBox: "0 0 16 16",
2280
2917
  fill: "none",
2281
- className: `shrink-0 mt-0.5 ${tier.highlighted ? isDark ? "text-[var(--color-success)]" : "text-[var(--color-success-light)]" : isDark ? "text-white/40" : "text-[var(--color-success)]"}`,
2918
+ className: `${PromoPricing_module_default.checkIcon} ${getCheckClass(tier.highlighted)}`,
2282
2919
  children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3.5 8.5L6.5 11.5L12.5 4.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
2283
2920
  }
2284
2921
  ),
2285
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${tier.highlighted ? isDark ? "text-[var(--neutral-700)]" : "text-[var(--bg)]/80" : isDark ? "text-white/70" : "text-[var(--fg-secondary)]"}`, children: feature })
2922
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: getFeatureTextClass(tier.highlighted), children: feature })
2286
2923
  ] }, fi)) }),
2287
- tier.cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto", children: tier.cta })
2924
+ tier.cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoPricing_module_default.ctaWrap, children: tier.cta })
2288
2925
  ]
2289
2926
  },
2290
2927
  i
@@ -2293,6 +2930,24 @@ function PromoPricing({
2293
2930
  }
2294
2931
  );
2295
2932
  }
2933
+
2934
+ // src/organisms/PromoActionCards.module.scss
2935
+ var PromoActionCards_module_default = {
2936
+ root: "PromoActionCards_module_root",
2937
+ header: "PromoActionCards_module_header",
2938
+ heading: "PromoActionCards_module_heading",
2939
+ subtitle: "PromoActionCards_module_subtitle",
2940
+ grid2: "PromoActionCards_module_grid PromoActionCards_module_grid2",
2941
+ grid3: "PromoActionCards_module_grid PromoActionCards_module_grid3",
2942
+ card: "PromoActionCards_module_card",
2943
+ cardContent: "PromoActionCards_module_cardContent",
2944
+ cardTitle: "PromoActionCards_module_cardTitle",
2945
+ cardDesc: "PromoActionCards_module_cardDesc",
2946
+ cardFooter: "PromoActionCards_module_cardFooter",
2947
+ iconGroup: "PromoActionCards_module_iconGroup",
2948
+ iconCircle: "PromoActionCards_module_iconCircle",
2949
+ ctaBtn: "PromoActionCards_module_ctaBtn"
2950
+ };
2296
2951
  function PromoActionCards({
2297
2952
  heading,
2298
2953
  subtitle,
@@ -2300,28 +2955,28 @@ function PromoActionCards({
2300
2955
  columns = 3,
2301
2956
  className = ""
2302
2957
  }) {
2303
- const gridCols = columns === 2 ? "md:grid-cols-2" : "md:grid-cols-2 lg:grid-cols-3";
2304
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `py-16 md:py-24 ${className}`, children: [
2305
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-10 md:mb-14 max-w-xl", children: [
2306
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-[clamp(1.25rem,3vw,1.5rem)] font-medium leading-[1.3] tracking-[-0.01em] text-[var(--fg-secondary)] text-balance", children: heading }),
2307
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-[var(--fg-muted)]", children: subtitle })
2958
+ const gridClass = columns === 2 ? PromoActionCards_module_default.grid2 : PromoActionCards_module_default.grid3;
2959
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `${PromoActionCards_module_default.root}${className ? ` ${className}` : ""}`, children: [
2960
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoActionCards_module_default.header, children: [
2961
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: PromoActionCards_module_default.heading, children: heading }),
2962
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoActionCards_module_default.subtitle, children: subtitle })
2308
2963
  ] }),
2309
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `grid grid-cols-1 ${gridCols} gap-4 md:gap-5`, children: cards.map((card, i) => {
2964
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: gridClass, children: cards.map((card, i) => {
2310
2965
  var _a;
2311
2966
  return /* @__PURE__ */ jsxRuntime.jsxs(
2312
2967
  "div",
2313
2968
  {
2314
- className: "group flex flex-col gap-4 p-5 md:p-6 rounded-[var(--radius-xl)] border border-[var(--border-color)] bg-[var(--bg)] transition-all duration-[var(--transition-base)] hover:shadow-[var(--shadow-md)] hover:border-[var(--border-color-strong)]",
2969
+ className: PromoActionCards_module_default.card,
2315
2970
  children: [
2316
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 flex-1", children: [
2317
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-[15px] font-semibold text-[var(--fg)] leading-snug", children: card.title }),
2318
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-[var(--fg-secondary)] leading-relaxed", children: card.description })
2971
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoActionCards_module_default.cardContent, children: [
2972
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: PromoActionCards_module_default.cardTitle, children: card.title }),
2973
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: PromoActionCards_module_default.cardDesc, children: card.description })
2319
2974
  ] }),
2320
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between pt-1", children: [
2321
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: (_a = card.icons) == null ? void 0 : _a.map((icon, ii) => /* @__PURE__ */ jsxRuntime.jsx(
2975
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PromoActionCards_module_default.cardFooter, children: [
2976
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PromoActionCards_module_default.iconGroup, children: (_a = card.icons) == null ? void 0 : _a.map((icon, ii) => /* @__PURE__ */ jsxRuntime.jsx(
2322
2977
  "span",
2323
2978
  {
2324
- className: "w-7 h-7 rounded-full bg-[var(--bg-secondary)] flex items-center justify-center text-[var(--fg-secondary)]",
2979
+ className: PromoActionCards_module_default.iconCircle,
2325
2980
  children: icon
2326
2981
  },
2327
2982
  ii
@@ -2330,7 +2985,7 @@ function PromoActionCards({
2330
2985
  "button",
2331
2986
  {
2332
2987
  onClick: card.cta.onClick,
2333
- className: "inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full text-xs font-medium bg-[var(--fg)] text-[var(--bg)] hover:opacity-90 transition-opacity cursor-pointer",
2988
+ className: PromoActionCards_module_default.ctaBtn,
2334
2989
  children: [
2335
2990
  card.cta.label,
2336
2991
  /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "11", height: "11", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4.5 2.5l4 3.5-4 3.5" }) })
@@ -2345,6 +3000,22 @@ function PromoActionCards({
2345
3000
  }) })
2346
3001
  ] });
2347
3002
  }
3003
+
3004
+ // src/templates/ArticleHero.module.scss
3005
+ var ArticleHero_module_default = {
3006
+ root: "ArticleHero_module_root",
3007
+ bgLayer: "ArticleHero_module_bgLayer",
3008
+ bgImage: "ArticleHero_module_bgImage",
3009
+ overlay: "ArticleHero_module_overlay",
3010
+ topBar: "ArticleHero_module_topBar",
3011
+ logo: "ArticleHero_module_logo",
3012
+ divider: "ArticleHero_module_divider",
3013
+ nav: "ArticleHero_module_nav",
3014
+ bottom: "ArticleHero_module_bottom",
3015
+ category: "ArticleHero_module_category",
3016
+ title: "ArticleHero_module_title",
3017
+ subtitle: "ArticleHero_module_subtitle"
3018
+ };
2348
3019
  var DEFAULT_BG = "https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=1600&h=900&fit=crop&q=80";
2349
3020
  function ArticleHero({
2350
3021
  category,
@@ -2356,48 +3027,44 @@ function ArticleHero({
2356
3027
  className = ""
2357
3028
  }) {
2358
3029
  const bgSrc = backgroundImage != null ? backgroundImage : DEFAULT_BG;
2359
- return /* @__PURE__ */ jsxRuntime.jsxs(
2360
- "section",
2361
- {
2362
- className: `relative w-full rounded-[var(--radius-xl)] overflow-hidden min-h-[320px] md:min-h-[480px] flex flex-col justify-between p-5 md:p-10 ${className}`,
2363
- children: [
2364
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", children: [
2365
- /* @__PURE__ */ jsxRuntime.jsx(
2366
- "img",
2367
- {
2368
- src: bgSrc,
2369
- alt: "",
2370
- className: "absolute inset-0 w-full h-full object-cover"
2371
- }
2372
- ),
2373
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-black/40" })
2374
- ] }),
2375
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 flex items-center w-full", children: [
2376
- logo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 pr-4 md:pr-10", children: logo }),
2377
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 h-px bg-white/30" }),
2378
- nav && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 pl-4 md:pl-10", children: nav })
2379
- ] }),
2380
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 max-w-[500px]", children: [
2381
- category && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg text-white leading-7 mb-2", children: category }),
2382
- /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-[32px] leading-[34px] md:text-[60px] md:leading-[60px] font-normal text-white tracking-[-2px] md:tracking-[-3px] mb-4", children: title }),
2383
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg text-white/90 leading-[22.5px]", children: subtitle })
2384
- ] })
2385
- ]
2386
- }
2387
- );
3030
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `${ArticleHero_module_default.root}${className ? ` ${className}` : ""}`, children: [
3031
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleHero_module_default.bgLayer, children: [
3032
+ /* @__PURE__ */ jsxRuntime.jsx("img", { src: bgSrc, alt: "", className: ArticleHero_module_default.bgImage }),
3033
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleHero_module_default.overlay })
3034
+ ] }),
3035
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleHero_module_default.topBar, children: [
3036
+ logo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleHero_module_default.logo, children: logo }),
3037
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleHero_module_default.divider }),
3038
+ nav && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleHero_module_default.nav, children: nav })
3039
+ ] }),
3040
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleHero_module_default.bottom, children: [
3041
+ category && /* @__PURE__ */ jsxRuntime.jsx("p", { className: ArticleHero_module_default.category, children: category }),
3042
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { className: ArticleHero_module_default.title, children: title }),
3043
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: ArticleHero_module_default.subtitle, children: subtitle })
3044
+ ] })
3045
+ ] });
2388
3046
  }
3047
+
3048
+ // src/templates/ArticleBody.module.scss
3049
+ var ArticleBody_module_default = {
3050
+ root: "ArticleBody_module_root"
3051
+ };
2389
3052
  function ArticleBody({ children, className = "" }) {
2390
- return /* @__PURE__ */ jsxRuntime.jsx(
2391
- "div",
2392
- {
2393
- className: `text-[16px] leading-7 text-[var(--fg-secondary)] font-normal ${className}`,
2394
- children
2395
- }
2396
- );
3053
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${ArticleBody_module_default.root}${className ? ` ${className}` : ""}`, children });
2397
3054
  }
2398
- var levelStyles = {
2399
- 2: "text-[24px] leading-8 font-bold pt-12",
2400
- 3: "text-[20px] leading-8 font-semibold pt-8"
3055
+
3056
+ // src/templates/ArticleHeading.module.scss
3057
+ var ArticleHeading_module_default = {
3058
+ root: "ArticleHeading_module_root",
3059
+ header: "ArticleHeading_module_header",
3060
+ h2: "ArticleHeading_module_h2",
3061
+ h3: "ArticleHeading_module_h3",
3062
+ action: "ArticleHeading_module_action",
3063
+ subtitle: "ArticleHeading_module_subtitle"
3064
+ };
3065
+ var levelClass = {
3066
+ 2: ArticleHeading_module_default.h2,
3067
+ 3: ArticleHeading_module_default.h3
2401
3068
  };
2402
3069
  function ArticleHeading({
2403
3070
  level = 2,
@@ -2407,14 +3074,29 @@ function ArticleHeading({
2407
3074
  className = ""
2408
3075
  }) {
2409
3076
  const Tag2 = `h${level}`;
2410
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex flex-col gap-1 ${className}`, children: [
2411
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
2412
- /* @__PURE__ */ jsxRuntime.jsx(Tag2, { className: `text-[var(--fg)] tracking-tight ${levelStyles[level]}`, children }),
2413
- action && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0", children: action })
3077
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${ArticleHeading_module_default.root}${className ? ` ${className}` : ""}`, children: [
3078
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleHeading_module_default.header, children: [
3079
+ /* @__PURE__ */ jsxRuntime.jsx(Tag2, { className: levelClass[level], children }),
3080
+ action && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleHeading_module_default.action, children: action })
2414
3081
  ] }),
2415
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[14px] leading-5 text-[var(--fg-muted)]", children: subtitle })
3082
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: ArticleHeading_module_default.subtitle, children: subtitle })
2416
3083
  ] });
2417
3084
  }
3085
+
3086
+ // src/templates/ArticleFigure.module.scss
3087
+ var ArticleFigure_module_default = {
3088
+ root: "ArticleFigure_module_root",
3089
+ imageWrapper: "ArticleFigure_module_imageWrapper",
3090
+ image: "ArticleFigure_module_image",
3091
+ childWrapper: "ArticleFigure_module_childWrapper",
3092
+ placeholder: "ArticleFigure_module_placeholder",
3093
+ placeholderText: "ArticleFigure_module_placeholderText",
3094
+ legend: "ArticleFigure_module_legend",
3095
+ legendItem: "ArticleFigure_module_legendItem",
3096
+ legendSwatch: "ArticleFigure_module_legendSwatch",
3097
+ legendLabel: "ArticleFigure_module_legendLabel",
3098
+ caption: "ArticleFigure_module_caption"
3099
+ };
2418
3100
  function ArticleFigure({
2419
3101
  src,
2420
3102
  alt = "",
@@ -2424,37 +3106,52 @@ function ArticleFigure({
2424
3106
  children,
2425
3107
  className = ""
2426
3108
  }) {
2427
- return /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: `w-full ${className}`, children: [
3109
+ return /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: `${ArticleFigure_module_default.root}${className ? ` ${className}` : ""}`, children: [
2428
3110
  /* @__PURE__ */ jsxRuntime.jsx(
2429
3111
  "div",
2430
3112
  {
2431
- className: "w-full rounded-[var(--radius-lg)] overflow-hidden bg-[var(--bg-secondary)] flex items-center justify-center",
3113
+ className: ArticleFigure_module_default.imageWrapper,
2432
3114
  style: { minHeight: height },
2433
3115
  children: src ? (
2434
3116
  // eslint-disable-next-line @next/next/no-img-element
2435
- /* @__PURE__ */ jsxRuntime.jsx("img", { src, alt, className: "w-full h-full object-contain" })
2436
- ) : children ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full p-4", children }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-2 text-[var(--fg-muted)]", children: [
3117
+ /* @__PURE__ */ jsxRuntime.jsx("img", { src, alt, className: ArticleFigure_module_default.image })
3118
+ ) : children ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleFigure_module_default.childWrapper, children }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleFigure_module_default.placeholder, children: [
2437
3119
  /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "48", height: "48", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [
2438
3120
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
2439
3121
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3 16l5-5 4 4 4-6 5 7" })
2440
3122
  ] }),
2441
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: "Figure placeholder" })
3123
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleFigure_module_default.placeholderText, children: "Figure placeholder" })
2442
3124
  ] })
2443
3125
  }
2444
3126
  ),
2445
- legend && legend.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-4 mt-3 flex-wrap", children: legend.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
3127
+ legend && legend.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleFigure_module_default.legend, children: legend.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleFigure_module_default.legendItem, children: [
2446
3128
  /* @__PURE__ */ jsxRuntime.jsx(
2447
3129
  "span",
2448
3130
  {
2449
- className: "w-3 h-3 rounded-sm shrink-0",
3131
+ className: ArticleFigure_module_default.legendSwatch,
2450
3132
  style: { backgroundColor: item.color }
2451
3133
  }
2452
3134
  ),
2453
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] leading-4 text-[var(--fg-secondary)]", children: item.label })
3135
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleFigure_module_default.legendLabel, children: item.label })
2454
3136
  ] }, item.label)) }),
2455
- caption && /* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: "mt-2 text-[14px] leading-5 text-[var(--fg-muted)]", children: caption })
3137
+ caption && /* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: ArticleFigure_module_default.caption, children: caption })
2456
3138
  ] });
2457
3139
  }
3140
+
3141
+ // src/templates/ArticleTable.module.scss
3142
+ var ArticleTable_module_default = {
3143
+ root: "ArticleTable_module_root",
3144
+ headerRow: "ArticleTable_module_headerRow",
3145
+ rankCell: "ArticleTable_module_rankCell",
3146
+ headerCell: "ArticleTable_module_headerCell",
3147
+ headerLabel: "ArticleTable_module_headerLabel",
3148
+ row: "ArticleTable_module_row",
3149
+ rankValue: "ArticleTable_module_rankValue",
3150
+ cell: "ArticleTable_module_cell",
3151
+ cellText: "ArticleTable_module_cellText",
3152
+ badge: "ArticleTable_module_badge",
3153
+ showMore: "ArticleTable_module_showMore"
3154
+ };
2458
3155
  function ArticleTable({
2459
3156
  columns,
2460
3157
  rows,
@@ -2466,34 +3163,27 @@ function ArticleTable({
2466
3163
  const limit = initialVisible != null ? initialVisible : rows.length;
2467
3164
  const visibleRows = expanded ? rows : rows.slice(0, limit);
2468
3165
  const hiddenCount = rows.length - limit;
2469
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `w-full ${className}`, children: [
2470
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center border-b border-[var(--border-color)] pb-px", children: [
2471
- showRank && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[120px] shrink-0" }),
2472
- columns.map((col) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 px-4 py-3.5", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[14px] leading-5 font-medium text-[var(--fg-muted)]", children: col.label }) }, col.key))
3166
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${ArticleTable_module_default.root}${className ? ` ${className}` : ""}`, children: [
3167
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleTable_module_default.headerRow, children: [
3168
+ showRank && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleTable_module_default.rankCell }),
3169
+ columns.map((col) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleTable_module_default.headerCell, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleTable_module_default.headerLabel, children: col.label }) }, col.key))
2473
3170
  ] }),
2474
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: visibleRows.map((row, i) => /* @__PURE__ */ jsxRuntime.jsxs(
2475
- "div",
2476
- {
2477
- className: "flex items-center gap-4 border-b border-[var(--border-color)] last:border-b-0",
2478
- children: [
2479
- showRank && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[120px] shrink-0 px-4 py-4", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[14px] leading-5 text-[var(--fg-muted)]", children: i + 1 }) }),
2480
- columns.map((col) => {
2481
- const value = row[col.key];
2482
- const hasBadge = row._badge && row._badgeColumn === col.key;
2483
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 px-4 py-4 flex items-center gap-3", children: [
2484
- col.render ? col.render(value, row) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[14px] leading-5 text-[var(--fg-secondary)]", children: String(value != null ? value : "") }),
2485
- hasBadge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center px-2.5 py-0.5 rounded-full text-[12px] leading-4 font-semibold bg-[var(--bg-tertiary)] text-[var(--fg)]", children: row._badge })
2486
- ] }, col.key);
2487
- })
2488
- ]
2489
- },
2490
- i
2491
- )) }),
3171
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: visibleRows.map((row, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleTable_module_default.row, children: [
3172
+ showRank && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleTable_module_default.rankValue, children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: i + 1 }) }),
3173
+ columns.map((col) => {
3174
+ const value = row[col.key];
3175
+ const hasBadge = row._badge && row._badgeColumn === col.key;
3176
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleTable_module_default.cell, children: [
3177
+ col.render ? col.render(value, row) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleTable_module_default.cellText, children: String(value != null ? value : "") }),
3178
+ hasBadge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleTable_module_default.badge, children: row._badge })
3179
+ ] }, col.key);
3180
+ })
3181
+ ] }, i)) }),
2492
3182
  hiddenCount > 0 && !expanded && /* @__PURE__ */ jsxRuntime.jsxs(
2493
3183
  "button",
2494
3184
  {
2495
3185
  onClick: () => setExpanded(true),
2496
- className: "mt-4 text-[14px] leading-5 font-medium text-[var(--fg-muted)] hover:text-[var(--fg)] transition-colors cursor-pointer",
3186
+ className: ArticleTable_module_default.showMore,
2497
3187
  children: [
2498
3188
  "Show ",
2499
3189
  hiddenCount,
@@ -2503,34 +3193,62 @@ function ArticleTable({
2503
3193
  )
2504
3194
  ] });
2505
3195
  }
3196
+
3197
+ // src/templates/ArticleList.module.scss
3198
+ var ArticleList_module_default = {
3199
+ root: "ArticleList_module_root",
3200
+ ordered: "ArticleList_module_ordered",
3201
+ unordered: "ArticleList_module_unordered",
3202
+ item: "ArticleList_module_item"
3203
+ };
2506
3204
  function ArticleList({
2507
3205
  variant = "unordered",
2508
3206
  items,
2509
3207
  className = ""
2510
3208
  }) {
2511
3209
  const Tag2 = variant === "ordered" ? "ol" : "ul";
2512
- const markerClass = variant === "ordered" ? "list-decimal" : "list-disc";
3210
+ const variantClass = variant === "ordered" ? ArticleList_module_default.ordered : ArticleList_module_default.unordered;
2513
3211
  return /* @__PURE__ */ jsxRuntime.jsx(
2514
3212
  Tag2,
2515
3213
  {
2516
- className: `pl-[26px] flex flex-col gap-2 text-[16px] leading-7 text-[var(--fg-secondary)] ${markerClass} ${className}`,
2517
- children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "pl-1", children: item }, i))
3214
+ className: `${ArticleList_module_default.root} ${variantClass}${className ? ` ${className}` : ""}`,
3215
+ children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: ArticleList_module_default.item, children: item }, i))
2518
3216
  }
2519
3217
  );
2520
3218
  }
3219
+
3220
+ // src/templates/ArticleNote.module.scss
3221
+ var ArticleNote_module_default = {
3222
+ root: "ArticleNote_module_root"
3223
+ };
2521
3224
  function ArticleNote({ children, className = "" }) {
2522
- return /* @__PURE__ */ jsxRuntime.jsx(
2523
- "p",
2524
- {
2525
- className: `text-[16px] leading-7 text-[var(--fg-secondary)] italic ${className}`,
2526
- children
2527
- }
2528
- );
3225
+ return /* @__PURE__ */ jsxRuntime.jsx("p", { className: `${ArticleNote_module_default.root}${className ? ` ${className}` : ""}`, children });
2529
3226
  }
2530
- var roleStyles = {
2531
- assistant: { bg: "bg-[var(--bg-secondary)]", label: "text-[var(--fg-secondary)]", gradient: "var(--bg-secondary)" },
2532
- system: { bg: "bg-[var(--bg-tertiary)]", label: "text-[var(--fg-secondary)]", gradient: "var(--bg-tertiary)" },
2533
- user: { bg: "bg-[var(--bg-secondary)]", label: "text-[var(--fg-secondary)]", gradient: "var(--bg-secondary)" }
3227
+
3228
+ // src/templates/ArticleChatBlock.module.scss
3229
+ var ArticleChatBlock_module_default = {
3230
+ root: "ArticleChatBlock_module_root",
3231
+ assistant: "ArticleChatBlock_module_assistant",
3232
+ system: "ArticleChatBlock_module_system",
3233
+ user: "ArticleChatBlock_module_user",
3234
+ header: "ArticleChatBlock_module_header",
3235
+ roleLabel: "ArticleChatBlock_module_roleLabel",
3236
+ toolBadge: "ArticleChatBlock_module_toolBadge",
3237
+ toolBadgeInner: "ArticleChatBlock_module_toolBadgeInner",
3238
+ toolDot: "ArticleChatBlock_module_toolDot",
3239
+ toolLabel: "ArticleChatBlock_module_toolLabel",
3240
+ divider: "ArticleChatBlock_module_divider",
3241
+ contentWrapper: "ArticleChatBlock_module_contentWrapper",
3242
+ content: "ArticleChatBlock_module_content",
3243
+ fadeOverlay: "ArticleChatBlock_module_fadeOverlay",
3244
+ fadeGradient: "ArticleChatBlock_module_fadeGradient",
3245
+ showMoreBar: "ArticleChatBlock_module_showMoreBar",
3246
+ showMoreBtn: "ArticleChatBlock_module_showMoreBtn"
3247
+ };
3248
+ var roleConfig = {
3249
+ assistant: { cls: ArticleChatBlock_module_default.assistant, gradient: "var(--bg-secondary)" },
3250
+ system: { cls: ArticleChatBlock_module_default.system, gradient: "var(--bg-tertiary)" },
3251
+ user: { cls: ArticleChatBlock_module_default.user, gradient: "var(--bg-secondary)" }
2534
3252
  };
2535
3253
  function ArticleChatBlock({
2536
3254
  role,
@@ -2543,41 +3261,41 @@ function ArticleChatBlock({
2543
3261
  }) {
2544
3262
  var _a;
2545
3263
  const [expanded, setExpanded] = react.useState(false);
2546
- const styles = (_a = roleStyles[role]) != null ? _a : roleStyles.assistant;
2547
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `w-full rounded-[var(--radius-lg)] overflow-hidden ${styles.bg} ${className}`, children: [
2548
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 px-5 pt-4 pb-2", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `text-[12px] leading-4 ${styles.label}`, children: [
3264
+ const config = (_a = roleConfig[role]) != null ? _a : roleConfig.assistant;
3265
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${ArticleChatBlock_module_default.root} ${config.cls}${className ? ` ${className}` : ""}`, children: [
3266
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleChatBlock_module_default.header, children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: ArticleChatBlock_module_default.roleLabel, children: [
2549
3267
  role,
2550
3268
  model && ` \u2022 ${model}`
2551
3269
  ] }) }),
2552
- toolCall && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-5 pb-2", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1.5 px-3 py-1 rounded-full border border-[var(--border-color)] bg-[var(--bg)]", children: [
2553
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-[var(--color-accent)]" }),
2554
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] font-medium tracking-[-0.25px] text-[var(--fg-secondary)]", children: toolCall })
3270
+ toolCall && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleChatBlock_module_default.toolBadge, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleChatBlock_module_default.toolBadgeInner, children: [
3271
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleChatBlock_module_default.toolDot }),
3272
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleChatBlock_module_default.toolLabel, children: toolCall })
2555
3273
  ] }) }),
2556
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-5 h-px bg-[var(--border-color)]" }),
2557
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
3274
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleChatBlock_module_default.divider }),
3275
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleChatBlock_module_default.contentWrapper, children: [
2558
3276
  /* @__PURE__ */ jsxRuntime.jsx(
2559
3277
  "div",
2560
3278
  {
2561
- className: "px-5 py-4 text-[14px] leading-6 text-[var(--fg-secondary)] overflow-hidden transition-all",
3279
+ className: ArticleChatBlock_module_default.content,
2562
3280
  style: collapsible && !expanded ? { maxHeight: collapsedHeight, overflow: "hidden" } : void 0,
2563
3281
  children
2564
3282
  }
2565
3283
  ),
2566
- collapsible && !expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute bottom-0 left-0 right-0", children: [
3284
+ collapsible && !expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleChatBlock_module_default.fadeOverlay, children: [
2567
3285
  /* @__PURE__ */ jsxRuntime.jsx(
2568
3286
  "div",
2569
3287
  {
2570
- className: "h-16 pointer-events-none",
3288
+ className: ArticleChatBlock_module_default.fadeGradient,
2571
3289
  style: {
2572
- background: `linear-gradient(to top, ${styles.gradient}, transparent)`
3290
+ background: `linear-gradient(to top, ${config.gradient}, transparent)`
2573
3291
  }
2574
3292
  }
2575
3293
  ),
2576
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `px-5 pb-4 ${styles.bg}`, children: /* @__PURE__ */ jsxRuntime.jsx(
3294
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${ArticleChatBlock_module_default.showMoreBar} ${config.cls}`, children: /* @__PURE__ */ jsxRuntime.jsx(
2577
3295
  "button",
2578
3296
  {
2579
3297
  onClick: () => setExpanded(true),
2580
- className: "text-[14px] leading-5 font-medium text-[var(--fg-muted)] hover:text-[var(--fg)] transition-colors cursor-pointer",
3298
+ className: ArticleChatBlock_module_default.showMoreBtn,
2581
3299
  children: "Show more"
2582
3300
  }
2583
3301
  ) })
@@ -2585,40 +3303,79 @@ function ArticleChatBlock({
2585
3303
  ] })
2586
3304
  ] });
2587
3305
  }
3306
+
3307
+ // src/templates/ArticleLinkButton.module.scss
3308
+ var ArticleLinkButton_module_default = {
3309
+ root: "ArticleLinkButton_module_root"
3310
+ };
2588
3311
  function ArticleLinkButton({
2589
3312
  children,
2590
3313
  href,
2591
3314
  onClick,
2592
3315
  className = ""
2593
3316
  }) {
2594
- const baseClass = `inline-flex items-center justify-center px-4 py-2 rounded-full bg-[var(--fg)] text-[13px] font-medium tracking-[-0.25px] text-[var(--bg)] border border-[var(--bg)] shadow-[var(--shadow-sm)] hover:opacity-90 active:opacity-80 transition-all duration-[var(--transition-fast)] cursor-pointer ${className}`;
3317
+ const cls = `${ArticleLinkButton_module_default.root}${className ? ` ${className}` : ""}`;
2595
3318
  if (href) {
2596
- return /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: baseClass, children });
3319
+ return /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: cls, children });
2597
3320
  }
2598
- return /* @__PURE__ */ jsxRuntime.jsx("button", { onClick, className: baseClass, children });
3321
+ return /* @__PURE__ */ jsxRuntime.jsx("button", { onClick, className: cls, children });
2599
3322
  }
3323
+
3324
+ // src/templates/ArticleFooter.module.scss
3325
+ var ArticleFooter_module_default = {
3326
+ root: "ArticleFooter_module_root",
3327
+ topBar: "ArticleFooter_module_topBar",
3328
+ logo: "ArticleFooter_module_logo",
3329
+ divider: "ArticleFooter_module_divider",
3330
+ copyright: "ArticleFooter_module_copyright"
3331
+ };
2600
3332
  function ArticleFooter({
2601
3333
  logo,
2602
3334
  copyright = `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} All rights reserved.`,
2603
3335
  className = ""
2604
3336
  }) {
2605
- return /* @__PURE__ */ jsxRuntime.jsxs("footer", { className: `w-full px-20 py-10 flex flex-col gap-10 ${className}`, children: [
2606
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center", children: [
2607
- logo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 pr-10", children: logo }),
2608
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 h-px bg-[var(--fg)]" })
3337
+ return /* @__PURE__ */ jsxRuntime.jsxs("footer", { className: `${ArticleFooter_module_default.root}${className ? ` ${className}` : ""}`, children: [
3338
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleFooter_module_default.topBar, children: [
3339
+ logo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleFooter_module_default.logo, children: logo }),
3340
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleFooter_module_default.divider })
2609
3341
  ] }),
2610
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[14px] leading-5 text-[var(--fg-muted)]", children: copyright })
3342
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: ArticleFooter_module_default.copyright, children: copyright })
2611
3343
  ] });
2612
3344
  }
3345
+
3346
+ // src/templates/ArticleLayout.module.scss
3347
+ var ArticleLayout_module_default = {
3348
+ root: "ArticleLayout_module_root",
3349
+ wide: "ArticleLayout_module_wide",
3350
+ narrow: "ArticleLayout_module_narrow"
3351
+ };
2613
3352
  function ArticleLayout({ children, className = "" }) {
2614
- return /* @__PURE__ */ jsxRuntime.jsx("article", { className: `w-full max-w-[1100px] mx-auto flex flex-col gap-5 ${className}`, children });
3353
+ return /* @__PURE__ */ jsxRuntime.jsx("article", { className: `${ArticleLayout_module_default.root}${className ? ` ${className}` : ""}`, children });
2615
3354
  }
2616
3355
  function ArticleWide({ children, className = "" }) {
2617
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-full ${className}`, children });
3356
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${ArticleLayout_module_default.wide}${className ? ` ${className}` : ""}`, children });
2618
3357
  }
2619
3358
  function ArticleNarrow({ children, className = "" }) {
2620
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-full max-w-[720px] ${className}`, children });
3359
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${ArticleLayout_module_default.narrow}${className ? ` ${className}` : ""}`, children });
2621
3360
  }
3361
+
3362
+ // src/templates/ArticleChart.module.scss
3363
+ var ArticleChart_module_default = {
3364
+ figure: "ArticleChart_module_figure",
3365
+ chartWrapper: "ArticleChart_module_chartWrapper",
3366
+ tooltip: "ArticleChart_module_tooltip",
3367
+ tooltipLabel: "ArticleChart_module_tooltipLabel",
3368
+ tooltipRow: "ArticleChart_module_tooltipRow",
3369
+ tooltipDot: "ArticleChart_module_tooltipDot",
3370
+ tooltipName: "ArticleChart_module_tooltipName",
3371
+ tooltipValue: "ArticleChart_module_tooltipValue",
3372
+ scatterTooltipLabel: "ArticleChart_module_scatterTooltipLabel",
3373
+ scatterTooltipRow: "ArticleChart_module_scatterTooltipRow",
3374
+ legend: "ArticleChart_module_legend",
3375
+ legendItem: "ArticleChart_module_legendItem",
3376
+ legendSwatch: "ArticleChart_module_legendSwatch",
3377
+ legendLabel: "ArticleChart_module_legendLabel"
3378
+ };
2622
3379
  function ChartTooltip({
2623
3380
  active,
2624
3381
  payload,
@@ -2629,15 +3386,15 @@ function ChartTooltip({
2629
3386
  }) {
2630
3387
  if (!active || !(payload == null ? void 0 : payload.length)) return null;
2631
3388
  const fmt = valueFormatter != null ? valueFormatter : ((v) => String(v));
2632
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-[var(--bg)] border border-[var(--border-color)] rounded-[var(--radius-md)] shadow-[var(--shadow-md)] px-3 py-2 text-[12px] leading-4", children: [
2633
- label !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[var(--fg-muted)] mb-1", children: [
3389
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleChart_module_default.tooltip, children: [
3390
+ label !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: ArticleChart_module_default.tooltipLabel, children: [
2634
3391
  xLabel ? `${xLabel}: ` : "",
2635
3392
  label
2636
3393
  ] }),
2637
- payload.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
2638
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-2 h-2 rounded-full shrink-0", style: { backgroundColor: entry.color } }),
2639
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[var(--fg-secondary)]", children: entry.name }),
2640
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-[var(--fg)] ml-auto pl-3", children: yLabel ? `${fmt(entry.value)} ` : fmt(entry.value) })
3394
+ payload.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleChart_module_default.tooltipRow, children: [
3395
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleChart_module_default.tooltipDot, style: { backgroundColor: entry.color } }),
3396
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleChart_module_default.tooltipName, children: entry.name }),
3397
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleChart_module_default.tooltipValue, children: yLabel ? `${fmt(entry.value)} ` : fmt(entry.value) })
2641
3398
  ] }, i))
2642
3399
  ] });
2643
3400
  }
@@ -2651,8 +3408,8 @@ function ArticleLineChart({
2651
3408
  valueFormatter,
2652
3409
  className = ""
2653
3410
  }) {
2654
- return /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: `w-full ${className}`, children: [
2655
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full", style: { height }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.LineChart, { data, margin: { top: 8, right: 16, bottom: 4, left: 8 }, children: [
3411
+ return /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: `${ArticleChart_module_default.figure}${className ? ` ${className}` : ""}`, children: [
3412
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleChart_module_default.chartWrapper, style: { height }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.LineChart, { data, margin: { top: 8, right: 16, bottom: 4, left: 8 }, children: [
2656
3413
  /* @__PURE__ */ jsxRuntime.jsx(recharts.CartesianGrid, { strokeDasharray: "3 3", stroke: "var(--border-color)" }),
2657
3414
  /* @__PURE__ */ jsxRuntime.jsx(
2658
3415
  recharts.XAxis,
@@ -2702,9 +3459,9 @@ function ArticleLineChart({
2702
3459
  s.dataKey
2703
3460
  ))
2704
3461
  ] }) }) }),
2705
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-4 mt-3 flex-wrap", children: series.map((s) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
2706
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-3 h-3 rounded-sm shrink-0", style: { backgroundColor: s.color } }),
2707
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] leading-4 text-[var(--fg-secondary)]", children: s.name })
3462
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleChart_module_default.legend, children: series.map((s) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleChart_module_default.legendItem, children: [
3463
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleChart_module_default.legendSwatch, style: { backgroundColor: s.color } }),
3464
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleChart_module_default.legendLabel, children: s.name })
2708
3465
  ] }, s.dataKey)) })
2709
3466
  ] });
2710
3467
  }
@@ -2719,8 +3476,8 @@ function ArticleBarChart({
2719
3476
  valueFormatter,
2720
3477
  className = ""
2721
3478
  }) {
2722
- return /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: `w-full ${className}`, children: [
2723
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full", style: { height }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.BarChart, { data, margin: { top: 8, right: 16, bottom: 4, left: 8 }, children: [
3479
+ return /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: `${ArticleChart_module_default.figure}${className ? ` ${className}` : ""}`, children: [
3480
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleChart_module_default.chartWrapper, style: { height }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.BarChart, { data, margin: { top: 8, right: 16, bottom: 4, left: 8 }, children: [
2724
3481
  /* @__PURE__ */ jsxRuntime.jsx(recharts.CartesianGrid, { strokeDasharray: "3 3", stroke: "var(--border-color)", vertical: false }),
2725
3482
  /* @__PURE__ */ jsxRuntime.jsx(
2726
3483
  recharts.XAxis,
@@ -2768,9 +3525,9 @@ function ArticleBarChart({
2768
3525
  s.dataKey
2769
3526
  ))
2770
3527
  ] }) }) }),
2771
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-4 mt-3 flex-wrap", children: series.map((s) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
2772
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-3 h-3 rounded-sm shrink-0", style: { backgroundColor: s.color } }),
2773
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] leading-4 text-[var(--fg-secondary)]", children: s.name })
3528
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleChart_module_default.legend, children: series.map((s) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleChart_module_default.legendItem, children: [
3529
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleChart_module_default.legendSwatch, style: { backgroundColor: s.color } }),
3530
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ArticleChart_module_default.legendLabel, children: s.name })
2774
3531
  ] }, s.dataKey)) })
2775
3532
  ] });
2776
3533
  }
@@ -2788,7 +3545,7 @@ function ArticleScatterChart({
2788
3545
  var _a;
2789
3546
  return (_a = d.color) != null ? _a : color;
2790
3547
  });
2791
- return /* @__PURE__ */ jsxRuntime.jsx("figure", { className: `w-full ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full", style: { height }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.ScatterChart, { margin: { top: 8, right: 16, bottom: 4, left: 8 }, children: [
3548
+ return /* @__PURE__ */ jsxRuntime.jsx("figure", { className: `${ArticleChart_module_default.figure}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: ArticleChart_module_default.chartWrapper, style: { height }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.ScatterChart, { margin: { top: 8, right: 16, bottom: 4, left: 8 }, children: [
2792
3549
  /* @__PURE__ */ jsxRuntime.jsx(recharts.CartesianGrid, { strokeDasharray: "3 3", stroke: "var(--border-color)" }),
2793
3550
  /* @__PURE__ */ jsxRuntime.jsx(
2794
3551
  recharts.XAxis,
@@ -2824,14 +3581,14 @@ function ArticleScatterChart({
2824
3581
  if (!active || !(payload == null ? void 0 : payload.length)) return null;
2825
3582
  const point = (_a = payload[0]) == null ? void 0 : _a.payload;
2826
3583
  const fmt = valueFormatter != null ? valueFormatter : ((v) => String(v));
2827
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-[var(--bg)] border border-[var(--border-color)] rounded-[var(--radius-md)] shadow-[var(--shadow-md)] px-3 py-2 text-[12px] leading-4", children: [
2828
- point.label && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-[var(--fg)] mb-1", children: point.label }),
2829
- xLabel && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[var(--fg-secondary)]", children: [
3584
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ArticleChart_module_default.tooltip, children: [
3585
+ point.label && /* @__PURE__ */ jsxRuntime.jsx("p", { className: ArticleChart_module_default.scatterTooltipLabel, children: point.label }),
3586
+ xLabel && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: ArticleChart_module_default.scatterTooltipRow, children: [
2830
3587
  xLabel,
2831
3588
  ": ",
2832
3589
  fmt(point.x)
2833
3590
  ] }),
2834
- yLabel && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[var(--fg-secondary)]", children: [
3591
+ yLabel && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: ArticleChart_module_default.scatterTooltipRow, children: [
2835
3592
  yLabel,
2836
3593
  ": ",
2837
3594
  fmt(point.y)
@@ -2843,6 +3600,16 @@ function ArticleScatterChart({
2843
3600
  /* @__PURE__ */ jsxRuntime.jsx(recharts.Scatter, { data, children: data.map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(recharts.Cell, { fill: colors[i], r: 6 }, i)) })
2844
3601
  ] }) }) }) });
2845
3602
  }
3603
+
3604
+ // src/templates/LandingLayout.module.scss
3605
+ var LandingLayout_module_default = {
3606
+ headerMode: "LandingLayout_module_headerMode",
3607
+ headerMain: "LandingLayout_module_headerMain",
3608
+ sidebarMode: "LandingLayout_module_sidebarMode",
3609
+ sidebarNav: "LandingLayout_module_sidebarNav",
3610
+ sidebarMain: "LandingLayout_module_sidebarMain",
3611
+ sidebarContent: "LandingLayout_module_sidebarContent"
3612
+ };
2846
3613
  function LandingLayout({
2847
3614
  mode = "header",
2848
3615
  nav,
@@ -2850,14 +3617,14 @@ function LandingLayout({
2850
3617
  className = ""
2851
3618
  }) {
2852
3619
  if (mode === "sidebar") {
2853
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex min-h-screen bg-[var(--bg)] ${className}`, children: [
2854
- nav && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden md:flex shrink-0", children: nav }),
2855
- /* @__PURE__ */ jsxRuntime.jsx("main", { className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-6 md:px-10 lg:px-16 max-w-5xl", children }) })
3620
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${LandingLayout_module_default.sidebarMode}${className ? ` ${className}` : ""}`, children: [
3621
+ nav && /* @__PURE__ */ jsxRuntime.jsx("div", { className: LandingLayout_module_default.sidebarNav, children: nav }),
3622
+ /* @__PURE__ */ jsxRuntime.jsx("main", { className: LandingLayout_module_default.sidebarMain, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: LandingLayout_module_default.sidebarContent, children }) })
2856
3623
  ] });
2857
3624
  }
2858
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `min-h-screen bg-[var(--bg)] ${className}`, children: [
3625
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${LandingLayout_module_default.headerMode}${className ? ` ${className}` : ""}`, children: [
2859
3626
  nav,
2860
- /* @__PURE__ */ jsxRuntime.jsx("main", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children })
3627
+ /* @__PURE__ */ jsxRuntime.jsx("main", { className: LandingLayout_module_default.headerMain, children })
2861
3628
  ] });
2862
3629
  }
2863
3630