@admin-layout/tailwind-ui 12.2.4-alpha.16 → 12.2.4-alpha.17

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.
@@ -1,10 +1,9 @@
1
1
  import React from 'react';
2
2
  import type { InputToolBarProps } from './types';
3
3
  /**
4
- * InputToolBar – horizontal toolbar for text input UIs (e.g. chat/composer).
5
- * Data and behavior are passed via props; items can be enabled/disabled, and custom left/right content can be injected.
6
- * Layout: left (mode toggles + template pill), flexible middle, right (attach, capture, mic/send).
4
+ * InputToolBar – UI only. Renders toolbar and optional built-in textarea from props.
5
+ * All data (leftItems, rightItems, templateButton, inputConfig, micSendButton) and behavior (onClick, onChange, etc.) come from props.
7
6
  */
8
- export declare function InputToolBar({ className, leftItems, rightItems, templateButton, leftCustomRender, rightCustomRender, micSendButton, children, }: InputToolBarProps): React.JSX.Element;
7
+ export declare function InputToolBar({ className, inputConfig, topContent, leftItems: leftItemsProp, rightItems: rightItemsProp, templateButton, templateModalConfig, templateModalRender, leftCustomRender, rightCustomRender, micSendButton, children, onContainerClick, }: InputToolBarProps): React.JSX.Element;
9
8
  export default InputToolBar;
10
9
  //# sourceMappingURL=InputToolBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputToolBar.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/InputToolBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EACR,iBAAiB,EAMpB,MAAM,SAAS,CAAC;AAuMjB;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EACzB,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,QAAQ,GACX,EAAE,iBAAiB,qBAgCnB;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"InputToolBar.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/InputToolBar.tsx"],"names":[],"mappings":"AAeA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EACR,iBAAiB,EAQpB,MAAM,SAAS,CAAC;AAgajB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EACzB,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,cAAc,EAC1B,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,gBAAgB,GACnB,EAAE,iBAAiB,qBA+EnB;AAED,eAAe,YAAY,CAAC"}
@@ -1,4 +1,4 @@
1
- import {Lightbulb,Zap,Search,Mic,Paperclip,Camera,Tag,ArrowUpRight}from'lucide-react';import React__default from'react';import'../../utils/isBrowser/index.js';import {cn}from'../../utils/util.js';import'fast-deep-equal/react.js';const iconSize = 'h-3.5 w-3.5';
1
+ import {Lightbulb,Zap,Search,Mic,Paperclip,Image,Camera,WandSparkles,X,Layout,Check,StopCircle,ArrowUpRight}from'lucide-react';import React__default,{useState,useMemo}from'react';import'../../utils/isBrowser/index.js';import {cn}from'../../utils/util.js';import'fast-deep-equal/react.js';const iconSize = 'h-3.5 w-3.5';
2
2
  const iconSizeRight = 'h-4 w-4';
3
3
  const defaultLeftIconMap = {
4
4
  search: React__default.createElement(Search, {
@@ -13,7 +13,7 @@ const defaultLeftIconMap = {
13
13
  template: null // template is rendered as pill, not in icon group
14
14
  };
15
15
  const defaultRightIconMap = {
16
- tag: React__default.createElement(Tag, {
16
+ tag: React__default.createElement(WandSparkles, {
17
17
  className: iconSizeRight
18
18
  }),
19
19
  chip: React__default.createElement("svg", {
@@ -56,6 +56,9 @@ const defaultRightIconMap = {
56
56
  camera: React__default.createElement(Camera, {
57
57
  className: iconSizeRight
58
58
  }),
59
+ image: React__default.createElement(Image, {
60
+ className: iconSizeRight
61
+ }),
59
62
  attach: React__default.createElement(Paperclip, {
60
63
  className: iconSizeRight
61
64
  }),
@@ -67,18 +70,25 @@ function MicSendButton({
67
70
  hasContent,
68
71
  onSend,
69
72
  onMic,
70
- disabled
73
+ disabled,
74
+ isLoading,
75
+ onStop
71
76
  }) {
72
- const isSend = hasContent;
77
+ const isStop = isLoading === true;
78
+ const isSend = !isStop && hasContent;
73
79
  const base = 'inline-flex h-7 w-7 items-center justify-center rounded-2xl transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none bg-primary text-primary-foreground hover:bg-primary/90 active:bg-primary';
80
+ const handleClick = isStop ? onStop : isSend ? onSend : onMic;
81
+ const label = isStop ? 'Stop' : isSend ? 'Send' : 'Start voice input';
74
82
  return React__default.createElement("button", {
75
83
  type: "button",
76
- "aria-label": isSend ? 'Send' : 'Start voice input',
77
- title: isSend ? 'Send' : 'Start voice input',
78
- onClick: isSend ? onSend : onMic,
79
- disabled: disabled,
84
+ "aria-label": label,
85
+ title: label,
86
+ onClick: handleClick,
87
+ disabled: disabled && !isStop,
80
88
  className: base
81
- }, isSend ? React__default.createElement(ArrowUpRight, {
89
+ }, isStop ? React__default.createElement(StopCircle, {
90
+ className: iconSizeRight
91
+ }) : isSend ? React__default.createElement(ArrowUpRight, {
82
92
  className: iconSizeRight
83
93
  }) : React__default.createElement(Mic, {
84
94
  className: iconSizeRight
@@ -94,17 +104,25 @@ function ToolbarIconButton({
94
104
  if (item.customButton) {
95
105
  return React__default.createElement(React__default.Fragment, null, item.customButton);
96
106
  }
107
+ const isDisabled = item.disabled === true || item.loading === true;
97
108
  const isActive = item.active === true;
98
109
  const base = 'inline-flex h-7 w-7 items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:opacity-50 disabled:pointer-events-none';
99
110
  const leftVariant = isActive ? 'rounded-full border border-primary bg-primary text-primary-foreground hover:bg-primary/90' : 'rounded-full border border-primary/50 bg-card text-primary hover:border-primary hover:text-primary';
100
- const rightVariant = 'rounded-2xl text-muted-foreground hover:bg-secondary/70 active:bg-secondary';
111
+ const rightVariantDisabled = 'rounded-2xl text-muted-foreground/50 cursor-not-allowed disabled:pointer-events-auto';
112
+ const rightVariantActive = 'rounded-2xl text-primary hover:bg-secondary';
113
+ const rightVariantDefault = 'rounded-2xl text-muted-foreground hover:bg-secondary/70 active:bg-secondary';
114
+ const rightVariant = isDisabled ? rightVariantDisabled : isActive ? rightVariantActive : rightVariantDefault;
101
115
  return React__default.createElement("button", {
102
116
  type: "button",
103
117
  "aria-label": item.label,
104
118
  title: item.label,
105
119
  onClick: item.onClick,
120
+ disabled: isDisabled,
106
121
  className: cn(base, isLeftGroup ? leftVariant : rightVariant)
107
- }, icon);
122
+ }, item.loading ? React__default.createElement("div", {
123
+ className: "h-4 w-4 animate-spin rounded-full border-2 border-primary border-t-transparent",
124
+ "aria-hidden": true
125
+ }) : icon);
108
126
  }
109
127
  function LeftSection({
110
128
  leftItems,
@@ -136,16 +154,42 @@ function LeftSection({
136
154
  })))), hasTemplate && React__default.createElement(TemplatePill, {
137
155
  label: templateButton.label,
138
156
  count: templateButton.count,
157
+ selectedLabel: templateButton.selectedLabel,
139
158
  onClick: templateButton.onClick,
159
+ onClearTemplate: templateButton.onClearTemplate,
140
160
  disabled: templateButton.disabled
141
161
  }));
142
162
  }
143
163
  function TemplatePill({
144
164
  label,
145
165
  count,
166
+ selectedLabel,
146
167
  onClick,
168
+ onClearTemplate,
147
169
  disabled
148
170
  }) {
171
+ if (selectedLabel) {
172
+ return React__default.createElement("div", {
173
+ className: "flex items-center gap-1 px-2 py-1 rounded-full bg-primary/10 text-primary text-xs font-medium"
174
+ }, React__default.createElement("span", {
175
+ className: "truncate max-w-[120px]",
176
+ title: selectedLabel
177
+ }, selectedLabel), React__default.createElement("button", {
178
+ type: "button",
179
+ onClick: onClearTemplate,
180
+ className: "ml-1 hover:bg-primary/20 rounded-full p-0.5 transition-colors",
181
+ "aria-label": "Remove template",
182
+ disabled: disabled
183
+ }, React__default.createElement(X, {
184
+ className: "h-3 w-3"
185
+ })), React__default.createElement("button", {
186
+ type: "button",
187
+ onClick: onClick,
188
+ className: "ml-1 hover:bg-primary/20 rounded-full p-0.5 transition-colors text-[10px]",
189
+ "aria-label": "Change template",
190
+ disabled: disabled
191
+ }, "\u25BC"));
192
+ }
149
193
  const text = count != null && count > 0 ? `${label} (${count})` : label;
150
194
  return React__default.createElement("button", {
151
195
  type: "button",
@@ -170,7 +214,7 @@ function RightSection({
170
214
  const hasRight = filteredRight.length > 0 || micSendButton != null;
171
215
  if (!hasRight) return null;
172
216
  return React__default.createElement("div", {
173
- className: "flex flex-wrap items-center gap-1 text-muted-foreground"
217
+ className: "flex flex-wrap items-center gap-2 text-muted-foreground"
174
218
  }, filteredRight.map(item => React__default.createElement(ToolbarIconButton, {
175
219
  key: item.id,
176
220
  item: item,
@@ -179,40 +223,172 @@ function RightSection({
179
223
  hasContent: micSendButton.hasContent,
180
224
  onSend: micSendButton.onSend,
181
225
  onMic: micSendButton.onMic,
182
- disabled: micSendButton.disabled
226
+ disabled: micSendButton.disabled,
227
+ isLoading: micSendButton.isLoading,
228
+ onStop: micSendButton.onStop
183
229
  }));
184
230
  }
231
+ const defaultTextareaClassName = 'w-full outline-none border-none ring-0 focus:outline-none focus:ring-0 bg-transparent text-base text-foreground placeholder:text-muted-foreground disabled:opacity-50 resize-none overflow-y-auto max-h-[30vh] [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]';
232
+ function DefaultTemplateModal({
233
+ isOpen,
234
+ onClose,
235
+ templates,
236
+ selectedId,
237
+ onSelect,
238
+ suggestedId,
239
+ title = 'Choose Template'
240
+ }) {
241
+ const [searchQuery, setSearchQuery] = useState('');
242
+ const [categoryFilter, setCategoryFilter] = useState('All');
243
+ const categories = useMemo(() => {
244
+ const cats = new Set(templates.map(t => t.category || 'Other'));
245
+ return ['All', ...Array.from(cats).sort()];
246
+ }, [templates]);
247
+ const filteredTemplates = useMemo(() => {
248
+ return templates.filter(template => {
249
+ const searchLower = searchQuery.toLowerCase();
250
+ const matchesSearch = !searchQuery || template.label.toLowerCase().includes(searchLower) || (template.description || '').toLowerCase().includes(searchLower);
251
+ const matchesCategory = categoryFilter === 'All' || template.category === categoryFilter;
252
+ return matchesSearch && matchesCategory;
253
+ });
254
+ }, [templates, searchQuery, categoryFilter]);
255
+ if (!isOpen) return null;
256
+ function handleBackdropClick(e) {
257
+ if (e.target === e.currentTarget) onClose();
258
+ }
259
+ return React__default.createElement("div", {
260
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm p-4",
261
+ onClick: handleBackdropClick
262
+ }, React__default.createElement("div", {
263
+ className: "bg-card w-full max-w-[720px] max-h-[80vh] rounded-xl flex flex-col overflow-hidden border border-border shadow-xl"
264
+ }, React__default.createElement("div", {
265
+ className: "h-12 px-4 border-b border-border flex items-center justify-between shrink-0"
266
+ }, React__default.createElement("h2", {
267
+ className: "text-sm font-semibold text-foreground"
268
+ }, title), React__default.createElement("button", {
269
+ type: "button",
270
+ onClick: onClose,
271
+ className: "p-1.5 rounded-lg hover:bg-accent text-muted-foreground transition-colors focus:outline-none focus:ring-2 focus:ring-ring",
272
+ "aria-label": "Close"
273
+ }, React__default.createElement(X, {
274
+ className: "h-4 w-4"
275
+ }))), React__default.createElement("div", {
276
+ className: "p-4 border-b border-border space-y-3"
277
+ }, React__default.createElement("div", {
278
+ className: "relative"
279
+ }, React__default.createElement(Search, {
280
+ className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"
281
+ }), React__default.createElement("input", {
282
+ type: "text",
283
+ placeholder: "Search templates...",
284
+ value: searchQuery,
285
+ onChange: e => setSearchQuery(e.target.value),
286
+ className: "w-full pl-9 pr-3 py-2 border border-border rounded-lg bg-muted text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring"
287
+ })), React__default.createElement("div", {
288
+ className: "flex gap-1.5 flex-wrap"
289
+ }, categories.map(category => React__default.createElement("button", {
290
+ key: category,
291
+ type: "button",
292
+ onClick: () => setCategoryFilter(category),
293
+ className: cn('px-2.5 py-1 rounded-md text-xs font-medium transition-colors border', categoryFilter === category ? 'bg-primary/10 text-primary border-primary/20' : 'bg-card text-muted-foreground border-border hover:bg-muted hover:text-foreground')
294
+ }, category)))), React__default.createElement("div", {
295
+ className: "flex-1 overflow-y-auto p-4 min-h-0"
296
+ }, React__default.createElement("div", {
297
+ className: "grid grid-cols-1 sm:grid-cols-2 gap-3"
298
+ }, filteredTemplates.map(template => {
299
+ const isSelected = selectedId === template.id;
300
+ const isSuggested = suggestedId === template.id;
301
+ return React__default.createElement("button", {
302
+ key: template.id,
303
+ type: "button",
304
+ onClick: () => {
305
+ onSelect(template.id);
306
+ onClose();
307
+ },
308
+ className: cn('text-left p-3 rounded-lg border-2 transition-all', isSelected ? 'border-primary bg-primary/10 ring-2 ring-primary/20' : 'border-border hover:border-primary/50 hover:bg-muted/50', isSuggested && !isSelected && 'border-primary/30 bg-primary/5')
309
+ }, React__default.createElement("div", {
310
+ className: "flex items-start gap-2"
311
+ }, React__default.createElement("div", {
312
+ className: cn('p-1.5 rounded-md flex-shrink-0', isSelected ? 'bg-primary' : isSuggested ? 'bg-primary/20' : 'bg-secondary')
313
+ }, React__default.createElement(Layout, {
314
+ className: cn('h-3.5 w-3.5', isSelected ? 'text-primary-foreground' : isSuggested ? 'text-primary' : 'text-foreground')
315
+ })), React__default.createElement("div", {
316
+ className: "min-w-0 flex-1"
317
+ }, React__default.createElement("div", {
318
+ className: "flex items-center gap-1.5"
319
+ }, React__default.createElement("span", {
320
+ className: "font-medium text-sm text-foreground truncate"
321
+ }, template.label), isSelected && React__default.createElement(Check, {
322
+ className: "h-3.5 w-3.5 text-primary flex-shrink-0"
323
+ })), template.description && React__default.createElement("p", {
324
+ className: "text-xs text-muted-foreground mt-0.5 line-clamp-2"
325
+ }, template.description))));
326
+ })), filteredTemplates.length === 0 && React__default.createElement("div", {
327
+ className: "flex flex-col items-center justify-center py-12 text-center"
328
+ }, React__default.createElement(Search, {
329
+ className: "h-10 w-10 text-muted-foreground mb-3"
330
+ }), React__default.createElement("p", {
331
+ className: "text-sm font-medium text-foreground"
332
+ }, "No templates found"), React__default.createElement("p", {
333
+ className: "text-xs text-muted-foreground mt-1"
334
+ }, "Try adjusting search or filters")))));
335
+ }
185
336
  /**
186
- * InputToolBar – horizontal toolbar for text input UIs (e.g. chat/composer).
187
- * Data and behavior are passed via props; items can be enabled/disabled, and custom left/right content can be injected.
188
- * Layout: left (mode toggles + template pill), flexible middle, right (attach, capture, mic/send).
337
+ * InputToolBar – UI only. Renders toolbar and optional built-in textarea from props.
338
+ * All data (leftItems, rightItems, templateButton, inputConfig, micSendButton) and behavior (onClick, onChange, etc.) come from props.
189
339
  */
190
340
  function InputToolBar({
191
341
  className,
192
- leftItems,
193
- rightItems,
342
+ inputConfig,
343
+ topContent,
344
+ leftItems: leftItemsProp,
345
+ rightItems: rightItemsProp,
194
346
  templateButton,
347
+ templateModalConfig,
348
+ templateModalRender,
195
349
  leftCustomRender,
196
350
  rightCustomRender,
197
351
  micSendButton,
198
- children
352
+ children,
353
+ onContainerClick
199
354
  }) {
200
- const hasChildren = children != null;
201
- return React__default.createElement("section", {
202
- className: cn('w-full overflow-visible rounded-[24px] border border-border/70 bg-card shadow-md', hasChildren && 'cursor-text', className)
355
+ const leftItems = leftItemsProp ?? [];
356
+ const rightItems = rightItemsProp ?? [];
357
+ const hasInputContent = inputConfig != null || children != null;
358
+ const effectiveTopContent = inputConfig != null ? topContent : null;
359
+ const templateModal = templateModalConfig != null && templateModalConfig.isOpen ? templateModalRender != null ? templateModalRender(templateModalConfig) : React__default.createElement(DefaultTemplateModal, templateModalConfig) : null;
360
+ return React__default.createElement(React__default.Fragment, null, templateModal, React__default.createElement("section", {
361
+ className: cn('w-full overflow-visible rounded-[24px] border border-border/70 bg-card shadow-md', hasInputContent && 'cursor-text', className),
362
+ onClick: hasInputContent ? onContainerClick : undefined,
363
+ role: hasInputContent ? 'presentation' : undefined
203
364
  }, React__default.createElement("div", {
204
- className: cn('flex px-3 py-2', hasChildren ? 'flex-col gap-2' : 'flex-wrap items-center gap-3')
205
- }, hasChildren && React__default.createElement("div", {
206
- className: "min-w-0 flex-1"
207
- }, children), React__default.createElement("div", {
208
- className: cn('flex flex-wrap items-center gap-3', hasChildren && 'pt-2')
365
+ className: cn('flex px-3 py-2', hasInputContent ? 'flex-col gap-2' : 'flex-wrap items-center gap-3')
366
+ }, hasInputContent && React__default.createElement("div", {
367
+ className: "min-w-0 flex-1 flex flex-col gap-2"
368
+ }, effectiveTopContent, inputConfig != null ? React__default.createElement(React__default.Fragment, null, React__default.createElement("label", {
369
+ htmlFor: inputConfig.id ?? 'input-toolbar-input',
370
+ className: "sr-only"
371
+ }, inputConfig.placeholder ?? 'Message'), React__default.createElement("textarea", {
372
+ ref: inputConfig.inputRef,
373
+ id: inputConfig.id ?? 'input-toolbar-input',
374
+ name: inputConfig.name ?? 'query',
375
+ value: inputConfig.value,
376
+ onChange: inputConfig.onChange,
377
+ onKeyDown: inputConfig.onKeyDown,
378
+ onPaste: inputConfig.onPaste,
379
+ placeholder: inputConfig.placeholder ?? 'Ask anything...',
380
+ disabled: inputConfig.disabled,
381
+ rows: 1,
382
+ className: defaultTextareaClassName
383
+ })) : children), React__default.createElement("div", {
384
+ className: cn('flex flex-wrap items-center gap-3', hasInputContent && 'pt-2')
209
385
  }, React__default.createElement("div", {
210
- className: cn('flex items-center gap-2', hasChildren && 'mb-2')
386
+ className: cn('flex items-center gap-2', hasInputContent && 'mb-2')
211
387
  }, React__default.createElement(LeftSection, {
212
388
  leftItems: leftItems,
213
389
  templateButton: templateButton,
214
390
  leftCustomRender: leftCustomRender
215
- })), !hasChildren && React__default.createElement("div", {
391
+ })), !hasInputContent && React__default.createElement("div", {
216
392
  className: "min-w-0 flex-1",
217
393
  "aria-hidden": true
218
394
  }), React__default.createElement("div", {
@@ -221,5 +397,5 @@ function InputToolBar({
221
397
  rightItems: rightItems,
222
398
  rightCustomRender: rightCustomRender,
223
399
  micSendButton: micSendButton
224
- })))));
400
+ }))))));
225
401
  }export{InputToolBar,InputToolBar as default};//# sourceMappingURL=InputToolBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputToolBar.js","sources":["../../../src/components/InputToolBar/InputToolBar.tsx"],"sourcesContent":[null],"names":["React"],"mappings":";;;AAqNG,EAAA,MAAA,EAAAA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA;AACH,IAAA,SAAA,EAAA;AA2CA,GAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"InputToolBar.js","sources":["../../../src/components/InputToolBar/InputToolBar.tsx"],"sourcesContent":[null],"names":["React"],"mappings":";;AA6bG,MAAA,kBAAA,GAAA;AACH,EAAA,MAAA,EAAAA,cAAA,CAAA,aAAgB,CAAA,MAAY,EAAC;AA+F7B,IAAA,SAAA,EAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -8,7 +8,7 @@ export type RightItemOverrides = Partial<Record<RightToolbarItemId, Partial<Omit
8
8
  export declare function getDefaultLeftItems(overrides?: LeftItemOverrides): ToolbarItemConfig<LeftToolbarItemId>[];
9
9
  /**
10
10
  * Build default right toolbar items (tag, chip, camera, attach, mic). Omit or set enabled: false to hide.
11
- * Override label, enabled, active, onClick, icon, customButton per id.
11
+ * Override label, enabled, disabled, loading, active, onClick, icon, customButton per id.
12
12
  */
13
13
  export declare function getDefaultRightItems(overrides?: RightItemOverrides): ToolbarItemConfig<RightToolbarItemId>[];
14
14
  //# sourceMappingURL=defaults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAoBxF,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACvF,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACpC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACzF,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAazG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,CAa5G"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAqBxF,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACvF,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACpC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACzF,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAezG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,CAe5G"}
@@ -1,5 +1,5 @@
1
1
  const DEFAULT_LEFT_IDS = ['search', 'zap', 'lightbulb'];
2
- const DEFAULT_RIGHT_IDS = ['tag', 'chip', 'camera', 'attach', 'mic'];
2
+ const DEFAULT_RIGHT_IDS = ['tag', 'chip', 'camera', 'image', 'attach', 'mic'];
3
3
  const DEFAULT_LEFT_LABELS = {
4
4
  search: 'Chat mode',
5
5
  zap: 'Deep Search',
@@ -7,9 +7,10 @@ const DEFAULT_LEFT_LABELS = {
7
7
  template: 'Template'
8
8
  };
9
9
  const DEFAULT_RIGHT_LABELS = {
10
- tag: 'Tag',
11
- chip: 'Module',
10
+ tag: 'Enhance your prompt with AI',
11
+ chip: 'Configure chat model',
12
12
  camera: 'Capture image',
13
+ image: 'Insert image',
13
14
  attach: 'Attach file',
14
15
  mic: 'Mic / Send'
15
16
  };
@@ -24,6 +25,8 @@ function getDefaultLeftItems(overrides) {
24
25
  id,
25
26
  label: o?.label ?? DEFAULT_LEFT_LABELS[id],
26
27
  enabled: o?.enabled ?? true,
28
+ disabled: o?.disabled,
29
+ loading: o?.loading,
27
30
  active: o?.active,
28
31
  onClick: o?.onClick,
29
32
  icon: o?.icon,
@@ -33,7 +36,7 @@ function getDefaultLeftItems(overrides) {
33
36
  }
34
37
  /**
35
38
  * Build default right toolbar items (tag, chip, camera, attach, mic). Omit or set enabled: false to hide.
36
- * Override label, enabled, active, onClick, icon, customButton per id.
39
+ * Override label, enabled, disabled, loading, active, onClick, icon, customButton per id.
37
40
  */
38
41
  function getDefaultRightItems(overrides) {
39
42
  return DEFAULT_RIGHT_IDS.map(id => {
@@ -42,6 +45,8 @@ function getDefaultRightItems(overrides) {
42
45
  id,
43
46
  label: o?.label ?? DEFAULT_RIGHT_LABELS[id],
44
47
  enabled: o?.enabled ?? true,
48
+ disabled: o?.disabled,
49
+ loading: o?.loading,
45
50
  active: o?.active,
46
51
  onClick: o?.onClick,
47
52
  icon: o?.icon,
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sources":["../../../src/components/InputToolBar/defaults.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA,MAAA,gBAAc,GAAA,CAAA,QAAmB,EAAA,KAAA,EAAA,WAAoB,CAAA;AAoBrD,MAAM,0BAA0B,EAAA,MAC5B,EAAA,QAAO,EAAA,QAAA,EAAA,KAAmB,CAAA;AAE9B,MAAM;AAIN,EAAA,MAAA,EAAA,WAAA;;;AAGG,EAAA,QAAA,EAAA;AACH,CAAA;AAeA,MAAA,oBAAA,GAAA;;;AAGG,EAAA,MAAA,EAAA,eAAA;AACH,EAAA,MAAA,EAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"defaults.js","sources":["../../../src/components/InputToolBar/defaults.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA,MAAA,gBAAc,GAAA,CAAA,QAAmB,EAAA,KAAA,EAAA,WAAoB,CAAA;AAqBrD,MAAM,0BAA0B,EAAA,MAC5B,EAAA,QAAO,EAAA,OAAA,EAAA,QAAmB,EAAA;AAE9B,MAAM;AAIN,EAAA,MAAA,EAAA,WAAA;;;AAGG,EAAA,QAAA,EAAA;AACH,CAAA;AAiBA,MAAA,oBAAA,GAAA;;;AAGG,EAAA,MAAA,EAAA,eAAA;AACH,EAAA,KAAA,EAAA,cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  export { InputToolBar } from './InputToolBar';
2
2
  export { getDefaultLeftItems, getDefaultRightItems } from './defaults';
3
- export type { InputToolBarProps, LeftToolbarItemId, MicSendButtonConfig, RightToolbarItemId, TemplateButtonConfig, ToolbarItemConfig, } from './types';
3
+ export type { InputConfig, InputToolBarProps, LeftToolbarItemId, MicSendButtonConfig, RightToolbarItemId, TemplateButtonConfig, TemplateModalConfig, TemplateModalItem, TemplateModalRender, ToolbarItemConfig, } from './types';
4
4
  export type { LeftItemOverrides, RightItemOverrides } from './defaults';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EACR,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,GACpB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EACR,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GACpB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,61 +1,114 @@
1
1
  import type { ReactNode } from 'react';
2
+ /** Data-only config for built-in textarea. When provided, InputToolBar renders the textarea with default styling. */
3
+ export interface InputConfig {
4
+ value: string;
5
+ onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
6
+ placeholder?: string;
7
+ disabled?: boolean;
8
+ onKeyDown?: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;
9
+ onPaste?: (e: React.ClipboardEvent<HTMLTextAreaElement>) => void;
10
+ id?: string;
11
+ name?: string;
12
+ /** Optional ref for the textarea (e.g. for focus / height adjustment) */
13
+ inputRef?: React.RefObject<HTMLTextAreaElement | null>;
14
+ }
2
15
  /** Predefined toolbar action ids for left section (mode toggles, template) */
3
16
  export type LeftToolbarItemId = 'search' | 'zap' | 'lightbulb' | 'template';
4
- /** Predefined toolbar action ids for right section (attach, capture, mic/send) */
5
- export type RightToolbarItemId = 'tag' | 'chip' | 'camera' | 'attach' | 'mic';
17
+ /** Predefined toolbar action ids for right section. tag = enhance prompt, chip = configure model; both support enabled/disable and custom label, icon, onClick for app-specific use. */
18
+ export type RightToolbarItemId = 'tag' | 'chip' | 'camera' | 'image' | 'attach' | 'mic';
6
19
  /** Single toolbar button/item configuration */
7
20
  export interface ToolbarItemConfig<TId extends string = string> {
8
21
  /** Unique id for the item (used for enable/disable and callbacks) */
9
22
  id: TId;
10
23
  /** Icon (React node) or custom content for the button */
11
24
  icon?: ReactNode;
12
- /** Accessible label / title */
25
+ /** Accessible label / title (e.g. "Enhance your prompt with AI" when enabled, "Type something to enhance" when disabled) */
13
26
  label: string;
14
- /** Whether the item is enabled (default true) */
27
+ /** Whether the item is enabled (default true). When false, item is hidden. */
15
28
  enabled?: boolean;
16
- /** Whether the item is in active/selected state (dark background in UI) */
29
+ /** When true, button is visible but disabled (greyed out, not clickable). Use for e.g. "enhance" when input is empty. */
30
+ disabled?: boolean;
31
+ /** When true, show loading spinner and treat as disabled. Use for e.g. "enhance" while request is in flight. */
32
+ loading?: boolean;
33
+ /** Whether the item is in active/selected state (e.g. primary color + hover style for right items) */
17
34
  active?: boolean;
18
35
  /** Click handler */
19
36
  onClick?: () => void;
20
37
  /** Optional custom button element; when set, icon/label are ignored and this is rendered */
21
38
  customButton?: ReactNode;
22
39
  }
23
- /** When provided, the rightmost button shows Send (arrow) when hasContent is true, else Mic. Replaces any "mic" item in rightItems. */
40
+ /** When provided, the rightmost button shows Stop when loading, Send when hasContent, else Mic. Replaces any "mic" item in rightItems. */
24
41
  export interface MicSendButtonConfig {
25
- /** True when input has content – show send icon; otherwise show mic icon */
42
+ /** True when input has content – show send icon; otherwise show mic icon (unless loading). */
26
43
  hasContent: boolean;
27
44
  onSend: () => void;
28
45
  onMic: () => void;
29
46
  disabled?: boolean;
47
+ /** When true, show stop icon and call onStop on click. */
48
+ isLoading?: boolean;
49
+ onStop?: () => void;
30
50
  }
31
- /** Configuration for the optional "+ Template (N)" pill button */
51
+ /** Configuration for the optional template pill: either "+ Template (N)" or selected template name with remove/change */
32
52
  export interface TemplateButtonConfig {
33
- /** Button label prefix, e.g. "+ Template" */
53
+ /** Button label prefix when no selection, e.g. "+ Template" */
34
54
  label: string;
35
- /** Count to show in parentheses, e.g. (1) */
55
+ /** Count to show in parentheses when no selection, e.g. (1) */
36
56
  count?: number;
37
- /** Click handler */
57
+ /** When set, show selected template pill (name + remove + change) instead of "+ Template (N)" */
58
+ selectedLabel?: string | null;
59
+ /** Open template modal / change template (used for main pill click and for "change" when selected) */
38
60
  onClick?: () => void;
61
+ /** When template is selected, called when user clicks remove (X) */
62
+ onClearTemplate?: () => void;
39
63
  /** Disabled state */
40
64
  disabled?: boolean;
41
65
  }
42
- /** Props for the InputToolBar container (UI only; data passed via props) */
66
+ /** Minimal template item for the default template selection modal. Map your app's template type to this shape. */
67
+ export interface TemplateModalItem {
68
+ id: string;
69
+ label: string;
70
+ description?: string;
71
+ category?: string;
72
+ }
73
+ /** Config for the template selection modal. Pass data from props; InputToolBar renders default modal or custom via templateModalRender. */
74
+ export interface TemplateModalConfig {
75
+ isOpen: boolean;
76
+ onClose: () => void;
77
+ templates: TemplateModalItem[];
78
+ selectedId: string | null;
79
+ onSelect: (id: string) => void;
80
+ suggestedId?: string | null;
81
+ title?: string;
82
+ }
83
+ /** Render prop for custom template modal. When provided, used instead of the default modal UI. */
84
+ export type TemplateModalRender = (config: TemplateModalConfig) => ReactNode;
85
+ /** Props for the InputToolBar container. UI only: all data and behavior come from props. */
43
86
  export interface InputToolBarProps {
44
87
  /** Optional class name for the toolbar container */
45
88
  className?: string;
46
- /** Left section: predefined items (search, zap, lightbulb) + optional template pill. Pass enabled: false to hide/disable. */
89
+ /** When provided, InputToolBar renders a built-in textarea; pass only data (value, onChange, etc.). */
90
+ inputConfig?: InputConfig | null;
91
+ /** Optional content above the input when inputConfig is set (e.g. panels, banners). */
92
+ topContent?: ReactNode;
93
+ /** Left section: items and template pill. All data (active, onClick, etc.) from parent. */
47
94
  leftItems?: Array<ToolbarItemConfig<LeftToolbarItemId>>;
48
- /** Right section: tag, chip, camera, attach, mic. Pass enabled: false to hide/disable. */
95
+ /** Right section: items. All data (onClick, etc.) from parent. */
49
96
  rightItems?: Array<ToolbarItemConfig<RightToolbarItemId>>;
50
- /** Optional template pill button config (e.g. "+ Template (1)") */
97
+ /** Optional template pill (e.g. "+ Template (1)"). Data from parent. */
51
98
  templateButton?: TemplateButtonConfig | null;
52
- /** Custom content to render in the left section instead of leftItems (takes precedence) */
99
+ /** Template selection modal: pass data from props. When set, InputToolBar renders the modal (default UI or custom). */
100
+ templateModalConfig?: TemplateModalConfig | null;
101
+ /** When provided, used instead of the default template modal UI. Receives templateModalConfig. */
102
+ templateModalRender?: TemplateModalRender | null;
103
+ /** Custom content for the left section (overrides leftItems) */
53
104
  leftCustomRender?: ReactNode;
54
- /** Custom content to render in the right section instead of rightItems (takes precedence) */
105
+ /** Custom content for the right section (overrides rightItems and micSendButton) */
55
106
  rightCustomRender?: ReactNode;
56
- /** When set, shows Send (arrow) when input has content, else Mic. Replaces "mic" in rightItems. */
107
+ /** When set, rightmost button: Stop/Send/Mic; all data and handlers from parent. */
57
108
  micSendButton?: MicSendButtonConfig | null;
58
- /** Optional content in the middle (e.g. text input); can be used with or without left/right */
109
+ /** Optional content in the middle when not using inputConfig */
59
110
  children?: ReactNode;
111
+ /** Click on container (e.g. to focus input) */
112
+ onContainerClick?: (e: React.MouseEvent) => void;
60
113
  }
61
114
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,8EAA8E;AAC9E,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;AAE5E,kFAAkF;AAClF,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE9E,+CAA+C;AAC/C,MAAM,WAAW,iBAAiB,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IAC1D,qEAAqE;IACrE,EAAE,EAAE,GAAG,CAAC;IACR,yDAAyD;IACzD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4FAA4F;IAC5F,YAAY,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,uIAAuI;AACvI,MAAM,WAAW,mBAAmB;IAChC,4EAA4E;IAC5E,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACjC,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAC9B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6HAA6H;IAC7H,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACxD,0FAA0F;IAC1F,UAAU,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC1D,mEAAmE;IACnE,cAAc,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,mGAAmG;IACnG,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@admin-layout/tailwind-ui",
3
- "version": "12.2.4-alpha.16",
3
+ "version": "12.2.4-alpha.17",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -90,5 +90,5 @@
90
90
  "typescript": {
91
91
  "definition": "lib/index.d.ts"
92
92
  },
93
- "gitHead": "171b0ea9753cac315279fe1dcbb54f3225ad89e4"
93
+ "gitHead": "9d0b99b87d94407bba4565e427f99ae95bdeac2c"
94
94
  }