@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.
@@ -4638,7 +4638,8 @@ var ChatInput = ({
4638
4638
  onFileAttach,
4639
4639
  onRemoveAttachment,
4640
4640
  acceptedFileTypes,
4641
- onDisclaimerClick
4641
+ onDisclaimerClick,
4642
+ inline = false
4642
4643
  }) => {
4643
4644
  const [mainMenuOpen, setMainMenuOpen] = React4.useState(false);
4644
4645
  const textareaRef = useRef7(null);
@@ -4727,17 +4728,17 @@ var ChatInput = ({
4727
4728
  {
4728
4729
  className: "chatllm-input-footer",
4729
4730
  style: {
4730
- position: "absolute",
4731
- bottom: 0,
4732
- left: 0,
4733
- right: 0,
4731
+ position: inline ? "relative" : "absolute",
4732
+ bottom: inline ? void 0 : 0,
4733
+ left: inline ? void 0 : 0,
4734
+ right: inline ? void 0 : 0,
4734
4735
  display: "flex",
4735
4736
  flexDirection: "column",
4736
4737
  alignItems: "center",
4737
- paddingBottom: "16px",
4738
- paddingTop: "64px",
4739
- background: "linear-gradient(to top, var(--chatllm-bg) 60%, transparent)",
4740
- pointerEvents: "none"
4738
+ paddingBottom: inline ? "0px" : "16px",
4739
+ paddingTop: inline ? "0px" : "64px",
4740
+ background: inline ? "transparent" : "linear-gradient(to top, var(--chatllm-bg) 60%, transparent)",
4741
+ pointerEvents: inline ? void 0 : "none"
4741
4742
  },
4742
4743
  children: /* @__PURE__ */ jsxs4(
4743
4744
  "div",
@@ -5338,7 +5339,7 @@ var ChatInput = ({
5338
5339
  ]
5339
5340
  }
5340
5341
  ),
5341
- /* @__PURE__ */ jsx5(
5342
+ !inline && /* @__PURE__ */ jsx5(
5342
5343
  "p",
5343
5344
  {
5344
5345
  onClick: onDisclaimerClick,
@@ -8983,147 +8984,9 @@ var MessageList = ({
8983
8984
  );
8984
8985
  };
8985
8986
 
8986
- // src/react/components/EmptyState.tsx
8987
- import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
8988
- var EmptyState = ({
8989
- greeting,
8990
- templates = [],
8991
- onTemplateClick,
8992
- actions = [],
8993
- onActionSelect
8994
- }) => {
8995
- const getActionIcon = (icon) => {
8996
- const iconMap = {
8997
- search: "search-line",
8998
- image: "image-line",
8999
- code: "code-s-slash-line",
9000
- document: "file-text-line"
9001
- };
9002
- return iconMap[icon] || "sparkling-line";
9003
- };
9004
- const hasContent = actions.length > 0 || templates.length > 0;
9005
- return /* @__PURE__ */ jsxs16(
9006
- "div",
9007
- {
9008
- className: "chatllm-empty-state",
9009
- style: {
9010
- flex: 1,
9011
- display: "flex",
9012
- flexDirection: "column",
9013
- alignItems: "center",
9014
- justifyContent: hasContent ? "center" : "flex-end",
9015
- padding: "48px 24px",
9016
- paddingBottom: hasContent ? "200px" : "32px",
9017
- textAlign: "center"
9018
- },
9019
- children: [
9020
- /* @__PURE__ */ jsx17(
9021
- "div",
9022
- {
9023
- className: "chatllm-sheet",
9024
- style: {
9025
- width: "64px",
9026
- height: "64px",
9027
- borderRadius: "16px",
9028
- display: "flex",
9029
- alignItems: "center",
9030
- justifyContent: "center",
9031
- marginBottom: "32px",
9032
- color: "var(--chatllm-primary)"
9033
- },
9034
- children: /* @__PURE__ */ jsx17(IconSvg, { name: "chat-1-line", size: 40 })
9035
- }
9036
- ),
9037
- /* @__PURE__ */ jsx17(
9038
- "h1",
9039
- {
9040
- style: {
9041
- fontSize: "30px",
9042
- fontWeight: 700,
9043
- color: "var(--chatllm-text)",
9044
- marginBottom: hasContent ? "40px" : "0",
9045
- lineHeight: 1.3
9046
- },
9047
- children: "How can I help you today?"
9048
- }
9049
- ),
9050
- (actions.length > 0 || templates.length > 0) && /* @__PURE__ */ jsxs16(
9051
- "div",
9052
- {
9053
- style: {
9054
- display: "flex",
9055
- flexWrap: "wrap",
9056
- justifyContent: "center",
9057
- gap: "12px",
9058
- maxWidth: "800px",
9059
- marginBottom: "48px"
9060
- },
9061
- children: [
9062
- actions.map((action) => /* @__PURE__ */ jsxs16(
9063
- "button",
9064
- {
9065
- onClick: () => onActionSelect?.(action),
9066
- className: "chatllm-btn-secondary",
9067
- style: {
9068
- display: "flex",
9069
- alignItems: "center",
9070
- gap: "8px",
9071
- padding: "12px 20px",
9072
- fontSize: "14px",
9073
- fontWeight: 500
9074
- },
9075
- children: [
9076
- /* @__PURE__ */ jsx17(
9077
- IconSvg,
9078
- {
9079
- name: getActionIcon(action.icon),
9080
- size: 18,
9081
- color: "var(--chatllm-primary)"
9082
- }
9083
- ),
9084
- action.label
9085
- ]
9086
- },
9087
- action.id
9088
- )),
9089
- templates.slice(0, 4).map((template) => /* @__PURE__ */ jsxs16(
9090
- "button",
9091
- {
9092
- onClick: () => onTemplateClick(template),
9093
- className: "chatllm-btn-secondary",
9094
- style: {
9095
- display: "flex",
9096
- alignItems: "center",
9097
- gap: "8px",
9098
- padding: "12px 20px",
9099
- fontSize: "14px",
9100
- fontWeight: 500
9101
- },
9102
- children: [
9103
- /* @__PURE__ */ jsx17(
9104
- IconSvg,
9105
- {
9106
- name: "sparkling-line",
9107
- size: 18,
9108
- color: "var(--chatllm-primary)"
9109
- }
9110
- ),
9111
- template.title
9112
- ]
9113
- },
9114
- template.id
9115
- ))
9116
- ]
9117
- }
9118
- )
9119
- ]
9120
- }
9121
- );
9122
- };
9123
-
9124
8987
  // src/react/components/SettingsModal.tsx
9125
8988
  import { useState as useState16 } from "react";
9126
- import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
8989
+ import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
9127
8990
  var DEFAULT_PERSONALIZATION2 = {
9128
8991
  responseStyle: {
9129
8992
  warmth: "medium",
@@ -9183,7 +9046,7 @@ var SettingsModal = ({
9183
9046
  setLocalApiKey(value);
9184
9047
  onApiKeyChange?.(value);
9185
9048
  };
9186
- return /* @__PURE__ */ jsx18(
9049
+ return /* @__PURE__ */ jsx17(
9187
9050
  "div",
9188
9051
  {
9189
9052
  className: "chatllm-settings-overlay",
@@ -9197,7 +9060,7 @@ var SettingsModal = ({
9197
9060
  zIndex: 1e3
9198
9061
  },
9199
9062
  onClick: onClose,
9200
- children: /* @__PURE__ */ jsxs17(
9063
+ children: /* @__PURE__ */ jsxs16(
9201
9064
  "div",
9202
9065
  {
9203
9066
  className: "chatllm-settings-modal",
@@ -9215,7 +9078,7 @@ var SettingsModal = ({
9215
9078
  },
9216
9079
  onClick: (e) => e.stopPropagation(),
9217
9080
  children: [
9218
- /* @__PURE__ */ jsxs17(
9081
+ /* @__PURE__ */ jsxs16(
9219
9082
  "div",
9220
9083
  {
9221
9084
  style: {
@@ -9226,7 +9089,7 @@ var SettingsModal = ({
9226
9089
  flexDirection: "column"
9227
9090
  },
9228
9091
  children: [
9229
- /* @__PURE__ */ jsx18("div", { style: { padding: "16px", borderBottom: "1px solid var(--chatllm-border, #e5e7eb)" }, children: /* @__PURE__ */ jsx18(
9092
+ /* @__PURE__ */ jsx17("div", { style: { padding: "16px", borderBottom: "1px solid var(--chatllm-border, #e5e7eb)" }, children: /* @__PURE__ */ jsx17(
9230
9093
  "button",
9231
9094
  {
9232
9095
  onClick: onClose,
@@ -9240,11 +9103,11 @@ var SettingsModal = ({
9240
9103
  alignItems: "center",
9241
9104
  justifyContent: "center"
9242
9105
  },
9243
- children: /* @__PURE__ */ jsx18(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #6b7280)" })
9106
+ children: /* @__PURE__ */ jsx17(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #6b7280)" })
9244
9107
  }
9245
9108
  ) }),
9246
- /* @__PURE__ */ jsxs17("nav", { style: { flex: 1, padding: "8px" }, children: [
9247
- /* @__PURE__ */ jsx18(
9109
+ /* @__PURE__ */ jsxs16("nav", { style: { flex: 1, padding: "8px" }, children: [
9110
+ /* @__PURE__ */ jsx17(
9248
9111
  TabButton,
9249
9112
  {
9250
9113
  active: activeTab === "general",
@@ -9253,7 +9116,7 @@ var SettingsModal = ({
9253
9116
  label: "\uC77C\uBC18"
9254
9117
  }
9255
9118
  ),
9256
- /* @__PURE__ */ jsx18(
9119
+ /* @__PURE__ */ jsx17(
9257
9120
  TabButton,
9258
9121
  {
9259
9122
  active: activeTab === "personalization",
@@ -9262,7 +9125,7 @@ var SettingsModal = ({
9262
9125
  label: "\uAC1C\uC778 \uB9DE\uCDA4 \uC124\uC815"
9263
9126
  }
9264
9127
  ),
9265
- showMemoryTab && /* @__PURE__ */ jsx18(
9128
+ showMemoryTab && /* @__PURE__ */ jsx17(
9266
9129
  TabButton,
9267
9130
  {
9268
9131
  active: activeTab === "memory",
@@ -9271,7 +9134,7 @@ var SettingsModal = ({
9271
9134
  label: "AI \uBA54\uBAA8\uB9AC"
9272
9135
  }
9273
9136
  ),
9274
- showMemoryTab && enableProjects && /* @__PURE__ */ jsx18(
9137
+ showMemoryTab && enableProjects && /* @__PURE__ */ jsx17(
9275
9138
  TabButton,
9276
9139
  {
9277
9140
  active: activeTab === "project-memory",
@@ -9280,7 +9143,7 @@ var SettingsModal = ({
9280
9143
  label: "\uD504\uB85C\uC81D\uD2B8 \uBA54\uBAA8\uB9AC"
9281
9144
  }
9282
9145
  ),
9283
- /* @__PURE__ */ jsx18(
9146
+ /* @__PURE__ */ jsx17(
9284
9147
  TabButton,
9285
9148
  {
9286
9149
  active: activeTab === "data",
@@ -9293,24 +9156,24 @@ var SettingsModal = ({
9293
9156
  ]
9294
9157
  }
9295
9158
  ),
9296
- /* @__PURE__ */ jsxs17("div", { style: { flex: 1, overflow: "auto", padding: "24px" }, children: [
9297
- activeTab === "general" && /* @__PURE__ */ jsxs17("div", { children: [
9298
- /* @__PURE__ */ jsx18("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uC77C\uBC18" }),
9299
- /* @__PURE__ */ jsx18(SettingRow, { label: "\uC5B8\uC5B4", children: /* @__PURE__ */ jsxs17(
9159
+ /* @__PURE__ */ jsxs16("div", { style: { flex: 1, overflow: "auto", padding: "24px" }, children: [
9160
+ activeTab === "general" && /* @__PURE__ */ jsxs16("div", { children: [
9161
+ /* @__PURE__ */ jsx17("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uC77C\uBC18" }),
9162
+ /* @__PURE__ */ jsx17(SettingRow, { label: "\uC5B8\uC5B4", children: /* @__PURE__ */ jsxs16(
9300
9163
  "select",
9301
9164
  {
9302
9165
  value: personalization.language,
9303
9166
  onChange: (e) => onPersonalizationChange({ ...personalization, language: e.target.value }),
9304
9167
  style: selectStyle,
9305
9168
  children: [
9306
- /* @__PURE__ */ jsx18("option", { value: "auto", children: "\uC790\uB3D9 \uD0D0\uC9C0" }),
9307
- /* @__PURE__ */ jsx18("option", { value: "ko", children: "\uD55C\uAD6D\uC5B4" }),
9308
- /* @__PURE__ */ jsx18("option", { value: "en", children: "English" }),
9309
- /* @__PURE__ */ jsx18("option", { value: "ja", children: "\u65E5\u672C\u8A9E" })
9169
+ /* @__PURE__ */ jsx17("option", { value: "auto", children: "\uC790\uB3D9 \uD0D0\uC9C0" }),
9170
+ /* @__PURE__ */ jsx17("option", { value: "ko", children: "\uD55C\uAD6D\uC5B4" }),
9171
+ /* @__PURE__ */ jsx17("option", { value: "en", children: "English" }),
9172
+ /* @__PURE__ */ jsx17("option", { value: "ja", children: "\u65E5\u672C\u8A9E" })
9310
9173
  ]
9311
9174
  }
9312
9175
  ) }),
9313
- /* @__PURE__ */ jsx18(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__ */ jsx18(
9176
+ /* @__PURE__ */ jsx17(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__ */ jsx17(
9314
9177
  "button",
9315
9178
  {
9316
9179
  onClick: () => onPersonalizationChange(DEFAULT_PERSONALIZATION2),
@@ -9318,11 +9181,11 @@ var SettingsModal = ({
9318
9181
  children: "\uCD08\uAE30\uD654"
9319
9182
  }
9320
9183
  ) }),
9321
- onApiKeyChange && /* @__PURE__ */ jsxs17("div", { style: { marginTop: "32px", paddingTop: "24px", borderTop: "1px solid var(--chatllm-border, #e5e7eb)" }, children: [
9322
- /* @__PURE__ */ jsx18("h3", { style: { fontSize: "16px", fontWeight: 500, marginBottom: "16px", color: "var(--chatllm-text, #1f2937)" }, children: "API \uC124\uC815" }),
9323
- /* @__PURE__ */ jsxs17("div", { children: [
9324
- /* @__PURE__ */ jsx18("label", { style: { display: "block", fontSize: "14px", marginBottom: "8px", color: "var(--chatllm-text, #374151)" }, children: apiKeyLabel }),
9325
- /* @__PURE__ */ jsx18(
9184
+ onApiKeyChange && /* @__PURE__ */ jsxs16("div", { style: { marginTop: "32px", paddingTop: "24px", borderTop: "1px solid var(--chatllm-border, #e5e7eb)" }, children: [
9185
+ /* @__PURE__ */ jsx17("h3", { style: { fontSize: "16px", fontWeight: 500, marginBottom: "16px", color: "var(--chatllm-text, #1f2937)" }, children: "API \uC124\uC815" }),
9186
+ /* @__PURE__ */ jsxs16("div", { children: [
9187
+ /* @__PURE__ */ jsx17("label", { style: { display: "block", fontSize: "14px", marginBottom: "8px", color: "var(--chatllm-text, #374151)" }, children: apiKeyLabel }),
9188
+ /* @__PURE__ */ jsx17(
9326
9189
  "input",
9327
9190
  {
9328
9191
  type: "password",
@@ -9332,18 +9195,18 @@ var SettingsModal = ({
9332
9195
  style: inputStyle
9333
9196
  }
9334
9197
  ),
9335
- /* @__PURE__ */ jsx18("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "4px" }, children: apiKeyDescription })
9198
+ /* @__PURE__ */ jsx17("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "4px" }, children: apiKeyDescription })
9336
9199
  ] })
9337
9200
  ] })
9338
9201
  ] }),
9339
- activeTab === "personalization" && /* @__PURE__ */ jsxs17("div", { children: [
9340
- /* @__PURE__ */ jsx18("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uAC1C\uC778 \uB9DE\uCDA4 \uC124\uC815" }),
9341
- /* @__PURE__ */ jsxs17("section", { style: { marginBottom: "32px" }, children: [
9342
- /* @__PURE__ */ jsx18("h3", { style: { fontSize: "14px", fontWeight: 500, color: "var(--chatllm-text-muted, #6b7280)", marginBottom: "16px" }, children: "\uC0AC\uC6A9\uC790 \uD504\uB85C\uD544" }),
9343
- /* @__PURE__ */ jsxs17("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
9344
- /* @__PURE__ */ jsxs17("div", { children: [
9345
- /* @__PURE__ */ jsx18("label", { style: labelStyle, children: "\uB2C9\uB124\uC784" }),
9346
- /* @__PURE__ */ jsx18(
9202
+ activeTab === "personalization" && /* @__PURE__ */ jsxs16("div", { children: [
9203
+ /* @__PURE__ */ jsx17("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uAC1C\uC778 \uB9DE\uCDA4 \uC124\uC815" }),
9204
+ /* @__PURE__ */ jsxs16("section", { style: { marginBottom: "32px" }, children: [
9205
+ /* @__PURE__ */ jsx17("h3", { style: { fontSize: "14px", fontWeight: 500, color: "var(--chatllm-text-muted, #6b7280)", marginBottom: "16px" }, children: "\uC0AC\uC6A9\uC790 \uD504\uB85C\uD544" }),
9206
+ /* @__PURE__ */ jsxs16("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
9207
+ /* @__PURE__ */ jsxs16("div", { children: [
9208
+ /* @__PURE__ */ jsx17("label", { style: labelStyle, children: "\uB2C9\uB124\uC784" }),
9209
+ /* @__PURE__ */ jsx17(
9347
9210
  "input",
9348
9211
  {
9349
9212
  type: "text",
@@ -9354,9 +9217,9 @@ var SettingsModal = ({
9354
9217
  }
9355
9218
  )
9356
9219
  ] }),
9357
- /* @__PURE__ */ jsxs17("div", { children: [
9358
- /* @__PURE__ */ jsx18("label", { style: labelStyle, children: "\uC9C1\uC5C5" }),
9359
- /* @__PURE__ */ jsx18(
9220
+ /* @__PURE__ */ jsxs16("div", { children: [
9221
+ /* @__PURE__ */ jsx17("label", { style: labelStyle, children: "\uC9C1\uC5C5" }),
9222
+ /* @__PURE__ */ jsx17(
9360
9223
  "input",
9361
9224
  {
9362
9225
  type: "text",
@@ -9367,9 +9230,9 @@ var SettingsModal = ({
9367
9230
  }
9368
9231
  )
9369
9232
  ] }),
9370
- /* @__PURE__ */ jsxs17("div", { children: [
9371
- /* @__PURE__ */ jsx18("label", { style: labelStyle, children: "\uCD94\uAC00 \uC815\uBCF4" }),
9372
- /* @__PURE__ */ jsx18(
9233
+ /* @__PURE__ */ jsxs16("div", { children: [
9234
+ /* @__PURE__ */ jsx17("label", { style: labelStyle, children: "\uCD94\uAC00 \uC815\uBCF4" }),
9235
+ /* @__PURE__ */ jsx17(
9373
9236
  "textarea",
9374
9237
  {
9375
9238
  value: personalization.userProfile.additionalInfo || "",
@@ -9382,62 +9245,62 @@ var SettingsModal = ({
9382
9245
  ] })
9383
9246
  ] })
9384
9247
  ] }),
9385
- /* @__PURE__ */ jsxs17("section", { children: [
9386
- /* @__PURE__ */ jsx18("h3", { style: { fontSize: "14px", fontWeight: 500, color: "var(--chatllm-text-muted, #6b7280)", marginBottom: "16px" }, children: "\uC751\uB2F5 \uC2A4\uD0C0\uC77C" }),
9387
- /* @__PURE__ */ jsx18(SettingRow, { label: "\uB530\uB73B\uD568", children: /* @__PURE__ */ jsxs17(
9248
+ /* @__PURE__ */ jsxs16("section", { children: [
9249
+ /* @__PURE__ */ jsx17("h3", { style: { fontSize: "14px", fontWeight: 500, color: "var(--chatllm-text-muted, #6b7280)", marginBottom: "16px" }, children: "\uC751\uB2F5 \uC2A4\uD0C0\uC77C" }),
9250
+ /* @__PURE__ */ jsx17(SettingRow, { label: "\uB530\uB73B\uD568", children: /* @__PURE__ */ jsxs16(
9388
9251
  "select",
9389
9252
  {
9390
9253
  value: personalization.responseStyle.warmth,
9391
9254
  onChange: (e) => updateResponseStyle("warmth", e.target.value),
9392
9255
  style: selectStyle,
9393
9256
  children: [
9394
- /* @__PURE__ */ jsx18("option", { value: "high", children: "\uB192\uC74C - \uCE5C\uADFC\uD558\uACE0 \uB530\uB73B\uD558\uAC8C" }),
9395
- /* @__PURE__ */ jsx18("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9396
- /* @__PURE__ */ jsx18("option", { value: "low", children: "\uB0AE\uC74C - \uAC04\uACB0\uD558\uACE0 \uC0AC\uBB34\uC801\uC73C\uB85C" })
9257
+ /* @__PURE__ */ jsx17("option", { value: "high", children: "\uB192\uC74C - \uCE5C\uADFC\uD558\uACE0 \uB530\uB73B\uD558\uAC8C" }),
9258
+ /* @__PURE__ */ jsx17("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9259
+ /* @__PURE__ */ jsx17("option", { value: "low", children: "\uB0AE\uC74C - \uAC04\uACB0\uD558\uACE0 \uC0AC\uBB34\uC801\uC73C\uB85C" })
9397
9260
  ]
9398
9261
  }
9399
9262
  ) }),
9400
- /* @__PURE__ */ jsx18(SettingRow, { label: "\uC5F4\uC815\uC801", children: /* @__PURE__ */ jsxs17(
9263
+ /* @__PURE__ */ jsx17(SettingRow, { label: "\uC5F4\uC815\uC801", children: /* @__PURE__ */ jsxs16(
9401
9264
  "select",
9402
9265
  {
9403
9266
  value: personalization.responseStyle.enthusiasm,
9404
9267
  onChange: (e) => updateResponseStyle("enthusiasm", e.target.value),
9405
9268
  style: selectStyle,
9406
9269
  children: [
9407
- /* @__PURE__ */ jsx18("option", { value: "high", children: "\uB192\uC74C - \uC801\uADF9\uC801\uC774\uACE0 \uD65C\uBC1C\uD558\uAC8C" }),
9408
- /* @__PURE__ */ jsx18("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9409
- /* @__PURE__ */ jsx18("option", { value: "low", children: "\uB0AE\uC74C - \uCC28\uBD84\uD558\uACE0 \uC808\uC81C\uC788\uAC8C" })
9270
+ /* @__PURE__ */ jsx17("option", { value: "high", children: "\uB192\uC74C - \uC801\uADF9\uC801\uC774\uACE0 \uD65C\uBC1C\uD558\uAC8C" }),
9271
+ /* @__PURE__ */ jsx17("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9272
+ /* @__PURE__ */ jsx17("option", { value: "low", children: "\uB0AE\uC74C - \uCC28\uBD84\uD558\uACE0 \uC808\uC81C\uC788\uAC8C" })
9410
9273
  ]
9411
9274
  }
9412
9275
  ) }),
9413
- /* @__PURE__ */ jsx18(SettingRow, { label: "\uC774\uBAA8\uC9C0 \uC0AC\uC6A9", children: /* @__PURE__ */ jsxs17(
9276
+ /* @__PURE__ */ jsx17(SettingRow, { label: "\uC774\uBAA8\uC9C0 \uC0AC\uC6A9", children: /* @__PURE__ */ jsxs16(
9414
9277
  "select",
9415
9278
  {
9416
9279
  value: personalization.responseStyle.emojiUsage,
9417
9280
  onChange: (e) => updateResponseStyle("emojiUsage", e.target.value),
9418
9281
  style: selectStyle,
9419
9282
  children: [
9420
- /* @__PURE__ */ jsx18("option", { value: "high", children: "\uB192\uC74C - \uC790\uC8FC \uC0AC\uC6A9" }),
9421
- /* @__PURE__ */ jsx18("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9422
- /* @__PURE__ */ jsx18("option", { value: "low", children: "\uB0AE\uC74C - \uAC70\uC758 \uC0AC\uC6A9 \uC548 \uD568" })
9283
+ /* @__PURE__ */ jsx17("option", { value: "high", children: "\uB192\uC74C - \uC790\uC8FC \uC0AC\uC6A9" }),
9284
+ /* @__PURE__ */ jsx17("option", { value: "medium", children: "\uAE30\uBCF8\uAC12" }),
9285
+ /* @__PURE__ */ jsx17("option", { value: "low", children: "\uB0AE\uC74C - \uAC70\uC758 \uC0AC\uC6A9 \uC548 \uD568" })
9423
9286
  ]
9424
9287
  }
9425
9288
  ) }),
9426
- /* @__PURE__ */ jsx18(SettingRow, { label: "\uC751\uB2F5 \uAE38\uC774", children: /* @__PURE__ */ jsxs17(
9289
+ /* @__PURE__ */ jsx17(SettingRow, { label: "\uC751\uB2F5 \uAE38\uC774", children: /* @__PURE__ */ jsxs16(
9427
9290
  "select",
9428
9291
  {
9429
9292
  value: personalization.responseStyle.verbosity,
9430
9293
  onChange: (e) => updateResponseStyle("verbosity", e.target.value),
9431
9294
  style: selectStyle,
9432
9295
  children: [
9433
- /* @__PURE__ */ jsx18("option", { value: "detailed", children: "\uC0C1\uC138 - \uC790\uC138\uD558\uAC8C \uC124\uBA85" }),
9434
- /* @__PURE__ */ jsx18("option", { value: "balanced", children: "\uAE30\uBCF8\uAC12" }),
9435
- /* @__PURE__ */ jsx18("option", { value: "concise", children: "\uAC04\uACB0 - \uD575\uC2EC\uB9CC \uC694\uC57D" })
9296
+ /* @__PURE__ */ jsx17("option", { value: "detailed", children: "\uC0C1\uC138 - \uC790\uC138\uD558\uAC8C \uC124\uBA85" }),
9297
+ /* @__PURE__ */ jsx17("option", { value: "balanced", children: "\uAE30\uBCF8\uAC12" }),
9298
+ /* @__PURE__ */ jsx17("option", { value: "concise", children: "\uAC04\uACB0 - \uD575\uC2EC\uB9CC \uC694\uC57D" })
9436
9299
  ]
9437
9300
  }
9438
9301
  ) })
9439
9302
  ] }),
9440
- onSave && /* @__PURE__ */ jsx18("div", { style: { marginTop: "24px", display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ jsx18(
9303
+ onSave && /* @__PURE__ */ jsx17("div", { style: { marginTop: "24px", display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ jsx17(
9441
9304
  "button",
9442
9305
  {
9443
9306
  onClick: onSave,
@@ -9458,7 +9321,7 @@ var SettingsModal = ({
9458
9321
  }
9459
9322
  ) })
9460
9323
  ] }),
9461
- activeTab === "memory" && showMemoryTab && /* @__PURE__ */ jsx18(
9324
+ activeTab === "memory" && showMemoryTab && /* @__PURE__ */ jsx17(
9462
9325
  MemoryTabContent,
9463
9326
  {
9464
9327
  items: memoryItems,
@@ -9467,7 +9330,7 @@ var SettingsModal = ({
9467
9330
  onClearAll: onClearMemory
9468
9331
  }
9469
9332
  ),
9470
- activeTab === "project-memory" && showMemoryTab && enableProjects && /* @__PURE__ */ jsx18(
9333
+ activeTab === "project-memory" && showMemoryTab && enableProjects && /* @__PURE__ */ jsx17(
9471
9334
  MemoryTabContent,
9472
9335
  {
9473
9336
  items: projectMemoryItems,
@@ -9478,9 +9341,9 @@ var SettingsModal = ({
9478
9341
  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"
9479
9342
  }
9480
9343
  ),
9481
- activeTab === "data" && /* @__PURE__ */ jsxs17("div", { children: [
9482
- /* @__PURE__ */ jsx18("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uB370\uC774\uD130 \uC81C\uC5B4" }),
9483
- /* @__PURE__ */ jsx18(SettingRow, { label: "\uBA54\uBAA8\uB9AC \uC0AC\uC6A9", description: "\uB300\uD654 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uAE30\uC5B5\uD569\uB2C8\uB2E4", children: /* @__PURE__ */ jsx18(
9344
+ activeTab === "data" && /* @__PURE__ */ jsxs16("div", { children: [
9345
+ /* @__PURE__ */ jsx17("h2", { style: { fontSize: "20px", fontWeight: 600, marginBottom: "24px", color: "var(--chatllm-text, #1f2937)" }, children: "\uB370\uC774\uD130 \uC81C\uC5B4" }),
9346
+ /* @__PURE__ */ jsx17(SettingRow, { label: "\uBA54\uBAA8\uB9AC \uC0AC\uC6A9", description: "\uB300\uD654 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uAE30\uC5B5\uD569\uB2C8\uB2E4", children: /* @__PURE__ */ jsx17(
9484
9347
  "button",
9485
9348
  {
9486
9349
  onClick: () => onPersonalizationChange({ ...personalization, useMemory: !personalization.useMemory }),
@@ -9494,7 +9357,7 @@ var SettingsModal = ({
9494
9357
  position: "relative",
9495
9358
  transition: "background-color 0.2s"
9496
9359
  },
9497
- children: /* @__PURE__ */ jsx18(
9360
+ children: /* @__PURE__ */ jsx17(
9498
9361
  "div",
9499
9362
  {
9500
9363
  style: {
@@ -9512,7 +9375,7 @@ var SettingsModal = ({
9512
9375
  )
9513
9376
  }
9514
9377
  ) }),
9515
- onClearAllData && /* @__PURE__ */ jsx18(SettingRow, { label: "\uB300\uD654 \uAE30\uB85D \uC0AD\uC81C", description: "\uBAA8\uB4E0 \uB300\uD654 \uAE30\uB85D\uC744 \uC0AD\uC81C\uD569\uB2C8\uB2E4", children: /* @__PURE__ */ jsx18(
9378
+ onClearAllData && /* @__PURE__ */ jsx17(SettingRow, { label: "\uB300\uD654 \uAE30\uB85D \uC0AD\uC81C", description: "\uBAA8\uB4E0 \uB300\uD654 \uAE30\uB85D\uC744 \uC0AD\uC81C\uD569\uB2C8\uB2E4", children: /* @__PURE__ */ jsx17(
9516
9379
  "button",
9517
9380
  {
9518
9381
  onClick: () => {
@@ -9532,7 +9395,7 @@ var SettingsModal = ({
9532
9395
  }
9533
9396
  );
9534
9397
  };
9535
- var TabButton = ({ active, onClick, icon, label }) => /* @__PURE__ */ jsxs17(
9398
+ var TabButton = ({ active, onClick, icon, label }) => /* @__PURE__ */ jsxs16(
9536
9399
  "button",
9537
9400
  {
9538
9401
  onClick,
@@ -9553,12 +9416,12 @@ var TabButton = ({ active, onClick, icon, label }) => /* @__PURE__ */ jsxs17(
9553
9416
  marginBottom: "4px"
9554
9417
  },
9555
9418
  children: [
9556
- /* @__PURE__ */ jsx18(IconSvg, { name: icon, size: 20 }),
9419
+ /* @__PURE__ */ jsx17(IconSvg, { name: icon, size: 20 }),
9557
9420
  label
9558
9421
  ]
9559
9422
  }
9560
9423
  );
9561
- var SettingRow = ({ label, description, children }) => /* @__PURE__ */ jsxs17(
9424
+ var SettingRow = ({ label, description, children }) => /* @__PURE__ */ jsxs16(
9562
9425
  "div",
9563
9426
  {
9564
9427
  style: {
@@ -9569,9 +9432,9 @@ var SettingRow = ({ label, description, children }) => /* @__PURE__ */ jsxs17(
9569
9432
  borderBottom: "1px solid var(--chatllm-border-light, #f3f4f6)"
9570
9433
  },
9571
9434
  children: [
9572
- /* @__PURE__ */ jsxs17("div", { children: [
9573
- /* @__PURE__ */ jsx18("span", { style: { fontSize: "14px", color: "var(--chatllm-text, #374151)" }, children: label }),
9574
- description && /* @__PURE__ */ jsx18("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "2px" }, children: description })
9435
+ /* @__PURE__ */ jsxs16("div", { children: [
9436
+ /* @__PURE__ */ jsx17("span", { style: { fontSize: "14px", color: "var(--chatllm-text, #374151)" }, children: label }),
9437
+ description && /* @__PURE__ */ jsx17("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "2px" }, children: description })
9575
9438
  ] }),
9576
9439
  children
9577
9440
  ]
@@ -9643,15 +9506,15 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9643
9506
  minute: "2-digit"
9644
9507
  });
9645
9508
  };
9646
- return /* @__PURE__ */ jsxs17("div", { children: [
9647
- /* @__PURE__ */ jsxs17("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: "24px" }, children: [
9648
- /* @__PURE__ */ jsx18("h2", { style: { fontSize: "20px", fontWeight: 600, color: "var(--chatllm-text, #1f2937)", margin: 0 }, children: title }),
9649
- /* @__PURE__ */ jsxs17("span", { style: { fontSize: "13px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: [
9509
+ return /* @__PURE__ */ jsxs16("div", { children: [
9510
+ /* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: "24px" }, children: [
9511
+ /* @__PURE__ */ jsx17("h2", { style: { fontSize: "20px", fontWeight: 600, color: "var(--chatllm-text, #1f2937)", margin: 0 }, children: title }),
9512
+ /* @__PURE__ */ jsxs16("span", { style: { fontSize: "13px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: [
9650
9513
  items.length,
9651
9514
  "\uAC1C \uD56D\uBAA9"
9652
9515
  ] })
9653
9516
  ] }),
9654
- /* @__PURE__ */ jsx18("div", { style: { display: "flex", gap: "6px", marginBottom: "20px", flexWrap: "wrap" }, children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ jsx18(
9517
+ /* @__PURE__ */ jsx17("div", { style: { display: "flex", gap: "6px", marginBottom: "20px", flexWrap: "wrap" }, children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ jsx17(
9655
9518
  "button",
9656
9519
  {
9657
9520
  onClick: () => setActiveFilter(tab),
@@ -9669,7 +9532,7 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9669
9532
  },
9670
9533
  tab
9671
9534
  )) }),
9672
- contextSummary && activeFilter === "all" && /* @__PURE__ */ jsxs17(
9535
+ contextSummary && activeFilter === "all" && /* @__PURE__ */ jsxs16(
9673
9536
  "div",
9674
9537
  {
9675
9538
  style: {
@@ -9680,19 +9543,19 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9680
9543
  borderLeft: "3px solid var(--chatllm-primary, #3b82f6)"
9681
9544
  },
9682
9545
  children: [
9683
- /* @__PURE__ */ jsxs17("div", { style: { display: "flex", alignItems: "center", gap: "6px", marginBottom: "8px" }, children: [
9684
- /* @__PURE__ */ jsx18(IconSvg, { name: "file-text-line", size: 14, color: "var(--chatllm-primary, #3b82f6)" }),
9685
- /* @__PURE__ */ jsx18("span", { style: { fontSize: "12px", fontWeight: 500, color: "var(--chatllm-primary, #3b82f6)" }, children: "\uB300\uD654 \uC694\uC57D" })
9546
+ /* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", gap: "6px", marginBottom: "8px" }, children: [
9547
+ /* @__PURE__ */ jsx17(IconSvg, { name: "file-text-line", size: 14, color: "var(--chatllm-primary, #3b82f6)" }),
9548
+ /* @__PURE__ */ jsx17("span", { style: { fontSize: "12px", fontWeight: 500, color: "var(--chatllm-primary, #3b82f6)" }, children: "\uB300\uD654 \uC694\uC57D" })
9686
9549
  ] }),
9687
- /* @__PURE__ */ jsx18("p", { style: { fontSize: "13px", lineHeight: "1.6", color: "var(--chatllm-text, #374151)", margin: 0 }, children: contextSummary })
9550
+ /* @__PURE__ */ jsx17("p", { style: { fontSize: "13px", lineHeight: "1.6", color: "var(--chatllm-text, #374151)", margin: 0 }, children: contextSummary })
9688
9551
  ]
9689
9552
  }
9690
9553
  ),
9691
- filteredItems.length === 0 ? /* @__PURE__ */ jsxs17("div", { style: { padding: "40px 16px", textAlign: "center" }, children: [
9692
- /* @__PURE__ */ jsx18(IconSvg, { name: "robot-line", size: 40, color: "var(--chatllm-text-muted, #d1d5db)" }),
9693
- /* @__PURE__ */ jsx18("p", { style: { fontSize: "14px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "12px" }, children: emptyMessage }),
9694
- /* @__PURE__ */ jsx18("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #d1d5db)", marginTop: "4px" }, children: emptyDescription })
9695
- ] }) : /* @__PURE__ */ jsx18("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: filteredItems.map((item) => /* @__PURE__ */ jsxs17(
9554
+ filteredItems.length === 0 ? /* @__PURE__ */ jsxs16("div", { style: { padding: "40px 16px", textAlign: "center" }, children: [
9555
+ /* @__PURE__ */ jsx17(IconSvg, { name: "robot-line", size: 40, color: "var(--chatllm-text-muted, #d1d5db)" }),
9556
+ /* @__PURE__ */ jsx17("p", { style: { fontSize: "14px", color: "var(--chatllm-text-muted, #9ca3af)", marginTop: "12px" }, children: emptyMessage }),
9557
+ /* @__PURE__ */ jsx17("p", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #d1d5db)", marginTop: "4px" }, children: emptyDescription })
9558
+ ] }) : /* @__PURE__ */ jsx17("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: filteredItems.map((item) => /* @__PURE__ */ jsxs16(
9696
9559
  "div",
9697
9560
  {
9698
9561
  style: {
@@ -9705,10 +9568,10 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9705
9568
  },
9706
9569
  onClick: () => setExpandedId(expandedId === item.id ? null : item.id),
9707
9570
  children: [
9708
- /* @__PURE__ */ jsxs17("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" }, children: [
9709
- /* @__PURE__ */ jsxs17("div", { style: { flex: 1, minWidth: 0 }, children: [
9710
- /* @__PURE__ */ jsxs17("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "4px" }, children: [
9711
- item.category && /* @__PURE__ */ jsx18(
9571
+ /* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" }, children: [
9572
+ /* @__PURE__ */ jsxs16("div", { style: { flex: 1, minWidth: 0 }, children: [
9573
+ /* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "4px" }, children: [
9574
+ item.category && /* @__PURE__ */ jsx17(
9712
9575
  "span",
9713
9576
  {
9714
9577
  style: {
@@ -9722,12 +9585,12 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9722
9585
  children: memoryCategoryLabels[item.category]
9723
9586
  }
9724
9587
  ),
9725
- /* @__PURE__ */ jsx18("span", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: formatDate(item.timestamp) })
9588
+ /* @__PURE__ */ jsx17("span", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: formatDate(item.timestamp) })
9726
9589
  ] }),
9727
- /* @__PURE__ */ jsx18("div", { style: { fontSize: "13px", fontWeight: 500, color: "var(--chatllm-text, #1f2937)" }, children: item.key })
9590
+ /* @__PURE__ */ jsx17("div", { style: { fontSize: "13px", fontWeight: 500, color: "var(--chatllm-text, #1f2937)" }, children: item.key })
9728
9591
  ] }),
9729
- /* @__PURE__ */ jsxs17("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
9730
- onDelete && /* @__PURE__ */ jsx18(
9592
+ /* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
9593
+ onDelete && /* @__PURE__ */ jsx17(
9731
9594
  "button",
9732
9595
  {
9733
9596
  onClick: (e) => {
@@ -9743,10 +9606,10 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9743
9606
  opacity: 0.5
9744
9607
  },
9745
9608
  "aria-label": "\uBA54\uBAA8\uB9AC \uC0AD\uC81C",
9746
- children: /* @__PURE__ */ jsx18(IconSvg, { name: "delete-bin-line", size: 14, color: "var(--chatllm-text-muted, #9ca3af)" })
9609
+ children: /* @__PURE__ */ jsx17(IconSvg, { name: "delete-bin-line", size: 14, color: "var(--chatllm-text-muted, #9ca3af)" })
9747
9610
  }
9748
9611
  ),
9749
- /* @__PURE__ */ jsx18(
9612
+ /* @__PURE__ */ jsx17(
9750
9613
  IconSvg,
9751
9614
  {
9752
9615
  name: expandedId === item.id ? "arrow-up-s-line" : "arrow-down-s-line",
@@ -9756,7 +9619,7 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9756
9619
  )
9757
9620
  ] })
9758
9621
  ] }),
9759
- expandedId === item.id && /* @__PURE__ */ jsx18(
9622
+ expandedId === item.id && /* @__PURE__ */ jsx17(
9760
9623
  "div",
9761
9624
  {
9762
9625
  style: {
@@ -9764,7 +9627,7 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9764
9627
  paddingTop: "12px",
9765
9628
  borderTop: "1px solid var(--chatllm-border-light, #f3f4f6)"
9766
9629
  },
9767
- children: /* @__PURE__ */ jsx18(
9630
+ children: /* @__PURE__ */ jsx17(
9768
9631
  "p",
9769
9632
  {
9770
9633
  style: {
@@ -9783,7 +9646,7 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9783
9646
  },
9784
9647
  item.id
9785
9648
  )) }),
9786
- onClearAll && items.length > 0 && /* @__PURE__ */ jsx18("div", { style: { marginTop: "24px", paddingTop: "16px", borderTop: "1px solid var(--chatllm-border, #e5e7eb)" }, children: /* @__PURE__ */ jsx18(
9649
+ onClearAll && items.length > 0 && /* @__PURE__ */ jsx17("div", { style: { marginTop: "24px", paddingTop: "16px", borderTop: "1px solid var(--chatllm-border, #e5e7eb)" }, children: /* @__PURE__ */ jsx17(
9787
9650
  "button",
9788
9651
  {
9789
9652
  onClick: () => {
@@ -9800,7 +9663,7 @@ var MemoryTabContent = ({ items, contextSummary, onDelete, onClearAll, title = "
9800
9663
 
9801
9664
  // src/react/components/ProjectSettingsModal.tsx
9802
9665
  import { useState as useState17, useEffect as useEffect9 } from "react";
9803
- import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
9666
+ import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
9804
9667
  var COLOR_PRESETS = [
9805
9668
  "#2563eb",
9806
9669
  "#7c3aed",
@@ -9881,7 +9744,7 @@ var ProjectSettingsModal = ({
9881
9744
  cursor: "pointer",
9882
9745
  fontFamily: "inherit"
9883
9746
  });
9884
- return /* @__PURE__ */ jsx19(
9747
+ return /* @__PURE__ */ jsx18(
9885
9748
  "div",
9886
9749
  {
9887
9750
  style: {
@@ -9896,7 +9759,7 @@ var ProjectSettingsModal = ({
9896
9759
  onClick: (e) => {
9897
9760
  if (e.target === e.currentTarget) onClose();
9898
9761
  },
9899
- children: /* @__PURE__ */ jsxs18(
9762
+ children: /* @__PURE__ */ jsxs17(
9900
9763
  "div",
9901
9764
  {
9902
9765
  style: {
@@ -9910,7 +9773,7 @@ var ProjectSettingsModal = ({
9910
9773
  overflow: "hidden"
9911
9774
  },
9912
9775
  children: [
9913
- /* @__PURE__ */ jsxs18(
9776
+ /* @__PURE__ */ jsxs17(
9914
9777
  "div",
9915
9778
  {
9916
9779
  style: {
@@ -9920,8 +9783,8 @@ var ProjectSettingsModal = ({
9920
9783
  padding: "20px 24px 0"
9921
9784
  },
9922
9785
  children: [
9923
- /* @__PURE__ */ jsx19("h2", { style: { fontSize: "16px", fontWeight: 600, margin: 0, color: "var(--chatllm-text, #1a1a1a)" }, children: "\uD504\uB85C\uC81D\uD2B8 \uC124\uC815" }),
9924
- /* @__PURE__ */ jsx19(
9786
+ /* @__PURE__ */ jsx18("h2", { style: { fontSize: "16px", fontWeight: 600, margin: 0, color: "var(--chatllm-text, #1a1a1a)" }, children: "\uD504\uB85C\uC81D\uD2B8 \uC124\uC815" }),
9787
+ /* @__PURE__ */ jsx18(
9925
9788
  "button",
9926
9789
  {
9927
9790
  onClick: onClose,
@@ -9934,13 +9797,13 @@ var ProjectSettingsModal = ({
9934
9797
  alignItems: "center"
9935
9798
  },
9936
9799
  "aria-label": "\uB2EB\uAE30",
9937
- children: /* @__PURE__ */ jsx19(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #999)" })
9800
+ children: /* @__PURE__ */ jsx18(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #999)" })
9938
9801
  }
9939
9802
  )
9940
9803
  ]
9941
9804
  }
9942
9805
  ),
9943
- /* @__PURE__ */ jsxs18(
9806
+ /* @__PURE__ */ jsxs17(
9944
9807
  "div",
9945
9808
  {
9946
9809
  style: {
@@ -9950,9 +9813,9 @@ var ProjectSettingsModal = ({
9950
9813
  borderBottom: "1px solid var(--chatllm-border, #e0e0e0)"
9951
9814
  },
9952
9815
  children: [
9953
- /* @__PURE__ */ jsx19("button", { onClick: () => setActiveTab("general"), style: tabStyle("general"), children: "\uC77C\uBC18" }),
9954
- /* @__PURE__ */ jsx19("button", { onClick: () => setActiveTab("instructions"), style: tabStyle("instructions"), children: "\uC9C0\uCE68" }),
9955
- /* @__PURE__ */ jsxs18("button", { onClick: () => setActiveTab("files"), style: tabStyle("files"), children: [
9816
+ /* @__PURE__ */ jsx18("button", { onClick: () => setActiveTab("general"), style: tabStyle("general"), children: "\uC77C\uBC18" }),
9817
+ /* @__PURE__ */ jsx18("button", { onClick: () => setActiveTab("instructions"), style: tabStyle("instructions"), children: "\uC9C0\uCE68" }),
9818
+ /* @__PURE__ */ jsxs17("button", { onClick: () => setActiveTab("files"), style: tabStyle("files"), children: [
9956
9819
  "\uD30C\uC77C (",
9957
9820
  project.files.length,
9958
9821
  ")"
@@ -9960,11 +9823,11 @@ var ProjectSettingsModal = ({
9960
9823
  ]
9961
9824
  }
9962
9825
  ),
9963
- /* @__PURE__ */ jsxs18("div", { style: { padding: "24px", overflowY: "auto", flex: 1 }, children: [
9964
- activeTab === "general" && /* @__PURE__ */ jsxs18("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: [
9965
- /* @__PURE__ */ jsxs18("div", { children: [
9966
- /* @__PURE__ */ jsx19("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uD504\uB85C\uC81D\uD2B8 \uC774\uB984" }),
9967
- /* @__PURE__ */ jsx19(
9826
+ /* @__PURE__ */ jsxs17("div", { style: { padding: "24px", overflowY: "auto", flex: 1 }, children: [
9827
+ activeTab === "general" && /* @__PURE__ */ jsxs17("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: [
9828
+ /* @__PURE__ */ jsxs17("div", { children: [
9829
+ /* @__PURE__ */ jsx18("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uD504\uB85C\uC81D\uD2B8 \uC774\uB984" }),
9830
+ /* @__PURE__ */ jsx18(
9968
9831
  "input",
9969
9832
  {
9970
9833
  type: "text",
@@ -9986,9 +9849,9 @@ var ProjectSettingsModal = ({
9986
9849
  }
9987
9850
  )
9988
9851
  ] }),
9989
- /* @__PURE__ */ jsxs18("div", { children: [
9990
- /* @__PURE__ */ jsx19("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uC124\uBA85" }),
9991
- /* @__PURE__ */ jsx19(
9852
+ /* @__PURE__ */ jsxs17("div", { children: [
9853
+ /* @__PURE__ */ jsx18("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uC124\uBA85" }),
9854
+ /* @__PURE__ */ jsx18(
9992
9855
  "textarea",
9993
9856
  {
9994
9857
  value: description,
@@ -10009,9 +9872,9 @@ var ProjectSettingsModal = ({
10009
9872
  }
10010
9873
  )
10011
9874
  ] }),
10012
- /* @__PURE__ */ jsxs18("div", { children: [
10013
- /* @__PURE__ */ jsx19("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uC0C9\uC0C1" }),
10014
- /* @__PURE__ */ jsx19("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: COLOR_PRESETS.map((c) => /* @__PURE__ */ jsx19(
9875
+ /* @__PURE__ */ jsxs17("div", { children: [
9876
+ /* @__PURE__ */ jsx18("label", { style: { display: "block", fontSize: "13px", fontWeight: 500, marginBottom: "6px", color: "var(--chatllm-text, #1a1a1a)" }, children: "\uC0C9\uC0C1" }),
9877
+ /* @__PURE__ */ jsx18("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: COLOR_PRESETS.map((c) => /* @__PURE__ */ jsx18(
10015
9878
  "button",
10016
9879
  {
10017
9880
  onClick: () => setColor(c),
@@ -10029,8 +9892,8 @@ var ProjectSettingsModal = ({
10029
9892
  c
10030
9893
  )) })
10031
9894
  ] }),
10032
- /* @__PURE__ */ jsxs18("div", { style: { display: "flex", gap: "8px", justifyContent: "flex-end", marginTop: "8px" }, children: [
10033
- !isDefaultProject && onDeleteProject && /* @__PURE__ */ jsx19(
9895
+ /* @__PURE__ */ jsxs17("div", { style: { display: "flex", gap: "8px", justifyContent: "flex-end", marginTop: "8px" }, children: [
9896
+ !isDefaultProject && onDeleteProject && /* @__PURE__ */ jsx18(
10034
9897
  "button",
10035
9898
  {
10036
9899
  onClick: () => {
@@ -10053,7 +9916,7 @@ var ProjectSettingsModal = ({
10053
9916
  children: "\uD504\uB85C\uC81D\uD2B8 \uC0AD\uC81C"
10054
9917
  }
10055
9918
  ),
10056
- /* @__PURE__ */ jsx19(
9919
+ /* @__PURE__ */ jsx18(
10057
9920
  "button",
10058
9921
  {
10059
9922
  onClick: handleSaveGeneral,
@@ -10073,9 +9936,9 @@ var ProjectSettingsModal = ({
10073
9936
  )
10074
9937
  ] })
10075
9938
  ] }),
10076
- activeTab === "instructions" && /* @__PURE__ */ jsxs18("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
10077
- /* @__PURE__ */ jsx19("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." }),
10078
- /* @__PURE__ */ jsx19(
9939
+ activeTab === "instructions" && /* @__PURE__ */ jsxs17("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
9940
+ /* @__PURE__ */ jsx18("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." }),
9941
+ /* @__PURE__ */ jsx18(
10079
9942
  "textarea",
10080
9943
  {
10081
9944
  value: instructions,
@@ -10096,7 +9959,7 @@ var ProjectSettingsModal = ({
10096
9959
  }
10097
9960
  }
10098
9961
  ),
10099
- /* @__PURE__ */ jsx19("div", { style: { display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ jsx19(
9962
+ /* @__PURE__ */ jsx18("div", { style: { display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ jsx18(
10100
9963
  "button",
10101
9964
  {
10102
9965
  onClick: handleSaveInstructions,
@@ -10115,10 +9978,10 @@ var ProjectSettingsModal = ({
10115
9978
  }
10116
9979
  ) })
10117
9980
  ] }),
10118
- activeTab === "files" && /* @__PURE__ */ jsxs18("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
10119
- /* @__PURE__ */ jsxs18("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [
10120
- /* @__PURE__ */ jsx19("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." }),
10121
- /* @__PURE__ */ jsxs18(
9981
+ activeTab === "files" && /* @__PURE__ */ jsxs17("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
9982
+ /* @__PURE__ */ jsxs17("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [
9983
+ /* @__PURE__ */ jsx18("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." }),
9984
+ /* @__PURE__ */ jsxs17(
10122
9985
  "button",
10123
9986
  {
10124
9987
  onClick: handleFileUpload,
@@ -10136,13 +9999,13 @@ var ProjectSettingsModal = ({
10136
9999
  color: "var(--chatllm-text, #1a1a1a)"
10137
10000
  },
10138
10001
  children: [
10139
- /* @__PURE__ */ jsx19(IconSvg, { name: "upload-line", size: 14 }),
10002
+ /* @__PURE__ */ jsx18(IconSvg, { name: "upload-line", size: 14 }),
10140
10003
  "\uC5C5\uB85C\uB4DC"
10141
10004
  ]
10142
10005
  }
10143
10006
  )
10144
10007
  ] }),
10145
- project.files.length === 0 ? /* @__PURE__ */ jsx19(
10008
+ project.files.length === 0 ? /* @__PURE__ */ jsx18(
10146
10009
  "div",
10147
10010
  {
10148
10011
  style: {
@@ -10155,7 +10018,7 @@ var ProjectSettingsModal = ({
10155
10018
  },
10156
10019
  children: "\uC544\uC9C1 \uD30C\uC77C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4"
10157
10020
  }
10158
- ) : /* @__PURE__ */ jsx19("div", { style: { display: "flex", flexDirection: "column", gap: "6px" }, children: project.files.map((file) => /* @__PURE__ */ jsxs18(
10021
+ ) : /* @__PURE__ */ jsx18("div", { style: { display: "flex", flexDirection: "column", gap: "6px" }, children: project.files.map((file) => /* @__PURE__ */ jsxs17(
10159
10022
  "div",
10160
10023
  {
10161
10024
  style: {
@@ -10167,10 +10030,10 @@ var ProjectSettingsModal = ({
10167
10030
  borderRadius: "6px"
10168
10031
  },
10169
10032
  children: [
10170
- /* @__PURE__ */ jsxs18("div", { style: { display: "flex", alignItems: "center", gap: "10px", overflow: "hidden" }, children: [
10171
- /* @__PURE__ */ jsx19(IconSvg, { name: getFileIcon2(file.type), size: 18, color: "var(--chatllm-text-muted, #999)" }),
10172
- /* @__PURE__ */ jsxs18("div", { style: { overflow: "hidden" }, children: [
10173
- /* @__PURE__ */ jsx19(
10033
+ /* @__PURE__ */ jsxs17("div", { style: { display: "flex", alignItems: "center", gap: "10px", overflow: "hidden" }, children: [
10034
+ /* @__PURE__ */ jsx18(IconSvg, { name: getFileIcon2(file.type), size: 18, color: "var(--chatllm-text-muted, #999)" }),
10035
+ /* @__PURE__ */ jsxs17("div", { style: { overflow: "hidden" }, children: [
10036
+ /* @__PURE__ */ jsx18(
10174
10037
  "div",
10175
10038
  {
10176
10039
  style: {
@@ -10184,13 +10047,13 @@ var ProjectSettingsModal = ({
10184
10047
  children: file.name
10185
10048
  }
10186
10049
  ),
10187
- /* @__PURE__ */ jsxs18("div", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #999)" }, children: [
10050
+ /* @__PURE__ */ jsxs17("div", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #999)" }, children: [
10188
10051
  file.type,
10189
10052
  formatSize(file.size) ? ` \xB7 ${formatSize(file.size)}` : ""
10190
10053
  ] })
10191
10054
  ] })
10192
10055
  ] }),
10193
- /* @__PURE__ */ jsx19(
10056
+ /* @__PURE__ */ jsx18(
10194
10057
  "button",
10195
10058
  {
10196
10059
  onClick: () => onDeleteFile(project.id, file.id),
@@ -10211,7 +10074,7 @@ var ProjectSettingsModal = ({
10211
10074
  e.currentTarget.style.opacity = "0.5";
10212
10075
  },
10213
10076
  "aria-label": `${file.name} \uC0AD\uC81C`,
10214
- children: /* @__PURE__ */ jsx19(IconSvg, { name: "delete-bin-line", size: 16, color: "#dc2626" })
10077
+ children: /* @__PURE__ */ jsx18(IconSvg, { name: "delete-bin-line", size: 16, color: "#dc2626" })
10215
10078
  }
10216
10079
  )
10217
10080
  ]
@@ -10228,14 +10091,14 @@ var ProjectSettingsModal = ({
10228
10091
  };
10229
10092
 
10230
10093
  // src/react/components/DisclaimerModal.tsx
10231
- import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
10094
+ import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
10232
10095
  var highlightStyle = {
10233
10096
  color: "var(--chatllm-text, #1e293b)",
10234
10097
  fontWeight: 600
10235
10098
  };
10236
10099
  var DisclaimerModal = ({ isOpen, onClose }) => {
10237
10100
  if (!isOpen) return null;
10238
- return /* @__PURE__ */ jsx20(
10101
+ return /* @__PURE__ */ jsx19(
10239
10102
  "div",
10240
10103
  {
10241
10104
  className: "chatllm-disclaimer-overlay",
@@ -10249,7 +10112,7 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10249
10112
  zIndex: 1e3
10250
10113
  },
10251
10114
  onClick: onClose,
10252
- children: /* @__PURE__ */ jsxs19(
10115
+ children: /* @__PURE__ */ jsxs18(
10253
10116
  "div",
10254
10117
  {
10255
10118
  className: "chatllm-disclaimer-modal",
@@ -10267,7 +10130,7 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10267
10130
  },
10268
10131
  onClick: (e) => e.stopPropagation(),
10269
10132
  children: [
10270
- /* @__PURE__ */ jsxs19(
10133
+ /* @__PURE__ */ jsxs18(
10271
10134
  "div",
10272
10135
  {
10273
10136
  style: {
@@ -10278,9 +10141,9 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10278
10141
  borderBottom: "1px solid var(--chatllm-border, #e5e7eb)"
10279
10142
  },
10280
10143
  children: [
10281
- /* @__PURE__ */ jsxs19("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
10282
- /* @__PURE__ */ jsx20(IconSvg, { name: "error-warning-line", size: 20, color: "var(--chatllm-primary, #4A90E2)" }),
10283
- /* @__PURE__ */ jsx20(
10144
+ /* @__PURE__ */ jsxs18("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
10145
+ /* @__PURE__ */ jsx19(IconSvg, { name: "error-warning-line", size: 20, color: "var(--chatllm-primary, #4A90E2)" }),
10146
+ /* @__PURE__ */ jsx19(
10284
10147
  "h2",
10285
10148
  {
10286
10149
  style: {
@@ -10293,7 +10156,7 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10293
10156
  }
10294
10157
  )
10295
10158
  ] }),
10296
- /* @__PURE__ */ jsx20(
10159
+ /* @__PURE__ */ jsx19(
10297
10160
  "button",
10298
10161
  {
10299
10162
  onClick: onClose,
@@ -10308,13 +10171,13 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10308
10171
  alignItems: "center",
10309
10172
  justifyContent: "center"
10310
10173
  },
10311
- children: /* @__PURE__ */ jsx20(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #64748b)" })
10174
+ children: /* @__PURE__ */ jsx19(IconSvg, { name: "close-line", size: 20, color: "var(--chatllm-text-muted, #64748b)" })
10312
10175
  }
10313
10176
  )
10314
10177
  ]
10315
10178
  }
10316
10179
  ),
10317
- /* @__PURE__ */ jsxs19(
10180
+ /* @__PURE__ */ jsxs18(
10318
10181
  "div",
10319
10182
  {
10320
10183
  className: "chatllm-scrollbar",
@@ -10326,12 +10189,12 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10326
10189
  color: "var(--chatllm-text-secondary, #475569)"
10327
10190
  },
10328
10191
  children: [
10329
- /* @__PURE__ */ jsxs19("p", { style: { margin: "0 0 16px" }, children: [
10192
+ /* @__PURE__ */ jsxs18("p", { style: { margin: "0 0 16px" }, children: [
10330
10193
  "\uC800\uB294 \uC5EC\uB7EC\uBD84\uC758 \uC9C8\uBB38\uC5D0 ",
10331
- /* @__PURE__ */ jsx20("span", { style: highlightStyle, children: "\uCD5C\uC120\uC758 \uB2F5\uBCC0\uC744 \uB4DC\uB9AC\uAE30 \uC704\uD574 \uD56D\uC0C1 \uB178\uB825" }),
10194
+ /* @__PURE__ */ jsx19("span", { style: highlightStyle, children: "\uCD5C\uC120\uC758 \uB2F5\uBCC0\uC744 \uB4DC\uB9AC\uAE30 \uC704\uD574 \uD56D\uC0C1 \uB178\uB825" }),
10332
10195
  "\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."
10333
10196
  ] }),
10334
- /* @__PURE__ */ jsxs19(
10197
+ /* @__PURE__ */ jsxs18(
10335
10198
  "div",
10336
10199
  {
10337
10200
  style: {
@@ -10344,33 +10207,33 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10344
10207
  lineHeight: 1.7
10345
10208
  },
10346
10209
  children: [
10347
- /* @__PURE__ */ jsx20("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" }),
10348
- /* @__PURE__ */ jsxs19("ul", { style: { margin: 0, paddingLeft: "18px", display: "flex", flexDirection: "column", gap: "4px" }, children: [
10349
- /* @__PURE__ */ jsx20("li", { children: "\uCD5C\uC2E0 \uC815\uBCF4\uB97C \uBC18\uC601\uD558\uC9C0 \uBABB\uD55C \uB2F5\uBCC0\uC744 \uB4DC\uB9AC\uB294 \uACBD\uC6B0" }),
10350
- /* @__PURE__ */ jsx20("li", { children: "\uADF8\uB7F4\uB4EF\uD558\uAC8C \uB4E4\uB9AC\uC9C0\uB9CC \uC2E4\uC81C\uB85C\uB294 \uC815\uD655\uD558\uC9C0 \uC54A\uC740 \uB0B4\uC6A9" }),
10351
- /* @__PURE__ */ jsx20("li", { children: "\uC2E4\uC81C\uB85C \uC874\uC7AC\uD558\uC9C0 \uC54A\uB294 \uCD9C\uCC98\uB098 \uC778\uC6A9\uC744 \uB9CC\uB4E4\uC5B4\uB0B4\uB294 \uACBD\uC6B0" })
10210
+ /* @__PURE__ */ jsx19("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" }),
10211
+ /* @__PURE__ */ jsxs18("ul", { style: { margin: 0, paddingLeft: "18px", display: "flex", flexDirection: "column", gap: "4px" }, children: [
10212
+ /* @__PURE__ */ jsx19("li", { children: "\uCD5C\uC2E0 \uC815\uBCF4\uB97C \uBC18\uC601\uD558\uC9C0 \uBABB\uD55C \uB2F5\uBCC0\uC744 \uB4DC\uB9AC\uB294 \uACBD\uC6B0" }),
10213
+ /* @__PURE__ */ jsx19("li", { children: "\uADF8\uB7F4\uB4EF\uD558\uAC8C \uB4E4\uB9AC\uC9C0\uB9CC \uC2E4\uC81C\uB85C\uB294 \uC815\uD655\uD558\uC9C0 \uC54A\uC740 \uB0B4\uC6A9" }),
10214
+ /* @__PURE__ */ jsx19("li", { children: "\uC2E4\uC81C\uB85C \uC874\uC7AC\uD558\uC9C0 \uC54A\uB294 \uCD9C\uCC98\uB098 \uC778\uC6A9\uC744 \uB9CC\uB4E4\uC5B4\uB0B4\uB294 \uACBD\uC6B0" })
10352
10215
  ] })
10353
10216
  ]
10354
10217
  }
10355
10218
  ),
10356
- /* @__PURE__ */ jsxs19("p", { style: { margin: "0 0 16px" }, children: [
10219
+ /* @__PURE__ */ jsxs18("p", { style: { margin: "0 0 16px" }, children: [
10357
10220
  "\uC774\uB7F0 \uD604\uC0C1\uC744 ",
10358
- /* @__PURE__ */ jsx20("span", { style: highlightStyle, children: "'\uD658\uAC01(Hallucination)'" }),
10221
+ /* @__PURE__ */ jsx19("span", { style: highlightStyle, children: "'\uD658\uAC01(Hallucination)'" }),
10359
10222
  "\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, ",
10360
- /* @__PURE__ */ jsx20("span", { style: highlightStyle, children: "\uD55C \uBC88 \uB354 \uD655\uC778" }),
10223
+ /* @__PURE__ */ jsx19("span", { style: highlightStyle, children: "\uD55C \uBC88 \uB354 \uD655\uC778" }),
10361
10224
  "\uD574 \uC8FC\uC2DC\uBA74 \uAC10\uC0AC\uD558\uACA0\uC2B5\uB2C8\uB2E4."
10362
10225
  ] }),
10363
- /* @__PURE__ */ jsxs19("p", { style: { margin: "0 0 16px" }, children: [
10364
- /* @__PURE__ */ jsx20("span", { style: highlightStyle, children: "\uC81C \uB2F5\uBCC0\uC740 \uCC38\uACE0 \uC790\uB8CC" }),
10226
+ /* @__PURE__ */ jsxs18("p", { style: { margin: "0 0 16px" }, children: [
10227
+ /* @__PURE__ */ jsx19("span", { style: highlightStyle, children: "\uC81C \uB2F5\uBCC0\uC740 \uCC38\uACE0 \uC790\uB8CC" }),
10365
10228
  "\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."
10366
10229
  ] }),
10367
- /* @__PURE__ */ jsxs19("p", { style: { margin: "0 0 16px" }, children: [
10230
+ /* @__PURE__ */ jsxs18("p", { style: { margin: "0 0 16px" }, children: [
10368
10231
  "\uC81C\uAC00 \uC6F9 \uAC80\uC0C9 \uACB0\uACFC\uB97C \uC54C\uB824\uB4DC\uB9B4 \uB54C\uB3C4,",
10369
10232
  " ",
10370
- /* @__PURE__ */ jsx20("span", { style: highlightStyle, children: "\uC6D0\uBCF8 \uCD9C\uCC98\uB97C \uC9C1\uC811 \uD655\uC778" }),
10233
+ /* @__PURE__ */ jsx19("span", { style: highlightStyle, children: "\uC6D0\uBCF8 \uCD9C\uCC98\uB97C \uC9C1\uC811 \uD655\uC778" }),
10371
10234
  "\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."
10372
10235
  ] }),
10373
- /* @__PURE__ */ jsx20(
10236
+ /* @__PURE__ */ jsx19(
10374
10237
  "div",
10375
10238
  {
10376
10239
  style: {
@@ -10381,10 +10244,10 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10381
10244
  lineHeight: 1.7,
10382
10245
  textAlign: "center"
10383
10246
  },
10384
- children: /* @__PURE__ */ jsxs19("p", { style: { margin: 0 }, children: [
10247
+ children: /* @__PURE__ */ jsxs18("p", { style: { margin: 0 }, children: [
10385
10248
  "\uC800\uC5D0 \uB300\uD55C \uC758\uACAC\uC774\uB098 \uAC1C\uC120 \uC81C\uC548\uC774 \uC788\uC73C\uC2DC\uB2E4\uBA74",
10386
10249
  " ",
10387
- /* @__PURE__ */ jsx20(
10250
+ /* @__PURE__ */ jsx19(
10388
10251
  "a",
10389
10252
  {
10390
10253
  href: "mailto:info@gendive.ai",
@@ -10397,7 +10260,7 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10397
10260
  }
10398
10261
  ),
10399
10262
  "\uB85C \uC54C\uB824\uC8FC\uC138\uC694.",
10400
- /* @__PURE__ */ jsx20("br", {}),
10263
+ /* @__PURE__ */ jsx19("br", {}),
10401
10264
  "\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."
10402
10265
  ] })
10403
10266
  }
@@ -10413,7 +10276,7 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
10413
10276
  };
10414
10277
 
10415
10278
  // src/react/ChatUI.tsx
10416
- import { jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
10279
+ import { Fragment as Fragment8, jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
10417
10280
  var DEFAULT_ACTIONS = [];
10418
10281
  var DEFAULT_TEMPLATES = [];
10419
10282
  var DEFAULT_MODELS = [
@@ -10456,6 +10319,16 @@ var injectStyles = () => {
10456
10319
  100% { transform: rotate(360deg); }
10457
10320
  }
10458
10321
 
10322
+ @keyframes chatllm-welcome-exit {
10323
+ from { opacity: 1; transform: translateY(0); }
10324
+ to { opacity: 0; transform: translateY(-16px); }
10325
+ }
10326
+
10327
+ @keyframes chatllm-chat-enter {
10328
+ from { opacity: 0; }
10329
+ to { opacity: 1; }
10330
+ }
10331
+
10459
10332
  .chatllm-root {
10460
10333
  --chatllm-primary: #4A90E2;
10461
10334
  --chatllm-primary-hover: #357ABD;
@@ -10661,7 +10534,8 @@ var ChatUIView = ({
10661
10534
  className,
10662
10535
  apiKey,
10663
10536
  onApiKeyChange,
10664
- deepResearchEnabled
10537
+ deepResearchEnabled,
10538
+ suggestedPrompts
10665
10539
  }) => {
10666
10540
  const {
10667
10541
  sessions,
@@ -10729,6 +10603,19 @@ var ChatUIView = ({
10729
10603
  isSessionsLoading
10730
10604
  } = state;
10731
10605
  const [disclaimerOpen, setDisclaimerOpen] = React15.useState(false);
10606
+ const [welcomeExiting, setWelcomeExiting] = React15.useState(false);
10607
+ const prevMessageCountRef = React15.useRef(messages.length);
10608
+ React15.useEffect(() => {
10609
+ let timer;
10610
+ if (prevMessageCountRef.current === 0 && messages.length > 0) {
10611
+ setWelcomeExiting(true);
10612
+ timer = setTimeout(() => setWelcomeExiting(false), 400);
10613
+ }
10614
+ prevMessageCountRef.current = messages.length;
10615
+ return () => {
10616
+ if (timer) clearTimeout(timer);
10617
+ };
10618
+ }, [messages.length]);
10732
10619
  const greeting = currentPersonalization.userProfile.nickname ? `\uC548\uB155\uD558\uC138\uC694, ${currentPersonalization.userProfile.nickname}\uB2D8` : "\uC548\uB155\uD558\uC138\uC694";
10733
10620
  const handleTemplateClick = (template) => {
10734
10621
  setInput(template.prompt);
@@ -10771,7 +10658,7 @@ var ChatUIView = ({
10771
10658
  return items;
10772
10659
  }, [projectMemory?.state.entries]);
10773
10660
  const themeClass = theme?.mode === "dark" ? "chatllm-dark" : "";
10774
- return /* @__PURE__ */ jsxs20(
10661
+ return /* @__PURE__ */ jsxs19(
10775
10662
  "div",
10776
10663
  {
10777
10664
  className: `chatllm-root ${themeClass} ${className}`,
@@ -10784,7 +10671,7 @@ var ChatUIView = ({
10784
10671
  position: "relative"
10785
10672
  },
10786
10673
  children: [
10787
- showSidebar && /* @__PURE__ */ jsx21(
10674
+ showSidebar && /* @__PURE__ */ jsx20(
10788
10675
  ChatSidebar,
10789
10676
  {
10790
10677
  sessions,
@@ -10816,7 +10703,7 @@ var ChatUIView = ({
10816
10703
  isLoading: isSessionsLoading
10817
10704
  }
10818
10705
  ),
10819
- /* @__PURE__ */ jsxs20(
10706
+ /* @__PURE__ */ jsxs19(
10820
10707
  "main",
10821
10708
  {
10822
10709
  style: {
@@ -10828,7 +10715,7 @@ var ChatUIView = ({
10828
10715
  minWidth: 0
10829
10716
  },
10830
10717
  children: [
10831
- /* @__PURE__ */ jsx21(
10718
+ /* @__PURE__ */ jsx20(
10832
10719
  ChatHeader,
10833
10720
  {
10834
10721
  title: currentSession?.title || "\uC0C8 \uB300\uD654",
@@ -10842,68 +10729,158 @@ var ChatUIView = ({
10842
10729
  showSettings
10843
10730
  }
10844
10731
  ),
10845
- messages.length === 0 ? /* @__PURE__ */ jsx21(
10846
- EmptyState,
10847
- {
10848
- greeting,
10849
- templates,
10850
- onTemplateClick: handleTemplateClick,
10851
- actions,
10852
- onActionSelect: handleActionSelect
10853
- }
10854
- ) : /* @__PURE__ */ jsx21(
10855
- MessageList,
10732
+ (messages.length === 0 || welcomeExiting) && /* @__PURE__ */ jsxs19(
10733
+ "div",
10856
10734
  {
10857
- messages,
10858
- isLoading,
10859
- onCopy: copyMessage,
10860
- onEdit: startEdit,
10861
- onRegenerate: regenerate,
10862
- onQuote: setQuotedText,
10863
- onAskOtherModel: (userMessageId, assistantMessageId, targetModel) => askOtherModel(assistantMessageId, targetModel),
10864
- onSetActiveAlternative: setActiveAlternative,
10865
- activeAlternatives,
10866
- models: hookModels,
10867
- copiedId: copiedMessageId,
10868
- editingId: editingMessageId,
10869
- onChoiceClick: handleChoiceClick,
10870
- showThinking,
10871
- thinkingDefaultOpen,
10872
- loadingAlternativeFor,
10873
- onPollSubmit: handlePollSubmit
10735
+ style: {
10736
+ ...messages.length > 0 ? { position: "absolute", inset: 0, zIndex: 5, background: "var(--chatllm-bg)" } : { flex: 1 },
10737
+ display: "flex",
10738
+ flexDirection: "column",
10739
+ justifyContent: "center",
10740
+ alignItems: "center",
10741
+ padding: "24px",
10742
+ gap: "24px",
10743
+ animation: welcomeExiting ? "chatllm-welcome-exit 0.3s ease forwards" : "none",
10744
+ pointerEvents: welcomeExiting ? "none" : "auto"
10745
+ },
10746
+ children: [
10747
+ /* @__PURE__ */ jsx20(
10748
+ "h1",
10749
+ {
10750
+ style: {
10751
+ fontSize: "26px",
10752
+ fontWeight: 600,
10753
+ color: "var(--chatllm-text)",
10754
+ margin: 0,
10755
+ textAlign: "center",
10756
+ lineHeight: 1.4
10757
+ },
10758
+ children: greeting ? `${greeting} \u273A` : "\u273A \uBB34\uC5C7\uC744 \uC0DD\uAC01\uD574 \uBCFC\uAE4C\uC694?"
10759
+ }
10760
+ ),
10761
+ /* @__PURE__ */ jsx20("div", { style: { width: "100%", maxWidth: "680px" }, children: /* @__PURE__ */ jsx20(
10762
+ ChatInput,
10763
+ {
10764
+ value: input,
10765
+ onChange: setInput,
10766
+ onSubmit: handleSubmit,
10767
+ onStop: stopGeneration,
10768
+ isLoading,
10769
+ placeholder: "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD558\uC138\uC694...",
10770
+ quotedText,
10771
+ onClearQuote: () => setQuotedText(null),
10772
+ selectedAction,
10773
+ onClearAction: () => setSelectedAction(null),
10774
+ onActionSelect: setSelectedAction,
10775
+ actions,
10776
+ onDeepResearch: toggleDeepResearchMode,
10777
+ isDeepResearchMode,
10778
+ deepResearchEnabled,
10779
+ manualSkills,
10780
+ onSkillSelect: executeManualSkill,
10781
+ activeSkillExecution,
10782
+ attachments,
10783
+ onFileAttach: addAttachments,
10784
+ onRemoveAttachment: removeAttachment,
10785
+ onDisclaimerClick: () => setDisclaimerOpen(true),
10786
+ inline: true
10787
+ }
10788
+ ) }),
10789
+ suggestedPrompts && suggestedPrompts.length > 0 && /* @__PURE__ */ jsx20(
10790
+ "div",
10791
+ {
10792
+ style: {
10793
+ display: "flex",
10794
+ flexWrap: "wrap",
10795
+ gap: "8px",
10796
+ justifyContent: "center",
10797
+ maxWidth: "680px"
10798
+ },
10799
+ children: suggestedPrompts.map((sp) => /* @__PURE__ */ jsxs19(
10800
+ "button",
10801
+ {
10802
+ onClick: () => setInput(sp.prompt),
10803
+ style: {
10804
+ display: "flex",
10805
+ alignItems: "center",
10806
+ gap: "6px",
10807
+ padding: "8px 16px",
10808
+ borderRadius: "20px",
10809
+ border: "1px solid var(--chatllm-border)",
10810
+ background: "var(--chatllm-content-bg)",
10811
+ color: "var(--chatllm-text-secondary)",
10812
+ fontSize: "13px",
10813
+ fontFamily: "inherit",
10814
+ cursor: "pointer",
10815
+ transition: "all 0.2s"
10816
+ },
10817
+ children: [
10818
+ sp.icon && /* @__PURE__ */ jsx20(IconSvg, { name: sp.icon, size: 16, color: "var(--chatllm-text-muted)" }),
10819
+ sp.label
10820
+ ]
10821
+ },
10822
+ sp.id
10823
+ ))
10824
+ }
10825
+ )
10826
+ ]
10874
10827
  }
10875
10828
  ),
10876
- /* @__PURE__ */ jsx21(
10877
- ChatInput,
10878
- {
10879
- value: input,
10880
- onChange: setInput,
10881
- onSubmit: handleSubmit,
10882
- onStop: stopGeneration,
10883
- isLoading,
10884
- placeholder: "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD558\uC138\uC694...",
10885
- quotedText,
10886
- onClearQuote: () => setQuotedText(null),
10887
- selectedAction,
10888
- onClearAction: () => setSelectedAction(null),
10889
- onActionSelect: setSelectedAction,
10890
- actions,
10891
- onDeepResearch: toggleDeepResearchMode,
10892
- isDeepResearchMode,
10893
- deepResearchEnabled,
10894
- manualSkills,
10895
- onSkillSelect: executeManualSkill,
10896
- activeSkillExecution,
10897
- attachments,
10898
- onFileAttach: addAttachments,
10899
- onRemoveAttachment: removeAttachment,
10900
- onDisclaimerClick: () => setDisclaimerOpen(true)
10901
- }
10902
- )
10829
+ messages.length > 0 && /* @__PURE__ */ jsxs19(Fragment8, { children: [
10830
+ /* @__PURE__ */ jsx20(
10831
+ MessageList,
10832
+ {
10833
+ messages,
10834
+ isLoading,
10835
+ onCopy: copyMessage,
10836
+ onEdit: startEdit,
10837
+ onRegenerate: regenerate,
10838
+ onQuote: setQuotedText,
10839
+ onAskOtherModel: (userMessageId, assistantMessageId, targetModel) => askOtherModel(assistantMessageId, targetModel),
10840
+ onSetActiveAlternative: setActiveAlternative,
10841
+ activeAlternatives,
10842
+ models: hookModels,
10843
+ copiedId: copiedMessageId,
10844
+ editingId: editingMessageId,
10845
+ onChoiceClick: handleChoiceClick,
10846
+ showThinking,
10847
+ thinkingDefaultOpen,
10848
+ loadingAlternativeFor,
10849
+ onPollSubmit: handlePollSubmit
10850
+ }
10851
+ ),
10852
+ /* @__PURE__ */ jsx20(
10853
+ ChatInput,
10854
+ {
10855
+ value: input,
10856
+ onChange: setInput,
10857
+ onSubmit: handleSubmit,
10858
+ onStop: stopGeneration,
10859
+ isLoading,
10860
+ placeholder: "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD558\uC138\uC694...",
10861
+ quotedText,
10862
+ onClearQuote: () => setQuotedText(null),
10863
+ selectedAction,
10864
+ onClearAction: () => setSelectedAction(null),
10865
+ onActionSelect: setSelectedAction,
10866
+ actions,
10867
+ onDeepResearch: toggleDeepResearchMode,
10868
+ isDeepResearchMode,
10869
+ deepResearchEnabled,
10870
+ manualSkills,
10871
+ onSkillSelect: executeManualSkill,
10872
+ activeSkillExecution,
10873
+ attachments,
10874
+ onFileAttach: addAttachments,
10875
+ onRemoveAttachment: removeAttachment,
10876
+ onDisclaimerClick: () => setDisclaimerOpen(true)
10877
+ }
10878
+ )
10879
+ ] })
10903
10880
  ]
10904
10881
  }
10905
10882
  ),
10906
- showSettings && /* @__PURE__ */ jsx21(
10883
+ showSettings && /* @__PURE__ */ jsx20(
10907
10884
  SettingsModal,
10908
10885
  {
10909
10886
  isOpen: settingsOpen,
@@ -10930,7 +10907,7 @@ var ChatUIView = ({
10930
10907
  currentProjectTitle: currentProject?.title
10931
10908
  }
10932
10909
  ),
10933
- /* @__PURE__ */ jsx21(
10910
+ /* @__PURE__ */ jsx20(
10934
10911
  ProjectSettingsModal,
10935
10912
  {
10936
10913
  isOpen: projectSettingsOpen,
@@ -10942,7 +10919,7 @@ var ChatUIView = ({
10942
10919
  onDeleteProject: deleteProject
10943
10920
  }
10944
10921
  ),
10945
- /* @__PURE__ */ jsx21(DisclaimerModal, { isOpen: disclaimerOpen, onClose: () => setDisclaimerOpen(false) })
10922
+ /* @__PURE__ */ jsx20(DisclaimerModal, { isOpen: disclaimerOpen, onClose: () => setDisclaimerOpen(false) })
10946
10923
  ]
10947
10924
  }
10948
10925
  );
@@ -10951,6 +10928,7 @@ var ChatUIWithHook = ({
10951
10928
  models = DEFAULT_MODELS,
10952
10929
  actions = DEFAULT_ACTIONS,
10953
10930
  templates = DEFAULT_TEMPLATES,
10931
+ suggestedPrompts,
10954
10932
  personalization,
10955
10933
  onPersonalizationChange,
10956
10934
  onPersonalizationSave,
@@ -11044,7 +11022,7 @@ var ChatUIWithHook = ({
11044
11022
  onDeleteProjectFile
11045
11023
  };
11046
11024
  const state = useChatUI(hookOptions);
11047
- return /* @__PURE__ */ jsx21(
11025
+ return /* @__PURE__ */ jsx20(
11048
11026
  ChatUIView,
11049
11027
  {
11050
11028
  state,
@@ -11064,7 +11042,8 @@ var ChatUIWithHook = ({
11064
11042
  className,
11065
11043
  apiKey,
11066
11044
  onApiKeyChange,
11067
- deepResearchEnabled: !!deepResearch?.onWebSearch
11045
+ deepResearchEnabled: !!deepResearch?.onWebSearch,
11046
+ suggestedPrompts
11068
11047
  }
11069
11048
  );
11070
11049
  };
@@ -11088,9 +11067,10 @@ var ChatUI = (props) => {
11088
11067
  className = "",
11089
11068
  apiKey,
11090
11069
  onApiKeyChange,
11091
- deepResearch
11070
+ deepResearch,
11071
+ suggestedPrompts: chatStateSuggestedPrompts
11092
11072
  } = props;
11093
- return /* @__PURE__ */ jsx21(
11073
+ return /* @__PURE__ */ jsx20(
11094
11074
  ChatUIView,
11095
11075
  {
11096
11076
  state: props.chatState,
@@ -11110,11 +11090,12 @@ var ChatUI = (props) => {
11110
11090
  className,
11111
11091
  apiKey,
11112
11092
  onApiKeyChange,
11113
- deepResearchEnabled: !!deepResearch?.onWebSearch
11093
+ deepResearchEnabled: !!deepResearch?.onWebSearch,
11094
+ suggestedPrompts: chatStateSuggestedPrompts
11114
11095
  }
11115
11096
  );
11116
11097
  }
11117
- return /* @__PURE__ */ jsx21(ChatUIWithHook, { ...props });
11098
+ return /* @__PURE__ */ jsx20(ChatUIWithHook, { ...props });
11118
11099
  };
11119
11100
 
11120
11101
  // src/react/hooks/useDeepResearch.ts
@@ -11431,6 +11412,144 @@ var useDeepResearch = (options) => {
11431
11412
  };
11432
11413
  };
11433
11414
 
11415
+ // src/react/components/EmptyState.tsx
11416
+ import { jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
11417
+ var EmptyState = ({
11418
+ greeting,
11419
+ templates = [],
11420
+ onTemplateClick,
11421
+ actions = [],
11422
+ onActionSelect
11423
+ }) => {
11424
+ const getActionIcon = (icon) => {
11425
+ const iconMap = {
11426
+ search: "search-line",
11427
+ image: "image-line",
11428
+ code: "code-s-slash-line",
11429
+ document: "file-text-line"
11430
+ };
11431
+ return iconMap[icon] || "sparkling-line";
11432
+ };
11433
+ const hasContent = actions.length > 0 || templates.length > 0;
11434
+ return /* @__PURE__ */ jsxs20(
11435
+ "div",
11436
+ {
11437
+ className: "chatllm-empty-state",
11438
+ style: {
11439
+ flex: 1,
11440
+ display: "flex",
11441
+ flexDirection: "column",
11442
+ alignItems: "center",
11443
+ justifyContent: hasContent ? "center" : "flex-end",
11444
+ padding: "48px 24px",
11445
+ paddingBottom: hasContent ? "200px" : "32px",
11446
+ textAlign: "center"
11447
+ },
11448
+ children: [
11449
+ /* @__PURE__ */ jsx21(
11450
+ "div",
11451
+ {
11452
+ className: "chatllm-sheet",
11453
+ style: {
11454
+ width: "64px",
11455
+ height: "64px",
11456
+ borderRadius: "16px",
11457
+ display: "flex",
11458
+ alignItems: "center",
11459
+ justifyContent: "center",
11460
+ marginBottom: "32px",
11461
+ color: "var(--chatllm-primary)"
11462
+ },
11463
+ children: /* @__PURE__ */ jsx21(IconSvg, { name: "chat-1-line", size: 40 })
11464
+ }
11465
+ ),
11466
+ /* @__PURE__ */ jsx21(
11467
+ "h1",
11468
+ {
11469
+ style: {
11470
+ fontSize: "30px",
11471
+ fontWeight: 700,
11472
+ color: "var(--chatllm-text)",
11473
+ marginBottom: hasContent ? "40px" : "0",
11474
+ lineHeight: 1.3
11475
+ },
11476
+ children: "How can I help you today?"
11477
+ }
11478
+ ),
11479
+ (actions.length > 0 || templates.length > 0) && /* @__PURE__ */ jsxs20(
11480
+ "div",
11481
+ {
11482
+ style: {
11483
+ display: "flex",
11484
+ flexWrap: "wrap",
11485
+ justifyContent: "center",
11486
+ gap: "12px",
11487
+ maxWidth: "800px",
11488
+ marginBottom: "48px"
11489
+ },
11490
+ children: [
11491
+ actions.map((action) => /* @__PURE__ */ jsxs20(
11492
+ "button",
11493
+ {
11494
+ onClick: () => onActionSelect?.(action),
11495
+ className: "chatllm-btn-secondary",
11496
+ style: {
11497
+ display: "flex",
11498
+ alignItems: "center",
11499
+ gap: "8px",
11500
+ padding: "12px 20px",
11501
+ fontSize: "14px",
11502
+ fontWeight: 500
11503
+ },
11504
+ children: [
11505
+ /* @__PURE__ */ jsx21(
11506
+ IconSvg,
11507
+ {
11508
+ name: getActionIcon(action.icon),
11509
+ size: 18,
11510
+ color: "var(--chatllm-primary)"
11511
+ }
11512
+ ),
11513
+ action.label
11514
+ ]
11515
+ },
11516
+ action.id
11517
+ )),
11518
+ templates.slice(0, 4).map((template) => /* @__PURE__ */ jsxs20(
11519
+ "button",
11520
+ {
11521
+ onClick: () => onTemplateClick(template),
11522
+ className: "chatllm-btn-secondary",
11523
+ style: {
11524
+ display: "flex",
11525
+ alignItems: "center",
11526
+ gap: "8px",
11527
+ padding: "12px 20px",
11528
+ fontSize: "14px",
11529
+ fontWeight: 500
11530
+ },
11531
+ children: [
11532
+ /* @__PURE__ */ jsx21(
11533
+ IconSvg,
11534
+ {
11535
+ name: "sparkling-line",
11536
+ size: 18,
11537
+ color: "var(--chatllm-primary)"
11538
+ }
11539
+ ),
11540
+ template.title
11541
+ ]
11542
+ },
11543
+ template.id
11544
+ ))
11545
+ ]
11546
+ }
11547
+ )
11548
+ ]
11549
+ }
11550
+ );
11551
+ };
11552
+
11434
11553
  // src/react/components/MemoryPanel.tsx
11435
11554
  import { useState as useState19 } from "react";
11436
11555
  import { jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";