@scalar/api-client 3.21.1 → 3.21.2

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 (91) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/components/SectionFilter.vue.d.ts +0 -2
  3. package/dist/components/SectionFilter.vue.d.ts.map +1 -1
  4. package/dist/components/SectionFilter.vue.js +1 -1
  5. package/dist/components/SectionFilter.vue.js.map +1 -1
  6. package/dist/components/SectionFilter.vue.script.js +2 -8
  7. package/dist/components/SectionFilter.vue.script.js.map +1 -1
  8. package/dist/components/SectionFilterButton.vue.d.ts +0 -1
  9. package/dist/components/SectionFilterButton.vue.d.ts.map +1 -1
  10. package/dist/components/SectionFilterButton.vue.js.map +1 -1
  11. package/dist/components/SectionFilterButton.vue.script.js +2 -10
  12. package/dist/components/SectionFilterButton.vue.script.js.map +1 -1
  13. package/dist/style.css +146 -81
  14. package/dist/v2/blocks/operation-block/components/Header.vue.d.ts.map +1 -1
  15. package/dist/v2/blocks/operation-block/components/Header.vue.js +1 -1
  16. package/dist/v2/blocks/operation-block/components/Header.vue.js.map +1 -1
  17. package/dist/v2/blocks/operation-block/components/Header.vue.script.js +2 -0
  18. package/dist/v2/blocks/operation-block/components/Header.vue.script.js.map +1 -1
  19. package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts.map +1 -1
  20. package/dist/v2/blocks/request-block/RequestBlock.vue.js +1 -1
  21. package/dist/v2/blocks/request-block/RequestBlock.vue.js.map +1 -1
  22. package/dist/v2/blocks/request-block/RequestBlock.vue.script.js +17 -6
  23. package/dist/v2/blocks/request-block/RequestBlock.vue.script.js.map +1 -1
  24. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js +2 -0
  25. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js.map +1 -1
  26. package/dist/v2/blocks/response-block/ResponseBlock.vue.d.ts.map +1 -1
  27. package/dist/v2/blocks/response-block/ResponseBlock.vue.js +1 -1
  28. package/dist/v2/blocks/response-block/ResponseBlock.vue.js.map +1 -1
  29. package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js +0 -2
  30. package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js.map +1 -1
  31. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts.map +1 -1
  32. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js +1 -1
  33. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js.map +1 -1
  34. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js +23 -43
  35. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js.map +1 -1
  36. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts +7 -0
  37. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts.map +1 -1
  38. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.js.map +1 -1
  39. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js +6 -0
  40. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js.map +1 -1
  41. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.d.ts.map +1 -1
  42. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.js.map +1 -1
  43. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js +5 -5
  44. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js.map +1 -1
  45. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.d.ts.map +1 -1
  46. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.js.map +1 -1
  47. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.script.js +11 -1
  48. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.script.js.map +1 -1
  49. package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.d.ts.map +1 -1
  50. package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.js +1 -1
  51. package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.js.map +1 -1
  52. package/dist/v2/components/code-input/CodeInputLite.vue.d.ts.map +1 -1
  53. package/dist/v2/components/code-input/CodeInputLite.vue.js +1 -1
  54. package/dist/v2/components/code-input/CodeInputLite.vue.js.map +1 -1
  55. package/dist/v2/components/code-input/CodeInputLite.vue.script.js +13 -1
  56. package/dist/v2/components/code-input/CodeInputLite.vue.script.js.map +1 -1
  57. package/dist/v2/components/data-table/DataTableInput.vue.d.ts.map +1 -1
  58. package/dist/v2/components/data-table/DataTableInput.vue.js +1 -1
  59. package/dist/v2/components/data-table/DataTableInput.vue.js.map +1 -1
  60. package/dist/v2/components/data-table/DataTableInput.vue.script.js +7 -2
  61. package/dist/v2/components/data-table/DataTableInput.vue.script.js.map +1 -1
  62. package/dist/v2/components/layout/CollapsibleSection.vue.d.ts +20 -0
  63. package/dist/v2/components/layout/CollapsibleSection.vue.d.ts.map +1 -1
  64. package/dist/v2/components/layout/CollapsibleSection.vue.js.map +1 -1
  65. package/dist/v2/components/layout/CollapsibleSection.vue.script.js +36 -16
  66. package/dist/v2/components/layout/CollapsibleSection.vue.script.js.map +1 -1
  67. package/dist/v2/components/layout/collapsible-section-heading-level.d.ts +13 -0
  68. package/dist/v2/components/layout/collapsible-section-heading-level.d.ts.map +1 -0
  69. package/dist/v2/components/layout/collapsible-section-heading-level.js +14 -0
  70. package/dist/v2/components/layout/collapsible-section-heading-level.js.map +1 -0
  71. package/dist/v2/components/layout/index.d.ts +1 -0
  72. package/dist/v2/components/layout/index.d.ts.map +1 -1
  73. package/dist/v2/components/layout/index.js +2 -1
  74. package/dist/v2/components/modals/ModalClientContainer.vue.d.ts.map +1 -1
  75. package/dist/v2/components/modals/ModalClientContainer.vue.js +1 -1
  76. package/dist/v2/components/modals/ModalClientContainer.vue.js.map +1 -1
  77. package/dist/v2/components/modals/ModalClientContainer.vue.script.js +10 -1
  78. package/dist/v2/components/modals/ModalClientContainer.vue.script.js.map +1 -1
  79. package/dist/v2/components/sidebar/SidebarToggle.vue.d.ts +15 -2
  80. package/dist/v2/components/sidebar/SidebarToggle.vue.d.ts.map +1 -1
  81. package/dist/v2/components/sidebar/SidebarToggle.vue.js +3 -1
  82. package/dist/v2/components/sidebar/SidebarToggle.vue.js.map +1 -1
  83. package/dist/v2/components/sidebar/SidebarToggle.vue.script.js +5 -5
  84. package/dist/v2/components/sidebar/SidebarToggle.vue.script.js.map +1 -1
  85. package/dist/v2/constants.js +1 -1
  86. package/dist/v2/features/modal/Modal.vue.d.ts.map +1 -1
  87. package/dist/v2/features/modal/Modal.vue.js.map +1 -1
  88. package/dist/v2/features/modal/Modal.vue.script.js +2 -1
  89. package/dist/v2/features/modal/Modal.vue.script.js.map +1 -1
  90. package/dist/vue-styles.css +114 -73
  91. package/package.json +12 -12
package/dist/style.css CHANGED
@@ -215,7 +215,7 @@
215
215
  --scalar-background-3: #e7e7e7;
216
216
  --scalar-background-accent: #8ab4f81f;
217
217
  --scalar-color-1: #1b1b1b;
218
- --scalar-color-2: #757575;
218
+ --scalar-color-2: #707070;
219
219
  --scalar-color-3: #8e8e8e;
220
220
  --scalar-color-accent: #09f;
221
221
  --scalar-border-color: #dfdfdf;
@@ -263,7 +263,7 @@
263
263
  --scalar-color-green: #069061;
264
264
  --scalar-color-red: #ef0006;
265
265
  --scalar-color-yellow: #edbe20;
266
- --scalar-color-blue: #0082d0;
266
+ --scalar-color-blue: #0072bd;
267
267
  --scalar-color-orange: #ff5800;
268
268
  --scalar-color-purple: #5203d1;
269
269
  --scalar-color-query: #007b80;
@@ -381,7 +381,7 @@
381
381
  --scalar-color-green: color(display-p3 .023529 .564706 .380392);
382
382
  --scalar-color-red: color(display-p3 .937255 0 .023529);
383
383
  --scalar-color-yellow: color(display-p3 .929412 .745098 .12549);
384
- --scalar-color-blue: color(display-p3 0 .509804 .815686);
384
+ --scalar-color-blue: color(display-p3 0 .447059 .741176);
385
385
  --scalar-color-orange: color(display-p3 1 .4 .02);
386
386
  --scalar-color-purple: color(display-p3 .321569 .011765 .819608);
387
387
  }
@@ -415,9 +415,19 @@
415
415
  :where(.scalar-app) {
416
416
  font-family: var(--scalar-font);
417
417
  color: var(--scalar-color-1);
418
+ --scalar-focus-color: var(--scalar-color-accent);
419
+ line-height: 1.15;
420
+ }
421
+
422
+ @supports (color: color-mix(in lab, red, red)) {
423
+ :where(.scalar-app) {
424
+ --scalar-focus-color: color-mix(in srgb, var(--scalar-color-accent), var(--scalar-color-1) 20%);
425
+ }
426
+ }
427
+
428
+ :where(.scalar-app) {
418
429
  -webkit-text-size-adjust: 100%;
419
430
  tab-size: 4;
420
- line-height: 1.15;
421
431
  }
422
432
 
423
433
  :where(.scalar-app) *, :where(.scalar-app) :before, :where(.scalar-app) :after {
@@ -508,6 +518,10 @@
508
518
  outline-offset: -1px;
509
519
  }
510
520
 
521
+ :where(.scalar-app) a:focus-visible, :where(.scalar-app) button:focus-visible, :where(.scalar-app) [role="button"]:focus-visible {
522
+ outline-color: var(--scalar-focus-color);
523
+ }
524
+
511
525
  :where(.scalar-app) button, :where(.scalar-app) [role="button"] {
512
526
  cursor: pointer;
513
527
  }
@@ -5371,15 +5385,25 @@
5371
5385
  }
5372
5386
  }
5373
5387
 
5388
+ @media not all and (min-width: 1000px) {
5389
+ .scalar-app .max-lg\:fixed {
5390
+ position: fixed;
5391
+ }
5392
+
5393
+ .scalar-app .max-lg\:top-2 {
5394
+ top: 8px;
5395
+ }
5396
+
5397
+ .scalar-app .max-lg\:left-2 {
5398
+ left: 8px;
5399
+ }
5400
+ }
5401
+
5374
5402
  @media not all and (min-width: 800px) {
5375
5403
  .scalar-app .max-md\:absolute\! {
5376
5404
  position: absolute !important;
5377
5405
  }
5378
5406
 
5379
- .scalar-app .max-md\:top-4 {
5380
- top: 16px;
5381
- }
5382
-
5383
5407
  .scalar-app .max-md\:z-5 {
5384
5408
  z-index: 5;
5385
5409
  }
@@ -6115,21 +6139,21 @@ to {
6115
6139
  );
6116
6140
  }
6117
6141
 
6118
- .fade-request-section-content[data-v-48147b15] {
6142
+ .fade-request-section-content[data-v-50fd0a3c] {
6119
6143
  background: linear-gradient(
6120
6144
  to left,
6121
6145
  var(--scalar-background-1) 64%,
6122
6146
  transparent
6123
6147
  );
6124
6148
  }
6125
- .fade-request-section-content[data-v-48147b15]:dir(rtl) {
6149
+ .fade-request-section-content[data-v-50fd0a3c]:dir(rtl) {
6126
6150
  background: linear-gradient(
6127
6151
  to right,
6128
6152
  var(--scalar-background-1) 64%,
6129
6153
  transparent
6130
6154
  );
6131
6155
  }
6132
- .filter-hover[data-v-48147b15] {
6156
+ .filter-hover[data-v-50fd0a3c] {
6133
6157
  height: 100%;
6134
6158
  padding-inline-end: 39px;
6135
6159
  padding-inline-start: 24px;
@@ -6138,12 +6162,12 @@ to {
6138
6162
  transition: width 0s ease-in-out 0.2s;
6139
6163
  overflow: hidden;
6140
6164
  }
6141
- .filter-hover[data-v-48147b15]:hover,
6142
- .filter-hover[data-v-48147b15]:has(:focus-visible) {
6165
+ .filter-hover[data-v-50fd0a3c]:hover,
6166
+ .filter-hover[data-v-50fd0a3c]:has(:focus-visible) {
6143
6167
  width: 100%;
6144
6168
  z-index: 10;
6145
6169
  }
6146
- .filter-hover[data-v-48147b15]:before {
6170
+ .filter-hover[data-v-50fd0a3c]:before {
6147
6171
  content: '';
6148
6172
  position: absolute;
6149
6173
  top: 0;
@@ -6155,59 +6179,59 @@ to {
6155
6179
  transition: all 0.3s ease-in-out;
6156
6180
  pointer-events: none;
6157
6181
  }
6158
- .filter-hover-item[data-v-48147b15] {
6182
+ .filter-hover-item[data-v-50fd0a3c] {
6159
6183
  opacity: 0;
6160
6184
  }
6161
- .filter-hover-item[data-v-48147b15]:not(:last-of-type) {
6185
+ .filter-hover-item[data-v-50fd0a3c]:not(:last-of-type) {
6162
6186
  transform: translate3d(0, 3px, 0);
6163
6187
  }
6164
- .filter-hover:hover .filter-hover-item[data-v-48147b15] {
6188
+ .filter-hover:hover .filter-hover-item[data-v-50fd0a3c] {
6165
6189
  transition:
6166
6190
  opacity 0.2s ease-in-out,
6167
6191
  transform 0.2s ease-in-out;
6168
6192
  }
6169
- .filter-hover:hover .filter-hover-item[data-v-48147b15]:nth-last-of-type(1) {
6193
+ .filter-hover:hover .filter-hover-item[data-v-50fd0a3c]:nth-last-of-type(1) {
6170
6194
  transition-delay: 0.05s;
6171
6195
  }
6172
- .filter-hover:hover .filter-hover-item[data-v-48147b15]:nth-last-of-type(2) {
6196
+ .filter-hover:hover .filter-hover-item[data-v-50fd0a3c]:nth-last-of-type(2) {
6173
6197
  transition-delay: 0.1s;
6174
6198
  }
6175
- .filter-hover:hover .filter-hover-item[data-v-48147b15]:nth-last-of-type(3) {
6199
+ .filter-hover:hover .filter-hover-item[data-v-50fd0a3c]:nth-last-of-type(3) {
6176
6200
  transition-delay: 0.15s;
6177
6201
  }
6178
- .filter-hover:hover .filter-hover-item[data-v-48147b15]:nth-last-of-type(4) {
6202
+ .filter-hover:hover .filter-hover-item[data-v-50fd0a3c]:nth-last-of-type(4) {
6179
6203
  transition-delay: 0.2s;
6180
6204
  }
6181
- .filter-hover:hover .filter-hover-item[data-v-48147b15]:nth-last-of-type(5) {
6205
+ .filter-hover:hover .filter-hover-item[data-v-50fd0a3c]:nth-last-of-type(5) {
6182
6206
  transition-delay: 0.25s;
6183
6207
  }
6184
- .filter-hover:hover .filter-hover-item[data-v-48147b15]:nth-last-of-type(6) {
6208
+ .filter-hover:hover .filter-hover-item[data-v-50fd0a3c]:nth-last-of-type(6) {
6185
6209
  transition-delay: 0.3s;
6186
6210
  }
6187
- .filter-hover:hover .filter-hover-item[data-v-48147b15]:nth-last-of-type(7) {
6211
+ .filter-hover:hover .filter-hover-item[data-v-50fd0a3c]:nth-last-of-type(7) {
6188
6212
  transition-delay: 0.35s;
6189
6213
  }
6190
- .filter-hover:hover .filter-hover-item[data-v-48147b15],
6191
- .filter-hover:has(:focus-visible) .filter-hover-item[data-v-48147b15] {
6214
+ .filter-hover:hover .filter-hover-item[data-v-50fd0a3c],
6215
+ .filter-hover:has(:focus-visible) .filter-hover-item[data-v-50fd0a3c] {
6192
6216
  opacity: 1;
6193
6217
  transform: translate3d(0, 0, 0);
6194
6218
  }
6195
- .filter-hover[data-v-48147b15]:hover:before,
6196
- .filter-hover[data-v-48147b15]:has(:focus-visible):before {
6219
+ .filter-hover[data-v-50fd0a3c]:hover:before,
6220
+ .filter-hover[data-v-50fd0a3c]:has(:focus-visible):before {
6197
6221
  opacity: 0.9;
6198
6222
  backdrop-filter: blur(10px);
6199
6223
  }
6200
- .filter-button[data-v-48147b15] {
6224
+ .filter-button[data-v-50fd0a3c] {
6201
6225
  top: 50%;
6202
6226
  transform: translateY(-50%);
6203
6227
  }
6204
- .context-bar-group:hover .context-bar-group-hover\:text-c-1[data-v-48147b15],
6205
- .context-bar-group:has(:focus-visible) .context-bar-group-hover\:text-c-1[data-v-48147b15] {
6228
+ .context-bar-group:hover .context-bar-group-hover\:text-c-1[data-v-50fd0a3c],
6229
+ .context-bar-group:has(:focus-visible) .context-bar-group-hover\:text-c-1[data-v-50fd0a3c] {
6206
6230
  --tw-text-opacity: 1;
6207
6231
  color: rgb(var(--scalar-color-1) / var(--tw-text-opacity));
6208
6232
  }
6209
- .context-bar-group:hover .context-bar-group-hover\:hidden[data-v-48147b15],
6210
- .context-bar-group:has(:focus-visible) .context-bar-group-hover\:hidden[data-v-48147b15] {
6233
+ .context-bar-group:hover .context-bar-group-hover\:hidden[data-v-50fd0a3c],
6234
+ .context-bar-group:has(:focus-visible) .context-bar-group-hover\:hidden[data-v-50fd0a3c] {
6211
6235
  display: none;
6212
6236
  }
6213
6237
 
@@ -6383,13 +6407,13 @@ to {
6383
6407
  color: var(--scalar-color-1);
6384
6408
  }
6385
6409
 
6386
- .code-input-lite[data-v-9bca2f92] {
6410
+ .code-input-lite[data-v-360ebc3c] {
6387
6411
  /* Flex so the editor centres vertically in whatever height the cell gives us.
6388
6412
  Font properties inherit so we adopt the surrounding typography. */
6389
6413
  display: flex;
6390
6414
  align-items: center;
6391
6415
  }
6392
- .code-input-lite__editor[data-v-9bca2f92] {
6416
+ .code-input-lite__editor[data-v-360ebc3c] {
6393
6417
  /* Everything font-related inherits from the surrounding context. */
6394
6418
  font: inherit;
6395
6419
  letter-spacing: inherit;
@@ -6411,7 +6435,7 @@ to {
6411
6435
  /* Positioning context for the absolutely positioned placeholder. */
6412
6436
  position: relative;
6413
6437
  }
6414
- .code-input-lite__editor[data-v-9bca2f92]::-webkit-scrollbar {
6438
+ .code-input-lite__editor[data-v-360ebc3c]::-webkit-scrollbar {
6415
6439
  display: none;
6416
6440
  }
6417
6441
 
@@ -6419,7 +6443,7 @@ to {
6419
6443
  contenteditable; otherwise the caret would land after it on focus.
6420
6444
  `pointer-events: none` lets clicks fall through to focus the editor.
6421
6445
  Hidden on focus so it never renders on top of the text caret. */
6422
- .code-input-lite--empty .code-input-lite__editor[data-v-9bca2f92]:not(:focus)::before {
6446
+ .code-input-lite--empty .code-input-lite__editor[data-v-360ebc3c]:not(:focus)::before {
6423
6447
  content: attr(data-placeholder);
6424
6448
  color: var(--scalar-color-3);
6425
6449
  pointer-events: none;
@@ -6430,7 +6454,7 @@ to {
6430
6454
  display: flex;
6431
6455
  align-items: center;
6432
6456
  }
6433
- .code-input-lite--error .code-input-lite__editor[data-v-9bca2f92] {
6457
+ .code-input-lite--error .code-input-lite__editor[data-v-360ebc3c] {
6434
6458
  outline: 1px solid var(--scalar-color-red);
6435
6459
  }
6436
6460
 
@@ -6491,24 +6515,24 @@ to {
6491
6515
  font-size: var(--scalar-small);
6492
6516
  }
6493
6517
 
6494
- [data-v-135d11b9] .code-input-lite__editor {
6518
+ [data-v-8e7de9be] .code-input-lite__editor {
6495
6519
  background-color: transparent;
6496
6520
  font-family: var(--scalar-font);
6497
6521
  font-size: var(--scalar-small);
6498
6522
  padding: 5px 8px;
6499
6523
  }
6500
- [data-v-135d11b9] .scalar-pill:not(:last-of-type) {
6524
+ [data-v-8e7de9be] .scalar-pill:not(:last-of-type) {
6501
6525
  margin-right: 0.15em;
6502
6526
  }
6503
- [data-v-135d11b9] .scalar-pill:not(:first-of-type) {
6527
+ [data-v-8e7de9be] .scalar-pill:not(:first-of-type) {
6504
6528
  margin-left: 0.5px;
6505
6529
  }
6506
6530
  /* Tailwind placeholder is busted */
6507
- input[data-v-135d11b9]::placeholder {
6531
+ input[data-v-8e7de9be]::placeholder {
6508
6532
  color: var(--scalar-color-3);
6509
6533
  }
6510
6534
  /* we want our inputs to look like a password input but not be one */
6511
- .scalar-password-input[data-v-135d11b9] {
6535
+ .scalar-password-input[data-v-8e7de9be] {
6512
6536
  text-security: disc;
6513
6537
  -webkit-text-security: disc;
6514
6538
  -moz-text-security: disc;
@@ -6536,20 +6560,20 @@ input[data-v-135d11b9]::placeholder {
6536
6560
  scrollbar-width: none;
6537
6561
  }
6538
6562
 
6539
- .request-section-content[data-v-1bb88607] {
6563
+ .request-section-content[data-v-5bf07c90] {
6540
6564
  --scalar-border-width: 0.5px;
6541
6565
  }
6542
- .request-section-content-filter[data-v-1bb88607] {
6566
+ .request-section-content-filter[data-v-5bf07c90] {
6543
6567
  box-shadow: 0 -10px 0 10px var(--scalar-background-1);
6544
6568
  }
6545
- .request-item:focus-within .request-meta-buttons[data-v-1bb88607] {
6569
+ .request-item:focus-within .request-meta-buttons[data-v-5bf07c90] {
6546
6570
  opacity: 1;
6547
6571
  }
6548
- .group-hover-input[data-v-1bb88607] {
6572
+ .group-hover-input[data-v-5bf07c90] {
6549
6573
  border-width: var(--scalar-border-width);
6550
6574
  border-color: transparent;
6551
6575
  }
6552
- .group:hover .group-hover-input[data-v-1bb88607] {
6576
+ .group:hover .group-hover-input[data-v-5bf07c90] {
6553
6577
  background: color-mix(
6554
6578
  in srgb,
6555
6579
  var(--scalar-background-1),
@@ -6557,7 +6581,7 @@ input[data-v-135d11b9]::placeholder {
6557
6581
  );
6558
6582
  border-color: var(--scalar-border-color);
6559
6583
  }
6560
- .group-hover-input[data-v-1bb88607]:focus {
6584
+ .group-hover-input[data-v-5bf07c90]:focus {
6561
6585
  background: transparent !important;
6562
6586
  border-color: var(--scalar-border-color) !important;
6563
6587
  }
@@ -6637,11 +6661,11 @@ input[data-v-135d11b9]::placeholder {
6637
6661
  opacity: 0;
6638
6662
  }
6639
6663
 
6640
- .animate-response-heading .response-heading[data-v-2694e1a2] {
6641
- animation: push-response-2694e1a2 0.2s ease-in-out forwards;
6664
+ .animate-response-heading .response-heading[data-v-29000e66] {
6665
+ animation: push-response-29000e66 0.2s ease-in-out forwards;
6642
6666
  opacity: 1;
6643
6667
  }
6644
- @keyframes push-response-2694e1a2 {
6668
+ @keyframes push-response-29000e66 {
6645
6669
  from {
6646
6670
  opacity: 1;
6647
6671
  transform: translateY(0);
@@ -6651,11 +6675,11 @@ to {
6651
6675
  transform: translateY(-4px);
6652
6676
  }
6653
6677
  }
6654
- .animate-response-heading .animate-response-children[data-v-2694e1a2] {
6655
- animation: response-spans-2694e1a2 0.2s ease-in-out forwards 0.05s;
6678
+ .animate-response-heading .animate-response-children[data-v-29000e66] {
6679
+ animation: response-spans-29000e66 0.2s ease-in-out forwards 0.05s;
6656
6680
  opacity: 0;
6657
6681
  }
6658
- @keyframes response-spans-2694e1a2 {
6682
+ @keyframes response-spans-29000e66 {
6659
6683
  from {
6660
6684
  opacity: 0;
6661
6685
  transform: translateY(4px);
@@ -6683,21 +6707,21 @@ to {
6683
6707
  background: var(--scalar-background-2);
6684
6708
  }
6685
6709
 
6686
- [data-v-0e96b5b8] .cm-editor {
6710
+ [data-v-6edfa5a3] .cm-editor {
6687
6711
  height: 100%;
6688
6712
  outline: none;
6689
6713
  width: 100%;
6690
6714
  }
6691
- [data-v-0e96b5b8] .cm-line {
6715
+ [data-v-6edfa5a3] .cm-line {
6692
6716
  padding: 0;
6693
6717
  }
6694
- [data-v-0e96b5b8] .cm-content {
6718
+ [data-v-6edfa5a3] .cm-content {
6695
6719
  padding: 0;
6696
6720
  display: flex;
6697
6721
  align-items: center;
6698
6722
  font-size: var(--scalar-small);
6699
6723
  }
6700
- .scroll-timeline-x[data-v-0e96b5b8] {
6724
+ .scroll-timeline-x[data-v-6edfa5a3] {
6701
6725
  -ms-overflow-style: none;
6702
6726
  /* Fade the URL at the viewport edges. Mask lives on the scrollport (this
6703
6727
  element) rather than on `.cm-scroller`, whose width follows the URL's
@@ -6710,31 +6734,31 @@ to {
6710
6734
  transparent 100%
6711
6735
  );
6712
6736
  }
6713
- .scroll-timeline-x-hidden[data-v-0e96b5b8] {
6737
+ .scroll-timeline-x-hidden[data-v-6edfa5a3] {
6714
6738
  overflow-x: auto;
6715
6739
  }
6716
- .scroll-timeline-x-hidden[data-v-0e96b5b8] .cm-scroller {
6740
+ .scroll-timeline-x-hidden[data-v-6edfa5a3] .cm-scroller {
6717
6741
  scrollbar-width: none;
6718
6742
  -ms-overflow-style: none;
6719
6743
  padding-right: 20px;
6720
6744
  overflow: auto;
6721
6745
  }
6722
- .scroll-timeline-x-hidden[data-v-0e96b5b8]::-webkit-scrollbar {
6746
+ .scroll-timeline-x-hidden[data-v-6edfa5a3]::-webkit-scrollbar {
6723
6747
  width: 0;
6724
6748
  height: 0;
6725
6749
  display: none;
6726
6750
  }
6727
- .scroll-timeline-x-hidden[data-v-0e96b5b8] .cm-scroller::-webkit-scrollbar {
6751
+ .scroll-timeline-x-hidden[data-v-6edfa5a3] .cm-scroller::-webkit-scrollbar {
6728
6752
  width: 0;
6729
6753
  height: 0;
6730
6754
  display: none;
6731
6755
  }
6732
- .scroll-timeline-x-address[data-v-0e96b5b8] {
6756
+ .scroll-timeline-x-address[data-v-6edfa5a3] {
6733
6757
  line-height: 27px;
6734
6758
  scrollbar-width: none; /* Firefox */
6735
6759
  }
6736
6760
  /* make clickable are to left of send button */
6737
- .scroll-timeline-x-address[data-v-0e96b5b8]:after {
6761
+ .scroll-timeline-x-address[data-v-6edfa5a3]:after {
6738
6762
  content: '';
6739
6763
  position: absolute;
6740
6764
  height: 100%;
@@ -6742,7 +6766,7 @@ to {
6742
6766
  right: 0;
6743
6767
  cursor: text;
6744
6768
  }
6745
- .address-bar-bg-states[data-v-0e96b5b8] {
6769
+ .address-bar-bg-states[data-v-6edfa5a3] {
6746
6770
  --scalar-address-bar-bg: color-mix(
6747
6771
  in srgb,
6748
6772
  var(--scalar-background-1),
@@ -6750,22 +6774,22 @@ to {
6750
6774
  );
6751
6775
  background: var(--scalar-address-bar-bg);
6752
6776
  }
6753
- .address-bar-bg-states[data-v-0e96b5b8]:has(.cm-focused) {
6777
+ .address-bar-bg-states[data-v-6edfa5a3]:has(.cm-focused) {
6754
6778
  --scalar-address-bar-bg: var(--scalar-background-1);
6755
6779
  border-color: var(--scalar-border-color);
6756
6780
  outline-width: 1px;
6757
6781
  outline-style: solid;
6758
6782
  }
6759
- .address-bar-bg-states:has(.cm-focused) .fade-left[data-v-0e96b5b8],
6760
- .address-bar-bg-states:has(.cm-focused) .fade-right[data-v-0e96b5b8] {
6783
+ .address-bar-bg-states:has(.cm-focused) .fade-left[data-v-6edfa5a3],
6784
+ .address-bar-bg-states:has(.cm-focused) .fade-right[data-v-6edfa5a3] {
6761
6785
  --scalar-address-bar-bg: var(--scalar-background-1);
6762
6786
  }
6763
6787
 
6764
- .app-exit-button[data-v-cf0538d1] {
6788
+ .app-exit-button[data-v-6e1ebfa0] {
6765
6789
  color: white;
6766
6790
  background: rgba(0, 0, 0, 0.1);
6767
6791
  }
6768
- .app-exit-button[data-v-cf0538d1]:hover {
6792
+ .app-exit-button[data-v-6e1ebfa0]:hover {
6769
6793
  background: rgba(255, 255, 255, 0.1);
6770
6794
  }
6771
6795
  /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@@ -6802,6 +6826,47 @@ to {
6802
6826
  bottom: 0;
6803
6827
  }
6804
6828
 
6829
+ /**
6830
+ * The wide state is the default variant written out in plain CSS. Spelling it
6831
+ * out here rather than reusing the utility classes keeps the narrow state below
6832
+ * from having to outrank a utility of the same specificity.
6833
+ */
6834
+ .scalar-sidebar-toggle--overlay[data-v-4a35414a] {
6835
+ color: var(--scalar-color-3);
6836
+ border-radius: var(--scalar-radius-md);
6837
+ padding: 8px;
6838
+ }
6839
+ .scalar-sidebar-toggle--overlay[data-v-4a35414a]:hover {
6840
+ background: var(--scalar-background-2);
6841
+ }
6842
+ .scalar-sidebar-toggle--overlay[data-v-4a35414a]:active {
6843
+ color: var(--scalar-color-1);
6844
+ }
6845
+
6846
+ /**
6847
+ * Below the `lg` breakpoint (1000px) the toggle moves onto the dimmed backdrop
6848
+ * and matches the close button in the opposite corner: white on a translucent
6849
+ * fill, in a 36px circle. The padding is literal rather than a utility class so
6850
+ * that circle matches that button even when this component is consumed from a
6851
+ * build that generates its own utilities.
6852
+ *
6853
+ * The breakpoint is where the address bar stops being able to centre itself.
6854
+ * The bar caps at 768px, so once the panel is narrower than roughly 870px the
6855
+ * bar's left edge slides under a toggle sitting inside the panel and clips the
6856
+ * method chip. `lg` clears that crossover with room to spare.
6857
+ */
6858
+ @media (width < 1000px) {
6859
+ .scalar-sidebar-toggle--overlay[data-v-4a35414a] {
6860
+ color: white;
6861
+ background: rgba(0, 0, 0, 0.1);
6862
+ border-radius: var(--scalar-radius-full);
6863
+ padding: 10px;
6864
+ }
6865
+ .scalar-sidebar-toggle--overlay[data-v-4a35414a]:hover {
6866
+ background: rgba(255, 255, 255, 0.1);
6867
+ }
6868
+ }
6869
+
6805
6870
  [data-v-4b7f675d] .code-input-lite__editor {
6806
6871
  background-color: transparent;
6807
6872
  font-family: var(--scalar-font);
@@ -6815,7 +6880,7 @@ to {
6815
6880
  margin-left: 0.5px;
6816
6881
  }
6817
6882
  /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
6818
- .scalar .scalar-app-layout[data-v-0eebddf5] {
6883
+ .scalar .scalar-app-layout[data-v-44c68ca5] {
6819
6884
  background: var(--scalar-background-1);
6820
6885
  border: var(--scalar-border-width) solid var(--scalar-border-color);
6821
6886
  border-radius: 8px;
@@ -6827,12 +6892,12 @@ to {
6827
6892
  overflow: hidden;
6828
6893
  }
6829
6894
  @media (max-width: 720px) and (max-height: 480px) {
6830
- .scalar .scalar-app-layout[data-v-0eebddf5] {
6895
+ .scalar .scalar-app-layout[data-v-44c68ca5] {
6831
6896
  height: 100%;
6832
6897
  max-height: 90svh;
6833
6898
  }
6834
6899
  }
6835
- .scalar .scalar-app-exit[data-v-0eebddf5] {
6900
+ .scalar .scalar-app-exit[data-v-44c68ca5] {
6836
6901
  cursor: pointer;
6837
6902
  z-index: -1;
6838
6903
  background: #00000038;
@@ -6842,10 +6907,10 @@ to {
6842
6907
  top: 0;
6843
6908
  left: 0;
6844
6909
  }
6845
- .dark-mode .scalar .scalar-app-exit[data-v-0eebddf5] {
6910
+ .dark-mode .scalar .scalar-app-exit[data-v-44c68ca5] {
6846
6911
  background: #00000073;
6847
6912
  }
6848
- .scalar .scalar-app-exit[data-v-0eebddf5]:before {
6913
+ .scalar .scalar-app-exit[data-v-44c68ca5]:before {
6849
6914
  text-align: center;
6850
6915
  color: #fff;
6851
6916
  opacity: .6;
@@ -6857,10 +6922,10 @@ to {
6857
6922
  top: 0;
6858
6923
  right: 12px;
6859
6924
  }
6860
- .scalar .scalar-app-exit[data-v-0eebddf5]:hover:before {
6925
+ .scalar .scalar-app-exit[data-v-44c68ca5]:hover:before {
6861
6926
  opacity: 1;
6862
6927
  }
6863
- .scalar-container[data-v-0eebddf5] {
6928
+ .scalar-container[data-v-44c68ca5] {
6864
6929
  visibility: hidden;
6865
6930
  opacity: 0;
6866
6931
  pointer-events: none;
@@ -6877,16 +6942,16 @@ to {
6877
6942
  left: 0;
6878
6943
  overflow: hidden;
6879
6944
  }
6880
- .scalar-container.scalar-client--open[data-v-0eebddf5] {
6945
+ .scalar-container.scalar-client--open[data-v-44c68ca5] {
6881
6946
  opacity: 1;
6882
6947
  visibility: visible;
6883
6948
  pointer-events: auto;
6884
6949
  transition: opacity .35s;
6885
6950
  }
6886
- .scalar .url-form-input[data-v-0eebddf5] {
6951
+ .scalar .url-form-input[data-v-44c68ca5] {
6887
6952
  min-height: auto !important;
6888
6953
  }
6889
- .scalar .scalar-container[data-v-0eebddf5] {
6954
+ .scalar .scalar-container[data-v-44c68ca5] {
6890
6955
  line-height: normal;
6891
6956
  }
6892
6957
 
@@ -1 +1 @@
1
- {"version":3,"file":"Header.vue.d.ts","sourceRoot":"","sources":["../../../../../src/v2/blocks/operation-block/components/Header.vue"],"names":[],"mappings":"AA6NA,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EAClB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2EAA2E,CAAA;AACnH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAA;AAEhG,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAG/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,oBAAoB;IACpB,MAAM,EAAE,YAAY,CAAA;IACpB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oBAAoB;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,eAAe,CAAA;IACpC,gCAAgC;IAChC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,mDAAmD;IACnD,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,8BAA8B;IAC9B,OAAO,EAAE,OAAO,EAAE,CAAA;IAClB,gBAAgB;IAChB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,4BAA4B;IAC5B,WAAW,EAAE,kBAAkB,CAAA;IAC/B,sCAAsC;IACtC,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;wBACoB,OAAO,YAAY;AAAxC,wBAAyC;AACzC,QAAA,MAAM,YAAY;;eAc6B,MAAM;;;;;;;;eAAN,MAAM;;;;;;kFAgUjD,CAAC"}
1
+ {"version":3,"file":"Header.vue.d.ts","sourceRoot":"","sources":["../../../../../src/v2/blocks/operation-block/components/Header.vue"],"names":[],"mappings":"AA+NA,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EAClB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2EAA2E,CAAA;AACnH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAA;AAEhG,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAG/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,oBAAoB;IACpB,MAAM,EAAE,YAAY,CAAA;IACpB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oBAAoB;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,eAAe,CAAA;IACpC,gCAAgC;IAChC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,mDAAmD;IACnD,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,8BAA8B;IAC9B,OAAO,EAAE,OAAO,EAAE,CAAA;IAClB,gBAAgB;IAChB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,4BAA4B;IAC5B,WAAW,EAAE,kBAAkB,CAAA;IAC/B,sCAAsC;IACtC,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;wBACoB,OAAO,YAAY;AAAxC,wBAAyC;AACzC,QAAA,MAAM,YAAY;;eAc6B,MAAM;;;;;;;;eAAN,MAAM;;;;;;kFAkUjD,CAAC"}
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../../../_virtual/_plugin-vue_
2
2
  import Header_vue_vue_type_script_setup_true_lang_default from "./Header.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/v2/blocks/operation-block/components/Header.vue
5
- var Header_default = /*#__PURE__*/ _plugin_vue_export_helper_default(Header_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-cf0538d1"]]);
5
+ var Header_default = /*#__PURE__*/ _plugin_vue_export_helper_default(Header_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-6e1ebfa0"]]);
6
6
  //#endregion
7
7
  export { Header_default as default };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"Header.vue.js","names":[],"sources":["../../../../../src/v2/blocks/operation-block/components/Header.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n Operation block header: address bar, environment selector, and modal controls.\n\n Renders the top bar for the API client operation view: URL/method (AddressBar),\n optional environment selector, optional \"Open API Client\" button in modal layout,\n and close button for modal. Layout and visibility depend on `layout` and `source` props.\n */\nexport type HeaderProps = {\n /** An external example must finish loading before sending. */\n executionDisabled?: boolean\n /** Current request path */\n path: string\n /** Current request method */\n method: string\n /** Whether this request comes from an OpenAPI webhook. */\n isWebhook?: boolean\n /** Client layout */\n layout: ClientLayout\n /** Hides the client button on the header */\n hideClientButton?: boolean\n /** Client integration */\n integration?: string | null\n /** Openapi document slug */\n documentSlug: string\n /** Currently selected example key for the current operation */\n exampleKey: string\n /** Openapi document url for `modal` mode to open the client app */\n documentUrl?: string\n /** Client source */\n source?: 'gitbook' | 'api-reference'\n /** Currently selected server */\n server: ServerObject | null\n /** Server list available for operation/document */\n servers: ServerObject[]\n /** List of request history */\n history: History[]\n /** Event bus */\n eventBus: WorkspaceEventBus\n /** Environment list */\n environments?: string[]\n /** Currently selected environment */\n activeEnvironment?: string\n /** Environment variables */\n environment: XScalarEnvironment\n /** Meta information for the server */\n serverMeta: ServerMeta\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarIcon } from '@scalar/components/icon'\nimport { ScalarIconButton } from '@scalar/components/icon-button'\nimport { ScalarIconGearSix } from '@scalar/icons'\nimport type {\n ServerMeta,\n WorkspaceEventBus,\n} from '@scalar/workspace-store/events'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.2/strict/openapi-document'\n\nimport { AddressBar, type History } from '@/v2/blocks/scalar-address-bar-block'\nimport EnvironmentSelector from '@/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue'\nimport { useLocalization } from '@/v2/features/localization'\nimport type { ClientLayout } from '@/v2/types/layout'\n\nimport OpenApiClientButton from './OpenApiClientButton.vue'\n\nconst {\n hideClientButton = false,\n eventBus,\n exampleKey,\n documentSlug,\n} = defineProps<HeaderProps>()\n\nconst emit = defineEmits<{\n /** Execute the current operation example */\n (e: 'execute'): void\n /** Select a request history item by index */\n (e: 'select:history:item', payload: { index: number }): void\n /** Add a new environment */\n (e: 'add:environment'): void\n /** Navigate to the settings page for the current entity */\n (e: 'navigate:settings'): void\n /** Update the full destination URL used to deliver a webhook. */\n (e: 'update:webhook-url', url: string): void\n}>()\n\nconst { translate } = useLocalization()\n\nconst handleSelectEnvironment = (environmentName: string) => {\n eventBus.emit('workspace:update:active-environment', environmentName)\n}\n\nconst handleAddEnvironment = () => {\n eventBus.emit('ui:navigate', { page: 'document', path: 'environment' })\n}\n</script>\n\n<template>\n <!--\n `@container` declares an unnamed container so the AddressBar can\n adapt to the right column's actual width (which shrinks when the\n sidebar opens) instead of the viewport. The query is declared here\n on the parent rather than on the AddressBar itself so the bar's\n `w-full` mobile state cannot feed back into its own breakpoint.\n -->\n <div\n class=\"lg:min-h-header t-app__top-container @container flex w-full flex-wrap items-center justify-center p-2\">\n <!-- Left spacer to center bar -->\n <div class=\"flex flex-1\"></div>\n <AddressBar\n :activeEnvironment\n :documentSlug\n :environment\n :environments\n :eventBus\n :exampleKey\n :executionDisabled\n :history\n :isWebhook\n :layout\n :method\n :path\n :server\n :serverMeta\n :servers\n @add:environment=\"emit('add:environment')\"\n @execute=\"emit('execute')\"\n @select:history:item=\"(payload) => emit('select:history:item', payload)\"\n @update:webhook-url=\"(value) => emit('update:webhook-url', value)\" />\n\n <div class=\"mb-2 flex flex-1 items-center justify-end gap-2 @3xl:mb-0\">\n <!--\n Environment Selector\n Hidden for `modal` layout\n -->\n <EnvironmentSelector\n v-if=\"layout !== 'modal'\"\n :activeEnvironment=\"activeEnvironment\"\n :environments=\"environments\"\n @add:environment=\"handleAddEnvironment\"\n @select:environment=\"handleSelectEnvironment\" />\n <!-- Operation settings -->\n <ScalarIconButton\n v-if=\"layout !== 'modal' && !isWebhook\"\n :icon=\"ScalarIconGearSix\"\n :label=\"translate('apiClient.header.operationSettings')\"\n size=\"sm\"\n weight=\"bold\"\n @click=\"emit('navigate:settings')\" />\n <!--\n Open API Client Button\n\n Only shown in `modal` layout\n -->\n <OpenApiClientButton\n v-if=\"layout === 'modal' && documentUrl && !hideClientButton\"\n buttonSource=\"modal\"\n class=\"!w-fit lg:-mr-1\"\n :integration=\"integration ?? null\"\n :operationMethod=\"method\"\n :operationPath=\"path\"\n :source=\"source ?? 'api-reference'\"\n :url=\"documentUrl\" />\n\n <!--\n Close Button\n\n Only shown in `modal` layout and hidden for GitBook Integration\n -->\n <button\n v-if=\"layout === 'modal' && source !== 'gitbook'\"\n class=\"app-exit-button zoomed:static zoomed:p-1 fixed top-2 right-2 rounded-full p-2\"\n type=\"button\"\n @click=\"eventBus.emit('ui:close:client-modal')\">\n <ScalarIcon\n icon=\"Close\"\n size=\"lg\"\n thickness=\"2\" />\n <span class=\"sr-only\">{{\n translate('apiClient.header.closeClient')\n }}</span>\n </button>\n\n <!--\n Close Button for GitBook Integration\n\n Hidden by default and visible for GitBook Integration in `modal` layout\n -->\n <button\n v-if=\"layout === 'modal' && source === 'gitbook'\"\n class=\"text-c-1 hover:bg-b-2 active:text-c-1 -mr-1.5 rounded p-2\"\n type=\"button\"\n @click=\"eventBus.emit('ui:close:client-modal')\">\n <ScalarIcon\n icon=\"Close\"\n size=\"md\"\n thickness=\"1.75\" />\n <span class=\"sr-only\">{{\n translate('apiClient.header.closeClient')\n }}</span>\n </button>\n </div>\n </div>\n</template>\n<style scoped>\n.app-exit-button {\n color: white;\n background: rgba(0, 0, 0, 0.1);\n}\n.app-exit-button:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"Header.vue.js","names":[],"sources":["../../../../../src/v2/blocks/operation-block/components/Header.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n Operation block header: address bar, environment selector, and modal controls.\n\n Renders the top bar for the API client operation view: URL/method (AddressBar),\n optional environment selector, optional \"Open API Client\" button in modal layout,\n and close button for modal. Layout and visibility depend on `layout` and `source` props.\n */\nexport type HeaderProps = {\n /** An external example must finish loading before sending. */\n executionDisabled?: boolean\n /** Current request path */\n path: string\n /** Current request method */\n method: string\n /** Whether this request comes from an OpenAPI webhook. */\n isWebhook?: boolean\n /** Client layout */\n layout: ClientLayout\n /** Hides the client button on the header */\n hideClientButton?: boolean\n /** Client integration */\n integration?: string | null\n /** Openapi document slug */\n documentSlug: string\n /** Currently selected example key for the current operation */\n exampleKey: string\n /** Openapi document url for `modal` mode to open the client app */\n documentUrl?: string\n /** Client source */\n source?: 'gitbook' | 'api-reference'\n /** Currently selected server */\n server: ServerObject | null\n /** Server list available for operation/document */\n servers: ServerObject[]\n /** List of request history */\n history: History[]\n /** Event bus */\n eventBus: WorkspaceEventBus\n /** Environment list */\n environments?: string[]\n /** Currently selected environment */\n activeEnvironment?: string\n /** Environment variables */\n environment: XScalarEnvironment\n /** Meta information for the server */\n serverMeta: ServerMeta\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarIcon } from '@scalar/components/icon'\nimport { ScalarIconButton } from '@scalar/components/icon-button'\nimport { ScalarIconGearSix } from '@scalar/icons'\nimport type {\n ServerMeta,\n WorkspaceEventBus,\n} from '@scalar/workspace-store/events'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.2/strict/openapi-document'\n\nimport { AddressBar, type History } from '@/v2/blocks/scalar-address-bar-block'\nimport EnvironmentSelector from '@/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue'\nimport { useLocalization } from '@/v2/features/localization'\nimport type { ClientLayout } from '@/v2/types/layout'\n\nimport OpenApiClientButton from './OpenApiClientButton.vue'\n\nconst {\n hideClientButton = false,\n eventBus,\n exampleKey,\n documentSlug,\n} = defineProps<HeaderProps>()\n\nconst emit = defineEmits<{\n /** Execute the current operation example */\n (e: 'execute'): void\n /** Select a request history item by index */\n (e: 'select:history:item', payload: { index: number }): void\n /** Add a new environment */\n (e: 'add:environment'): void\n /** Navigate to the settings page for the current entity */\n (e: 'navigate:settings'): void\n /** Update the full destination URL used to deliver a webhook. */\n (e: 'update:webhook-url', url: string): void\n}>()\n\nconst { translate } = useLocalization()\n\nconst handleSelectEnvironment = (environmentName: string) => {\n eventBus.emit('workspace:update:active-environment', environmentName)\n}\n\nconst handleAddEnvironment = () => {\n eventBus.emit('ui:navigate', { page: 'document', path: 'environment' })\n}\n</script>\n\n<template>\n <!--\n `@container` declares an unnamed container so the AddressBar can\n adapt to the right column's actual width (which shrinks when the\n sidebar opens) instead of the viewport. The query is declared here\n on the parent rather than on the AddressBar itself so the bar's\n `w-full` mobile state cannot feed back into its own breakpoint.\n -->\n <div\n class=\"lg:min-h-header t-app__top-container @container flex w-full flex-wrap items-center justify-center p-2\">\n <!-- Left spacer to center bar -->\n <div class=\"flex flex-1\"></div>\n <AddressBar\n :activeEnvironment\n :documentSlug\n :environment\n :environments\n :eventBus\n :exampleKey\n :executionDisabled\n :history\n :isWebhook\n :layout\n :method\n :path\n :server\n :serverMeta\n :servers\n @add:environment=\"emit('add:environment')\"\n @execute=\"emit('execute')\"\n @select:history:item=\"(payload) => emit('select:history:item', payload)\"\n @update:webhook-url=\"(value) => emit('update:webhook-url', value)\" />\n\n <div class=\"mb-2 flex flex-1 items-center justify-end gap-2 @3xl:mb-0\">\n <!--\n Environment Selector\n Hidden for `modal` layout\n -->\n <EnvironmentSelector\n v-if=\"layout !== 'modal'\"\n :activeEnvironment=\"activeEnvironment\"\n :environments=\"environments\"\n @add:environment=\"handleAddEnvironment\"\n @select:environment=\"handleSelectEnvironment\" />\n <!-- Operation settings -->\n <ScalarIconButton\n v-if=\"layout !== 'modal' && !isWebhook\"\n :icon=\"ScalarIconGearSix\"\n :label=\"translate('apiClient.header.operationSettings')\"\n size=\"sm\"\n weight=\"bold\"\n @click=\"emit('navigate:settings')\" />\n <!--\n Open API Client Button\n\n Only shown in `modal` layout\n -->\n <OpenApiClientButton\n v-if=\"layout === 'modal' && documentUrl && !hideClientButton\"\n buttonSource=\"modal\"\n class=\"!w-fit lg:-mr-1\"\n :integration=\"integration ?? null\"\n :operationMethod=\"method\"\n :operationPath=\"path\"\n :source=\"source ?? 'api-reference'\"\n :url=\"documentUrl\" />\n\n <!--\n Close Button\n\n Only shown in `modal` layout and hidden for GitBook Integration\n -->\n <button\n v-if=\"layout === 'modal' && source !== 'gitbook'\"\n class=\"app-exit-button zoomed:static zoomed:p-1 fixed top-2 right-2 rounded-full p-2\"\n data-modal-initial-focus\n type=\"button\"\n @click=\"eventBus.emit('ui:close:client-modal')\">\n <ScalarIcon\n icon=\"Close\"\n size=\"lg\"\n thickness=\"2\" />\n <span class=\"sr-only\">{{\n translate('apiClient.header.closeClient')\n }}</span>\n </button>\n\n <!--\n Close Button for GitBook Integration\n\n Hidden by default and visible for GitBook Integration in `modal` layout\n -->\n <button\n v-if=\"layout === 'modal' && source === 'gitbook'\"\n class=\"text-c-1 hover:bg-b-2 active:text-c-1 -mr-1.5 rounded p-2\"\n data-modal-initial-focus\n type=\"button\"\n @click=\"eventBus.emit('ui:close:client-modal')\">\n <ScalarIcon\n icon=\"Close\"\n size=\"md\"\n thickness=\"1.75\" />\n <span class=\"sr-only\">{{\n translate('apiClient.header.closeClient')\n }}</span>\n </button>\n </div>\n </div>\n</template>\n<style scoped>\n.app-exit-button {\n color: white;\n background: rgba(0, 0, 0, 0.1);\n}\n.app-exit-button:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n</style>\n"],"mappings":""}
@@ -131,6 +131,7 @@ var Header_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
131
131
  __props.layout === "modal" && __props.source !== "gitbook" ? (openBlock(), createElementBlock("button", {
132
132
  key: 3,
133
133
  class: "app-exit-button zoomed:static zoomed:p-1 fixed top-2 right-2 rounded-full p-2",
134
+ "data-modal-initial-focus": "",
134
135
  type: "button",
135
136
  onClick: _cache[5] || (_cache[5] = ($event) => __props.eventBus.emit("ui:close:client-modal"))
136
137
  }, [createVNode(unref(ScalarIcon), {
@@ -141,6 +142,7 @@ var Header_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
141
142
  __props.layout === "modal" && __props.source === "gitbook" ? (openBlock(), createElementBlock("button", {
142
143
  key: 4,
143
144
  class: "text-c-1 hover:bg-b-2 active:text-c-1 -mr-1.5 rounded p-2",
145
+ "data-modal-initial-focus": "",
144
146
  type: "button",
145
147
  onClick: _cache[6] || (_cache[6] = ($event) => __props.eventBus.emit("ui:close:client-modal"))
146
148
  }, [createVNode(unref(ScalarIcon), {