@scalar/agent-chat 0.12.42 → 0.12.43

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/style.css CHANGED
@@ -11,7 +11,6 @@
11
11
  @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
12
12
  *, :before, :after, ::backdrop {
13
13
  --tw-font-weight: initial;
14
- --tw-border-style: solid;
15
14
  --tw-shadow: 0 0 #0000;
16
15
  --tw-shadow-color: initial;
17
16
  --tw-shadow-alpha: 100%;
@@ -47,6 +46,7 @@
47
46
  --tw-skew-x: initial;
48
47
  --tw-skew-y: initial;
49
48
  --tw-divide-y-reverse: 0;
49
+ --tw-border-style: solid;
50
50
  --tw-mask-linear: linear-gradient(#fff, #fff);
51
51
  --tw-mask-radial: linear-gradient(#fff, #fff);
52
52
  --tw-mask-conic: linear-gradient(#fff, #fff);
@@ -1196,10 +1196,9 @@
1196
1196
 
1197
1197
  :where(body, dialog) > .scalar-tooltip:before {
1198
1198
  content: "";
1199
+ border: var(--scalar-border-width) solid var(--scalar-border-color);
1199
1200
  z-index: calc(1 * -1);
1200
1201
  border-radius: var(--scalar-radius-lg);
1201
- border-style: var(--tw-border-style);
1202
- border-width: var(--scalar-border-width);
1203
1202
  background-color: var(--scalar-tooltip-background);
1204
1203
  --tw-shadow: var(--scalar-shadow-1);
1205
1204
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -1231,12 +1230,6 @@
1231
1230
  inherits: false
1232
1231
  }
1233
1232
 
1234
- @property --tw-border-style {
1235
- syntax: "*";
1236
- inherits: false;
1237
- initial-value: solid;
1238
- }
1239
-
1240
1233
  @property --tw-shadow {
1241
1234
  syntax: "*";
1242
1235
  inherits: false;
@@ -1875,45 +1868,45 @@
1875
1868
  }
1876
1869
  }
1877
1870
 
1878
- [data-v-e29008b7] .code-input-lite__editor {
1871
+ [data-v-344240b0] .code-input-lite__editor {
1879
1872
  font-family: var(--scalar-font);
1880
1873
  font-size: var(--scalar-small);
1881
1874
  background-color: #0000;
1882
1875
  padding: 5px 8px;
1883
1876
  }
1884
1877
 
1885
- [data-v-e29008b7] .scalar-pill:not(:last-of-type) {
1878
+ [data-v-344240b0] .scalar-pill:not(:last-of-type) {
1886
1879
  margin-right: .15em;
1887
1880
  }
1888
1881
 
1889
- [data-v-e29008b7] .scalar-pill:not(:first-of-type) {
1882
+ [data-v-344240b0] .scalar-pill:not(:first-of-type) {
1890
1883
  margin-left: .5px;
1891
1884
  }
1892
1885
 
1893
- [data-v-65cf6606] .cm-content {
1886
+ [data-v-ec7e5b86] .cm-content {
1894
1887
  font-size: var(--scalar-small);
1895
1888
  }
1896
1889
 
1897
- [data-v-ce270af2] .code-input-lite__editor {
1890
+ [data-v-029a43f5] .code-input-lite__editor {
1898
1891
  font-family: var(--scalar-font);
1899
1892
  font-size: var(--scalar-small);
1900
1893
  background-color: #0000;
1901
1894
  padding: 5px 8px;
1902
1895
  }
1903
1896
 
1904
- [data-v-ce270af2] .scalar-pill:not(:last-of-type) {
1897
+ [data-v-029a43f5] .scalar-pill:not(:last-of-type) {
1905
1898
  margin-right: .15em;
1906
1899
  }
1907
1900
 
1908
- [data-v-ce270af2] .scalar-pill:not(:first-of-type) {
1901
+ [data-v-029a43f5] .scalar-pill:not(:first-of-type) {
1909
1902
  margin-left: .5px;
1910
1903
  }
1911
1904
 
1912
- input[data-v-ce270af2]::placeholder {
1905
+ input[data-v-029a43f5]::placeholder {
1913
1906
  color: var(--scalar-color-3);
1914
1907
  }
1915
1908
 
1916
- .scalar-password-input[data-v-ce270af2] {
1909
+ .scalar-password-input[data-v-029a43f5] {
1917
1910
  text-security: disc;
1918
1911
  -webkit-text-security: disc;
1919
1912
  -moz-text-security: disc;
@@ -1950,38 +1943,38 @@ input[data-v-ce270af2]::placeholder {
1950
1943
  scrollbar-width: none;
1951
1944
  }
1952
1945
 
1953
- .request-section-content[data-v-5bf07c90] {
1946
+ .request-section-content[data-v-a55ce987] {
1954
1947
  --scalar-border-width: .5px;
1955
1948
  }
1956
1949
 
1957
- .request-section-content-filter[data-v-5bf07c90] {
1950
+ .request-section-content-filter[data-v-a55ce987] {
1958
1951
  box-shadow: 0 -10px 0 10px var(--scalar-background-1);
1959
1952
  }
1960
1953
 
1961
- .request-item:focus-within .request-meta-buttons[data-v-5bf07c90] {
1954
+ .request-item:focus-within .request-meta-buttons[data-v-a55ce987] {
1962
1955
  opacity: 1;
1963
1956
  }
1964
1957
 
1965
- .group-hover-input[data-v-5bf07c90] {
1958
+ .group-hover-input[data-v-a55ce987] {
1966
1959
  border-width: var(--scalar-border-width);
1967
1960
  border-color: #0000;
1968
1961
  }
1969
1962
 
1970
- .group:hover .group-hover-input[data-v-5bf07c90] {
1963
+ .group:hover .group-hover-input[data-v-a55ce987] {
1971
1964
  background: var(--scalar-background-1);
1972
1965
  }
1973
1966
 
1974
1967
  @supports (color: color-mix(in lab, red, red)) {
1975
- .group:hover .group-hover-input[data-v-5bf07c90] {
1968
+ .group:hover .group-hover-input[data-v-a55ce987] {
1976
1969
  background: color-mix(in srgb, var(--scalar-background-1), var(--scalar-background-2));
1977
1970
  }
1978
1971
  }
1979
1972
 
1980
- .group:hover .group-hover-input[data-v-5bf07c90] {
1973
+ .group:hover .group-hover-input[data-v-a55ce987] {
1981
1974
  border-color: var(--scalar-border-color);
1982
1975
  }
1983
1976
 
1984
- .group-hover-input[data-v-5bf07c90]:focus {
1977
+ .group-hover-input[data-v-a55ce987]:focus {
1985
1978
  border-color: var(--scalar-border-color) !important;
1986
1979
  background: none !important;
1987
1980
  }
@@ -4452,6 +4445,12 @@ input[data-v-ce270af2]::placeholder {
4452
4445
  initial-value: 0;
4453
4446
  }
4454
4447
 
4448
+ @property --tw-border-style {
4449
+ syntax: "*";
4450
+ inherits: false;
4451
+ initial-value: solid;
4452
+ }
4453
+
4455
4454
  @property --tw-mask-linear {
4456
4455
  syntax: "*";
4457
4456
  inherits: false;
@@ -4916,37 +4915,37 @@ input[data-v-ce270af2]::placeholder {
4916
4915
  }
4917
4916
  }
4918
4917
 
4919
- .requestHeaderContainer[data-v-1e1f4549] {
4918
+ .requestHeaderContainer[data-v-e049f4c9] {
4920
4919
  display: flex;
4921
4920
  align-items: center;
4922
4921
  justify-content: space-between;
4923
4922
  padding: 0 5px;
4924
4923
  }
4925
- .requestPreview[data-v-1e1f4549] {
4924
+ .requestPreview[data-v-e049f4c9] {
4926
4925
  border-radius: var(--scalar-radius-2xl);
4927
4926
  display: flex;
4928
4927
  flex-direction: column;
4929
4928
  width: 100%;
4930
4929
  position: relative;
4931
4930
  }
4932
- .requestContent[data-v-1e1f4549] {
4931
+ .requestContent[data-v-e049f4c9] {
4933
4932
  display: grid;
4934
4933
  grid-template-rows: 0fr;
4935
4934
  min-height: 0;
4936
4935
  overflow: hidden;
4937
4936
  transition: grid-template-rows 0.2s ease-out;
4938
4937
  }
4939
- .requestPreview.open .requestContent[data-v-1e1f4549] {
4938
+ .requestPreview.open .requestContent[data-v-e049f4c9] {
4940
4939
  grid-template-rows: 1fr;
4941
4940
  }
4942
- .requestPreview.succeeded[data-v-1e1f4549] {
4941
+ .requestPreview.succeeded[data-v-e049f4c9] {
4943
4942
  padding: 0;
4944
4943
  }
4945
- .requestContentInner[data-v-1e1f4549] {
4944
+ .requestContentInner[data-v-e049f4c9] {
4946
4945
  min-height: 0;
4947
4946
  overflow: hidden;
4948
4947
  }
4949
- .code[data-v-1e1f4549] {
4948
+ .code[data-v-e049f4c9] {
4950
4949
  display: flex;
4951
4950
  flex-direction: column;
4952
4951
  font-size: var(--scalar-font-size-4);
@@ -4959,34 +4958,34 @@ input[data-v-ce270af2]::placeholder {
4959
4958
  overflow: hidden;
4960
4959
  margin-bottom: 12px;
4961
4960
  }
4962
- .dark-mode .code[data-v-1e1f4549] {
4961
+ .dark-mode .code[data-v-e049f4c9] {
4963
4962
  background: var(--scalar-background-2);
4964
4963
  }
4965
- .code h1[data-v-1e1f4549] {
4964
+ .code h1[data-v-e049f4c9] {
4966
4965
  font-size: var(--scalar-font-size-3);
4967
4966
  color: var(--scalar-color-3);
4968
4967
  padding: 8px;
4969
4968
  }
4970
- .code[data-v-1e1f4549] .codeBlock {
4969
+ .code[data-v-e049f4c9] .codeBlock {
4971
4970
  max-height: calc(50vh - 100px);
4972
4971
  padding-top: 0;
4973
4972
  }
4974
- .autosendContainer[data-v-1e1f4549] {
4973
+ .autosendContainer[data-v-e049f4c9] {
4975
4974
  display: flex;
4976
4975
  justify-content: space-between;
4977
4976
  }
4978
- .sendButton[data-v-1e1f4549] {
4977
+ .sendButton[data-v-e049f4c9] {
4979
4978
  background: var(--scalar-color-blue);
4980
4979
  color: white;
4981
4980
  font-weight: var(--scalar-semibold);
4982
4981
  padding: 5px 10px;
4983
4982
  }
4984
- .sendButton[data-v-1e1f4549]:hover,
4985
- .sendButton[data-v-1e1f4549]:active {
4983
+ .sendButton[data-v-e049f4c9]:hover,
4984
+ .sendButton[data-v-e049f4c9]:active {
4986
4985
  background: color-mix(in srgb, var(--scalar-color-blue), black 10%);
4987
4986
  color: white !important;
4988
4987
  }
4989
- .toggleButton[data-v-1e1f4549] {
4988
+ .toggleButton[data-v-e049f4c9] {
4990
4989
  background: none;
4991
4990
  border: none;
4992
4991
  cursor: pointer;
@@ -4998,7 +4997,7 @@ input[data-v-ce270af2]::placeholder {
4998
4997
  justify-content: space-between;
4999
4998
  border-radius: var(--scalar-radius-lg);
5000
4999
  }
5001
- .toggleButton[data-v-1e1f4549]:hover {
5000
+ .toggleButton[data-v-e049f4c9]:hover {
5002
5001
  text-decoration: underline;
5003
5002
  }
5004
5003
 
@@ -5571,7 +5570,7 @@ input[data-v-ce270af2]::placeholder {
5571
5570
  width: 20px;
5572
5571
  }
5573
5572
 
5574
- .actionContainer[data-v-ba1161a7] {
5573
+ .actionContainer[data-v-3a0f1d21] {
5575
5574
  background: color-mix(
5576
5575
  in srgb,
5577
5576
  var(--scalar-background-2),
@@ -5584,7 +5583,7 @@ input[data-v-ce270af2]::placeholder {
5584
5583
  /* visually hides overflowing text below */
5585
5584
  box-shadow: 0 24px 0 2px var(--scalar-background-1);
5586
5585
  }
5587
- .promptForm[data-v-ba1161a7] {
5586
+ .promptForm[data-v-3a0f1d21] {
5588
5587
  width: 100%;
5589
5588
  position: relative;
5590
5589
  display: flex;
@@ -5595,23 +5594,23 @@ input[data-v-ce270af2]::placeholder {
5595
5594
  0 0 0 var(--scalar-border-width) var(--scalar-border-color);
5596
5595
  border-radius: var(--scalar-radius-3xl);
5597
5596
  }
5598
- .inputActionsContainer[data-v-ba1161a7] {
5597
+ .inputActionsContainer[data-v-3a0f1d21] {
5599
5598
  display: flex;
5600
5599
  justify-content: space-between;
5601
5600
  padding: 0 8px 8px 8px;
5602
5601
  }
5603
- .inputActionsLeft[data-v-ba1161a7] {
5602
+ .inputActionsLeft[data-v-3a0f1d21] {
5604
5603
  display: flex;
5605
5604
  flex-wrap: wrap; /* key: allows pills to go to next line */
5606
5605
  align-items: center;
5607
5606
  gap: 5px; /* spacing between pills */
5608
5607
  }
5609
- .inputActionsRight[data-v-ba1161a7] {
5608
+ .inputActionsRight[data-v-3a0f1d21] {
5610
5609
  display: flex;
5611
5610
  gap: 5px;
5612
5611
  position: relative;
5613
5612
  }
5614
- .apiPill[data-v-ba1161a7] {
5613
+ .apiPill[data-v-3a0f1d21] {
5615
5614
  font-size: var(--scalar-font-size-3);
5616
5615
  border: var(--scalar-border-width) solid var(--scalar-border-color);
5617
5616
  color: var(--scalar-color-2);
@@ -5626,10 +5625,10 @@ input[data-v-ce270af2]::placeholder {
5626
5625
  gap: 4px;
5627
5626
  user-select: none;
5628
5627
  }
5629
- .apiPillLogo[data-v-ba1161a7] {
5628
+ .apiPillLogo[data-v-3a0f1d21] {
5630
5629
  width: 15px;
5631
5630
  }
5632
- .apiPillRemove[data-v-ba1161a7] {
5631
+ .apiPillRemove[data-v-3a0f1d21] {
5633
5632
  width: 24px;
5634
5633
  height: 24px;
5635
5634
  margin-right: -6px;
@@ -5638,16 +5637,16 @@ input[data-v-ce270af2]::placeholder {
5638
5637
  align-items: center;
5639
5638
  justify-content: center;
5640
5639
  }
5641
- .apiPill:hover .apiPillRemove[data-v-ba1161a7] {
5640
+ .apiPill:hover .apiPillRemove[data-v-3a0f1d21] {
5642
5641
  background: var(--scalar-background-2);
5643
5642
  }
5644
- .dark-mode .apiPill:hover .apiPillRemove[data-v-ba1161a7] {
5643
+ .dark-mode .apiPill:hover .apiPillRemove[data-v-3a0f1d21] {
5645
5644
  background: var(--scalar-background-3);
5646
5645
  }
5647
- .apiPillRemove[data-v-ba1161a7]:hover {
5646
+ .apiPillRemove[data-v-3a0f1d21]:hover {
5648
5647
  color: var(--scalar-color-1);
5649
5648
  }
5650
- .prompt[data-v-ba1161a7] {
5649
+ .prompt[data-v-3a0f1d21] {
5651
5650
  width: 100%;
5652
5651
  outline: none;
5653
5652
  border: none;
@@ -5664,13 +5663,13 @@ input[data-v-ce270af2]::placeholder {
5664
5663
  font-size: 16px;
5665
5664
  padding: 12px 12px 14px 12px;
5666
5665
  }
5667
- .dark-mode .promptForm[data-v-ba1161a7] {
5666
+ .dark-mode .promptForm[data-v-3a0f1d21] {
5668
5667
  background: var(--scalar-background-2);
5669
5668
  }
5670
- .prompt[data-v-ba1161a7]:disabled {
5669
+ .prompt[data-v-3a0f1d21]:disabled {
5671
5670
  color: var(--scalar-color-3);
5672
5671
  }
5673
- .addAPIButton[data-v-ba1161a7] {
5672
+ .addAPIButton[data-v-3a0f1d21] {
5674
5673
  display: flex;
5675
5674
  align-items: center;
5676
5675
  justify-content: center;
@@ -5687,7 +5686,7 @@ input[data-v-ce270af2]::placeholder {
5687
5686
  z-index: 1;
5688
5687
  box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);
5689
5688
  }
5690
- .addAPIButton[data-v-ba1161a7]:hover {
5689
+ .addAPIButton[data-v-3a0f1d21]:hover {
5691
5690
  background: color-mix(
5692
5691
  in srgb,
5693
5692
  var(--scalar-background-2),
@@ -5695,47 +5694,47 @@ input[data-v-ce270af2]::placeholder {
5695
5694
  );
5696
5695
  box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);
5697
5696
  }
5698
- .dark-mode .addAPIButton[data-v-ba1161a7]:hover {
5697
+ .dark-mode .addAPIButton[data-v-3a0f1d21]:hover {
5699
5698
  background: var(--scalar-background-3);
5700
5699
  }
5701
- .settingsButton[data-v-ba1161a7] {
5700
+ .settingsButton[data-v-3a0f1d21] {
5702
5701
  color: var(--scalar-color-3) !important;
5703
5702
  border-radius: var(--scalar-radius-full) !important;
5704
5703
  margin: 0 !important;
5705
5704
  z-index: 1;
5706
5705
  }
5707
- .settingsButton[aria-disabled='true'][data-v-ba1161a7] {
5706
+ .settingsButton[aria-disabled='true'][data-v-3a0f1d21] {
5708
5707
  background: var(--scalar-background-2);
5709
5708
  }
5710
- .dark-mode .settingsButton[data-v-ba1161a7]:hover {
5709
+ .dark-mode .settingsButton[data-v-3a0f1d21]:hover {
5711
5710
  background: var(--scalar-background-3);
5712
5711
  }
5713
- .sendButton[data-v-ba1161a7] {
5712
+ .sendButton[data-v-3a0f1d21] {
5714
5713
  background: var(--scalar-color-blue) !important;
5715
5714
  border-radius: var(--scalar-radius-full) !important;
5716
5715
  margin: 0 !important;
5717
5716
  z-index: 1;
5718
5717
  border: var(--scalar-border-width) solid var(--scalar-color-blue);
5719
5718
  }
5720
- .sendButton[data-v-ba1161a7]:not([aria-disabled='true']) {
5719
+ .sendButton[data-v-3a0f1d21]:not([aria-disabled='true']) {
5721
5720
  color: white !important;
5722
5721
  }
5723
- .sendButton[data-v-ba1161a7]:not([aria-disabled='true']):hover {
5722
+ .sendButton[data-v-3a0f1d21]:not([aria-disabled='true']):hover {
5724
5723
  background: color-mix(
5725
5724
  in srgb,
5726
5725
  var(--scalar-color-blue),
5727
5726
  transparent 10%
5728
5727
  ) !important;
5729
5728
  }
5730
- .sendButton[aria-disabled='true'][data-v-ba1161a7] {
5729
+ .sendButton[aria-disabled='true'][data-v-3a0f1d21] {
5731
5730
  background: var(--scalar-background-2) !important;
5732
5731
  color: var(--scalar-color-3) !important;
5733
5732
  border: var(--scalar-border-width) solid var(--scalar-border-color);
5734
5733
  }
5735
- .dark-mode .sendButton[aria-disabled='true'][data-v-ba1161a7] {
5734
+ .dark-mode .sendButton[aria-disabled='true'][data-v-3a0f1d21] {
5736
5735
  background: var(--scalar-background-3) !important;
5737
5736
  }
5738
- .contextContainer[data-v-ba1161a7] {
5737
+ .contextContainer[data-v-3a0f1d21] {
5739
5738
  display: flex;
5740
5739
  width: 100%;
5741
5740
  padding: 10px 12px 12px 12px;
@@ -5744,25 +5743,25 @@ input[data-v-ce270af2]::placeholder {
5744
5743
  user-select: none;
5745
5744
  justify-content: space-between;
5746
5745
  }
5747
- .settingsButton[data-v-ba1161a7] {
5746
+ .settingsButton[data-v-3a0f1d21] {
5748
5747
  font-weight: var(--scalar-semibold);
5749
5748
  border-radius: var(--scalar-radius-lg);
5750
5749
  padding: 4px 6px;
5751
5750
  margin: -4px -6px;
5752
5751
  }
5753
- .settingsButton[data-v-ba1161a7]:hover {
5752
+ .settingsButton[data-v-3a0f1d21]:hover {
5754
5753
  background: var(--scalar-background-2);
5755
5754
  box-shadow: 0 0 var(--scalar-border-width) 0 var(--scalar-border-color);
5756
5755
  cursor: pointer;
5757
5756
  }
5758
- .agentLabel[data-v-ba1161a7] {
5757
+ .agentLabel[data-v-3a0f1d21] {
5759
5758
  font-size: 0px;
5760
5759
  position: absolute;
5761
5760
  width: 100%;
5762
5761
  height: 100%;
5763
5762
  cursor: text;
5764
5763
  }
5765
- .sendCheckboxContinue[data-v-ba1161a7]:has(input) {
5764
+ .sendCheckboxContinue[data-v-3a0f1d21]:has(input) {
5766
5765
  display: flex;
5767
5766
  align-items: center;
5768
5767
  border-radius: var(--scalar-radius-3xl);
@@ -5774,11 +5773,11 @@ input[data-v-ce270af2]::placeholder {
5774
5773
  user-select: none;
5775
5774
  height: 28px;
5776
5775
  }
5777
- .dark-mode .sendCheckboxContinue[data-v-ba1161a7]:has(input) {
5776
+ .dark-mode .sendCheckboxContinue[data-v-3a0f1d21]:has(input) {
5778
5777
  background: var(--scalar-background-3);
5779
5778
  box-shadow: 0 0 0 1.5px var(--scalar-background-3);
5780
5779
  }
5781
- .addMoreContext[data-v-ba1161a7] {
5780
+ .addMoreContext[data-v-3a0f1d21] {
5782
5781
  height: 40px;
5783
5782
  display: flex;
5784
5783
  position: relative;
@@ -5787,7 +5786,7 @@ input[data-v-ce270af2]::placeholder {
5787
5786
  padding: 0 8px 0 12px;
5788
5787
  align-items: center;
5789
5788
  }
5790
- .addMoreContext[data-v-ba1161a7]:before {
5789
+ .addMoreContext[data-v-3a0f1d21]:before {
5791
5790
  content: '';
5792
5791
  width: 8px;
5793
5792
  height: 8px;
@@ -5804,10 +5803,10 @@ input[data-v-ce270af2]::placeholder {
5804
5803
  -0.5px -0.5px 0 var(--scalar-border-color),
5805
5804
  inset 0.5px 0.5px 1px var(--scalar-border-color);
5806
5805
  }
5807
- .dark-mode .addMoreContext[data-v-ba1161a7]:before {
5806
+ .dark-mode .addMoreContext[data-v-3a0f1d21]:before {
5808
5807
  box-shadow: -0.5px -0.5px 0 var(--scalar-border-color);
5809
5808
  }
5810
- .addAPIContext[data-v-ba1161a7] {
5809
+ .addAPIContext[data-v-3a0f1d21] {
5811
5810
  width: 28px;
5812
5811
  height: 28px;
5813
5812
  border-radius: var(--scalar-radius-full);
@@ -5816,7 +5815,7 @@ input[data-v-ce270af2]::placeholder {
5816
5815
  justify-content: center;
5817
5816
  border: var(--scalar-border-width) solid var(--scalar-border-color);
5818
5817
  }
5819
- .termsAgree[data-v-ba1161a7] {
5818
+ .termsAgree[data-v-3a0f1d21] {
5820
5819
  display: flex;
5821
5820
  cursor: pointer;
5822
5821
  height: inherit;
@@ -5825,14 +5824,14 @@ input[data-v-ce270af2]::placeholder {
5825
5824
  gap: 5px;
5826
5825
  margin: 0px 5px;
5827
5826
  }
5828
- .termsAgree[data-v-ba1161a7]:hover {
5827
+ .termsAgree[data-v-3a0f1d21]:hover {
5829
5828
  color: var(--scalar-color-1);
5830
5829
  }
5831
- .termsAgree:hover .termsAgreeIcon[data-v-ba1161a7] {
5830
+ .termsAgree:hover .termsAgreeIcon[data-v-3a0f1d21] {
5832
5831
  background: var(--scalar-color-1);
5833
5832
  color: var(--scalar-background-1);
5834
5833
  }
5835
- .termsAgreeIcon[data-v-ba1161a7] {
5834
+ .termsAgreeIcon[data-v-3a0f1d21] {
5836
5835
  width: inherit;
5837
5836
  height: inherit;
5838
5837
  padding: 2px;
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../_virtual/_plugin-vue_export-he
2
2
  import PromptForm_vue_vue_type_script_setup_true_lang_default from "./PromptForm.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/views/PromptForm.vue
5
- var PromptForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(PromptForm_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-ba1161a7"]]);
5
+ var PromptForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(PromptForm_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-3a0f1d21"]]);
6
6
  //#endregion
7
7
  export { PromptForm_default as default };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"PromptForm.vue.js","names":[],"sources":["../../src/views/PromptForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconButton } from '@scalar/components/icon-button'\nimport { ScalarLoading } from '@scalar/components/loading'\nimport { ScalarTooltip } from '@scalar/components/tooltip'\nimport {\n ScalarIconArrowUp,\n ScalarIconCheck,\n ScalarIconLockSimple,\n ScalarIconPlus,\n ScalarIconX,\n} from '@scalar/icons'\nimport { computed, useTemplateRef, watch } from 'vue'\n\nimport ActionsDropdown from '@/components/ActionsDropdown.vue'\nimport ApprovalSection from '@/components/ApprovalSection.vue'\nimport ErrorMessageMessage from '@/components/ErrorMessage.vue'\nimport FreeMessagesInfoSection from '@/components/FreeMessagesInfoSection.vue'\nimport PaymentSection from '@/components/PaymentSection.vue'\nimport SearchPopover from '@/components/SearchPopover.vue'\nimport UploadSection from '@/components/UploadSection.vue'\nimport { AgentErrorCodes } from '@/entities/error/constants'\nimport { MAX_PROMPT_SIZE } from '@/entities/prompt/constants'\nimport { useRequestApprovals } from '@/hooks/use-chat-approvals'\nimport { useChatError } from '@/hooks/use-chat-error'\nimport { useChatPendingClientToolParts } from '@/hooks/use-chat-pending-client-tool-parts'\nimport { useUploadTmpDocument } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'uploadApi'): void\n}>()\n\ndefineExpose({ focusPrompt })\n\nconst promptRef = useTemplateRef<HTMLTextAreaElement>('agentPrompt')\n\nconst state = useState()\n\nconst inputHasContent = computed(() => state.prompt.value.trim().length > 0)\nconst promptTooLarge = computed(\n () => state.prompt.value.trim().length > MAX_PROMPT_SIZE,\n)\n\n/** Show free messages info only after at least one message has been sent and when no API key is set. */\nconst showFreeMessagesInfo = computed(\n () =>\n state.chat.messages.length > 1 &&\n !state.getAgentKey?.() &&\n chatError?.value?.code !== AgentErrorCodes.LIMIT_REACHED,\n)\n\nwatch(state.prompt, () => {\n if (!promptRef?.value) {\n return\n }\n\n if (!state.prompt.value.length) {\n promptRef.value.style.height = '0px'\n return\n }\n\n promptRef.value.style.height = 'auto'\n promptRef.value.style.height = promptRef.value.scrollHeight + 'px'\n})\n\nfunction handlePromptKeydown(e: KeyboardEvent) {\n // Ignore the Enter that only commits an IME composition (e.g. Japanese, Chinese,\n // Korean). On macOS Chrome that keydown still reports key === 'Enter' with\n // isComposing === true, so without this guard the message sends mid-composition.\n if (e.isComposing) {\n return\n }\n\n if (state.loading.value) {\n return\n }\n\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSubmit()\n window.scrollTo(0, document.body.scrollHeight)\n }\n}\n\nfunction focusPrompt() {\n promptRef.value?.focus()\n}\n\nwatch(\n () => state.chat.status,\n (status) => {\n if (status === 'ready' || status === 'error') {\n promptRef.value?.focus()\n }\n },\n)\n\nconst { approvalRequiredParts, respondToRequestApprovals } =\n useRequestApprovals()\n\nconst { pendingClientToolParts } = useChatPendingClientToolParts()\n\nconst uploadTmpDoc = useUploadTmpDocument()\n\nfunction acceptTerms() {\n state.terms.accept()\n\n if (state.mode === 'preview' && state.getActiveDocumentJson) {\n uploadTmpDoc.uploadTempDocument(state.getActiveDocumentJson(), true)\n }\n}\n\nconst isPending = computed(() =>\n Object.values(state.pendingDocuments).some(Boolean),\n)\n\nconst submitDisabled = computed(() => {\n const tooLarge = promptTooLarge.value\n const missingInput = !inputHasContent.value\n const awaitingApproval = approvalRequiredParts.value.length > 0\n const pendingToolParts = pendingClientToolParts.value.length > 0\n\n const isPreview = state.mode === 'preview'\n\n const termsNotAccepted = isPreview && !state.terms.accepted.value\n const uploadingTmpDoc = isPreview && !!uploadTmpDoc.uploadState.value\n const isLoading = isPending.value\n\n return (\n tooLarge ||\n missingInput ||\n awaitingApproval ||\n pendingToolParts ||\n termsNotAccepted ||\n uploadingTmpDoc ||\n isLoading\n )\n})\n\nfunction handleSubmit() {\n if (submitDisabled.value) {\n return\n }\n\n emit('submit')\n}\n\nconst chatError = useChatError()\n</script>\n\n<template>\n <div class=\"actionContainer\">\n <UploadSection\n v-if=\"uploadTmpDoc.uploadState.value || isPending\"\n :uploadState=\"uploadTmpDoc.uploadState.value ?? { type: 'loading' }\" />\n <ErrorMessageMessage\n v-if=\"chatError\"\n :error=\"chatError\" />\n <ApprovalSection\n v-if=\"approvalRequiredParts.length\"\n @approve=\"respondToRequestApprovals(true)\"\n @reject=\"respondToRequestApprovals(false)\" />\n <PaymentSection v-if=\"chatError?.code === AgentErrorCodes.LIMIT_REACHED\" />\n <FreeMessagesInfoSection v-if=\"showFreeMessagesInfo\" />\n <form\n class=\"promptForm\"\n @submit.prevent=\"handleSubmit\">\n <label\n class=\"agentLabel\"\n for=\"agentTextarea\">\n Type a Request To get Started\n </label>\n <textarea\n id=\"agentTextarea\"\n ref=\"agentPrompt\"\n v-model=\"state.prompt.value\"\n class=\"prompt custom-scroll\"\n :disabled=\"state.loading.value\"\n name=\"prompt\"\n placeholder=\"Ask me anything…\"\n @keydown=\"handlePromptKeydown\" />\n <div class=\"inputActionsContainer\">\n <div class=\"inputActionsLeft\">\n <template v-if=\"!state.hideAddApi\">\n <SearchPopover v-if=\"!state.isLoggedIn?.value\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </SearchPopover>\n <ActionsDropdown\n v-else\n @uploadApi=\"$emit('uploadApi')\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </ActionsDropdown>\n </template>\n <div\n v-for=\"document in state.registryDocuments.value\"\n :key=\"document.id\"\n class=\"apiPill\">\n <img\n v-if=\"document.logoUrl\"\n class=\"apiPillLogo\"\n :src=\"document.logoUrl\" />\n {{ document.title }}\n <button\n v-if=\"document.removable\"\n class=\"apiPillRemove\"\n type=\"button\"\n @click=\"state.removeDocument(document)\">\n <ScalarIconX\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </div>\n </div>\n\n <div class=\"inputActionsRight\">\n <template v-if=\"!state.loading.value\">\n <ScalarTooltip content=\"Settings\">\n <ScalarIconButton\n class=\"settingsButton h-7 w-7 p-1.5\"\n :icon=\"ScalarIconLockSimple\"\n label=\"Scalar\"\n size=\"md\"\n weight=\"bold\"\n @click=\"state.settingsModal.show()\" />\n </ScalarTooltip>\n </template>\n <div class=\"sendCheckboxContinue\">\n <div\n v-if=\"!state.terms.accepted.value && state.mode === 'preview'\"\n class=\"relative flex items-center gap-1.5\">\n <input\n id=\"agentTermsAgree\"\n class=\"sr-only\"\n type=\"checkbox\"\n @change=\"acceptTerms\" />\n <label\n class=\"termsAgree\"\n for=\"agentTermsAgree\">\n <ScalarIconCheck\n class=\"termsAgreeIcon\"\n weight=\"bold\" />\n Agree to Terms & Conditions\n </label>\n </div>\n <ScalarIconButton\n v-if=\"!state.loading.value\"\n class=\"sendButton h-7 w-7 p-1.5\"\n :disabled=\"submitDisabled\"\n :icon=\"ScalarIconArrowUp\"\n label=\"Scalar\"\n size=\"md\"\n type=\"submit\"\n weight=\"bold\" />\n <ScalarLoading\n v-else\n class=\"loader h-7 w-7\"\n :loader=\"{\n isLoading: state.loading.value,\n isValid: false,\n clear: async () => {},\n invalidate: async () => {},\n isInvalid: false,\n isActive: false,\n validate: async () => {},\n start: () => {},\n }\"\n size=\"2xl\" />\n </div>\n </div>\n </div>\n </form>\n\n <div\n v-if=\"state.chat.messages.length <= 1 && !state.hideAddApi\"\n class=\"addMoreContext\">\n <span>Load additional APIs</span>\n <div class=\"ml-auto flex items-center gap-1\">\n <button\n v-for=\"doc of state.curatedDocuments.value\"\n :key=\"doc.id\"\n class=\"addAPIContext\"\n type=\"button\"\n @click=\"state.addDocument(doc)\">\n <img\n v-if=\"doc.logoUrl\"\n :alt=\"doc.title\"\n class=\"size-4\"\n :src=\"doc.logoUrl\" />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.actionContainer {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n width: 100%;\n position: relative;\n /* visually hides overflowing text below */\n box-shadow: 0 24px 0 2px var(--scalar-background-1);\n}\n.promptForm {\n width: 100%;\n position: relative;\n display: flex;\n flex-direction: column;\n background: var(--scalar-background-1);\n box-shadow:\n var(--scalar-shadow-1),\n 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n}\n\n.inputActionsContainer {\n display: flex;\n justify-content: space-between;\n padding: 0 8px 8px 8px;\n}\n\n.inputActionsLeft {\n display: flex;\n flex-wrap: wrap; /* key: allows pills to go to next line */\n align-items: center;\n gap: 5px; /* spacing between pills */\n}\n\n.inputActionsRight {\n display: flex;\n gap: 5px;\n position: relative;\n}\n\n.apiPill {\n font-size: var(--scalar-font-size-3);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n color: var(--scalar-color-2);\n font-weight: var(--scalar-semibold);\n height: 28px;\n align-items: center;\n display: flex;\n border-radius: var(--scalar-radius-3xl);\n padding: 0 8px;\n pointer-events: all;\n z-index: 1;\n gap: 4px;\n user-select: none;\n}\n.apiPillLogo {\n width: 15px;\n}\n\n.apiPillRemove {\n width: 24px;\n height: 24px;\n margin-right: -6px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.apiPill:hover .apiPillRemove {\n background: var(--scalar-background-2);\n}\n.dark-mode .apiPill:hover .apiPillRemove {\n background: var(--scalar-background-3);\n}\n\n.apiPillRemove:hover {\n color: var(--scalar-color-1);\n}\n\n.prompt {\n width: 100%;\n outline: none;\n border: none;\n resize: none;\n field-sizing: content;\n min-height: 64px;\n z-index: 1;\n max-height: 250px;\n max-width: 100%;\n overflow-y: auto;\n scrollbar-width: thin;\n word-wrap: break-word;\n font-family: var(--scalar-font);\n font-size: 16px;\n padding: 12px 12px 14px 12px;\n}\n.dark-mode .promptForm {\n background: var(--scalar-background-2);\n}\n\n.prompt:disabled {\n color: var(--scalar-color-3);\n}\n\n.addAPIButton {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n height: 28px;\n width: 28px;\n font-weight: var(--scalar-bold);\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: all;\n z-index: 1;\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.addAPIButton:hover {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.dark-mode .addAPIButton:hover {\n background: var(--scalar-background-3);\n}\n\n.settingsButton {\n color: var(--scalar-color-3) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n}\n.settingsButton[aria-disabled='true'] {\n background: var(--scalar-background-2);\n}\n.dark-mode .settingsButton:hover {\n background: var(--scalar-background-3);\n}\n\n.sendButton {\n background: var(--scalar-color-blue) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n border: var(--scalar-border-width) solid var(--scalar-color-blue);\n}\n.sendButton:not([aria-disabled='true']) {\n color: white !important;\n}\n.sendButton:not([aria-disabled='true']):hover {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n transparent 10%\n ) !important;\n}\n.sendButton[aria-disabled='true'] {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-3) !important;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.dark-mode .sendButton[aria-disabled='true'] {\n background: var(--scalar-background-3) !important;\n}\n.contextContainer {\n display: flex;\n width: 100%;\n padding: 10px 12px 12px 12px;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n user-select: none;\n justify-content: space-between;\n}\n\n.settingsButton {\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-lg);\n padding: 4px 6px;\n margin: -4px -6px;\n}\n.settingsButton:hover {\n background: var(--scalar-background-2);\n box-shadow: 0 0 var(--scalar-border-width) 0 var(--scalar-border-color);\n cursor: pointer;\n}\n\n.agentLabel {\n font-size: 0px;\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: text;\n}\n.sendCheckboxContinue:has(input) {\n display: flex;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n background: var(--scalar-background-2);\n box-shadow: 0 0 0 1.5px var(--scalar-background-2);\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n font-weight: var(--scalar-semibold);\n user-select: none;\n height: 28px;\n}\n.dark-mode .sendCheckboxContinue:has(input) {\n background: var(--scalar-background-3);\n box-shadow: 0 0 0 1.5px var(--scalar-background-3);\n}\n\n.addMoreContext {\n height: 40px;\n display: flex;\n position: relative;\n font-size: var(--scalar-font-size-3);\n color: var(--scalar-color-3);\n padding: 0 8px 0 12px;\n align-items: center;\n}\n.addMoreContext:before {\n content: '';\n width: 8px;\n height: 8px;\n background: color-mix(\n in srgb,\n var(--scalar-background-1),\n var(--scalar-background-2)\n );\n transform: rotate(45deg);\n left: 18px;\n top: -3px;\n position: absolute;\n box-shadow:\n -0.5px -0.5px 0 var(--scalar-border-color),\n inset 0.5px 0.5px 1px var(--scalar-border-color);\n}\n.dark-mode .addMoreContext:before {\n box-shadow: -0.5px -0.5px 0 var(--scalar-border-color);\n}\n.addAPIContext {\n width: 28px;\n height: 28px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.termsAgree {\n display: flex;\n cursor: pointer;\n height: inherit;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n gap: 5px;\n margin: 0px 5px;\n}\n\n.termsAgree:hover {\n color: var(--scalar-color-1);\n}\n\n.termsAgree:hover .termsAgreeIcon {\n background: var(--scalar-color-1);\n color: var(--scalar-background-1);\n}\n\n.termsAgreeIcon {\n width: inherit;\n height: inherit;\n padding: 2px;\n border-radius: var(--scalar-radius-full);\n background: var(--scalar-background-2);\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"PromptForm.vue.js","names":[],"sources":["../../src/views/PromptForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconButton } from '@scalar/components/icon-button'\nimport { ScalarLoading } from '@scalar/components/loading'\nimport { ScalarTooltip } from '@scalar/components/tooltip'\nimport {\n ScalarIconArrowUp,\n ScalarIconCheck,\n ScalarIconLockSimple,\n ScalarIconPlus,\n ScalarIconX,\n} from '@scalar/icons'\nimport { computed, useTemplateRef, watch } from 'vue'\n\nimport ActionsDropdown from '@/components/ActionsDropdown.vue'\nimport ApprovalSection from '@/components/ApprovalSection.vue'\nimport ErrorMessageMessage from '@/components/ErrorMessage.vue'\nimport FreeMessagesInfoSection from '@/components/FreeMessagesInfoSection.vue'\nimport PaymentSection from '@/components/PaymentSection.vue'\nimport SearchPopover from '@/components/SearchPopover.vue'\nimport UploadSection from '@/components/UploadSection.vue'\nimport { AgentErrorCodes } from '@/entities/error/constants'\nimport { MAX_PROMPT_SIZE } from '@/entities/prompt/constants'\nimport { useRequestApprovals } from '@/hooks/use-chat-approvals'\nimport { useChatError } from '@/hooks/use-chat-error'\nimport { useChatPendingClientToolParts } from '@/hooks/use-chat-pending-client-tool-parts'\nimport { useUploadTmpDocument } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'uploadApi'): void\n}>()\n\ndefineExpose({ focusPrompt })\n\nconst promptRef = useTemplateRef<HTMLTextAreaElement>('agentPrompt')\n\nconst state = useState()\n\nconst inputHasContent = computed(() => state.prompt.value.trim().length > 0)\nconst promptTooLarge = computed(\n () => state.prompt.value.trim().length > MAX_PROMPT_SIZE,\n)\n\n/** Show free messages info only after at least one message has been sent and when no API key is set. */\nconst showFreeMessagesInfo = computed(\n () =>\n state.chat.messages.length > 1 &&\n !state.getAgentKey?.() &&\n chatError?.value?.code !== AgentErrorCodes.LIMIT_REACHED,\n)\n\nwatch(state.prompt, () => {\n if (!promptRef?.value) {\n return\n }\n\n if (!state.prompt.value.length) {\n promptRef.value.style.height = '0px'\n return\n }\n\n promptRef.value.style.height = 'auto'\n promptRef.value.style.height = promptRef.value.scrollHeight + 'px'\n})\n\nfunction handlePromptKeydown(e: KeyboardEvent) {\n // Ignore the Enter that only commits an IME composition (e.g. Japanese, Chinese,\n // Korean). On macOS Chrome that keydown still reports key === 'Enter' with\n // isComposing === true, so without this guard the message sends mid-composition.\n if (e.isComposing) {\n return\n }\n\n if (state.loading.value) {\n return\n }\n\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSubmit()\n window.scrollTo(0, document.body.scrollHeight)\n }\n}\n\nfunction focusPrompt() {\n promptRef.value?.focus()\n}\n\nwatch(\n () => state.chat.status,\n (status) => {\n if (status === 'ready' || status === 'error') {\n promptRef.value?.focus()\n }\n },\n)\n\nconst { approvalRequiredParts, respondToRequestApprovals } =\n useRequestApprovals()\n\nconst { pendingClientToolParts } = useChatPendingClientToolParts()\n\nconst uploadTmpDoc = useUploadTmpDocument()\n\nfunction acceptTerms() {\n state.terms.accept()\n\n if (state.mode === 'preview' && state.getActiveDocumentJson) {\n void uploadTmpDoc.uploadTempDocument(state.getActiveDocumentJson(), true)\n }\n}\n\nconst isPending = computed(() =>\n Object.values(state.pendingDocuments).some(Boolean),\n)\n\nconst submitDisabled = computed(() => {\n const tooLarge = promptTooLarge.value\n const missingInput = !inputHasContent.value\n const awaitingApproval = approvalRequiredParts.value.length > 0\n const pendingToolParts = pendingClientToolParts.value.length > 0\n\n const isPreview = state.mode === 'preview'\n\n const termsNotAccepted = isPreview && !state.terms.accepted.value\n const uploadingTmpDoc = isPreview && !!uploadTmpDoc.uploadState.value\n const isLoading = isPending.value\n\n return (\n tooLarge ||\n missingInput ||\n awaitingApproval ||\n pendingToolParts ||\n termsNotAccepted ||\n uploadingTmpDoc ||\n isLoading\n )\n})\n\nfunction handleSubmit() {\n if (submitDisabled.value) {\n return\n }\n\n emit('submit')\n}\n\nconst chatError = useChatError()\n</script>\n\n<template>\n <div class=\"actionContainer\">\n <UploadSection\n v-if=\"uploadTmpDoc.uploadState.value || isPending\"\n :uploadState=\"uploadTmpDoc.uploadState.value ?? { type: 'loading' }\" />\n <ErrorMessageMessage\n v-if=\"chatError\"\n :error=\"chatError\" />\n <ApprovalSection\n v-if=\"approvalRequiredParts.length\"\n @approve=\"respondToRequestApprovals(true)\"\n @reject=\"respondToRequestApprovals(false)\" />\n <PaymentSection v-if=\"chatError?.code === AgentErrorCodes.LIMIT_REACHED\" />\n <FreeMessagesInfoSection v-if=\"showFreeMessagesInfo\" />\n <form\n class=\"promptForm\"\n @submit.prevent=\"handleSubmit\">\n <label\n class=\"agentLabel\"\n for=\"agentTextarea\">\n Type a Request To get Started\n </label>\n <textarea\n id=\"agentTextarea\"\n ref=\"agentPrompt\"\n v-model=\"state.prompt.value\"\n class=\"prompt custom-scroll\"\n :disabled=\"state.loading.value\"\n name=\"prompt\"\n placeholder=\"Ask me anything…\"\n @keydown=\"handlePromptKeydown\" />\n <div class=\"inputActionsContainer\">\n <div class=\"inputActionsLeft\">\n <template v-if=\"!state.hideAddApi\">\n <SearchPopover v-if=\"!state.isLoggedIn?.value\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </SearchPopover>\n <ActionsDropdown\n v-else\n @uploadApi=\"$emit('uploadApi')\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </ActionsDropdown>\n </template>\n <div\n v-for=\"document in state.registryDocuments.value\"\n :key=\"document.id\"\n class=\"apiPill\">\n <img\n v-if=\"document.logoUrl\"\n class=\"apiPillLogo\"\n :src=\"document.logoUrl\" />\n {{ document.title }}\n <button\n v-if=\"document.removable\"\n class=\"apiPillRemove\"\n type=\"button\"\n @click=\"state.removeDocument(document)\">\n <ScalarIconX\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </div>\n </div>\n\n <div class=\"inputActionsRight\">\n <template v-if=\"!state.loading.value\">\n <ScalarTooltip content=\"Settings\">\n <ScalarIconButton\n class=\"settingsButton h-7 w-7 p-1.5\"\n :icon=\"ScalarIconLockSimple\"\n label=\"Scalar\"\n size=\"md\"\n weight=\"bold\"\n @click=\"state.settingsModal.show()\" />\n </ScalarTooltip>\n </template>\n <div class=\"sendCheckboxContinue\">\n <div\n v-if=\"!state.terms.accepted.value && state.mode === 'preview'\"\n class=\"relative flex items-center gap-1.5\">\n <input\n id=\"agentTermsAgree\"\n class=\"sr-only\"\n type=\"checkbox\"\n @change=\"acceptTerms\" />\n <label\n class=\"termsAgree\"\n for=\"agentTermsAgree\">\n <ScalarIconCheck\n class=\"termsAgreeIcon\"\n weight=\"bold\" />\n Agree to Terms & Conditions\n </label>\n </div>\n <ScalarIconButton\n v-if=\"!state.loading.value\"\n class=\"sendButton h-7 w-7 p-1.5\"\n :disabled=\"submitDisabled\"\n :icon=\"ScalarIconArrowUp\"\n label=\"Scalar\"\n size=\"md\"\n type=\"submit\"\n weight=\"bold\" />\n <ScalarLoading\n v-else\n class=\"loader h-7 w-7\"\n :loader=\"{\n isLoading: state.loading.value,\n isValid: false,\n clear: async () => {},\n invalidate: async () => {},\n isInvalid: false,\n isActive: false,\n validate: async () => {},\n start: () => {},\n }\"\n size=\"2xl\" />\n </div>\n </div>\n </div>\n </form>\n\n <div\n v-if=\"state.chat.messages.length <= 1 && !state.hideAddApi\"\n class=\"addMoreContext\">\n <span>Load additional APIs</span>\n <div class=\"ml-auto flex items-center gap-1\">\n <button\n v-for=\"doc of state.curatedDocuments.value\"\n :key=\"doc.id\"\n class=\"addAPIContext\"\n type=\"button\"\n @click=\"state.addDocument(doc)\">\n <img\n v-if=\"doc.logoUrl\"\n :alt=\"doc.title\"\n class=\"size-4\"\n :src=\"doc.logoUrl\" />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.actionContainer {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n width: 100%;\n position: relative;\n /* visually hides overflowing text below */\n box-shadow: 0 24px 0 2px var(--scalar-background-1);\n}\n.promptForm {\n width: 100%;\n position: relative;\n display: flex;\n flex-direction: column;\n background: var(--scalar-background-1);\n box-shadow:\n var(--scalar-shadow-1),\n 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n}\n\n.inputActionsContainer {\n display: flex;\n justify-content: space-between;\n padding: 0 8px 8px 8px;\n}\n\n.inputActionsLeft {\n display: flex;\n flex-wrap: wrap; /* key: allows pills to go to next line */\n align-items: center;\n gap: 5px; /* spacing between pills */\n}\n\n.inputActionsRight {\n display: flex;\n gap: 5px;\n position: relative;\n}\n\n.apiPill {\n font-size: var(--scalar-font-size-3);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n color: var(--scalar-color-2);\n font-weight: var(--scalar-semibold);\n height: 28px;\n align-items: center;\n display: flex;\n border-radius: var(--scalar-radius-3xl);\n padding: 0 8px;\n pointer-events: all;\n z-index: 1;\n gap: 4px;\n user-select: none;\n}\n.apiPillLogo {\n width: 15px;\n}\n\n.apiPillRemove {\n width: 24px;\n height: 24px;\n margin-right: -6px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.apiPill:hover .apiPillRemove {\n background: var(--scalar-background-2);\n}\n.dark-mode .apiPill:hover .apiPillRemove {\n background: var(--scalar-background-3);\n}\n\n.apiPillRemove:hover {\n color: var(--scalar-color-1);\n}\n\n.prompt {\n width: 100%;\n outline: none;\n border: none;\n resize: none;\n field-sizing: content;\n min-height: 64px;\n z-index: 1;\n max-height: 250px;\n max-width: 100%;\n overflow-y: auto;\n scrollbar-width: thin;\n word-wrap: break-word;\n font-family: var(--scalar-font);\n font-size: 16px;\n padding: 12px 12px 14px 12px;\n}\n.dark-mode .promptForm {\n background: var(--scalar-background-2);\n}\n\n.prompt:disabled {\n color: var(--scalar-color-3);\n}\n\n.addAPIButton {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n height: 28px;\n width: 28px;\n font-weight: var(--scalar-bold);\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: all;\n z-index: 1;\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.addAPIButton:hover {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.dark-mode .addAPIButton:hover {\n background: var(--scalar-background-3);\n}\n\n.settingsButton {\n color: var(--scalar-color-3) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n}\n.settingsButton[aria-disabled='true'] {\n background: var(--scalar-background-2);\n}\n.dark-mode .settingsButton:hover {\n background: var(--scalar-background-3);\n}\n\n.sendButton {\n background: var(--scalar-color-blue) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n border: var(--scalar-border-width) solid var(--scalar-color-blue);\n}\n.sendButton:not([aria-disabled='true']) {\n color: white !important;\n}\n.sendButton:not([aria-disabled='true']):hover {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n transparent 10%\n ) !important;\n}\n.sendButton[aria-disabled='true'] {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-3) !important;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.dark-mode .sendButton[aria-disabled='true'] {\n background: var(--scalar-background-3) !important;\n}\n.contextContainer {\n display: flex;\n width: 100%;\n padding: 10px 12px 12px 12px;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n user-select: none;\n justify-content: space-between;\n}\n\n.settingsButton {\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-lg);\n padding: 4px 6px;\n margin: -4px -6px;\n}\n.settingsButton:hover {\n background: var(--scalar-background-2);\n box-shadow: 0 0 var(--scalar-border-width) 0 var(--scalar-border-color);\n cursor: pointer;\n}\n\n.agentLabel {\n font-size: 0px;\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: text;\n}\n.sendCheckboxContinue:has(input) {\n display: flex;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n background: var(--scalar-background-2);\n box-shadow: 0 0 0 1.5px var(--scalar-background-2);\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n font-weight: var(--scalar-semibold);\n user-select: none;\n height: 28px;\n}\n.dark-mode .sendCheckboxContinue:has(input) {\n background: var(--scalar-background-3);\n box-shadow: 0 0 0 1.5px var(--scalar-background-3);\n}\n\n.addMoreContext {\n height: 40px;\n display: flex;\n position: relative;\n font-size: var(--scalar-font-size-3);\n color: var(--scalar-color-3);\n padding: 0 8px 0 12px;\n align-items: center;\n}\n.addMoreContext:before {\n content: '';\n width: 8px;\n height: 8px;\n background: color-mix(\n in srgb,\n var(--scalar-background-1),\n var(--scalar-background-2)\n );\n transform: rotate(45deg);\n left: 18px;\n top: -3px;\n position: absolute;\n box-shadow:\n -0.5px -0.5px 0 var(--scalar-border-color),\n inset 0.5px 0.5px 1px var(--scalar-border-color);\n}\n.dark-mode .addMoreContext:before {\n box-shadow: -0.5px -0.5px 0 var(--scalar-border-color);\n}\n.addAPIContext {\n width: 28px;\n height: 28px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.termsAgree {\n display: flex;\n cursor: pointer;\n height: inherit;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n gap: 5px;\n margin: 0px 5px;\n}\n\n.termsAgree:hover {\n color: var(--scalar-color-1);\n}\n\n.termsAgree:hover .termsAgreeIcon {\n background: var(--scalar-color-1);\n color: var(--scalar-background-1);\n}\n\n.termsAgreeIcon {\n width: inherit;\n height: inherit;\n padding: 2px;\n border-radius: var(--scalar-radius-full);\n background: var(--scalar-background-2);\n}\n</style>\n"],"mappings":""}