@stack-spot/ai-chat-widget 1.0.0-dev.1768484235969 → 1.0.0-dev.1768590034766
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.
package/dist/app-metadata.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stack-spot/ai-chat-widget",
|
|
3
|
-
"version": "1.0.0-dev.
|
|
4
|
-
"date": "
|
|
3
|
+
"version": "1.0.0-dev.1768590034766",
|
|
4
|
+
"date": "Fri Jan 16 2026 19:00:40 GMT+0000 (Coordinated Universal Time)",
|
|
5
5
|
"dependencies": [
|
|
6
6
|
{
|
|
7
7
|
"name": "@stack-spot/app-metadata",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabManager.d.ts","sourceRoot":"","sources":["../../src/components/TabManager.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGvC,UAAU,KAAK,CAAC,CAAC,EAAE,GAAG,SAAS,KAAK,CAAC,GAAG;IACtC;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;OAEG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC;IACxB;;OAEG;IACH,MAAM,EAAE,GAAG,CAAC;IACZ;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;OAEG;IACH,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC;CAC7C;AAqGD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,SAAS,KAAK,CAAC,GAAG,EACjD,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAY,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"TabManager.d.ts","sourceRoot":"","sources":["../../src/components/TabManager.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGvC,UAAU,KAAK,CAAC,CAAC,EAAE,GAAG,SAAS,KAAK,CAAC,GAAG;IACtC;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;OAEG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC;IACxB;;OAEG;IACH,MAAM,EAAE,GAAG,CAAC;IACZ;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;OAEG;IACH,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC;CAC7C;AAqGD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,SAAS,KAAK,CAAC,GAAG,EACjD,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAY,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,2CAgFvF"}
|
|
@@ -5,7 +5,7 @@ import { Button, IconButton } from '@stack-spot/citric-react';
|
|
|
5
5
|
import { listToClass, theme } from '@stack-spot/portal-theme';
|
|
6
6
|
import { useTranslate } from '@stack-spot/portal-translate';
|
|
7
7
|
import { last } from 'lodash';
|
|
8
|
-
import { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
8
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
9
9
|
import { styled } from 'styled-components';
|
|
10
10
|
import { FadingOverflow } from './FadingOverflow.js';
|
|
11
11
|
// The size of extra buttons placed after the tabs.
|
|
@@ -115,13 +115,23 @@ export function TabManager({ active, tabs, keygen, onRemove, onSelect, renderLab
|
|
|
115
115
|
const t = useTranslate(dictionary);
|
|
116
116
|
const tabList = useRef(null);
|
|
117
117
|
const lastNumberOfTabs = useRef(tabs.length);
|
|
118
|
+
const [ariaMessage, setAriaMessage] = useState('');
|
|
118
119
|
const onClickTab = useCallback((event) => {
|
|
119
120
|
const target = event.target;
|
|
120
121
|
if (target.tagName === 'LI')
|
|
121
122
|
target.querySelector('button')?.click();
|
|
122
123
|
}, []);
|
|
123
|
-
const tabItems = useMemo(() => tabs.map((tab
|
|
124
|
-
|
|
124
|
+
const tabItems = useMemo(() => tabs.map((tab, idx) => {
|
|
125
|
+
const tabLabel = typeof renderLabel(tab) === 'string'
|
|
126
|
+
? renderLabel(tab)
|
|
127
|
+
: `${t.tab} ${idx + 1}`;
|
|
128
|
+
return (_jsxs("li", { className: keygen(tab) === active ? 'active' : undefined, onClick: onClickTab, children: [_jsx("button", { className: "label", "aria-label": `${t.chat} ${tabLabel}`, onClick: () => onSelect(tab), children: _jsx(FadingOverflow, { children: renderLabel(tab) }) }), tabs.length > 1 &&
|
|
129
|
+
_jsx(IconButton, { appearance: "text", icon: "TimesMini", "aria-label": `${tabLabel}`, title: t.close, onClick: () => {
|
|
130
|
+
onRemove(tab), setAriaMessage(`${t.chat} ${tabLabel} ${t.closed}`);
|
|
131
|
+
// Clears the message after a short time to prevent it from repeating
|
|
132
|
+
setTimeout(() => setAriaMessage(''), 1000);
|
|
133
|
+
} })] }, keygen(tab)));
|
|
134
|
+
}), [tabs, active]);
|
|
125
135
|
const extras = useMemo(() => buttons.map(({ ariaLabel, title, label, onClick, group, icon, appearance, size, className, style, disabled }) => label
|
|
126
136
|
? _jsxs(Button, { style: { marginRight: '4px', ...style }, colorScheme: "light", size: "md", title: title || label, onClick: onClick, disabled: disabled, children: [_jsx(Icon, { group: group, icon: icon }), label] }, ariaLabel)
|
|
127
137
|
: _jsx(IconButton, { group: group, icon: icon, "aria-label": ariaLabel, title: title, size: size, className: listToClass([className, 'extra']), style: style, onClick: onClick, appearance: appearance }, ariaLabel)), [buttons]);
|
|
@@ -133,14 +143,20 @@ export function TabManager({ active, tabs, keygen, onRemove, onSelect, renderLab
|
|
|
133
143
|
}
|
|
134
144
|
lastNumberOfTabs.current = tabs.length;
|
|
135
145
|
}, [tabs]);
|
|
136
|
-
return (_jsxs(Tabs, { "$numberOfExtraButtons": buttons.length, className: "tabs", children: [_jsx(FadingOverflow, { className: "list-overflow", scroll: "arrows", enableHorizontalScrollWithVerticalWheel: true, children: _jsx("ul", { ref: tabList, children: tabItems }) }), extras] }));
|
|
146
|
+
return (_jsxs(Tabs, { "$numberOfExtraButtons": buttons.length, className: "tabs", children: [_jsx("div", { "aria-live": "polite", "aria-atomic": "true", style: { position: 'absolute', left: '-9999px', width: '1px', height: '1px', overflow: 'hidden' }, children: ariaMessage }), _jsx(FadingOverflow, { className: "list-overflow", scroll: "arrows", enableHorizontalScrollWithVerticalWheel: true, children: _jsx("ul", { ref: tabList, children: tabItems }) }), extras] }));
|
|
137
147
|
}
|
|
138
148
|
const dictionary = {
|
|
139
149
|
en: {
|
|
140
150
|
close: 'Close',
|
|
151
|
+
tab: 'Tab',
|
|
152
|
+
chat: 'Chat',
|
|
153
|
+
closed: 'Closed',
|
|
141
154
|
},
|
|
142
155
|
pt: {
|
|
143
156
|
close: 'Fechar',
|
|
157
|
+
tab: 'Aba',
|
|
158
|
+
chat: 'Chat',
|
|
159
|
+
closed: 'Fechado',
|
|
144
160
|
},
|
|
145
161
|
};
|
|
146
162
|
//# sourceMappingURL=TabManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabManager.js","sourceRoot":"","sources":["../../src/components/TabManager.tsx"],"names":[],"mappings":";AAAA,2CAA2C;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"TabManager.js","sourceRoot":"","sources":["../../src/components/TabManager.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/app-metadata.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stack-spot/ai-chat-widget",
|
|
3
|
-
"version": "1.0.0-dev.
|
|
4
|
-
"date": "
|
|
3
|
+
"version": "1.0.0-dev.1768590034766",
|
|
4
|
+
"date": "Fri Jan 16 2026 19:00:40 GMT+0000 (Coordinated Universal Time)",
|
|
5
5
|
"dependencies": [
|
|
6
6
|
{
|
|
7
7
|
"name": "@stack-spot/app-metadata",
|
|
@@ -5,7 +5,7 @@ import { Button, IconButton } from '@stack-spot/citric-react'
|
|
|
5
5
|
import { listToClass, theme } from '@stack-spot/portal-theme'
|
|
6
6
|
import { Dictionary, useTranslate } from '@stack-spot/portal-translate'
|
|
7
7
|
import { last } from 'lodash'
|
|
8
|
-
import { useCallback, useEffect, useMemo, useRef } from 'react'
|
|
8
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
9
9
|
import { styled } from 'styled-components'
|
|
10
10
|
import { ButtonAction } from '../types'
|
|
11
11
|
import { FadingOverflow } from './FadingOverflow'
|
|
@@ -152,19 +152,31 @@ export function TabManager<T, Key extends React.Key>(
|
|
|
152
152
|
const t = useTranslate(dictionary)
|
|
153
153
|
const tabList = useRef<HTMLUListElement>(null)
|
|
154
154
|
const lastNumberOfTabs = useRef(tabs.length)
|
|
155
|
+
const [ariaMessage, setAriaMessage] = useState('')
|
|
155
156
|
|
|
156
157
|
const onClickTab = useCallback((event: React.MouseEvent<HTMLElement, MouseEvent>) => {
|
|
157
158
|
const target = event.target as HTMLElement
|
|
158
159
|
if (target.tagName === 'LI') target.querySelector('button')?.click()
|
|
159
160
|
}, [])
|
|
160
161
|
|
|
161
|
-
const tabItems = useMemo(() => tabs.map((tab) =>
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
{
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
162
|
+
const tabItems = useMemo(() => tabs.map((tab, idx) => {
|
|
163
|
+
const tabLabel = typeof renderLabel(tab) === 'string'
|
|
164
|
+
? renderLabel(tab)
|
|
165
|
+
: `${t.tab} ${idx + 1}`
|
|
166
|
+
|
|
167
|
+
return (
|
|
168
|
+
<li key={keygen(tab)} className={keygen(tab) === active ? 'active' : undefined} onClick={onClickTab}>
|
|
169
|
+
<button className="label" aria-label={`${t.chat} ${tabLabel}`} onClick={() => onSelect(tab)}>
|
|
170
|
+
<FadingOverflow>{renderLabel(tab)}</FadingOverflow>
|
|
171
|
+
</button>
|
|
172
|
+
{tabs.length > 1 &&
|
|
173
|
+
<IconButton appearance="text" icon="TimesMini" aria-label={`${tabLabel}`}
|
|
174
|
+
title={t.close} onClick={() => { onRemove(tab), setAriaMessage(`${t.chat} ${tabLabel} ${t.closed}`)
|
|
175
|
+
|
|
176
|
+
// Clears the message after a short time to prevent it from repeating
|
|
177
|
+
setTimeout(() => setAriaMessage(''), 1000)}} />}
|
|
178
|
+
</li>
|
|
179
|
+
)}), [tabs, active])
|
|
168
180
|
|
|
169
181
|
const extras = useMemo(() => buttons.map(({
|
|
170
182
|
ariaLabel, title, label, onClick, group, icon, appearance, size, className, style, disabled }) => label
|
|
@@ -204,6 +216,11 @@ export function TabManager<T, Key extends React.Key>(
|
|
|
204
216
|
|
|
205
217
|
return (
|
|
206
218
|
<Tabs $numberOfExtraButtons={buttons.length} className="tabs">
|
|
219
|
+
<div
|
|
220
|
+
aria-live="polite" aria-atomic="true"
|
|
221
|
+
style={{ position: 'absolute', left: '-9999px', width: '1px', height: '1px', overflow: 'hidden' }}>
|
|
222
|
+
{ariaMessage}
|
|
223
|
+
</div>
|
|
207
224
|
<FadingOverflow className="list-overflow" scroll="arrows" enableHorizontalScrollWithVerticalWheel>
|
|
208
225
|
<ul ref={tabList}>{tabItems}</ul>
|
|
209
226
|
</FadingOverflow>
|
|
@@ -215,9 +232,15 @@ export function TabManager<T, Key extends React.Key>(
|
|
|
215
232
|
const dictionary = {
|
|
216
233
|
en: {
|
|
217
234
|
close: 'Close',
|
|
235
|
+
tab: 'Tab',
|
|
236
|
+
chat: 'Chat',
|
|
237
|
+
closed: 'Closed',
|
|
218
238
|
},
|
|
219
239
|
pt: {
|
|
220
240
|
close: 'Fechar',
|
|
241
|
+
tab: 'Aba',
|
|
242
|
+
chat: 'Chat',
|
|
243
|
+
closed: 'Fechado',
|
|
221
244
|
},
|
|
222
245
|
} satisfies Dictionary
|
|
223
246
|
|