@mcp-b/react-components 0.21.0 → 0.23.0

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 (168) hide show
  1. package/dist/{AgentChat-Dvkn8lce.d.ts → AgentChat-Bm1qYbOo.d.ts} +2 -2
  2. package/dist/{AgentChatStartScreen-CvXJBr4y.d.ts → AgentChatStartScreen-DDZ25aax.d.ts} +4 -1
  3. package/dist/{Button-yRInko9u.d.ts → Button-SBIz6Lqi.d.ts} +2 -1
  4. package/dist/{CodeBlock-ygtuzqJd.js → CodeBlock-Cp67Njo3.js} +1 -1
  5. package/dist/{CodeBlock-Bbls1CnA.d.ts → CodeBlock-yMpGqScn.d.ts} +1 -1
  6. package/dist/Dialog-BD8NBKaE.d.ts +122 -0
  7. package/dist/{FileTree-CdgfccsM.js → FileTree-DW60q1w7.js} +1 -1
  8. package/dist/IconButton-CFKhu6OR.d.ts +35 -0
  9. package/dist/{Message-DzuteocT.js → Message-_-bEYLAO.js} +9 -16
  10. package/dist/{ModelSelector-CEd8M9eK.js → ModelSelector-Brvj9Cab.js} +1 -1
  11. package/dist/{PromptInput-Cq-8RoXD.d.ts → PromptInput-BjoPWaaG.d.ts} +15 -2
  12. package/dist/{ThinkChatActivity-FY1VWXgh.d.ts → ThinkChatActivity-2BobmuvR.d.ts} +1 -1
  13. package/dist/{Workspace-CWtust-2.d.ts → Workspace-CIycQ4xE.d.ts} +1 -1
  14. package/dist/{WorkspaceExplorer-DGigwsgH.d.ts → WorkspaceExplorer-BCipn7Vd.d.ts} +1 -1
  15. package/dist/{WorkspaceFile-D8Un_xge.d.ts → WorkspaceFile-DMtRMwVv.d.ts} +1 -1
  16. package/dist/{WorkspaceFileView-Bxx4wEzJ.js → WorkspaceFileView-rUEN2iox.js} +4 -4
  17. package/dist/assets/think-browser-host.png +0 -0
  18. package/dist/components/ActionGuide.d.ts +85 -0
  19. package/dist/components/ActionGuide.js +94 -0
  20. package/dist/components/Activity.js +1 -1
  21. package/dist/components/AgentActivity.js +3 -11
  22. package/dist/components/AgentActivityPreview.js +15 -14
  23. package/dist/components/AgentAttention.d.ts +1 -1
  24. package/dist/components/AgentChat.d.ts +1 -1
  25. package/dist/components/AgentChat.js +33 -13
  26. package/dist/components/AgentChatStartScreen.d.ts +1 -1
  27. package/dist/components/AgentChatStartScreen.js +21 -15
  28. package/dist/components/AgentConnection.d.ts +1 -1
  29. package/dist/components/AgentConnection.js +2 -2
  30. package/dist/components/AgentMessageParts.js +1 -1
  31. package/dist/components/AgentToolDetail.js +1 -1
  32. package/dist/components/AlertDialog.d.ts +2 -1
  33. package/dist/components/AlertDialog.js +8 -2
  34. package/dist/components/AppIcon.d.ts +58 -0
  35. package/dist/components/AppIcon.js +51 -0
  36. package/dist/components/AppTopBar.js +9 -10
  37. package/dist/components/Approval.js +1 -1
  38. package/dist/components/Artifact.d.ts +3 -7
  39. package/dist/components/Artifact.js +12 -18
  40. package/dist/components/Avatar.d.ts +7 -2
  41. package/dist/components/Avatar.js +4 -2
  42. package/dist/components/BrowserLiveView.js +1 -1
  43. package/dist/components/BrowserReplay.js +4 -5
  44. package/dist/components/BrowserRunPanel.js +1 -1
  45. package/dist/components/Button.d.ts +1 -1
  46. package/dist/components/ChainOfThought.d.ts +1 -1
  47. package/dist/components/ChainOfThought.js +1 -1
  48. package/dist/components/ChatGptSignInScreen.js +2 -2
  49. package/dist/components/Checkbox.js +1 -1
  50. package/dist/components/Checkpoint.js +1 -1
  51. package/dist/components/CodeBlock.d.ts +1 -1
  52. package/dist/components/CodeBlock.js +1 -1
  53. package/dist/components/CodexModelSelector.js +1 -1
  54. package/dist/components/Commit.d.ts +1 -1
  55. package/dist/components/Commit.js +3 -3
  56. package/dist/components/ContextMenu.js +1 -1
  57. package/dist/components/Conversation.d.ts +2 -2
  58. package/dist/components/Conversation.js +4 -5
  59. package/dist/components/Dialog.d.ts +1 -117
  60. package/dist/components/Dialog.js +9 -1
  61. package/dist/components/EnvironmentVariables.d.ts +1 -1
  62. package/dist/components/EnvironmentVariables.js +2 -2
  63. package/dist/components/FileTree.js +1 -1
  64. package/dist/components/IconButton.d.ts +1 -31
  65. package/dist/components/IconButton.js +2 -1
  66. package/dist/components/McpConnectionRequest.d.ts +1 -1
  67. package/dist/components/McpConnectionRequest.js +1 -1
  68. package/dist/components/McpPluginCatalog.d.ts +86 -0
  69. package/dist/components/McpPluginCatalog.js +364 -0
  70. package/dist/components/McpServerPicker.d.ts +2 -2
  71. package/dist/components/McpServerPicker.js +7 -13
  72. package/dist/components/MediaPreviewCard.js +1 -1
  73. package/dist/components/Menubar.js +1 -1
  74. package/dist/components/Message.d.ts +4 -8
  75. package/dist/components/Message.js +1 -1
  76. package/dist/components/MessageScroller.d.ts +1 -1
  77. package/dist/components/MessageScroller.js +1 -1
  78. package/dist/components/ModelSelector.d.ts +2 -2
  79. package/dist/components/ModelSelector.js +1 -1
  80. package/dist/components/Plan.js +1 -1
  81. package/dist/components/PricingPlanCard.d.ts +1 -1
  82. package/dist/components/PricingPlanCard.js +10 -12
  83. package/dist/components/PromptInput.d.ts +2 -2
  84. package/dist/components/PromptInput.js +27 -10
  85. package/dist/components/Queue.d.ts +1 -1
  86. package/dist/components/Queue.js +2 -2
  87. package/dist/components/Reasoning.js +4 -9
  88. package/dist/components/ResponsiveSidebarShell.js +2 -1
  89. package/dist/components/ScrollArea.js +1 -0
  90. package/dist/components/SearchField.js +1 -1
  91. package/dist/components/Select.js +1 -1
  92. package/dist/components/Sources.js +1 -1
  93. package/dist/components/Stepper.js +1 -1
  94. package/dist/components/SubagentRunIndicator.js +1 -1
  95. package/dist/components/SubagentRunSelector.js +1 -1
  96. package/dist/components/Task.js +1 -1
  97. package/dist/components/Terminal.d.ts +3 -3
  98. package/dist/components/Terminal.js +7 -8
  99. package/dist/components/TestResults.js +1 -1
  100. package/dist/components/ThemeModeControl.js +1 -1
  101. package/dist/components/ThinkChat.d.ts +5 -5
  102. package/dist/components/ThinkChatActivity.d.ts +1 -1
  103. package/dist/components/ThinkChatActivity.js +1 -1
  104. package/dist/components/ThinkChatToolPanels.js +1 -1
  105. package/dist/components/ThinkExecutionDetail.js +1 -1
  106. package/dist/components/ThinkExecutionStatus.js +1 -1
  107. package/dist/components/ThinkExecutionWorkbench.js +14 -21
  108. package/dist/components/ThinkFullApp.d.ts +8 -4
  109. package/dist/components/ThinkFullApp.js +17 -2
  110. package/dist/components/ThinkRoutineBrowser.js +2 -2
  111. package/dist/components/ThinkRoutineForm.js +3 -3
  112. package/dist/components/ThinkRoutineLibrary.js +2 -2
  113. package/dist/components/ThinkRoutineRuns.js +1 -1
  114. package/dist/components/ThinkThreadPicker.js +2 -3
  115. package/dist/components/Toast.d.ts +12 -2
  116. package/dist/components/Toast.js +14 -4
  117. package/dist/components/Tooltip.d.ts +6 -4
  118. package/dist/components/Tooltip.js +11 -4
  119. package/dist/components/WebPreview.d.ts +13 -6
  120. package/dist/components/WebPreview.js +55 -50
  121. package/dist/components/Workspace.d.ts +1 -1
  122. package/dist/components/WorkspaceBrowser.d.ts +1 -1
  123. package/dist/components/WorkspaceBrowser.js +1 -1
  124. package/dist/components/WorkspaceExplorer.d.ts +3 -3
  125. package/dist/components/WorkspaceExplorer.js +1 -1
  126. package/dist/components/WorkspaceFile.d.ts +1 -1
  127. package/dist/components/WorkspaceFileView.d.ts +1 -1
  128. package/dist/components/WorkspaceFileView.js +1 -1
  129. package/dist/components/WorkspaceHeader.js +1 -1
  130. package/dist/components/icons.d.ts +2 -2
  131. package/dist/components/icons.js +2 -2
  132. package/dist/{copy-button-BrvQ7z4W.d.ts → copy-button-EBv_B9F6.d.ts} +2 -2
  133. package/dist/{copy-button-vo1paUSi.js → copy-button-TWq8nZhc.js} +8 -8
  134. package/dist/{icons-DyOM0EJs.js → icons-ua6f_GH3.js} +3 -2
  135. package/dist/{icons-DkRtZmvT.d.ts → icons-wP1yFUXF.d.ts} +6 -1
  136. package/dist/mcp-server-catalog-DycejaJ5.d.ts +1077 -0
  137. package/dist/styles/action-guide.css +128 -0
  138. package/dist/styles/agent-activity-preview-overlay.css +13 -1
  139. package/dist/styles/agent-activity-preview.css +3 -34
  140. package/dist/styles/agent-chat.css +110 -75
  141. package/dist/styles/alert-dialog.css +0 -18
  142. package/dist/styles/app-icon.css +122 -0
  143. package/dist/styles/app-top-bar.css +0 -1
  144. package/dist/styles/avatar.css +13 -0
  145. package/dist/styles/base.css +0 -1
  146. package/dist/styles/button.css +14 -0
  147. package/dist/styles/description-list.css +2 -2
  148. package/dist/styles/dialog.css +6 -6
  149. package/dist/styles/index.css +3 -0
  150. package/dist/styles/mcp-plugin-catalog.css +296 -0
  151. package/dist/styles/mcp-server-picker.css +0 -26
  152. package/dist/styles/message-scroller.css +5 -1
  153. package/dist/styles/message.css +7 -0
  154. package/dist/styles/prompt-input.css +26 -14
  155. package/dist/styles/recipes.css +27 -5
  156. package/dist/styles/responsive-sidebar-shell.css +14 -8
  157. package/dist/styles/search-field.css +9 -0
  158. package/dist/styles/think-full-app.css +22 -2
  159. package/dist/styles/think-thread-picker.css +1 -11
  160. package/dist/styles/toast.css +0 -21
  161. package/dist/styles/tokens.css +6 -0
  162. package/dist/styles/web-preview.css +5 -0
  163. package/dist/utils/favicon.d.ts +10 -0
  164. package/dist/utils/favicon.js +18 -0
  165. package/dist/utils/mcp-server-catalog.d.ts +2 -1078
  166. package/dist/utils/mcp-server-catalog.js +3 -11
  167. package/dist/utils/structured-code.d.ts +1 -1
  168. package/package.json +2 -2
@@ -150,6 +150,14 @@
150
150
  border-radius: var(--sigvelo-radius-md);
151
151
  }
152
152
 
153
+ :where([data-recipe~="application-plane"]) {
154
+ margin-inline: var(--sigvelo-spacing-2);
155
+ margin-block-end: var(--sigvelo-spacing-2);
156
+ border-radius: var(--sigvelo-radius-lg);
157
+ background: var(--sigvelo-color-surface);
158
+ box-shadow: var(--sigvelo-elevation-floating);
159
+ }
160
+
153
161
  :where([data-recipe~="disclosure-stack"]) {
154
162
  display: flex;
155
163
  flex-direction: column;
@@ -158,12 +166,19 @@
158
166
  color: var(--sigvelo-color-text);
159
167
  }
160
168
 
161
- /* Reveal scrollability by fading the top/bottom edges. Owns only the mask
162
- structure; each scroller drives --sigvelo-scroll-fade-start/end (default 0px)
163
- from its own overflow signal. */
169
+ /* Reveal vertical scrollability by fading the top/bottom edges. Base UI
170
+ ScrollArea supplies live overflow distances; other scrollers can override
171
+ --sigvelo-scroll-fade-start/end from their own state. */
164
172
  :where([data-recipe~="scroll-fade-y"]) {
165
- --sigvelo-scroll-fade-start: 0px;
166
- --sigvelo-scroll-fade-end: 0px;
173
+ --sigvelo-scroll-fade-size: min(12%, 2.5rem);
174
+ --sigvelo-scroll-fade-start: min(
175
+ var(--sigvelo-scroll-fade-size),
176
+ var(--scroll-area-overflow-y-start, 0px)
177
+ );
178
+ --sigvelo-scroll-fade-end: min(
179
+ var(--sigvelo-scroll-fade-size),
180
+ var(--scroll-area-overflow-y-end, 0px)
181
+ );
167
182
  -webkit-mask-image: linear-gradient(
168
183
  to bottom,
169
184
  transparent 0,
@@ -814,6 +829,13 @@
814
829
  --sigvelo-recipe-surface-border: CanvasText;
815
830
  }
816
831
 
832
+ :where([data-recipe~="application-plane"]) {
833
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
834
+ background: Canvas;
835
+ color: CanvasText;
836
+ box-shadow: none;
837
+ }
838
+
817
839
  :where(
818
840
  [data-slot="input"],
819
841
  [data-slot="select-trigger"],
@@ -5,12 +5,15 @@
5
5
  min-block-size: 0;
6
6
  display: grid;
7
7
  grid-template-rows: auto minmax(0, 1fr);
8
+ background: var(--sigvelo-color-surface-under);
9
+ }
10
+
11
+ .responsive-sidebar-shell > .app-top-bar {
12
+ background: var(--sigvelo-color-surface-under);
8
13
  }
9
14
 
10
15
  .responsive-sidebar-shell__frame {
11
- --responsive-sidebar-mobile-w: min(80cqi, 22rem);
12
16
  --responsive-sidebar-closed-translate: -100%;
13
- --responsive-sidebar-main-translate: var(--responsive-sidebar-mobile-w);
14
17
 
15
18
  position: relative;
16
19
  isolation: isolate;
@@ -21,7 +24,7 @@
21
24
  grid-template-columns: var(--resizable-side-panel-size, 16rem) minmax(0, 1fr);
22
25
  grid-template-rows: minmax(0, 1fr);
23
26
  overflow: hidden;
24
- background: var(--sigvelo-color-canvas);
27
+ background: var(--sigvelo-color-surface-under);
25
28
  color: var(--sigvelo-color-text);
26
29
  font-family: inherit;
27
30
  transition: grid-template-columns var(--sigvelo-motion-duration-layout)
@@ -30,7 +33,6 @@
30
33
 
31
34
  .responsive-sidebar-shell__frame:dir(rtl) {
32
35
  --responsive-sidebar-closed-translate: 100%;
33
- --responsive-sidebar-main-translate: calc(var(--responsive-sidebar-mobile-w) * -1);
34
36
  }
35
37
 
36
38
  .responsive-sidebar-shell__sidebar,
@@ -56,6 +58,14 @@
56
58
  display: none;
57
59
  }
58
60
 
61
+ @media (forced-colors: active) {
62
+ .responsive-sidebar-shell,
63
+ .responsive-sidebar-shell__frame {
64
+ background: canvas;
65
+ color: canvastext;
66
+ }
67
+ }
68
+
59
69
  .responsive-sidebar-shell__resizer {
60
70
  z-index: var(--sigvelo-z-panel);
61
71
  }
@@ -132,10 +142,6 @@
132
142
  transition-timing-function: var(--sigvelo-motion-ease-exit);
133
143
  }
134
144
 
135
- .responsive-sidebar-shell__main {
136
- transition: none;
137
- }
138
-
139
145
  .responsive-sidebar-shell[data-sidebar-open="true"]
140
146
  > .responsive-sidebar-shell__frame
141
147
  > .responsive-sidebar-shell__main {
@@ -1,3 +1,12 @@
1
+ .search-field {
2
+ --sigvelo-recipe-control-height: var(--sigvelo-control-height-md);
3
+ --sigvelo-recipe-control-padding-inline: var(--sigvelo-control-padding-inline-md);
4
+ --sigvelo-recipe-control-font-size: var(--sigvelo-control-text-md);
5
+ --sigvelo-recipe-control-line-height: var(--sigvelo-control-line-height-md);
6
+ --sigvelo-recipe-control-icon-size: var(--sigvelo-control-icon-size-md);
7
+ --sigvelo-recipe-control-radius: var(--sigvelo-radius-full);
8
+ }
9
+
1
10
  .search-field__control {
2
11
  position: relative;
3
12
  }
@@ -15,7 +15,7 @@
15
15
  min-inline-size: 0;
16
16
  display: grid;
17
17
  grid-template-rows: minmax(0, 1fr);
18
- background: var(--sigvelo-color-canvas);
18
+ background: var(--sigvelo-color-surface-under);
19
19
  color: var(--sigvelo-color-text);
20
20
  font-family: inherit;
21
21
  }
@@ -32,10 +32,28 @@
32
32
  display: grid;
33
33
  grid-template-columns: minmax(0, 1fr) var(--resizable-side-panel-size, 21.25rem);
34
34
  grid-template-rows: minmax(0, 1fr);
35
+ overflow: hidden;
35
36
  transition: grid-template-columns var(--sigvelo-motion-duration-layout)
36
37
  var(--sigvelo-motion-ease-change);
37
38
  }
38
39
 
40
+ .think-full-app[data-has-workbench-topbar="false"] > .think-full-app__view-scope {
41
+ margin-block-start: var(--sigvelo-spacing-2);
42
+ }
43
+
44
+ /* ResponsiveSidebarShell owns the outer material when a thread sidebar is
45
+ present. Flatten the nested app so the hierarchy still has exactly one
46
+ raised primary plane. */
47
+ .think-full-app[data-has-thread-sidebar="true"] {
48
+ background: var(--sigvelo-color-surface);
49
+ }
50
+
51
+ .think-full-app[data-has-thread-sidebar="true"] > .think-full-app__view-scope {
52
+ margin: 0;
53
+ border-radius: 0;
54
+ box-shadow: none;
55
+ }
56
+
39
57
  .think-full-app[data-has-workbench-topbar="true"] > .think-full-app__view-scope {
40
58
  grid-row: 2;
41
59
  }
@@ -62,6 +80,7 @@
62
80
  grid-column: 1 / -1;
63
81
  grid-row: 1;
64
82
  z-index: var(--sigvelo-z-chrome);
83
+ background: var(--sigvelo-color-surface-under);
65
84
  }
66
85
 
67
86
  .think-full-app__chat-surface {
@@ -245,7 +264,7 @@ body.is-resizing-side-panel .think-full-app__view-scope {
245
264
 
246
265
  .think-full-app .think-full-app__chat .agent-chat__transcript-content {
247
266
  gap: var(--sigvelo-spacing-2-5);
248
- padding-block-start: calc(var(--sigvelo-spacing-3) + env(safe-area-inset-top, 0px));
267
+ padding-block-start: calc(var(--sigvelo-spacing-5) + env(safe-area-inset-top, 0px));
249
268
  padding-inline: var(--sigvelo-spacing-3);
250
269
  }
251
270
 
@@ -300,6 +319,7 @@ body.is-resizing-side-panel .think-full-app__view-scope {
300
319
  }
301
320
 
302
321
  @media (forced-colors: active) {
322
+ .think-full-app,
303
323
  .think-full-app__chat-surface,
304
324
  .think-full-app__aside,
305
325
  .think-full-app__workbench,
@@ -6,7 +6,7 @@
6
6
  grid-template-rows: auto auto minmax(0, 1fr) auto;
7
7
  overflow: hidden;
8
8
  border-inline-end: 0;
9
- background: var(--sigvelo-color-surface);
9
+ background: var(--sigvelo-color-surface-under);
10
10
  color: var(--sigvelo-color-text);
11
11
  }
12
12
 
@@ -91,16 +91,6 @@
91
91
  }
92
92
 
93
93
  .think-thread-picker__viewport {
94
- --think-thread-picker-fade-size: min(12%, 2.5rem);
95
- --sigvelo-scroll-fade-start: min(
96
- var(--think-thread-picker-fade-size),
97
- var(--scroll-area-overflow-y-start, 0px)
98
- );
99
- --sigvelo-scroll-fade-end: min(
100
- var(--think-thread-picker-fade-size),
101
- var(--scroll-area-overflow-y-end, 0px)
102
- );
103
-
104
94
  padding: var(--sigvelo-spacing-1-5) var(--sigvelo-spacing-2) var(--sigvelo-spacing-3);
105
95
  overscroll-behavior: contain;
106
96
  scrollbar-gutter: stable;
@@ -77,37 +77,16 @@
77
77
  position: absolute;
78
78
  inset-block-start: var(--sigvelo-spacing-2);
79
79
  inset-inline-end: var(--sigvelo-spacing-2);
80
- display: flex;
81
- align-items: center;
82
- justify-content: center;
83
- inline-size: var(--sigvelo-control-height-xs);
84
- block-size: var(--sigvelo-control-height-xs);
85
- padding: 0;
86
- font-size: var(--sigvelo-text-base);
87
80
  color: var(--sigvelo-color-text-muted);
88
- background-color: transparent;
89
- border: none;
90
- border-radius: var(--sigvelo-radius-sm);
91
- cursor: pointer;
92
81
  opacity: 0;
93
- transition:
94
- opacity var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
95
- background-color var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
96
82
  }
97
83
 
98
84
  .toast:is(:hover, :focus-within) .toast__close {
99
85
  opacity: 1;
100
86
  }
101
87
 
102
- .toast__close:hover {
103
- background-color: var(--sigvelo-color-neutral-bg-subtle);
104
- color: var(--sigvelo-color-neutral-text-on-subtle);
105
- }
106
-
107
88
  .toast__close:focus-visible {
108
89
  opacity: 1;
109
- outline: none;
110
- box-shadow: var(--sigvelo-recipe-focus-shadow);
111
90
  }
112
91
 
113
92
  @media (hover: none) {
@@ -1 +1,7 @@
1
1
  @import "@mcp-b/design-tokens";
2
+
3
+ /* Opt-in accent and design-language presets, inert until data-preset or
4
+ data-style is set on the root. Imported after the main tokens so their
5
+ equal-specificity overrides win by order. */
6
+ @import "@mcp-b/design-tokens/color-presets";
7
+ @import "@mcp-b/design-tokens/style-presets";
@@ -83,6 +83,11 @@
83
83
  transform: rotate(180deg);
84
84
  }
85
85
 
86
+ .web-preview__console-panel {
87
+ min-block-size: 0;
88
+ overflow: hidden;
89
+ }
90
+
86
91
  .web-preview__console-scroll {
87
92
  flex: 1;
88
93
  min-height: 0;
@@ -0,0 +1,10 @@
1
+ //#region src/utils/favicon.d.ts
2
+ /**
3
+ * Infer an origin's conventional `/favicon.ico` URL from an HTTP(S) page or endpoint URL.
4
+ *
5
+ * This does not fetch or inspect the page. Browser hosts that can read a document's
6
+ * `<link rel="icon">` should prefer that resolved URL because it may point elsewhere.
7
+ */
8
+ declare function inferFaviconUrl(url: string): string | undefined;
9
+ //#endregion
10
+ export { inferFaviconUrl };
@@ -0,0 +1,18 @@
1
+ //#region src/utils/favicon.ts
2
+ /**
3
+ * Infer an origin's conventional `/favicon.ico` URL from an HTTP(S) page or endpoint URL.
4
+ *
5
+ * This does not fetch or inspect the page. Browser hosts that can read a document's
6
+ * `<link rel="icon">` should prefer that resolved URL because it may point elsewhere.
7
+ */
8
+ function inferFaviconUrl(url) {
9
+ try {
10
+ const parsed = new URL(url);
11
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") return void 0;
12
+ return new URL("/favicon.ico", parsed.origin).href;
13
+ } catch {
14
+ return;
15
+ }
16
+ }
17
+ //#endregion
18
+ export { inferFaviconUrl };