@websolutespa/bom-mixer-llm 1.8.34 → 1.8.35
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/CHANGELOG.md +6 -0
- package/dist/cjs/index.css +42 -2
- package/dist/cjs/index.js +105 -42
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.css +42 -2
- package/dist/esm/llm/components/Action/action.js +39 -0
- package/dist/esm/llm/components/Action/action.js.map +1 -0
- package/dist/esm/llm/components/ActionGroup/action-group.js +14 -0
- package/dist/esm/llm/components/ActionGroup/action-group.js.map +1 -0
- package/dist/esm/llm/components/Chunk/chunk.js +11 -0
- package/dist/esm/llm/components/Chunk/chunk.js.map +1 -1
- package/dist/esm/llm/components/Cta/cta.js +2 -2
- package/dist/esm/llm/components/Cta/cta.js.map +1 -1
- package/dist/esm/llm/theme.json.js +15 -15
- package/dist/esm/useLlm/message.service.js +11 -0
- package/dist/esm/useLlm/message.service.js.map +1 -1
- package/dist/esm/useLlm/useLlm.js +8 -1
- package/dist/esm/useLlm/useLlm.js.map +1 -1
- package/dist/types/llm/components/Action/action.d.ts +3 -0
- package/dist/types/llm/components/Action/action.d.ts.map +1 -0
- package/dist/types/llm/components/ActionGroup/action-group.d.ts +3 -0
- package/dist/types/llm/components/ActionGroup/action-group.d.ts.map +1 -0
- package/dist/types/llm/components/Chunk/chunk.d.ts.map +1 -1
- package/dist/types/llm/components/Cta/cta.d.ts +3 -1
- package/dist/types/llm/components/Cta/cta.d.ts.map +1 -1
- package/dist/types/llm/theme.d.ts +9 -9
- package/dist/types/types.d.ts +13 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/useLlm/message.service.d.ts.map +1 -1
- package/dist/types/useLlm/mock-app.infra.d.ts +3 -0
- package/dist/types/useLlm/mock-app.infra.d.ts.map +1 -0
- package/dist/types/useLlm/mock-thread.infra.d.ts +3 -0
- package/dist/types/useLlm/mock-thread.infra.d.ts.map +1 -0
- package/dist/types/useLlm/useLlm.d.ts +5 -2
- package/dist/types/useLlm/useLlm.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/llm/components/Action/_style.scss +4 -0
- package/src/llm/components/Action/action.tsx +31 -0
- package/src/llm/components/ActionGroup/_style.scss +8 -0
- package/src/llm/components/ActionGroup/action-group.tsx +15 -0
- package/src/llm/components/Chunk/chunk.tsx +13 -0
- package/src/llm/components/Cta/cta.tsx +5 -3
- package/src/llm/components/Header/_style.scss +1 -1
- package/src/llm/components/Hints/_style.scss +3 -1
- package/src/llm/components/Intro/_style.scss +18 -0
- package/src/llm/components/Text/_style.scss +17 -0
- package/src/llm/scss/style.scss +2 -0
- package/src/llm/theme.json +13 -13
- package/src/types.ts +19 -1
- package/src/useLlm/message.service.ts +11 -0
- package/src/useLlm/mock-app.infra.ts +272 -0
- package/src/useLlm/mock-thread.infra.ts +25 -0
- package/src/useLlm/useLlm.tsx +14 -3
package/CHANGELOG.md
CHANGED
package/dist/cjs/index.css
CHANGED
|
@@ -800,7 +800,7 @@ llm-embed {
|
|
|
800
800
|
.llm .llm__header-wrapper {
|
|
801
801
|
display: flex;
|
|
802
802
|
justify-content: space-between;
|
|
803
|
-
padding: 0 var(--llm-size-5, 2.5rem);
|
|
803
|
+
padding: 0 min(var(--llm-size-5, 2.5rem), clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1)));
|
|
804
804
|
align-items: center;
|
|
805
805
|
height: 70px;
|
|
806
806
|
z-index: 2;
|
|
@@ -1107,6 +1107,16 @@ llm-embed {
|
|
|
1107
1107
|
.llm .llm__intro-blob > div {
|
|
1108
1108
|
height: 100%;
|
|
1109
1109
|
}
|
|
1110
|
+
.llm.-chat .llm__intro-blob {
|
|
1111
|
+
width: 50px;
|
|
1112
|
+
height: 50px;
|
|
1113
|
+
}
|
|
1114
|
+
@media (min-width: 1440px) {
|
|
1115
|
+
.llm.-chat .llm__intro-blob {
|
|
1116
|
+
width: 60px;
|
|
1117
|
+
height: 60px;
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1110
1120
|
@media (min-width: 1024px) {
|
|
1111
1121
|
.llm .llm__intro-wrapper {
|
|
1112
1122
|
justify-content: space-between;
|
|
@@ -1118,6 +1128,9 @@ llm-embed {
|
|
|
1118
1128
|
gap: var(--llm-size-5, 2.5rem);
|
|
1119
1129
|
color: var(--llm-color-title-foreground);
|
|
1120
1130
|
}
|
|
1131
|
+
.llm.-chat .llm__intro-text {
|
|
1132
|
+
gap: var(--llm-size-3, 1.5rem);
|
|
1133
|
+
}
|
|
1121
1134
|
.llm .llm__intro-hints {
|
|
1122
1135
|
margin-top: var(--llm-size-5, 2.5rem);
|
|
1123
1136
|
}
|
|
@@ -1126,6 +1139,9 @@ llm-embed {
|
|
|
1126
1139
|
margin-top: 0;
|
|
1127
1140
|
}
|
|
1128
1141
|
}
|
|
1142
|
+
.llm.-chat .llm__intro-hints {
|
|
1143
|
+
margin-top: var(--llm-size-3, 1.5rem);
|
|
1144
|
+
}
|
|
1129
1145
|
.llm .llm__customIntro {
|
|
1130
1146
|
position: absolute;
|
|
1131
1147
|
top: 0;
|
|
@@ -1152,7 +1168,7 @@ llm-embed {
|
|
|
1152
1168
|
}
|
|
1153
1169
|
}
|
|
1154
1170
|
.llm .llm__hints .swiper-wrapper {
|
|
1155
|
-
padding:
|
|
1171
|
+
padding: 4px 0;
|
|
1156
1172
|
}
|
|
1157
1173
|
.llm .llm__hints .swiper-slide {
|
|
1158
1174
|
height: auto;
|
|
@@ -1223,6 +1239,7 @@ llm-embed {
|
|
|
1223
1239
|
}
|
|
1224
1240
|
.llm .llm__hint-title.column {
|
|
1225
1241
|
flex-direction: column;
|
|
1242
|
+
width: 100%;
|
|
1226
1243
|
}
|
|
1227
1244
|
.llm .llm__hint-title i {
|
|
1228
1245
|
flex-shrink: 0;
|
|
@@ -1235,6 +1252,7 @@ llm-embed {
|
|
|
1235
1252
|
fill: currentColor;
|
|
1236
1253
|
}
|
|
1237
1254
|
.llm .llm__hint-body {
|
|
1255
|
+
width: 100%;
|
|
1238
1256
|
line-height: 140%;
|
|
1239
1257
|
}
|
|
1240
1258
|
|
|
@@ -1915,6 +1933,21 @@ llm-embed {
|
|
|
1915
1933
|
border-radius: 12px;
|
|
1916
1934
|
padding: var(--llm-size-3, 1.5rem) var(--llm-size-4, 2rem);
|
|
1917
1935
|
}
|
|
1936
|
+
.llm.-chat .llm__message--user .llm__text {
|
|
1937
|
+
display: flex;
|
|
1938
|
+
flex-direction: column;
|
|
1939
|
+
}
|
|
1940
|
+
.llm.-chat .llm__message--user .llm__text .llm__text-body {
|
|
1941
|
+
align-self: flex-end;
|
|
1942
|
+
padding: 0.5em 0;
|
|
1943
|
+
padding: var(--llm-pill-padding, 8px);
|
|
1944
|
+
border: var(--llm-pill-border);
|
|
1945
|
+
border-radius: var(--llm-pill-border-radius);
|
|
1946
|
+
background: var(--llm-pill-background);
|
|
1947
|
+
color: var(--llm-pill-foreground);
|
|
1948
|
+
font-family: var(--llm-pill-font-family);
|
|
1949
|
+
text-align: right;
|
|
1950
|
+
}
|
|
1918
1951
|
.llm .llm__message--assistant .llm__inner--text:first-child .llm__text .llm__text-body, .llm .llm__message--assistant .llm__inner--text:first-child .llm__text .llm__text-body > p, .llm .llm__message--assistant .llm__inner--text:first-child .llm__text .llm__text-body > h2,
|
|
1919
1952
|
.llm .llm__message--assistant .llm__inner--string:first-child .llm__text .llm__text-body,
|
|
1920
1953
|
.llm .llm__message--assistant .llm__inner--string:first-child .llm__text .llm__text-body > p,
|
|
@@ -4232,4 +4265,11 @@ llm-embed {
|
|
|
4232
4265
|
width: var(--llm-scroll-proposition-border-radius);
|
|
4233
4266
|
height: var(--llm-scroll-proposition-border-radius);
|
|
4234
4267
|
transform: rotate(90deg);
|
|
4268
|
+
}
|
|
4269
|
+
|
|
4270
|
+
.llm .llm__actions {
|
|
4271
|
+
display: flex;
|
|
4272
|
+
gap: var(--llm-size-4, 2rem);
|
|
4273
|
+
padding-top: var(--llm-size-2, 1rem);
|
|
4274
|
+
margin-top: auto;
|
|
4235
4275
|
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -355,13 +355,12 @@ var color = {
|
|
|
355
355
|
error: "#ff4848"
|
|
356
356
|
};
|
|
357
357
|
var border = "1px solid var(--llm-color-neutral-200)";
|
|
358
|
-
var
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
var
|
|
363
|
-
|
|
364
|
-
enabled: true
|
|
358
|
+
var trigger = {
|
|
359
|
+
position: "bottom",
|
|
360
|
+
size: "60px",
|
|
361
|
+
background: "var(--llm-color-base-200)",
|
|
362
|
+
foreground: "var(--llm-color-base-100)",
|
|
363
|
+
boxShadow: "var(--llm-shadow-md)"
|
|
365
364
|
};
|
|
366
365
|
var chat = {
|
|
367
366
|
top: "auto",
|
|
@@ -373,12 +372,13 @@ var chat = {
|
|
|
373
372
|
borderRadius: "8px",
|
|
374
373
|
boxShadow: "var(--llm-shadow-sm)"
|
|
375
374
|
};
|
|
376
|
-
var
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
375
|
+
var main = {
|
|
376
|
+
background: "var(--llm-color-background)",
|
|
377
|
+
foreground: "var(--llm-color-foreground)"
|
|
378
|
+
};
|
|
379
|
+
var canvas = {
|
|
380
|
+
opacity: 0.8,
|
|
381
|
+
enabled: true
|
|
382
382
|
};
|
|
383
383
|
var popup = {
|
|
384
384
|
maxWidth: "210px",
|
|
@@ -498,10 +498,10 @@ var theme = {
|
|
|
498
498
|
typography: typography,
|
|
499
499
|
color: color,
|
|
500
500
|
border: border,
|
|
501
|
+
trigger: trigger,
|
|
502
|
+
chat: chat,
|
|
501
503
|
main: main,
|
|
502
504
|
canvas: canvas,
|
|
503
|
-
chat: chat,
|
|
504
|
-
trigger: trigger,
|
|
505
505
|
popup: popup,
|
|
506
506
|
triggerCta: triggerCta,
|
|
507
507
|
hint: hint,
|
|
@@ -1609,6 +1609,17 @@ class MessageDecoder {
|
|
|
1609
1609
|
// response = { ...response, ...rest };
|
|
1610
1610
|
}
|
|
1611
1611
|
break;
|
|
1612
|
+
case 'action':
|
|
1613
|
+
case 'actionItem':
|
|
1614
|
+
if (lastMessage && lastMessage.type === 'actionGroup') {
|
|
1615
|
+
lastMessage.items.push(x);
|
|
1616
|
+
} else {
|
|
1617
|
+
chunkItems.push({
|
|
1618
|
+
type: 'actionGroup',
|
|
1619
|
+
items: [x]
|
|
1620
|
+
});
|
|
1621
|
+
}
|
|
1622
|
+
break;
|
|
1612
1623
|
case 'cardItem':
|
|
1613
1624
|
if (lastMessage && lastMessage.type === 'cardGroup') {
|
|
1614
1625
|
lastMessage.items.push(x);
|
|
@@ -2939,6 +2950,7 @@ const createLlmStore = _ref => {
|
|
|
2939
2950
|
apiKey,
|
|
2940
2951
|
threadId,
|
|
2941
2952
|
decorateUrl,
|
|
2953
|
+
onAction,
|
|
2942
2954
|
endpoint,
|
|
2943
2955
|
storage,
|
|
2944
2956
|
test,
|
|
@@ -3268,10 +3280,16 @@ const createLlmStore = _ref => {
|
|
|
3268
3280
|
decorateUrl: (item, defaultUrl) => __awaiter(void 0, void 0, void 0, function* () {
|
|
3269
3281
|
let url;
|
|
3270
3282
|
if (typeof decorateUrl === 'function') {
|
|
3271
|
-
url = yield decorateUrl(item);
|
|
3283
|
+
url = (yield decorateUrl(item)) || undefined;
|
|
3272
3284
|
}
|
|
3273
3285
|
return url || defaultUrl || '#';
|
|
3274
3286
|
}),
|
|
3287
|
+
onAction: item => __awaiter(void 0, void 0, void 0, function* () {
|
|
3288
|
+
if (typeof onAction === 'function') {
|
|
3289
|
+
return yield onAction(item);
|
|
3290
|
+
}
|
|
3291
|
+
return;
|
|
3292
|
+
}),
|
|
3275
3293
|
clear: () => set(state => ({
|
|
3276
3294
|
messages: []
|
|
3277
3295
|
}))
|
|
@@ -4701,6 +4719,68 @@ function ScrollProposition() {
|
|
|
4701
4719
|
});
|
|
4702
4720
|
}
|
|
4703
4721
|
|
|
4722
|
+
const Cta = props => {
|
|
4723
|
+
const onClick = event => {
|
|
4724
|
+
if (typeof props.onClick === 'function') {
|
|
4725
|
+
props.onClick(event);
|
|
4726
|
+
}
|
|
4727
|
+
};
|
|
4728
|
+
const bg = props.type == 'button' || props.type == 'submit' ? jsxRuntime.jsx(Canvas, {}) : '';
|
|
4729
|
+
const icon = props.icon || (props.type == 'text' ? jsxRuntime.jsx(bomMixerIcons.IconLlmArrowRight, {}) : '');
|
|
4730
|
+
const classNames = bomCore.getClassNames('llm__cta', `llm__cta--${props.type}`, props.className);
|
|
4731
|
+
return props.url ? jsxRuntime.jsxs("a", {
|
|
4732
|
+
className: classNames,
|
|
4733
|
+
href: props.url,
|
|
4734
|
+
target: props.target,
|
|
4735
|
+
children: [bg, jsxRuntime.jsx("span", {
|
|
4736
|
+
children: props.label
|
|
4737
|
+
}), icon]
|
|
4738
|
+
}) : jsxRuntime.jsxs("button", {
|
|
4739
|
+
className: classNames,
|
|
4740
|
+
onClick: onClick,
|
|
4741
|
+
type: props.type == 'button' || props.type == 'submit' ? props.type : undefined,
|
|
4742
|
+
children: [bg, jsxRuntime.jsx("span", {
|
|
4743
|
+
children: props.label
|
|
4744
|
+
}), icon]
|
|
4745
|
+
});
|
|
4746
|
+
};
|
|
4747
|
+
|
|
4748
|
+
const Action = props => {
|
|
4749
|
+
const label = bomMixerHooks.useLabel();
|
|
4750
|
+
const {
|
|
4751
|
+
onAction
|
|
4752
|
+
} = useLlm(state => state.actions);
|
|
4753
|
+
const {
|
|
4754
|
+
open
|
|
4755
|
+
} = useLlmView(state => state.actions);
|
|
4756
|
+
const dismissable = useLlmView(state => state.dismissable);
|
|
4757
|
+
const onAction_ = event => __awaiter(void 0, void 0, void 0, function* () {
|
|
4758
|
+
// console.log('Action.onAction', props.id);
|
|
4759
|
+
const shouldClose = yield onAction(props);
|
|
4760
|
+
if (dismissable && shouldClose !== false) {
|
|
4761
|
+
open();
|
|
4762
|
+
}
|
|
4763
|
+
});
|
|
4764
|
+
const classNames = bomCore.getClassNames('llm__action', {
|
|
4765
|
+
[`llm__action--${props.type}`]: !!props.type
|
|
4766
|
+
});
|
|
4767
|
+
return jsxRuntime.jsx(Cta, {
|
|
4768
|
+
type: "button",
|
|
4769
|
+
className: classNames,
|
|
4770
|
+
label: props.title || label('llm.tellMeMore'),
|
|
4771
|
+
icon: jsxRuntime.jsx(bomMixerIcons.IconLlmArrowRight, {}),
|
|
4772
|
+
onClick: onAction_
|
|
4773
|
+
});
|
|
4774
|
+
};
|
|
4775
|
+
|
|
4776
|
+
const ActionGroup = props => {
|
|
4777
|
+
const classNames = bomCore.getClassNames('llm__actions');
|
|
4778
|
+
return jsxRuntime.jsx("div", {
|
|
4779
|
+
className: classNames,
|
|
4780
|
+
children: props.items.map((item, i) => jsxRuntime.jsx(Action, Object.assign({}, item), i))
|
|
4781
|
+
});
|
|
4782
|
+
};
|
|
4783
|
+
|
|
4704
4784
|
const Dialog = _a => {
|
|
4705
4785
|
var {
|
|
4706
4786
|
children,
|
|
@@ -5110,32 +5190,6 @@ const CardGroup = props => {
|
|
|
5110
5190
|
});
|
|
5111
5191
|
};
|
|
5112
5192
|
|
|
5113
|
-
const Cta = props => {
|
|
5114
|
-
const onClick = event => {
|
|
5115
|
-
if (typeof props.onClick === 'function') {
|
|
5116
|
-
props.onClick(event);
|
|
5117
|
-
}
|
|
5118
|
-
};
|
|
5119
|
-
const bg = props.type == 'button' || props.type == 'submit' ? jsxRuntime.jsx(Canvas, {}) : '';
|
|
5120
|
-
const icon = props.type == 'text' ? jsxRuntime.jsx(bomMixerIcons.IconLlmArrowRight, {}) : '';
|
|
5121
|
-
const classNames = bomCore.getClassNames('llm__cta', `llm__cta--${props.type}`);
|
|
5122
|
-
return props.url ? jsxRuntime.jsxs("a", {
|
|
5123
|
-
className: classNames,
|
|
5124
|
-
href: props.url,
|
|
5125
|
-
target: props.target,
|
|
5126
|
-
children: [bg, jsxRuntime.jsx("span", {
|
|
5127
|
-
children: props.label
|
|
5128
|
-
}), icon]
|
|
5129
|
-
}) : jsxRuntime.jsxs("button", {
|
|
5130
|
-
className: classNames,
|
|
5131
|
-
onClick: onClick,
|
|
5132
|
-
type: props.type == 'button' || props.type == 'submit' ? props.type : undefined,
|
|
5133
|
-
children: [bg, jsxRuntime.jsx("span", {
|
|
5134
|
-
children: props.label
|
|
5135
|
-
}), icon]
|
|
5136
|
-
});
|
|
5137
|
-
};
|
|
5138
|
-
|
|
5139
5193
|
const Event = props => {
|
|
5140
5194
|
const label = bomMixerHooks.useLabel();
|
|
5141
5195
|
const {
|
|
@@ -6038,6 +6092,15 @@ const Chunk = _ref => {
|
|
|
6038
6092
|
{
|
|
6039
6093
|
return jsxRuntime.jsx(StreamError, Object.assign({}, item));
|
|
6040
6094
|
}
|
|
6095
|
+
case 'action':
|
|
6096
|
+
case 'actionItem':
|
|
6097
|
+
{
|
|
6098
|
+
return jsxRuntime.jsx(Action, Object.assign({}, item));
|
|
6099
|
+
}
|
|
6100
|
+
case 'actionGroup':
|
|
6101
|
+
{
|
|
6102
|
+
return jsxRuntime.jsx(ActionGroup, Object.assign({}, item));
|
|
6103
|
+
}
|
|
6041
6104
|
case 'card':
|
|
6042
6105
|
case 'cardItem':
|
|
6043
6106
|
{
|