sa2kit 1.6.6 → 1.6.7

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.js CHANGED
@@ -6,7 +6,7 @@ var chunkLX4XX6W7_js = require('./chunk-LX4XX6W7.js');
6
6
  require('./chunk-QU5OT4DF.js');
7
7
  var chunk6PRFP5EG_js = require('./chunk-6PRFP5EG.js');
8
8
  require('./chunk-DGUM43GV.js');
9
- var React33 = require('react');
9
+ var React37 = require('react');
10
10
  var tesseract_js = require('tesseract.js');
11
11
  var lucideReact = require('lucide-react');
12
12
  var reactSlot = require('@radix-ui/react-slot');
@@ -23,8 +23,12 @@ var SelectPrimitive = require('@radix-ui/react-select');
23
23
  var SeparatorPrimitive = require('@radix-ui/react-separator');
24
24
  var TooltipPrimitive = require('@radix-ui/react-tooltip');
25
25
  var AvatarPrimitive = require('@radix-ui/react-avatar');
26
+ var navigation = require('next/navigation');
27
+ var Link = require('next/link');
26
28
  var reactDom = require('react-dom');
27
29
 
30
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
31
+
28
32
  function _interopNamespace(e) {
29
33
  if (e && e.__esModule) return e;
30
34
  var n = Object.create(null);
@@ -43,7 +47,7 @@ function _interopNamespace(e) {
43
47
  return Object.freeze(n);
44
48
  }
45
49
 
46
- var React33__namespace = /*#__PURE__*/_interopNamespace(React33);
50
+ var React37__namespace = /*#__PURE__*/_interopNamespace(React37);
47
51
  var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
48
52
  var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
49
53
  var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive);
@@ -56,23 +60,24 @@ var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive)
56
60
  var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
57
61
  var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
58
62
  var AvatarPrimitive__namespace = /*#__PURE__*/_interopNamespace(AvatarPrimitive);
63
+ var Link__default = /*#__PURE__*/_interopDefault(Link);
59
64
 
60
65
  var useOCR = (options = {}) => {
61
- const [state, setState] = React33.useState({
66
+ const [state, setState] = React37.useState({
62
67
  isProcessing: false,
63
68
  progress: 0,
64
69
  status: "idle",
65
70
  error: null,
66
71
  result: null
67
72
  });
68
- const workerRef = React33.useRef(null);
69
- const cleanup = React33.useCallback(async () => {
73
+ const workerRef = React37.useRef(null);
74
+ const cleanup = React37.useCallback(async () => {
70
75
  if (workerRef.current) {
71
76
  await workerRef.current.terminate();
72
77
  workerRef.current = null;
73
78
  }
74
79
  }, []);
75
- const recognize = React33.useCallback(
80
+ const recognize = React37.useCallback(
76
81
  async (image) => {
77
82
  setState((prev) => ({
78
83
  ...prev,
@@ -131,7 +136,7 @@ var useOCR = (options = {}) => {
131
136
  },
132
137
  [options]
133
138
  );
134
- React33.useEffect(() => {
139
+ React37.useEffect(() => {
135
140
  return () => {
136
141
  cleanup();
137
142
  };
@@ -147,8 +152,8 @@ var OCRScanner = ({
147
152
  className = "",
148
153
  language = "eng"
149
154
  }) => {
150
- const [imagePreview, setImagePreview] = React33.useState(null);
151
- const fileInputRef = React33.useRef(null);
155
+ const [imagePreview, setImagePreview] = React37.useState(null);
156
+ const fileInputRef = React37.useRef(null);
152
157
  const { recognize, isProcessing, progress, status, result, error } = useOCR({
153
158
  language
154
159
  });
@@ -184,43 +189,43 @@ var OCRScanner = ({
184
189
  handleFileChange(mockEvent);
185
190
  }
186
191
  };
187
- return /* @__PURE__ */ React33__namespace.default.createElement(
192
+ return /* @__PURE__ */ React37__namespace.default.createElement(
188
193
  "div",
189
194
  {
190
195
  className: `p-6 border-2 border-dashed rounded-xl transition-all ${isProcessing ? "border-blue-400 bg-blue-50/10" : "border-gray-200 hover:border-blue-400"} ${className}`,
191
196
  onDragOver: handleDragOver,
192
197
  onDrop: handleDrop
193
198
  },
194
- !imagePreview ? /* @__PURE__ */ React33__namespace.default.createElement(
199
+ !imagePreview ? /* @__PURE__ */ React37__namespace.default.createElement(
195
200
  "div",
196
201
  {
197
202
  className: "flex flex-col items-center justify-center cursor-pointer space-y-4",
198
203
  onClick: () => fileInputRef.current?.click()
199
204
  },
200
- /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "p-4 bg-blue-50 rounded-full text-blue-500" }, /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Upload, { size: 32 })),
201
- /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-lg font-medium text-gray-700" }, "\u70B9\u51FB\u6216\u62D6\u62FD\u56FE\u7247\u8FDB\u884C OCR \u8BC6\u522B"), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-sm text-gray-500" }, "\u652F\u6301 JPG, PNG, WebP"))
202
- ) : /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "relative group rounded-lg overflow-hidden border border-gray-200" }, /* @__PURE__ */ React33__namespace.default.createElement(
205
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "p-4 bg-blue-50 rounded-full text-blue-500" }, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Upload, { size: 32 })),
206
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-lg font-medium text-gray-700" }, "\u70B9\u51FB\u6216\u62D6\u62FD\u56FE\u7247\u8FDB\u884C OCR \u8BC6\u522B"), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-sm text-gray-500" }, "\u652F\u6301 JPG, PNG, WebP"))
207
+ ) : /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "relative group rounded-lg overflow-hidden border border-gray-200" }, /* @__PURE__ */ React37__namespace.default.createElement(
203
208
  "img",
204
209
  {
205
210
  src: imagePreview,
206
211
  alt: "Preview",
207
212
  className: `max-h-64 mx-auto object-contain transition-opacity ${isProcessing ? "opacity-50" : "opacity-100"}`
208
213
  }
209
- ), !isProcessing && /* @__PURE__ */ React33__namespace.default.createElement(
214
+ ), !isProcessing && /* @__PURE__ */ React37__namespace.default.createElement(
210
215
  "button",
211
216
  {
212
217
  onClick: reset,
213
218
  className: "absolute top-2 right-2 p-1 bg-white/80 rounded-full hover:bg-white text-gray-600 shadow-sm"
214
219
  },
215
- /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.X, { size: 18 })
216
- ), isProcessing && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "absolute inset-0 flex flex-col items-center justify-center bg-black/5" }, /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Loader2, { className: "animate-spin text-blue-500 mb-2", size: 32 }), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "w-48 bg-gray-200 rounded-full h-1.5 overflow-hidden" }, /* @__PURE__ */ React33__namespace.default.createElement(
220
+ /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.X, { size: 18 })
221
+ ), isProcessing && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "absolute inset-0 flex flex-col items-center justify-center bg-black/5" }, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Loader2, { className: "animate-spin text-blue-500 mb-2", size: 32 }), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-48 bg-gray-200 rounded-full h-1.5 overflow-hidden" }, /* @__PURE__ */ React37__namespace.default.createElement(
217
222
  "div",
218
223
  {
219
224
  className: "bg-blue-500 h-full transition-all duration-300",
220
225
  style: { width: `${progress * 100}%` }
221
226
  }
222
- )), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-xs font-medium text-blue-600 mt-2" }, status === "initializing" ? "\u6B63\u5728\u52A0\u8F7D\u5F15\u64CE..." : `\u8BC6\u522B\u4E2D ${Math.round(progress * 100)}%`))), result && !isProcessing && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "bg-gray-50 p-4 rounded-lg border border-gray-100 animate-in fade-in slide-in-from-bottom-2" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex items-center gap-2 mb-2 text-gray-600 font-medium" }, /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.FileText, { size: 18 }), /* @__PURE__ */ React33__namespace.default.createElement("span", null, "\u8BC6\u522B\u7ED3\u679C (\u7F6E\u4FE1\u5EA6: ", Math.round(result.confidence), "%)")), /* @__PURE__ */ React33__namespace.default.createElement("pre", { className: "text-sm text-gray-800 whitespace-pre-wrap font-sans" }, result.text)), error && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "p-3 bg-red-50 text-red-600 text-sm rounded-lg border border-red-100" }, "\u8BC6\u522B\u5931\u8D25: ", error.message)),
223
- /* @__PURE__ */ React33__namespace.default.createElement(
227
+ )), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-xs font-medium text-blue-600 mt-2" }, status === "initializing" ? "\u6B63\u5728\u52A0\u8F7D\u5F15\u64CE..." : `\u8BC6\u522B\u4E2D ${Math.round(progress * 100)}%`))), result && !isProcessing && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "bg-gray-50 p-4 rounded-lg border border-gray-100 animate-in fade-in slide-in-from-bottom-2" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center gap-2 mb-2 text-gray-600 font-medium" }, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.FileText, { size: 18 }), /* @__PURE__ */ React37__namespace.default.createElement("span", null, "\u8BC6\u522B\u7ED3\u679C (\u7F6E\u4FE1\u5EA6: ", Math.round(result.confidence), "%)")), /* @__PURE__ */ React37__namespace.default.createElement("pre", { className: "text-sm text-gray-800 whitespace-pre-wrap font-sans" }, result.text)), error && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "p-3 bg-red-50 text-red-600 text-sm rounded-lg border border-red-100" }, "\u8BC6\u522B\u5931\u8D25: ", error.message)),
228
+ /* @__PURE__ */ React37__namespace.default.createElement(
224
229
  "input",
225
230
  {
226
231
  type: "file",
@@ -234,7 +239,7 @@ var OCRScanner = ({
234
239
  );
235
240
  };
236
241
  var useBackgroundRemoval = (options = {}) => {
237
- const [state, setState] = React33.useState({
242
+ const [state, setState] = React37.useState({
238
243
  isProcessing: false,
239
244
  progress: 0,
240
245
  status: "idle",
@@ -242,7 +247,7 @@ var useBackgroundRemoval = (options = {}) => {
242
247
  resultBlob: null,
243
248
  resultUrl: null
244
249
  });
245
- const remove = React33.useCallback(async (image) => {
250
+ const remove = React37.useCallback(async (image) => {
246
251
  setState((prev) => ({
247
252
  ...prev,
248
253
  isProcessing: true,
@@ -321,12 +326,12 @@ var useBackgroundRemoval = (options = {}) => {
321
326
  throw err;
322
327
  }
323
328
  }, [options]);
324
- const cleanup = React33.useCallback(() => {
329
+ const cleanup = React37.useCallback(() => {
325
330
  if (state.resultUrl) {
326
331
  URL.revokeObjectURL(state.resultUrl);
327
332
  }
328
333
  }, [state.resultUrl]);
329
- React33.useEffect(() => {
334
+ React37.useEffect(() => {
330
335
  return () => cleanup();
331
336
  }, [cleanup]);
332
337
  return {
@@ -339,8 +344,8 @@ var BackgroundRemover = ({
339
344
  onResult,
340
345
  className = ""
341
346
  }) => {
342
- const [imagePreview, setImagePreview] = React33.useState(null);
343
- const fileInputRef = React33.useRef(null);
347
+ const [imagePreview, setImagePreview] = React37.useState(null);
348
+ const fileInputRef = React37.useRef(null);
344
349
  const { remove, isProcessing, progress, status, resultUrl, error } = useBackgroundRemoval();
345
350
  const handleFileChange = async (e) => {
346
351
  const file = e.target.files?.[0];
@@ -368,37 +373,37 @@ var BackgroundRemover = ({
368
373
  a.download = "removed_background.png";
369
374
  a.click();
370
375
  };
371
- return /* @__PURE__ */ React33__namespace.default.createElement("div", { className: `p-6 border-2 border-dashed rounded-xl transition-all ${isProcessing ? "border-purple-400 bg-purple-50/10" : "border-gray-200 hover:border-purple-400"} ${className}` }, !imagePreview ? /* @__PURE__ */ React33__namespace.default.createElement(
376
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: `p-6 border-2 border-dashed rounded-xl transition-all ${isProcessing ? "border-purple-400 bg-purple-50/10" : "border-gray-200 hover:border-purple-400"} ${className}` }, !imagePreview ? /* @__PURE__ */ React37__namespace.default.createElement(
372
377
  "div",
373
378
  {
374
379
  className: "flex flex-col items-center justify-center cursor-pointer space-y-4",
375
380
  onClick: () => fileInputRef.current?.click()
376
381
  },
377
- /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "p-4 bg-purple-50 rounded-full text-purple-500" }, /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Eraser, { size: 32 })),
378
- /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-lg font-medium text-gray-700" }, "\u4E0A\u4F20\u56FE\u7247\u79FB\u9664\u80CC\u666F"), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-sm text-gray-500" }, "\u5EFA\u8BAE\u4F7F\u7528\u4E3B\u4F53\u660E\u786E\u7684\u56FE\u7247"))
379
- ) : /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u539F\u56FE"), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "relative rounded-lg overflow-hidden border border-gray-200 bg-gray-50" }, /* @__PURE__ */ React33__namespace.default.createElement("img", { src: imagePreview, alt: "Original", className: "max-h-64 mx-auto object-contain" }))), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u5904\u7406\u7ED3\u679C"), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "relative rounded-lg overflow-hidden border border-gray-200 bg-grid-slate-100 bg-[size:20px_20px]" }, resultUrl ? /* @__PURE__ */ React33__namespace.default.createElement("img", { src: resultUrl, alt: "Result", className: "max-h-64 mx-auto object-contain animate-in fade-in zoom-in-95 duration-500" }) : /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "h-64 flex flex-col items-center justify-center text-gray-400" }, isProcessing ? /* @__PURE__ */ React33__namespace.default.createElement(React33__namespace.default.Fragment, null, /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Loader2, { className: "animate-spin text-purple-500 mb-2", size: 32 }), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "w-32 bg-gray-200 rounded-full h-1.5 overflow-hidden" }, /* @__PURE__ */ React33__namespace.default.createElement(
382
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "p-4 bg-purple-50 rounded-full text-purple-500" }, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Eraser, { size: 32 })),
383
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-lg font-medium text-gray-700" }, "\u4E0A\u4F20\u56FE\u7247\u79FB\u9664\u80CC\u666F"), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-sm text-gray-500" }, "\u5EFA\u8BAE\u4F7F\u7528\u4E3B\u4F53\u660E\u786E\u7684\u56FE\u7247"))
384
+ ) : /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u539F\u56FE"), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "relative rounded-lg overflow-hidden border border-gray-200 bg-gray-50" }, /* @__PURE__ */ React37__namespace.default.createElement("img", { src: imagePreview, alt: "Original", className: "max-h-64 mx-auto object-contain" }))), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u5904\u7406\u7ED3\u679C"), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "relative rounded-lg overflow-hidden border border-gray-200 bg-grid-slate-100 bg-[size:20px_20px]" }, resultUrl ? /* @__PURE__ */ React37__namespace.default.createElement("img", { src: resultUrl, alt: "Result", className: "max-h-64 mx-auto object-contain animate-in fade-in zoom-in-95 duration-500" }) : /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "h-64 flex flex-col items-center justify-center text-gray-400" }, isProcessing ? /* @__PURE__ */ React37__namespace.default.createElement(React37__namespace.default.Fragment, null, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Loader2, { className: "animate-spin text-purple-500 mb-2", size: 32 }), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-32 bg-gray-200 rounded-full h-1.5 overflow-hidden" }, /* @__PURE__ */ React37__namespace.default.createElement(
380
385
  "div",
381
386
  {
382
387
  className: "bg-purple-500 h-full transition-all duration-300",
383
388
  style: { width: `${progress * 100}%` }
384
389
  }
385
- )), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-[10px] mt-2 font-mono uppercase" }, status.replace(/-/g, " "))) : /* @__PURE__ */ React33__namespace.default.createElement("span", { className: "text-sm italic" }, "\u7B49\u5F85\u5904\u7406..."))))), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex justify-between items-center pt-2" }, !isProcessing && /* @__PURE__ */ React33__namespace.default.createElement(
390
+ )), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-[10px] mt-2 font-mono uppercase" }, status.replace(/-/g, " "))) : /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "text-sm italic" }, "\u7B49\u5F85\u5904\u7406..."))))), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex justify-between items-center pt-2" }, !isProcessing && /* @__PURE__ */ React37__namespace.default.createElement(
386
391
  "button",
387
392
  {
388
393
  onClick: reset,
389
394
  className: "flex items-center gap-2 px-4 py-2 text-sm font-medium text-gray-600 hover:text-gray-900 transition-colors"
390
395
  },
391
- /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.X, { size: 16 }),
396
+ /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.X, { size: 16 }),
392
397
  "\u91CD\u65B0\u5F00\u59CB"
393
- ), resultUrl && !isProcessing && /* @__PURE__ */ React33__namespace.default.createElement(
398
+ ), resultUrl && !isProcessing && /* @__PURE__ */ React37__namespace.default.createElement(
394
399
  "button",
395
400
  {
396
401
  onClick: downloadResult,
397
402
  className: "flex items-center gap-2 px-6 py-2 bg-purple-600 hover:bg-purple-700 text-white rounded-lg shadow-sm transition-all"
398
403
  },
399
- /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Download, { size: 16 }),
404
+ /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Download, { size: 16 }),
400
405
  "\u4E0B\u8F7D PNG"
401
- )), error && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "p-3 bg-red-50 text-red-600 text-sm rounded-lg border border-red-100" }, "\u5904\u7406\u5931\u8D25: ", error.message)), /* @__PURE__ */ React33__namespace.default.createElement(
406
+ )), error && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "p-3 bg-red-50 text-red-600 text-sm rounded-lg border border-red-100" }, "\u5904\u7406\u5931\u8D25: ", error.message)), /* @__PURE__ */ React37__namespace.default.createElement(
402
407
  "input",
403
408
  {
404
409
  type: "file",
@@ -411,14 +416,14 @@ var BackgroundRemover = ({
411
416
  ));
412
417
  };
413
418
  var useSentimentAnalysis = (options = {}) => {
414
- const [state, setState] = React33.useState({
419
+ const [state, setState] = React37.useState({
415
420
  isProcessing: false,
416
421
  status: "idle",
417
422
  error: null,
418
423
  result: null
419
424
  });
420
- const pipelineRef = React33.useRef(null);
421
- const analyze = React33.useCallback(async (text) => {
425
+ const pipelineRef = React37.useRef(null);
426
+ const analyze = React37.useCallback(async (text) => {
422
427
  setState((prev) => ({
423
428
  ...prev,
424
429
  isProcessing: true,
@@ -502,7 +507,7 @@ var SentimentAnalyzer = ({
502
507
  className = "",
503
508
  placeholder = "\u8F93\u5165\u4E00\u6BB5\u4E2D\u6587\u6216\u82F1\u6587\uFF0C\u5206\u6790\u5176\u60C5\u611F\u503E\u5411..."
504
509
  }) => {
505
- const [text, setText] = React33.useState("");
510
+ const [text, setText] = React37.useState("");
506
511
  const { analyze, isProcessing, status, result, error } = useSentimentAnalysis();
507
512
  const handleAnalyze = async () => {
508
513
  if (!text.trim() || isProcessing) return;
@@ -517,11 +522,11 @@ var SentimentAnalyzer = ({
517
522
  if (!result) return null;
518
523
  switch (result.sentiment) {
519
524
  case "positive":
520
- return /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Smile, { className: "text-green-500", size: 24 });
525
+ return /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Smile, { className: "text-green-500", size: 24 });
521
526
  case "negative":
522
- return /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Frown, { className: "text-red-500", size: 24 });
527
+ return /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Frown, { className: "text-red-500", size: 24 });
523
528
  default:
524
- return /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Meh, { className: "text-yellow-500", size: 24 });
529
+ return /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Meh, { className: "text-yellow-500", size: 24 });
525
530
  }
526
531
  };
527
532
  const getSentimentColor = () => {
@@ -535,7 +540,7 @@ var SentimentAnalyzer = ({
535
540
  return "bg-yellow-50 border-yellow-200 text-yellow-700";
536
541
  }
537
542
  };
538
- return /* @__PURE__ */ React33__namespace.default.createElement("div", { className: `p-6 border rounded-xl bg-white dark:bg-gray-800 shadow-sm ${className}` }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex items-center gap-2 mb-4 text-gray-700 dark:text-gray-300 font-medium" }, /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.MessageSquare, { size: 20 }), /* @__PURE__ */ React33__namespace.default.createElement("span", null, "\u6587\u672C\u60C5\u611F\u5206\u6790")), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React33__namespace.default.createElement(
543
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: `p-6 border rounded-xl bg-white dark:bg-gray-800 shadow-sm ${className}` }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center gap-2 mb-4 text-gray-700 dark:text-gray-300 font-medium" }, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.MessageSquare, { size: 20 }), /* @__PURE__ */ React37__namespace.default.createElement("span", null, "\u6587\u672C\u60C5\u611F\u5206\u6790")), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React37__namespace.default.createElement(
539
544
  "textarea",
540
545
  {
541
546
  value: text,
@@ -544,25 +549,25 @@ var SentimentAnalyzer = ({
544
549
  className: "w-full h-32 p-4 bg-gray-50 dark:bg-gray-900 border border-gray-200 dark:border-gray-700 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all outline-none resize-none text-gray-800 dark:text-gray-200",
545
550
  disabled: isProcessing
546
551
  }
547
- ), /* @__PURE__ */ React33__namespace.default.createElement(
552
+ ), /* @__PURE__ */ React37__namespace.default.createElement(
548
553
  "button",
549
554
  {
550
555
  onClick: handleAnalyze,
551
556
  disabled: !text.trim() || isProcessing,
552
557
  className: "absolute bottom-3 right-3 p-2 bg-blue-600 hover:bg-blue-700 disabled:bg-gray-400 text-white rounded-md transition-colors shadow-sm"
553
558
  },
554
- isProcessing ? /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Loader2, { className: "animate-spin", size: 18 }) : /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Send, { size: 18 })
555
- )), isProcessing && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "mt-4 flex items-center gap-2 text-sm text-blue-600 animate-pulse" }, /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Loader2, { size: 14, className: "animate-spin" }), /* @__PURE__ */ React33__namespace.default.createElement("span", null, "\u6B63\u5728\u5206\u6790 (\u9996\u6B21\u8FD0\u884C\u5C06\u52A0\u8F7D\u6A21\u578B\u8D44\u6E90)...")), result && !isProcessing && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: `mt-4 p-4 border rounded-lg flex items-center gap-4 animate-in fade-in slide-in-from-top-2 ${getSentimentColor()}` }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "p-2 bg-white rounded-full shadow-sm" }, getSentimentIcon()), /* @__PURE__ */ React33__namespace.default.createElement("div", null, /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "font-bold text-lg capitalize" }, result.sentiment), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-sm opacity-80" }, "\u7F6E\u4FE1\u5EA6: ", (result.score * 100).toFixed(1), "% (", result.label, ")"))), error && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "mt-4 p-3 bg-red-50 text-red-600 text-sm rounded-lg border border-red-100" }, "\u5206\u6790\u5931\u8D25: ", error.message));
559
+ isProcessing ? /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Loader2, { className: "animate-spin", size: 18 }) : /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Send, { size: 18 })
560
+ )), isProcessing && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "mt-4 flex items-center gap-2 text-sm text-blue-600 animate-pulse" }, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Loader2, { size: 14, className: "animate-spin" }), /* @__PURE__ */ React37__namespace.default.createElement("span", null, "\u6B63\u5728\u5206\u6790 (\u9996\u6B21\u8FD0\u884C\u5C06\u52A0\u8F7D\u6A21\u578B\u8D44\u6E90)...")), result && !isProcessing && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: `mt-4 p-4 border rounded-lg flex items-center gap-4 animate-in fade-in slide-in-from-top-2 ${getSentimentColor()}` }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "p-2 bg-white rounded-full shadow-sm" }, getSentimentIcon()), /* @__PURE__ */ React37__namespace.default.createElement("div", null, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "font-bold text-lg capitalize" }, result.sentiment), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-sm opacity-80" }, "\u7F6E\u4FE1\u5EA6: ", (result.score * 100).toFixed(1), "% (", result.label, ")"))), error && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "mt-4 p-3 bg-red-50 text-red-600 text-sm rounded-lg border border-red-100" }, "\u5206\u6790\u5931\u8D25: ", error.message));
556
561
  };
557
562
  var useTextGeneration = (options = {}) => {
558
- const [state, setState] = React33.useState({
563
+ const [state, setState] = React37.useState({
559
564
  isProcessing: false,
560
565
  status: "idle",
561
566
  error: null,
562
567
  result: null
563
568
  });
564
- const pipelineRef = React33.useRef(null);
565
- const generate = React33.useCallback(async (prompt) => {
569
+ const pipelineRef = React37.useRef(null);
570
+ const generate = React37.useCallback(async (prompt) => {
566
571
  console.log("[AI] Generating for prompt:", prompt);
567
572
  setState((prev) => ({
568
573
  ...prev,
@@ -644,11 +649,11 @@ var useTextGeneration = (options = {}) => {
644
649
  return { ...state, generate };
645
650
  };
646
651
  var SmartAssistant = ({ className = "" }) => {
647
- const [input, setInput] = React33.useState("");
648
- const [chatHistory, setChatHistory] = React33.useState([]);
649
- const scrollRef = React33.useRef(null);
652
+ const [input, setInput] = React37.useState("");
653
+ const [chatHistory, setChatHistory] = React37.useState([]);
654
+ const scrollRef = React37.useRef(null);
650
655
  const { generate, isProcessing: isGenerating, status: genStatus } = useTextGeneration();
651
- React33.useEffect(() => {
656
+ React37.useEffect(() => {
652
657
  if (scrollRef.current) {
653
658
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
654
659
  }
@@ -692,7 +697,7 @@ AI\u56DE\u5E94\uFF1A\u201C`;
692
697
  setChatHistory((prev) => [...prev, { role: "assistant", content: "\uFF08\u672C\u5730\u6A21\u578B\u601D\u8003\u8FC7\u5EA6\uFF0C\u6682\u65F6\u4F11\u606F\u4E2D...\uFF09" }]);
693
698
  }
694
699
  };
695
- return /* @__PURE__ */ React33__namespace.default.createElement("div", { className: `flex flex-col h-[500px] bg-white dark:bg-gray-800 rounded-xl shadow-inner border border-gray-100 dark:border-gray-700 overflow-hidden ${className}` }, /* @__PURE__ */ React33__namespace.default.createElement("div", { ref: scrollRef, className: "flex-1 overflow-y-auto p-4 space-y-4 bg-gray-50/50 dark:bg-gray-900/50" }, chatHistory.length === 0 && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "h-full flex flex-col items-center justify-center text-gray-400 space-y-2" }, /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Bot, { size: 48, className: "opacity-20" }), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-sm italic text-center px-8 text-gray-400 font-sans" }, "\u4F60\u597D\uFF01\u6211\u662F 100% \u672C\u5730\u8FD0\u884C\u7684 AI\u3002", /* @__PURE__ */ React33__namespace.default.createElement("br", null), "\u4F60\u53EF\u4EE5\u548C\u6211\u804A\u804A\u5929\uFF0C\u6211\u4F1A\u5C1D\u8BD5\u7406\u89E3\u4F60\u7684\u610F\u601D\u3002")), chatHistory.map((msg, i) => /* @__PURE__ */ React33__namespace.default.createElement("div", { key: i, className: `flex ${msg.role === "user" ? "justify-end" : "justify-start"} animate-in fade-in slide-in-from-bottom-2` }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: `flex gap-3 max-w-[85%] ${msg.role === "user" ? "flex-row-reverse" : ""}` }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: `p-2 rounded-lg h-fit ${msg.role === "user" ? "bg-blue-100 text-blue-600" : "bg-white dark:bg-gray-700 shadow-sm border border-gray-100 dark:border-gray-600 text-gray-400"}` }, msg.role === "user" ? /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.User, { size: 18 }) : /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Bot, { size: 18 })), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: `p-3 rounded-2xl shadow-sm text-sm ${msg.role === "user" ? "bg-blue-600 text-white rounded-tr-none" : "bg-white dark:bg-gray-700 text-gray-800 dark:text-gray-200 rounded-tl-none border border-gray-100 dark:border-gray-600 leading-relaxed"}` }, msg.content)))), isGenerating && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex justify-start" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex gap-3 items-center bg-white dark:bg-gray-700 p-3 rounded-2xl rounded-tl-none border border-gray-100 dark:border-gray-600" }, /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Loader2, { className: "animate-spin text-blue-500", size: 16 }), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React33__namespace.default.createElement("span", { className: "text-xs text-gray-500 font-medium" }, "\u601D\u8003\u4E2D..."), /* @__PURE__ */ React33__namespace.default.createElement("span", { className: "text-[10px] text-blue-400 font-mono tracking-tighter" }, genStatus))))), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "p-4 bg-white dark:bg-gray-800 border-t border-gray-100 dark:border-gray-700" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "relative flex items-center gap-2" }, /* @__PURE__ */ React33__namespace.default.createElement(
700
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: `flex flex-col h-[500px] bg-white dark:bg-gray-800 rounded-xl shadow-inner border border-gray-100 dark:border-gray-700 overflow-hidden ${className}` }, /* @__PURE__ */ React37__namespace.default.createElement("div", { ref: scrollRef, className: "flex-1 overflow-y-auto p-4 space-y-4 bg-gray-50/50 dark:bg-gray-900/50" }, chatHistory.length === 0 && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "h-full flex flex-col items-center justify-center text-gray-400 space-y-2" }, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Bot, { size: 48, className: "opacity-20" }), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-sm italic text-center px-8 text-gray-400 font-sans" }, "\u4F60\u597D\uFF01\u6211\u662F 100% \u672C\u5730\u8FD0\u884C\u7684 AI\u3002", /* @__PURE__ */ React37__namespace.default.createElement("br", null), "\u4F60\u53EF\u4EE5\u548C\u6211\u804A\u804A\u5929\uFF0C\u6211\u4F1A\u5C1D\u8BD5\u7406\u89E3\u4F60\u7684\u610F\u601D\u3002")), chatHistory.map((msg, i) => /* @__PURE__ */ React37__namespace.default.createElement("div", { key: i, className: `flex ${msg.role === "user" ? "justify-end" : "justify-start"} animate-in fade-in slide-in-from-bottom-2` }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: `flex gap-3 max-w-[85%] ${msg.role === "user" ? "flex-row-reverse" : ""}` }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: `p-2 rounded-lg h-fit ${msg.role === "user" ? "bg-blue-100 text-blue-600" : "bg-white dark:bg-gray-700 shadow-sm border border-gray-100 dark:border-gray-600 text-gray-400"}` }, msg.role === "user" ? /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.User, { size: 18 }) : /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Bot, { size: 18 })), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: `p-3 rounded-2xl shadow-sm text-sm ${msg.role === "user" ? "bg-blue-600 text-white rounded-tr-none" : "bg-white dark:bg-gray-700 text-gray-800 dark:text-gray-200 rounded-tl-none border border-gray-100 dark:border-gray-600 leading-relaxed"}` }, msg.content)))), isGenerating && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex justify-start" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex gap-3 items-center bg-white dark:bg-gray-700 p-3 rounded-2xl rounded-tl-none border border-gray-100 dark:border-gray-600" }, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Loader2, { className: "animate-spin text-blue-500", size: 16 }), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "text-xs text-gray-500 font-medium" }, "\u601D\u8003\u4E2D..."), /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "text-[10px] text-blue-400 font-mono tracking-tighter" }, genStatus))))), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "p-4 bg-white dark:bg-gray-800 border-t border-gray-100 dark:border-gray-700" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "relative flex items-center gap-2" }, /* @__PURE__ */ React37__namespace.default.createElement(
696
701
  "input",
697
702
  {
698
703
  type: "text",
@@ -703,14 +708,14 @@ AI\u56DE\u5E94\uFF1A\u201C`;
703
708
  className: "flex-1 bg-gray-50 dark:bg-gray-900 border-none rounded-full px-5 py-3 pr-12 text-sm focus:ring-2 focus:ring-blue-500 outline-none dark:text-white text-gray-800",
704
709
  disabled: isGenerating
705
710
  }
706
- ), /* @__PURE__ */ React33__namespace.default.createElement(
711
+ ), /* @__PURE__ */ React37__namespace.default.createElement(
707
712
  "button",
708
713
  {
709
714
  onClick: handleSend,
710
715
  disabled: !input.trim() || isGenerating,
711
716
  className: "absolute right-1 p-2.5 bg-blue-600 hover:bg-blue-700 disabled:bg-gray-400 text-white rounded-full transition-all shadow-md active:scale-95 flex items-center justify-center"
712
717
  },
713
- /* @__PURE__ */ React33__namespace.default.createElement(lucideReact.Send, { size: 18 })
718
+ /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Send, { size: 18 })
714
719
  ))));
715
720
  };
716
721
  var buttonVariants = classVarianceAuthority.cva(
@@ -738,10 +743,10 @@ var buttonVariants = classVarianceAuthority.cva(
738
743
  }
739
744
  }
740
745
  );
741
- var Button = React33__namespace.forwardRef(
746
+ var Button = React37__namespace.forwardRef(
742
747
  ({ className, variant, size, asChild = false, ...props }, ref) => {
743
748
  const Comp = asChild ? reactSlot.Slot : "button";
744
- return /* @__PURE__ */ React33__namespace.createElement(
749
+ return /* @__PURE__ */ React37__namespace.createElement(
745
750
  Comp,
746
751
  {
747
752
  className: chunk7Z5LLJ3A_js.cn(buttonVariants({ variant, size, className })),
@@ -752,7 +757,7 @@ var Button = React33__namespace.forwardRef(
752
757
  }
753
758
  );
754
759
  Button.displayName = "Button";
755
- var Card = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
760
+ var Card = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
756
761
  "div",
757
762
  {
758
763
  ref,
@@ -764,7 +769,7 @@ var Card = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @_
764
769
  }
765
770
  ));
766
771
  Card.displayName = "Card";
767
- var CardHeader = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
772
+ var CardHeader = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
768
773
  "div",
769
774
  {
770
775
  ref,
@@ -773,7 +778,7 @@ var CardHeader = React33__namespace.forwardRef(({ className, ...props }, ref) =>
773
778
  }
774
779
  ));
775
780
  CardHeader.displayName = "CardHeader";
776
- var CardTitle = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
781
+ var CardTitle = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
777
782
  "div",
778
783
  {
779
784
  ref,
@@ -782,7 +787,7 @@ var CardTitle = React33__namespace.forwardRef(({ className, ...props }, ref) =>
782
787
  }
783
788
  ));
784
789
  CardTitle.displayName = "CardTitle";
785
- var CardDescription = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
790
+ var CardDescription = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
786
791
  "div",
787
792
  {
788
793
  ref,
@@ -791,9 +796,9 @@ var CardDescription = React33__namespace.forwardRef(({ className, ...props }, re
791
796
  }
792
797
  ));
793
798
  CardDescription.displayName = "CardDescription";
794
- var CardContent = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement("div", { ref, className: chunk7Z5LLJ3A_js.cn("p-6 pt-0", className), ...props }));
799
+ var CardContent = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement("div", { ref, className: chunk7Z5LLJ3A_js.cn("p-6 pt-0", className), ...props }));
795
800
  CardContent.displayName = "CardContent";
796
- var CardFooter = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
801
+ var CardFooter = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
797
802
  "div",
798
803
  {
799
804
  ref,
@@ -819,11 +824,11 @@ var badgeVariants = classVarianceAuthority.cva(
819
824
  }
820
825
  );
821
826
  function Badge({ className, variant, ...props }) {
822
- return /* @__PURE__ */ React33__namespace.createElement("div", { className: chunk7Z5LLJ3A_js.cn(badgeVariants({ variant }), className), ...props });
827
+ return /* @__PURE__ */ React37__namespace.createElement("div", { className: chunk7Z5LLJ3A_js.cn(badgeVariants({ variant }), className), ...props });
823
828
  }
824
- var Input = React33__namespace.forwardRef(
829
+ var Input = React37__namespace.forwardRef(
825
830
  ({ className, type, ...props }, ref) => {
826
- return /* @__PURE__ */ React33__namespace.createElement(
831
+ return /* @__PURE__ */ React37__namespace.createElement(
827
832
  "input",
828
833
  {
829
834
  type,
@@ -841,7 +846,7 @@ Input.displayName = "Input";
841
846
  var labelVariants = classVarianceAuthority.cva(
842
847
  "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
843
848
  );
844
- var Label = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
849
+ var Label = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
845
850
  LabelPrimitive__namespace.Root,
846
851
  {
847
852
  ref,
@@ -851,7 +856,7 @@ var Label = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @
851
856
  ));
852
857
  Label.displayName = LabelPrimitive__namespace.Root.displayName;
853
858
  var Tabs = TabsPrimitive__namespace.Root;
854
- var TabsList = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
859
+ var TabsList = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
855
860
  TabsPrimitive__namespace.List,
856
861
  {
857
862
  ref,
@@ -863,7 +868,7 @@ var TabsList = React33__namespace.forwardRef(({ className, ...props }, ref) => /
863
868
  }
864
869
  ));
865
870
  TabsList.displayName = TabsPrimitive__namespace.List.displayName;
866
- var TabsTrigger = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
871
+ var TabsTrigger = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
867
872
  TabsPrimitive__namespace.Trigger,
868
873
  {
869
874
  ref,
@@ -875,7 +880,7 @@ var TabsTrigger = React33__namespace.forwardRef(({ className, ...props }, ref) =
875
880
  }
876
881
  ));
877
882
  TabsTrigger.displayName = TabsPrimitive__namespace.Trigger.displayName;
878
- var TabsContent = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
883
+ var TabsContent = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
879
884
  TabsPrimitive__namespace.Content,
880
885
  {
881
886
  ref,
@@ -891,7 +896,7 @@ var Dialog = DialogPrimitive__namespace.Root;
891
896
  var DialogTrigger = DialogPrimitive__namespace.Trigger;
892
897
  var DialogPortal = DialogPrimitive__namespace.Portal;
893
898
  var DialogClose = DialogPrimitive__namespace.Close;
894
- var DialogOverlay = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
899
+ var DialogOverlay = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
895
900
  DialogPrimitive__namespace.Overlay,
896
901
  {
897
902
  ref,
@@ -903,7 +908,7 @@ var DialogOverlay = React33__namespace.forwardRef(({ className, ...props }, ref)
903
908
  }
904
909
  ));
905
910
  DialogOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
906
- var DialogContent = React33__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(DialogPortal, null, /* @__PURE__ */ React33__namespace.createElement(DialogOverlay, null), /* @__PURE__ */ React33__namespace.createElement(
911
+ var DialogContent = React37__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(DialogPortal, null, /* @__PURE__ */ React37__namespace.createElement(DialogOverlay, null), /* @__PURE__ */ React37__namespace.createElement(
907
912
  DialogPrimitive__namespace.Content,
908
913
  {
909
914
  ref,
@@ -914,13 +919,13 @@ var DialogContent = React33__namespace.forwardRef(({ className, children, ...pro
914
919
  ...props
915
920
  },
916
921
  children,
917
- /* @__PURE__ */ React33__namespace.createElement(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground" }, /* @__PURE__ */ React33__namespace.createElement(lucideReact.X, { className: "h-4 w-4" }), /* @__PURE__ */ React33__namespace.createElement("span", { className: "sr-only" }, "Close"))
922
+ /* @__PURE__ */ React37__namespace.createElement(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground" }, /* @__PURE__ */ React37__namespace.createElement(lucideReact.X, { className: "h-4 w-4" }), /* @__PURE__ */ React37__namespace.createElement("span", { className: "sr-only" }, "Close"))
918
923
  )));
919
924
  DialogContent.displayName = DialogPrimitive__namespace.Content.displayName;
920
925
  var DialogHeader = ({
921
926
  className,
922
927
  ...props
923
- }) => /* @__PURE__ */ React33__namespace.createElement(
928
+ }) => /* @__PURE__ */ React37__namespace.createElement(
924
929
  "div",
925
930
  {
926
931
  className: chunk7Z5LLJ3A_js.cn(
@@ -934,7 +939,7 @@ DialogHeader.displayName = "DialogHeader";
934
939
  var DialogFooter = ({
935
940
  className,
936
941
  ...props
937
- }) => /* @__PURE__ */ React33__namespace.createElement(
942
+ }) => /* @__PURE__ */ React37__namespace.createElement(
938
943
  "div",
939
944
  {
940
945
  className: chunk7Z5LLJ3A_js.cn(
@@ -945,7 +950,7 @@ var DialogFooter = ({
945
950
  }
946
951
  );
947
952
  DialogFooter.displayName = "DialogFooter";
948
- var DialogTitle = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
953
+ var DialogTitle = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
949
954
  DialogPrimitive__namespace.Title,
950
955
  {
951
956
  ref,
@@ -957,7 +962,7 @@ var DialogTitle = React33__namespace.forwardRef(({ className, ...props }, ref) =
957
962
  }
958
963
  ));
959
964
  DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
960
- var DialogDescription = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
965
+ var DialogDescription = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
961
966
  DialogPrimitive__namespace.Description,
962
967
  {
963
968
  ref,
@@ -969,7 +974,7 @@ DialogDescription.displayName = DialogPrimitive__namespace.Description.displayNa
969
974
  var AlertDialog = AlertDialogPrimitive__namespace.Root;
970
975
  var AlertDialogTrigger = AlertDialogPrimitive__namespace.Trigger;
971
976
  var AlertDialogPortal = AlertDialogPrimitive__namespace.Portal;
972
- var AlertDialogOverlay = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
977
+ var AlertDialogOverlay = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
973
978
  AlertDialogPrimitive__namespace.Overlay,
974
979
  {
975
980
  className: chunk7Z5LLJ3A_js.cn(
@@ -981,7 +986,7 @@ var AlertDialogOverlay = React33__namespace.forwardRef(({ className, ...props },
981
986
  }
982
987
  ));
983
988
  AlertDialogOverlay.displayName = AlertDialogPrimitive__namespace.Overlay.displayName;
984
- var AlertDialogContent = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(AlertDialogPortal, null, /* @__PURE__ */ React33__namespace.createElement(AlertDialogOverlay, null), /* @__PURE__ */ React33__namespace.createElement(
989
+ var AlertDialogContent = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(AlertDialogPortal, null, /* @__PURE__ */ React37__namespace.createElement(AlertDialogOverlay, null), /* @__PURE__ */ React37__namespace.createElement(
985
990
  AlertDialogPrimitive__namespace.Content,
986
991
  {
987
992
  ref,
@@ -996,7 +1001,7 @@ AlertDialogContent.displayName = AlertDialogPrimitive__namespace.Content.display
996
1001
  var AlertDialogHeader = ({
997
1002
  className,
998
1003
  ...props
999
- }) => /* @__PURE__ */ React33__namespace.createElement(
1004
+ }) => /* @__PURE__ */ React37__namespace.createElement(
1000
1005
  "div",
1001
1006
  {
1002
1007
  className: chunk7Z5LLJ3A_js.cn(
@@ -1010,7 +1015,7 @@ AlertDialogHeader.displayName = "AlertDialogHeader";
1010
1015
  var AlertDialogFooter = ({
1011
1016
  className,
1012
1017
  ...props
1013
- }) => /* @__PURE__ */ React33__namespace.createElement(
1018
+ }) => /* @__PURE__ */ React37__namespace.createElement(
1014
1019
  "div",
1015
1020
  {
1016
1021
  className: chunk7Z5LLJ3A_js.cn(
@@ -1021,7 +1026,7 @@ var AlertDialogFooter = ({
1021
1026
  }
1022
1027
  );
1023
1028
  AlertDialogFooter.displayName = "AlertDialogFooter";
1024
- var AlertDialogTitle = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1029
+ var AlertDialogTitle = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1025
1030
  AlertDialogPrimitive__namespace.Title,
1026
1031
  {
1027
1032
  ref,
@@ -1030,7 +1035,7 @@ var AlertDialogTitle = React33__namespace.forwardRef(({ className, ...props }, r
1030
1035
  }
1031
1036
  ));
1032
1037
  AlertDialogTitle.displayName = AlertDialogPrimitive__namespace.Title.displayName;
1033
- var AlertDialogDescription = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1038
+ var AlertDialogDescription = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1034
1039
  AlertDialogPrimitive__namespace.Description,
1035
1040
  {
1036
1041
  ref,
@@ -1039,7 +1044,7 @@ var AlertDialogDescription = React33__namespace.forwardRef(({ className, ...prop
1039
1044
  }
1040
1045
  ));
1041
1046
  AlertDialogDescription.displayName = AlertDialogPrimitive__namespace.Description.displayName;
1042
- var AlertDialogAction = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1047
+ var AlertDialogAction = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1043
1048
  AlertDialogPrimitive__namespace.Action,
1044
1049
  {
1045
1050
  ref,
@@ -1048,7 +1053,7 @@ var AlertDialogAction = React33__namespace.forwardRef(({ className, ...props },
1048
1053
  }
1049
1054
  ));
1050
1055
  AlertDialogAction.displayName = AlertDialogPrimitive__namespace.Action.displayName;
1051
- var AlertDialogCancel = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1056
+ var AlertDialogCancel = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1052
1057
  AlertDialogPrimitive__namespace.Cancel,
1053
1058
  {
1054
1059
  ref,
@@ -1067,7 +1072,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
1067
1072
  var DropdownMenuPortal = DropdownMenuPrimitive__namespace.Portal;
1068
1073
  var DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
1069
1074
  var DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
1070
- var DropdownMenuSubTrigger = React33__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1075
+ var DropdownMenuSubTrigger = React37__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1071
1076
  DropdownMenuPrimitive__namespace.SubTrigger,
1072
1077
  {
1073
1078
  ref,
@@ -1079,10 +1084,10 @@ var DropdownMenuSubTrigger = React33__namespace.forwardRef(({ className, inset,
1079
1084
  ...props
1080
1085
  },
1081
1086
  children,
1082
- /* @__PURE__ */ React33__namespace.createElement(lucideReact.ChevronRight, { className: "ml-auto" })
1087
+ /* @__PURE__ */ React37__namespace.createElement(lucideReact.ChevronRight, { className: "ml-auto" })
1083
1088
  ));
1084
1089
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
1085
- var DropdownMenuSubContent = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1090
+ var DropdownMenuSubContent = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1086
1091
  DropdownMenuPrimitive__namespace.SubContent,
1087
1092
  {
1088
1093
  ref,
@@ -1094,7 +1099,7 @@ var DropdownMenuSubContent = React33__namespace.forwardRef(({ className, ...prop
1094
1099
  }
1095
1100
  ));
1096
1101
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
1097
- var DropdownMenuContent = React33__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(DropdownMenuPrimitive__namespace.Portal, null, /* @__PURE__ */ React33__namespace.createElement(
1102
+ var DropdownMenuContent = React37__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(DropdownMenuPrimitive__namespace.Portal, null, /* @__PURE__ */ React37__namespace.createElement(
1098
1103
  DropdownMenuPrimitive__namespace.Content,
1099
1104
  {
1100
1105
  ref,
@@ -1108,7 +1113,7 @@ var DropdownMenuContent = React33__namespace.forwardRef(({ className, sideOffset
1108
1113
  }
1109
1114
  )));
1110
1115
  DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
1111
- var DropdownMenuItem = React33__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1116
+ var DropdownMenuItem = React37__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1112
1117
  DropdownMenuPrimitive__namespace.Item,
1113
1118
  {
1114
1119
  ref,
@@ -1121,7 +1126,7 @@ var DropdownMenuItem = React33__namespace.forwardRef(({ className, inset, ...pro
1121
1126
  }
1122
1127
  ));
1123
1128
  DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
1124
- var DropdownMenuCheckboxItem = React33__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1129
+ var DropdownMenuCheckboxItem = React37__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1125
1130
  DropdownMenuPrimitive__namespace.CheckboxItem,
1126
1131
  {
1127
1132
  ref,
@@ -1132,11 +1137,11 @@ var DropdownMenuCheckboxItem = React33__namespace.forwardRef(({ className, child
1132
1137
  checked,
1133
1138
  ...props
1134
1139
  },
1135
- /* @__PURE__ */ React33__namespace.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React33__namespace.createElement(DropdownMenuPrimitive__namespace.ItemIndicator, null, /* @__PURE__ */ React33__namespace.createElement(lucideReact.Check, { className: "h-4 w-4" }))),
1140
+ /* @__PURE__ */ React37__namespace.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React37__namespace.createElement(DropdownMenuPrimitive__namespace.ItemIndicator, null, /* @__PURE__ */ React37__namespace.createElement(lucideReact.Check, { className: "h-4 w-4" }))),
1136
1141
  children
1137
1142
  ));
1138
1143
  DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive__namespace.CheckboxItem.displayName;
1139
- var DropdownMenuRadioItem = React33__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1144
+ var DropdownMenuRadioItem = React37__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1140
1145
  DropdownMenuPrimitive__namespace.RadioItem,
1141
1146
  {
1142
1147
  ref,
@@ -1146,11 +1151,11 @@ var DropdownMenuRadioItem = React33__namespace.forwardRef(({ className, children
1146
1151
  ),
1147
1152
  ...props
1148
1153
  },
1149
- /* @__PURE__ */ React33__namespace.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React33__namespace.createElement(DropdownMenuPrimitive__namespace.ItemIndicator, null, /* @__PURE__ */ React33__namespace.createElement(lucideReact.Circle, { className: "h-2 w-2 fill-current" }))),
1154
+ /* @__PURE__ */ React37__namespace.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React37__namespace.createElement(DropdownMenuPrimitive__namespace.ItemIndicator, null, /* @__PURE__ */ React37__namespace.createElement(lucideReact.Circle, { className: "h-2 w-2 fill-current" }))),
1150
1155
  children
1151
1156
  ));
1152
1157
  DropdownMenuRadioItem.displayName = DropdownMenuPrimitive__namespace.RadioItem.displayName;
1153
- var DropdownMenuLabel = React33__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1158
+ var DropdownMenuLabel = React37__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1154
1159
  DropdownMenuPrimitive__namespace.Label,
1155
1160
  {
1156
1161
  ref,
@@ -1163,7 +1168,7 @@ var DropdownMenuLabel = React33__namespace.forwardRef(({ className, inset, ...pr
1163
1168
  }
1164
1169
  ));
1165
1170
  DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
1166
- var DropdownMenuSeparator = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1171
+ var DropdownMenuSeparator = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1167
1172
  DropdownMenuPrimitive__namespace.Separator,
1168
1173
  {
1169
1174
  ref,
@@ -1176,7 +1181,7 @@ var DropdownMenuShortcut = ({
1176
1181
  className,
1177
1182
  ...props
1178
1183
  }) => {
1179
- return /* @__PURE__ */ React33__namespace.createElement(
1184
+ return /* @__PURE__ */ React37__namespace.createElement(
1180
1185
  "span",
1181
1186
  {
1182
1187
  className: chunk7Z5LLJ3A_js.cn("ml-auto text-xs tracking-widest opacity-60", className),
@@ -1188,7 +1193,7 @@ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1188
1193
  var Popover = PopoverPrimitive__namespace.Root;
1189
1194
  var PopoverTrigger = PopoverPrimitive__namespace.Trigger;
1190
1195
  var PopoverAnchor = PopoverPrimitive__namespace.Anchor;
1191
- var PopoverContent = React33__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(PopoverPrimitive__namespace.Portal, null, /* @__PURE__ */ React33__namespace.createElement(
1196
+ var PopoverContent = React37__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(PopoverPrimitive__namespace.Portal, null, /* @__PURE__ */ React37__namespace.createElement(
1192
1197
  PopoverPrimitive__namespace.Content,
1193
1198
  {
1194
1199
  ref,
@@ -1202,7 +1207,7 @@ var PopoverContent = React33__namespace.forwardRef(({ className, align = "center
1202
1207
  }
1203
1208
  )));
1204
1209
  PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
1205
- var Progress = React33__namespace.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1210
+ var Progress = React37__namespace.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1206
1211
  ProgressPrimitive__namespace.Root,
1207
1212
  {
1208
1213
  ref,
@@ -1212,7 +1217,7 @@ var Progress = React33__namespace.forwardRef(({ className, value, ...props }, re
1212
1217
  ),
1213
1218
  ...props
1214
1219
  },
1215
- /* @__PURE__ */ React33__namespace.createElement(
1220
+ /* @__PURE__ */ React37__namespace.createElement(
1216
1221
  ProgressPrimitive__namespace.Indicator,
1217
1222
  {
1218
1223
  className: "h-full w-full flex-1 bg-primary transition-all",
@@ -1221,19 +1226,19 @@ var Progress = React33__namespace.forwardRef(({ className, value, ...props }, re
1221
1226
  )
1222
1227
  ));
1223
1228
  Progress.displayName = ProgressPrimitive__namespace.Root.displayName;
1224
- var ScrollArea = React33__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1229
+ var ScrollArea = React37__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1225
1230
  ScrollAreaPrimitive__namespace.Root,
1226
1231
  {
1227
1232
  ref,
1228
1233
  className: chunk7Z5LLJ3A_js.cn("relative overflow-hidden", className),
1229
1234
  ...props
1230
1235
  },
1231
- /* @__PURE__ */ React33__namespace.createElement(ScrollAreaPrimitive__namespace.Viewport, { className: "h-full w-full rounded-[inherit]" }, children),
1232
- /* @__PURE__ */ React33__namespace.createElement(ScrollBar, null),
1233
- /* @__PURE__ */ React33__namespace.createElement(ScrollAreaPrimitive__namespace.Corner, null)
1236
+ /* @__PURE__ */ React37__namespace.createElement(ScrollAreaPrimitive__namespace.Viewport, { className: "h-full w-full rounded-[inherit]" }, children),
1237
+ /* @__PURE__ */ React37__namespace.createElement(ScrollBar, null),
1238
+ /* @__PURE__ */ React37__namespace.createElement(ScrollAreaPrimitive__namespace.Corner, null)
1234
1239
  ));
1235
1240
  ScrollArea.displayName = ScrollAreaPrimitive__namespace.Root.displayName;
1236
- var ScrollBar = React33__namespace.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1241
+ var ScrollBar = React37__namespace.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1237
1242
  ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
1238
1243
  {
1239
1244
  ref,
@@ -1246,13 +1251,13 @@ var ScrollBar = React33__namespace.forwardRef(({ className, orientation = "verti
1246
1251
  ),
1247
1252
  ...props
1248
1253
  },
1249
- /* @__PURE__ */ React33__namespace.createElement(ScrollAreaPrimitive__namespace.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
1254
+ /* @__PURE__ */ React37__namespace.createElement(ScrollAreaPrimitive__namespace.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
1250
1255
  ));
1251
1256
  ScrollBar.displayName = ScrollAreaPrimitive__namespace.ScrollAreaScrollbar.displayName;
1252
1257
  var Select = SelectPrimitive__namespace.Root;
1253
1258
  var SelectGroup = SelectPrimitive__namespace.Group;
1254
1259
  var SelectValue = SelectPrimitive__namespace.Value;
1255
- var SelectTrigger = React33__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1260
+ var SelectTrigger = React37__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1256
1261
  SelectPrimitive__namespace.Trigger,
1257
1262
  {
1258
1263
  ref,
@@ -1263,10 +1268,10 @@ var SelectTrigger = React33__namespace.forwardRef(({ className, children, ...pro
1263
1268
  ...props
1264
1269
  },
1265
1270
  children,
1266
- /* @__PURE__ */ React33__namespace.createElement(SelectPrimitive__namespace.Icon, { asChild: true }, /* @__PURE__ */ React33__namespace.createElement(lucideReact.ChevronDown, { className: "h-4 w-4 opacity-50" }))
1271
+ /* @__PURE__ */ React37__namespace.createElement(SelectPrimitive__namespace.Icon, { asChild: true }, /* @__PURE__ */ React37__namespace.createElement(lucideReact.ChevronDown, { className: "h-4 w-4 opacity-50" }))
1267
1272
  ));
1268
1273
  SelectTrigger.displayName = SelectPrimitive__namespace.Trigger.displayName;
1269
- var SelectScrollUpButton = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1274
+ var SelectScrollUpButton = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1270
1275
  SelectPrimitive__namespace.ScrollUpButton,
1271
1276
  {
1272
1277
  ref,
@@ -1276,10 +1281,10 @@ var SelectScrollUpButton = React33__namespace.forwardRef(({ className, ...props
1276
1281
  ),
1277
1282
  ...props
1278
1283
  },
1279
- /* @__PURE__ */ React33__namespace.createElement(lucideReact.ChevronUp, { className: "h-4 w-4" })
1284
+ /* @__PURE__ */ React37__namespace.createElement(lucideReact.ChevronUp, { className: "h-4 w-4" })
1280
1285
  ));
1281
1286
  SelectScrollUpButton.displayName = SelectPrimitive__namespace.ScrollUpButton.displayName;
1282
- var SelectScrollDownButton = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1287
+ var SelectScrollDownButton = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1283
1288
  SelectPrimitive__namespace.ScrollDownButton,
1284
1289
  {
1285
1290
  ref,
@@ -1289,10 +1294,10 @@ var SelectScrollDownButton = React33__namespace.forwardRef(({ className, ...prop
1289
1294
  ),
1290
1295
  ...props
1291
1296
  },
1292
- /* @__PURE__ */ React33__namespace.createElement(lucideReact.ChevronDown, { className: "h-4 w-4" })
1297
+ /* @__PURE__ */ React37__namespace.createElement(lucideReact.ChevronDown, { className: "h-4 w-4" })
1293
1298
  ));
1294
1299
  SelectScrollDownButton.displayName = SelectPrimitive__namespace.ScrollDownButton.displayName;
1295
- var SelectContent = React33__namespace.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(SelectPrimitive__namespace.Portal, null, /* @__PURE__ */ React33__namespace.createElement(
1300
+ var SelectContent = React37__namespace.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(SelectPrimitive__namespace.Portal, null, /* @__PURE__ */ React37__namespace.createElement(
1296
1301
  SelectPrimitive__namespace.Content,
1297
1302
  {
1298
1303
  ref,
@@ -1304,8 +1309,8 @@ var SelectContent = React33__namespace.forwardRef(({ className, children, positi
1304
1309
  position,
1305
1310
  ...props
1306
1311
  },
1307
- /* @__PURE__ */ React33__namespace.createElement(SelectScrollUpButton, null),
1308
- /* @__PURE__ */ React33__namespace.createElement(
1312
+ /* @__PURE__ */ React37__namespace.createElement(SelectScrollUpButton, null),
1313
+ /* @__PURE__ */ React37__namespace.createElement(
1309
1314
  SelectPrimitive__namespace.Viewport,
1310
1315
  {
1311
1316
  className: chunk7Z5LLJ3A_js.cn(
@@ -1315,10 +1320,10 @@ var SelectContent = React33__namespace.forwardRef(({ className, children, positi
1315
1320
  },
1316
1321
  children
1317
1322
  ),
1318
- /* @__PURE__ */ React33__namespace.createElement(SelectScrollDownButton, null)
1323
+ /* @__PURE__ */ React37__namespace.createElement(SelectScrollDownButton, null)
1319
1324
  )));
1320
1325
  SelectContent.displayName = SelectPrimitive__namespace.Content.displayName;
1321
- var SelectLabel = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1326
+ var SelectLabel = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1322
1327
  SelectPrimitive__namespace.Label,
1323
1328
  {
1324
1329
  ref,
@@ -1327,7 +1332,7 @@ var SelectLabel = React33__namespace.forwardRef(({ className, ...props }, ref) =
1327
1332
  }
1328
1333
  ));
1329
1334
  SelectLabel.displayName = SelectPrimitive__namespace.Label.displayName;
1330
- var SelectItem = React33__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1335
+ var SelectItem = React37__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1331
1336
  SelectPrimitive__namespace.Item,
1332
1337
  {
1333
1338
  ref,
@@ -1337,11 +1342,11 @@ var SelectItem = React33__namespace.forwardRef(({ className, children, ...props
1337
1342
  ),
1338
1343
  ...props
1339
1344
  },
1340
- /* @__PURE__ */ React33__namespace.createElement("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React33__namespace.createElement(SelectPrimitive__namespace.ItemIndicator, null, /* @__PURE__ */ React33__namespace.createElement(lucideReact.Check, { className: "h-4 w-4" }))),
1341
- /* @__PURE__ */ React33__namespace.createElement(SelectPrimitive__namespace.ItemText, null, children)
1345
+ /* @__PURE__ */ React37__namespace.createElement("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React37__namespace.createElement(SelectPrimitive__namespace.ItemIndicator, null, /* @__PURE__ */ React37__namespace.createElement(lucideReact.Check, { className: "h-4 w-4" }))),
1346
+ /* @__PURE__ */ React37__namespace.createElement(SelectPrimitive__namespace.ItemText, null, children)
1342
1347
  ));
1343
1348
  SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
1344
- var SelectSeparator = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1349
+ var SelectSeparator = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1345
1350
  SelectPrimitive__namespace.Separator,
1346
1351
  {
1347
1352
  ref,
@@ -1350,8 +1355,8 @@ var SelectSeparator = React33__namespace.forwardRef(({ className, ...props }, re
1350
1355
  }
1351
1356
  ));
1352
1357
  SelectSeparator.displayName = SelectPrimitive__namespace.Separator.displayName;
1353
- var Separator3 = React33__namespace.forwardRef(
1354
- ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1358
+ var Separator3 = React37__namespace.forwardRef(
1359
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1355
1360
  SeparatorPrimitive__namespace.Root,
1356
1361
  {
1357
1362
  ref,
@@ -1371,7 +1376,7 @@ var Sheet = DialogPrimitive__namespace.Root;
1371
1376
  var SheetTrigger = DialogPrimitive__namespace.Trigger;
1372
1377
  var SheetClose = DialogPrimitive__namespace.Close;
1373
1378
  var SheetPortal = DialogPrimitive__namespace.Portal;
1374
- var SheetOverlay = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1379
+ var SheetOverlay = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1375
1380
  DialogPrimitive__namespace.Overlay,
1376
1381
  {
1377
1382
  className: chunk7Z5LLJ3A_js.cn(
@@ -1399,21 +1404,21 @@ var sheetVariants = classVarianceAuthority.cva(
1399
1404
  }
1400
1405
  }
1401
1406
  );
1402
- var SheetContent = React33__namespace.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(SheetPortal, null, /* @__PURE__ */ React33__namespace.createElement(SheetOverlay, null), /* @__PURE__ */ React33__namespace.createElement(
1407
+ var SheetContent = React37__namespace.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(SheetPortal, null, /* @__PURE__ */ React37__namespace.createElement(SheetOverlay, null), /* @__PURE__ */ React37__namespace.createElement(
1403
1408
  DialogPrimitive__namespace.Content,
1404
1409
  {
1405
1410
  ref,
1406
1411
  className: chunk7Z5LLJ3A_js.cn(sheetVariants({ side }), className),
1407
1412
  ...props
1408
1413
  },
1409
- /* @__PURE__ */ React33__namespace.createElement(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary" }, /* @__PURE__ */ React33__namespace.createElement(lucideReact.X, { className: "h-4 w-4" }), /* @__PURE__ */ React33__namespace.createElement("span", { className: "sr-only" }, "Close")),
1414
+ /* @__PURE__ */ React37__namespace.createElement(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary" }, /* @__PURE__ */ React37__namespace.createElement(lucideReact.X, { className: "h-4 w-4" }), /* @__PURE__ */ React37__namespace.createElement("span", { className: "sr-only" }, "Close")),
1410
1415
  children
1411
1416
  )));
1412
1417
  SheetContent.displayName = DialogPrimitive__namespace.Content.displayName;
1413
1418
  var SheetHeader = ({
1414
1419
  className,
1415
1420
  ...props
1416
- }) => /* @__PURE__ */ React33__namespace.createElement(
1421
+ }) => /* @__PURE__ */ React37__namespace.createElement(
1417
1422
  "div",
1418
1423
  {
1419
1424
  className: chunk7Z5LLJ3A_js.cn(
@@ -1427,7 +1432,7 @@ SheetHeader.displayName = "SheetHeader";
1427
1432
  var SheetFooter = ({
1428
1433
  className,
1429
1434
  ...props
1430
- }) => /* @__PURE__ */ React33__namespace.createElement(
1435
+ }) => /* @__PURE__ */ React37__namespace.createElement(
1431
1436
  "div",
1432
1437
  {
1433
1438
  className: chunk7Z5LLJ3A_js.cn(
@@ -1438,7 +1443,7 @@ var SheetFooter = ({
1438
1443
  }
1439
1444
  );
1440
1445
  SheetFooter.displayName = "SheetFooter";
1441
- var SheetTitle = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1446
+ var SheetTitle = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1442
1447
  DialogPrimitive__namespace.Title,
1443
1448
  {
1444
1449
  ref,
@@ -1447,7 +1452,7 @@ var SheetTitle = React33__namespace.forwardRef(({ className, ...props }, ref) =>
1447
1452
  }
1448
1453
  ));
1449
1454
  SheetTitle.displayName = DialogPrimitive__namespace.Title.displayName;
1450
- var SheetDescription = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1455
+ var SheetDescription = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1451
1456
  DialogPrimitive__namespace.Description,
1452
1457
  {
1453
1458
  ref,
@@ -1456,8 +1461,8 @@ var SheetDescription = React33__namespace.forwardRef(({ className, ...props }, r
1456
1461
  }
1457
1462
  ));
1458
1463
  SheetDescription.displayName = DialogPrimitive__namespace.Description.displayName;
1459
- var Textarea = React33__namespace.forwardRef(({ className, ...props }, ref) => {
1460
- return /* @__PURE__ */ React33__namespace.createElement(
1464
+ var Textarea = React37__namespace.forwardRef(({ className, ...props }, ref) => {
1465
+ return /* @__PURE__ */ React37__namespace.createElement(
1461
1466
  "textarea",
1462
1467
  {
1463
1468
  className: chunk7Z5LLJ3A_js.cn(
@@ -1473,7 +1478,7 @@ Textarea.displayName = "Textarea";
1473
1478
  var TooltipProvider = TooltipPrimitive__namespace.Provider;
1474
1479
  var Tooltip = TooltipPrimitive__namespace.Root;
1475
1480
  var TooltipTrigger = TooltipPrimitive__namespace.Trigger;
1476
- var TooltipContent = React33__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(TooltipPrimitive__namespace.Portal, null, /* @__PURE__ */ React33__namespace.createElement(
1481
+ var TooltipContent = React37__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(TooltipPrimitive__namespace.Portal, null, /* @__PURE__ */ React37__namespace.createElement(
1477
1482
  TooltipPrimitive__namespace.Content,
1478
1483
  {
1479
1484
  ref,
@@ -1486,7 +1491,7 @@ var TooltipContent = React33__namespace.forwardRef(({ className, sideOffset = 4,
1486
1491
  }
1487
1492
  )));
1488
1493
  TooltipContent.displayName = TooltipPrimitive__namespace.Content.displayName;
1489
- var Avatar = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1494
+ var Avatar = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1490
1495
  AvatarPrimitive__namespace.Root,
1491
1496
  {
1492
1497
  ref,
@@ -1498,7 +1503,7 @@ var Avatar = React33__namespace.forwardRef(({ className, ...props }, ref) => /*
1498
1503
  }
1499
1504
  ));
1500
1505
  Avatar.displayName = AvatarPrimitive__namespace.Root.displayName;
1501
- var AvatarImage = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1506
+ var AvatarImage = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1502
1507
  AvatarPrimitive__namespace.Image,
1503
1508
  {
1504
1509
  ref,
@@ -1507,7 +1512,7 @@ var AvatarImage = React33__namespace.forwardRef(({ className, ...props }, ref) =
1507
1512
  }
1508
1513
  ));
1509
1514
  AvatarImage.displayName = AvatarPrimitive__namespace.Image.displayName;
1510
- var AvatarFallback = React33__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React33__namespace.createElement(
1515
+ var AvatarFallback = React37__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37__namespace.createElement(
1511
1516
  AvatarPrimitive__namespace.Fallback,
1512
1517
  {
1513
1518
  ref,
@@ -1548,20 +1553,20 @@ function Grid({
1548
1553
  }) {
1549
1554
  const gridColsClasses = buildGridColsClasses(columns);
1550
1555
  const gapClass = getGapClassName(gap);
1551
- return /* @__PURE__ */ React33__namespace.default.createElement(
1556
+ return /* @__PURE__ */ React37__namespace.default.createElement(
1552
1557
  "div",
1553
1558
  {
1554
1559
  className: `grid ${gridColsClasses} ${gapClass} ${className}`.trim(),
1555
1560
  style
1556
1561
  },
1557
- items.map((item, index) => /* @__PURE__ */ React33__namespace.default.createElement("div", { key: item.id }, renderItem(item, index)))
1562
+ items.map((item, index) => /* @__PURE__ */ React37__namespace.default.createElement("div", { key: item.id }, renderItem(item, index)))
1558
1563
  );
1559
1564
  }
1560
1565
  var Timeline = ({ items = [] }) => {
1561
1566
  if (!items || items.length === 0) {
1562
1567
  return null;
1563
1568
  }
1564
- return /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "absolute left-4 top-0 bottom-0 w-0.5 bg-gray-200" }), items.map((item, index) => /* @__PURE__ */ React33__namespace.default.createElement("div", { key: index, className: "relative pl-12 pb-8" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "absolute left-0 w-8 h-8 rounded-full bg-blue-500 border-4 border-white shadow-md flex items-center justify-center" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "w-2 h-2 rounded-full bg-white" })), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "bg-white rounded-lg p-4 shadow-md" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "text-sm text-gray-500 mb-2" }, item.date), /* @__PURE__ */ React33__namespace.default.createElement("h4", { className: "text-lg font-semibold mb-2" }, item.title), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-gray-600" }, item.description)))));
1569
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "absolute left-4 top-0 bottom-0 w-0.5 bg-gray-200" }), items.map((item, index) => /* @__PURE__ */ React37__namespace.default.createElement("div", { key: index, className: "relative pl-12 pb-8" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "absolute left-0 w-8 h-8 rounded-full bg-blue-500 border-4 border-white shadow-md flex items-center justify-center" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-2 h-2 rounded-full bg-white" })), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "bg-white rounded-lg p-4 shadow-md" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "text-sm text-gray-500 mb-2" }, item.date), /* @__PURE__ */ React37__namespace.default.createElement("h4", { className: "text-lg font-semibold mb-2" }, item.title), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-gray-600" }, item.description)))));
1565
1570
  };
1566
1571
  var CollisionBalls = ({
1567
1572
  collisionBallsConfig: {
@@ -1570,13 +1575,13 @@ var CollisionBalls = ({
1570
1575
  height
1571
1576
  }
1572
1577
  }) => {
1573
- const canvasRef = React33.useRef(null);
1574
- const containerRef = React33.useRef(null);
1575
- const ballsRef = React33.useRef([]);
1576
- const [isShaking, setIsShaking] = React33.useState(false);
1577
- const [draggedBall, setDraggedBall] = React33.useState(null);
1578
- const [mousePos, setMousePos] = React33.useState({ x: 0, y: 0 });
1579
- const animationRef = React33.useRef(null);
1578
+ const canvasRef = React37.useRef(null);
1579
+ const containerRef = React37.useRef(null);
1580
+ const ballsRef = React37.useRef([]);
1581
+ const [isShaking, setIsShaking] = React37.useState(false);
1582
+ const [draggedBall, setDraggedBall] = React37.useState(null);
1583
+ const [mousePos, setMousePos] = React37.useState({ x: 0, y: 0 });
1584
+ const animationRef = React37.useRef(null);
1580
1585
  const updateCanvasSize = () => {
1581
1586
  const container = containerRef.current;
1582
1587
  const canvas = canvasRef.current;
@@ -1619,7 +1624,7 @@ var CollisionBalls = ({
1619
1624
  isDragging: false
1620
1625
  }));
1621
1626
  };
1622
- React33.useEffect(() => {
1627
+ React37.useEffect(() => {
1623
1628
  const handleResize = () => {
1624
1629
  console.log("Window resized");
1625
1630
  updateCanvasSize();
@@ -1634,7 +1639,7 @@ var CollisionBalls = ({
1634
1639
  }
1635
1640
  };
1636
1641
  }, []);
1637
- React33.useEffect(() => {
1642
+ React37.useEffect(() => {
1638
1643
  const canvas = canvasRef.current;
1639
1644
  if (!canvas) {
1640
1645
  console.error("Canvas element not found");
@@ -1824,7 +1829,7 @@ var CollisionBalls = ({
1824
1829
  y: (event.clientY - rect.top) * scaleY
1825
1830
  };
1826
1831
  };
1827
- return /* @__PURE__ */ React33__namespace.default.createElement("div", { style: { width: "100%", height: "100%", position: "relative", backgroundColor: "#f9fafb", borderRadius: "0.5rem" } }, /* @__PURE__ */ React33__namespace.default.createElement("div", { ref: containerRef, style: { width: "100%", height: "100%", position: "absolute", top: 0, left: 0 } }, /* @__PURE__ */ React33__namespace.default.createElement(
1832
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { style: { width: "100%", height: "100%", position: "relative", backgroundColor: "#f9fafb", borderRadius: "0.5rem" } }, /* @__PURE__ */ React37__namespace.default.createElement("div", { ref: containerRef, style: { width: "100%", height: "100%", position: "absolute", top: 0, left: 0 } }, /* @__PURE__ */ React37__namespace.default.createElement(
1828
1833
  "canvas",
1829
1834
  {
1830
1835
  ref: canvasRef,
@@ -1839,14 +1844,14 @@ var CollisionBalls = ({
1839
1844
  onMouseUp: handleMouseUp,
1840
1845
  onMouseLeave: handleMouseUp
1841
1846
  }
1842
- )), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "absolute bottom-4 right-4 flex gap-2" }, /* @__PURE__ */ React33__namespace.default.createElement(
1847
+ )), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "absolute bottom-4 right-4 flex gap-2" }, /* @__PURE__ */ React37__namespace.default.createElement(
1843
1848
  "button",
1844
1849
  {
1845
1850
  onClick: shake,
1846
1851
  className: `px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors ${isShaking ? "animate-pulse" : ""}`
1847
1852
  },
1848
1853
  "\u6447\u4E00\u6447"
1849
- ), /* @__PURE__ */ React33__namespace.default.createElement(
1854
+ ), /* @__PURE__ */ React37__namespace.default.createElement(
1850
1855
  "button",
1851
1856
  {
1852
1857
  onClick: slowdown,
@@ -1855,6 +1860,286 @@ var CollisionBalls = ({
1855
1860
  "\u51CF\u901F"
1856
1861
  )));
1857
1862
  };
1863
+ function GenericOrderManager({
1864
+ operations,
1865
+ renderItem,
1866
+ className = "",
1867
+ title = "\u987A\u5E8F\u7BA1\u7406",
1868
+ description = "\u62D6\u62FD\u6216\u4F7F\u7528\u6309\u94AE\u8C03\u6574\u663E\u793A\u987A\u5E8F",
1869
+ onOrderChanged,
1870
+ emptyMessage = "\u6682\u65E0\u6570\u636E",
1871
+ loadingMessage = "\u52A0\u8F7D\u6570\u636E..."
1872
+ }) {
1873
+ const [items, setItems] = React37.useState([]);
1874
+ const [originalOrder, setOriginalOrder] = React37.useState([]);
1875
+ const [loading, setLoading] = React37.useState(true);
1876
+ const [saving, setSaving] = React37.useState(false);
1877
+ const [error, setError] = React37.useState(null);
1878
+ const [hasChanges, setHasChanges] = React37.useState(false);
1879
+ const [draggedItem, setDraggedItem] = React37.useState(null);
1880
+ const loadItems = React37.useCallback(async () => {
1881
+ try {
1882
+ setLoading(true);
1883
+ setError(null);
1884
+ const data = await operations.loadItems();
1885
+ setItems(data);
1886
+ setOriginalOrder([...data]);
1887
+ setHasChanges(false);
1888
+ } catch (err) {
1889
+ console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u52A0\u8F7D\u6570\u636E\u9519\u8BEF:", err);
1890
+ setError(err instanceof Error ? err.message : "\u52A0\u8F7D\u6570\u636E\u5931\u8D25");
1891
+ } finally {
1892
+ setLoading(false);
1893
+ }
1894
+ }, [operations]);
1895
+ React37.useEffect(() => {
1896
+ loadItems();
1897
+ }, [loadItems]);
1898
+ React37.useEffect(() => {
1899
+ const hasOrderChanged = items.some(
1900
+ (item, index) => originalOrder[index]?.id !== item.id
1901
+ );
1902
+ setHasChanges(hasOrderChanged);
1903
+ }, [items, originalOrder]);
1904
+ const handleMoveUp = async (itemId) => {
1905
+ try {
1906
+ setError(null);
1907
+ const currentIndex = items.findIndex((item) => item.id === itemId);
1908
+ if (currentIndex === -1) {
1909
+ setError("\u9879\u76EE\u4E0D\u5B58\u5728");
1910
+ return;
1911
+ }
1912
+ if (currentIndex === 0) {
1913
+ setError("\u9879\u76EE\u5DF2\u7ECF\u5728\u6700\u524D\u9762\uFF0C\u65E0\u6CD5\u4E0A\u79FB");
1914
+ return;
1915
+ }
1916
+ await operations.moveItemUp(itemId);
1917
+ await loadItems();
1918
+ onOrderChanged?.();
1919
+ } catch (err) {
1920
+ console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u4E0A\u79FB\u9879\u76EE\u9519\u8BEF:", err);
1921
+ setError(err instanceof Error ? err.message : "\u4E0A\u79FB\u5931\u8D25");
1922
+ }
1923
+ };
1924
+ const handleMoveDown = async (itemId) => {
1925
+ try {
1926
+ setError(null);
1927
+ const currentIndex = items.findIndex((item) => item.id === itemId);
1928
+ if (currentIndex === -1) {
1929
+ setError("\u9879\u76EE\u4E0D\u5B58\u5728");
1930
+ return;
1931
+ }
1932
+ if (currentIndex === items.length - 1) {
1933
+ setError("\u9879\u76EE\u5DF2\u7ECF\u5728\u6700\u540E\u9762\uFF0C\u65E0\u6CD5\u4E0B\u79FB");
1934
+ return;
1935
+ }
1936
+ await operations.moveItemDown(itemId);
1937
+ await loadItems();
1938
+ onOrderChanged?.();
1939
+ } catch (err) {
1940
+ console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u4E0B\u79FB\u9879\u76EE\u9519\u8BEF:", err);
1941
+ setError(err instanceof Error ? err.message : "\u4E0B\u79FB\u5931\u8D25");
1942
+ }
1943
+ };
1944
+ const handleDragStart = (e, index) => {
1945
+ setDraggedItem(index);
1946
+ e.dataTransfer.effectAllowed = "move";
1947
+ };
1948
+ const handleDragOver = (e, _index) => {
1949
+ e.preventDefault();
1950
+ e.dataTransfer.dropEffect = "move";
1951
+ };
1952
+ const handleDrop = async (e, dropIndex) => {
1953
+ e.preventDefault();
1954
+ if (draggedItem === null || draggedItem === dropIndex) {
1955
+ setDraggedItem(null);
1956
+ return;
1957
+ }
1958
+ try {
1959
+ setError(null);
1960
+ const newItems = [...items];
1961
+ const draggedItemData = newItems[draggedItem];
1962
+ if (!draggedItemData) return;
1963
+ newItems.splice(draggedItem, 1);
1964
+ newItems.splice(dropIndex, 0, draggedItemData);
1965
+ const itemOrders = newItems.map((item, index) => ({
1966
+ id: item.id,
1967
+ order: index
1968
+ }));
1969
+ await operations.updateItemOrder(itemOrders);
1970
+ await loadItems();
1971
+ onOrderChanged?.();
1972
+ } catch (err) {
1973
+ console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u62D6\u62FD\u6392\u5E8F\u9519\u8BEF:", err);
1974
+ setError(err instanceof Error ? err.message : "\u6392\u5E8F\u5931\u8D25");
1975
+ } finally {
1976
+ setDraggedItem(null);
1977
+ }
1978
+ };
1979
+ const handleSaveOrder = async () => {
1980
+ try {
1981
+ setSaving(true);
1982
+ setError(null);
1983
+ const itemOrders = items.map((item, index) => ({
1984
+ id: item.id,
1985
+ order: index
1986
+ }));
1987
+ await operations.updateItemOrder(itemOrders);
1988
+ setOriginalOrder([...items]);
1989
+ setHasChanges(false);
1990
+ onOrderChanged?.();
1991
+ } catch (err) {
1992
+ console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u4FDD\u5B58\u987A\u5E8F\u9519\u8BEF:", err);
1993
+ setError(err instanceof Error ? err.message : "\u4FDD\u5B58\u5931\u8D25");
1994
+ await loadItems();
1995
+ } finally {
1996
+ setSaving(false);
1997
+ }
1998
+ };
1999
+ const handleResetOrder = () => {
2000
+ setItems([...originalOrder]);
2001
+ };
2002
+ if (loading) {
2003
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("flex flex-col items-center justify-center p-12 text-gray-500", className) }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-6 h-6 border-2 border-gray-200 border-t-blue-500 rounded-full animate-spin mb-2" }), /* @__PURE__ */ React37__namespace.default.createElement("span", null, loadingMessage));
2004
+ }
2005
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("bg-white rounded-xl p-6 shadow-md border-2 border-gray-100", className) }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center justify-between mb-4 pb-3 border-b border-gray-100 sm:flex-row flex-col sm:items-center items-start gap-4" }, /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "m-0 text-gray-900 text-lg font-semibold" }, title), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex gap-3 w-full sm:w-auto" }, hasChanges && /* @__PURE__ */ React37__namespace.default.createElement(React37__namespace.default.Fragment, null, /* @__PURE__ */ React37__namespace.default.createElement(
2006
+ "button",
2007
+ {
2008
+ onClick: handleResetOrder,
2009
+ className: "flex items-center gap-2 bg-amber-500 hover:bg-amber-600 text-white px-4 py-2 rounded-lg font-medium transition-colors",
2010
+ title: "\u91CD\u7F6E\u4E3A\u539F\u59CB\u987A\u5E8F"
2011
+ },
2012
+ /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.RotateCcw, { size: 16 }),
2013
+ "\u91CD\u7F6E"
2014
+ ), /* @__PURE__ */ React37__namespace.default.createElement(
2015
+ "button",
2016
+ {
2017
+ onClick: handleSaveOrder,
2018
+ disabled: saving,
2019
+ className: "flex items-center gap-2 bg-blue-500 hover:bg-blue-600 disabled:opacity-50 disabled:cursor-not-allowed text-white px-4 py-2 rounded-lg font-medium transition-colors",
2020
+ title: "\u4FDD\u5B58\u65B0\u987A\u5E8F"
2021
+ },
2022
+ /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.Save, { size: 16 }),
2023
+ saving ? "\u4FDD\u5B58\u4E2D..." : "\u4FDD\u5B58\u987A\u5E8F"
2024
+ )))), error && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center gap-2 bg-red-50 text-red-600 p-3 rounded-lg mb-4 border border-red-200" }, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.AlertCircle, { size: 16 }), /* @__PURE__ */ React37__namespace.default.createElement("span", null, error)), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "bg-slate-50 border border-slate-200 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "m-0 mb-2 color-slate-500 text-sm" }, description), /* @__PURE__ */ React37__namespace.default.createElement("ul", { className: "m-0 pl-6 color-slate-500 text-sm list-disc" }, /* @__PURE__ */ React37__namespace.default.createElement("li", { className: "mb-1" }, "\u4F7F\u7528\u62D6\u62FD\uFF1A\u70B9\u51FB\u5E76\u62D6\u52A8 ", /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.GripVertical, { size: 14, className: "inline-block align-middle text-gray-500" }), " \u56FE\u6807"), /* @__PURE__ */ React37__namespace.default.createElement("li", { className: "mb-1" }, "\u4F7F\u7528\u6309\u94AE\uFF1A\u70B9\u51FB ", /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.ChevronUp, { size: 14, className: "inline-block align-middle text-gray-500" }), " \u6216 ", /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.ChevronDown, { size: 14, className: "inline-block align-middle text-gray-500" }), " \u6309\u94AE"), /* @__PURE__ */ React37__namespace.default.createElement("li", null, '\u5B8C\u6210\u8C03\u6574\u540E\uFF0C\u70B9\u51FB"\u4FDD\u5B58\u987A\u5E8F"\u6309\u94AE\u4FDD\u5B58\u66F4\u6539'))), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex flex-col gap-3" }, items.map((item, index) => /* @__PURE__ */ React37__namespace.default.createElement(
2025
+ "div",
2026
+ {
2027
+ key: item.id,
2028
+ className: chunk7Z5LLJ3A_js.cn(
2029
+ "flex items-center gap-3 p-4 bg-gray-50 border-2 border-gray-200 rounded-lg transition-all hover:border-gray-300 hover:shadow-sm",
2030
+ draggedItem === index && "opacity-50 rotate-2 border-blue-500"
2031
+ ),
2032
+ draggable: true,
2033
+ onDragStart: (e) => handleDragStart(e, index),
2034
+ onDragOver: (e) => handleDragOver(e),
2035
+ onDrop: (e) => handleDrop(e, index)
2036
+ },
2037
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center cursor-grab active:cursor-grabbing text-gray-400 p-1 rounded hover:text-gray-500 hover:bg-gray-100 transition-colors" }, /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.GripVertical, { size: 20 })),
2038
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex-1 min-w-0" }, renderItem(item, index, index === 0, index === items.length - 1)),
2039
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center mx-3" }, /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "flex items-center justify-center w-8 h-8 bg-blue-500 text-white text-sm font-semibold rounded-full sm:w-8 sm:h-8 w-7 h-7 sm:text-sm text-xs" }, "#", index + 1)),
2040
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex flex-col gap-1 sm:flex-col flex-row" }, /* @__PURE__ */ React37__namespace.default.createElement(
2041
+ "button",
2042
+ {
2043
+ onClick: () => handleMoveUp(item.id),
2044
+ disabled: index === 0,
2045
+ className: "flex items-center justify-center w-8 h-8 p-0 border border-gray-300 bg-white text-gray-500 rounded cursor-pointer transition-all hover:bg-gray-100 hover:border-gray-400 hover:text-gray-700 disabled:opacity-40 disabled:cursor-not-allowed disabled:bg-gray-50 sm:w-8 sm:h-8 w-7 h-7",
2046
+ title: "\u4E0A\u79FB"
2047
+ },
2048
+ /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.ChevronUp, { size: 18 })
2049
+ ), /* @__PURE__ */ React37__namespace.default.createElement(
2050
+ "button",
2051
+ {
2052
+ onClick: () => handleMoveDown(item.id),
2053
+ disabled: index === items.length - 1,
2054
+ className: "flex items-center justify-center w-8 h-8 p-0 border border-gray-300 bg-white text-gray-500 rounded cursor-pointer transition-all hover:bg-gray-100 hover:border-gray-400 hover:text-gray-700 disabled:opacity-40 disabled:cursor-not-allowed disabled:bg-gray-50 sm:w-8 sm:h-8 w-7 h-7",
2055
+ title: "\u4E0B\u79FB"
2056
+ },
2057
+ /* @__PURE__ */ React37__namespace.default.createElement(lucideReact.ChevronDown, { size: 18 })
2058
+ ))
2059
+ ))), items.length === 0 && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "text-center p-12 text-gray-400 italic" }, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "m-0" }, emptyMessage)));
2060
+ }
2061
+ var BackButton = ({ href, className = "" }) => {
2062
+ const router = navigation.useRouter();
2063
+ const handleClick = () => {
2064
+ if (href) {
2065
+ router.push(href);
2066
+ } else {
2067
+ router.back();
2068
+ }
2069
+ };
2070
+ return /* @__PURE__ */ React37__namespace.default.createElement(
2071
+ "button",
2072
+ {
2073
+ onClick: handleClick,
2074
+ className: chunk7Z5LLJ3A_js.cn(
2075
+ "inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-colors",
2076
+ className
2077
+ )
2078
+ },
2079
+ /* @__PURE__ */ React37__namespace.default.createElement(
2080
+ "svg",
2081
+ {
2082
+ className: "w-5 h-5 mr-2",
2083
+ fill: "none",
2084
+ stroke: "currentColor",
2085
+ viewBox: "0 0 24 24"
2086
+ },
2087
+ /* @__PURE__ */ React37__namespace.default.createElement(
2088
+ "path",
2089
+ {
2090
+ strokeLinecap: "round",
2091
+ strokeLinejoin: "round",
2092
+ strokeWidth: 2,
2093
+ d: "M10 19l-7-7m0 0l7-7m-7 7h18"
2094
+ }
2095
+ )
2096
+ ),
2097
+ "\u8FD4\u56DE"
2098
+ );
2099
+ };
2100
+ function getColorValue(bgClass) {
2101
+ const colorMap = {
2102
+ "bg-blue-500": "#3b82f6",
2103
+ "bg-green-500": "#10b981",
2104
+ "bg-red-500": "#ef4444",
2105
+ "bg-purple-500": "#8b5cf6",
2106
+ "bg-slate-500": "#64748b",
2107
+ "bg-emerald-500": "#10b981",
2108
+ "bg-orange-500": "#f97316"
2109
+ };
2110
+ return colorMap[bgClass] || "#3b82f6";
2111
+ }
2112
+ function FilterButtonGroup({
2113
+ label,
2114
+ value,
2115
+ options,
2116
+ onChange,
2117
+ className
2118
+ }) {
2119
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("space-y-4", className) }, /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "text-lg font-semibold text-gray-800" }, label), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex gap-3" }, options.map((option) => {
2120
+ const isActive = value === option.value;
2121
+ return /* @__PURE__ */ React37__namespace.default.createElement(
2122
+ "button",
2123
+ {
2124
+ key: option.value,
2125
+ onClick: () => onChange(option.value),
2126
+ style: isActive ? { backgroundColor: getColorValue(option.activeColor.bg) } : void 0,
2127
+ className: chunk7Z5LLJ3A_js.cn(
2128
+ "flex-1 h-12 rounded-lg font-medium text-sm transition-all duration-200 ease-out focus:outline-none focus:ring-2 focus:ring-opacity-50 border",
2129
+ isActive ? "text-white border-transparent shadow-md focus:ring-white" : "bg-white text-gray-700 border-gray-200 shadow-sm hover:bg-gray-50 hover:border-gray-300 hover:shadow focus:ring-blue-300"
2130
+ )
2131
+ },
2132
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center justify-center space-x-2" }, /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "text-lg" }, option.icon), /* @__PURE__ */ React37__namespace.default.createElement("span", null, option.label), option.showCount && option.count !== void 0 && /* @__PURE__ */ React37__namespace.default.createElement("span", { className: chunk7Z5LLJ3A_js.cn(
2133
+ "text-xs font-semibold px-2 py-0.5 rounded-full min-w-[1.25rem] text-center",
2134
+ isActive ? "bg-white/20 text-white" : "bg-gray-100 text-gray-600"
2135
+ ) }, option.count))
2136
+ );
2137
+ })));
2138
+ }
2139
+ function SearchResultHint({ searchQuery, resultCount, className }) {
2140
+ if (!searchQuery) return null;
2141
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("mb-6 p-4 bg-blue-50 border border-blue-200 rounded-lg", className) }, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-sm text-blue-700" }, '\u641C\u7D22 "', /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "font-medium" }, searchQuery), '" \u627E\u5230 ', resultCount, " \u4E2A\u7ED3\u679C"));
2142
+ }
1858
2143
  var themeStyles = {
1859
2144
  light: "",
1860
2145
  dark: "bg-[#222] text-[#eee] border-[#444]",
@@ -1877,7 +2162,7 @@ var ProfileModal = ({
1877
2162
  }) => {
1878
2163
  const renderSocialLinks = () => {
1879
2164
  if (!data.socialLinks || data.socialLinks.length === 0) return null;
1880
- return /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex gap-3 mt-2" }, data.socialLinks.map((link, index) => /* @__PURE__ */ React33__namespace.default.createElement(
2165
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex gap-3 mt-2" }, data.socialLinks.map((link, index) => /* @__PURE__ */ React37__namespace.default.createElement(
1881
2166
  "a",
1882
2167
  {
1883
2168
  key: index,
@@ -1896,15 +2181,15 @@ var ProfileModal = ({
1896
2181
  }
1897
2182
  }
1898
2183
  },
1899
- link.icon ? /* @__PURE__ */ React33__namespace.default.createElement("span", { className: "text-base" }, link.icon) : /* @__PURE__ */ React33__namespace.default.createElement("span", { className: "text-[10px] font-semibold" }, link.type)
2184
+ link.icon ? /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "text-base" }, link.icon) : /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "text-[10px] font-semibold" }, link.type)
1900
2185
  )));
1901
2186
  };
1902
2187
  const renderContacts = () => {
1903
2188
  if (!data.contacts || Object.keys(data.contacts).length === 0) return null;
1904
- return /* @__PURE__ */ React33__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn(
2189
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn(
1905
2190
  "mt-4 border-t pt-4",
1906
2191
  themeName === "dark" ? "border-gray-800" : "border-gray-100"
1907
- ) }, Object.entries(data.contacts).map(([type, value], index) => /* @__PURE__ */ React33__namespace.default.createElement(
2192
+ ) }, Object.entries(data.contacts).map(([type, value], index) => /* @__PURE__ */ React37__namespace.default.createElement(
1908
2193
  "div",
1909
2194
  {
1910
2195
  key: index,
@@ -1914,35 +2199,35 @@ var ProfileModal = ({
1914
2199
  ),
1915
2200
  onClick: () => onContactClick && onContactClick(type, value)
1916
2201
  },
1917
- /* @__PURE__ */ React33__namespace.default.createElement("span", { className: chunk7Z5LLJ3A_js.cn(
2202
+ /* @__PURE__ */ React37__namespace.default.createElement("span", { className: chunk7Z5LLJ3A_js.cn(
1918
2203
  "font-medium w-[70px] shrink-0",
1919
2204
  themeName === "dark" ? "text-gray-400" : "text-gray-500"
1920
2205
  ) }, type, ":"),
1921
- /* @__PURE__ */ React33__namespace.default.createElement("span", { className: themeName === "dark" ? "text-gray-200" : "text-gray-800" }, value)
2206
+ /* @__PURE__ */ React37__namespace.default.createElement("span", { className: themeName === "dark" ? "text-gray-200" : "text-gray-800" }, value)
1922
2207
  )));
1923
2208
  };
1924
- return /* @__PURE__ */ React33__namespace.default.createElement(Dialog, { open: isOpen, onOpenChange: (open) => !open && onClose() }, /* @__PURE__ */ React33__namespace.default.createElement(DialogContent, { className: chunk7Z5LLJ3A_js.cn(
2209
+ return /* @__PURE__ */ React37__namespace.default.createElement(Dialog, { open: isOpen, onOpenChange: (open) => !open && onClose() }, /* @__PURE__ */ React37__namespace.default.createElement(DialogContent, { className: chunk7Z5LLJ3A_js.cn(
1925
2210
  "sm:max-w-[500px] p-0 overflow-hidden border-none shadow-2xl",
1926
2211
  themeStyles[themeName] || "",
1927
2212
  className
1928
- ) }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex gap-5 mb-5" }, showAvatar && /* @__PURE__ */ React33__namespace.default.createElement(
2213
+ ) }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex gap-5 mb-5" }, showAvatar && /* @__PURE__ */ React37__namespace.default.createElement(
1929
2214
  "div",
1930
2215
  {
1931
2216
  className: "shrink-0",
1932
2217
  onClick: onAvatarClick,
1933
2218
  style: { cursor: onAvatarClick ? "pointer" : "default" }
1934
2219
  },
1935
- /* @__PURE__ */ React33__namespace.default.createElement(Avatar, { className: "border-2 border-primary/10 shadow-sm", style: { width: avatarSize, height: avatarSize } }, data.avatar && /* @__PURE__ */ React33__namespace.default.createElement(AvatarImage, { src: data.avatar, alt: data.name, className: "object-cover" }), /* @__PURE__ */ React33__namespace.default.createElement(AvatarFallback, { className: "text-xl" }, data.name.substring(0, 2).toUpperCase()))
1936
- ), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex-1 min-w-0 flex flex-col justify-center" }, /* @__PURE__ */ React33__namespace.default.createElement("h2", { className: chunk7Z5LLJ3A_js.cn(
2220
+ /* @__PURE__ */ React37__namespace.default.createElement(Avatar, { className: "border-2 border-primary/10 shadow-sm", style: { width: avatarSize, height: avatarSize } }, data.avatar && /* @__PURE__ */ React37__namespace.default.createElement(AvatarImage, { src: data.avatar, alt: data.name, className: "object-cover" }), /* @__PURE__ */ React37__namespace.default.createElement(AvatarFallback, { className: "text-xl" }, data.name.substring(0, 2).toUpperCase()))
2221
+ ), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex-1 min-w-0 flex flex-col justify-center" }, /* @__PURE__ */ React37__namespace.default.createElement("h2", { className: chunk7Z5LLJ3A_js.cn(
1937
2222
  "text-2xl font-bold m-0 mb-1",
1938
2223
  themeName === "dark" ? "text-white" : "text-gray-900"
1939
- ) }, data.name), data.title && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn(
2224
+ ) }, data.name), data.title && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn(
1940
2225
  "text-sm mb-2",
1941
2226
  themeName === "dark" ? "text-gray-400" : "text-gray-500"
1942
- ) }, data.title), showSocial && renderSocialLinks())), showBio && data.bio && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn(
2227
+ ) }, data.title), showSocial && renderSocialLinks())), showBio && data.bio && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn(
1943
2228
  "mb-5 leading-relaxed text-sm",
1944
2229
  themeName === "dark" ? "text-gray-300" : "text-gray-600"
1945
- ) }, /* @__PURE__ */ React33__namespace.default.createElement("p", null, data.bio)), showContacts && renderContacts(), data.customContent && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "mt-5" }, data.customContent))));
2230
+ ) }, /* @__PURE__ */ React37__namespace.default.createElement("p", null, data.bio)), showContacts && renderContacts(), data.customContent && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "mt-5" }, data.customContent))));
1946
2231
  };
1947
2232
  var ProfileModal_default = ProfileModal;
1948
2233
  var BadgeList = ({
@@ -1950,13 +2235,13 @@ var BadgeList = ({
1950
2235
  className = ""
1951
2236
  }) => {
1952
2237
  if (!badges || badges.length === 0) return null;
1953
- return /* @__PURE__ */ React33__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("flex flex-wrap gap-2 mt-4", className) }, badges.map((badge, index) => /* @__PURE__ */ React33__namespace.default.createElement(
2238
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("flex flex-wrap gap-2 mt-4", className) }, badges.map((badge, index) => /* @__PURE__ */ React37__namespace.default.createElement(
1954
2239
  Badge,
1955
2240
  {
1956
2241
  key: index,
1957
2242
  variant: badge.type === "default" ? "default" : badge.type
1958
2243
  },
1959
- badge.icon && /* @__PURE__ */ React33__namespace.default.createElement("span", { className: "mr-1" }, badge.icon),
2244
+ badge.icon && /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "mr-1" }, badge.icon),
1960
2245
  badge.label
1961
2246
  )));
1962
2247
  };
@@ -2007,7 +2292,7 @@ var exampleProfileData = {
2007
2292
  { label: "\u7C89\u4E1D", value: 1024 },
2008
2293
  { label: "\u8BC4\u5206", value: "4.9" }
2009
2294
  ],
2010
- customContent: /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "mt-5 border-t border-gray-100 pt-4" }, /* @__PURE__ */ React33__namespace.default.createElement("h3", { className: "text-sm font-semibold mb-2" }, "\u4E13\u4E1A\u6280\u80FD"), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-sm text-gray-600 leading-relaxed" }, "\u7CBE\u901AReact\u3001Vue\u3001Angular\u7B49\u524D\u7AEF\u6846\u67B6\uFF0C\u719F\u6089TypeScript\u3001JavaScript\u3001CSS3\u3001HTML5\u7B49\u524D\u7AEF\u6280\u672F\u3002 \u6709\u4E30\u5BCC\u7684\u5927\u578B\u9879\u76EE\u5F00\u53D1\u7ECF\u9A8C\uFF0C\u80FD\u72EC\u7ACB\u8D1F\u8D23\u524D\u7AEF\u67B6\u6784\u8BBE\u8BA1\u3002"))
2295
+ customContent: /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "mt-5 border-t border-gray-100 pt-4" }, /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "text-sm font-semibold mb-2" }, "\u4E13\u4E1A\u6280\u80FD"), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-sm text-gray-600 leading-relaxed" }, "\u7CBE\u901AReact\u3001Vue\u3001Angular\u7B49\u524D\u7AEF\u6846\u67B6\uFF0C\u719F\u6089TypeScript\u3001JavaScript\u3001CSS3\u3001HTML5\u7B49\u524D\u7AEF\u6280\u672F\u3002 \u6709\u4E30\u5BCC\u7684\u5927\u578B\u9879\u76EE\u5F00\u53D1\u7ECF\u9A8C\uFF0C\u80FD\u72EC\u7ACB\u8D1F\u8D23\u524D\u7AEF\u67B6\u6784\u8BBE\u8BA1\u3002"))
2011
2296
  };
2012
2297
  var ProfileButton = ({
2013
2298
  data = exampleProfileData,
@@ -2017,7 +2302,7 @@ var ProfileButton = ({
2017
2302
  className = "",
2018
2303
  modalTheme = "light"
2019
2304
  }) => {
2020
- const [isModalOpen, setIsModalOpen] = React33.useState(false);
2305
+ const [isModalOpen, setIsModalOpen] = React37.useState(false);
2021
2306
  const openModal = () => setIsModalOpen(true);
2022
2307
  const closeModal = () => setIsModalOpen(false);
2023
2308
  const handleContactClick = (type, value) => {
@@ -2027,7 +2312,7 @@ var ProfileButton = ({
2027
2312
  window.open(`tel:${value}`);
2028
2313
  }
2029
2314
  };
2030
- return /* @__PURE__ */ React33__namespace.default.createElement(React33__namespace.default.Fragment, null, /* @__PURE__ */ React33__namespace.default.createElement(
2315
+ return /* @__PURE__ */ React37__namespace.default.createElement(React37__namespace.default.Fragment, null, /* @__PURE__ */ React37__namespace.default.createElement(
2031
2316
  Button,
2032
2317
  {
2033
2318
  variant,
@@ -2036,7 +2321,7 @@ var ProfileButton = ({
2036
2321
  className
2037
2322
  },
2038
2323
  buttonText
2039
- ), /* @__PURE__ */ React33__namespace.default.createElement(
2324
+ ), /* @__PURE__ */ React37__namespace.default.createElement(
2040
2325
  ProfileModal_default,
2041
2326
  {
2042
2327
  isOpen: isModalOpen,
@@ -2047,8 +2332,8 @@ var ProfileButton = ({
2047
2332
  onSocialLinkClick: (url) => window.open(url, "_blank")
2048
2333
  },
2049
2334
  data.customContent,
2050
- data.badges && /* @__PURE__ */ React33__namespace.default.createElement(BadgeList, { badges: data.badges }),
2051
- data.stats && /* @__PURE__ */ React33__namespace.default.createElement(StatList, { stats: data.stats })
2335
+ data.badges && /* @__PURE__ */ React37__namespace.default.createElement(BadgeList, { badges: data.badges }),
2336
+ data.stats && /* @__PURE__ */ React37__namespace.default.createElement(StatList, { stats: data.stats })
2052
2337
  ));
2053
2338
  };
2054
2339
  var AutoOpenModal = ({
@@ -2058,8 +2343,8 @@ var AutoOpenModal = ({
2058
2343
  themeName = "light",
2059
2344
  onClose
2060
2345
  }) => {
2061
- const [isModalOpen, setIsModalOpen] = React33.useState(false);
2062
- React33.useEffect(() => {
2346
+ const [isModalOpen, setIsModalOpen] = React37.useState(false);
2347
+ React37.useEffect(() => {
2063
2348
  const timer = setTimeout(() => {
2064
2349
  setIsModalOpen(true);
2065
2350
  }, delay);
@@ -2078,7 +2363,7 @@ var AutoOpenModal = ({
2078
2363
  window.open(`tel:${value}`);
2079
2364
  }
2080
2365
  };
2081
- return /* @__PURE__ */ React33__namespace.default.createElement(
2366
+ return /* @__PURE__ */ React37__namespace.default.createElement(
2082
2367
  ProfileModal_default,
2083
2368
  {
2084
2369
  isOpen: isModalOpen,
@@ -2088,8 +2373,8 @@ var AutoOpenModal = ({
2088
2373
  onContactClick: handleContactClick,
2089
2374
  onSocialLinkClick: (url) => window.open(url, "_blank")
2090
2375
  },
2091
- data.badges && /* @__PURE__ */ React33__namespace.default.createElement(BadgeList, { badges: data.badges }),
2092
- data.stats && /* @__PURE__ */ React33__namespace.default.createElement(StatList, { stats: data.stats })
2376
+ data.badges && /* @__PURE__ */ React37__namespace.default.createElement(BadgeList, { badges: data.badges }),
2377
+ data.stats && /* @__PURE__ */ React37__namespace.default.createElement(StatList, { stats: data.stats })
2093
2378
  );
2094
2379
  };
2095
2380
  var sizeMap = {
@@ -2113,7 +2398,7 @@ var EnhancedAvatar = ({
2113
2398
  }) => {
2114
2399
  const sizeClass = typeof size === "string" ? sizeMap[size] : "";
2115
2400
  const customSizeStyle = typeof size === "number" ? { width: size, height: size } : {};
2116
- return /* @__PURE__ */ React33__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("relative inline-block", className), onClick }, /* @__PURE__ */ React33__namespace.default.createElement(Avatar, { className: chunk7Z5LLJ3A_js.cn(sizeClass, onClick && "cursor-pointer hover:ring-2 hover:ring-blue-500 transition-all"), style: customSizeStyle }, src && /* @__PURE__ */ React33__namespace.default.createElement(AvatarImage, { src, alt: name || "Avatar", className: "object-cover" }), /* @__PURE__ */ React33__namespace.default.createElement(AvatarFallback, { className: "bg-primary/10 text-primary-foreground" }, name ? name.substring(0, 2).toUpperCase() : "??")), mood && /* @__PURE__ */ React33__namespace.default.createElement(
2401
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("relative inline-block", className), onClick }, /* @__PURE__ */ React37__namespace.default.createElement(Avatar, { className: chunk7Z5LLJ3A_js.cn(sizeClass, onClick && "cursor-pointer hover:ring-2 hover:ring-blue-500 transition-all"), style: customSizeStyle }, src && /* @__PURE__ */ React37__namespace.default.createElement(AvatarImage, { src, alt: name || "Avatar", className: "object-cover" }), /* @__PURE__ */ React37__namespace.default.createElement(AvatarFallback, { className: "bg-primary/10 text-primary-foreground" }, name ? name.substring(0, 2).toUpperCase() : "??")), mood && /* @__PURE__ */ React37__namespace.default.createElement(
2117
2402
  "div",
2118
2403
  {
2119
2404
  className: chunk7Z5LLJ3A_js.cn(
@@ -2122,23 +2407,23 @@ var EnhancedAvatar = ({
2122
2407
  typeof size === "number" ? size > 60 ? "h-4 w-4" : "h-3 w-3" : size === "large" ? "h-4 w-4" : "h-3 w-3"
2123
2408
  )
2124
2409
  }
2125
- ), statusText && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "absolute -bottom-6 left-1/2 transform -translate-x-1/2 whitespace-nowrap" }, /* @__PURE__ */ React33__namespace.default.createElement("span", { className: "text-xs text-muted-foreground" }, statusText)));
2410
+ ), statusText && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "absolute -bottom-6 left-1/2 transform -translate-x-1/2 whitespace-nowrap" }, /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "text-xs text-muted-foreground" }, statusText)));
2126
2411
  };
2127
2412
  var About = ({
2128
2413
  timelineConfig,
2129
2414
  collisionBallsConfig
2130
2415
  }) => {
2131
- return /* @__PURE__ */ React33__namespace.default.createElement("section", { id: "about", className: "py-16 bg-white" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React33__namespace.default.createElement("h2", { className: "text-3xl font-bold text-center mb-12" }, "\u5173\u4E8E\u6211"), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-12" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6" }, /* @__PURE__ */ React33__namespace.default.createElement("h3", { className: "text-2xl font-semibold mb-6" }, "\u4E2A\u4EBA\u7ECF\u5386"), /* @__PURE__ */ React33__namespace.default.createElement(Timeline, { items: timelineConfig.items })), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6" }, /* @__PURE__ */ React33__namespace.default.createElement("h3", { className: "text-2xl font-semibold mb-6" }, "\u6280\u80FD\u5C55\u793A"), /* @__PURE__ */ React33__namespace.default.createElement("div", { style: { height: "400px", position: "relative" } }, /* @__PURE__ */ React33__namespace.default.createElement(CollisionBalls, { collisionBallsConfig }))))));
2416
+ return /* @__PURE__ */ React37__namespace.default.createElement("section", { id: "about", className: "py-16 bg-white" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React37__namespace.default.createElement("h2", { className: "text-3xl font-bold text-center mb-12" }, "\u5173\u4E8E\u6211"), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-12" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6" }, /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "text-2xl font-semibold mb-6" }, "\u4E2A\u4EBA\u7ECF\u5386"), /* @__PURE__ */ React37__namespace.default.createElement(Timeline, { items: timelineConfig.items })), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6" }, /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "text-2xl font-semibold mb-6" }, "\u6280\u80FD\u5C55\u793A"), /* @__PURE__ */ React37__namespace.default.createElement("div", { style: { height: "400px", position: "relative" } }, /* @__PURE__ */ React37__namespace.default.createElement(CollisionBalls, { collisionBallsConfig }))))));
2132
2417
  };
2133
2418
  var About_default = About;
2134
2419
  var Contact = () => {
2135
- const [formData, setFormData] = React33.useState({
2420
+ const [formData, setFormData] = React37.useState({
2136
2421
  name: "",
2137
2422
  email: "",
2138
2423
  message: ""
2139
2424
  });
2140
- const [isSubmitting, setIsSubmitting] = React33.useState(false);
2141
- const [submitStatus, setSubmitStatus] = React33.useState("idle");
2425
+ const [isSubmitting, setIsSubmitting] = React37.useState(false);
2426
+ const [submitStatus, setSubmitStatus] = React37.useState("idle");
2142
2427
  const handleChange = (e) => {
2143
2428
  const { name, value } = e.target;
2144
2429
  setFormData((prev) => ({
@@ -2160,7 +2445,7 @@ var Contact = () => {
2160
2445
  setIsSubmitting(false);
2161
2446
  }
2162
2447
  };
2163
- return /* @__PURE__ */ React33__namespace.default.createElement("section", { id: "contact", className: "py-16 bg-gray-50" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "text-center mb-12" }, /* @__PURE__ */ React33__namespace.default.createElement("h2", { className: "text-3xl font-bold text-gray-900 sm:text-4xl" }, "\u8054\u7CFB\u6211"), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "mt-4 text-lg text-gray-600" }, "\u6709\u4EFB\u4F55\u95EE\u9898\u6216\u5EFA\u8BAE\uFF1F\u8BF7\u968F\u65F6\u8054\u7CFB\u6211")), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-xl p-6 sm:p-8" }, /* @__PURE__ */ React33__namespace.default.createElement("form", { onSubmit: handleSubmit, className: "space-y-6" }, /* @__PURE__ */ React33__namespace.default.createElement("div", null, /* @__PURE__ */ React33__namespace.default.createElement("label", { htmlFor: "name", className: "block text-sm font-medium text-gray-700" }, "\u59D3\u540D"), /* @__PURE__ */ React33__namespace.default.createElement(
2448
+ return /* @__PURE__ */ React37__namespace.default.createElement("section", { id: "contact", className: "py-16 bg-gray-50" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "text-center mb-12" }, /* @__PURE__ */ React37__namespace.default.createElement("h2", { className: "text-3xl font-bold text-gray-900 sm:text-4xl" }, "\u8054\u7CFB\u6211"), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "mt-4 text-lg text-gray-600" }, "\u6709\u4EFB\u4F55\u95EE\u9898\u6216\u5EFA\u8BAE\uFF1F\u8BF7\u968F\u65F6\u8054\u7CFB\u6211")), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-xl p-6 sm:p-8" }, /* @__PURE__ */ React37__namespace.default.createElement("form", { onSubmit: handleSubmit, className: "space-y-6" }, /* @__PURE__ */ React37__namespace.default.createElement("div", null, /* @__PURE__ */ React37__namespace.default.createElement("label", { htmlFor: "name", className: "block text-sm font-medium text-gray-700" }, "\u59D3\u540D"), /* @__PURE__ */ React37__namespace.default.createElement(
2164
2449
  "input",
2165
2450
  {
2166
2451
  type: "text",
@@ -2172,7 +2457,7 @@ var Contact = () => {
2172
2457
  className: "mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 sm:text-sm",
2173
2458
  placeholder: "\u8BF7\u8F93\u5165\u60A8\u7684\u59D3\u540D"
2174
2459
  }
2175
- )), /* @__PURE__ */ React33__namespace.default.createElement("div", null, /* @__PURE__ */ React33__namespace.default.createElement("label", { htmlFor: "email", className: "block text-sm font-medium text-gray-700" }, "\u90AE\u7BB1"), /* @__PURE__ */ React33__namespace.default.createElement(
2460
+ )), /* @__PURE__ */ React37__namespace.default.createElement("div", null, /* @__PURE__ */ React37__namespace.default.createElement("label", { htmlFor: "email", className: "block text-sm font-medium text-gray-700" }, "\u90AE\u7BB1"), /* @__PURE__ */ React37__namespace.default.createElement(
2176
2461
  "input",
2177
2462
  {
2178
2463
  type: "email",
@@ -2184,7 +2469,7 @@ var Contact = () => {
2184
2469
  className: "mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 sm:text-sm",
2185
2470
  placeholder: "\u8BF7\u8F93\u5165\u60A8\u7684\u90AE\u7BB1"
2186
2471
  }
2187
- )), /* @__PURE__ */ React33__namespace.default.createElement("div", null, /* @__PURE__ */ React33__namespace.default.createElement("label", { htmlFor: "message", className: "block text-sm font-medium text-gray-700" }, "\u6D88\u606F"), /* @__PURE__ */ React33__namespace.default.createElement(
2472
+ )), /* @__PURE__ */ React37__namespace.default.createElement("div", null, /* @__PURE__ */ React37__namespace.default.createElement("label", { htmlFor: "message", className: "block text-sm font-medium text-gray-700" }, "\u6D88\u606F"), /* @__PURE__ */ React37__namespace.default.createElement(
2188
2473
  "textarea",
2189
2474
  {
2190
2475
  name: "message",
@@ -2196,7 +2481,7 @@ var Contact = () => {
2196
2481
  className: "mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 sm:text-sm",
2197
2482
  placeholder: "\u8BF7\u8F93\u5165\u60A8\u7684\u6D88\u606F"
2198
2483
  }
2199
- )), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex items-center justify-end" }, /* @__PURE__ */ React33__namespace.default.createElement(
2484
+ )), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center justify-end" }, /* @__PURE__ */ React37__namespace.default.createElement(
2200
2485
  "button",
2201
2486
  {
2202
2487
  type: "submit",
@@ -2205,9 +2490,182 @@ var Contact = () => {
2205
2490
  ${isSubmitting ? "bg-blue-400 cursor-not-allowed" : "bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"}`
2206
2491
  },
2207
2492
  isSubmitting ? "\u53D1\u9001\u4E2D..." : "\u53D1\u9001\u6D88\u606F"
2208
- )), submitStatus === "success" && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "rounded-md bg-green-50 p-4" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React33__namespace.default.createElement("svg", { className: "h-5 w-5 text-green-400", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React33__namespace.default.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z", clipRule: "evenodd" }))), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "ml-3" }, /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-sm font-medium text-green-800" }, "\u6D88\u606F\u5DF2\u6210\u529F\u53D1\u9001\uFF01")))), submitStatus === "error" && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "rounded-md bg-red-50 p-4" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React33__namespace.default.createElement("svg", { className: "h-5 w-5 text-red-400", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React33__namespace.default.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" }))), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "ml-3" }, /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "text-sm font-medium text-red-800" }, "\u53D1\u9001\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5")))))), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "mt-12 grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6 text-center" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "text-blue-600 mb-4" }, /* @__PURE__ */ React33__namespace.default.createElement("svg", { className: "h-8 w-8 mx-auto", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React33__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" }))), /* @__PURE__ */ React33__namespace.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u90AE\u7BB1"), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "mt-2 text-gray-600" }, "your.email@example.com")), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6 text-center" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "text-blue-600 mb-4" }, /* @__PURE__ */ React33__namespace.default.createElement("svg", { className: "h-8 w-8 mx-auto", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React33__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z" }))), /* @__PURE__ */ React33__namespace.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u7535\u8BDD"), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "mt-2 text-gray-600" }, "+86 123 4567 8900")), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6 text-center" }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "text-blue-600 mb-4" }, /* @__PURE__ */ React33__namespace.default.createElement("svg", { className: "h-8 w-8 mx-auto", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React33__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }), /* @__PURE__ */ React33__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" }))), /* @__PURE__ */ React33__namespace.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u5730\u5740"), /* @__PURE__ */ React33__namespace.default.createElement("p", { className: "mt-2 text-gray-600" }, "\u4E2D\u56FD\uFF0C\u5317\u4EAC")))));
2493
+ )), submitStatus === "success" && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "rounded-md bg-green-50 p-4" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React37__namespace.default.createElement("svg", { className: "h-5 w-5 text-green-400", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React37__namespace.default.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z", clipRule: "evenodd" }))), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "ml-3" }, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-sm font-medium text-green-800" }, "\u6D88\u606F\u5DF2\u6210\u529F\u53D1\u9001\uFF01")))), submitStatus === "error" && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "rounded-md bg-red-50 p-4" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React37__namespace.default.createElement("svg", { className: "h-5 w-5 text-red-400", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React37__namespace.default.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" }))), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "ml-3" }, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-sm font-medium text-red-800" }, "\u53D1\u9001\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5")))))), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "mt-12 grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6 text-center" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "text-blue-600 mb-4" }, /* @__PURE__ */ React37__namespace.default.createElement("svg", { className: "h-8 w-8 mx-auto", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React37__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" }))), /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u90AE\u7BB1"), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "mt-2 text-gray-600" }, "your.email@example.com")), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6 text-center" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "text-blue-600 mb-4" }, /* @__PURE__ */ React37__namespace.default.createElement("svg", { className: "h-8 w-8 mx-auto", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React37__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z" }))), /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u7535\u8BDD"), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "mt-2 text-gray-600" }, "+86 123 4567 8900")), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6 text-center" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "text-blue-600 mb-4" }, /* @__PURE__ */ React37__namespace.default.createElement("svg", { className: "h-8 w-8 mx-auto", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React37__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }), /* @__PURE__ */ React37__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" }))), /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u5730\u5740"), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "mt-2 text-gray-600" }, "\u4E2D\u56FD\uFF0C\u5317\u4EAC")))));
2209
2494
  };
2210
2495
  var Contact_default = Contact;
2496
+ var Home = ({ homeConfig, className }) => {
2497
+ const { title, subtitle, buttons, imageSrc } = homeConfig;
2498
+ const [displayText, setDisplayText] = React37.useState("");
2499
+ const [currentIndex, setCurrentIndex] = React37.useState(0);
2500
+ React37.useEffect(() => {
2501
+ if (currentIndex < title.length) {
2502
+ const timer = setTimeout(() => {
2503
+ setDisplayText((prev) => prev + title[currentIndex]);
2504
+ setCurrentIndex((prev) => prev + 1);
2505
+ }, 150);
2506
+ return () => clearTimeout(timer);
2507
+ }
2508
+ return () => {
2509
+ setDisplayText("");
2510
+ setCurrentIndex(0);
2511
+ };
2512
+ }, [currentIndex, title]);
2513
+ return /* @__PURE__ */ React37__namespace.default.createElement(
2514
+ "section",
2515
+ {
2516
+ id: "home",
2517
+ className: chunk7Z5LLJ3A_js.cn("min-h-screen flex items-center justify-center py-16 bg-gradient-to-b from-white to-gray-50", className)
2518
+ },
2519
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex flex-col md:flex-row items-center gap-12" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex-1 text-center md:text-left" }, /* @__PURE__ */ React37__namespace.default.createElement("h1", { className: "text-4xl md:text-6xl font-bold mb-6 text-gray-900" }, /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "inline-block" }, displayText), /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "animate-pulse ml-1 text-blue-500" }, "|")), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-xl md:text-2xl text-gray-600 mb-8" }, subtitle), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex flex-wrap gap-4 justify-center md:justify-start" }, buttons.map((button) => /* @__PURE__ */ React37__namespace.default.createElement(
2520
+ "a",
2521
+ {
2522
+ key: button.link,
2523
+ href: button.link,
2524
+ className: "px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-all duration-300 shadow-md hover:shadow-lg font-medium"
2525
+ },
2526
+ button.text
2527
+ )))), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "relative group" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "absolute -inset-1 bg-gradient-to-r from-blue-600 to-purple-600 rounded-lg blur opacity-25 group-hover:opacity-50 transition duration-1000 group-hover:duration-200" }), /* @__PURE__ */ React37__namespace.default.createElement(
2528
+ "img",
2529
+ {
2530
+ src: imageSrc,
2531
+ alt: "Profile",
2532
+ className: "relative w-full max-w-md mx-auto rounded-lg shadow-xl transform hover:scale-[1.02] transition-transform duration-300 bg-white"
2533
+ }
2534
+ )))))
2535
+ );
2536
+ };
2537
+ var Home_default = Home;
2538
+ var ExperimentCard = ({
2539
+ href,
2540
+ title,
2541
+ description,
2542
+ tags,
2543
+ category,
2544
+ isCompleted,
2545
+ updatedAt,
2546
+ createdAt,
2547
+ className
2548
+ }) => {
2549
+ const formatDate = (dateString) => {
2550
+ if (!dateString) return "";
2551
+ try {
2552
+ const date = new Date(dateString);
2553
+ return date.toLocaleDateString("zh-CN", {
2554
+ year: "numeric",
2555
+ month: "2-digit",
2556
+ day: "2-digit"
2557
+ });
2558
+ } catch (e) {
2559
+ return dateString;
2560
+ }
2561
+ };
2562
+ return /* @__PURE__ */ React37__namespace.default.createElement(Link__default.default, { href, className: chunk7Z5LLJ3A_js.cn("block group", className) }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-full h-full bg-white rounded-2xl overflow-hidden shadow-md hover:shadow-2xl transition-all duration-300 transform group-hover:-translate-y-1 border border-gray-100 hover:border-gray-200" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-start justify-between mb-4" }, /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "text-xl font-semibold text-gray-900 flex-1 pr-4 leading-tight" }, title), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex flex-col gap-2 flex-shrink-0" }, /* @__PURE__ */ React37__namespace.default.createElement("span", { className: chunk7Z5LLJ3A_js.cn(
2563
+ "px-3 py-1.5 text-xs font-medium rounded-full shadow-sm",
2564
+ category === "utility" ? "bg-gradient-to-r from-green-50 to-green-100 text-green-700 border border-green-200" : "bg-gradient-to-r from-purple-50 to-purple-100 text-purple-700 border border-purple-200"
2565
+ ) }, category === "utility" ? "\u{1F527} \u5B9E\u7528\u5DE5\u5177" : "\u{1F3AE} \u4F11\u95F2\u5A31\u4E50"), /* @__PURE__ */ React37__namespace.default.createElement("span", { className: chunk7Z5LLJ3A_js.cn(
2566
+ "px-3 py-1.5 text-xs font-medium rounded-full shadow-sm border",
2567
+ isCompleted ? "bg-gradient-to-r from-emerald-50 to-emerald-100 text-emerald-700 border border-emerald-200" : "bg-gradient-to-r from-orange-50 to-orange-100 text-orange-700 border border-orange-200"
2568
+ ) }, isCompleted ? "\u2705 \u5DF2\u5B8C\u6210" : "\u{1F6A7} \u8FDB\u884C\u4E2D"))), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-gray-600 mb-4" }, description), updatedAt && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center gap-1 mb-3 text-xs text-gray-500" }, /* @__PURE__ */ React37__namespace.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-4 w-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" }, /* @__PURE__ */ React37__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" })), /* @__PURE__ */ React37__namespace.default.createElement("span", null, "\u66F4\u65B0\u4E8E: ", formatDate(updatedAt)), createdAt && createdAt !== updatedAt && /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "ml-2 text-gray-400" }, "\u521B\u5EFA\u4E8E: ", formatDate(createdAt))), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex flex-wrap gap-2" }, tags.map((tag) => /* @__PURE__ */ React37__namespace.default.createElement(
2569
+ "span",
2570
+ {
2571
+ key: tag,
2572
+ className: "px-3 py-1.5 text-xs font-medium bg-gradient-to-r from-gray-50 to-gray-100 text-gray-700 rounded-full border border-gray-200 shadow-sm hover:shadow-md transition-shadow duration-200"
2573
+ },
2574
+ "#",
2575
+ tag
2576
+ ))))));
2577
+ };
2578
+ var ProjectCarousel = ({ projects, className }) => {
2579
+ const [currentIndex, setCurrentIndex] = React37.useState(0);
2580
+ const nextSlide = () => {
2581
+ setCurrentIndex(
2582
+ (prevIndex) => prevIndex === projects.length - 1 ? 0 : prevIndex + 1
2583
+ );
2584
+ };
2585
+ const prevSlide = () => {
2586
+ setCurrentIndex(
2587
+ (prevIndex) => prevIndex === 0 ? projects.length - 1 : prevIndex - 1
2588
+ );
2589
+ };
2590
+ return /* @__PURE__ */ React37__namespace.default.createElement("section", { id: "projects", className: chunk7Z5LLJ3A_js.cn("py-16 bg-gray-50", className) }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React37__namespace.default.createElement("h2", { className: "text-3xl font-bold text-center mb-12 text-gray-900" }, "\u9879\u76EE\u5C55\u793A"), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "relative max-w-4xl mx-auto" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "relative h-[400px] overflow-hidden rounded-lg shadow-xl" }, projects.map((project, index) => /* @__PURE__ */ React37__namespace.default.createElement(
2591
+ "div",
2592
+ {
2593
+ key: project.id,
2594
+ className: chunk7Z5LLJ3A_js.cn(
2595
+ "absolute w-full h-full transition-all duration-500 transform",
2596
+ index === currentIndex ? "translate-x-0 opacity-100" : index < currentIndex ? "-translate-x-full opacity-0" : "translate-x-full opacity-0"
2597
+ )
2598
+ },
2599
+ /* @__PURE__ */ React37__namespace.default.createElement(
2600
+ ExperimentCard,
2601
+ {
2602
+ href: project.link || "#",
2603
+ title: project.title,
2604
+ description: project.description,
2605
+ tags: project.tags,
2606
+ category: "utility"
2607
+ }
2608
+ )
2609
+ ))), /* @__PURE__ */ React37__namespace.default.createElement(
2610
+ "button",
2611
+ {
2612
+ onClick: prevSlide,
2613
+ className: "absolute left-4 top-1/2 -translate-y-1/2 p-2 rounded-full bg-white/80 hover:bg-white shadow-lg focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all z-10"
2614
+ },
2615
+ /* @__PURE__ */ React37__namespace.default.createElement(
2616
+ "svg",
2617
+ {
2618
+ className: "w-6 h-6 text-gray-600",
2619
+ fill: "none",
2620
+ stroke: "currentColor",
2621
+ viewBox: "0 0 24 24"
2622
+ },
2623
+ /* @__PURE__ */ React37__namespace.default.createElement(
2624
+ "path",
2625
+ {
2626
+ strokeLinecap: "round",
2627
+ strokeLinejoin: "round",
2628
+ strokeWidth: 2,
2629
+ d: "M15 19l-7-7 7-7"
2630
+ }
2631
+ )
2632
+ )
2633
+ ), /* @__PURE__ */ React37__namespace.default.createElement(
2634
+ "button",
2635
+ {
2636
+ onClick: nextSlide,
2637
+ className: "absolute right-4 top-1/2 -translate-y-1/2 p-2 rounded-full bg-white/80 hover:bg-white shadow-lg focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all z-10"
2638
+ },
2639
+ /* @__PURE__ */ React37__namespace.default.createElement(
2640
+ "svg",
2641
+ {
2642
+ className: "w-6 h-6 text-gray-600",
2643
+ fill: "none",
2644
+ stroke: "currentColor",
2645
+ viewBox: "0 0 24 24"
2646
+ },
2647
+ /* @__PURE__ */ React37__namespace.default.createElement(
2648
+ "path",
2649
+ {
2650
+ strokeLinecap: "round",
2651
+ strokeLinejoin: "round",
2652
+ strokeWidth: 2,
2653
+ d: "M9 5l7 7-7 7"
2654
+ }
2655
+ )
2656
+ )
2657
+ ), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "absolute bottom-4 left-1/2 transform -translate-x-1/2 flex space-x-2 z-10" }, projects.map((_, index) => /* @__PURE__ */ React37__namespace.default.createElement(
2658
+ "button",
2659
+ {
2660
+ key: index,
2661
+ onClick: () => setCurrentIndex(index),
2662
+ className: chunk7Z5LLJ3A_js.cn(
2663
+ "w-2 h-2 rounded-full transition-all duration-300",
2664
+ index === currentIndex ? "bg-blue-500 w-4" : "bg-gray-300"
2665
+ )
2666
+ }
2667
+ ))))));
2668
+ };
2211
2669
  var NavigationItemComponent = ({
2212
2670
  item,
2213
2671
  direction,
@@ -2229,7 +2687,7 @@ var NavigationItemComponent = ({
2229
2687
  const stateClasses = isActive ? "bg-blue-500 text-white shadow-lg" : item.isExternal ? "text-gray-700 hover:bg-purple-50 hover:text-purple-600 border border-purple-200" : "text-gray-700 hover:bg-blue-50 hover:text-blue-600";
2230
2688
  return `${baseClasses} ${directionClasses} ${stateClasses}`;
2231
2689
  };
2232
- return /* @__PURE__ */ React33__namespace.default.createElement(
2690
+ return /* @__PURE__ */ React37__namespace.default.createElement(
2233
2691
  "a",
2234
2692
  {
2235
2693
  href: item.href,
@@ -2238,9 +2696,9 @@ var NavigationItemComponent = ({
2238
2696
  rel: item.isExternal ? "noopener noreferrer" : void 0,
2239
2697
  className: getItemClasses()
2240
2698
  },
2241
- item.icon && /* @__PURE__ */ React33__namespace.default.createElement("span", { className: "flex-shrink-0" }, item.icon),
2242
- /* @__PURE__ */ React33__namespace.default.createElement("span", { className: `font-medium ${direction === "vertical" ? "text-sm" : "text-xs"}` }, item.label),
2243
- item.isExternal && /* @__PURE__ */ React33__namespace.default.createElement(
2699
+ item.icon && /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "flex-shrink-0" }, item.icon),
2700
+ /* @__PURE__ */ React37__namespace.default.createElement("span", { className: `font-medium ${direction === "vertical" ? "text-sm" : "text-xs"}` }, item.label),
2701
+ item.isExternal && /* @__PURE__ */ React37__namespace.default.createElement(
2244
2702
  "svg",
2245
2703
  {
2246
2704
  className: "w-3 h-3 opacity-60 group-hover:opacity-100 transition-opacity",
@@ -2248,7 +2706,7 @@ var NavigationItemComponent = ({
2248
2706
  stroke: "currentColor",
2249
2707
  viewBox: "0 0 24 24"
2250
2708
  },
2251
- /* @__PURE__ */ React33__namespace.default.createElement(
2709
+ /* @__PURE__ */ React37__namespace.default.createElement(
2252
2710
  "path",
2253
2711
  {
2254
2712
  strokeLinecap: "round",
@@ -2258,7 +2716,7 @@ var NavigationItemComponent = ({
2258
2716
  }
2259
2717
  )
2260
2718
  ),
2261
- direction === "vertical" && isActive && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "absolute left-1 top-1/2 transform -translate-y-1/2 w-1 h-6 bg-white rounded-full" })
2719
+ direction === "vertical" && isActive && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "absolute left-1 top-1/2 transform -translate-y-1/2 w-1 h-6 bg-white rounded-full" })
2262
2720
  );
2263
2721
  };
2264
2722
  var NavigationItem_default = NavigationItemComponent;
@@ -2318,14 +2776,14 @@ var Navigation = ({
2318
2776
  onItemClick?.(item);
2319
2777
  };
2320
2778
  if (!isOpen) return null;
2321
- return /* @__PURE__ */ React33__namespace.default.createElement("nav", { className: `${getContainerClasses()} ${className}` }, /* @__PURE__ */ React33__namespace.default.createElement("div", { className: getContentClasses() }, logo && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex items-center justify-center mb-4" }, /* @__PURE__ */ React33__namespace.default.createElement(
2779
+ return /* @__PURE__ */ React37__namespace.default.createElement("nav", { className: `${getContainerClasses()} ${className}` }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: getContentClasses() }, logo && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center justify-center mb-4" }, /* @__PURE__ */ React37__namespace.default.createElement(
2322
2780
  "img",
2323
2781
  {
2324
2782
  src: logo.src,
2325
2783
  alt: logo.alt || "Logo",
2326
2784
  className: "h-8 w-auto"
2327
2785
  }
2328
- )), direction === "vertical" && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "h-12 flex-shrink-0" }), /* @__PURE__ */ React33__namespace.default.createElement("div", { className: getItemsListClasses() }, items.map((item) => /* @__PURE__ */ React33__namespace.default.createElement(
2786
+ )), direction === "vertical" && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "h-12 flex-shrink-0" }), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: getItemsListClasses() }, items.map((item) => /* @__PURE__ */ React37__namespace.default.createElement(
2329
2787
  NavigationItem_default,
2330
2788
  {
2331
2789
  key: item.id,
@@ -2334,14 +2792,14 @@ var Navigation = ({
2334
2792
  isActive: activeItemId === item.id,
2335
2793
  onClick: handleItemClick
2336
2794
  }
2337
- ))), avatar && direction === "vertical" && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex items-center justify-center mt-auto pt-4" }, /* @__PURE__ */ React33__namespace.default.createElement(
2795
+ ))), avatar && direction === "vertical" && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center justify-center mt-auto pt-4" }, /* @__PURE__ */ React37__namespace.default.createElement(
2338
2796
  "img",
2339
2797
  {
2340
2798
  src: avatar.src,
2341
2799
  alt: avatar.alt || "Avatar",
2342
2800
  className: "w-10 h-10 rounded-full border-2 border-gray-200"
2343
2801
  }
2344
- )), avatar && direction === "horizontal" && /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React33__namespace.default.createElement(
2802
+ )), avatar && direction === "horizontal" && /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React37__namespace.default.createElement(
2345
2803
  "img",
2346
2804
  {
2347
2805
  src: avatar.src,
@@ -2370,7 +2828,7 @@ var NavigationToggle = ({
2370
2828
  return "top-4 left-4";
2371
2829
  }
2372
2830
  };
2373
- return /* @__PURE__ */ React33__namespace.default.createElement(
2831
+ return /* @__PURE__ */ React37__namespace.default.createElement(
2374
2832
  "button",
2375
2833
  {
2376
2834
  onClick,
@@ -2386,7 +2844,7 @@ var NavigationToggle = ({
2386
2844
  `,
2387
2845
  "aria-label": isOpen ? "\u5173\u95ED\u5BFC\u822A\u680F" : "\u6253\u5F00\u5BFC\u822A\u680F"
2388
2846
  },
2389
- /* @__PURE__ */ React33__namespace.default.createElement("div", { className: "w-5 h-5 flex flex-col justify-center items-center" }, /* @__PURE__ */ React33__namespace.default.createElement(
2847
+ /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-5 h-5 flex flex-col justify-center items-center" }, /* @__PURE__ */ React37__namespace.default.createElement(
2390
2848
  "span",
2391
2849
  {
2392
2850
  className: `
@@ -2395,7 +2853,7 @@ var NavigationToggle = ({
2395
2853
  ${isOpen ? "rotate-45 translate-y-0.5" : ""}
2396
2854
  `
2397
2855
  }
2398
- ), /* @__PURE__ */ React33__namespace.default.createElement(
2856
+ ), /* @__PURE__ */ React37__namespace.default.createElement(
2399
2857
  "span",
2400
2858
  {
2401
2859
  className: `
@@ -2404,7 +2862,7 @@ var NavigationToggle = ({
2404
2862
  ${isOpen ? "opacity-0 scale-0" : "opacity-100 scale-100"}
2405
2863
  `
2406
2864
  }
2407
- ), /* @__PURE__ */ React33__namespace.default.createElement(
2865
+ ), /* @__PURE__ */ React37__namespace.default.createElement(
2408
2866
  "span",
2409
2867
  {
2410
2868
  className: `
@@ -2427,21 +2885,21 @@ var FloatingMenu = ({
2427
2885
  triggerClassName = "",
2428
2886
  zIndex = 1e3
2429
2887
  }) => {
2430
- const [position, setPosition] = React33.useState(initialPosition);
2431
- const [isMenuOpen, setIsMenuOpen] = React33.useState(defaultOpen);
2432
- const [menuDirection, setMenuDirection] = React33.useState("right");
2433
- const [isDragging, setIsDragging] = React33.useState(false);
2434
- const [dragOffset, setDragOffset] = React33.useState({ x: 0, y: 0 });
2435
- const containerRef = React33.useRef(null);
2436
- const [mounted, setMounted] = React33.useState(false);
2437
- const [hasDragged, setHasDragged] = React33.useState(false);
2438
- const dragTimerRef = React33.useRef(null);
2439
- const mouseDownPosRef = React33.useRef(null);
2440
- React33.useEffect(() => {
2888
+ const [position, setPosition] = React37.useState(initialPosition);
2889
+ const [isMenuOpen, setIsMenuOpen] = React37.useState(defaultOpen);
2890
+ const [menuDirection, setMenuDirection] = React37.useState("right");
2891
+ const [isDragging, setIsDragging] = React37.useState(false);
2892
+ const [dragOffset, setDragOffset] = React37.useState({ x: 0, y: 0 });
2893
+ const containerRef = React37.useRef(null);
2894
+ const [mounted, setMounted] = React37.useState(false);
2895
+ const [hasDragged, setHasDragged] = React37.useState(false);
2896
+ const dragTimerRef = React37.useRef(null);
2897
+ const mouseDownPosRef = React37.useRef(null);
2898
+ React37.useEffect(() => {
2441
2899
  setMounted(true);
2442
2900
  return () => setMounted(false);
2443
2901
  }, []);
2444
- React33.useEffect(() => {
2902
+ React37.useEffect(() => {
2445
2903
  if (!mounted || !containerRef.current) return;
2446
2904
  const updateMenuDirection = () => {
2447
2905
  const rect = containerRef.current?.getBoundingClientRect();
@@ -2470,7 +2928,7 @@ var FloatingMenu = ({
2470
2928
  setHasDragged(false);
2471
2929
  setIsDragging(true);
2472
2930
  };
2473
- React33.useEffect(() => {
2931
+ React37.useEffect(() => {
2474
2932
  if (!isDragging) return;
2475
2933
  const handleMouseMove = (e) => {
2476
2934
  if (mouseDownPosRef.current) {
@@ -2506,7 +2964,7 @@ var FloatingMenu = ({
2506
2964
  document.removeEventListener("mouseup", handleMouseUp);
2507
2965
  };
2508
2966
  }, [isDragging, dragOffset]);
2509
- React33.useEffect(() => {
2967
+ React37.useEffect(() => {
2510
2968
  return () => {
2511
2969
  if (dragTimerRef.current) {
2512
2970
  window.clearTimeout(dragTimerRef.current);
@@ -2520,7 +2978,7 @@ var FloatingMenu = ({
2520
2978
  }
2521
2979
  setIsMenuOpen(!isMenuOpen);
2522
2980
  };
2523
- React33.useEffect(() => {
2981
+ React37.useEffect(() => {
2524
2982
  if (!isMenuOpen) return;
2525
2983
  const handleClickOutside = (e) => {
2526
2984
  if (containerRef.current && !containerRef.current.contains(e.target)) {
@@ -2532,7 +2990,7 @@ var FloatingMenu = ({
2532
2990
  document.removeEventListener("mousedown", handleClickOutside);
2533
2991
  };
2534
2992
  }, [isMenuOpen]);
2535
- React33.useEffect(() => {
2993
+ React37.useEffect(() => {
2536
2994
  if (!mounted) return;
2537
2995
  const checkBoundaries = () => {
2538
2996
  const windowWidth = window.innerWidth;
@@ -2553,7 +3011,7 @@ var FloatingMenu = ({
2553
3011
  }, [mounted]);
2554
3012
  if (!mounted) return null;
2555
3013
  return reactDom.createPortal(
2556
- /* @__PURE__ */ React33__namespace.default.createElement(
3014
+ /* @__PURE__ */ React37__namespace.default.createElement(
2557
3015
  "div",
2558
3016
  {
2559
3017
  ref: containerRef,
@@ -2564,7 +3022,7 @@ var FloatingMenu = ({
2564
3022
  zIndex
2565
3023
  }
2566
3024
  },
2567
- /* @__PURE__ */ React33__namespace.default.createElement(
3025
+ /* @__PURE__ */ React37__namespace.default.createElement(
2568
3026
  "div",
2569
3027
  {
2570
3028
  className: `
@@ -2582,7 +3040,7 @@ var FloatingMenu = ({
2582
3040
  },
2583
3041
  trigger
2584
3042
  ),
2585
- isMenuOpen && /* @__PURE__ */ React33__namespace.default.createElement(
3043
+ isMenuOpen && /* @__PURE__ */ React37__namespace.default.createElement(
2586
3044
  "div",
2587
3045
  {
2588
3046
  className: `
@@ -2611,6 +3069,57 @@ var FloatingMenu = ({
2611
3069
  );
2612
3070
  };
2613
3071
  var FloatingMenu_default = FloatingMenu;
3072
+ var FloatingMenuExample = () => {
3073
+ const [windowWidth, setWindowWidth] = React37.useState(0);
3074
+ React37.useEffect(() => {
3075
+ setWindowWidth(window.innerWidth);
3076
+ const handleResize = () => setWindowWidth(window.innerWidth);
3077
+ window.addEventListener("resize", handleResize);
3078
+ return () => window.removeEventListener("resize", handleResize);
3079
+ }, []);
3080
+ const menuItems = [
3081
+ { id: 1, label: "\u9996\u9875", icon: "\u{1F3E0}" },
3082
+ { id: 2, label: "\u8BBE\u7F6E", icon: "\u2699\uFE0F" },
3083
+ { id: 3, label: "\u6D88\u606F", icon: "\u{1F4E9}" },
3084
+ { id: 4, label: "\u5E2E\u52A9", icon: "\u2753" },
3085
+ { id: 5, label: "\u9000\u51FA", icon: "\u{1F6AA}" }
3086
+ ];
3087
+ const handleMenuItemClick = (id) => {
3088
+ console.log(`\u70B9\u51FB\u4E86\u83DC\u5355\u9879: ${id}`);
3089
+ };
3090
+ return /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-full h-screen bg-gray-100 relative p-8" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "max-w-2xl mx-auto bg-white rounded-2xl shadow-sm p-8 mt-12" }, /* @__PURE__ */ React37__namespace.default.createElement("h1", { className: "text-3xl font-bold mb-4 text-gray-900" }, "\u60AC\u6D6E\u83DC\u5355\u793A\u4F8B"), /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-gray-600 leading-relaxed mb-6" }, "\u8FD9\u662F\u4E00\u4E2A\u53EF\u62D6\u62FD\u7684\u60AC\u6D6E\u83DC\u5355\u7EC4\u4EF6\u793A\u4F8B\u3002\u4F60\u53EF\u4EE5\u5C1D\u8BD5\u62D6\u52A8\u4E0B\u65B9\u7684 ", /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "font-bold text-blue-600" }, "\u84DD\u8272\u6309\u94AE"), " \u5230\u5904\u79FB\u52A8\u3002"), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "bg-blue-50 border-l-4 border-blue-500 p-4 mb-6" }, /* @__PURE__ */ React37__namespace.default.createElement("p", { className: "text-sm text-blue-700" }, /* @__PURE__ */ React37__namespace.default.createElement("strong", null, "\u667A\u80FD\u5B9A\u4F4D\uFF1A"), " \u83DC\u5355\u4F1A\u6839\u636E\u6309\u94AE\u5728\u5C4F\u5E55\u4E0A\u7684\u4F4D\u7F6E\u81EA\u52A8\u8C03\u6574\u5F39\u51FA\u65B9\u5411\uFF08\u5411\u5DE6\u6216\u5411\u53F3\uFF09\u3002"))), /* @__PURE__ */ React37__namespace.default.createElement(
3091
+ FloatingMenu_default,
3092
+ {
3093
+ trigger: /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-12 h-12 bg-blue-600 rounded-full flex items-center justify-center text-white shadow-lg cursor-pointer" }, /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "text-xl" }, "\u2795")),
3094
+ menu: /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-48 bg-white rounded-xl shadow-xl border border-gray-100 overflow-hidden" }, /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "px-4 py-3 border-b border-gray-100" }, /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "text-sm font-bold text-gray-900" }, "\u5FEB\u6377\u83DC\u5355")), /* @__PURE__ */ React37__namespace.default.createElement("ul", { className: "py-1" }, menuItems.map((item) => /* @__PURE__ */ React37__namespace.default.createElement(
3095
+ "li",
3096
+ {
3097
+ key: item.id,
3098
+ className: "flex items-center gap-3 px-4 py-2.5 hover:bg-blue-50 text-gray-700 hover:text-blue-600 cursor-pointer transition-colors text-sm",
3099
+ onClick: () => handleMenuItemClick(item.id)
3100
+ },
3101
+ /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "text-lg" }, item.icon),
3102
+ /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "font-medium" }, item.label)
3103
+ )))),
3104
+ initialPosition: { x: 100, y: 100 }
3105
+ }
3106
+ ), windowWidth > 0 && /* @__PURE__ */ React37__namespace.default.createElement(
3107
+ FloatingMenu_default,
3108
+ {
3109
+ trigger: /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-12 h-12 bg-purple-600 rounded-full flex items-center justify-center text-white shadow-lg cursor-pointer" }, /* @__PURE__ */ React37__namespace.default.createElement("span", { className: "text-xl" }, "\u{1F50D}")),
3110
+ menu: /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "w-64 bg-white rounded-xl shadow-xl border border-gray-100 p-4" }, /* @__PURE__ */ React37__namespace.default.createElement("h3", { className: "text-sm font-bold text-gray-900 mb-3" }, "\u5FEB\u901F\u641C\u7D22"), /* @__PURE__ */ React37__namespace.default.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React37__namespace.default.createElement(
3111
+ "input",
3112
+ {
3113
+ type: "text",
3114
+ placeholder: "\u8F93\u5165\u5173\u952E\u5B57...",
3115
+ className: "w-full px-3 py-2 text-sm border border-gray-200 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent outline-none"
3116
+ }
3117
+ ), /* @__PURE__ */ React37__namespace.default.createElement("button", { className: "w-full bg-purple-600 text-white py-2 rounded-lg text-sm font-medium hover:bg-purple-700 transition-colors" }, "\u641C\u7D22"))),
3118
+ initialPosition: { x: windowWidth - 100, y: 100 }
3119
+ }
3120
+ ));
3121
+ };
3122
+ var FloatingMenuExample_default = FloatingMenuExample;
2614
3123
 
2615
3124
  Object.defineProperty(exports, "SearchBox", {
2616
3125
  enumerable: true,
@@ -2708,6 +3217,7 @@ exports.AutoOpenModal = AutoOpenModal;
2708
3217
  exports.Avatar = Avatar;
2709
3218
  exports.AvatarFallback = AvatarFallback;
2710
3219
  exports.AvatarImage = AvatarImage;
3220
+ exports.BackButton = BackButton;
2711
3221
  exports.BackgroundRemover = BackgroundRemover;
2712
3222
  exports.Badge = Badge;
2713
3223
  exports.Button = Button;
@@ -2745,8 +3255,13 @@ exports.DropdownMenuSubContent = DropdownMenuSubContent;
2745
3255
  exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
2746
3256
  exports.DropdownMenuTrigger = DropdownMenuTrigger;
2747
3257
  exports.EnhancedAvatar = EnhancedAvatar;
3258
+ exports.ExperimentCard = ExperimentCard;
3259
+ exports.FilterButtonGroup = FilterButtonGroup;
2748
3260
  exports.FloatingMenu = FloatingMenu_default;
3261
+ exports.FloatingMenuExample = FloatingMenuExample_default;
3262
+ exports.GenericOrderManager = GenericOrderManager;
2749
3263
  exports.Grid = Grid;
3264
+ exports.Home = Home_default;
2750
3265
  exports.Input = Input;
2751
3266
  exports.Label = Label;
2752
3267
  exports.Navigation = Navigation_default;
@@ -2760,8 +3275,10 @@ exports.PopoverTrigger = PopoverTrigger;
2760
3275
  exports.ProfileButton = ProfileButton;
2761
3276
  exports.ProfileModal = ProfileModal;
2762
3277
  exports.Progress = Progress;
3278
+ exports.ProjectCarousel = ProjectCarousel;
2763
3279
  exports.ScrollArea = ScrollArea;
2764
3280
  exports.ScrollBar = ScrollBar;
3281
+ exports.SearchResultHint = SearchResultHint;
2765
3282
  exports.Select = Select;
2766
3283
  exports.SelectContent = SelectContent;
2767
3284
  exports.SelectGroup = SelectGroup;