@websolutespa/bom-mixer-llm 1.8.21 → 1.8.23

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 (46) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/index.css +50 -24
  3. package/dist/cjs/index.js +67 -30
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/esm/index.css +50 -24
  6. package/dist/esm/llm/components/FormRecap/FormRecap.js.map +1 -1
  7. package/dist/esm/llm/components/Header/header.js +15 -8
  8. package/dist/esm/llm/components/Header/header.js.map +1 -1
  9. package/dist/esm/llm/components/Hints/hints.js +7 -4
  10. package/dist/esm/llm/components/Hints/hints.js.map +1 -1
  11. package/dist/esm/llm/components/Intro/intro.js +16 -9
  12. package/dist/esm/llm/components/Intro/intro.js.map +1 -1
  13. package/dist/esm/llm/components/Trigger/trigger.js +6 -5
  14. package/dist/esm/llm/components/Trigger/trigger.js.map +1 -1
  15. package/dist/esm/node_modules/tslib/tslib.es6.js +14 -6
  16. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
  17. package/dist/esm/useLlm/speech.js +9 -0
  18. package/dist/esm/useLlm/speech.js.map +1 -1
  19. package/dist/esm/useLlm/useLlm.js +2 -0
  20. package/dist/esm/useLlm/useLlm.js.map +1 -1
  21. package/dist/types/llm/components/FormRecap/FormRecap.d.ts.map +1 -1
  22. package/dist/types/llm/components/Header/header.d.ts.map +1 -1
  23. package/dist/types/llm/components/Hints/hints.d.ts +4 -1
  24. package/dist/types/llm/components/Hints/hints.d.ts.map +1 -1
  25. package/dist/types/llm/components/Intro/intro.d.ts.map +1 -1
  26. package/dist/types/llm/components/Trigger/trigger.d.ts.map +1 -1
  27. package/dist/types/types.d.ts +8 -7
  28. package/dist/types/types.d.ts.map +1 -1
  29. package/dist/types/useLlm/mock-app.lfo.d.ts.map +1 -1
  30. package/dist/types/useLlm/speech.d.ts +1 -0
  31. package/dist/types/useLlm/speech.d.ts.map +1 -1
  32. package/dist/types/useLlm/useLlm.d.ts.map +1 -1
  33. package/package.json +1 -1
  34. package/src/llm/components/CardGroup/_style.scss +1 -3
  35. package/src/llm/components/FormRecap/FormRecap.tsx +0 -1
  36. package/src/llm/components/Header/header.tsx +10 -4
  37. package/src/llm/components/Hints/hints.tsx +3 -3
  38. package/src/llm/components/Intro/intro.tsx +23 -14
  39. package/src/llm/components/Main/_style.scss +2 -0
  40. package/src/llm/components/Prompt/_style.scss +33 -11
  41. package/src/llm/components/Trigger/trigger.tsx +19 -13
  42. package/src/llm/scss/_layout.scss +7 -3
  43. package/src/types.ts +8 -7
  44. package/src/useLlm/mock-app.lfo.ts +42 -5
  45. package/src/useLlm/speech.ts +10 -0
  46. package/src/useLlm/useLlm.tsx +2 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @websolutespa/bom-mixer-llm
2
2
 
3
+ ## 1.8.23
4
+
5
+ ### Patch Changes
6
+
7
+ - Added: Speech.cancel
8
+ - Modified: style
9
+
10
+ ## 1.8.22
11
+
12
+ ### Patch Changes
13
+
14
+ - Modified: suggestions a11y
15
+
3
16
  ## 1.8.21
4
17
 
5
18
  ### Patch Changes
@@ -362,7 +362,7 @@ llm-embed {
362
362
  }
363
363
 
364
364
  .llm__container {
365
- margin: 0 clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1));
365
+ padding: 0 clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1));
366
366
  }
367
367
 
368
368
  .llm .llm__stream-error .llm__text-body {
@@ -673,6 +673,8 @@ llm-embed {
673
673
  flex-direction: column;
674
674
  justify-content: center;
675
675
  min-height: 100%;
676
+ width: 100%;
677
+ overflow: hidden;
676
678
  }
677
679
  .llm.-embedded .llm__main {
678
680
  width: 100%;
@@ -1111,19 +1113,19 @@ llm-embed {
1111
1113
  width: 100%;
1112
1114
  }
1113
1115
  .llm .llm__prompt-input.-speech-synthesis > .llm__prompt-textarea {
1114
- padding-left: 40px;
1116
+ padding-left: 50px;
1115
1117
  }
1116
1118
  @media (min-width: 1024px) {
1117
1119
  .llm .llm__prompt-input.-speech-synthesis > .llm__prompt-textarea {
1118
- padding-left: 40px;
1120
+ padding-left: 50px;
1119
1121
  }
1120
1122
  }
1121
1123
  .llm .llm__prompt-input.-speech-recognition > .llm__prompt-textarea {
1122
- padding-right: 40px;
1124
+ padding-right: 50px;
1123
1125
  }
1124
1126
  @media (min-width: 1024px) {
1125
1127
  .llm .llm__prompt-input.-speech-recognition > .llm__prompt-textarea {
1126
- padding-right: 40px;
1128
+ padding-right: 50px;
1127
1129
  }
1128
1130
  }
1129
1131
  .llm .llm__prompt-input .llm__busyIndicator {
@@ -1162,7 +1164,6 @@ llm-embed {
1162
1164
  display: block;
1163
1165
  width: 100%;
1164
1166
  min-height: 0;
1165
- padding: var(--llm-size-3, 1.5rem) var(--llm-size-3, 1.5rem);
1166
1167
  margin: 0;
1167
1168
  border: none;
1168
1169
  resize: none;
@@ -1174,9 +1175,12 @@ llm-embed {
1174
1175
  background: transparent;
1175
1176
  color: var(--llm-input-foreground);
1176
1177
  pointer-events: auto;
1178
+ overflow: clip;
1177
1179
  cursor: pointer;
1178
1180
  outline: 2px solid transparent;
1179
1181
  outline-offset: 2px;
1182
+ padding: 8px var(--llm-size-2, 1rem);
1183
+ field-sizing: content;
1180
1184
  }
1181
1185
  .llm .llm__prompt-textarea:focus {
1182
1186
  outline-color: currentColor;
@@ -1194,6 +1198,11 @@ llm-embed {
1194
1198
  .llm .llm__prompt-textarea[aria-disabled=true]::placeholder {
1195
1199
  color: transparent;
1196
1200
  }
1201
+ @media (min-width: 768px) {
1202
+ .llm .llm__prompt-textarea {
1203
+ padding: var(--llm-size-3, 1.5rem) var(--llm-size-3, 1.5rem);
1204
+ }
1205
+ }
1197
1206
  .llm .llm__prompt-speak, .llm .llm__prompt-microphone {
1198
1207
  margin: 0;
1199
1208
  padding: 0;
@@ -1330,30 +1339,43 @@ llm-embed {
1330
1339
  max-width: calc(100% + var(--margin) * 2);
1331
1340
  margin: 0 var(--negative-margin);
1332
1341
  padding: 4px var(--margin);
1333
- overflow-x: auto;
1334
- overflow-y: hidden;
1335
- /* Hide scrollbar for Chrome, Safari and Opera */
1336
- /* Hide scrollbar for IE, Edge and Firefox */
1337
- }
1338
- .llm .llm__prompt-suggestions .llm__suggestions::-webkit-scrollbar {
1339
- display: none;
1342
+ flex-wrap: wrap;
1343
+ /* if device has a touch screen */
1344
+ /* if device has no touch screen */
1345
+ /*
1346
+ @media (any-pointer: fine) {
1347
+ }
1348
+ */
1340
1349
  }
1341
- .llm .llm__prompt-suggestions .llm__suggestions {
1342
- -ms-overflow-style: none;
1343
- /* IE and Edge */
1344
- scrollbar-width: none;
1345
- /* Firefox */
1350
+ @media (any-pointer: coarse) {
1351
+ .llm .llm__prompt-suggestions .llm__suggestions {
1352
+ flex-wrap: nowrap;
1353
+ overflow-x: auto;
1354
+ overflow-y: hidden;
1355
+ /* Hide scrollbar for Chrome, Safari and Opera */
1356
+ /* Hide scrollbar for IE, Edge and Firefox */
1357
+ }
1358
+ .llm .llm__prompt-suggestions .llm__suggestions::-webkit-scrollbar {
1359
+ display: none;
1360
+ }
1361
+ .llm .llm__prompt-suggestions .llm__suggestions {
1362
+ -ms-overflow-style: none;
1363
+ /* IE and Edge */
1364
+ scrollbar-width: none;
1365
+ /* Firefox */
1366
+ }
1367
+ .llm .llm__prompt-suggestions .llm__suggestions .llm__pill {
1368
+ white-space: nowrap;
1369
+ }
1346
1370
  }
1347
1371
  .llm .llm__prompt-suggestions .llm__suggestions .llm__pill {
1348
- white-space: nowrap;
1372
+ box-shadow: var(--llm-shadow-xs);
1349
1373
  }
1350
1374
  @media (min-width: 1024px) {
1351
1375
  .llm .llm__prompt-suggestions .llm__suggestions {
1352
1376
  max-width: calc(100% + 8px);
1353
1377
  margin: 0 -4px;
1354
1378
  padding: 4px;
1355
- flex-wrap: wrap;
1356
- overflow: hidden;
1357
1379
  }
1358
1380
  }
1359
1381
  .llm .llm__prompt-suggestions .swiper {
@@ -1852,8 +1874,12 @@ llm-embed {
1852
1874
  */
1853
1875
  }
1854
1876
  .llm .llm__cards {
1855
- width: 100%;
1856
- margin: 0 auto calc(var(--rem, 1rem) * 3) auto;
1877
+ width: calc(100% + clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1)) * 2);
1878
+ margin-left: calc(clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1)) * -1);
1879
+ margin-right: calc(clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1)) * -1);
1880
+ overflow: hidden;
1881
+ padding-left: clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1));
1882
+ padding-right: clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1));
1857
1883
  overflow: hidden;
1858
1884
  }
1859
1885
  .llm .llm__cards .swiper {
@@ -2960,9 +2986,9 @@ llm-embed {
2960
2986
  width: calc(100% + clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1)) * 2);
2961
2987
  margin-left: calc(clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1)) * -1);
2962
2988
  margin-right: calc(clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1)) * -1);
2989
+ overflow: hidden;
2963
2990
  padding-left: clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1));
2964
2991
  padding-right: clamp(20px * var(--s, 1), 20px * var(--s, 1) + (var(--u, 1vw) * 100 - 375px) / 1545 * 90 * var(--s, 1), 110px * var(--s, 1));
2965
- overflow: hidden;
2966
2992
  }
2967
2993
  .llm .llm__events .swiper {
2968
2994
  position: relative;
package/dist/cjs/index.js CHANGED
@@ -99,16 +99,24 @@ function __asyncGenerator(thisArg, _arguments, generator) {
99
99
  var g = generator.apply(thisArg, _arguments || []),
100
100
  i,
101
101
  q = [];
102
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
102
+ return i = {}, verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () {
103
103
  return this;
104
104
  }, i;
105
- function verb(n) {
106
- if (g[n]) i[n] = function (v) {
107
- return new Promise(function (a, b) {
108
- q.push([n, v, a, b]) > 1 || resume(n, v);
109
- });
105
+ function awaitReturn(f) {
106
+ return function (v) {
107
+ return Promise.resolve(v).then(f, reject);
110
108
  };
111
109
  }
110
+ function verb(n, f) {
111
+ if (g[n]) {
112
+ i[n] = function (v) {
113
+ return new Promise(function (a, b) {
114
+ q.push([n, v, a, b]) > 1 || resume(n, v);
115
+ });
116
+ };
117
+ if (f) i[n] = f(i[n]);
118
+ }
119
+ }
112
120
  function resume(n, v) {
113
121
  try {
114
122
  step(g[n](v));
@@ -2132,6 +2140,15 @@ class Speech extends Emitter$1 {
2132
2140
  this.textToSpeech_.speak(text);
2133
2141
  }
2134
2142
  }
2143
+ cancel() {
2144
+ try {
2145
+ if (this.textToSpeech_) {
2146
+ this.textToSpeech_.cancel();
2147
+ }
2148
+ } catch (error) {
2149
+ console.log('Speech.cancel.error', error);
2150
+ }
2151
+ }
2135
2152
  recognizeStart() {
2136
2153
  if (this.speechToText_) {
2137
2154
  this.speechToText_.start(this.lang);
@@ -2928,6 +2945,7 @@ const createLlmStore = _ref => {
2928
2945
  }));
2929
2946
  }),
2930
2947
  send: (prompt, onPrompt, onMessage, onEnd) => __awaiter(void 0, void 0, void 0, function* () {
2948
+ speech.cancel();
2931
2949
  const state = get();
2932
2950
  messageService = new MessageService({
2933
2951
  apiKey,
@@ -3006,6 +3024,7 @@ const createLlmStore = _ref => {
3006
3024
  });
3007
3025
  }),
3008
3026
  abort: () => {
3027
+ speech.cancel();
3009
3028
  if (messageService) {
3010
3029
  messageService.abort();
3011
3030
  messageService = undefined;
@@ -3590,7 +3609,7 @@ function Canvas() {
3590
3609
  }
3591
3610
 
3592
3611
  const Header = props => {
3593
- var _a, _b;
3612
+ var _a, _b, _c;
3594
3613
  const app = useLlm(state => state.app);
3595
3614
  const {
3596
3615
  open
@@ -3601,7 +3620,8 @@ const Header = props => {
3601
3620
  const label = bomMixerHooks.useLabel();
3602
3621
  const logo = app === null || app === void 0 ? void 0 : app.contents.logo;
3603
3622
  const logoMini = (_a = app === null || app === void 0 ? void 0 : app.contents) === null || _a === void 0 ? void 0 : _a.logoMini;
3604
- const additionalLogos = (_b = app === null || app === void 0 ? void 0 : app.contents) === null || _b === void 0 ? void 0 : _b.additionalLogos;
3623
+ const openingSound = (_b = app === null || app === void 0 ? void 0 : app.contents) === null || _b === void 0 ? void 0 : _b.openingSound;
3624
+ const additionalLogos = (_c = app === null || app === void 0 ? void 0 : app.contents) === null || _c === void 0 ? void 0 : _c.additionalLogos;
3605
3625
  const classes = bomCore.getClassNames('llm__header', {
3606
3626
  hidden,
3607
3627
  fixed
@@ -3635,11 +3655,17 @@ const Header = props => {
3635
3655
  href: "#llm-prompt-textarea",
3636
3656
  className: "llm__header-skip",
3637
3657
  children: label('llm.skip')
3638
- }), dismissable && jsxRuntime.jsxs("button", {
3639
- type: "button",
3640
- className: "llm__header-back -llm-t-cta3",
3641
- onClick: () => open(),
3642
- children: [label('llm.back'), jsxRuntime.jsx(bomMixerIcons.IconLlmArrowCornerRightUp, {})]
3658
+ }), dismissable && jsxRuntime.jsxs(jsxRuntime.Fragment, {
3659
+ children: [jsxRuntime.jsxs("button", {
3660
+ type: "button",
3661
+ className: "llm__header-back -llm-t-cta3",
3662
+ onClick: () => open(),
3663
+ children: [label('llm.back'), jsxRuntime.jsx(bomMixerIcons.IconLlmArrowCornerRightUp, {})]
3664
+ }), openingSound && jsxRuntime.jsx("audio", {
3665
+ src: openingSound.src || openingSound.url,
3666
+ autoPlay: true,
3667
+ loop: false
3668
+ })]
3643
3669
  })]
3644
3670
  })
3645
3671
  });
@@ -3689,11 +3715,14 @@ const messageMapper = text => {
3689
3715
  }));
3690
3716
  };
3691
3717
 
3692
- const Hints = () => {
3718
+ const Hints = _ref => {
3719
+ let {
3720
+ hints
3721
+ } = _ref;
3693
3722
  const {
3694
3723
  width
3695
3724
  } = bomMixerHooks.useWindowSize();
3696
- const app = useLlm(state => state.app);
3725
+ useLlm(state => state.app);
3697
3726
  const {
3698
3727
  send
3699
3728
  } = useLlmView(state => state.actions);
@@ -3734,12 +3763,12 @@ const Hints = () => {
3734
3763
  const getCards = () => {
3735
3764
  if (width < 768) {
3736
3765
  return jsxRuntime.jsx(react$1.Swiper, Object.assign({}, swiperProps, {
3737
- children: app === null || app === void 0 ? void 0 : app.contents.layoutBuilder.map((item, j) => jsxRuntime.jsx(react$1.SwiperSlide, {
3766
+ children: hints.map((item, j) => jsxRuntime.jsx(react$1.SwiperSlide, {
3738
3767
  children: getCard(item, j)
3739
3768
  }, j))
3740
3769
  }));
3741
3770
  } else {
3742
- return app === null || app === void 0 ? void 0 : app.contents.layoutBuilder.map(getCard);
3771
+ return hints.map(getCard);
3743
3772
  }
3744
3773
  };
3745
3774
  return jsxRuntime.jsx("section", {
@@ -3945,7 +3974,7 @@ const Intro = () => {
3945
3974
  return () => window.removeEventListener('message', onMessage);
3946
3975
  }
3947
3976
  return () => {};
3948
- }, [setIntroed]);
3977
+ }, [setIntroed, send]);
3949
3978
  react.useEffect(() => {
3950
3979
  const onLenisScroll = () => {
3951
3980
  if (iframeRef.current) {
@@ -3964,6 +3993,8 @@ const Intro = () => {
3964
3993
  return;
3965
3994
  }
3966
3995
  const contents = app.contents;
3996
+ const extendedWelcomeText = contents.extendedWelcomeText;
3997
+ const hints = (app === null || app === void 0 ? void 0 : app.contents.layoutBuilder) || [];
3967
3998
  return contents.customIntro ? skipCustomIntro ? null : jsxRuntime.jsx("section", {
3968
3999
  className: "llm__customIntro",
3969
4000
  children: jsxRuntime.jsx("iframe", {
@@ -3981,7 +4012,10 @@ const Intro = () => {
3981
4012
  className: "llm__intro-wrapper llm__row",
3982
4013
  children: [jsxRuntime.jsxs(framerMotion.motion.div, {
3983
4014
  variants: motionItem,
3984
- className: "llm__intro-text llm__col --md-6 --lg-5",
4015
+ className: bomCore.getClassNames('llm__intro-text llm__col', {
4016
+ '--md-6 --lg-5': hints.length > 0,
4017
+ '--sm-9 --md-8 --lg-7': hints.length === 0
4018
+ }),
3985
4019
  children: [jsxRuntime.jsx("div", {
3986
4020
  className: "llm__intro-blob",
3987
4021
  children: jsxRuntime.jsx(framerMotion.motion.div, {
@@ -3990,19 +4024,21 @@ const Intro = () => {
3990
4024
  animate: "bottom",
3991
4025
  children: jsxRuntime.jsx(Blob, {})
3992
4026
  })
3993
- }), embedded ? jsxRuntime.jsx(framerMotion.motion.h2, {
4027
+ }), extendedWelcomeText && (embedded ? jsxRuntime.jsx(framerMotion.motion.h2, {
3994
4028
  variants: motionItem,
3995
4029
  className: "llm__intro-title -llm-t-display2",
3996
- children: contents.extendedWelcomeText
4030
+ children: extendedWelcomeText
3997
4031
  }) : jsxRuntime.jsx(framerMotion.motion.h1, {
3998
4032
  variants: motionItem,
3999
4033
  className: "llm__intro-title -llm-t-display2",
4000
- children: contents.extendedWelcomeText
4001
- })]
4002
- }), jsxRuntime.jsx(framerMotion.motion.div, {
4034
+ children: extendedWelcomeText
4035
+ }))]
4036
+ }), hints.length > 0 && jsxRuntime.jsx(framerMotion.motion.div, {
4003
4037
  variants: motionItem,
4004
4038
  className: "llm__intro-hints llm__col --end-md-12 --md-6 --lg-5",
4005
- children: jsxRuntime.jsx(Hints, {})
4039
+ children: jsxRuntime.jsx(Hints, {
4040
+ hints: hints
4041
+ })
4006
4042
  })]
4007
4043
  })
4008
4044
  })
@@ -5904,6 +5940,7 @@ const Trigger = () => {
5904
5940
  } = useLlmView(state => state.actions);
5905
5941
  const label = bomMixerHooks.useLabel();
5906
5942
  const collapsedWelcomeText = messageMapper(app === null || app === void 0 ? void 0 : app.contents.collapsedWelcomeText);
5943
+ const collapsedWelcomeTextCta = messageMapper(app === null || app === void 0 ? void 0 : app.contents.collapsedWelcomeTextCta);
5907
5944
  const collapsedWelcomeTextHover = messageMapper(app === null || app === void 0 ? void 0 : app.contents.collapsedWelcomeTextHover);
5908
5945
  const position = theme.trigger.position || 'bottom';
5909
5946
  return jsxRuntime.jsxs(framerMotion.motion.nav, {
@@ -5928,22 +5965,22 @@ const Trigger = () => {
5928
5965
  children: [jsxRuntime.jsxs("button", {
5929
5966
  type: "button",
5930
5967
  className: bomCore.getClassNames('llm__trigger-btn', {
5931
- 'llm__trigger-btn--hover': app === null || app === void 0 ? void 0 : app.contents.collapsedWelcomeTextHover
5968
+ 'llm__trigger-btn--hover': collapsedWelcomeTextHover !== undefined
5932
5969
  }),
5933
5970
  children: [jsxRuntime.jsx(Blob, {}), jsxRuntime.jsx("span", {
5934
5971
  children: label('llm.button')
5935
5972
  })]
5936
- }), !opened && jsxRuntime.jsxs("div", {
5973
+ }), !opened && (collapsedWelcomeText || collapsedWelcomeTextCta || collapsedWelcomeTextHover) && jsxRuntime.jsxs("div", {
5937
5974
  className: "llm__trigger-popup -llm-t-body2",
5938
- children: [jsxRuntime.jsxs(framerMotion.motion.div, {
5975
+ children: [(collapsedWelcomeText || collapsedWelcomeTextCta) && jsxRuntime.jsxs(framerMotion.motion.div, {
5939
5976
  className: "llm__trigger-message",
5940
5977
  exit: {
5941
5978
  opacity: 0
5942
5979
  },
5943
- children: [jsxRuntime.jsx(Canvas, {}), collapsedWelcomeText, (app === null || app === void 0 ? void 0 : app.contents.collapsedWelcomeTextCta) && jsxRuntime.jsx("button", {
5980
+ children: [jsxRuntime.jsx(Canvas, {}), collapsedWelcomeText, collapsedWelcomeTextCta && jsxRuntime.jsx("button", {
5944
5981
  type: "button",
5945
5982
  className: "llm__trigger-cta",
5946
- children: app === null || app === void 0 ? void 0 : app.contents.collapsedWelcomeTextCta
5983
+ children: collapsedWelcomeTextCta
5947
5984
  })]
5948
5985
  }), collapsedWelcomeTextHover && jsxRuntime.jsxs(framerMotion.motion.div, {
5949
5986
  className: "llm__trigger-message",