@axis-ds/agentic-ui 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +71 -1
  2. package/dist/agent-avatar/index.js +6 -16
  3. package/dist/agent-avatar/index.mjs +75 -4
  4. package/dist/approval-card/index.js +6 -16
  5. package/dist/approval-card/index.mjs +86 -4
  6. package/dist/attachment-card/index.js +5 -17
  7. package/dist/attachment-card/index.mjs +101 -4
  8. package/dist/code-block/index.js +2 -3
  9. package/dist/code-block/index.mjs +76 -3
  10. package/dist/constants/a11y-labels.d.mts +86 -0
  11. package/dist/constants/a11y-labels.d.ts +86 -0
  12. package/dist/constants/a11y-labels.js +105 -0
  13. package/dist/{chunk-SCZ4BQ2G.mjs → constants/a11y-labels.mjs} +21 -17
  14. package/dist/context-panel/index.js +2 -3
  15. package/dist/context-panel/index.mjs +99 -3
  16. package/dist/diff-viewer/index.js +8 -17
  17. package/dist/diff-viewer/index.mjs +155 -4
  18. package/dist/feedback-buttons/index.js +7 -16
  19. package/dist/feedback-buttons/index.mjs +65 -4
  20. package/dist/index.js +36 -1732
  21. package/dist/index.mjs +18 -55
  22. package/dist/message-bubble/index.js +5 -15
  23. package/dist/message-bubble/index.mjs +98 -4
  24. package/dist/plan-card/index.js +6 -28
  25. package/dist/plan-card/index.mjs +143 -4
  26. package/dist/recovery-banner/index.js +1 -3
  27. package/dist/recovery-banner/index.mjs +70 -3
  28. package/dist/run-progress/index.js +5 -19
  29. package/dist/run-progress/index.mjs +128 -4
  30. package/dist/source-panel/index.js +5 -15
  31. package/dist/source-panel/index.mjs +88 -4
  32. package/dist/step-timeline/index.js +3 -17
  33. package/dist/step-timeline/index.mjs +69 -4
  34. package/dist/streaming-text/index.js +2 -3
  35. package/dist/streaming-text/index.mjs +59 -3
  36. package/dist/surface-renderer/index.js +1 -3
  37. package/dist/surface-renderer/index.mjs +79 -3
  38. package/dist/thinking-indicator/index.js +3 -5
  39. package/dist/thinking-indicator/index.mjs +45 -3
  40. package/dist/token-usage-indicator/index.js +1 -3
  41. package/dist/token-usage-indicator/index.mjs +81 -3
  42. package/dist/tool-call-card/index.js +5 -18
  43. package/dist/tool-call-card/index.mjs +108 -4
  44. package/package.json +39 -7
  45. package/tailwind.css +10 -0
  46. package/dist/chunk-42KEAZ2Y.mjs +0 -109
  47. package/dist/chunk-4CMUEGLK.mjs +0 -80
  48. package/dist/chunk-4V4BWBRC.mjs +0 -77
  49. package/dist/chunk-7HTVJ6MK.mjs +0 -94
  50. package/dist/chunk-DPLGRVNQ.mjs +0 -95
  51. package/dist/chunk-FYAMA32G.mjs +0 -50
  52. package/dist/chunk-GQYOOLDL.mjs +0 -63
  53. package/dist/chunk-IOF4OET6.mjs +0 -162
  54. package/dist/chunk-J4FIMXXG.mjs +0 -106
  55. package/dist/chunk-JY7MTMMB.mjs +0 -83
  56. package/dist/chunk-KJVPVBET.mjs +0 -103
  57. package/dist/chunk-OYQX3SL4.mjs +0 -152
  58. package/dist/chunk-QS6GQNSE.mjs +0 -86
  59. package/dist/chunk-R4CMHIRO.mjs +0 -72
  60. package/dist/chunk-SCXUEQLI.mjs +0 -136
  61. package/dist/chunk-UDL4M5RP.mjs +0 -75
  62. package/dist/chunk-WFYQINWD.mjs +0 -115
  63. package/dist/chunk-ZW4Z27AB.mjs +0 -84
@@ -0,0 +1,86 @@
1
+ /**
2
+ * 접근성(a11y)을 위한 레이블 상수
3
+ * WCAG 2.1 AA 기준 준수를 위한 스크린 리더 텍스트
4
+ */
5
+ /** 상태 레이블 (도구 호출, 실행 단계 등) */
6
+ declare const STATUS_LABELS: {
7
+ readonly pending: "대기 중";
8
+ readonly running: "실행 중";
9
+ readonly complete: "완료";
10
+ readonly success: "성공";
11
+ readonly error: "오류";
12
+ readonly skipped: "건너뜀";
13
+ readonly idle: "대기 중";
14
+ };
15
+ /** 심각도 레이블 (알림, 승인 카드 등) */
16
+ declare const SEVERITY_LABELS: {
17
+ readonly info: "정보";
18
+ readonly warning: "주의";
19
+ readonly error: "오류";
20
+ };
21
+ /** 에이전트 상태 레이블 */
22
+ declare const AGENT_STATUS_LABELS: {
23
+ readonly online: "온라인";
24
+ readonly busy: "사용 중";
25
+ readonly offline: "오프라인";
26
+ };
27
+ /** 에이전트 타입 레이블 */
28
+ declare const AGENT_TYPE_LABELS: {
29
+ readonly assistant: "어시스턴트";
30
+ readonly tool: "도구";
31
+ readonly system: "시스템";
32
+ };
33
+ /** 소스 타입 레이블 */
34
+ declare const SOURCE_TYPE_LABELS: {
35
+ readonly web: "웹 페이지";
36
+ readonly file: "파일";
37
+ readonly database: "데이터베이스";
38
+ readonly api: "API";
39
+ };
40
+ type StatusLabel = keyof typeof STATUS_LABELS;
41
+ type SeverityLabel = keyof typeof SEVERITY_LABELS;
42
+ type AgentStatusLabel = keyof typeof AGENT_STATUS_LABELS;
43
+ type AgentTypeLabel = keyof typeof AGENT_TYPE_LABELS;
44
+ /** 메시지 역할 레이블 */
45
+ declare const MESSAGE_ROLE_LABELS: {
46
+ readonly user: "사용자";
47
+ readonly assistant: "어시스턴트";
48
+ readonly system: "시스템";
49
+ };
50
+ /** 피드백 레이블 */
51
+ declare const FEEDBACK_LABELS: {
52
+ readonly like: "좋아요";
53
+ readonly dislike: "싫어요";
54
+ readonly none: "피드백 없음";
55
+ };
56
+ /** 첨부파일 타입 레이블 */
57
+ declare const ATTACHMENT_TYPE_LABELS: {
58
+ readonly image: "이미지";
59
+ readonly document: "문서";
60
+ readonly code: "코드";
61
+ readonly archive: "압축 파일";
62
+ readonly other: "기타 파일";
63
+ };
64
+ /** Diff 변경 타입 레이블 */
65
+ declare const DIFF_LABELS: {
66
+ readonly added: "추가됨";
67
+ readonly removed: "삭제됨";
68
+ readonly unchanged: "변경 없음";
69
+ };
70
+ /** 계획 상태 레이블 */
71
+ declare const PLAN_STATUS_LABELS: {
72
+ readonly draft: "초안";
73
+ readonly pending: "승인 대기";
74
+ readonly approved: "승인됨";
75
+ readonly rejected: "거절됨";
76
+ readonly executing: "실행 중";
77
+ readonly completed: "완료";
78
+ };
79
+ type SourceTypeLabel = keyof typeof SOURCE_TYPE_LABELS;
80
+ type MessageRoleLabel = keyof typeof MESSAGE_ROLE_LABELS;
81
+ type FeedbackLabel = keyof typeof FEEDBACK_LABELS;
82
+ type AttachmentTypeLabel = keyof typeof ATTACHMENT_TYPE_LABELS;
83
+ type DiffLabel = keyof typeof DIFF_LABELS;
84
+ type PlanStatusLabel = keyof typeof PLAN_STATUS_LABELS;
85
+
86
+ export { AGENT_STATUS_LABELS, AGENT_TYPE_LABELS, ATTACHMENT_TYPE_LABELS, type AgentStatusLabel, type AgentTypeLabel, type AttachmentTypeLabel, DIFF_LABELS, type DiffLabel, FEEDBACK_LABELS, type FeedbackLabel, MESSAGE_ROLE_LABELS, type MessageRoleLabel, PLAN_STATUS_LABELS, type PlanStatusLabel, SEVERITY_LABELS, SOURCE_TYPE_LABELS, STATUS_LABELS, type SeverityLabel, type SourceTypeLabel, type StatusLabel };
@@ -0,0 +1,86 @@
1
+ /**
2
+ * 접근성(a11y)을 위한 레이블 상수
3
+ * WCAG 2.1 AA 기준 준수를 위한 스크린 리더 텍스트
4
+ */
5
+ /** 상태 레이블 (도구 호출, 실행 단계 등) */
6
+ declare const STATUS_LABELS: {
7
+ readonly pending: "대기 중";
8
+ readonly running: "실행 중";
9
+ readonly complete: "완료";
10
+ readonly success: "성공";
11
+ readonly error: "오류";
12
+ readonly skipped: "건너뜀";
13
+ readonly idle: "대기 중";
14
+ };
15
+ /** 심각도 레이블 (알림, 승인 카드 등) */
16
+ declare const SEVERITY_LABELS: {
17
+ readonly info: "정보";
18
+ readonly warning: "주의";
19
+ readonly error: "오류";
20
+ };
21
+ /** 에이전트 상태 레이블 */
22
+ declare const AGENT_STATUS_LABELS: {
23
+ readonly online: "온라인";
24
+ readonly busy: "사용 중";
25
+ readonly offline: "오프라인";
26
+ };
27
+ /** 에이전트 타입 레이블 */
28
+ declare const AGENT_TYPE_LABELS: {
29
+ readonly assistant: "어시스턴트";
30
+ readonly tool: "도구";
31
+ readonly system: "시스템";
32
+ };
33
+ /** 소스 타입 레이블 */
34
+ declare const SOURCE_TYPE_LABELS: {
35
+ readonly web: "웹 페이지";
36
+ readonly file: "파일";
37
+ readonly database: "데이터베이스";
38
+ readonly api: "API";
39
+ };
40
+ type StatusLabel = keyof typeof STATUS_LABELS;
41
+ type SeverityLabel = keyof typeof SEVERITY_LABELS;
42
+ type AgentStatusLabel = keyof typeof AGENT_STATUS_LABELS;
43
+ type AgentTypeLabel = keyof typeof AGENT_TYPE_LABELS;
44
+ /** 메시지 역할 레이블 */
45
+ declare const MESSAGE_ROLE_LABELS: {
46
+ readonly user: "사용자";
47
+ readonly assistant: "어시스턴트";
48
+ readonly system: "시스템";
49
+ };
50
+ /** 피드백 레이블 */
51
+ declare const FEEDBACK_LABELS: {
52
+ readonly like: "좋아요";
53
+ readonly dislike: "싫어요";
54
+ readonly none: "피드백 없음";
55
+ };
56
+ /** 첨부파일 타입 레이블 */
57
+ declare const ATTACHMENT_TYPE_LABELS: {
58
+ readonly image: "이미지";
59
+ readonly document: "문서";
60
+ readonly code: "코드";
61
+ readonly archive: "압축 파일";
62
+ readonly other: "기타 파일";
63
+ };
64
+ /** Diff 변경 타입 레이블 */
65
+ declare const DIFF_LABELS: {
66
+ readonly added: "추가됨";
67
+ readonly removed: "삭제됨";
68
+ readonly unchanged: "변경 없음";
69
+ };
70
+ /** 계획 상태 레이블 */
71
+ declare const PLAN_STATUS_LABELS: {
72
+ readonly draft: "초안";
73
+ readonly pending: "승인 대기";
74
+ readonly approved: "승인됨";
75
+ readonly rejected: "거절됨";
76
+ readonly executing: "실행 중";
77
+ readonly completed: "완료";
78
+ };
79
+ type SourceTypeLabel = keyof typeof SOURCE_TYPE_LABELS;
80
+ type MessageRoleLabel = keyof typeof MESSAGE_ROLE_LABELS;
81
+ type FeedbackLabel = keyof typeof FEEDBACK_LABELS;
82
+ type AttachmentTypeLabel = keyof typeof ATTACHMENT_TYPE_LABELS;
83
+ type DiffLabel = keyof typeof DIFF_LABELS;
84
+ type PlanStatusLabel = keyof typeof PLAN_STATUS_LABELS;
85
+
86
+ export { AGENT_STATUS_LABELS, AGENT_TYPE_LABELS, ATTACHMENT_TYPE_LABELS, type AgentStatusLabel, type AgentTypeLabel, type AttachmentTypeLabel, DIFF_LABELS, type DiffLabel, FEEDBACK_LABELS, type FeedbackLabel, MESSAGE_ROLE_LABELS, type MessageRoleLabel, PLAN_STATUS_LABELS, type PlanStatusLabel, SEVERITY_LABELS, SOURCE_TYPE_LABELS, STATUS_LABELS, type SeverityLabel, type SourceTypeLabel, type StatusLabel };
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var a11y_labels_exports = {};
20
+ __export(a11y_labels_exports, {
21
+ AGENT_STATUS_LABELS: () => AGENT_STATUS_LABELS,
22
+ AGENT_TYPE_LABELS: () => AGENT_TYPE_LABELS,
23
+ ATTACHMENT_TYPE_LABELS: () => ATTACHMENT_TYPE_LABELS,
24
+ DIFF_LABELS: () => DIFF_LABELS,
25
+ FEEDBACK_LABELS: () => FEEDBACK_LABELS,
26
+ MESSAGE_ROLE_LABELS: () => MESSAGE_ROLE_LABELS,
27
+ PLAN_STATUS_LABELS: () => PLAN_STATUS_LABELS,
28
+ SEVERITY_LABELS: () => SEVERITY_LABELS,
29
+ SOURCE_TYPE_LABELS: () => SOURCE_TYPE_LABELS,
30
+ STATUS_LABELS: () => STATUS_LABELS
31
+ });
32
+ module.exports = __toCommonJS(a11y_labels_exports);
33
+ const STATUS_LABELS = {
34
+ pending: "\uB300\uAE30 \uC911",
35
+ running: "\uC2E4\uD589 \uC911",
36
+ complete: "\uC644\uB8CC",
37
+ success: "\uC131\uACF5",
38
+ error: "\uC624\uB958",
39
+ skipped: "\uAC74\uB108\uB700",
40
+ idle: "\uB300\uAE30 \uC911"
41
+ };
42
+ const SEVERITY_LABELS = {
43
+ info: "\uC815\uBCF4",
44
+ warning: "\uC8FC\uC758",
45
+ error: "\uC624\uB958"
46
+ };
47
+ const AGENT_STATUS_LABELS = {
48
+ online: "\uC628\uB77C\uC778",
49
+ busy: "\uC0AC\uC6A9 \uC911",
50
+ offline: "\uC624\uD504\uB77C\uC778"
51
+ };
52
+ const AGENT_TYPE_LABELS = {
53
+ assistant: "\uC5B4\uC2DC\uC2A4\uD134\uD2B8",
54
+ tool: "\uB3C4\uAD6C",
55
+ system: "\uC2DC\uC2A4\uD15C"
56
+ };
57
+ const SOURCE_TYPE_LABELS = {
58
+ web: "\uC6F9 \uD398\uC774\uC9C0",
59
+ file: "\uD30C\uC77C",
60
+ database: "\uB370\uC774\uD130\uBCA0\uC774\uC2A4",
61
+ api: "API"
62
+ };
63
+ const MESSAGE_ROLE_LABELS = {
64
+ user: "\uC0AC\uC6A9\uC790",
65
+ assistant: "\uC5B4\uC2DC\uC2A4\uD134\uD2B8",
66
+ system: "\uC2DC\uC2A4\uD15C"
67
+ };
68
+ const FEEDBACK_LABELS = {
69
+ like: "\uC88B\uC544\uC694",
70
+ dislike: "\uC2EB\uC5B4\uC694",
71
+ none: "\uD53C\uB4DC\uBC31 \uC5C6\uC74C"
72
+ };
73
+ const ATTACHMENT_TYPE_LABELS = {
74
+ image: "\uC774\uBBF8\uC9C0",
75
+ document: "\uBB38\uC11C",
76
+ code: "\uCF54\uB4DC",
77
+ archive: "\uC555\uCD95 \uD30C\uC77C",
78
+ other: "\uAE30\uD0C0 \uD30C\uC77C"
79
+ };
80
+ const DIFF_LABELS = {
81
+ added: "\uCD94\uAC00\uB428",
82
+ removed: "\uC0AD\uC81C\uB428",
83
+ unchanged: "\uBCC0\uACBD \uC5C6\uC74C"
84
+ };
85
+ const PLAN_STATUS_LABELS = {
86
+ draft: "\uCD08\uC548",
87
+ pending: "\uC2B9\uC778 \uB300\uAE30",
88
+ approved: "\uC2B9\uC778\uB428",
89
+ rejected: "\uAC70\uC808\uB428",
90
+ executing: "\uC2E4\uD589 \uC911",
91
+ completed: "\uC644\uB8CC"
92
+ };
93
+ // Annotate the CommonJS export names for ESM import in node:
94
+ 0 && (module.exports = {
95
+ AGENT_STATUS_LABELS,
96
+ AGENT_TYPE_LABELS,
97
+ ATTACHMENT_TYPE_LABELS,
98
+ DIFF_LABELS,
99
+ FEEDBACK_LABELS,
100
+ MESSAGE_ROLE_LABELS,
101
+ PLAN_STATUS_LABELS,
102
+ SEVERITY_LABELS,
103
+ SOURCE_TYPE_LABELS,
104
+ STATUS_LABELS
105
+ });
@@ -1,5 +1,4 @@
1
- // src/constants/a11y-labels.ts
2
- var STATUS_LABELS = {
1
+ const STATUS_LABELS = {
3
2
  pending: "\uB300\uAE30 \uC911",
4
3
  running: "\uC2E4\uD589 \uC911",
5
4
  complete: "\uC644\uB8CC",
@@ -8,45 +7,50 @@ var STATUS_LABELS = {
8
7
  skipped: "\uAC74\uB108\uB700",
9
8
  idle: "\uB300\uAE30 \uC911"
10
9
  };
11
- var SEVERITY_LABELS = {
10
+ const SEVERITY_LABELS = {
12
11
  info: "\uC815\uBCF4",
13
12
  warning: "\uC8FC\uC758",
14
13
  error: "\uC624\uB958"
15
14
  };
16
- var AGENT_STATUS_LABELS = {
15
+ const AGENT_STATUS_LABELS = {
17
16
  online: "\uC628\uB77C\uC778",
18
17
  busy: "\uC0AC\uC6A9 \uC911",
19
18
  offline: "\uC624\uD504\uB77C\uC778"
20
19
  };
21
- var SOURCE_TYPE_LABELS = {
20
+ const AGENT_TYPE_LABELS = {
21
+ assistant: "\uC5B4\uC2DC\uC2A4\uD134\uD2B8",
22
+ tool: "\uB3C4\uAD6C",
23
+ system: "\uC2DC\uC2A4\uD15C"
24
+ };
25
+ const SOURCE_TYPE_LABELS = {
22
26
  web: "\uC6F9 \uD398\uC774\uC9C0",
23
27
  file: "\uD30C\uC77C",
24
28
  database: "\uB370\uC774\uD130\uBCA0\uC774\uC2A4",
25
29
  api: "API"
26
30
  };
27
- var MESSAGE_ROLE_LABELS = {
31
+ const MESSAGE_ROLE_LABELS = {
28
32
  user: "\uC0AC\uC6A9\uC790",
29
33
  assistant: "\uC5B4\uC2DC\uC2A4\uD134\uD2B8",
30
34
  system: "\uC2DC\uC2A4\uD15C"
31
35
  };
32
- var FEEDBACK_LABELS = {
36
+ const FEEDBACK_LABELS = {
33
37
  like: "\uC88B\uC544\uC694",
34
38
  dislike: "\uC2EB\uC5B4\uC694",
35
39
  none: "\uD53C\uB4DC\uBC31 \uC5C6\uC74C"
36
40
  };
37
- var ATTACHMENT_TYPE_LABELS = {
41
+ const ATTACHMENT_TYPE_LABELS = {
38
42
  image: "\uC774\uBBF8\uC9C0",
39
43
  document: "\uBB38\uC11C",
40
44
  code: "\uCF54\uB4DC",
41
45
  archive: "\uC555\uCD95 \uD30C\uC77C",
42
46
  other: "\uAE30\uD0C0 \uD30C\uC77C"
43
47
  };
44
- var DIFF_LABELS = {
48
+ const DIFF_LABELS = {
45
49
  added: "\uCD94\uAC00\uB428",
46
50
  removed: "\uC0AD\uC81C\uB428",
47
51
  unchanged: "\uBCC0\uACBD \uC5C6\uC74C"
48
52
  };
49
- var PLAN_STATUS_LABELS = {
53
+ const PLAN_STATUS_LABELS = {
50
54
  draft: "\uCD08\uC548",
51
55
  pending: "\uC2B9\uC778 \uB300\uAE30",
52
56
  approved: "\uC2B9\uC778\uB428",
@@ -54,15 +58,15 @@ var PLAN_STATUS_LABELS = {
54
58
  executing: "\uC2E4\uD589 \uC911",
55
59
  completed: "\uC644\uB8CC"
56
60
  };
57
-
58
61
  export {
59
- STATUS_LABELS,
60
- SEVERITY_LABELS,
61
62
  AGENT_STATUS_LABELS,
62
- SOURCE_TYPE_LABELS,
63
- MESSAGE_ROLE_LABELS,
64
- FEEDBACK_LABELS,
63
+ AGENT_TYPE_LABELS,
65
64
  ATTACHMENT_TYPE_LABELS,
66
65
  DIFF_LABELS,
67
- PLAN_STATUS_LABELS
66
+ FEEDBACK_LABELS,
67
+ MESSAGE_ROLE_LABELS,
68
+ PLAN_STATUS_LABELS,
69
+ SEVERITY_LABELS,
70
+ SOURCE_TYPE_LABELS,
71
+ STATUS_LABELS
68
72
  };
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  "use strict";
2
3
  var __create = Object.create;
3
4
  var __defProp = Object.defineProperty;
@@ -26,16 +27,14 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
27
  mod
27
28
  ));
28
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/context-panel/index.tsx
31
30
  var context_panel_exports = {};
32
31
  __export(context_panel_exports, {
33
32
  ContextPanel: () => ContextPanel
34
33
  });
35
34
  module.exports = __toCommonJS(context_panel_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var React = __toESM(require("react"));
37
37
  var import_ui_react = require("@axis-ds/ui-react");
38
- var import_jsx_runtime = require("react/jsx-runtime");
39
38
  function ContextPanel({
40
39
  modelInfo,
41
40
  systemPrompt,
@@ -1,6 +1,102 @@
1
- import {
2
- ContextPanel
3
- } from "../chunk-KJVPVBET.mjs";
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "@axis-ds/ui-react";
5
+ function ContextPanel({
6
+ modelInfo,
7
+ systemPrompt,
8
+ attachedFiles,
9
+ settings,
10
+ collapsible = true,
11
+ defaultExpanded = false,
12
+ className
13
+ }) {
14
+ const [isExpanded, setIsExpanded] = React.useState(defaultExpanded);
15
+ const contentId = React.useId();
16
+ const hasContent = modelInfo || systemPrompt || attachedFiles && attachedFiles.length > 0 || settings && Object.keys(settings).length > 0;
17
+ if (!hasContent) return null;
18
+ const header = /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
19
+ /* @__PURE__ */ jsxs("svg", { className: "w-4 h-4 text-[var(--axis-icon-secondary)]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
20
+ /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.066 2.573c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.573 1.066c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.066-2.573c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" }),
21
+ /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })
22
+ ] }),
23
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-[var(--axis-text-secondary)]", children: "\uCEE8\uD14D\uC2A4\uD2B8" })
24
+ ] });
25
+ const content = /* @__PURE__ */ jsxs("div", { id: contentId, className: "space-y-3 mt-2", children: [
26
+ modelInfo && /* @__PURE__ */ jsxs("div", { children: [
27
+ /* @__PURE__ */ jsx("h5", { className: "text-xs font-medium text-[var(--axis-text-secondary)] mb-1", children: "\uBAA8\uB378" }),
28
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
29
+ /* @__PURE__ */ jsx("code", { className: "text-sm font-mono text-[var(--axis-text-primary)]", children: modelInfo.name }),
30
+ modelInfo.provider && /* @__PURE__ */ jsx("span", { className: "text-xs text-[var(--axis-text-tertiary)]", children: modelInfo.provider }),
31
+ modelInfo.version && /* @__PURE__ */ jsx("span", { className: "text-xs px-1.5 py-0.5 rounded bg-[var(--axis-surface-tertiary)] text-[var(--axis-text-tertiary)]", children: modelInfo.version })
32
+ ] })
33
+ ] }),
34
+ systemPrompt && /* @__PURE__ */ jsxs("div", { children: [
35
+ /* @__PURE__ */ jsx("h5", { className: "text-xs font-medium text-[var(--axis-text-secondary)] mb-1", children: "\uC2DC\uC2A4\uD15C \uD504\uB86C\uD504\uD2B8" }),
36
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-[var(--axis-text-primary)] p-2 rounded bg-[var(--axis-surface-secondary)] line-clamp-3 whitespace-pre-wrap", children: systemPrompt })
37
+ ] }),
38
+ attachedFiles && attachedFiles.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
39
+ /* @__PURE__ */ jsxs("h5", { className: "text-xs font-medium text-[var(--axis-text-secondary)] mb-1", children: [
40
+ "\uCCA8\uBD80 \uD30C\uC77C (",
41
+ attachedFiles.length,
42
+ ")"
43
+ ] }),
44
+ /* @__PURE__ */ jsx("div", { className: "space-y-1", children: attachedFiles.map((file, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-xs text-[var(--axis-text-primary)]", children: [
45
+ /* @__PURE__ */ jsx("svg", { className: "w-3 h-3 text-[var(--axis-icon-secondary)]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13" }) }),
46
+ /* @__PURE__ */ jsx("span", { className: "truncate", children: file })
47
+ ] }, i)) })
48
+ ] }),
49
+ settings && Object.keys(settings).length > 0 && /* @__PURE__ */ jsxs("div", { children: [
50
+ /* @__PURE__ */ jsx("h5", { className: "text-xs font-medium text-[var(--axis-text-secondary)] mb-1", children: "\uC124\uC815" }),
51
+ /* @__PURE__ */ jsx("div", { className: "space-y-1", children: Object.entries(settings).map(([key, value]) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between text-xs", children: [
52
+ /* @__PURE__ */ jsx("span", { className: "text-[var(--axis-text-secondary)]", children: key }),
53
+ /* @__PURE__ */ jsx("code", { className: "font-mono text-[var(--axis-text-primary)]", children: value })
54
+ ] }, key)) })
55
+ ] })
56
+ ] });
57
+ return /* @__PURE__ */ jsx(
58
+ "div",
59
+ {
60
+ className: cn(
61
+ "rounded-lg border p-3",
62
+ "bg-[var(--axis-surface-secondary)] border-[var(--axis-border-default)]",
63
+ className
64
+ ),
65
+ children: collapsible ? /* @__PURE__ */ jsxs(Fragment, { children: [
66
+ /* @__PURE__ */ jsxs(
67
+ "button",
68
+ {
69
+ onClick: () => setIsExpanded(!isExpanded),
70
+ "aria-expanded": isExpanded,
71
+ "aria-controls": contentId,
72
+ className: "w-full flex items-center justify-between hover:opacity-80 transition-opacity",
73
+ children: [
74
+ header,
75
+ /* @__PURE__ */ jsx(
76
+ "svg",
77
+ {
78
+ className: cn(
79
+ "w-4 h-4 text-[var(--axis-text-secondary)] transition-transform",
80
+ isExpanded && "rotate-180"
81
+ ),
82
+ fill: "none",
83
+ stroke: "currentColor",
84
+ viewBox: "0 0 24 24",
85
+ "aria-hidden": "true",
86
+ children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
87
+ }
88
+ )
89
+ ]
90
+ }
91
+ ),
92
+ isExpanded && content
93
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
94
+ header,
95
+ content
96
+ ] })
97
+ }
98
+ );
99
+ }
4
100
  export {
5
101
  ContextPanel
6
102
  };
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  "use strict";
2
3
  var __create = Object.create;
3
4
  var __defProp = Object.defineProperty;
@@ -26,25 +27,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
27
  mod
27
28
  ));
28
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/diff-viewer/index.tsx
31
30
  var diff_viewer_exports = {};
32
31
  __export(diff_viewer_exports, {
33
32
  DiffViewer: () => DiffViewer
34
33
  });
35
34
  module.exports = __toCommonJS(diff_viewer_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var React = __toESM(require("react"));
37
37
  var import_ui_react = require("@axis-ds/ui-react");
38
-
39
- // src/constants/a11y-labels.ts
40
- var DIFF_LABELS = {
41
- added: "\uCD94\uAC00\uB428",
42
- removed: "\uC0AD\uC81C\uB428",
43
- unchanged: "\uBCC0\uACBD \uC5C6\uC74C"
44
- };
45
-
46
- // src/diff-viewer/index.tsx
47
- var import_jsx_runtime = require("react/jsx-runtime");
38
+ var import_a11y_labels = require("../constants/a11y-labels.js");
48
39
  function computeDiff(before, after) {
49
40
  const oldLines = before.split("\n");
50
41
  const newLines = after.split("\n");
@@ -78,17 +69,17 @@ function computeDiff(before, after) {
78
69
  }
79
70
  return result;
80
71
  }
81
- var lineTypeStyles = {
72
+ const lineTypeStyles = {
82
73
  added: "bg-[color:color-mix(in_srgb,var(--axis-diff-added)_10%,transparent)]",
83
74
  removed: "bg-[color:color-mix(in_srgb,var(--axis-diff-removed)_10%,transparent)]",
84
75
  unchanged: ""
85
76
  };
86
- var lineTypeTextStyles = {
77
+ const lineTypeTextStyles = {
87
78
  added: "text-[var(--axis-diff-added-text)]",
88
79
  removed: "text-[var(--axis-diff-removed-text)]",
89
80
  unchanged: "text-[var(--axis-text-primary)]"
90
81
  };
91
- var lineTypeSymbols = {
82
+ const lineTypeSymbols = {
92
83
  added: "+",
93
84
  removed: "-",
94
85
  unchanged: " "
@@ -119,11 +110,11 @@ function DiffViewer({
119
110
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2 min-w-0", children: [
120
111
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { className: "w-4 h-4 text-[var(--axis-icon-secondary)]", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h7" }) }),
121
112
  filename && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { className: "text-xs font-mono text-[var(--axis-text-primary)] truncate", children: filename }),
122
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-xs text-[var(--axis-diff-added)]", "aria-label": `${addedCount}\uC904 ${DIFF_LABELS.added}`, children: [
113
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-xs text-[var(--axis-diff-added)]", "aria-label": `${addedCount}\uC904 ${import_a11y_labels.DIFF_LABELS.added}`, children: [
123
114
  "+",
124
115
  addedCount
125
116
  ] }),
126
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-xs text-[var(--axis-diff-removed)]", "aria-label": `${removedCount}\uC904 ${DIFF_LABELS.removed}`, children: [
117
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-xs text-[var(--axis-diff-removed)]", "aria-label": `${removedCount}\uC904 ${import_a11y_labels.DIFF_LABELS.removed}`, children: [
127
118
  "-",
128
119
  removedCount
129
120
  ] })