@websolutespa/bom-llm 0.0.28 → 0.0.29

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @websolutespa/bom-llm
2
2
 
3
+ ## 0.0.29
4
+
5
+ ### Patch Changes
6
+
7
+ - Modified: theme settings, Added: Font component
8
+
3
9
  ## 0.0.28
4
10
 
5
11
  ### Patch Changes
@@ -1,5 +1,3 @@
1
- @import url("https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap");
2
- @import url("https://fonts.googleapis.com/css2?family=Work+Sans:ital,wght@0,100..900;1,100..900&display=swap");
3
1
  .llm html,
4
2
  .llm body,
5
3
  .llm p,
@@ -134,34 +132,46 @@
134
132
  background-color: transparent;
135
133
  }
136
134
 
135
+ /*
136
+ @import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap');
137
+ @import url('https://fonts.googleapis.com/css2?family=Work+Sans:ital,wght@0,100..900;1,100..900&display=swap');
138
+
137
139
  @font-face {
138
- font-family: "Aeonik";
139
- src: url("https://design.wslabs.it/llm/fonts/Aeonik-Medium.woff2") format("woff2"), url("https://design.wslabs.it/llm/fonts/Aeonik-Medium.woff2") format("woff");
140
+ font-family: 'Aeonik';
141
+ src:
142
+ url('https://design.wslabs.it/llm/fonts/Aeonik-Medium.woff2') format('woff2'),
143
+ url('https://design.wslabs.it/llm/fonts/Aeonik-Medium.woff2') format('woff');
140
144
  font-weight: 500;
141
145
  font-style: normal;
142
146
  font-display: swap;
143
147
  }
148
+
144
149
  @font-face {
145
- font-family: "Aeonik";
146
- src: url("https://design.wslabs.it/llm/fonts/Aeonik-Bold.woff2") format("woff2"), url("https://design.wslabs.it/llm/fonts/Aeonik-Bold.woff") format("woff");
150
+ font-family: 'Aeonik';
151
+ src:
152
+ url('https://design.wslabs.it/llm/fonts/Aeonik-Bold.woff2') format('woff2'),
153
+ url('https://design.wslabs.it/llm/fonts/Aeonik-Bold.woff') format('woff');
147
154
  font-weight: 700;
148
155
  font-style: normal;
149
156
  font-display: swap;
150
157
  }
158
+
151
159
  @font-face {
152
- font-family: "Capraia";
153
- src: url("https://design.wslabs.it/llm/fonts/Capraia-Regular.woff2") format("woff2");
160
+ font-family: 'Capraia';
161
+ src: url('https://design.wslabs.it/llm/fonts/Capraia-Regular.woff2') format('woff2');
154
162
  font-style: normal;
155
163
  font-weight: 400;
156
164
  font-display: swap;
157
165
  }
166
+
158
167
  @font-face {
159
- font-family: "Capraia";
160
- src: url("https://design.wslabs.it/llm/fonts/Capraia-Light_W.woff2") format("woff2");
168
+ font-family: 'Capraia';
169
+ src: url('https://design.wslabs.it/llm/fonts/Capraia-Light_W.woff2') format('woff2');
161
170
  font-weight: 300;
162
171
  font-style: normal;
163
172
  font-display: swap;
164
173
  }
174
+ */
165
175
  /*
166
176
  @font-face {
167
177
  font-family: 'Capraia';
@@ -1015,16 +1025,16 @@ llm-embed {
1015
1025
  }
1016
1026
  }
1017
1027
  @media (hover: hover) {
1018
- .llm .llm__trigger-btn--hover:hover + .llm__trigger-welcome > div {
1028
+ .llm .llm__trigger-btn--hover:hover + .llm__trigger-popup > div {
1019
1029
  opacity: 0;
1020
1030
  translate: -50% 10%;
1021
1031
  }
1022
- .llm .llm__trigger-btn--hover:hover + .llm__trigger-welcome > div + div {
1032
+ .llm .llm__trigger-btn--hover:hover + .llm__trigger-popup > div + div {
1023
1033
  opacity: 1;
1024
1034
  translate: -50% 0%;
1025
1035
  }
1026
1036
  }
1027
- .llm .llm__trigger-welcome > div {
1037
+ .llm .llm__trigger-popup > div {
1028
1038
  position: absolute;
1029
1039
  padding: clamp(16px, 16px + (100vw - 375px) / 1545 * 8, 24px);
1030
1040
  width: calc(100vw - 40px);
@@ -1034,23 +1044,24 @@ llm-embed {
1034
1044
  translate: -50% 0%;
1035
1045
  border-radius: 12px;
1036
1046
  text-align: center;
1037
- background: var(--llm-color-background);
1038
- color: var(--llm-color-foreground);
1047
+ background: var(--llm-popup-background);
1048
+ color: var(--llm-popup-foreground);
1049
+ border: var(--llm-popup-border, none);
1039
1050
  transition: 0.4s;
1040
1051
  pointer-events: auto;
1041
1052
  overflow: hidden;
1042
1053
  cursor: pointer;
1043
1054
  }
1044
- .llm .llm__trigger-welcome > div > span {
1055
+ .llm .llm__trigger-popup > div > span {
1045
1056
  position: relative;
1046
1057
  }
1047
- .llm .llm__trigger-welcome > div + div {
1058
+ .llm .llm__trigger-popup > div + div {
1048
1059
  width: calc(100vw - 40px);
1049
1060
  max-width: var(--llm-popup-max-width);
1050
1061
  translate: -50% 10%;
1051
1062
  opacity: 0;
1052
1063
  }
1053
- .llm .llm__trigger-welcome-cta {
1064
+ .llm .llm__trigger-cta {
1054
1065
  position: relative;
1055
1066
  display: block;
1056
1067
  margin: 12px auto 0 auto;
@@ -1303,7 +1314,7 @@ llm-embed {
1303
1314
  gap: clamp(8px, 8px + (100vw - 375px) / 1545 * 0, 8px);
1304
1315
  text-transform: uppercase;
1305
1316
  user-select: none;
1306
- color: var(--llm-color-foreground);
1317
+ color: var(--llm-color-title-foreground);
1307
1318
  pointer-events: auto;
1308
1319
  cursor: pointer;
1309
1320
  }
@@ -1379,6 +1390,7 @@ llm-embed {
1379
1390
  display: flex;
1380
1391
  flex-direction: column;
1381
1392
  gap: clamp(24px, 24px + (100vw - 375px) / 1545 * 16, 40px);
1393
+ color: var(--llm-color-title-foreground);
1382
1394
  }
1383
1395
  .llm .llm__intro-hints {
1384
1396
  margin-top: clamp(24px, 24px + (100vw - 375px) / 1545 * 16, 40px);
@@ -1444,11 +1456,14 @@ llm-embed {
1444
1456
  align-items: center;
1445
1457
  gap: clamp(8px, 8px + (100vw - 375px) / 1545 * 8, 16px);
1446
1458
  text-transform: uppercase;
1459
+ color: var(--llm-hint-title-color, inherit);
1447
1460
  }
1448
1461
  .llm .llm__hint-title i {
1462
+ flex-shrink: 0;
1449
1463
  display: block;
1450
- width: 18px;
1451
- height: 18px;
1464
+ width: var(--llm-hint-icon-width, 18px);
1465
+ height: var(--llm-hint-icon-height, 18px);
1466
+ color: var(--llm-hint-icon-color, inherit);
1452
1467
  }
1453
1468
  .llm .llm__hint-title i svg {
1454
1469
  fill: currentColor;
@@ -1653,8 +1668,9 @@ llm-embed {
1653
1668
  line-height: var(--llm-typography-body1-line-height);
1654
1669
  letter-spacing: var(--llm-typography-body1-letter-spacing);
1655
1670
  font-size: clamp(var(--llm-typography-body1-font-size-min) * 1px, var(--llm-typography-body1-font-size-min) * 1px + (100vw - 375px) / 1545 * (var(--llm-typography-body1-font-size-max) - var(--llm-typography-body1-font-size-min)), var(--llm-typography-body1-font-size-max) * 1px);
1656
- background: linear-gradient(rgba(154, 154, 154, 0.2) 10%, rgba(221, 221, 221, 0.1) 80%);
1657
- border: 1px solid rgba(237, 237, 237, 0.3);
1671
+ background: var(--llm-user-background);
1672
+ color: var(--llm-user-foreground);
1673
+ border: var(--llm-user-border);
1658
1674
  backdrop-filter: blur(20px);
1659
1675
  border-radius: 12px;
1660
1676
  padding: clamp(16px, 16px + (100vw - 375px) / 1545 * 8, 24px) clamp(24px, 24px + (100vw - 375px) / 1545 * 8, 32px);
@@ -1677,6 +1693,9 @@ llm-embed {
1677
1693
  }
1678
1694
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body {
1679
1695
  font-family: var(--llm-font-primary);
1696
+ background: var(--llm-assistant-background);
1697
+ color: var(--llm-assistant-foreground);
1698
+ border: var(--llm-assistant-border);
1680
1699
  /*
1681
1700
  &,
1682
1701
  p {
@@ -1752,7 +1771,7 @@ llm-embed {
1752
1771
  }
1753
1772
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body b,
1754
1773
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body strong {
1755
- font-weight: 900;
1774
+ font-weight: var(--llm-typography-cta2-font-weight);
1756
1775
  }
1757
1776
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body h1,
1758
1777
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body h2,
@@ -1788,11 +1807,11 @@ llm-embed {
1788
1807
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body blockquote {
1789
1808
  margin-bottom: var(--llm-markdown-margin-bottom);
1790
1809
  padding-left: 0.5em;
1791
- border-left: 4px solid rgba(255, 255, 255, 0.2);
1810
+ border-left: var(--llm-markdown-border);
1792
1811
  }
1793
1812
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body hr {
1794
1813
  border: none;
1795
- border-top: 2px solid rgba(255, 255, 255, 0.2);
1814
+ border-top: var(--llm-markdown-border);
1796
1815
  margin-top: var(--llm-markdown-margin-top);
1797
1816
  margin-bottom: var(--llm-markdown-margin-bottom);
1798
1817
  }
@@ -1800,13 +1819,13 @@ llm-embed {
1800
1819
  text-decoration: underline;
1801
1820
  }
1802
1821
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body a:link, .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body a:active, .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body a:visited, .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body a:hover {
1803
- color: var(--llm-color-neutral-100);
1822
+ color: var(--llm-markdown-accent);
1804
1823
  }
1805
1824
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body img {
1806
1825
  max-width: 320px;
1807
1826
  padding: 8px;
1808
1827
  border-radius: 8px;
1809
- border: var(--llm-pill-border);
1828
+ border: var(--llm-markdown-border);
1810
1829
  }
1811
1830
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body .llm__text-img {
1812
1831
  display: block;
@@ -1837,6 +1856,7 @@ llm-embed {
1837
1856
  display: flex;
1838
1857
  gap: clamp(8px, 8px + (100vw - 375px) / 1545 * 8, 16px);
1839
1858
  padding-top: clamp(16px, 16px + (100vw - 375px) / 1545 * 8, 24px);
1859
+ color: var(--llm-color-foreground);
1840
1860
  }
1841
1861
  .llm .llm__text-disclaimer a {
1842
1862
  text-decoration: underline;
@@ -1846,6 +1866,7 @@ llm-embed {
1846
1866
  width: 18px;
1847
1867
  height: 18px;
1848
1868
  flex-shrink: 0;
1869
+ color: var(--llm-color-accent-foreground);
1849
1870
  }
1850
1871
  .llm .llm__text-disclaimer i svg {
1851
1872
  display: block;
package/dist/umd/index.js CHANGED
@@ -17760,7 +17760,8 @@
17760
17760
 
17761
17761
  var font = {
17762
17762
  primary: "Aeonik, Arial, Helvetica, sans-serif",
17763
- secondary: "Capraia, Georgia, serif"
17763
+ secondary: "Capraia, Georgia, serif",
17764
+ source: "<link rel=\"stylesheet\" href=\"https://design.wslabs.it/llm/fonts/aeonik.css\"><link rel=\"stylesheet\" href=\"https://design.wslabs.it/llm/fonts/capraia.css\">"
17764
17765
  };
17765
17766
  var typography = {
17766
17767
  display1: {
@@ -17922,6 +17923,10 @@
17922
17923
  },
17923
17924
  background: "var(--llm-color-base-100)",
17924
17925
  foreground: "var(--llm-color-neutral-100)",
17926
+ title: {
17927
+ background: "var(--llm-color-background)",
17928
+ foreground: "var(--llm-color-foreground)"
17929
+ },
17925
17930
  primary: {
17926
17931
  background: "var(--llm-color-base-200)",
17927
17932
  foreground: "var(--llm-color-neutral-100)"
@@ -17948,13 +17953,16 @@
17948
17953
  foreground: "var(--llm-color-base-100)",
17949
17954
  boxShadow: "0 0 30px rgba(0, 0, 0, 0.3)"
17950
17955
  };
17956
+ var popup = {
17957
+ maxWidth: "210px",
17958
+ background: "var(--llm-color-title-background)",
17959
+ foreground: "var(--llm-color-title-foreground)",
17960
+ border: "none"
17961
+ };
17951
17962
  var triggerCta = {
17952
17963
  background: "var(--llm-color-neutral-100)",
17953
17964
  foreground: "var(--llm-color-base-100)"
17954
17965
  };
17955
- var popup = {
17956
- maxWidth: "210px"
17957
- };
17958
17966
  var hint = {
17959
17967
  fontFamily: "var(--llm-font-primary)",
17960
17968
  background: "linear-gradient(rgba(154, 154, 154, 0.2) 10%, rgba(221, 221, 221, 0.1) 80%)",
@@ -17962,10 +17970,18 @@
17962
17970
  border: "1px solid rgba(237, 237, 237, 0.3)",
17963
17971
  borderRadius: "12px"
17964
17972
  };
17973
+ var hintTitle = {
17974
+ color: "var(--llm-color-foreground)"
17975
+ };
17976
+ var hintIcon = {
17977
+ width: "18px",
17978
+ height: "18px",
17979
+ color: "var(--llm-color-foreground)"
17980
+ };
17965
17981
  var pill = {
17966
17982
  fontFamily: "var(--llm-font-primary)",
17967
17983
  background: "rgba(255, 255, 255, 0.2)",
17968
- foreground: "var(--llm-color-foreground)",
17984
+ foreground: "var(--llm-color-title-foreground)",
17969
17985
  border: "1px solid rgba(237, 237, 237, 0.3)",
17970
17986
  borderRadius: "5px"
17971
17987
  };
@@ -17978,6 +17994,23 @@
17978
17994
  var checkbox = {
17979
17995
  border: "2px solid var(--llm-color-neutral-100)"
17980
17996
  };
17997
+ var user = {
17998
+ background: "linear-gradient(rgba(154, 154, 154, 0.2) 10%, rgba(221, 221, 221, 0.1) 80%)",
17999
+ foreground: "var(--llm-color-title-foreground)",
18000
+ border: "1px solid rgba(237, 237, 237, 0.3)"
18001
+ };
18002
+ var assistant = {
18003
+ background: "none",
18004
+ foreground: "var(--llm-color-foreground)",
18005
+ border: "none"
18006
+ };
18007
+ var markdown = {
18008
+ marginTop: "0.5rem",
18009
+ marginBottom: "1rem",
18010
+ marginLeft: "1rem",
18011
+ accent: "var(--llm-color-foreground)",
18012
+ border: "1px solid rgba(237, 237, 237, 0.3)"
18013
+ };
17981
18014
  var card = {
17982
18015
  background: "var(--llm-color-neutral-100)",
17983
18016
  foreground: "var(--llm-color-neutral-900)",
@@ -17998,11 +18031,6 @@
17998
18031
  background: "var(--llm-color-neutral-100)",
17999
18032
  foreground: "var(--llm-color-neutral-900)"
18000
18033
  };
18001
- var markdown = {
18002
- marginTop: "0.5rem",
18003
- marginBottom: "1rem",
18004
- marginLeft: "1rem"
18005
- };
18006
18034
  var theme = {
18007
18035
  font: font,
18008
18036
  typography: typography,
@@ -18010,17 +18038,21 @@
18010
18038
  border: border,
18011
18039
  canvas: canvas,
18012
18040
  trigger: trigger$1,
18013
- triggerCta: triggerCta,
18014
18041
  popup: popup,
18042
+ triggerCta: triggerCta,
18015
18043
  hint: hint,
18044
+ hintTitle: hintTitle,
18045
+ hintIcon: hintIcon,
18016
18046
  pill: pill,
18017
18047
  input: input,
18018
18048
  checkbox: checkbox,
18049
+ user: user,
18050
+ assistant: assistant,
18051
+ markdown: markdown,
18019
18052
  card: card,
18020
18053
  cardVideo: cardVideo,
18021
18054
  product: product,
18022
- productLabel: productLabel,
18023
- markdown: markdown
18055
+ productLabel: productLabel
18024
18056
  };
18025
18057
 
18026
18058
  const defaultTheme = theme;
@@ -21169,6 +21201,46 @@ void main(void) {
21169
21201
  }, [canvasOffscreen, canvasRef, pixelRatio]);
21170
21202
  };
21171
21203
 
21204
+ /*
21205
+ <link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
21206
+ */
21207
+ const Font = () => {
21208
+ const app = useLlm(state => state.app);
21209
+ const theme = useLlm(state => state.theme);
21210
+ reactExports.useEffect(() => {
21211
+ if (app && isBrowser$1) {
21212
+ const head = document.querySelector('head');
21213
+ if (head) {
21214
+ const fontId = v4();
21215
+ const htmlText = theme.font.source || `
21216
+ <link rel="stylesheet" href="https://design.wslabs.it/llm/fonts/aeonik.css">
21217
+ <link rel="stylesheet" href="https://design.wslabs.it/llm/fonts/capraia.css">
21218
+ `;
21219
+ const parser = new DOMParser();
21220
+ const parsedDocument = parser.parseFromString(htmlText, 'text/html');
21221
+ const nodes = Array.from(parsedDocument.querySelectorAll('head>*'));
21222
+ const selector = `llm-font-${fontId}`;
21223
+ nodes.forEach(node => {
21224
+ node.classList.add(selector);
21225
+ head.appendChild(node);
21226
+ console.log('[mixer-llm] added font node', node);
21227
+ });
21228
+ return () => {
21229
+ const addedNodes = Array.from(document.querySelectorAll(`.${selector}`));
21230
+ addedNodes.forEach(node => {
21231
+ if (node.parentNode) {
21232
+ node.parentNode.removeChild(node);
21233
+ console.log('[mixer-llm] removed font node', node);
21234
+ }
21235
+ });
21236
+ };
21237
+ }
21238
+ }
21239
+ return () => {};
21240
+ }, [app]);
21241
+ return /*#__PURE__*/jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {});
21242
+ };
21243
+
21172
21244
  function Canvas() {
21173
21245
  const ref = reactExports.useRef(null);
21174
21246
  useCanvasOffscreen(ref);
@@ -27298,7 +27370,7 @@ void main(void) {
27298
27370
  })
27299
27371
  }), /*#__PURE__*/jsxRuntimeExports.jsx(motion.div, {
27300
27372
  variants: motionItem,
27301
- className: "llm__intro-title -llm-t-display-3",
27373
+ className: "llm__intro-title -llm-t-display-2",
27302
27374
  children: app?.contents.extendedWelcomeText
27303
27375
  })]
27304
27376
  }), /*#__PURE__*/jsxRuntimeExports.jsx(motion.div, {
@@ -33060,7 +33132,7 @@ void main(void) {
33060
33132
  children: label('llm.button')
33061
33133
  })]
33062
33134
  }), !opened && /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
33063
- className: "llm__trigger-welcome -llm-t-body-2",
33135
+ className: "llm__trigger-popup -llm-t-body-2",
33064
33136
  children: [/*#__PURE__*/jsxRuntimeExports.jsxs(motion.div, {
33065
33137
  exit: {
33066
33138
  opacity: 0
@@ -33069,7 +33141,7 @@ void main(void) {
33069
33141
  text: app?.contents.collapsedWelcomeText
33070
33142
  }), app?.contents.collapsedWelcomeTextCta && /*#__PURE__*/jsxRuntimeExports.jsx("button", {
33071
33143
  type: "button",
33072
- className: "llm__trigger-welcome-cta",
33144
+ className: "llm__trigger-cta",
33073
33145
  children: app?.contents.collapsedWelcomeTextCta
33074
33146
  })]
33075
33147
  }), app?.contents.collapsedWelcomeTextHover && /*#__PURE__*/jsxRuntimeExports.jsxs(motion.div, {
@@ -33132,8 +33204,8 @@ void main(void) {
33132
33204
  });
33133
33205
  if (mounted) {
33134
33206
  return /*#__PURE__*/jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {
33135
- children: app && /*#__PURE__*/jsxRuntimeExports.jsx(CanvasOffscreenProvider, {
33136
- children: /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
33207
+ children: app && /*#__PURE__*/jsxRuntimeExports.jsxs(CanvasOffscreenProvider, {
33208
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx(Font, {}), /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
33137
33209
  ref: innerRef,
33138
33210
  className: classNames,
33139
33211
  ...props,
@@ -33146,7 +33218,7 @@ void main(void) {
33146
33218
  initial: false,
33147
33219
  children: shouldShowTrigger && /*#__PURE__*/jsxRuntimeExports.jsx(Trigger, {}, "trigger")
33148
33220
  })]
33149
- })
33221
+ })]
33150
33222
  })
33151
33223
  });
33152
33224
  } else {