@icen.ai/ui 0.4.0 → 0.8.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 (155) hide show
  1. package/AGENTS.md +256 -0
  2. package/README.md +47 -13
  3. package/dist/base.css +31 -4
  4. package/dist/behaviors/accordion.d.mts +4 -0
  5. package/dist/behaviors/accordion.mjs +4 -3
  6. package/dist/behaviors/ai-chat.d.mts +57 -0
  7. package/dist/behaviors/ai-chat.mjs +557 -0
  8. package/dist/behaviors/ai-composer.d.mts +112 -0
  9. package/dist/behaviors/ai-composer.mjs +2032 -0
  10. package/dist/behaviors/ai-core.d.mts +151 -0
  11. package/dist/behaviors/ai-core.mjs +491 -0
  12. package/dist/behaviors/ai-diff.d.mts +53 -0
  13. package/dist/behaviors/ai-diff.mjs +282 -0
  14. package/dist/behaviors/ai-panel.d.mts +98 -0
  15. package/dist/behaviors/ai-panel.mjs +1012 -0
  16. package/dist/behaviors/ai-provider.d.mts +198 -0
  17. package/dist/behaviors/ai-provider.mjs +1055 -0
  18. package/dist/behaviors/ai-tool.d.mts +18 -0
  19. package/dist/behaviors/ai-tool.mjs +2125 -0
  20. package/dist/behaviors/ai-tools.d.mts +81 -0
  21. package/dist/behaviors/ai-tools.mjs +1658 -0
  22. package/dist/behaviors/back-top.d.mts +20 -0
  23. package/dist/behaviors/back-top.mjs +101 -0
  24. package/dist/behaviors/carousel.d.mts +4 -0
  25. package/dist/behaviors/carousel.mjs +34 -16
  26. package/dist/behaviors/charts.d.mts +250 -0
  27. package/dist/behaviors/charts.mjs +1301 -448
  28. package/dist/behaviors/command-palette.d.mts +8 -0
  29. package/dist/behaviors/command-palette.mjs +189 -0
  30. package/dist/behaviors/context-menu.d.mts +36 -0
  31. package/dist/behaviors/context-menu.mjs +6 -2
  32. package/dist/behaviors/copy.d.mts +4 -0
  33. package/dist/behaviors/copy.mjs +7 -6
  34. package/dist/behaviors/datatable.d.mts +78 -0
  35. package/dist/behaviors/datatable.mjs +54 -11
  36. package/dist/behaviors/date-picker.d.mts +4 -0
  37. package/dist/behaviors/date-picker.mjs +296 -0
  38. package/dist/behaviors/dropdown.d.mts +4 -0
  39. package/dist/behaviors/dropdown.mjs +7 -3
  40. package/dist/behaviors/input.d.mts +4 -0
  41. package/dist/behaviors/input.mjs +184 -8
  42. package/dist/behaviors/modal.d.mts +11 -0
  43. package/dist/behaviors/modal.mjs +11 -6
  44. package/dist/behaviors/nav.d.mts +7 -0
  45. package/dist/behaviors/nav.mjs +25 -9
  46. package/dist/behaviors/notification.d.mts +172 -0
  47. package/dist/behaviors/notification.mjs +908 -0
  48. package/dist/behaviors/popover.d.mts +46 -0
  49. package/dist/behaviors/popover.mjs +2 -1
  50. package/dist/behaviors/select.d.mts +4 -0
  51. package/dist/behaviors/select.mjs +268 -34
  52. package/dist/behaviors/sidebar.d.mts +4 -0
  53. package/dist/behaviors/sidebar.mjs +4 -3
  54. package/dist/behaviors/slider.d.mts +4 -0
  55. package/dist/behaviors/slider.mjs +4 -3
  56. package/dist/behaviors/split-pane.d.mts +4 -0
  57. package/dist/behaviors/split-pane.mjs +102 -0
  58. package/dist/behaviors/tabs.d.mts +8 -0
  59. package/dist/behaviors/tabs.mjs +44 -19
  60. package/dist/behaviors/tag-input.d.mts +4 -0
  61. package/dist/behaviors/tag-input.mjs +12 -3
  62. package/dist/behaviors/theme.d.mts +25 -0
  63. package/dist/behaviors/theme.mjs +3 -1
  64. package/dist/behaviors/toast.d.mts +26 -0
  65. package/dist/behaviors/toast.mjs +24 -18
  66. package/dist/behaviors/tree.d.mts +4 -0
  67. package/dist/behaviors/tree.mjs +4 -3
  68. package/dist/behaviors/upload.d.mts +4 -0
  69. package/dist/behaviors/upload.mjs +205 -17
  70. package/dist/components/ai-chat.css +1037 -0
  71. package/dist/components/ai-chat.mjs +3 -0
  72. package/dist/components/ai-composer.mjs +3 -0
  73. package/dist/components/ai-context.mjs +2 -0
  74. package/dist/components/ai-diff.css +311 -0
  75. package/dist/components/ai-diff.mjs +3 -0
  76. package/dist/components/ai-files.mjs +3 -0
  77. package/dist/components/ai-message.mjs +3 -0
  78. package/dist/components/ai-panel.css +682 -0
  79. package/dist/components/ai-reasoning.mjs +3 -0
  80. package/dist/components/ai-subagent.mjs +2 -0
  81. package/dist/components/ai-todo.mjs +2 -0
  82. package/dist/components/ai-tool-call.mjs +2 -0
  83. package/dist/components/ai-tool.css +532 -0
  84. package/dist/components/ai-usage.mjs +3 -0
  85. package/dist/components/back-top.css +88 -0
  86. package/dist/components/back-top.mjs +3 -0
  87. package/dist/components/badge.css +127 -0
  88. package/dist/components/badge.mjs +2 -0
  89. package/dist/components/breadcrumb.css +53 -0
  90. package/dist/components/btn.css +4 -7
  91. package/dist/components/card.css +66 -1
  92. package/dist/components/chart-bar.css +10 -0
  93. package/dist/components/chart-calendar.mjs +5 -0
  94. package/dist/components/chart-gauge.css +1 -1
  95. package/dist/components/chart-heatmap.css +40 -0
  96. package/dist/components/chart-scatter.css +24 -0
  97. package/dist/components/chart-scatter.mjs +4 -0
  98. package/dist/components/charts.css +86 -1
  99. package/dist/components/charts.mjs +1 -0
  100. package/dist/components/command-palette.css +246 -0
  101. package/dist/components/command-palette.mjs +3 -0
  102. package/dist/components/content.css +221 -8
  103. package/dist/components/copy.css +93 -0
  104. package/dist/components/copy.mjs +3 -0
  105. package/dist/components/datatable.css +4 -8
  106. package/dist/components/date-picker.css +240 -0
  107. package/dist/components/date-picker.mjs +3 -0
  108. package/dist/components/empty.css +69 -3
  109. package/dist/components/feedback.css +241 -10
  110. package/dist/components/form.css +129 -11
  111. package/dist/components/form.mjs +2 -0
  112. package/dist/components/input.css +25 -2
  113. package/dist/components/layout.css +36 -36
  114. package/dist/components/media.css +153 -6
  115. package/dist/components/menu.css +2 -2
  116. package/dist/components/modal.css +1 -1
  117. package/dist/components/nav.css +106 -2
  118. package/dist/components/notification.css +387 -0
  119. package/dist/components/notification.mjs +3 -0
  120. package/dist/components/pagination.css +1 -1
  121. package/dist/components/panel.css +104 -9
  122. package/dist/components/pill.css +82 -12
  123. package/dist/components/scroll-area.css +112 -0
  124. package/dist/components/scroll-area.mjs +2 -0
  125. package/dist/components/segmented.css +80 -5
  126. package/dist/components/segmented.mjs +1 -0
  127. package/dist/components/select.css +104 -17
  128. package/dist/components/sidebar.css +119 -1
  129. package/dist/components/slider.css +113 -0
  130. package/dist/components/split-pane.css +111 -0
  131. package/dist/components/split-pane.mjs +3 -0
  132. package/dist/components/stat.css +131 -12
  133. package/dist/components/steps.css +98 -1
  134. package/dist/components/switch.css +145 -7
  135. package/dist/components/table.css +111 -29
  136. package/dist/components/tabs.css +132 -22
  137. package/dist/components/tag-input.css +4 -4
  138. package/dist/components/tag.css +164 -0
  139. package/dist/components/tag.mjs +2 -0
  140. package/dist/components/toast.css +122 -5
  141. package/dist/components/toolbar.css +101 -0
  142. package/dist/components/toolbar.mjs +2 -0
  143. package/dist/components/tooltip.css +2 -2
  144. package/dist/components/upload.css +61 -4
  145. package/dist/index.d.mts +37 -0
  146. package/dist/index.mjs +9409 -929
  147. package/dist/registry.json +176 -4
  148. package/dist/retro-effects.css +21 -17
  149. package/dist/tokens/colors.css +4 -1
  150. package/dist/tokens/retro-effects.css +21 -17
  151. package/dist/tokens/style-profiles.css +21 -0
  152. package/dist/tokens.css +25 -1
  153. package/dist/ui.css +9616 -2839
  154. package/docs/spec/ai-native.md +659 -0
  155. package/package.json +15 -5
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * 完整契约:
7
7
  * <div class="toast-container" role="status" aria-live="polite">
8
- * <div class="toast [ok|err|warn]" role="status|alert">
8
+ * <div class="toast [toast--success|toast--error|toast--warning|toast--info]" role="status|alert">
9
9
  * <span class="toast-msg">文本</span>
10
10
  * <button class="toast-action">撤销</button> ← 可选 action
11
11
  * </div>
@@ -28,6 +28,8 @@
28
28
 
29
29
  .toast {
30
30
  pointer-events: auto;
31
+ position: relative;
32
+ overflow: hidden;
31
33
  display: inline-flex;
32
34
  align-items: center;
33
35
  gap: var(--density-space-sm);
@@ -45,9 +47,10 @@
45
47
  }
46
48
 
47
49
  /* 语义色:左缘 3px 强调 */
48
- .toast.ok { border-left-color: var(--token-success); }
49
- .toast.err { border-left-color: var(--token-error); }
50
- .toast.warn { border-left-color: var(--token-warning); }
50
+ .toast--success { border-left-color: var(--token-success); }
51
+ .toast--error { border-left-color: var(--token-error); }
52
+ .toast--warning { border-left-color: var(--token-warning); }
53
+ .toast--info { border-left-color: var(--token-info); }
51
54
 
52
55
  .toast-msg {
53
56
  flex: 1;
@@ -77,7 +80,121 @@
77
80
  box-shadow: var(--icen-ring);
78
81
  }
79
82
 
80
- .toast.leaving {
83
+ /* ── 增强 ── */
84
+
85
+ /* 语义图标 */
86
+ .toast-icon {
87
+ flex-shrink: 0;
88
+ display: inline-flex;
89
+ align-items: center;
90
+ justify-content: center;
91
+ color: var(--token-text-faint);
92
+ }
93
+ .toast-icon svg { width: 16px; height: 16px; }
94
+ .toast--success .toast-icon { color: var(--token-success); }
95
+ .toast--error .toast-icon { color: var(--token-error); }
96
+ .toast--warning .toast-icon { color: var(--token-warning); }
97
+ .toast--info .toast-icon { color: var(--token-info); }
98
+
99
+ /* 关闭按钮 */
100
+ .toast-close {
101
+ flex-shrink: 0;
102
+ display: inline-flex;
103
+ align-items: center;
104
+ justify-content: center;
105
+ width: 20px;
106
+ height: 20px;
107
+ padding: 0;
108
+ border: 0;
109
+ border-radius: var(--radius-xs);
110
+ background: transparent;
111
+ color: var(--token-text-faint);
112
+ cursor: pointer;
113
+ transition: color var(--icen-tx-fast), background-color var(--icen-tx-fast);
114
+ }
115
+ .toast-close:hover {
116
+ color: var(--token-text);
117
+ background: var(--token-fill-1);
118
+ }
119
+ .toast-close svg { width: 12px; height: 12px; }
120
+
121
+ /* 富内容(标题 + 正文) */
122
+ .toast-content {
123
+ flex: 1;
124
+ min-width: 0;
125
+ }
126
+ .toast-title {
127
+ font-size: var(--density-font-size-md);
128
+ font-weight: 500;
129
+ color: var(--token-text);
130
+ line-height: 1.4;
131
+ }
132
+ .toast-body {
133
+ font-size: var(--density-font-size-sm);
134
+ color: var(--token-text-muted);
135
+ margin-top: 2px;
136
+ line-height: 1.5;
137
+ }
138
+
139
+ /* 超时进度条 */
140
+ .toast-progress {
141
+ position: absolute;
142
+ bottom: 0;
143
+ left: 0;
144
+ right: 0;
145
+ height: 2px;
146
+ background: transparent;
147
+ overflow: hidden;
148
+ border-radius: 0 0 var(--radius-sm) var(--radius-sm);
149
+ }
150
+ .toast-progress-fill {
151
+ height: 100%;
152
+ background: var(--token-accent);
153
+ transform-origin: left;
154
+ animation: toast-countdown linear forwards;
155
+ }
156
+ .toast--success .toast-progress-fill { background: var(--token-success); }
157
+ .toast--error .toast-progress-fill { background: var(--token-error); }
158
+ .toast--warning .toast-progress-fill { background: var(--token-warning); }
159
+ .toast--info .toast-progress-fill { background: var(--token-info); }
160
+ @keyframes toast-countdown {
161
+ from { transform: scaleX(1); }
162
+ to { transform: scaleX(0); }
163
+ }
164
+
165
+ /* 容器定位变体 */
166
+ .toast-container[data-position='top-left'] {
167
+ right: auto;
168
+ bottom: auto;
169
+ top: var(--density-space-md);
170
+ left: var(--density-space-md);
171
+ align-items: flex-start;
172
+ }
173
+ .toast-container[data-position='top-right'] {
174
+ bottom: auto;
175
+ top: var(--density-space-md);
176
+ }
177
+ .toast-container[data-position='top-center'] {
178
+ right: auto;
179
+ bottom: auto;
180
+ top: var(--density-space-md);
181
+ left: 50%;
182
+ transform: translateX(-50%);
183
+ align-items: center;
184
+ }
185
+ .toast-container[data-position='bottom-left'] {
186
+ right: auto;
187
+ left: var(--density-space-md);
188
+ align-items: flex-start;
189
+ }
190
+ .toast-container[data-position='bottom-center'] {
191
+ right: auto;
192
+ left: 50%;
193
+ transform: translateX(-50%);
194
+ align-items: center;
195
+ }
196
+
197
+ .toast.is-leaving {
81
198
  opacity: 0;
82
199
  transform: translateY(8px);
83
200
  transition:
@@ -0,0 +1,101 @@
1
+ /*
2
+ * @icen.ai/ui — Component: toolbar(工具条)
3
+ *
4
+ * 横向承载按钮 / 控件的容器,常用于编辑器顶栏、列表上方操作行、表格批量操作条。
5
+ * 与 segmented 的区别:
6
+ * - segmented = 紧贴的互斥分段选择
7
+ * - toolbar = 宽松的按钮/控件容器,可分组、可分隔、可换行
8
+ *
9
+ * 完整契约:
10
+ * <div class="toolbar [--sm|--lg] [--wrap] [--borderless]">
11
+ * <button class="btn btn-sm">…</button>
12
+ * <div class="toolbar-group">
13
+ * <button class="btn btn-sm">…</button>
14
+ * <button class="btn btn-sm">…</button>
15
+ * </div>
16
+ * <span class="toolbar-separator"></span>
17
+ * <div class="toolbar-spacer"></div> ← 弹性占位,把右侧元素推到末尾
18
+ * <span class="toolbar-label">3 项</span>
19
+ * </div>
20
+ *
21
+ * 编辑器顶栏(与 fixed 子项配套):
22
+ * <div class="toolbar toolbar--elevated">
23
+ * …
24
+ * </div>
25
+ */
26
+
27
+ .toolbar {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: var(--density-space-sm);
31
+ flex-wrap: nowrap;
32
+ padding: var(--density-space-sm);
33
+ background: var(--token-bg-soft);
34
+ border: 1px solid var(--token-line-soft);
35
+ border-radius: var(--radius-md);
36
+ }
37
+ .toolbar--wrap { flex-wrap: wrap; }
38
+ .toolbar--borderless {
39
+ background: transparent;
40
+ border-color: transparent;
41
+ padding: 0;
42
+ }
43
+ .toolbar--elevated {
44
+ background: var(--token-card-strong);
45
+ border-color: var(--token-outline-soft);
46
+ box-shadow: var(--token-shadow-elevated);
47
+ }
48
+
49
+ /* ── 尺寸 ── */
50
+ .toolbar--sm { padding: 4px var(--density-space-xs); gap: var(--density-space-xs); }
51
+ .toolbar--lg { padding: var(--density-space-md); gap: var(--density-space-md); }
52
+
53
+ /* ── 分组(紧贴一组按钮) ── */
54
+ .toolbar-group {
55
+ display: inline-flex;
56
+ align-items: center;
57
+ gap: 2px;
58
+ padding: 2px;
59
+ background: var(--token-fill-1);
60
+ border-radius: var(--radius-sm);
61
+ }
62
+ .toolbar-group > .btn { border-color: transparent; background: transparent; }
63
+ .toolbar-group > .btn:hover { background: var(--token-fill-2); }
64
+
65
+ /* ── 分隔符 ── */
66
+ .toolbar-separator {
67
+ width: 1px;
68
+ height: 20px;
69
+ background: var(--token-line-soft);
70
+ flex-shrink: 0;
71
+ }
72
+ .toolbar--sm .toolbar-separator { height: 16px; }
73
+ .toolbar--lg .toolbar-separator { height: 24px; }
74
+
75
+ /* 水平工具条里的垂直分隔(用于纵向 toolbar) */
76
+ .toolbar--vertical { flex-direction: column; align-items: stretch; }
77
+ .toolbar--vertical .toolbar-separator {
78
+ width: auto;
79
+ height: 1px;
80
+ margin: var(--density-space-xs) 0;
81
+ }
82
+
83
+ /* ── 弹性占位 ── */
84
+ .toolbar-spacer { flex: 1 1 auto; min-width: var(--density-space-xs); }
85
+
86
+ /* ── 内嵌文字(计数 / 状态) ── */
87
+ .toolbar-label {
88
+ font-size: var(--density-font-size-sm);
89
+ color: var(--token-text-muted);
90
+ font-variant-numeric: tabular-nums;
91
+ white-space: nowrap;
92
+ }
93
+ .toolbar-label.accent { color: var(--token-accent); }
94
+
95
+ @media (max-width: 480px) {
96
+ .toolbar { flex-wrap: wrap; }
97
+ }
98
+
99
+ @media (prefers-reduced-motion: reduce) {
100
+ .toolbar * { transition: none !important; }
101
+ }
@@ -0,0 +1,2 @@
1
+ // @icen.ai/ui — kit: toolbar(CSS + behavior 一行入口;构建产物,勿手改)
2
+ import './toolbar.css';
@@ -7,7 +7,7 @@
7
7
  * 无障碍:键盘 :focus-visible 立即出现(无延迟),鼠标 hover 延迟 400ms。
8
8
  */
9
9
 
10
- [data-tooltip] { position: relative; }
10
+ [data-tooltip] { position: relative; --tooltip-delay: 400ms; }
11
11
 
12
12
  [data-tooltip]::after {
13
13
  content: attr(data-tooltip);
@@ -32,7 +32,7 @@
32
32
  transition:
33
33
  opacity var(--icen-tx-fast),
34
34
  transform var(--icen-tx-fast);
35
- transition-delay: 400ms;
35
+ transition-delay: var(--tooltip-delay);
36
36
 
37
37
  /* 默认:上方、水平居中 */
38
38
  bottom: calc(100% + 6px);
@@ -130,12 +130,43 @@
130
130
  border-radius: var(--radius-sm);
131
131
  font-size: var(--density-font-size-sm);
132
132
  animation: upload-item-in var(--icen-tx-fast);
133
+ transition: border-color var(--icen-tx-fast);
133
134
  }
134
- .upload-list-item-name {
135
+ .upload-list-item:hover {
136
+ border-color: var(--token-outline);
137
+ }
138
+ .upload-list-item-thumb {
139
+ width: 32px;
140
+ height: 32px;
141
+ object-fit: cover;
142
+ border-radius: var(--radius-xs);
143
+ flex-shrink: 0;
144
+ background: var(--token-bg-soft);
145
+ }
146
+ .upload-list-item-icon {
147
+ display: inline-flex;
148
+ align-items: center;
149
+ justify-content: center;
150
+ width: 32px;
151
+ height: 32px;
152
+ flex-shrink: 0;
153
+ border-radius: var(--radius-xs);
154
+ background: var(--token-fill-1);
155
+ color: var(--token-text-faint);
156
+ }
157
+ .upload-list-item-icon svg { width: 16px; height: 16px; }
158
+ .upload-list-item-info {
135
159
  flex: 1;
160
+ min-width: 0;
161
+ display: flex;
162
+ flex-direction: column;
163
+ gap: 1px;
164
+ }
165
+ .upload-list-item-name {
136
166
  overflow: hidden;
137
167
  text-overflow: ellipsis;
138
168
  white-space: nowrap;
169
+ color: var(--token-text);
139
170
  }
140
171
  .upload-list-item-size {
141
172
  color: var(--token-text-faint);
@@ -147,20 +178,46 @@
147
178
  background: transparent;
148
179
  cursor: pointer;
149
180
  color: var(--token-text-faint);
150
- padding: 2px;
181
+ padding: 4px;
151
182
  border-radius: var(--radius-full);
152
183
  display: inline-flex;
184
+ align-items: center;
185
+ justify-content: center;
186
+ flex-shrink: 0;
153
187
  transition: color var(--icen-tx-fast), background-color var(--icen-tx-fast);
154
188
  }
155
189
  .upload-list-item-x:hover {
156
- color: var(--token-text);
157
- background: var(--token-fill-2);
190
+ color: var(--token-error);
191
+ background: var(--token-error-muted);
158
192
  }
159
193
  .upload-list-item-x:focus-visible {
160
194
  outline: none;
161
195
  box-shadow: var(--icen-ring);
162
196
  }
163
197
 
198
+ /* 进度条(behavior 可选注入 .upload-list-item-progress) */
199
+ .upload-list-item-progress {
200
+ height: 2px;
201
+ width: 100%;
202
+ background: var(--token-fill-2);
203
+ border-radius: var(--radius-full);
204
+ overflow: hidden;
205
+ margin-top: 2px;
206
+ }
207
+ .upload-list-item-progress-bar {
208
+ height: 100%;
209
+ background: var(--token-accent);
210
+ border-radius: var(--radius-full);
211
+ transition: width var(--icen-tx-normal) var(--ease-out);
212
+ }
213
+ .upload-list-item.is-error {
214
+ border-color: var(--token-error);
215
+ }
216
+ .upload-list-item.is-error .upload-list-item-icon {
217
+ background: var(--token-error-muted);
218
+ color: var(--token-error);
219
+ }
220
+
164
221
  @keyframes upload-item-in {
165
222
  from { opacity: 0; transform: translateY(-4px); }
166
223
  to { opacity: 1; transform: translateY(0); }
@@ -0,0 +1,37 @@
1
+ export { PRESETS, STORAGE_KEY, STYLES, ThemeState, applyTheme, getDefaultTheme, getTheme, initTheme, setTheme, toggleDark } from './behaviors/theme.js';
2
+ export { ToastConfig, ToastKind, ToastOptions, toast } from './behaviors/toast.js';
3
+ export { initTabs } from './behaviors/tabs.js';
4
+ export { initCopy } from './behaviors/copy.js';
5
+ export { initInput } from './behaviors/input.js';
6
+ export { initSelect } from './behaviors/select.js';
7
+ export { initSlider } from './behaviors/slider.js';
8
+ export { initTagInput } from './behaviors/tag-input.js';
9
+ export { initUpload } from './behaviors/upload.js';
10
+ export { closeModal, initModal, openModal } from './behaviors/modal.js';
11
+ export { initDropdown } from './behaviors/dropdown.js';
12
+ export { ContextMenuEntry, ContextMenuHeader, ContextMenuItem, ContextMenuOptions, ContextMenuSeparator, closeMenu, initContextMenu, openContextMenu, registerContextMenu } from './behaviors/context-menu.js';
13
+ export { OpenPopoverOptions, PopoverAlign, PopoverLayout, PopoverLayoutOptions, PopoverRect, PopoverSide, PopoverViewport, closePopover, computePopoverLayout, openPopover } from './behaviors/popover.js';
14
+ export { initAccordion } from './behaviors/accordion.js';
15
+ export { initTree } from './behaviors/tree.js';
16
+ export { initCarousel } from './behaviors/carousel.js';
17
+ export { ChartCalendarOptions, ChartChromeOptions, ChartDims, ChartEventDetail, ChartEventName, ChartGaugeOptions, ChartHandle, ChartHeatmapOptions, ChartLegendState, ChartLineOptions, ChartMarkData, ChartPointSpec, ChartRadarOptions, ChartScatterOptions, ChartSegment, ChartSegmentsOptions, ChartSeriesOptions, ChartSeriesSpec, ChartSpec, ChartTone, ChartType, ChartVBarOptions, ChartValueFormat, HeatmapDatum, RadarSeries, chartFormatValue, inferChartType, normalizeChartSpec, renderArea, renderCalendar, renderChart, renderDonut, renderGauge, renderHBar, renderHeatmap, renderLine, renderRadar, renderScatter, renderSparkline, renderStack, renderVBar } from './behaviors/charts.js';
18
+ export { initNav } from './behaviors/nav.js';
19
+ export { initSidebar } from './behaviors/sidebar.js';
20
+ export { NotificationAction, NotificationCenterHandle, NotificationConfig, NotificationConfirmOptions, NotificationHandle, NotificationKind, NotificationOptions, NotificationPushInput, NotificationUpdatePatch, createNotificationCenter, initNotification, notify } from './behaviors/notification.js';
21
+ export { initBackTop } from './behaviors/back-top.js';
22
+ export { closeCommandPalette, initCommandPalette, openCommandPalette } from './behaviors/command-palette.js';
23
+ export { initDatePicker } from './behaviors/date-picker.js';
24
+ export { initSplitPane } from './behaviors/split-pane.js';
25
+ export { TableColumn, TableHandle, TableOptions, createTable } from './behaviors/datatable.js';
26
+ export { AiAudioPart, AiContent, AiContentPart, AiFilePart, AiImagePart, AiKindDef, AiKindTint, AiMediaPart, AiResourceLinkPart, AiStatus, AiTextPart, AiToolCallModel, AiUsage, AiVideoPart, aiContentUrl, aiStatusLabel, contentToText, contextEstimate, estimateTokens, formatDuration, formatTokens, getAiKind, inferKind, isAiContentPart, isAiContentPartArray, normalizeContentParts, normalizeMcpContent, normalizeToolCall, normalizeUsage, registerAiKind, svgIcon } from './behaviors/ai-core.js';
27
+ export { AiMessageHandle, AiMessageModel, AiStreamHandle, createAiStream, initAiChat, renderAiContentPart, renderAiMessage } from './behaviors/ai-chat.js';
28
+ export { AiComposerBindOpts, AiComposerBinding, AiComposerCommand, AiComposerCurrentModel, AiComposerRefKind, AiComposerRefSource, AiProviderModelOption, AiProviderOption, bindComposer, initAiComposer, setComposerCommands, setComposerModels, setComposerRefs, setComposerRunning, setComposerTodo, setComposerUsage } from './behaviors/ai-composer.js';
29
+ export { AiSubagentHandle, AiToolCallHandle, initAiSubagent, initAiTool, renderAiSubagent, renderAiToolCall } from './behaviors/ai-tool.js';
30
+ export { AiDiffFile, AiDiffFileStatus, AiDiffHunk, AiDiffLine, AiDiffModel, initAiDiff, parseUnifiedDiff, renderAiDiff } from './behaviors/ai-diff.js';
31
+ export { AiAuditRenderOpts, AiContextFile, AiContextMcpServer, AiContextModel, AiContextSkill, AiTodoItem, AiUsageRenderOpts, AiUsageRingOpts, initAiContext, initAiTodo, renderAiAudit, renderAiContext, renderAiTodo, renderAiUsage, renderAiUsageRing } from './behaviors/ai-panel.js';
32
+ export { AiAuditEntry, AiAuditTotals, AiAuditor, AiAuditorOptions, AiChatMessage, AiChatRequest, AiChatResult, AiChatRole, AiClient, AiClientConfig, AiClientOptions, AiDoneEventDetail, AiPricing, AiProviderDef, AiProviderError, AiProviderModel, AiStreamChunk, AiStreamSession, createAiAuditor, createAiClient, estimateCost, getAiProvider, listAiProviders, registerAiProvider } from './behaviors/ai-provider.js';
33
+ export { AiToolArea, AiToolAreaOptions, AiToolDef, AiToolRecord, aiToolsManifest, aiToolsToMcp, aiToolsToOpenAI, createAiToolArea, getAiTool, listAiTools, parseAiToolArgs, registerAiTool, unregisterAiTool } from './behaviors/ai-tools.js';
34
+
35
+ declare const VERSION: string;
36
+
37
+ export { VERSION };