@gendive/chatllm 0.17.20 → 0.17.21

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.
@@ -4704,7 +4704,8 @@ var ChatInput = ({
4704
4704
  onFileAttach,
4705
4705
  onRemoveAttachment,
4706
4706
  acceptedFileTypes,
4707
- onDisclaimerClick
4707
+ onDisclaimerClick,
4708
+ inline = false
4708
4709
  }) => {
4709
4710
  const [mainMenuOpen, setMainMenuOpen] = import_react9.default.useState(false);
4710
4711
  const textareaRef = (0, import_react9.useRef)(null);
@@ -4793,17 +4794,17 @@ var ChatInput = ({
4793
4794
  {
4794
4795
  className: "chatllm-input-footer",
4795
4796
  style: {
4796
- position: "absolute",
4797
- bottom: 0,
4798
- left: 0,
4799
- right: 0,
4797
+ position: inline ? "relative" : "absolute",
4798
+ bottom: inline ? void 0 : 0,
4799
+ left: inline ? void 0 : 0,
4800
+ right: inline ? void 0 : 0,
4800
4801
  display: "flex",
4801
4802
  flexDirection: "column",
4802
4803
  alignItems: "center",
4803
- paddingBottom: "16px",
4804
- paddingTop: "64px",
4805
- background: "linear-gradient(to top, var(--chatllm-bg) 60%, transparent)",
4806
- pointerEvents: "none"
4804
+ paddingBottom: inline ? "0px" : "16px",
4805
+ paddingTop: inline ? "0px" : "64px",
4806
+ background: inline ? "transparent" : "linear-gradient(to top, var(--chatllm-bg) 60%, transparent)",
4807
+ pointerEvents: inline ? void 0 : "none"
4807
4808
  },
4808
4809
  children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
4809
4810
  "div",
@@ -5404,7 +5405,7 @@ var ChatInput = ({
5404
5405
  ]
5405
5406
  }
5406
5407
  ),
5407
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
5408
+ !inline && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
5408
5409
  "p",
5409
5410
  {
5410
5411
  onClick: onDisclaimerClick,
@@ -9049,147 +9050,9 @@ var MessageList = ({
9049
9050
  );
9050
9051
  };
9051
9052
 
9052
- // src/react/components/EmptyState.tsx
9053
- var import_jsx_runtime17 = require("react/jsx-runtime");
9054
- var EmptyState = ({
9055
- greeting,
9056
- templates = [],
9057
- onTemplateClick,
9058
- actions = [],
9059
- onActionSelect
9060
- }) => {
9061
- const getActionIcon = (icon) => {
9062
- const iconMap = {
9063
- search: "search-line",
9064
- image: "image-line",
9065
- code: "code-s-slash-line",
9066
- document: "file-text-line"
9067
- };
9068
- return iconMap[icon] || "sparkling-line";
9069
- };
9070
- const hasContent = actions.length > 0 || templates.length > 0;
9071
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9072
- "div",
9073
- {
9074
- className: "chatllm-empty-state",
9075
- style: {
9076
- flex: 1,
9077
- display: "flex",
9078
- flexDirection: "column",
9079
- alignItems: "center",
9080
- justifyContent: hasContent ? "center" : "flex-end",
9081
- padding: "48px 24px",
9082
- paddingBottom: hasContent ? "200px" : "32px",
9083
- textAlign: "center"
9084
- },
9085
- children: [
9086
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9087
- "div",
9088
- {
9089
- className: "chatllm-sheet",
9090
- style: {
9091
- width: "64px",
9092
- height: "64px",
9093
- borderRadius: "16px",
9094
- display: "flex",
9095
- alignItems: "center",
9096
- justifyContent: "center",
9097
- marginBottom: "32px",
9098
- color: "var(--chatllm-primary)"
9099
- },
9100
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IconSvg, { name: "chat-1-line", size: 40 })
9101
- }
9102
- ),
9103
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9104
- "h1",
9105
- {
9106
- style: {
9107
- fontSize: "30px",
9108
- fontWeight: 700,
9109
- color: "var(--chatllm-text)",
9110
- marginBottom: hasContent ? "40px" : "0",
9111
- lineHeight: 1.3
9112
- },
9113
- children: "How can I help you today?"
9114
- }
9115
- ),
9116
- (actions.length > 0 || templates.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9117
- "div",
9118
- {
9119
- style: {
9120
- display: "flex",
9121
- flexWrap: "wrap",
9122
- justifyContent: "center",
9123
- gap: "12px",
9124
- maxWidth: "800px",
9125
- marginBottom: "48px"
9126
- },
9127
- children: [
9128
- actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9129
- "button",
9130
- {
9131
- onClick: () => onActionSelect?.(action),
9132
- className: "chatllm-btn-secondary",
9133
- style: {
9134
- display: "flex",
9135
- alignItems: "center",
9136
- gap: "8px",
9137
- padding: "12px 20px",
9138
- fontSize: "14px",
9139
- fontWeight: 500
9140
- },
9141
- children: [
9142
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9143
- IconSvg,
9144
- {
9145
- name: getActionIcon(action.icon),
9146
- size: 18,
9147
- color: "var(--chatllm-primary)"
9148
- }
9149
- ),
9150
- action.label
9151
- ]
9152
- },
9153
- action.id
9154
- )),
9155
- templates.slice(0, 4).map((template) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9156
- "button",
9157
- {
9158
- onClick: () => onTemplateClick(template),
9159
- className: "chatllm-btn-secondary",
9160
- style: {
9161
- display: "flex",
9162
- alignItems: "center",
9163
- gap: "8px",
9164
- padding: "12px 20px",
9165
- fontSize: "14px",
9166
- fontWeight: 500
9167
- },
9168
- children: [
9169
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9170
- IconSvg,
9171
- {
9172
- name: "sparkling-line",
9173
- size: 18,
9174
- color: "var(--chatllm-primary)"
9175
- }
9176
- ),
9177
- template.title
9178
- ]
9179
- },
9180
- template.id
9181
- ))
9182
- ]
9183
- }
9184
- )
9185
- ]
9186
- }
9187
- );
9188
- };
9189
-
9190
9053
  // src/react/components/SettingsModal.tsx
9191
9054
  var import_react18 = require("react");
9192
- var import_jsx_runtime18 = require("react/jsx-runtime");
9055
+ var import_jsx_runtime17 = require("react/jsx-runtime");
9193
9056
  var DEFAULT_PERSONALIZATION2 = {
9194
9057
  responseStyle: {
9195
9058
  warmth: "medium",
@@ -9249,7 +9112,7 @@ var SettingsModal = ({
9249
9112
  setLocalApiKey(value);
9250
9113
  onApiKeyChange?.(value);
9251
9114
  };
9252
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9115
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9253
9116
  "div",
9254
9117
  {
9255
9118
  className: "chatllm-settings-overlay",
@@ -9263,7 +9126,7 @@ var SettingsModal = ({
9263
9126
  zIndex: 1e3
9264
9127
  },
9265
9128
  onClick: onClose,
9266
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9129
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9267
9130
  "div",
9268
9131
  {
9269
9132
  className: "chatllm-settings-modal",
@@ -9281,7 +9144,7 @@ var SettingsModal = ({
9281
9144
  },
9282
9145
  onClick: (e) => e.stopPropagation(),
9283
9146
  children: [
9284
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9147
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9285
9148
  "div",
9286
9149
  {
9287
9150
  style: {
@@ -9292,7 +9155,7 @@ var SettingsModal = ({
9292
9155
  flexDirection: "column"
9293
9156
  },
9294
9157
  children: [
9295
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { padding: "16px", borderBottom: "1px solid var(--chatllm-border, #e5e7eb)" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9158
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { padding: "16px", borderBottom: "1px solid var(--chatllm-border, #e5e7eb)" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9296
9159
  "button",
9297
9160
  {
9298
9161
  onClick: onClose,
@@ -9306,11 +9169,11 @@ var SettingsModal = ({
9306
9169
  alignItems: "center",
9307
9170
  justifyContent: "center"
9308
9171
  },
9309
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #6b7280)" })
9172
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #6b7280)" })
9310
9173
  }
9311
9174
  ) }),
9312
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("nav", { style: { flex: 1, padding: "8px" }, children: [
9313
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9175
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("nav", { style: { flex: 1, padding: "8px" }, children: [
9176
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9314
9177
  TabButton,
9315
9178
  {
9316
9179
  active: activeTab === "general",
@@ -9319,7 +9182,7 @@ var SettingsModal = ({
9319
9182
  label: "\uC77C\uBC18"
9320
9183
  }
9321
9184
  ),
9322
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9185
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9323
9186
  TabButton,
9324
9187
  {
9325
9188
  active: activeTab === "personalization",
@@ -9328,7 +9191,7 @@ var SettingsModal = ({
9328
9191
  label: "\uAC1C\uC778 \uB9DE\uCDA4 \uC124\uC815"
9329
9192
  }
9330
9193
  ),
9331
- showMemoryTab && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9194
+ showMemoryTab && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9332
9195
  TabButton,
9333
9196
  {
9334
9197
  active: activeTab === "memory",
@@ -9337,7 +9200,7 @@ var SettingsModal = ({
9337
9200
  label: "AI \uBA54\uBAA8\uB9AC"
9338
9201
  }
9339
9202
  ),
9340
- showMemoryTab && enableProjects && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9203
+ showMemoryTab && enableProjects && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9341
9204
  TabButton,
9342
9205
  {
9343
9206
  active: activeTab === "project-memory",
@@ -9346,7 +9209,7 @@ var SettingsModal = ({
9346
9209
  label: "\uD504\uB85C\uC81D\uD2B8 \uBA54\uBAA8\uB9AC"
9347
9210
  }
9348
9211
  ),
9349
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9212
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9350
9213
  TabButton,
9351
9214
  {
9352
9215
  active: activeTab === "data",
@@ -9359,24 +9222,24 @@ var SettingsModal = ({
9359
9222
  ]
9360
9223
  }
9361
9224
  ),
9362
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { flex: 1, overflow: "auto", padding: "24px" }, children: [
9363
- activeTab === "general" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9364
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uC77C\uBC18" }),
9365
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SettingRow, { label: "\uC5B8\uC5B4", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9225
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { flex: 1, overflow: "auto", padding: "24px" }, children: [
9226
+ activeTab === "general" && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
9227
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uC77C\uBC18" }),
9228
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SettingRow, { label: "\uC5B8\uC5B4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9366
9229
  "select",
9367
9230
  {
9368
9231
  value: personalization.language,
9369
9232
  onChange: (e) => onPersonalizationChange({ ...personalization, language: e.target.value }),
9370
9233
  style: selectStyle,
9371
9234
  children: [
9372
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "auto", children: "\uC790\uB3D9 \uD0D0\uC9C0" }),
9373
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "ko", children: "\uD55C\uAD6D\uC5B4" }),
9374
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "en", children: "English" }),
9375
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "ja", children: "\u65E5\u672C\u8A9E" })
9235
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "auto", children: "\uC790\uB3D9 \uD0D0\uC9C0" }),
9236
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "ko", children: "\uD55C\uAD6D\uC5B4" }),
9237
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "en", children: "English" }),
9238
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "ja", children: "\u65E5\u672C\u8A9E" })
9376
9239
  ]
9377
9240
  }
9378
9241
  ) }),
9379
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SettingRow, { label: "\uAE30\uBCF8\uAC12\uC73C\uB85C \uCD08\uAE30\uD654", description: "\uBAA8\uB4E0 \uC124\uC815\uC744 \uCD08\uAE30 \uC0C1\uD0DC\uB85C \uB418\uB3CC\uB9BD\uB2C8\uB2E4", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9242
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SettingRow, { label: "\uAE30\uBCF8\uAC12\uC73C\uB85C \uCD08\uAE30\uD654", description: "\uBAA8\uB4E0 \uC124\uC815\uC744 \uCD08\uAE30 \uC0C1\uD0DC\uB85C \uB418\uB3CC\uB9BD\uB2C8\uB2E4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9380
9243
  "button",
9381
9244
  {
9382
9245
  onClick: () => onPersonalizationChange(DEFAULT_PERSONALIZATION2),
@@ -9384,11 +9247,11 @@ var SettingsModal = ({
9384
9247
  children: "\uCD08\uAE30\uD654"
9385
9248
  }
9386
9249
  ) }),
9387
- onApiKeyChange && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { marginTop: "32px", paddingTop: "24px", borderTop: "1px solid var(--chatllm-border, #e5e7eb)" }, children: [
9388
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h3", { style: { fontSize: "16px", fontWeight: 500, marginBottom: "16px", color: "var(--chatllm-text, #1f2937)" }, children: "API \uC124\uC815" }),
9389
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9390
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("label", { style: { display: "block", fontSize: "14px", marginBottom: "8px", color: "var(--chatllm-text, #374151)" }, children: apiKeyLabel }),
9391
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9250
+ onApiKeyChange && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { marginTop: "32px", paddingTop: "24px", borderTop: "1px solid var(--chatllm-border, #e5e7eb)" }, children: [
9251
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h3", { style: { fontSize: "16px", fontWeight: 500, marginBottom: "16px", color: "var(--chatllm-text, #1f2937)" }, children: "API \uC124\uC815" }),
9252
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
9253
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("label", { style: { display: "block", fontSize: "14px", marginBottom: "8px", color: "var(--chatllm-text, #374151)" }, children: apiKeyLabel }),
9254
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9392
9255
  "input",
9393
9256
  {
9394
9257
  type: "password",
@@ -9398,18 +9261,18 @@ var SettingsModal = ({
9398
9261
  style: inputStyle
9399
9262
  }
9400
9263
  ),
9401
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "4px" }, children: apiKeyDescription })
9264
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "4px" }, children: apiKeyDescription })
9402
9265
  ] })
9403
9266
  ] })
9404
9267
  ] }),
9405
- activeTab === "personalization" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9406
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uAC1C\uC778 \uB9DE\uCDA4 \uC124\uC815" }),
9407
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("section", { style: { marginBottom: "32px" }, children: [
9408
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h3", { style: { fontSize: "14px", fontWeight: 500, color: "var(--chatllm-text-muted, #6b7280)", marginBottom: "16px" }, children: "\uC0AC\uC6A9\uC790 \uD504\uB85C\uD544" }),
9409
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
9410
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9411
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("label", { style: labelStyle, children: "\uB2C9\uB124\uC784" }),
9412
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9268
+ activeTab === "personalization" && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
9269
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uAC1C\uC778 \uB9DE\uCDA4 \uC124\uC815" }),
9270
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("section", { style: { marginBottom: "32px" }, children: [
9271
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h3", { style: { fontSize: "14px", fontWeight: 500, color: "var(--chatllm-text-muted, #6b7280)", marginBottom: "16px" }, children: "\uC0AC\uC6A9\uC790 \uD504\uB85C\uD544" }),
9272
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
9273
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
9274
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("label", { style: labelStyle, children: "\uB2C9\uB124\uC784" }),
9275
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9413
9276
  "input",
9414
9277
  {
9415
9278
  type: "text",
@@ -9420,9 +9283,9 @@ var SettingsModal = ({
9420
9283
  }
9421
9284
  )
9422
9285
  ] }),
9423
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9424
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("label", { style: labelStyle, children: "\uC9C1\uC5C5" }),
9425
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9286
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
9287
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("label", { style: labelStyle, children: "\uC9C1\uC5C5" }),
9288
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9426
9289
  "input",
9427
9290
  {
9428
9291
  type: "text",
@@ -9433,9 +9296,9 @@ var SettingsModal = ({
9433
9296
  }
9434
9297
  )
9435
9298
  ] }),
9436
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9437
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("label", { style: labelStyle, children: "\uCD94\uAC00 \uC815\uBCF4" }),
9438
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9299
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
9300
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("label", { style: labelStyle, children: "\uCD94\uAC00 \uC815\uBCF4" }),
9301
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9439
9302
  "textarea",
9440
9303
  {
9441
9304
  value: personalization.userProfile.additionalInfo || "",
@@ -9448,62 +9311,62 @@ var SettingsModal = ({
9448
9311
  ] })
9449
9312
  ] })
9450
9313
  ] }),
9451
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("section", { children: [
9452
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h3", { style: { fontSize: "14px", fontWeight: 500, color: "var(--chatllm-text-muted, #6b7280)", marginBottom: "16px" }, children: "\uC751\uB2F5 \uC2A4\uD0C0\uC77C" }),
9453
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SettingRow, { label: "\uB530\uB73B\uD568", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9314
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("section", { children: [
9315
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h3", { style: { fontSize: "14px", fontWeight: 500, color: "var(--chatllm-text-muted, #6b7280)", marginBottom: "16px" }, children: "\uC751\uB2F5 \uC2A4\uD0C0\uC77C" }),
9316
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SettingRow, { label: "\uB530\uB73B\uD568", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9454
9317
  "select",
9455
9318
  {
9456
9319
  value: personalization.responseStyle.warmth,
9457
9320
  onChange: (e) => updateResponseStyle("warmth", e.target.value),
9458
9321
  style: selectStyle,
9459
9322
  children: [
9460
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "high", children: "\uB192\uC74C - \uCE5C\uADFC\uD558\uACE0 \uB530\uB73B\uD558\uAC8C" }),
9461
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9462
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "low", children: "\uB0AE\uC74C - \uAC04\uACB0\uD558\uACE0 \uC0AC\uBB34\uC801\uC73C\uB85C" })
9323
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "high", children: "\uB192\uC74C - \uCE5C\uADFC\uD558\uACE0 \uB530\uB73B\uD558\uAC8C" }),
9324
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9325
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "low", children: "\uB0AE\uC74C - \uAC04\uACB0\uD558\uACE0 \uC0AC\uBB34\uC801\uC73C\uB85C" })
9463
9326
  ]
9464
9327
  }
9465
9328
  ) }),
9466
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SettingRow, { label: "\uC5F4\uC815\uC801", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9329
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SettingRow, { label: "\uC5F4\uC815\uC801", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9467
9330
  "select",
9468
9331
  {
9469
9332
  value: personalization.responseStyle.enthusiasm,
9470
9333
  onChange: (e) => updateResponseStyle("enthusiasm", e.target.value),
9471
9334
  style: selectStyle,
9472
9335
  children: [
9473
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "high", children: "\uB192\uC74C - \uC801\uADF9\uC801\uC774\uACE0 \uD65C\uBC1C\uD558\uAC8C" }),
9474
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9475
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "low", children: "\uB0AE\uC74C - \uCC28\uBD84\uD558\uACE0 \uC808\uC81C\uC788\uAC8C" })
9336
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "high", children: "\uB192\uC74C - \uC801\uADF9\uC801\uC774\uACE0 \uD65C\uBC1C\uD558\uAC8C" }),
9337
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9338
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "low", children: "\uB0AE\uC74C - \uCC28\uBD84\uD558\uACE0 \uC808\uC81C\uC788\uAC8C" })
9476
9339
  ]
9477
9340
  }
9478
9341
  ) }),
9479
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SettingRow, { label: "\uC774\uBAA8\uC9C0 \uC0AC\uC6A9", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9342
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SettingRow, { label: "\uC774\uBAA8\uC9C0 \uC0AC\uC6A9", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9480
9343
  "select",
9481
9344
  {
9482
9345
  value: personalization.responseStyle.emojiUsage,
9483
9346
  onChange: (e) => updateResponseStyle("emojiUsage", e.target.value),
9484
9347
  style: selectStyle,
9485
9348
  children: [
9486
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "high", children: "\uB192\uC74C - \uC790\uC8FC \uC0AC\uC6A9" }),
9487
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9488
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "low", children: "\uB0AE\uC74C - \uAC70\uC758 \uC0AC\uC6A9 \uC548 \uD568" })
9349
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "high", children: "\uB192\uC74C - \uC790\uC8FC \uC0AC\uC6A9" }),
9350
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9351
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "low", children: "\uB0AE\uC74C - \uAC70\uC758 \uC0AC\uC6A9 \uC548 \uD568" })
9489
9352
  ]
9490
9353
  }
9491
9354
  ) }),
9492
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SettingRow, { label: "\uC751\uB2F5 \uAE38\uC774", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9355
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SettingRow, { label: "\uC751\uB2F5 \uAE38\uC774", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9493
9356
  "select",
9494
9357
  {
9495
9358
  value: personalization.responseStyle.verbosity,
9496
9359
  onChange: (e) => updateResponseStyle("verbosity", e.target.value),
9497
9360
  style: selectStyle,
9498
9361
  children: [
9499
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "detailed", children: "\uC0C1\uC138 - \uC790\uC138\uD558\uAC8C \uC124\uBA85" }),
9500
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "balanced", children: "\uAE30\uBCF8\uAC12" }),
9501
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "concise", children: "\uAC04\uACB0 - \uD575\uC2EC\uB9CC \uC694\uC57D" })
9362
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "detailed", children: "\uC0C1\uC138 - \uC790\uC138\uD558\uAC8C \uC124\uBA85" }),
9363
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "balanced", children: "\uAE30\uBCF8\uAC12" }),
9364
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("option", { value: "concise", children: "\uAC04\uACB0 - \uD575\uC2EC\uB9CC \uC694\uC57D" })
9502
9365
  ]
9503
9366
  }
9504
9367
  ) })
9505
9368
  ] }),
9506
- onSave && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { marginTop: "24px", display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9369
+ onSave && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { marginTop: "24px", display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9507
9370
  "button",
9508
9371
  {
9509
9372
  onClick: onSave,
@@ -9524,7 +9387,7 @@ var SettingsModal = ({
9524
9387
  }
9525
9388
  ) })
9526
9389
  ] }),
9527
- activeTab === "memory" && showMemoryTab && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9390
+ activeTab === "memory" && showMemoryTab && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9528
9391
  MemoryTabContent,
9529
9392
  {
9530
9393
  items: memoryItems,
@@ -9533,7 +9396,7 @@ var SettingsModal = ({
9533
9396
  onClearAll: onClearMemory
9534
9397
  }
9535
9398
  ),
9536
- activeTab === "project-memory" && showMemoryTab && enableProjects && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9399
+ activeTab === "project-memory" && showMemoryTab && enableProjects && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9537
9400
  MemoryTabContent,
9538
9401
  {
9539
9402
  items: projectMemoryItems,
@@ -9544,9 +9407,9 @@ var SettingsModal = ({
9544
9407
  emptyDescription: "\uB300\uD654\uAC00 \uC9C4\uD589\uB418\uBA74 AI\uAC00 \uD504\uB85C\uC81D\uD2B8 \uB9E5\uB77D\uC744 \uC790\uB3D9\uC73C\uB85C \uD559\uC2B5\uD569\uB2C8\uB2E4"
9545
9408
  }
9546
9409
  ),
9547
- activeTab === "data" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9548
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uB370\uC774\uD130 \uC81C\uC5B4" }),
9549
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SettingRow, { label: "\uBA54\uBAA8\uB9AC \uC0AC\uC6A9", description: "\uB300\uD654 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uAE30\uC5B5\uD569\uB2C8\uB2E4", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9410
+ activeTab === "data" && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
9411
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uB370\uC774\uD130 \uC81C\uC5B4" }),
9412
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SettingRow, { label: "\uBA54\uBAA8\uB9AC \uC0AC\uC6A9", description: "\uB300\uD654 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uAE30\uC5B5\uD569\uB2C8\uB2E4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9550
9413
  "button",
9551
9414
  {
9552
9415
  onClick: () => onPersonalizationChange({ ...personalization, useMemory: !personalization.useMemory }),
@@ -9560,7 +9423,7 @@ var SettingsModal = ({
9560
9423
  position: "relative",
9561
9424
  transition: "background-color 0.2s"
9562
9425
  },
9563
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9426
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9564
9427
  "div",
9565
9428
  {
9566
9429
  style: {
@@ -9578,7 +9441,7 @@ var SettingsModal = ({
9578
9441
  )
9579
9442
  }
9580
9443
  ) }),
9581
- onClearAllData && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SettingRow, { label: "\uB300\uD654 \uAE30\uB85D \uC0AD\uC81C", description: "\uBAA8\uB4E0 \uB300\uD654 \uAE30\uB85D\uC744 \uC0AD\uC81C\uD569\uB2C8\uB2E4", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9444
+ onClearAllData && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SettingRow, { label: "\uB300\uD654 \uAE30\uB85D \uC0AD\uC81C", description: "\uBAA8\uB4E0 \uB300\uD654 \uAE30\uB85D\uC744 \uC0AD\uC81C\uD569\uB2C8\uB2E4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9582
9445
  "button",
9583
9446
  {
9584
9447
  onClick: () => {
@@ -9598,7 +9461,7 @@ var SettingsModal = ({
9598
9461
  }
9599
9462
  );
9600
9463
  };
9601
- var TabButton = ({ active, onClick, icon, label }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9464
+ var TabButton = ({ active, onClick, icon, label }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9602
9465
  "button",
9603
9466
  {
9604
9467
  onClick,
@@ -9619,12 +9482,12 @@ var TabButton = ({ active, onClick, icon, label }) => /* @__PURE__ */ (0, import
9619
9482
  marginBottom: "4px"
9620
9483
  },
9621
9484
  children: [
9622
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IconSvg, { name: icon, size: 20 }),
9485
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IconSvg, { name: icon, size: 20 }),
9623
9486
  label
9624
9487
  ]
9625
9488
  }
9626
9489
  );
9627
- var SettingRow = ({ label, description, children }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9490
+ var SettingRow = ({ label, description, children }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9628
9491
  "div",
9629
9492
  {
9630
9493
  style: {
@@ -9635,9 +9498,9 @@ var SettingRow = ({ label, description, children }) => /* @__PURE__ */ (0, impor
9635
9498
  borderBottom: "1px solid var(--chatllm-border-light, #f3f4f6)"
9636
9499
  },
9637
9500
  children: [
9638
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9639
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { style: { fontSize: "14px", color: "var(--chatllm-text, #374151)" }, children: label }),
9640
- description && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "2px" }, children: description })
9501
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
9502
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: "14px", color: "var(--chatllm-text, #374151)" }, children: label }),
9503
+ description && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "2px" }, children: description })
9641
9504
  ] }),
9642
9505
  children
9643
9506
  ]
@@ -9709,15 +9572,15 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9709
9572
  minute: "2-digit"
9710
9573
  });
9711
9574
  };
9712
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9713
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: "24px" }, children: [
9714
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h2", { style: { fontSize: "20px", fontWeight: 600, color: "var(--chatllm-text, #1f2937)", margin: 0 }, children: title }),
9715
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { style: { fontSize: "13px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: [
9575
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
9576
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: "24px" }, children: [
9577
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h2", { style: { fontSize: "20px", fontWeight: 600, color: "var(--chatllm-text, #1f2937)", margin: 0 }, children: title }),
9578
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { style: { fontSize: "13px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: [
9716
9579
  items.length,
9717
9580
  "\uAC1C \uD56D\uBAA9"
9718
9581
  ] })
9719
9582
  ] }),
9720
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { display: "flex", gap: "6px", marginBottom: "20px", flexWrap: "wrap" }, children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9583
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { display: "flex", gap: "6px", marginBottom: "20px", flexWrap: "wrap" }, children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9721
9584
  "button",
9722
9585
  {
9723
9586
  onClick: () => setActiveFilter(tab),
@@ -9735,7 +9598,7 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9735
9598
  },
9736
9599
  tab
9737
9600
  )) }),
9738
- contextSummary && activeFilter === "all" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9601
+ contextSummary && activeFilter === "all" && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9739
9602
  "div",
9740
9603
  {
9741
9604
  style: {
@@ -9746,19 +9609,19 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9746
9609
  borderLeft: "3px solid var(--chatllm-primary, #3b82f6)"
9747
9610
  },
9748
9611
  children: [
9749
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "6px", marginBottom: "8px" }, children: [
9750
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IconSvg, { name: "file-text-line", size: 14, color: "var(--chatllm-primary, #3b82f6)" }),
9751
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { style: { fontSize: "12px", fontWeight: 500, color: "var(--chatllm-primary, #3b82f6)" }, children: "\uB300\uD654 \uC694\uC57D" })
9612
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "6px", marginBottom: "8px" }, children: [
9613
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IconSvg, { name: "file-text-line", size: 14, color: "var(--chatllm-primary, #3b82f6)" }),
9614
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: "12px", fontWeight: 500, color: "var(--chatllm-primary, #3b82f6)" }, children: "\uB300\uD654 \uC694\uC57D" })
9752
9615
  ] }),
9753
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { fontSize: "13px", lineHeight: "1.6", color: "var(--chatllm-text, #374151)", margin: 0 }, children: contextSummary })
9616
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { style: { fontSize: "13px", lineHeight: "1.6", color: "var(--chatllm-text, #374151)", margin: 0 }, children: contextSummary })
9754
9617
  ]
9755
9618
  }
9756
9619
  ),
9757
- filteredItems.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { padding: "40px 16px", textAlign: "center" }, children: [
9758
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IconSvg, { name: "robot-line", size: 40, color: "var(--chatllm-text-muted, #d1d5db)" }),
9759
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { fontSize: "14px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "12px" }, children: emptyMessage }),
9760
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #d1d5db)", marginTop: "4px" }, children: emptyDescription })
9761
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: filteredItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9620
+ filteredItems.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { padding: "40px 16px", textAlign: "center" }, children: [
9621
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IconSvg, { name: "robot-line", size: 40, color: "var(--chatllm-text-muted, #d1d5db)" }),
9622
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { style: { fontSize: "14px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "12px" }, children: emptyMessage }),
9623
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #d1d5db)", marginTop: "4px" }, children: emptyDescription })
9624
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: filteredItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9762
9625
  "div",
9763
9626
  {
9764
9627
  style: {
@@ -9771,10 +9634,10 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9771
9634
  },
9772
9635
  onClick: () => setExpandedId(expandedId === item.id ? null : item.id),
9773
9636
  children: [
9774
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" }, children: [
9775
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { flex: 1, minWidth: 0 }, children: [
9776
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "4px" }, children: [
9777
- item.category && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9637
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" }, children: [
9638
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { flex: 1, minWidth: 0 }, children: [
9639
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "4px" }, children: [
9640
+ item.category && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9778
9641
  "span",
9779
9642
  {
9780
9643
  style: {
@@ -9788,12 +9651,12 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9788
9651
  children: memoryCategoryLabels[item.category]
9789
9652
  }
9790
9653
  ),
9791
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: formatDate(item.timestamp) })
9654
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: formatDate(item.timestamp) })
9792
9655
  ] }),
9793
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { fontSize: "13px", fontWeight: 500, color: "var(--chatllm-text, #1f2937)" }, children: item.key })
9656
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { fontSize: "13px", fontWeight: 500, color: "var(--chatllm-text, #1f2937)" }, children: item.key })
9794
9657
  ] }),
9795
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
9796
- onDelete && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9658
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
9659
+ onDelete && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9797
9660
  "button",
9798
9661
  {
9799
9662
  onClick: (e) => {
@@ -9809,10 +9672,10 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9809
9672
  opacity: 0.5
9810
9673
  },
9811
9674
  "aria-label": "\uBA54\uBAA8\uB9AC \uC0AD\uC81C",
9812
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IconSvg, { name: "delete-bin-line", size: 14, color: "var(--chatllm-text-muted, #9ca3af)" })
9675
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IconSvg, { name: "delete-bin-line", size: 14, color: "var(--chatllm-text-muted, #9ca3af)" })
9813
9676
  }
9814
9677
  ),
9815
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9678
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9816
9679
  IconSvg,
9817
9680
  {
9818
9681
  name: expandedId === item.id ? "arrow-up-s-line" : "arrow-down-s-line",
@@ -9822,7 +9685,7 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9822
9685
  )
9823
9686
  ] })
9824
9687
  ] }),
9825
- expandedId === item.id && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9688
+ expandedId === item.id && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9826
9689
  "div",
9827
9690
  {
9828
9691
  style: {
@@ -9830,7 +9693,7 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9830
9693
  paddingTop: "12px",
9831
9694
  borderTop: "1px solid var(--chatllm-border-light, #f3f4f6)"
9832
9695
  },
9833
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9696
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9834
9697
  "p",
9835
9698
  {
9836
9699
  style: {
@@ -9849,7 +9712,7 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9849
9712
  },
9850
9713
  item.id
9851
9714
  )) }),
9852
- onClearAll && items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { marginTop: "24px", paddingTop: "16px", borderTop: "1px solid var(--chatllm-border, #e5e7eb)" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9715
+ onClearAll && items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { marginTop: "24px", paddingTop: "16px", borderTop: "1px solid var(--chatllm-border, #e5e7eb)" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9853
9716
  "button",
9854
9717
  {
9855
9718
  onClick: () => {
@@ -9866,7 +9729,7 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9866
9729
 
9867
9730
  // src/react/components/ProjectSettingsModal.tsx
9868
9731
  var import_react19 = require("react");
9869
- var import_jsx_runtime19 = require("react/jsx-runtime");
9732
+ var import_jsx_runtime18 = require("react/jsx-runtime");
9870
9733
  var COLOR_PRESETS = [
9871
9734
  "#2563eb",
9872
9735
  "#7c3aed",
@@ -9947,7 +9810,7 @@ var ProjectSettingsModal = ({
9947
9810
  cursor: "pointer",
9948
9811
  fontFamily: "inherit"
9949
9812
  });
9950
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
9813
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9951
9814
  "div",
9952
9815
  {
9953
9816
  style: {
@@ -9962,7 +9825,7 @@ var ProjectSettingsModal = ({
9962
9825
  onClick: (e) => {
9963
9826
  if (e.target === e.currentTarget) onClose();
9964
9827
  },
9965
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
9828
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9966
9829
  "div",
9967
9830
  {
9968
9831
  style: {
@@ -9976,7 +9839,7 @@ var ProjectSettingsModal = ({
9976
9839
  overflow: "hidden"
9977
9840
  },
9978
9841
  children: [
9979
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
9842
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
9980
9843
  "div",
9981
9844
  {
9982
9845
  style: {
@@ -9986,8 +9849,8 @@ var ProjectSettingsModal = ({
9986
9849
  padding: "20px 24px 0"
9987
9850
  },
9988
9851
  children: [
9989
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h2", { style: { fontSize: "16px", fontWeight: 600, margin: 0, color: "var(--chatllm-text, #1a1a1a)" }, children: "\uD504\uB85C\uC81D\uD2B8 \uC124\uC815" }),
9990
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
9852
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h2", { style: { fontSize: "16px", fontWeight: 600, margin: 0, color: "var(--chatllm-text, #1a1a1a)" }, children: "\uD504\uB85C\uC81D\uD2B8 \uC124\uC815" }),
9853
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9991
9854
  "button",
9992
9855
  {
9993
9856
  onClick: onClose,
@@ -10000,13 +9863,13 @@ var ProjectSettingsModal = ({
10000
9863
  alignItems: "center"
10001
9864
  },
10002
9865
  "aria-label": "\uB2EB\uAE30",
10003
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #999)" })
9866
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #999)" })
10004
9867
  }
10005
9868
  )
10006
9869
  ]
10007
9870
  }
10008
9871
  ),
10009
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
9872
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
10010
9873
  "div",
10011
9874
  {
10012
9875
  style: {
@@ -10016,9 +9879,9 @@ var ProjectSettingsModal = ({
10016
9879
  borderBottom: "1px solid var(--chatllm-border, #e0e0e0)"
10017
9880
  },
10018
9881
  children: [
10019
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("button", { onClick: () => setActiveTab("general"), style: tabStyle("general"), children: "\uC77C\uBC18" }),
10020
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("button", { onClick: () => setActiveTab("instructions"), style: tabStyle("instructions"), children: "\uC9C0\uCE68" }),
10021
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("button", { onClick: () => setActiveTab("files"), style: tabStyle("files"), children: [
9882
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("button", { onClick: () => setActiveTab("general"), style: tabStyle("general"), children: "\uC77C\uBC18" }),
9883
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("button", { onClick: () => setActiveTab("instructions"), style: tabStyle("instructions"), children: "\uC9C0\uCE68" }),
9884
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("button", { onClick: () => setActiveTab("files"), style: tabStyle("files"), children: [
10022
9885
  "\uD30C\uC77C (",
10023
9886
  project.files.length,
10024
9887
  ")"
@@ -10026,11 +9889,11 @@ var ProjectSettingsModal = ({
10026
9889
  ]
10027
9890
  }
10028
9891
  ),
10029
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { padding: "24px", overflowY: "auto", flex: 1 }, children: [
10030
- activeTab === "general" && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: [
10031
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { children: [
10032
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uD504\uB85C\uC81D\uD2B8 \uC774\uB984" }),
10033
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
9892
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { padding: "24px", overflowY: "auto", flex: 1 }, children: [
9893
+ activeTab === "general" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: [
9894
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9895
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uD504\uB85C\uC81D\uD2B8 \uC774\uB984" }),
9896
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10034
9897
  "input",
10035
9898
  {
10036
9899
  type: "text",
@@ -10052,9 +9915,9 @@ var ProjectSettingsModal = ({
10052
9915
  }
10053
9916
  )
10054
9917
  ] }),
10055
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { children: [
10056
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uC124\uBA85" }),
10057
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
9918
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9919
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uC124\uBA85" }),
9920
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10058
9921
  "textarea",
10059
9922
  {
10060
9923
  value: description,
@@ -10075,9 +9938,9 @@ var ProjectSettingsModal = ({
10075
9938
  }
10076
9939
  )
10077
9940
  ] }),
10078
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { children: [
10079
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uC0C9\uC0C1" }),
10080
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: COLOR_PRESETS.map((c) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
9941
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
9942
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uC0C9\uC0C1" }),
9943
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: COLOR_PRESETS.map((c) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10081
9944
  "button",
10082
9945
  {
10083
9946
  onClick: () => setColor(c),
@@ -10095,8 +9958,8 @@ var ProjectSettingsModal = ({
10095
9958
  c
10096
9959
  )) })
10097
9960
  ] }),
10098
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { display: "flex", gap: "8px", justifyContent: "flex-end", marginTop: "8px" }, children: [
10099
- !isDefaultProject && onDeleteProject && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
9961
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", gap: "8px", justifyContent: "flex-end", marginTop: "8px" }, children: [
9962
+ !isDefaultProject && onDeleteProject && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10100
9963
  "button",
10101
9964
  {
10102
9965
  onClick: () => {
@@ -10119,7 +9982,7 @@ var ProjectSettingsModal = ({
10119
9982
  children: "\uD504\uB85C\uC81D\uD2B8 \uC0AD\uC81C"
10120
9983
  }
10121
9984
  ),
10122
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
9985
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10123
9986
  "button",
10124
9987
  {
10125
9988
  onClick: handleSaveGeneral,
@@ -10139,9 +10002,9 @@ var ProjectSettingsModal = ({
10139
10002
  )
10140
10003
  ] })
10141
10004
  ] }),
10142
- activeTab === "instructions" && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
10143
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { style: { fontSize: "13px", color: "var(--chatllm-text-muted, #999)", margin: 0 }, children: "\uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uBAA8\uB4E0 \uB300\uD654\uC5D0\uC11C AI\uAC00 \uB530\uB77C\uC57C \uD560 \uC9C0\uCE68\uC744 \uC785\uB825\uD558\uC138\uC694." }),
10144
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10005
+ activeTab === "instructions" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
10006
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { fontSize: "13px", color: "var(--chatllm-text-muted, #999)", margin: 0 }, children: "\uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uBAA8\uB4E0 \uB300\uD654\uC5D0\uC11C AI\uAC00 \uB530\uB77C\uC57C \uD560 \uC9C0\uCE68\uC744 \uC785\uB825\uD558\uC138\uC694." }),
10007
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10145
10008
  "textarea",
10146
10009
  {
10147
10010
  value: instructions,
@@ -10162,7 +10025,7 @@ var ProjectSettingsModal = ({
10162
10025
  }
10163
10026
  }
10164
10027
  ),
10165
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { style: { display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10028
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10166
10029
  "button",
10167
10030
  {
10168
10031
  onClick: handleSaveInstructions,
@@ -10181,10 +10044,10 @@ var ProjectSettingsModal = ({
10181
10044
  }
10182
10045
  ) })
10183
10046
  ] }),
10184
- activeTab === "files" && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
10185
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [
10186
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { style: { fontSize: "13px", color: "var(--chatllm-text-muted, #999)", margin: 0 }, children: "\uD504\uB85C\uC81D\uD2B8 \uCEE8\uD14D\uC2A4\uD2B8\uB85C \uC0AC\uC6A9\uD560 \uD30C\uC77C\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4." }),
10187
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
10047
+ activeTab === "files" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
10048
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [
10049
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { fontSize: "13px", color: "var(--chatllm-text-muted, #999)", margin: 0 }, children: "\uD504\uB85C\uC81D\uD2B8 \uCEE8\uD14D\uC2A4\uD2B8\uB85C \uC0AC\uC6A9\uD560 \uD30C\uC77C\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4." }),
10050
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
10188
10051
  "button",
10189
10052
  {
10190
10053
  onClick: handleFileUpload,
@@ -10202,13 +10065,13 @@ var ProjectSettingsModal = ({
10202
10065
  color: "var(--chatllm-text, #1a1a1a)"
10203
10066
  },
10204
10067
  children: [
10205
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconSvg, { name: "upload-line", size: 14 }),
10068
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IconSvg, { name: "upload-line", size: 14 }),
10206
10069
  "\uC5C5\uB85C\uB4DC"
10207
10070
  ]
10208
10071
  }
10209
10072
  )
10210
10073
  ] }),
10211
- project.files.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10074
+ project.files.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10212
10075
  "div",
10213
10076
  {
10214
10077
  style: {
@@ -10221,7 +10084,7 @@ var ProjectSettingsModal = ({
10221
10084
  },
10222
10085
  children: "\uC544\uC9C1 \uD30C\uC77C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4"
10223
10086
  }
10224
- ) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "6px" }, children: project.files.map((file) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
10087
+ ) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "6px" }, children: project.files.map((file) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
10225
10088
  "div",
10226
10089
  {
10227
10090
  style: {
@@ -10233,10 +10096,10 @@ var ProjectSettingsModal = ({
10233
10096
  borderRadius: "6px"
10234
10097
  },
10235
10098
  children: [
10236
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "10px", overflow: "hidden" }, children: [
10237
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconSvg, { name: getFileIcon2(file.type), size: 18, color: "var(--chatllm-text-muted, #999)" }),
10238
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { overflow: "hidden" }, children: [
10239
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10099
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "10px", overflow: "hidden" }, children: [
10100
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IconSvg, { name: getFileIcon2(file.type), size: 18, color: "var(--chatllm-text-muted, #999)" }),
10101
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { overflow: "hidden" }, children: [
10102
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10240
10103
  "div",
10241
10104
  {
10242
10105
  style: {
@@ -10250,13 +10113,13 @@ var ProjectSettingsModal = ({
10250
10113
  children: file.name
10251
10114
  }
10252
10115
  ),
10253
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #999)" }, children: [
10116
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #999)" }, children: [
10254
10117
  file.type,
10255
10118
  formatSize(file.size) ? ` \xB7 ${formatSize(file.size)}` : ""
10256
10119
  ] })
10257
10120
  ] })
10258
10121
  ] }),
10259
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10122
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10260
10123
  "button",
10261
10124
  {
10262
10125
  onClick: () => onDeleteFile(project.id, file.id),
@@ -10277,7 +10140,7 @@ var ProjectSettingsModal = ({
10277
10140
  e.currentTarget.style.opacity = "0.5";
10278
10141
  },
10279
10142
  "aria-label": `${file.name} \uC0AD\uC81C`,
10280
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconSvg, { name: "delete-bin-line", size: 16, color: "#dc2626" })
10143
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(IconSvg, { name: "delete-bin-line", size: 16, color: "#dc2626" })
10281
10144
  }
10282
10145
  )
10283
10146
  ]
@@ -10294,14 +10157,14 @@ var ProjectSettingsModal = ({
10294
10157
  };
10295
10158
 
10296
10159
  // src/react/components/DisclaimerModal.tsx
10297
- var import_jsx_runtime20 = require("react/jsx-runtime");
10160
+ var import_jsx_runtime19 = require("react/jsx-runtime");
10298
10161
  var highlightStyle = {
10299
10162
  color: "var(--chatllm-text, #1e293b)",
10300
10163
  fontWeight: 600
10301
10164
  };
10302
10165
  var DisclaimerModal = ({ isOpen, onClose }) => {
10303
10166
  if (!isOpen) return null;
10304
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10167
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10305
10168
  "div",
10306
10169
  {
10307
10170
  className: "chatllm-disclaimer-overlay",
@@ -10315,7 +10178,7 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10315
10178
  zIndex: 1e3
10316
10179
  },
10317
10180
  onClick: onClose,
10318
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10181
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
10319
10182
  "div",
10320
10183
  {
10321
10184
  className: "chatllm-disclaimer-modal",
@@ -10333,7 +10196,7 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10333
10196
  },
10334
10197
  onClick: (e) => e.stopPropagation(),
10335
10198
  children: [
10336
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10199
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
10337
10200
  "div",
10338
10201
  {
10339
10202
  style: {
@@ -10344,9 +10207,9 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10344
10207
  borderBottom: "1px solid var(--chatllm-border, #e5e7eb)"
10345
10208
  },
10346
10209
  children: [
10347
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
10348
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(IconSvg, { name: "error-warning-line", size: 20, color: "var(--chatllm-primary, #4A90E2)" }),
10349
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10210
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
10211
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconSvg, { name: "error-warning-line", size: 20, color: "var(--chatllm-primary, #4A90E2)" }),
10212
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10350
10213
  "h2",
10351
10214
  {
10352
10215
  style: {
@@ -10359,7 +10222,7 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10359
10222
  }
10360
10223
  )
10361
10224
  ] }),
10362
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10225
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10363
10226
  "button",
10364
10227
  {
10365
10228
  onClick: onClose,
@@ -10374,13 +10237,13 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10374
10237
  alignItems: "center",
10375
10238
  justifyContent: "center"
10376
10239
  },
10377
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #64748b)" })
10240
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #64748b)" })
10378
10241
  }
10379
10242
  )
10380
10243
  ]
10381
10244
  }
10382
10245
  ),
10383
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10246
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
10384
10247
  "div",
10385
10248
  {
10386
10249
  className: "chatllm-scrollbar",
@@ -10392,12 +10255,12 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10392
10255
  color: "var(--chatllm-text-secondary, #475569)"
10393
10256
  },
10394
10257
  children: [
10395
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("p", { style: { margin: "0 0 16px" }, children: [
10258
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { style: { margin: "0 0 16px" }, children: [
10396
10259
  "\uC800\uB294 \uC5EC\uB7EC\uBD84\uC758 \uC9C8\uBB38\uC5D0 ",
10397
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { style: highlightStyle, children: "\uCD5C\uC120\uC758 \uB2F5\uBCC0\uC744 \uB4DC\uB9AC\uAE30 \uC704\uD574 \uD56D\uC0C1 \uB178\uB825" }),
10260
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { style: highlightStyle, children: "\uCD5C\uC120\uC758 \uB2F5\uBCC0\uC744 \uB4DC\uB9AC\uAE30 \uC704\uD574 \uD56D\uC0C1 \uB178\uB825" }),
10398
10261
  "\uD558\uACE0 \uC788\uC5B4\uC694. \uD558\uC9C0\uB9CC \uC194\uC9C1\uD558\uAC8C \uB9D0\uC500\uB4DC\uB9AC\uBA74, \uC800\uB3C4 \uB54C\uB54C\uB85C \uC2E4\uC218\uB97C \uD558\uAC70\uB098 \uC815\uD655\uD558\uC9C0 \uC54A\uC740 \uB2F5\uBCC0\uC744 \uB4DC\uB9B4 \uC218 \uC788\uC2B5\uB2C8\uB2E4."
10399
10262
  ] }),
10400
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10263
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
10401
10264
  "div",
10402
10265
  {
10403
10266
  style: {
@@ -10410,33 +10273,33 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10410
10273
  lineHeight: 1.7
10411
10274
  },
10412
10275
  children: [
10413
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { style: { margin: "0 0 8px", fontWeight: 600, color: "var(--chatllm-text, #1e293b)" }, children: "\uC81C\uAC00 \uC774\uB7F0 \uC2E4\uC218\uB97C \uD560 \uC218 \uC788\uC5B4\uC694" }),
10414
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("ul", { style: { margin: 0, paddingLeft: "18px", display: "flex", flexDirection: "column", gap: "4px" }, children: [
10415
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("li", { children: "\uCD5C\uC2E0 \uC815\uBCF4\uB97C \uBC18\uC601\uD558\uC9C0 \uBABB\uD55C \uB2F5\uBCC0\uC744 \uB4DC\uB9AC\uB294 \uACBD\uC6B0" }),
10416
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("li", { children: "\uADF8\uB7F4\uB4EF\uD558\uAC8C \uB4E4\uB9AC\uC9C0\uB9CC \uC2E4\uC81C\uB85C\uB294 \uC815\uD655\uD558\uC9C0 \uC54A\uC740 \uB0B4\uC6A9" }),
10417
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("li", { children: "\uC2E4\uC81C\uB85C \uC874\uC7AC\uD558\uC9C0 \uC54A\uB294 \uCD9C\uCC98\uB098 \uC778\uC6A9\uC744 \uB9CC\uB4E4\uC5B4\uB0B4\uB294 \uACBD\uC6B0" })
10276
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { style: { margin: "0 0 8px", fontWeight: 600, color: "var(--chatllm-text, #1e293b)" }, children: "\uC81C\uAC00 \uC774\uB7F0 \uC2E4\uC218\uB97C \uD560 \uC218 \uC788\uC5B4\uC694" }),
10277
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("ul", { style: { margin: 0, paddingLeft: "18px", display: "flex", flexDirection: "column", gap: "4px" }, children: [
10278
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("li", { children: "\uCD5C\uC2E0 \uC815\uBCF4\uB97C \uBC18\uC601\uD558\uC9C0 \uBABB\uD55C \uB2F5\uBCC0\uC744 \uB4DC\uB9AC\uB294 \uACBD\uC6B0" }),
10279
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("li", { children: "\uADF8\uB7F4\uB4EF\uD558\uAC8C \uB4E4\uB9AC\uC9C0\uB9CC \uC2E4\uC81C\uB85C\uB294 \uC815\uD655\uD558\uC9C0 \uC54A\uC740 \uB0B4\uC6A9" }),
10280
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("li", { children: "\uC2E4\uC81C\uB85C \uC874\uC7AC\uD558\uC9C0 \uC54A\uB294 \uCD9C\uCC98\uB098 \uC778\uC6A9\uC744 \uB9CC\uB4E4\uC5B4\uB0B4\uB294 \uACBD\uC6B0" })
10418
10281
  ] })
10419
10282
  ]
10420
10283
  }
10421
10284
  ),
10422
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("p", { style: { margin: "0 0 16px" }, children: [
10285
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { style: { margin: "0 0 16px" }, children: [
10423
10286
  "\uC774\uB7F0 \uD604\uC0C1\uC744 ",
10424
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { style: highlightStyle, children: "'\uD658\uAC01(Hallucination)'" }),
10287
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { style: highlightStyle, children: "'\uD658\uAC01(Hallucination)'" }),
10425
10288
  "\uC774\uB77C\uACE0 \uBD80\uB974\uB294\uB370\uC694, \uC544\uC9C1\uC740 \uC800\uC640 \uAC19\uC740 AI\uAC00 \uAC00\uC9C4 \uADFC\uBCF8\uC801\uC778 \uD55C\uACC4\uC608\uC694. \uC81C \uB2F5\uBCC0\uC774 \uC544\uBB34\uB9AC \uC790\uC5F0\uC2A4\uB7EC\uC6CC \uBCF4\uC5EC\uB3C4, ",
10426
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { style: highlightStyle, children: "\uD55C \uBC88 \uB354 \uD655\uC778" }),
10289
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { style: highlightStyle, children: "\uD55C \uBC88 \uB354 \uD655\uC778" }),
10427
10290
  "\uD574 \uC8FC\uC2DC\uBA74 \uAC10\uC0AC\uD558\uACA0\uC2B5\uB2C8\uB2E4."
10428
10291
  ] }),
10429
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("p", { style: { margin: "0 0 16px" }, children: [
10430
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { style: highlightStyle, children: "\uC81C \uB2F5\uBCC0\uC740 \uCC38\uACE0 \uC790\uB8CC" }),
10292
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { style: { margin: "0 0 16px" }, children: [
10293
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { style: highlightStyle, children: "\uC81C \uB2F5\uBCC0\uC740 \uCC38\uACE0 \uC790\uB8CC" }),
10431
10294
  "\uB85C \uD65C\uC6A9\uD574 \uC8FC\uC2DC\uACE0, \uC911\uC694\uD55C \uD310\uB2E8\uC744 \uB0B4\uB9AC\uC2E4 \uB54C\uB294 \uAF2D \uCD94\uAC00\uB85C \uD655\uC778\uD574 \uC8FC\uC138\uC694. \uC800\uB3C4 \uB354 \uC815\uD655\uD55C \uB2F5\uBCC0\uC744 \uB4DC\uB9AC\uAE30 \uC704\uD574 \uACC4\uC18D \uBC1C\uC804\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4."
10432
10295
  ] }),
10433
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("p", { style: { margin: "0 0 16px" }, children: [
10296
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { style: { margin: "0 0 16px" }, children: [
10434
10297
  "\uC81C\uAC00 \uC6F9 \uAC80\uC0C9 \uACB0\uACFC\uB97C \uC54C\uB824\uB4DC\uB9B4 \uB54C\uB3C4,",
10435
10298
  " ",
10436
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { style: highlightStyle, children: "\uC6D0\uBCF8 \uCD9C\uCC98\uB97C \uC9C1\uC811 \uD655\uC778" }),
10299
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { style: highlightStyle, children: "\uC6D0\uBCF8 \uCD9C\uCC98\uB97C \uC9C1\uC811 \uD655\uC778" }),
10437
10300
  "\uD574 \uBCF4\uC2DC\uB294 \uAC78 \uCD94\uCC9C\uB4DC\uB824\uC694. \uC694\uC57D \uACFC\uC815\uC5D0\uC11C \uB193\uCE60 \uC218 \uC788\uB294 \uC911\uC694\uD55C \uB9E5\uB77D\uC774 \uC6D0\uBCF8\uC5D0 \uB2F4\uACA8 \uC788\uC744 \uC218 \uC788\uAC70\uB4E0\uC694."
10438
10301
  ] }),
10439
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10302
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10440
10303
  "div",
10441
10304
  {
10442
10305
  style: {
@@ -10447,10 +10310,10 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10447
10310
  lineHeight: 1.7,
10448
10311
  textAlign: "center"
10449
10312
  },
10450
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("p", { style: { margin: 0 }, children: [
10313
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { style: { margin: 0 }, children: [
10451
10314
  "\uC800\uC5D0 \uB300\uD55C \uC758\uACAC\uC774\uB098 \uAC1C\uC120 \uC81C\uC548\uC774 \uC788\uC73C\uC2DC\uB2E4\uBA74",
10452
10315
  " ",
10453
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10316
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10454
10317
  "a",
10455
10318
  {
10456
10319
  href: "mailto:info@gendive.ai",
@@ -10463,7 +10326,7 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10463
10326
  }
10464
10327
  ),
10465
10328
  "\uB85C \uC54C\uB824\uC8FC\uC138\uC694.",
10466
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("br", {}),
10329
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("br", {}),
10467
10330
  "\uC5EC\uB7EC\uBD84\uC758 \uD53C\uB4DC\uBC31 \uD558\uB098\uD558\uB098\uAC00 \uC81C\uAC00 \uC131\uC7A5\uD558\uB294 \uB370 \uD070 \uD798\uC774 \uB429\uB2C8\uB2E4."
10468
10331
  ] })
10469
10332
  }
@@ -10479,7 +10342,7 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10479
10342
  };
10480
10343
 
10481
10344
  // src/react/ChatUI.tsx
10482
- var import_jsx_runtime21 = require("react/jsx-runtime");
10345
+ var import_jsx_runtime20 = require("react/jsx-runtime");
10483
10346
  var DEFAULT_ACTIONS = [];
10484
10347
  var DEFAULT_TEMPLATES = [];
10485
10348
  var DEFAULT_MODELS = [
@@ -10522,6 +10385,16 @@ var injectStyles = () => {
10522
10385
  100% { transform: rotate(360deg); }
10523
10386
  }
10524
10387
 
10388
+ @keyframes chatllm-welcome-exit {
10389
+ from { opacity: 1; transform: translateY(0); }
10390
+ to { opacity: 0; transform: translateY(-16px); }
10391
+ }
10392
+
10393
+ @keyframes chatllm-chat-enter {
10394
+ from { opacity: 0; }
10395
+ to { opacity: 1; }
10396
+ }
10397
+
10525
10398
  .chatllm-root {
10526
10399
  --chatllm-primary: #4A90E2;
10527
10400
  --chatllm-primary-hover: #357ABD;
@@ -10727,7 +10600,8 @@ var ChatUIView = ({
10727
10600
  className,
10728
10601
  apiKey,
10729
10602
  onApiKeyChange,
10730
- deepResearchEnabled
10603
+ deepResearchEnabled,
10604
+ suggestedPrompts
10731
10605
  }) => {
10732
10606
  const {
10733
10607
  sessions,
@@ -10795,6 +10669,19 @@ var ChatUIView = ({
10795
10669
  isSessionsLoading
10796
10670
  } = state;
10797
10671
  const [disclaimerOpen, setDisclaimerOpen] = import_react20.default.useState(false);
10672
+ const [welcomeExiting, setWelcomeExiting] = import_react20.default.useState(false);
10673
+ const prevMessageCountRef = import_react20.default.useRef(messages.length);
10674
+ import_react20.default.useEffect(() => {
10675
+ let timer;
10676
+ if (prevMessageCountRef.current === 0 && messages.length > 0) {
10677
+ setWelcomeExiting(true);
10678
+ timer = setTimeout(() => setWelcomeExiting(false), 400);
10679
+ }
10680
+ prevMessageCountRef.current = messages.length;
10681
+ return () => {
10682
+ if (timer) clearTimeout(timer);
10683
+ };
10684
+ }, [messages.length]);
10798
10685
  const greeting = currentPersonalization.userProfile.nickname ? `\uC548\uB155\uD558\uC138\uC694, ${currentPersonalization.userProfile.nickname}\uB2D8` : "\uC548\uB155\uD558\uC138\uC694";
10799
10686
  const handleTemplateClick = (template) => {
10800
10687
  setInput(template.prompt);
@@ -10837,7 +10724,7 @@ var ChatUIView = ({
10837
10724
  return items;
10838
10725
  }, [projectMemory?.state.entries]);
10839
10726
  const themeClass = theme?.mode === "dark" ? "chatllm-dark" : "";
10840
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
10727
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10841
10728
  "div",
10842
10729
  {
10843
10730
  className: `chatllm-root ${themeClass} ${className}`,
@@ -10850,7 +10737,7 @@ var ChatUIView = ({
10850
10737
  position: "relative"
10851
10738
  },
10852
10739
  children: [
10853
- showSidebar && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10740
+ showSidebar && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10854
10741
  ChatSidebar,
10855
10742
  {
10856
10743
  sessions,
@@ -10882,7 +10769,7 @@ var ChatUIView = ({
10882
10769
  isLoading: isSessionsLoading
10883
10770
  }
10884
10771
  ),
10885
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
10772
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10886
10773
  "main",
10887
10774
  {
10888
10775
  style: {
@@ -10894,7 +10781,7 @@ var ChatUIView = ({
10894
10781
  minWidth: 0
10895
10782
  },
10896
10783
  children: [
10897
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10784
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10898
10785
  ChatHeader,
10899
10786
  {
10900
10787
  title: currentSession?.title || "\uC0C8 \uB300\uD654",
@@ -10908,68 +10795,158 @@ var ChatUIView = ({
10908
10795
  showSettings
10909
10796
  }
10910
10797
  ),
10911
- messages.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10912
- EmptyState,
10913
- {
10914
- greeting,
10915
- templates,
10916
- onTemplateClick: handleTemplateClick,
10917
- actions,
10918
- onActionSelect: handleActionSelect
10919
- }
10920
- ) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10921
- MessageList,
10798
+ (messages.length === 0 || welcomeExiting) && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10799
+ "div",
10922
10800
  {
10923
- messages,
10924
- isLoading,
10925
- onCopy: copyMessage,
10926
- onEdit: startEdit,
10927
- onRegenerate: regenerate,
10928
- onQuote: setQuotedText,
10929
- onAskOtherModel: (userMessageId, assistantMessageId, targetModel) => askOtherModel(assistantMessageId, targetModel),
10930
- onSetActiveAlternative: setActiveAlternative,
10931
- activeAlternatives,
10932
- models: hookModels,
10933
- copiedId: copiedMessageId,
10934
- editingId: editingMessageId,
10935
- onChoiceClick: handleChoiceClick,
10936
- showThinking,
10937
- thinkingDefaultOpen,
10938
- loadingAlternativeFor,
10939
- onPollSubmit: handlePollSubmit
10801
+ style: {
10802
+ ...messages.length > 0 ? { position: "absolute", inset: 0, zIndex: 5, background: "var(--chatllm-bg)" } : { flex: 1 },
10803
+ display: "flex",
10804
+ flexDirection: "column",
10805
+ justifyContent: "center",
10806
+ alignItems: "center",
10807
+ padding: "24px",
10808
+ gap: "24px",
10809
+ animation: welcomeExiting ? "chatllm-welcome-exit 0.3s ease forwards" : "none",
10810
+ pointerEvents: welcomeExiting ? "none" : "auto"
10811
+ },
10812
+ children: [
10813
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10814
+ "h1",
10815
+ {
10816
+ style: {
10817
+ fontSize: "26px",
10818
+ fontWeight: 600,
10819
+ color: "var(--chatllm-text)",
10820
+ margin: 0,
10821
+ textAlign: "center",
10822
+ lineHeight: 1.4
10823
+ },
10824
+ children: greeting ? `${greeting} \u273A` : "\u273A \uBB34\uC5C7\uC744 \uC0DD\uAC01\uD574 \uBCFC\uAE4C\uC694?"
10825
+ }
10826
+ ),
10827
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { style: { width: "100%", maxWidth: "680px" }, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10828
+ ChatInput,
10829
+ {
10830
+ value: input,
10831
+ onChange: setInput,
10832
+ onSubmit: handleSubmit,
10833
+ onStop: stopGeneration,
10834
+ isLoading,
10835
+ placeholder: "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD558\uC138\uC694...",
10836
+ quotedText,
10837
+ onClearQuote: () => setQuotedText(null),
10838
+ selectedAction,
10839
+ onClearAction: () => setSelectedAction(null),
10840
+ onActionSelect: setSelectedAction,
10841
+ actions,
10842
+ onDeepResearch: toggleDeepResearchMode,
10843
+ isDeepResearchMode,
10844
+ deepResearchEnabled,
10845
+ manualSkills,
10846
+ onSkillSelect: executeManualSkill,
10847
+ activeSkillExecution,
10848
+ attachments,
10849
+ onFileAttach: addAttachments,
10850
+ onRemoveAttachment: removeAttachment,
10851
+ onDisclaimerClick: () => setDisclaimerOpen(true),
10852
+ inline: true
10853
+ }
10854
+ ) }),
10855
+ suggestedPrompts && suggestedPrompts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10856
+ "div",
10857
+ {
10858
+ style: {
10859
+ display: "flex",
10860
+ flexWrap: "wrap",
10861
+ gap: "8px",
10862
+ justifyContent: "center",
10863
+ maxWidth: "680px"
10864
+ },
10865
+ children: suggestedPrompts.map((sp) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10866
+ "button",
10867
+ {
10868
+ onClick: () => setInput(sp.prompt),
10869
+ style: {
10870
+ display: "flex",
10871
+ alignItems: "center",
10872
+ gap: "6px",
10873
+ padding: "8px 16px",
10874
+ borderRadius: "20px",
10875
+ border: "1px solid var(--chatllm-border)",
10876
+ background: "var(--chatllm-content-bg)",
10877
+ color: "var(--chatllm-text-secondary)",
10878
+ fontSize: "13px",
10879
+ fontFamily: "inherit",
10880
+ cursor: "pointer",
10881
+ transition: "all 0.2s"
10882
+ },
10883
+ children: [
10884
+ sp.icon && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(IconSvg, { name: sp.icon, size: 16, color: "var(--chatllm-text-muted)" }),
10885
+ sp.label
10886
+ ]
10887
+ },
10888
+ sp.id
10889
+ ))
10890
+ }
10891
+ )
10892
+ ]
10940
10893
  }
10941
10894
  ),
10942
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10943
- ChatInput,
10944
- {
10945
- value: input,
10946
- onChange: setInput,
10947
- onSubmit: handleSubmit,
10948
- onStop: stopGeneration,
10949
- isLoading,
10950
- placeholder: "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD558\uC138\uC694...",
10951
- quotedText,
10952
- onClearQuote: () => setQuotedText(null),
10953
- selectedAction,
10954
- onClearAction: () => setSelectedAction(null),
10955
- onActionSelect: setSelectedAction,
10956
- actions,
10957
- onDeepResearch: toggleDeepResearchMode,
10958
- isDeepResearchMode,
10959
- deepResearchEnabled,
10960
- manualSkills,
10961
- onSkillSelect: executeManualSkill,
10962
- activeSkillExecution,
10963
- attachments,
10964
- onFileAttach: addAttachments,
10965
- onRemoveAttachment: removeAttachment,
10966
- onDisclaimerClick: () => setDisclaimerOpen(true)
10967
- }
10968
- )
10895
+ messages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
10896
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10897
+ MessageList,
10898
+ {
10899
+ messages,
10900
+ isLoading,
10901
+ onCopy: copyMessage,
10902
+ onEdit: startEdit,
10903
+ onRegenerate: regenerate,
10904
+ onQuote: setQuotedText,
10905
+ onAskOtherModel: (userMessageId, assistantMessageId, targetModel) => askOtherModel(assistantMessageId, targetModel),
10906
+ onSetActiveAlternative: setActiveAlternative,
10907
+ activeAlternatives,
10908
+ models: hookModels,
10909
+ copiedId: copiedMessageId,
10910
+ editingId: editingMessageId,
10911
+ onChoiceClick: handleChoiceClick,
10912
+ showThinking,
10913
+ thinkingDefaultOpen,
10914
+ loadingAlternativeFor,
10915
+ onPollSubmit: handlePollSubmit
10916
+ }
10917
+ ),
10918
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10919
+ ChatInput,
10920
+ {
10921
+ value: input,
10922
+ onChange: setInput,
10923
+ onSubmit: handleSubmit,
10924
+ onStop: stopGeneration,
10925
+ isLoading,
10926
+ placeholder: "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD558\uC138\uC694...",
10927
+ quotedText,
10928
+ onClearQuote: () => setQuotedText(null),
10929
+ selectedAction,
10930
+ onClearAction: () => setSelectedAction(null),
10931
+ onActionSelect: setSelectedAction,
10932
+ actions,
10933
+ onDeepResearch: toggleDeepResearchMode,
10934
+ isDeepResearchMode,
10935
+ deepResearchEnabled,
10936
+ manualSkills,
10937
+ onSkillSelect: executeManualSkill,
10938
+ activeSkillExecution,
10939
+ attachments,
10940
+ onFileAttach: addAttachments,
10941
+ onRemoveAttachment: removeAttachment,
10942
+ onDisclaimerClick: () => setDisclaimerOpen(true)
10943
+ }
10944
+ )
10945
+ ] })
10969
10946
  ]
10970
10947
  }
10971
10948
  ),
10972
- showSettings && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10949
+ showSettings && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10973
10950
  SettingsModal,
10974
10951
  {
10975
10952
  isOpen: settingsOpen,
@@ -10996,7 +10973,7 @@ var ChatUIView = ({
10996
10973
  currentProjectTitle: currentProject?.title
10997
10974
  }
10998
10975
  ),
10999
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
10976
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
11000
10977
  ProjectSettingsModal,
11001
10978
  {
11002
10979
  isOpen: projectSettingsOpen,
@@ -11008,7 +10985,7 @@ var ChatUIView = ({
11008
10985
  onDeleteProject: deleteProject
11009
10986
  }
11010
10987
  ),
11011
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DisclaimerModal, { isOpen: disclaimerOpen, onClose: () => setDisclaimerOpen(false) })
10988
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DisclaimerModal, { isOpen: disclaimerOpen, onClose: () => setDisclaimerOpen(false) })
11012
10989
  ]
11013
10990
  }
11014
10991
  );
@@ -11017,6 +10994,7 @@ var ChatUIWithHook = ({
11017
10994
  models = DEFAULT_MODELS,
11018
10995
  actions = DEFAULT_ACTIONS,
11019
10996
  templates = DEFAULT_TEMPLATES,
10997
+ suggestedPrompts,
11020
10998
  personalization,
11021
10999
  onPersonalizationChange,
11022
11000
  onPersonalizationSave,
@@ -11110,7 +11088,7 @@ var ChatUIWithHook = ({
11110
11088
  onDeleteProjectFile
11111
11089
  };
11112
11090
  const state = useChatUI(hookOptions);
11113
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11091
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
11114
11092
  ChatUIView,
11115
11093
  {
11116
11094
  state,
@@ -11130,7 +11108,8 @@ var ChatUIWithHook = ({
11130
11108
  className,
11131
11109
  apiKey,
11132
11110
  onApiKeyChange,
11133
- deepResearchEnabled: !!deepResearch?.onWebSearch
11111
+ deepResearchEnabled: !!deepResearch?.onWebSearch,
11112
+ suggestedPrompts
11134
11113
  }
11135
11114
  );
11136
11115
  };
@@ -11154,9 +11133,10 @@ var ChatUI = (props) => {
11154
11133
  className = "",
11155
11134
  apiKey,
11156
11135
  onApiKeyChange,
11157
- deepResearch
11136
+ deepResearch,
11137
+ suggestedPrompts: chatStateSuggestedPrompts
11158
11138
  } = props;
11159
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11139
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
11160
11140
  ChatUIView,
11161
11141
  {
11162
11142
  state: props.chatState,
@@ -11176,11 +11156,12 @@ var ChatUI = (props) => {
11176
11156
  className,
11177
11157
  apiKey,
11178
11158
  onApiKeyChange,
11179
- deepResearchEnabled: !!deepResearch?.onWebSearch
11159
+ deepResearchEnabled: !!deepResearch?.onWebSearch,
11160
+ suggestedPrompts: chatStateSuggestedPrompts
11180
11161
  }
11181
11162
  );
11182
11163
  }
11183
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ChatUIWithHook, { ...props });
11164
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ChatUIWithHook, { ...props });
11184
11165
  };
11185
11166
 
11186
11167
  // src/react/hooks/useDeepResearch.ts
@@ -11497,6 +11478,144 @@ var useDeepResearch = (options) => {
11497
11478
  };
11498
11479
  };
11499
11480
 
11481
+ // src/react/components/EmptyState.tsx
11482
+ var import_jsx_runtime21 = require("react/jsx-runtime");
11483
+ var EmptyState = ({
11484
+ greeting,
11485
+ templates = [],
11486
+ onTemplateClick,
11487
+ actions = [],
11488
+ onActionSelect
11489
+ }) => {
11490
+ const getActionIcon = (icon) => {
11491
+ const iconMap = {
11492
+ search: "search-line",
11493
+ image: "image-line",
11494
+ code: "code-s-slash-line",
11495
+ document: "file-text-line"
11496
+ };
11497
+ return iconMap[icon] || "sparkling-line";
11498
+ };
11499
+ const hasContent = actions.length > 0 || templates.length > 0;
11500
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
11501
+ "div",
11502
+ {
11503
+ className: "chatllm-empty-state",
11504
+ style: {
11505
+ flex: 1,
11506
+ display: "flex",
11507
+ flexDirection: "column",
11508
+ alignItems: "center",
11509
+ justifyContent: hasContent ? "center" : "flex-end",
11510
+ padding: "48px 24px",
11511
+ paddingBottom: hasContent ? "200px" : "32px",
11512
+ textAlign: "center"
11513
+ },
11514
+ children: [
11515
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11516
+ "div",
11517
+ {
11518
+ className: "chatllm-sheet",
11519
+ style: {
11520
+ width: "64px",
11521
+ height: "64px",
11522
+ borderRadius: "16px",
11523
+ display: "flex",
11524
+ alignItems: "center",
11525
+ justifyContent: "center",
11526
+ marginBottom: "32px",
11527
+ color: "var(--chatllm-primary)"
11528
+ },
11529
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "chat-1-line", size: 40 })
11530
+ }
11531
+ ),
11532
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11533
+ "h1",
11534
+ {
11535
+ style: {
11536
+ fontSize: "30px",
11537
+ fontWeight: 700,
11538
+ color: "var(--chatllm-text)",
11539
+ marginBottom: hasContent ? "40px" : "0",
11540
+ lineHeight: 1.3
11541
+ },
11542
+ children: "How can I help you today?"
11543
+ }
11544
+ ),
11545
+ (actions.length > 0 || templates.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
11546
+ "div",
11547
+ {
11548
+ style: {
11549
+ display: "flex",
11550
+ flexWrap: "wrap",
11551
+ justifyContent: "center",
11552
+ gap: "12px",
11553
+ maxWidth: "800px",
11554
+ marginBottom: "48px"
11555
+ },
11556
+ children: [
11557
+ actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
11558
+ "button",
11559
+ {
11560
+ onClick: () => onActionSelect?.(action),
11561
+ className: "chatllm-btn-secondary",
11562
+ style: {
11563
+ display: "flex",
11564
+ alignItems: "center",
11565
+ gap: "8px",
11566
+ padding: "12px 20px",
11567
+ fontSize: "14px",
11568
+ fontWeight: 500
11569
+ },
11570
+ children: [
11571
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11572
+ IconSvg,
11573
+ {
11574
+ name: getActionIcon(action.icon),
11575
+ size: 18,
11576
+ color: "var(--chatllm-primary)"
11577
+ }
11578
+ ),
11579
+ action.label
11580
+ ]
11581
+ },
11582
+ action.id
11583
+ )),
11584
+ templates.slice(0, 4).map((template) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
11585
+ "button",
11586
+ {
11587
+ onClick: () => onTemplateClick(template),
11588
+ className: "chatllm-btn-secondary",
11589
+ style: {
11590
+ display: "flex",
11591
+ alignItems: "center",
11592
+ gap: "8px",
11593
+ padding: "12px 20px",
11594
+ fontSize: "14px",
11595
+ fontWeight: 500
11596
+ },
11597
+ children: [
11598
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
11599
+ IconSvg,
11600
+ {
11601
+ name: "sparkling-line",
11602
+ size: 18,
11603
+ color: "var(--chatllm-primary)"
11604
+ }
11605
+ ),
11606
+ template.title
11607
+ ]
11608
+ },
11609
+ template.id
11610
+ ))
11611
+ ]
11612
+ }
11613
+ )
11614
+ ]
11615
+ }
11616
+ );
11617
+ };
11618
+
11500
11619
  // src/react/components/MemoryPanel.tsx
11501
11620
  var import_react22 = require("react");
11502
11621
  var import_jsx_runtime22 = require("react/jsx-runtime");