@webless/agent 0.12.1 → 0.13.1

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/embed.css CHANGED
@@ -18,6 +18,22 @@
18
18
  --as-radius-sm: 8px;
19
19
  --as-radius-md: 12px;
20
20
  --as-radius-lg: 16px;
21
+ --as-brand-mark-size: 24px;
22
+ --as-brand-mark-size-compact: 22px;
23
+ --as-brand-wordmark-header-height: 20px;
24
+ --as-brand-wordmark-header-max-width: 96px;
25
+ --as-brand-wordmark-message-height: 18px;
26
+ --as-brand-wordmark-message-max-width: 80px;
27
+ --as-brand-identity-gap: 6px;
28
+ --as-discovery-row-min-height: 46px;
29
+ --as-discovery-row-padding: 12px 16px;
30
+ --as-discovery-row-gap: 10px;
31
+ --as-discovery-row-font-size: 14px;
32
+ --as-discovery-row-font-weight: 400;
33
+ --as-discovery-row-line-height: 1.5;
34
+ --as-focus-inset-ring: inset 0 0 0 2px var(--as-brand);
35
+ --as-focus-link-padding-block: 2px;
36
+ --as-focus-link-padding-inline: 4px;
21
37
  --as-font-body:
22
38
  "Mulish",
23
39
  "Avenir Next",
@@ -39,11 +55,26 @@
39
55
  color: var(--as-text);
40
56
  -webkit-font-smoothing: antialiased;
41
57
  }
58
+ .webless-agent-root img.as-brand-logo-img {
59
+ display: block;
60
+ flex-shrink: 0;
61
+ object-fit: contain;
62
+ object-position: left center;
63
+ image-rendering: -webkit-optimize-contrast;
64
+ image-rendering: high-quality;
65
+ }
42
66
  .webless-agent-root button,
43
67
  .webless-agent-root input,
44
68
  .webless-agent-root textarea {
45
69
  font: inherit;
46
70
  }
71
+ .webless-agent-root :is(a[href], button:not(:disabled), summary) {
72
+ cursor: pointer;
73
+ }
74
+ .webless-agent-root :is(a[href], button:not(:disabled), summary) :is(*, svg) {
75
+ cursor: inherit;
76
+ pointer-events: none;
77
+ }
47
78
  @media (prefers-reduced-motion: reduce) {
48
79
  .webless-agent-root *,
49
80
  .webless-agent-root *::before,
@@ -645,6 +676,263 @@ summary.agent-transcript__activity-heading::before {
645
676
  }
646
677
  }
647
678
 
679
+ /* src/react/components/LearnMore/LearnMore.css */
680
+ .learn-more {
681
+ width: 100%;
682
+ min-width: 0;
683
+ }
684
+ .learn-more__heading {
685
+ margin: 0;
686
+ font-size: 12.5px;
687
+ font-weight: 650;
688
+ line-height: 1.5;
689
+ }
690
+ .learn-more__toggle {
691
+ appearance: none;
692
+ display: inline-flex;
693
+ align-items: center;
694
+ justify-content: flex-start;
695
+ gap: 4px;
696
+ min-height: 44px;
697
+ margin: 0;
698
+ padding: 10px 16px;
699
+ border: 0;
700
+ border-radius: 8px;
701
+ background: transparent;
702
+ color: var(--as-text-muted);
703
+ font: inherit;
704
+ font-size: 12.5px;
705
+ font-weight: 650;
706
+ text-align: left;
707
+ cursor: pointer;
708
+ transition: background 150ms ease, color 150ms ease;
709
+ }
710
+ .learn-more .learn-more__toggle {
711
+ width: auto;
712
+ background: transparent;
713
+ }
714
+ .learn-more .learn-more__toggle:hover {
715
+ color: var(--as-brand);
716
+ background: var(--as-brand-soft);
717
+ }
718
+ .learn-more__toggle:focus-visible {
719
+ outline: 2px solid var(--as-brand);
720
+ outline-offset: 2px;
721
+ }
722
+ .learn-more__chevron {
723
+ width: 14px;
724
+ height: 14px;
725
+ transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1);
726
+ }
727
+ .learn-more__toggle[aria-expanded=true] .learn-more__chevron {
728
+ transform: rotate(180deg);
729
+ }
730
+ .learn-more__panel {
731
+ display: grid;
732
+ grid-template-rows: 0fr;
733
+ visibility: hidden;
734
+ transition: grid-template-rows 220ms cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 220ms;
735
+ }
736
+ .learn-more__panel--open {
737
+ grid-template-rows: 1fr;
738
+ visibility: visible;
739
+ transition: grid-template-rows 220ms cubic-bezier(0.22, 1, 0.36, 1);
740
+ }
741
+ .learn-more__panel-inner {
742
+ min-height: 0;
743
+ overflow: hidden;
744
+ }
745
+ .learn-more__questions {
746
+ margin: 0;
747
+ padding: 0 0 4px;
748
+ list-style: none;
749
+ }
750
+ .learn-more__questions li {
751
+ border-bottom: 1px solid var(--as-border);
752
+ }
753
+ .learn-more__questions li:last-child {
754
+ border-bottom: 0;
755
+ }
756
+ .learn-more__questions button {
757
+ appearance: none;
758
+ display: flex;
759
+ align-items: center;
760
+ gap: var(--as-discovery-row-gap);
761
+ width: 100%;
762
+ min-height: var(--as-discovery-row-min-height);
763
+ padding: var(--as-discovery-row-padding);
764
+ border: 0;
765
+ border-radius: 6px;
766
+ background: transparent;
767
+ color: var(--as-text);
768
+ text-align: left;
769
+ font: inherit;
770
+ font-size: var(--as-discovery-row-font-size);
771
+ font-weight: var(--as-discovery-row-font-weight);
772
+ line-height: var(--as-discovery-row-line-height);
773
+ cursor: pointer;
774
+ }
775
+ .learn-more__question-icon {
776
+ display: inline-flex;
777
+ flex: 0 0 18px;
778
+ color: var(--as-text-muted);
779
+ }
780
+ .learn-more__question-text {
781
+ min-width: 0;
782
+ flex: 1;
783
+ overflow-wrap: anywhere;
784
+ }
785
+ .learn-more__question-arrow {
786
+ width: 18px;
787
+ height: 18px;
788
+ flex-shrink: 0;
789
+ color: var(--as-text-muted);
790
+ }
791
+ .learn-more .learn-more__questions button:hover:not(:disabled) {
792
+ background: var(--as-brand-soft);
793
+ color: var(--as-brand);
794
+ }
795
+ .learn-more .learn-more__questions button:hover:not(:disabled) .learn-more__question-arrow {
796
+ color: var(--as-brand);
797
+ }
798
+ .learn-more__questions button:focus-visible {
799
+ outline: none;
800
+ box-shadow: var(--as-focus-inset-ring);
801
+ }
802
+ .learn-more__questions button:disabled {
803
+ opacity: 0.5;
804
+ cursor: default;
805
+ }
806
+ @media (prefers-reduced-motion: reduce) {
807
+ .learn-more__panel {
808
+ transition: none;
809
+ }
810
+ .learn-more__chevron {
811
+ transition: none;
812
+ }
813
+ }
814
+
815
+ /* src/react/components/SearchReferences/SearchReferences.css */
816
+ .search-references {
817
+ display: grid;
818
+ width: 100%;
819
+ min-width: 0;
820
+ gap: 16px;
821
+ margin-top: 12px;
822
+ }
823
+ .search-references__heading {
824
+ width: fit-content;
825
+ min-height: 32px;
826
+ box-sizing: border-box;
827
+ padding: 6px 0;
828
+ margin: 0;
829
+ color: var(--as-text);
830
+ font-size: 12px;
831
+ font-weight: 600;
832
+ line-height: 1.5;
833
+ cursor: pointer;
834
+ }
835
+ .search-references__disclosure[open] > summary {
836
+ margin-bottom: 8px;
837
+ }
838
+ .search-references__list {
839
+ display: grid;
840
+ margin: 0;
841
+ padding: 0;
842
+ list-style: none;
843
+ }
844
+ .search-references__list > li {
845
+ border-bottom: 1px solid var(--as-border);
846
+ }
847
+ .search-references__list > li:last-child {
848
+ border-bottom: 0;
849
+ }
850
+ .search-references__source {
851
+ display: flex;
852
+ min-width: 0;
853
+ min-height: var(--as-discovery-row-min-height);
854
+ box-sizing: border-box;
855
+ align-items: center;
856
+ gap: var(--as-discovery-row-gap);
857
+ padding: var(--as-discovery-row-padding);
858
+ border-radius: 6px;
859
+ background: transparent;
860
+ color: var(--as-text);
861
+ font-size: var(--as-discovery-row-font-size);
862
+ font-weight: var(--as-discovery-row-font-weight);
863
+ line-height: var(--as-discovery-row-line-height);
864
+ text-decoration: none;
865
+ }
866
+ .search-references__icon {
867
+ display: inline-flex;
868
+ flex: 0 0 18px;
869
+ color: var(--as-text-muted);
870
+ }
871
+ .search-references__icon img {
872
+ width: 18px;
873
+ height: 18px;
874
+ border-radius: 4px;
875
+ object-fit: contain;
876
+ }
877
+ .search-references__title {
878
+ min-width: 0;
879
+ flex: 1;
880
+ overflow-wrap: anywhere;
881
+ font: inherit;
882
+ }
883
+ .search-references__actions {
884
+ display: flex;
885
+ flex-wrap: wrap;
886
+ gap: 8px;
887
+ }
888
+ .search-references__cta {
889
+ display: inline-flex;
890
+ max-width: 100%;
891
+ min-height: 44px;
892
+ box-sizing: border-box;
893
+ align-items: center;
894
+ justify-content: center;
895
+ padding: 10px 20px;
896
+ border: 1px solid var(--as-brand);
897
+ border-radius: 999px;
898
+ color: var(--as-text);
899
+ font-size: 13px;
900
+ font-weight: 650;
901
+ line-height: 1.5;
902
+ overflow-wrap: anywhere;
903
+ text-decoration: none;
904
+ }
905
+ .search-references__list .search-references__source[href]:hover,
906
+ .search-references .search-references__cta:hover {
907
+ background: var(--as-brand-soft);
908
+ color: var(--as-brand);
909
+ }
910
+ .search-references__list .search-references__source[href]:hover .search-references__row-arrow {
911
+ color: var(--as-brand);
912
+ }
913
+ .search-references a:focus-visible,
914
+ .search-references summary:focus-visible {
915
+ outline: 2px solid var(--as-brand);
916
+ outline-offset: 2px;
917
+ }
918
+ .search-references__list .search-references__source:focus-visible {
919
+ outline: none;
920
+ box-shadow: var(--as-focus-inset-ring);
921
+ }
922
+ .message-bubble__text:has(.search-references) {
923
+ width: 100%;
924
+ }
925
+ .search-references > details,
926
+ .search-references__list > li {
927
+ min-width: 0;
928
+ }
929
+ .search-references__row-arrow {
930
+ width: 18px;
931
+ height: 18px;
932
+ flex-shrink: 0;
933
+ color: var(--as-text-muted);
934
+ }
935
+
648
936
  /* src/react/components/AnswerReceiptDialog/AnswerReceiptDialog.css */
649
937
  .agent-receipt-dialog {
650
938
  position: absolute;
@@ -766,13 +1054,17 @@ summary.agent-transcript__activity-heading::before {
766
1054
  }
767
1055
  .composer__field {
768
1056
  display: flex;
769
- align-items: center;
1057
+ align-items: flex-end;
770
1058
  gap: 6px;
771
1059
  padding: 5px 5px 5px 14px;
772
1060
  border: 1px solid var(--as-control-border, color-mix(in srgb, var(--as-text) 14%, transparent));
773
1061
  border-radius: 999px;
774
1062
  background: var(--as-surface);
775
1063
  box-shadow: 0 1px 2px color-mix(in srgb, var(--as-text) 5%, transparent);
1064
+ transition: border-radius 180ms cubic-bezier(0.22, 1, 0.36, 1);
1065
+ }
1066
+ .composer--multiline .composer__field {
1067
+ border-radius: 20px;
776
1068
  }
777
1069
  .composer__field:focus-within {
778
1070
  border-color: color-mix(in srgb, var(--as-brand) 42%, var(--as-border));
@@ -829,7 +1121,7 @@ summary.agent-transcript__activity-heading::before {
829
1121
  outline-offset: 2px;
830
1122
  }
831
1123
  .composer--dock .composer__field {
832
- align-items: center;
1124
+ align-items: flex-end;
833
1125
  padding: 5px 5px 5px 14px;
834
1126
  background: var(--as-surface);
835
1127
  border: 1px solid var(--as-control-border, color-mix(in srgb, var(--as-text) 14%, transparent));
@@ -840,6 +1132,9 @@ summary.agent-transcript__activity-heading::before {
840
1132
  border-color: color-mix(in srgb, var(--as-brand) 42%, var(--as-border));
841
1133
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--as-brand) 10%, transparent);
842
1134
  }
1135
+ .composer--dock.composer--multiline .composer__field {
1136
+ border-radius: 24px;
1137
+ }
843
1138
  .composer--dock .composer__input {
844
1139
  padding: 11px 0;
845
1140
  font-size: 15px;
@@ -1048,6 +1343,9 @@ summary.agent-transcript__activity-heading::before {
1048
1343
  .composer--form .composer__sheet {
1049
1344
  animation: none;
1050
1345
  }
1346
+ .composer__field {
1347
+ transition: none;
1348
+ }
1051
1349
  .composer__send {
1052
1350
  transition: none;
1053
1351
  }
@@ -1133,151 +1431,46 @@ summary.agent-transcript__activity-heading::before {
1133
1431
  color 0.15s ease;
1134
1432
  word-break: break-word;
1135
1433
  }
1136
- .followups__chip:hover:not(:disabled) {
1137
- border-color: color-mix(in srgb, var(--as-brand) 32%, var(--as-border));
1138
- background: var(--as-brand-soft);
1139
- color: var(--as-brand);
1140
- }
1141
- .followups__chip:disabled {
1142
- opacity: 0.5;
1143
- cursor: not-allowed;
1144
- }
1145
- .followups--dock {
1146
- width: 100%;
1147
- gap: 0;
1148
- }
1149
- .followups__scroll {
1150
- display: flex;
1151
- gap: 8px;
1152
- justify-content: flex-start;
1153
- overflow-x: auto;
1154
- padding: 2px;
1155
- scrollbar-width: none;
1156
- -ms-overflow-style: none;
1157
- }
1158
- .followups__scroll::-webkit-scrollbar {
1159
- display: none;
1160
- }
1161
- .followups__chip--dock {
1162
- display: inline-flex;
1163
- align-items: center;
1164
- flex: 0 0 auto;
1434
+ .followups .followups__chip {
1165
1435
  width: auto;
1166
- max-width: none;
1167
- padding: 8px 12px;
1168
- border-radius: 999px;
1169
- font-size: 12px;
1170
- font-weight: 600;
1171
- white-space: nowrap;
1172
- text-align: left;
1173
- }
1174
-
1175
- /* src/react/components/SearchReferences/SearchReferences.css */
1176
- .search-references {
1177
- display: grid;
1178
- width: 100%;
1179
- min-width: 0;
1180
- gap: 16px;
1181
- margin-top: 12px;
1182
- }
1183
- .search-references__heading {
1184
- width: fit-content;
1185
- min-height: 32px;
1186
- box-sizing: border-box;
1187
- padding: 6px 0;
1188
- margin: 0;
1189
- color: var(--as-text);
1190
- font-size: 12px;
1191
- font-weight: 600;
1192
- line-height: 1.5;
1193
- cursor: pointer;
1194
- }
1195
- .search-references__disclosure[open] > summary {
1196
- margin-bottom: 8px;
1197
- }
1198
- .search-references__list {
1199
- display: grid;
1200
- gap: 6px;
1201
- margin: 0;
1202
- padding: 0;
1203
- list-style: none;
1204
1436
  }
1205
- .search-references__source {
1206
- display: flex;
1207
- min-width: 0;
1208
- min-height: 52px;
1209
- box-sizing: border-box;
1210
- align-items: center;
1211
- gap: 10px;
1212
- padding: 8px 10px;
1213
- border-radius: var(--as-radius-sm, 8px);
1214
- background: var(--as-surface-muted);
1215
- color: var(--as-text);
1216
- text-decoration: none;
1217
- }
1218
- .search-references__icon {
1219
- display: inline-flex;
1220
- flex: 0 0 18px;
1221
- color: var(--as-text-muted);
1222
- }
1223
- .search-references__copy {
1224
- display: grid;
1225
- min-width: 0;
1226
- gap: 2px;
1227
- }
1228
- .search-references__title,
1229
- .search-references__domain {
1230
- overflow: hidden;
1231
- text-overflow: ellipsis;
1232
- white-space: nowrap;
1233
- line-height: 1.4;
1437
+ .followups .followups__chip:hover:not(:disabled) {
1438
+ border-color: color-mix(in srgb, var(--as-brand) 32%, var(--as-border));
1439
+ background: var(--as-brand-soft);
1440
+ color: var(--as-brand);
1234
1441
  }
1235
- .search-references__title {
1236
- font-size: 13px;
1237
- font-weight: 500;
1442
+ .followups__chip:disabled {
1443
+ opacity: 0.5;
1444
+ cursor: not-allowed;
1238
1445
  }
1239
- .search-references__domain {
1240
- color: var(--as-text-muted);
1241
- font-size: 11px;
1446
+ .followups--dock {
1447
+ width: 100%;
1448
+ gap: 0;
1242
1449
  }
1243
- .search-references__actions {
1450
+ .followups__scroll {
1244
1451
  display: flex;
1245
- flex-wrap: wrap;
1246
1452
  gap: 8px;
1453
+ justify-content: flex-start;
1454
+ overflow-x: auto;
1455
+ padding: 2px;
1456
+ scrollbar-width: none;
1457
+ -ms-overflow-style: none;
1247
1458
  }
1248
- .search-references__cta {
1459
+ .followups__scroll::-webkit-scrollbar {
1460
+ display: none;
1461
+ }
1462
+ .followups__chip--dock {
1249
1463
  display: inline-flex;
1250
- max-width: 100%;
1251
- min-height: 44px;
1252
- box-sizing: border-box;
1253
1464
  align-items: center;
1254
- justify-content: center;
1255
- padding: 10px 20px;
1256
- border: 1px solid var(--as-brand);
1465
+ flex: 0 0 auto;
1466
+ width: auto;
1467
+ max-width: none;
1468
+ padding: 8px 12px;
1257
1469
  border-radius: 999px;
1258
- color: var(--as-text);
1259
- font-size: 13px;
1260
- font-weight: 650;
1261
- line-height: 1.5;
1262
- overflow-wrap: anywhere;
1263
- text-decoration: none;
1264
- }
1265
- .search-references__source[href]:hover,
1266
- .search-references__cta:hover {
1267
- background: var(--as-brand-soft);
1268
- color: var(--as-brand);
1269
- }
1270
- .search-references a:focus-visible,
1271
- .search-references summary:focus-visible {
1272
- outline: 2px solid var(--as-brand);
1273
- outline-offset: 2px;
1274
- }
1275
- .message-bubble__text:has(.search-references) {
1276
- width: 100%;
1277
- }
1278
- .search-references > details,
1279
- .search-references__list > li {
1280
- min-width: 0;
1470
+ font-size: 12px;
1471
+ font-weight: 600;
1472
+ white-space: nowrap;
1473
+ text-align: left;
1281
1474
  }
1282
1475
 
1283
1476
  /* src/react/components/BookingCard/BookingCard.css */
@@ -1601,26 +1794,25 @@ summary.agent-transcript__activity-heading::before {
1601
1794
  width: 100%;
1602
1795
  max-width: 100%;
1603
1796
  }
1604
- .message-bubble__agent-row {
1605
- display: grid;
1797
+ .message-bubble__agent-stack {
1798
+ display: flex;
1606
1799
  width: 100%;
1607
- grid-template-columns: 24px minmax(0, 1fr);
1800
+ flex-direction: column;
1608
1801
  align-items: flex-start;
1609
- gap: 10px;
1802
+ gap: 8px;
1610
1803
  }
1611
1804
  .message-bubble__agent-avatar {
1612
1805
  position: relative;
1613
1806
  display: inline-flex;
1614
- width: 24px;
1615
- height: 24px;
1807
+ width: var(--as-brand-mark-size-compact);
1808
+ height: var(--as-brand-mark-size-compact);
1616
1809
  align-items: center;
1617
1810
  justify-content: center;
1618
1811
  overflow: hidden;
1619
- margin-top: 1px;
1620
1812
  border-radius: 8px;
1621
1813
  background: var(--as-surface-muted);
1622
1814
  }
1623
- .message-bubble__agent-avatar img {
1815
+ .message-bubble__agent-avatar:not(.message-bubble__agent-avatar--wide) img {
1624
1816
  position: absolute;
1625
1817
  inset: 0;
1626
1818
  width: 100%;
@@ -1629,6 +1821,28 @@ summary.agent-transcript__activity-heading::before {
1629
1821
  background: var(--as-surface);
1630
1822
  object-fit: contain;
1631
1823
  }
1824
+ .message-bubble__agent-avatar--wide {
1825
+ width: auto;
1826
+ height: auto;
1827
+ min-width: 0;
1828
+ max-width: var(--as-brand-wordmark-message-max-width);
1829
+ flex-shrink: 1;
1830
+ padding: 0;
1831
+ overflow: hidden;
1832
+ border: 0;
1833
+ background: transparent;
1834
+ }
1835
+ .message-bubble__agent-avatar--wide img {
1836
+ position: static;
1837
+ display: block;
1838
+ width: auto;
1839
+ max-width: var(--as-brand-wordmark-message-max-width);
1840
+ height: var(--as-brand-wordmark-message-height);
1841
+ border-radius: 0;
1842
+ background: transparent;
1843
+ object-fit: contain;
1844
+ object-position: left center;
1845
+ }
1632
1846
  .message-bubble__text {
1633
1847
  margin: 0;
1634
1848
  padding: 10px 12px;
@@ -1657,24 +1871,35 @@ summary.agent-transcript__activity-heading::before {
1657
1871
  }
1658
1872
  .message-bubble__sources {
1659
1873
  display: grid;
1660
- gap: 6px;
1874
+ gap: 0;
1661
1875
  margin: 10px 0 0;
1662
1876
  padding: 10px 0 0;
1663
1877
  border-top: 1px solid var(--as-border);
1664
1878
  list-style: none;
1665
1879
  }
1880
+ .message-bubble__sources > li {
1881
+ border-bottom: 1px solid var(--as-border);
1882
+ }
1883
+ .message-bubble__sources > li:last-child {
1884
+ border-bottom: 0;
1885
+ }
1666
1886
  .message-bubble__sources a {
1667
1887
  display: flex;
1668
1888
  min-width: 0;
1889
+ min-height: var(--as-discovery-row-min-height);
1669
1890
  align-items: center;
1670
- gap: 8px;
1891
+ gap: var(--as-discovery-row-gap);
1892
+ padding: var(--as-discovery-row-padding);
1893
+ border-radius: 6px;
1671
1894
  color: var(--as-text);
1672
- font-size: 12.5px;
1673
- font-weight: 600;
1895
+ font-size: var(--as-discovery-row-font-size);
1896
+ font-weight: var(--as-discovery-row-font-weight);
1897
+ line-height: var(--as-discovery-row-line-height);
1674
1898
  text-decoration: none;
1675
1899
  }
1676
1900
  .message-bubble__sources a:hover {
1677
1901
  color: var(--as-brand);
1902
+ background: var(--as-brand-soft);
1678
1903
  }
1679
1904
  .message-bubble__source-icon {
1680
1905
  display: grid;
@@ -1740,6 +1965,27 @@ summary.agent-transcript__activity-heading::before {
1740
1965
  text-decoration: underline;
1741
1966
  text-underline-offset: 2px;
1742
1967
  }
1968
+ .message-bubble__markdown :is(a[href], [data-streamdown=link]):focus-visible {
1969
+ outline: none;
1970
+ border-radius: 4px;
1971
+ box-shadow: var(--as-focus-inset-ring);
1972
+ box-decoration-break: clone;
1973
+ -webkit-box-decoration-break: clone;
1974
+ padding: var(--as-focus-link-padding-block) var(--as-focus-link-padding-inline);
1975
+ margin: 0;
1976
+ }
1977
+ .message-bubble__markdown ul > li > :is(a[href], [data-streamdown=link]):focus-visible {
1978
+ border-radius: 6px;
1979
+ }
1980
+ .message-bubble__sources a:focus-visible {
1981
+ outline: none;
1982
+ border-radius: 6px;
1983
+ box-shadow: var(--as-focus-inset-ring);
1984
+ }
1985
+ .agent-rail .message-bubble__markdown :is(a[href], [data-streamdown=link]):focus-visible,
1986
+ .agent-rail .message-bubble__sources a:focus-visible {
1987
+ outline: none;
1988
+ }
1743
1989
  .message-bubble__markdown code {
1744
1990
  font-family:
1745
1991
  ui-monospace,
@@ -1769,10 +2015,18 @@ summary.agent-transcript__activity-heading::before {
1769
2015
  color: var(--as-text-muted);
1770
2016
  }
1771
2017
  .message-bubble__speaker {
1772
- display: block;
1773
- margin-bottom: 0.25rem;
1774
- font-size: 0.75rem;
1775
- opacity: 0.75;
2018
+ margin: 0;
2019
+ font-size: 12px;
2020
+ font-weight: 650;
2021
+ letter-spacing: 0.01em;
2022
+ color: var(--as-text-muted);
2023
+ }
2024
+ .message-bubble__agent-header {
2025
+ display: inline-flex;
2026
+ max-width: 100%;
2027
+ min-height: var(--as-brand-mark-size-compact);
2028
+ align-items: center;
2029
+ gap: 4px;
1776
2030
  }
1777
2031
 
1778
2032
  /* src/react/components/MessageActions/MessageActions.css */
@@ -1875,7 +2129,7 @@ summary.agent-transcript__activity-heading::before {
1875
2129
  line-height: 1.3;
1876
2130
  text-align: left;
1877
2131
  }
1878
- .agent-message-actions__menu-item:hover {
2132
+ .agent-message-actions__menu .agent-message-actions__menu-item:hover {
1879
2133
  background: var(--as-surface-muted);
1880
2134
  }
1881
2135
  .agent-message-actions__menu-item:focus-visible {
@@ -2602,6 +2856,13 @@ summary.agent-transcript__activity-heading::before {
2602
2856
  .agent-rail :where(p, span, strong, button, label) {
2603
2857
  text-decoration: none;
2604
2858
  }
2859
+ .agent-rail :is(a[href], button:not(:disabled), summary) {
2860
+ cursor: pointer;
2861
+ }
2862
+ .agent-rail :is(a[href], button:not(:disabled), summary) :is(*, svg) {
2863
+ cursor: inherit;
2864
+ pointer-events: none;
2865
+ }
2605
2866
  .agent-rail:focus {
2606
2867
  outline: none;
2607
2868
  }
@@ -2633,7 +2894,7 @@ summary.agent-transcript__activity-heading::before {
2633
2894
  min-width: 0;
2634
2895
  align-items: center;
2635
2896
  justify-content: center;
2636
- gap: 8px;
2897
+ gap: var(--as-brand-identity-gap);
2637
2898
  }
2638
2899
  .agent-rail__brand-label {
2639
2900
  overflow: hidden;
@@ -2655,10 +2916,10 @@ summary.agent-transcript__activity-heading::before {
2655
2916
  background: var(--as-surface-muted);
2656
2917
  }
2657
2918
  .agent-rail__brand-mark {
2658
- width: 25px;
2659
- height: 25px;
2660
- flex-basis: 25px;
2661
- border-radius: 8px;
2919
+ width: var(--as-brand-mark-size);
2920
+ height: var(--as-brand-mark-size);
2921
+ flex-basis: var(--as-brand-mark-size);
2922
+ border-radius: var(--as-radius-sm);
2662
2923
  font-size: 11px;
2663
2924
  }
2664
2925
  .agent-rail__brand-logo {
@@ -2670,6 +2931,28 @@ summary.agent-transcript__activity-heading::before {
2670
2931
  background: var(--as-surface);
2671
2932
  object-fit: contain;
2672
2933
  }
2934
+ .agent-rail__brand-mark--wide {
2935
+ width: auto;
2936
+ min-width: 0;
2937
+ max-width: var(--as-brand-wordmark-header-max-width);
2938
+ flex: 0 1 auto;
2939
+ flex-basis: auto;
2940
+ padding: 0;
2941
+ overflow: hidden;
2942
+ border: 0;
2943
+ background: transparent;
2944
+ }
2945
+ .agent-rail__brand-mark--wide .agent-rail__brand-logo {
2946
+ position: static;
2947
+ display: block;
2948
+ width: auto;
2949
+ max-width: var(--as-brand-wordmark-header-max-width);
2950
+ height: var(--as-brand-wordmark-header-height);
2951
+ border-radius: 0;
2952
+ background: transparent;
2953
+ object-fit: contain;
2954
+ object-position: left center;
2955
+ }
2673
2956
  .agent-rail__brand-spacer {
2674
2957
  width: 36px;
2675
2958
  height: 36px;
@@ -2752,7 +3035,7 @@ summary.agent-transcript__activity-heading::before {
2752
3035
  flex-direction: column;
2753
3036
  gap: 20px;
2754
3037
  margin: 0 auto;
2755
- padding: 24px 20px 32px;
3038
+ padding: 16px 16px 32px;
2756
3039
  }
2757
3040
  .agent-rail__turn-block {
2758
3041
  display: flex;
@@ -2822,7 +3105,7 @@ summary.agent-transcript__activity-heading::before {
2822
3105
  position: relative;
2823
3106
  z-index: 1;
2824
3107
  flex-shrink: 0;
2825
- padding: 13px 20px 14px;
3108
+ padding: 13px 16px 14px;
2826
3109
  border-top: 1px solid var(--as-hairline);
2827
3110
  background: var(--as-surface);
2828
3111
  }
@@ -2897,7 +3180,7 @@ summary.agent-transcript__activity-heading::before {
2897
3180
  }
2898
3181
  .agent-rail__disclaimer {
2899
3182
  flex-shrink: 0;
2900
- padding: 10px 20px 8px;
3183
+ padding: 8px 16px 6px;
2901
3184
  background: var(--as-surface);
2902
3185
  }
2903
3186
  .agent-rail__disclaimer p {
@@ -2947,13 +3230,13 @@ summary.agent-transcript__activity-heading::before {
2947
3230
  }
2948
3231
  .agent-rail--expanded .agent-rail__thread {
2949
3232
  max-width: 760px;
2950
- padding: 36px 24px 48px;
3233
+ padding: 24px 24px 48px;
2951
3234
  }
2952
3235
  .agent-rail--expanded .agent-rail__welcome {
2953
3236
  width: 100%;
2954
3237
  }
2955
3238
  .agent-rail--expanded .agent-rail__composer-wrap {
2956
- padding: 16px 24px 18px;
3239
+ padding: 16px 24px 16px;
2957
3240
  }
2958
3241
  .agent-rail--expanded .agent-rail__disclaimer,
2959
3242
  .agent-rail--expanded .composer,
@@ -3069,47 +3352,164 @@ summary.agent-transcript__activity-heading::before {
3069
3352
  animation: none;
3070
3353
  transition: none;
3071
3354
  }
3355
+ .agent-rail__sources-panel {
3356
+ transition: none;
3357
+ }
3358
+ .agent-rail__sources-button-chevron {
3359
+ transition: none;
3360
+ }
3072
3361
  }
3073
3362
  .agent-rail__handoff {
3074
- padding: 0.625rem 1rem;
3075
- border-top: 1px solid var(--as-border);
3076
3363
  display: flex;
3077
- gap: 0.5rem;
3078
3364
  align-items: center;
3079
- justify-content: space-between;
3080
- flex-wrap: wrap;
3081
- font-size: 0.8125rem;
3365
+ gap: 10px;
3366
+ padding: 10px 16px;
3367
+ border-top: 1px solid var(--as-hairline);
3368
+ background: transparent;
3369
+ font-size: 12px;
3370
+ line-height: 1.45;
3082
3371
  color: var(--as-text-muted);
3083
3372
  }
3084
- .agent-rail__handoff p {
3373
+ .agent-rail__handoff-dot {
3374
+ flex: 0 0 auto;
3375
+ width: 6px;
3376
+ height: 6px;
3377
+ border-radius: 999px;
3378
+ background: var(--as-success);
3379
+ }
3380
+ .agent-rail__handoff-status {
3085
3381
  margin: 0;
3382
+ min-width: 0;
3383
+ flex: 1;
3086
3384
  }
3087
- .agent-rail__handoff button {
3088
- border: 0;
3089
- border-radius: 0.375rem;
3385
+ .agent-rail__handoff-status strong {
3386
+ color: var(--as-text);
3387
+ font-weight: 650;
3388
+ }
3389
+ .agent-rail__handoff-cta,
3390
+ .agent-rail__handoff-action {
3391
+ appearance: none;
3392
+ flex: 0 0 auto;
3393
+ min-height: 32px;
3394
+ padding: 6px 12px;
3395
+ border: 1px solid var(--as-border);
3396
+ border-radius: 999px;
3090
3397
  background: transparent;
3091
3398
  color: var(--as-text);
3092
- cursor: pointer;
3093
3399
  font: inherit;
3094
- font-weight: 600;
3095
- padding: 0.5rem;
3096
- min-height: 2.5rem;
3400
+ font-size: 12px;
3401
+ font-weight: 650;
3402
+ cursor: pointer;
3403
+ transition: border-color 150ms ease, background 150ms ease;
3097
3404
  }
3098
- .agent-rail__handoff button:hover {
3405
+ .agent-rail__handoff-cta:hover:not(:disabled),
3406
+ .agent-rail__handoff-action:hover:not(:disabled) {
3407
+ border-color: color-mix(in srgb, var(--as-brand) 40%, var(--as-border));
3099
3408
  background: var(--as-surface-muted);
3100
3409
  }
3101
- .agent-rail__handoff button:focus-visible {
3410
+ .agent-rail__handoff-cta:focus-visible,
3411
+ .agent-rail__handoff-action:focus-visible {
3102
3412
  outline: 2px solid var(--as-brand);
3103
3413
  outline-offset: 2px;
3104
3414
  }
3105
- .agent-rail__handoff button:disabled {
3106
- opacity: 0.5;
3415
+ .agent-rail__handoff-cta:disabled,
3416
+ .agent-rail__handoff-action:disabled {
3417
+ opacity: 0.55;
3107
3418
  cursor: default;
3108
3419
  }
3109
- .agent-rail__handoff [role=alert] {
3110
- width: 100%;
3420
+ .agent-rail__handoff-error {
3421
+ display: flex;
3422
+ flex: 1;
3423
+ align-items: center;
3424
+ justify-content: space-between;
3425
+ gap: 8px;
3111
3426
  color: var(--as-danger);
3112
3427
  }
3428
+ .agent-rail__answer-footer {
3429
+ display: flex;
3430
+ flex-direction: column;
3431
+ width: 100%;
3432
+ }
3433
+ .agent-rail__answer-actions {
3434
+ display: flex;
3435
+ align-items: center;
3436
+ flex-wrap: wrap;
3437
+ gap: 8px;
3438
+ width: 100%;
3439
+ }
3440
+ .agent-rail__answer-actions:empty {
3441
+ display: none;
3442
+ }
3443
+ .agent-rail__sources-button {
3444
+ appearance: none;
3445
+ display: inline-flex;
3446
+ align-items: center;
3447
+ justify-content: flex-start;
3448
+ gap: 3px;
3449
+ margin-left: auto;
3450
+ min-height: 44px;
3451
+ padding: 10px 16px;
3452
+ border: 0;
3453
+ border-radius: 8px;
3454
+ background: transparent;
3455
+ color: var(--as-text-muted);
3456
+ font: inherit;
3457
+ font-size: 12.5px;
3458
+ font-weight: 650;
3459
+ cursor: pointer;
3460
+ transition: background 150ms ease, color 150ms ease;
3461
+ }
3462
+ .agent-rail__answer-actions .agent-rail__sources-button {
3463
+ width: auto;
3464
+ background: transparent;
3465
+ }
3466
+ .agent-rail__answer-actions .agent-rail__sources-button:hover {
3467
+ color: var(--as-brand);
3468
+ background: var(--as-brand-soft);
3469
+ }
3470
+ .agent-rail__sources-button:focus-visible {
3471
+ outline: 2px solid var(--as-brand);
3472
+ outline-offset: 2px;
3473
+ }
3474
+ .agent-rail__sources-button-chevron {
3475
+ display: inline-flex;
3476
+ transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1);
3477
+ }
3478
+ .agent-rail__sources-button-chevron svg {
3479
+ width: 14px;
3480
+ height: 14px;
3481
+ }
3482
+ .agent-rail__sources-button[aria-expanded=true] .agent-rail__sources-button-chevron {
3483
+ transform: rotate(180deg);
3484
+ }
3485
+ .agent-rail__sources-panel {
3486
+ display: grid;
3487
+ width: 100%;
3488
+ grid-template-rows: 0fr;
3489
+ visibility: hidden;
3490
+ transition: grid-template-rows 220ms cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 220ms;
3491
+ }
3492
+ .agent-rail__sources-panel--open {
3493
+ grid-template-rows: 1fr;
3494
+ visibility: visible;
3495
+ transition: grid-template-rows 220ms cubic-bezier(0.22, 1, 0.36, 1);
3496
+ }
3497
+ .agent-rail__sources-panel-inner {
3498
+ min-height: 0;
3499
+ overflow: hidden;
3500
+ }
3501
+ .agent-rail__sources-panel-inner > .search-references {
3502
+ margin-top: 2px;
3503
+ }
3504
+ .agent-rail .learn-more .learn-more__toggle {
3505
+ width: auto;
3506
+ background: transparent;
3507
+ padding-left: 0;
3508
+ }
3509
+ .agent-rail .learn-more .learn-more__toggle:hover {
3510
+ color: var(--as-brand);
3511
+ background: var(--as-brand-soft);
3512
+ }
3113
3513
 
3114
3514
  /* src/react/components/AssistEdgeTab/AssistEdgeTab.css */
3115
3515
  .assist-edge-tab {
@@ -3181,10 +3581,6 @@ summary.agent-transcript__activity-heading::before {
3181
3581
  border-radius: inherit;
3182
3582
  background: var(--pill-orb-from, var(--tab-fill));
3183
3583
  }
3184
- .assist-edge-tab__mark--chip > .assist-edge-tab__logo {
3185
- width: 20px;
3186
- height: 20px;
3187
- }
3188
3584
  .assist-edge-tab__custom-icon {
3189
3585
  width: 18px;
3190
3586
  height: 18px;
@@ -3378,15 +3774,16 @@ summary.agent-transcript__activity-heading::before {
3378
3774
  --tab-ink: #1f2937;
3379
3775
  --tab-line: transparent;
3380
3776
  --pill-brand: var(--as-brand, #6366f1);
3777
+ --pill-accent: var(--as-border, var(--as-brand, #6366f1));
3381
3778
  --pill-fill: #ffffff;
3382
3779
  --pill-title: #1f2937;
3383
3780
  --pill-subtitle: #9ca3af;
3384
- --pill-glow-strong: color-mix(in srgb, var(--pill-brand) 40%, transparent);
3385
- --pill-glow-soft: color-mix(in srgb, var(--pill-brand) 10%, transparent);
3386
- --pill-glow-shadow: color-mix(in srgb, var(--pill-brand) 15%, transparent);
3781
+ --pill-glow-strong: color-mix(in srgb, var(--pill-accent) 40%, transparent);
3782
+ --pill-glow-soft: color-mix(in srgb, var(--pill-accent) 10%, transparent);
3783
+ --pill-glow-shadow: color-mix(in srgb, var(--pill-accent) 15%, transparent);
3387
3784
  --pill-orb-end: color-mix(in srgb, var(--pill-brand) 45%, #3b82f6);
3388
3785
  gap: 12px;
3389
- border: 1.5px solid var(--pill-brand);
3786
+ border: 1.5px solid var(--pill-accent);
3390
3787
  background-color: #ffffff;
3391
3788
  background-image: none;
3392
3789
  color: var(--pill-title);
@@ -3428,9 +3825,9 @@ summary.agent-transcript__activity-heading::before {
3428
3825
  }
3429
3826
  .assist-edge-tab__mark--chip {
3430
3827
  overflow: hidden;
3431
- width: 36px;
3432
- height: 36px;
3433
- flex-basis: 36px;
3828
+ width: 48px;
3829
+ height: 48px;
3830
+ flex: 0 0 48px;
3434
3831
  border: none;
3435
3832
  border-radius: 50%;
3436
3833
  background:
@@ -3441,11 +3838,33 @@ summary.agent-transcript__activity-heading::before {
3441
3838
  color: #ffffff;
3442
3839
  box-shadow: none;
3443
3840
  }
3841
+ .assist-edge-tab__mark--chip:has(> .assist-edge-tab__logo),
3842
+ .assist-edge-tab__mark--chip:has(> .assist-edge-tab__custom-icon) {
3843
+ background: var(--pill-logo-surface, #ffffff);
3844
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--pill-accent, var(--pill-brand)) 24%, transparent);
3845
+ }
3846
+ .assist-edge-tab__mark--chip:has(> .assist-edge-tab__logo--wide) {
3847
+ width: auto;
3848
+ min-width: 48px;
3849
+ max-width: 120px;
3850
+ padding: 0 8px;
3851
+ border-radius: 999px;
3852
+ }
3444
3853
  .assist-edge-tab__mark--chip > svg,
3445
3854
  .assist-edge-tab__mark--chip > .assist-edge-tab__custom-icon,
3446
3855
  .assist-edge-tab__mark--chip > .assist-edge-tab__logo {
3447
3856
  position: relative;
3448
3857
  z-index: 1;
3858
+ flex-shrink: 0;
3859
+ object-fit: contain;
3860
+ object-position: center;
3861
+ }
3862
+ .assist-edge-tab__mark--chip > .assist-edge-tab__logo--chip,
3863
+ .assist-edge-tab__mark--chip > .assist-edge-tab__custom-icon--chip {
3864
+ width: auto;
3865
+ height: auto;
3866
+ max-width: 100%;
3867
+ max-height: 100%;
3449
3868
  }
3450
3869
  .assist-edge-tab__mark--chip > .assist-edge-tab__chat-spark {
3451
3870
  color: #ffffff;