@websolutespa/bom-mixer-llm 1.8.5 → 1.8.7

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 (54) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/index.css +133 -36
  3. package/dist/cjs/index.js +100 -51
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/esm/index.css +133 -36
  6. package/dist/esm/llm/components/Font/font.js +45 -0
  7. package/dist/esm/llm/components/Font/font.js.map +1 -0
  8. package/dist/esm/llm/components/Intro/intro.js +1 -1
  9. package/dist/esm/llm/components/Product/product.js +11 -31
  10. package/dist/esm/llm/components/Product/product.js.map +1 -1
  11. package/dist/esm/llm/components/ProductGroup/product-group.js +1 -1
  12. package/dist/esm/llm/components/ProductGroup/product-group.js.map +1 -1
  13. package/dist/esm/llm/components/Text/text.js.map +1 -1
  14. package/dist/esm/llm/components/Trigger/trigger.js +2 -2
  15. package/dist/esm/llm/components/Trigger/trigger.js.map +1 -1
  16. package/dist/esm/llm/llm.js +4 -3
  17. package/dist/esm/llm/llm.js.map +1 -1
  18. package/dist/esm/llm/theme.json.js +46 -14
  19. package/dist/esm/llm/theme.json.js.map +1 -1
  20. package/dist/types/llm/components/Font/font.d.ts +3 -0
  21. package/dist/types/llm/components/Font/font.d.ts.map +1 -0
  22. package/dist/types/llm/components/Product/product.d.ts.map +1 -1
  23. package/dist/types/llm/components/Text/text.d.ts.map +1 -1
  24. package/dist/types/llm/llm.d.ts.map +1 -1
  25. package/dist/types/llm/theme.d.ts +36 -8
  26. package/dist/types/llm/theme.d.ts.map +1 -1
  27. package/dist/types/useLlm/mock-app.gs1.d.ts +3 -0
  28. package/dist/types/useLlm/mock-app.gs1.d.ts.map +1 -0
  29. package/dist/types/useLlm/mock-app.lfo.d.ts.map +1 -1
  30. package/dist/types/useLlm/mock-app.silicon.d.ts.map +1 -1
  31. package/dist/types/useLlm/mock-thread.gs1.d.ts +3 -0
  32. package/dist/types/useLlm/mock-thread.gs1.d.ts.map +1 -0
  33. package/package.json +1 -1
  34. package/src/llm/components/Font/font.tsx +55 -0
  35. package/src/llm/components/Grid/_style.scss +14 -11
  36. package/src/llm/components/Header/_style.scss +1 -1
  37. package/src/llm/components/Hints/_style.scss +5 -2
  38. package/src/llm/components/Intro/_style.scss +1 -0
  39. package/src/llm/components/Intro/intro.tsx +1 -1
  40. package/src/llm/components/Product/_style.scss +6 -4
  41. package/src/llm/components/Product/product.tsx +11 -25
  42. package/src/llm/components/ProductGroup/product-group.tsx +1 -1
  43. package/src/llm/components/Prompt/_style.scss +9 -3
  44. package/src/llm/components/Text/_style.scss +13 -8
  45. package/src/llm/components/Text/text.tsx +2 -0
  46. package/src/llm/components/Trigger/_style.scss +6 -5
  47. package/src/llm/components/Trigger/trigger.tsx +2 -2
  48. package/src/llm/llm.tsx +2 -0
  49. package/src/llm/scss/_fonts.scss +2 -0
  50. package/src/llm/theme.json +38 -10
  51. package/src/useLlm/mock-app.gs1.ts +244 -0
  52. package/src/useLlm/mock-app.lfo.ts +2 -13
  53. package/src/useLlm/mock-app.silicon.ts +2 -1
  54. package/src/useLlm/mock-thread.gs1.ts +122 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @websolutespa/bom-mixer-llm
2
2
 
3
+ ## 1.8.7
4
+
5
+ ### Patch Changes
6
+
7
+ - Modified: theme settings, Added: Font component
8
+
9
+ ## 1.8.6
10
+
11
+ ### Patch Changes
12
+
13
+ - Modified: Product Card & Product Card Group style
14
+
3
15
  ## 1.8.5
4
16
 
5
17
  ### Patch Changes
@@ -1,33 +1,43 @@
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");
1
+ /*
2
+ @import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap');
3
+ @import url('https://fonts.googleapis.com/css2?family=Work+Sans:ital,wght@0,100..900;1,100..900&display=swap');
4
+
3
5
  @font-face {
4
- font-family: "Aeonik";
5
- 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");
6
+ font-family: 'Aeonik';
7
+ src:
8
+ url('https://design.wslabs.it/llm/fonts/Aeonik-Medium.woff2') format('woff2'),
9
+ url('https://design.wslabs.it/llm/fonts/Aeonik-Medium.woff2') format('woff');
6
10
  font-weight: 500;
7
11
  font-style: normal;
8
12
  font-display: swap;
9
13
  }
14
+
10
15
  @font-face {
11
- font-family: "Aeonik";
12
- 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");
16
+ font-family: 'Aeonik';
17
+ src:
18
+ url('https://design.wslabs.it/llm/fonts/Aeonik-Bold.woff2') format('woff2'),
19
+ url('https://design.wslabs.it/llm/fonts/Aeonik-Bold.woff') format('woff');
13
20
  font-weight: 700;
14
21
  font-style: normal;
15
22
  font-display: swap;
16
23
  }
24
+
17
25
  @font-face {
18
- font-family: "Capraia";
19
- src: url("https://design.wslabs.it/llm/fonts/Capraia-Regular.woff2") format("woff2");
26
+ font-family: 'Capraia';
27
+ src: url('https://design.wslabs.it/llm/fonts/Capraia-Regular.woff2') format('woff2');
20
28
  font-style: normal;
21
29
  font-weight: 400;
22
30
  font-display: swap;
23
31
  }
32
+
24
33
  @font-face {
25
- font-family: "Capraia";
26
- src: url("https://design.wslabs.it/llm/fonts/Capraia-Light_W.woff2") format("woff2");
34
+ font-family: 'Capraia';
35
+ src: url('https://design.wslabs.it/llm/fonts/Capraia-Light_W.woff2') format('woff2');
27
36
  font-weight: 300;
28
37
  font-style: normal;
29
38
  font-display: swap;
30
39
  }
40
+ */
31
41
  /*
32
42
  @font-face {
33
43
  font-family: 'Capraia';
@@ -881,16 +891,16 @@ llm-embed {
881
891
  }
882
892
  }
883
893
  @media (hover: hover) {
884
- .llm .llm__trigger-btn--hover:hover + .llm__trigger-welcome > div {
894
+ .llm .llm__trigger-btn--hover:hover + .llm__trigger-popup > div {
885
895
  opacity: 0;
886
896
  translate: -50% 10%;
887
897
  }
888
- .llm .llm__trigger-btn--hover:hover + .llm__trigger-welcome > div + div {
898
+ .llm .llm__trigger-btn--hover:hover + .llm__trigger-popup > div + div {
889
899
  opacity: 1;
890
900
  translate: -50% 0%;
891
901
  }
892
902
  }
893
- .llm .llm__trigger-welcome > div {
903
+ .llm .llm__trigger-popup > div {
894
904
  position: absolute;
895
905
  padding: clamp(16px, 16px + (100vw - 375px) / 1545 * 8, 24px);
896
906
  width: calc(100vw - 40px);
@@ -900,23 +910,24 @@ llm-embed {
900
910
  translate: -50% 0%;
901
911
  border-radius: 12px;
902
912
  text-align: center;
903
- background: var(--llm-color-background);
904
- color: var(--llm-color-foreground);
913
+ background: var(--llm-popup-background);
914
+ color: var(--llm-popup-foreground);
915
+ border: var(--llm-popup-border, none);
905
916
  transition: 0.4s;
906
917
  pointer-events: auto;
907
918
  overflow: hidden;
908
919
  cursor: pointer;
909
920
  }
910
- .llm .llm__trigger-welcome > div > span {
921
+ .llm .llm__trigger-popup > div > span {
911
922
  position: relative;
912
923
  }
913
- .llm .llm__trigger-welcome > div + div {
924
+ .llm .llm__trigger-popup > div + div {
914
925
  width: calc(100vw - 40px);
915
926
  max-width: var(--llm-popup-max-width);
916
927
  translate: -50% 10%;
917
928
  opacity: 0;
918
929
  }
919
- .llm .llm__trigger-welcome-cta {
930
+ .llm .llm__trigger-cta {
920
931
  position: relative;
921
932
  display: block;
922
933
  margin: 12px auto 0 auto;
@@ -1169,7 +1180,7 @@ llm-embed {
1169
1180
  gap: clamp(8px, 8px + (100vw - 375px) / 1545 * 0, 8px);
1170
1181
  text-transform: uppercase;
1171
1182
  user-select: none;
1172
- color: var(--llm-color-foreground);
1183
+ color: var(--llm-color-title-foreground);
1173
1184
  pointer-events: auto;
1174
1185
  cursor: pointer;
1175
1186
  }
@@ -1245,6 +1256,7 @@ llm-embed {
1245
1256
  display: flex;
1246
1257
  flex-direction: column;
1247
1258
  gap: clamp(24px, 24px + (100vw - 375px) / 1545 * 16, 40px);
1259
+ color: var(--llm-color-title-foreground);
1248
1260
  }
1249
1261
  .llm .llm__intro-hints {
1250
1262
  margin-top: clamp(24px, 24px + (100vw - 375px) / 1545 * 16, 40px);
@@ -1310,11 +1322,14 @@ llm-embed {
1310
1322
  align-items: center;
1311
1323
  gap: clamp(8px, 8px + (100vw - 375px) / 1545 * 8, 16px);
1312
1324
  text-transform: uppercase;
1325
+ color: var(--llm-hint-title-color, inherit);
1313
1326
  }
1314
1327
  .llm .llm__hint-title i {
1328
+ flex-shrink: 0;
1315
1329
  display: block;
1316
- width: 18px;
1317
- height: 18px;
1330
+ width: var(--llm-hint-icon-width, 18px);
1331
+ height: var(--llm-hint-icon-height, 18px);
1332
+ color: var(--llm-hint-icon-color, inherit);
1318
1333
  }
1319
1334
  .llm .llm__hint-title i svg {
1320
1335
  fill: currentColor;
@@ -1327,7 +1342,7 @@ llm-embed {
1327
1342
  gap: clamp(8px, 8px + (100vw - 375px) / 1545 * 0, 8px);
1328
1343
  display: flex;
1329
1344
  flex-wrap: nowrap;
1330
- align-items: flex-end;
1345
+ align-items: center;
1331
1346
  }
1332
1347
  .llm .llm__prompt-input {
1333
1348
  position: relative;
@@ -1492,15 +1507,21 @@ llm-embed {
1492
1507
  justify-content: center;
1493
1508
  align-items: center;
1494
1509
  column-gap: 4px;
1495
- padding: 6px 0;
1496
1510
  right: 0;
1497
1511
  left: 0;
1498
- font-size: 12px;
1499
1512
  color: var(--llm-color-foreground);
1500
1513
  opacity: 0.4;
1501
1514
  transition: opacity ease-in-out 250ms;
1502
1515
  pointer-events: auto;
1503
1516
  cursor: pointer;
1517
+ padding: 4px 0 0 0;
1518
+ font-size: 11px;
1519
+ }
1520
+ @media (min-width: 1024px) {
1521
+ .llm .llm__prompt-powered-by {
1522
+ padding: 6px 0;
1523
+ font-size: 12px;
1524
+ }
1504
1525
  }
1505
1526
  .llm .llm__prompt-powered-by:hover {
1506
1527
  opacity: 1;
@@ -1513,8 +1534,9 @@ llm-embed {
1513
1534
  line-height: var(--llm-typography-body1-line-height);
1514
1535
  letter-spacing: var(--llm-typography-body1-letter-spacing);
1515
1536
  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);
1516
- background: linear-gradient(rgba(154, 154, 154, 0.2) 10%, rgba(221, 221, 221, 0.1) 80%);
1517
- border: 1px solid rgba(237, 237, 237, 0.3);
1537
+ background: var(--llm-user-background);
1538
+ color: var(--llm-user-foreground);
1539
+ border: var(--llm-user-border);
1518
1540
  backdrop-filter: blur(20px);
1519
1541
  border-radius: 12px;
1520
1542
  padding: clamp(16px, 16px + (100vw - 375px) / 1545 * 8, 24px) clamp(24px, 24px + (100vw - 375px) / 1545 * 8, 32px);
@@ -1537,6 +1559,9 @@ llm-embed {
1537
1559
  }
1538
1560
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body {
1539
1561
  font-family: var(--llm-font-primary);
1562
+ background: var(--llm-assistant-background);
1563
+ color: var(--llm-assistant-foreground);
1564
+ border: var(--llm-assistant-border);
1540
1565
  /*
1541
1566
  &,
1542
1567
  p {
@@ -1612,7 +1637,7 @@ llm-embed {
1612
1637
  }
1613
1638
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body b,
1614
1639
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body strong {
1615
- font-weight: 900;
1640
+ font-weight: var(--llm-typography-cta2-font-weight);
1616
1641
  }
1617
1642
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body h1,
1618
1643
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body h2,
@@ -1648,11 +1673,11 @@ llm-embed {
1648
1673
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body blockquote {
1649
1674
  margin-bottom: var(--llm-markdown-margin-bottom);
1650
1675
  padding-left: 0.5em;
1651
- border-left: 4px solid rgba(255, 255, 255, 0.2);
1676
+ border-left: var(--llm-markdown-border);
1652
1677
  }
1653
1678
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body hr {
1654
1679
  border: none;
1655
- border-top: 2px solid rgba(255, 255, 255, 0.2);
1680
+ border-top: var(--llm-markdown-border);
1656
1681
  margin-top: var(--llm-markdown-margin-top);
1657
1682
  margin-bottom: var(--llm-markdown-margin-bottom);
1658
1683
  }
@@ -1660,13 +1685,13 @@ llm-embed {
1660
1685
  text-decoration: underline;
1661
1686
  }
1662
1687
  .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 {
1663
- color: var(--llm-color-neutral-100);
1688
+ color: var(--llm-markdown-accent);
1664
1689
  }
1665
1690
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body img {
1666
1691
  max-width: 320px;
1667
1692
  padding: 8px;
1668
1693
  border-radius: 8px;
1669
- border: var(--llm-pill-border);
1694
+ border: var(--llm-markdown-border);
1670
1695
  }
1671
1696
  .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body .llm__text-img {
1672
1697
  display: block;
@@ -1697,6 +1722,7 @@ llm-embed {
1697
1722
  display: flex;
1698
1723
  gap: clamp(8px, 8px + (100vw - 375px) / 1545 * 8, 16px);
1699
1724
  padding-top: clamp(16px, 16px + (100vw - 375px) / 1545 * 8, 24px);
1725
+ color: var(--llm-color-foreground);
1700
1726
  }
1701
1727
  .llm .llm__text-disclaimer a {
1702
1728
  text-decoration: underline;
@@ -1706,6 +1732,7 @@ llm-embed {
1706
1732
  width: 18px;
1707
1733
  height: 18px;
1708
1734
  flex-shrink: 0;
1735
+ color: var(--llm-color-accent-foreground);
1709
1736
  }
1710
1737
  .llm .llm__text-disclaimer i svg {
1711
1738
  display: block;
@@ -2079,13 +2106,19 @@ llm-embed {
2079
2106
  .llm .llm__gridrow {
2080
2107
  --grid-columns: var(--llm-grid-columns, 12);
2081
2108
  --grid-size: var(--llm-grid-size, 1fr);
2082
- --grid-column-gap: var(--llm-grid-column-gap, 2rem);
2083
- --grid-row-gap: var(--llm-grid-row-gap, 2rem);
2109
+ --grid-column-gap: var(--llm-grid-column-gap, 1rem);
2110
+ --grid-row-gap: var(--llm-grid-row-gap, 1rem);
2084
2111
  display: grid;
2085
2112
  grid-template-columns: repeat(var(--grid-columns), var(--grid-size));
2086
2113
  grid-column-gap: var(--grid-column-gap);
2087
2114
  grid-row-gap: var(--grid-row-gap);
2088
2115
  }
2116
+ @media (min-width: 768px) {
2117
+ .llm .llm__gridrow {
2118
+ --grid-column-gap: var(--llm-grid-column-gap, 2rem);
2119
+ --grid-row-gap: var(--llm-grid-row-gap, 2rem);
2120
+ }
2121
+ }
2089
2122
  .llm .llm__grid {
2090
2123
  --grid-column: var(--llm-grid-columns, 12);
2091
2124
  grid-column: span var(--grid-column);
@@ -2102,6 +2135,30 @@ llm-embed {
2102
2135
  .llm .llm__grid.--xs-4 {
2103
2136
  --grid-column: 4;
2104
2137
  }
2138
+ .llm .llm__grid.--xs-5 {
2139
+ --grid-column: 5;
2140
+ }
2141
+ .llm .llm__grid.--xs-6 {
2142
+ --grid-column: 6;
2143
+ }
2144
+ .llm .llm__grid.--xs-7 {
2145
+ --grid-column: 7;
2146
+ }
2147
+ .llm .llm__grid.--xs-8 {
2148
+ --grid-column: 8;
2149
+ }
2150
+ .llm .llm__grid.--xs-9 {
2151
+ --grid-column: 9;
2152
+ }
2153
+ .llm .llm__grid.--xs-10 {
2154
+ --grid-column: 10;
2155
+ }
2156
+ .llm .llm__grid.--xs-11 {
2157
+ --grid-column: 11;
2158
+ }
2159
+ .llm .llm__grid.--xs-12 {
2160
+ --grid-column: 12;
2161
+ }
2105
2162
  @media (min-width: 768px) {
2106
2163
  .llm .llm__grid.--sm-1 {
2107
2164
  --grid-column: 1;
@@ -2122,6 +2179,46 @@ llm-embed {
2122
2179
  --grid-column: 4;
2123
2180
  }
2124
2181
  }
2182
+ @media (min-width: 768px) {
2183
+ .llm .llm__grid.--sm-5 {
2184
+ --grid-column: 5;
2185
+ }
2186
+ }
2187
+ @media (min-width: 768px) {
2188
+ .llm .llm__grid.--sm-6 {
2189
+ --grid-column: 6;
2190
+ }
2191
+ }
2192
+ @media (min-width: 768px) {
2193
+ .llm .llm__grid.--sm-7 {
2194
+ --grid-column: 7;
2195
+ }
2196
+ }
2197
+ @media (min-width: 768px) {
2198
+ .llm .llm__grid.--sm-8 {
2199
+ --grid-column: 8;
2200
+ }
2201
+ }
2202
+ @media (min-width: 768px) {
2203
+ .llm .llm__grid.--sm-9 {
2204
+ --grid-column: 9;
2205
+ }
2206
+ }
2207
+ @media (min-width: 768px) {
2208
+ .llm .llm__grid.--sm-10 {
2209
+ --grid-column: 10;
2210
+ }
2211
+ }
2212
+ @media (min-width: 768px) {
2213
+ .llm .llm__grid.--sm-11 {
2214
+ --grid-column: 11;
2215
+ }
2216
+ }
2217
+ @media (min-width: 768px) {
2218
+ .llm .llm__grid.--sm-12 {
2219
+ --grid-column: 12;
2220
+ }
2221
+ }
2125
2222
  @media (min-width: 1024px) {
2126
2223
  .llm .llm__grid.--md-1 {
2127
2224
  --grid-column: 1;
@@ -2315,6 +2412,9 @@ llm-embed {
2315
2412
  overflow: hidden;
2316
2413
  font-weight: 100;
2317
2414
  }
2415
+ .llm .llm__product:hover .llm__product-title {
2416
+ text-decoration: underline;
2417
+ }
2318
2418
  .llm .llm__product-media {
2319
2419
  position: relative;
2320
2420
  padding: 1rem;
@@ -2380,9 +2480,6 @@ llm-embed {
2380
2480
  -webkit-line-clamp: 2;
2381
2481
  -webkit-box-orient: vertical;
2382
2482
  }
2383
- .llm .llm__product-title:hover {
2384
- text-decoration: underline;
2385
- }
2386
2483
  .llm .llm__product-abstract {
2387
2484
  line-height: 1;
2388
2485
  font-family: var(--llm-font-secondary);
package/dist/cjs/index.js CHANGED
@@ -159,7 +159,8 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
159
159
 
160
160
  var font = {
161
161
  primary: "Aeonik, Arial, Helvetica, sans-serif",
162
- secondary: "Capraia, Georgia, serif"
162
+ secondary: "Capraia, Georgia, serif",
163
+ 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\">"
163
164
  };
164
165
  var typography = {
165
166
  display1: {
@@ -321,6 +322,10 @@ var color = {
321
322
  },
322
323
  background: "var(--llm-color-base-100)",
323
324
  foreground: "var(--llm-color-neutral-100)",
325
+ title: {
326
+ background: "var(--llm-color-background)",
327
+ foreground: "var(--llm-color-foreground)"
328
+ },
324
329
  primary: {
325
330
  background: "var(--llm-color-base-200)",
326
331
  foreground: "var(--llm-color-neutral-100)"
@@ -347,13 +352,16 @@ var trigger = {
347
352
  foreground: "var(--llm-color-base-100)",
348
353
  boxShadow: "0 0 30px rgba(0, 0, 0, 0.3)"
349
354
  };
355
+ var popup = {
356
+ maxWidth: "210px",
357
+ background: "var(--llm-color-title-background)",
358
+ foreground: "var(--llm-color-title-foreground)",
359
+ border: "none"
360
+ };
350
361
  var triggerCta = {
351
362
  background: "var(--llm-color-neutral-100)",
352
363
  foreground: "var(--llm-color-base-100)"
353
364
  };
354
- var popup = {
355
- maxWidth: "210px"
356
- };
357
365
  var hint = {
358
366
  fontFamily: "var(--llm-font-primary)",
359
367
  background: "linear-gradient(rgba(154, 154, 154, 0.2) 10%, rgba(221, 221, 221, 0.1) 80%)",
@@ -361,10 +369,18 @@ var hint = {
361
369
  border: "1px solid rgba(237, 237, 237, 0.3)",
362
370
  borderRadius: "12px"
363
371
  };
372
+ var hintTitle = {
373
+ color: "var(--llm-color-foreground)"
374
+ };
375
+ var hintIcon = {
376
+ width: "18px",
377
+ height: "18px",
378
+ color: "var(--llm-color-foreground)"
379
+ };
364
380
  var pill = {
365
381
  fontFamily: "var(--llm-font-primary)",
366
382
  background: "rgba(255, 255, 255, 0.2)",
367
- foreground: "var(--llm-color-foreground)",
383
+ foreground: "var(--llm-color-title-foreground)",
368
384
  border: "1px solid rgba(237, 237, 237, 0.3)",
369
385
  borderRadius: "5px"
370
386
  };
@@ -377,6 +393,23 @@ var input = {
377
393
  var checkbox = {
378
394
  border: "2px solid var(--llm-color-neutral-100)"
379
395
  };
396
+ var user = {
397
+ background: "linear-gradient(rgba(154, 154, 154, 0.2) 10%, rgba(221, 221, 221, 0.1) 80%)",
398
+ foreground: "var(--llm-color-title-foreground)",
399
+ border: "1px solid rgba(237, 237, 237, 0.3)"
400
+ };
401
+ var assistant = {
402
+ background: "none",
403
+ foreground: "var(--llm-color-foreground)",
404
+ border: "none"
405
+ };
406
+ var markdown = {
407
+ marginTop: "0.5rem",
408
+ marginBottom: "1rem",
409
+ marginLeft: "1rem",
410
+ accent: "var(--llm-color-foreground)",
411
+ border: "1px solid rgba(237, 237, 237, 0.3)"
412
+ };
380
413
  var card = {
381
414
  background: "var(--llm-color-neutral-100)",
382
415
  foreground: "var(--llm-color-neutral-900)",
@@ -397,11 +430,6 @@ var productLabel = {
397
430
  background: "var(--llm-color-neutral-100)",
398
431
  foreground: "var(--llm-color-neutral-900)"
399
432
  };
400
- var markdown = {
401
- marginTop: "0.5rem",
402
- marginBottom: "1rem",
403
- marginLeft: "1rem"
404
- };
405
433
  var theme = {
406
434
  font: font,
407
435
  typography: typography,
@@ -409,17 +437,21 @@ var theme = {
409
437
  border: border,
410
438
  canvas: canvas,
411
439
  trigger: trigger,
412
- triggerCta: triggerCta,
413
440
  popup: popup,
441
+ triggerCta: triggerCta,
414
442
  hint: hint,
443
+ hintTitle: hintTitle,
444
+ hintIcon: hintIcon,
415
445
  pill: pill,
416
446
  input: input,
417
447
  checkbox: checkbox,
448
+ user: user,
449
+ assistant: assistant,
450
+ markdown: markdown,
418
451
  card: card,
419
452
  cardVideo: cardVideo,
420
453
  product: product,
421
- productLabel: productLabel,
422
- markdown: markdown
454
+ productLabel: productLabel
423
455
  };
424
456
 
425
457
  const defaultTheme = theme;
@@ -3177,6 +3209,43 @@ const useCanvasOffscreen = canvasRef => {
3177
3209
  }, [canvasOffscreen, canvasRef, pixelRatio]);
3178
3210
  };
3179
3211
 
3212
+ const Font = () => {
3213
+ const app = useLlm(state => state.app);
3214
+ const theme = useLlm(state => state.theme);
3215
+ react.useEffect(() => {
3216
+ if (app && bomCore.isBrowser) {
3217
+ const head = document.querySelector('head');
3218
+ if (head) {
3219
+ const fontId = uuid.v4();
3220
+ const htmlText = theme.font.source || `
3221
+ <link rel="stylesheet" href="https://design.wslabs.it/llm/fonts/aeonik.css">
3222
+ <link rel="stylesheet" href="https://design.wslabs.it/llm/fonts/capraia.css">
3223
+ `;
3224
+ const parser = new DOMParser();
3225
+ const parsedDocument = parser.parseFromString(htmlText, 'text/html');
3226
+ const nodes = Array.from(parsedDocument.querySelectorAll('head>*'));
3227
+ const selector = `llm-font-${fontId}`;
3228
+ nodes.forEach(node => {
3229
+ node.classList.add(selector);
3230
+ head.appendChild(node);
3231
+ console.log('[mixer-llm] added font node', node);
3232
+ });
3233
+ return () => {
3234
+ const addedNodes = Array.from(document.querySelectorAll(`.${selector}`));
3235
+ addedNodes.forEach(node => {
3236
+ if (node.parentNode) {
3237
+ node.parentNode.removeChild(node);
3238
+ console.log('[mixer-llm] removed font node', node);
3239
+ }
3240
+ });
3241
+ };
3242
+ }
3243
+ }
3244
+ return () => {};
3245
+ }, [app]);
3246
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {});
3247
+ };
3248
+
3180
3249
  function Canvas() {
3181
3250
  const ref = react.useRef(null);
3182
3251
  useCanvasOffscreen(ref);
@@ -3540,7 +3609,7 @@ const Intro = () => {
3540
3609
  })
3541
3610
  }), jsxRuntime.jsx(framerMotion.motion.div, {
3542
3611
  variants: motionItem,
3543
- className: "llm__intro-title -llm-t-display-3",
3612
+ className: "llm__intro-title -llm-t-display-2",
3544
3613
  children: app === null || app === void 0 ? void 0 : app.contents.extendedWelcomeText
3545
3614
  })]
3546
3615
  }), jsxRuntime.jsx(framerMotion.motion.div, {
@@ -4846,7 +4915,14 @@ const ProductWrapper = _a => {
4846
4915
  props = __rest(_a, ["children"]);
4847
4916
  // const label = useLabel();
4848
4917
  const classNames = bomCore.getClassNames('llm__product', `llm__product--${props.productType}`);
4849
- return jsxRuntime.jsx("div", {
4918
+ return props.url ? jsxRuntime.jsx("a", {
4919
+ className: classNames,
4920
+ href: props.url,
4921
+ target: "_blank",
4922
+ rel: "noreferrer",
4923
+ "aria-label": props.title,
4924
+ children: children
4925
+ }) : jsxRuntime.jsx("div", {
4850
4926
  className: classNames,
4851
4927
  children: children
4852
4928
  });
@@ -4864,12 +4940,8 @@ const Product = props => {
4864
4940
  const hasAvailability = props.availability != null;
4865
4941
  const labelKey = props.label ? `-${transliteration.slugify(props.label)}` : '';
4866
4942
  return jsxRuntime.jsxs(ProductWrapper, Object.assign({}, props, {
4867
- children: [props.media.type === 'image' && props.url && jsxRuntime.jsxs("a", {
4943
+ children: [props.media.type === 'image' && jsxRuntime.jsxs("div", {
4868
4944
  className: "llm__product-media",
4869
- href: props.url,
4870
- target: "_blank",
4871
- rel: "noreferrer",
4872
- "aria-label": label('llm.tellMeMore'),
4873
4945
  children: [jsxRuntime.jsx("div", {
4874
4946
  className: "llm__product-asset",
4875
4947
  children: jsxRuntime.jsx("img", {
@@ -4884,18 +4956,6 @@ const Product = props => {
4884
4956
  },
4885
4957
  children: props.label
4886
4958
  })]
4887
- }), props.media.type === 'image' && !props.url && jsxRuntime.jsxs("div", {
4888
- className: "llm__product-media",
4889
- children: [jsxRuntime.jsx("div", {
4890
- className: "llm__product-asset",
4891
- children: jsxRuntime.jsx("img", {
4892
- src: props.media.src,
4893
- alt: props.title
4894
- })
4895
- }), props.label && jsxRuntime.jsx("div", {
4896
- className: "llm__product-label",
4897
- children: props.label
4898
- })]
4899
4959
  }), jsxRuntime.jsxs("div", {
4900
4960
  className: "llm__product-content",
4901
4961
  children: [props.sku && jsxRuntime.jsx("div", {
@@ -4903,15 +4963,7 @@ const Product = props => {
4903
4963
  children: props.sku
4904
4964
  }), jsxRuntime.jsxs("div", {
4905
4965
  className: "llm__product-grow",
4906
- children: [props.title && props.url && jsxRuntime.jsx("a", {
4907
- className: "llm__product-title",
4908
- href: props.url,
4909
- target: "_blank",
4910
- rel: "noreferrer",
4911
- dangerouslySetInnerHTML: {
4912
- __html: props.title
4913
- }
4914
- }), props.title && !props.url && jsxRuntime.jsx("div", {
4966
+ children: [props.title && jsxRuntime.jsx("div", {
4915
4967
  className: "llm__product-title",
4916
4968
  dangerouslySetInnerHTML: {
4917
4969
  __html: props.title
@@ -4939,11 +4991,8 @@ const Product = props => {
4939
4991
  }) : jsxRuntime.jsx("div", {
4940
4992
  className: "llm__product-soldout",
4941
4993
  children: label('llm.soldOut')
4942
- })), props.cta && props.url && jsxRuntime.jsxs("a", {
4994
+ })), props.cta && jsxRuntime.jsxs("div", {
4943
4995
  className: "llm__product-cta",
4944
- href: props.url,
4945
- target: "_blank",
4946
- rel: "noreferrer",
4947
4996
  children: [jsxRuntime.jsx("span", {
4948
4997
  children: props.cta
4949
4998
  }), " ", jsxRuntime.jsx(bomMixerIcons.IconLlmChevronRightCircle, {})]
@@ -4979,7 +5028,7 @@ const ProductGroup = props => {
4979
5028
  children: jsxRuntime.jsx(GridRow, {
4980
5029
  rowGap: "2rem",
4981
5030
  children: props.items.map((item, i) => jsxRuntime.jsx(Grid, {
4982
- sm: 6,
5031
+ xs: 6,
4983
5032
  md: 4,
4984
5033
  lg: 3,
4985
5034
  children: jsxRuntime.jsx(Product, Object.assign({}, item))
@@ -5341,7 +5390,7 @@ const Trigger = () => {
5341
5390
  children: label('llm.button')
5342
5391
  })]
5343
5392
  }), !opened && jsxRuntime.jsxs("div", {
5344
- className: "llm__trigger-welcome -llm-t-body-2",
5393
+ className: "llm__trigger-popup -llm-t-body-2",
5345
5394
  children: [jsxRuntime.jsxs(framerMotion.motion.div, {
5346
5395
  exit: {
5347
5396
  opacity: 0
@@ -5350,7 +5399,7 @@ const Trigger = () => {
5350
5399
  text: app === null || app === void 0 ? void 0 : app.contents.collapsedWelcomeText
5351
5400
  }), (app === null || app === void 0 ? void 0 : app.contents.collapsedWelcomeTextCta) && jsxRuntime.jsx("button", {
5352
5401
  type: "button",
5353
- className: "llm__trigger-welcome-cta",
5402
+ className: "llm__trigger-cta",
5354
5403
  children: app === null || app === void 0 ? void 0 : app.contents.collapsedWelcomeTextCta
5355
5404
  })]
5356
5405
  }), (app === null || app === void 0 ? void 0 : app.contents.collapsedWelcomeTextHover) && jsxRuntime.jsxs(framerMotion.motion.div, {
@@ -5413,8 +5462,8 @@ const LlmComponent = /*#__PURE__*/react.forwardRef((props, ref) => {
5413
5462
  });
5414
5463
  if (mounted) {
5415
5464
  return jsxRuntime.jsx(jsxRuntime.Fragment, {
5416
- children: app && jsxRuntime.jsx(CanvasOffscreenProvider, {
5417
- children: jsxRuntime.jsxs("div", Object.assign({
5465
+ children: app && jsxRuntime.jsxs(CanvasOffscreenProvider, {
5466
+ children: [jsxRuntime.jsx(Font, {}), jsxRuntime.jsxs("div", Object.assign({
5418
5467
  ref: innerRef,
5419
5468
  className: classNames
5420
5469
  }, props, {
@@ -5427,7 +5476,7 @@ const LlmComponent = /*#__PURE__*/react.forwardRef((props, ref) => {
5427
5476
  initial: false,
5428
5477
  children: shouldShowTrigger && jsxRuntime.jsx(Trigger, {}, "trigger")
5429
5478
  })]
5430
- }))
5479
+ }))]
5431
5480
  })
5432
5481
  });
5433
5482
  } else {