@stigmer/react 3.6.0 → 3.8.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.
- package/billing/CreditLedgerTable.d.ts.map +1 -1
- package/billing/CreditLedgerTable.js +2 -7
- package/billing/CreditLedgerTable.js.map +1 -1
- package/channel/AgentChannelsPanel.d.ts.map +1 -1
- package/channel/AgentChannelsPanel.js +21 -2
- package/channel/AgentChannelsPanel.js.map +1 -1
- package/channel/ChannelConversationsDialog.d.ts +12 -4
- package/channel/ChannelConversationsDialog.d.ts.map +1 -1
- package/channel/ChannelConversationsDialog.js +18 -24
- package/channel/ChannelConversationsDialog.js.map +1 -1
- package/channel/providers.d.ts +23 -0
- package/channel/providers.d.ts.map +1 -1
- package/channel/providers.js +4 -0
- package/channel/providers.js.map +1 -1
- package/channel/useSaveAgentChannel.d.ts +5 -4
- package/channel/useSaveAgentChannel.d.ts.map +1 -1
- package/channel/useSaveAgentChannel.js +18 -4
- package/channel/useSaveAgentChannel.js.map +1 -1
- package/composer/ComposerToolbar.d.ts +6 -1
- package/composer/ComposerToolbar.d.ts.map +1 -1
- package/composer/ComposerToolbar.js +2 -2
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/SessionComposer.d.ts +9 -0
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +13 -2
- package/composer/SessionComposer.js.map +1 -1
- package/conversation/ConversationAttentionBanner.d.ts +22 -0
- package/conversation/ConversationAttentionBanner.d.ts.map +1 -0
- package/conversation/ConversationAttentionBanner.js +25 -0
- package/conversation/ConversationAttentionBanner.js.map +1 -0
- package/conversation/ConversationComposer.d.ts +41 -0
- package/conversation/ConversationComposer.d.ts.map +1 -0
- package/conversation/ConversationComposer.js +57 -0
- package/conversation/ConversationComposer.js.map +1 -0
- package/conversation/ConversationControlBanner.d.ts +52 -0
- package/conversation/ConversationControlBanner.d.ts.map +1 -0
- package/conversation/ConversationControlBanner.js +59 -0
- package/conversation/ConversationControlBanner.js.map +1 -0
- package/conversation/ConversationListPane.d.ts +68 -0
- package/conversation/ConversationListPane.d.ts.map +1 -0
- package/conversation/ConversationListPane.js +120 -0
- package/conversation/ConversationListPane.js.map +1 -0
- package/conversation/ConversationTimelineView.d.ts +46 -0
- package/conversation/ConversationTimelineView.d.ts.map +1 -0
- package/conversation/ConversationTimelineView.js +166 -0
- package/conversation/ConversationTimelineView.js.map +1 -0
- package/conversation/ConversationsWorkbench.d.ts +63 -0
- package/conversation/ConversationsWorkbench.d.ts.map +1 -0
- package/conversation/ConversationsWorkbench.js +165 -0
- package/conversation/ConversationsWorkbench.js.map +1 -0
- package/conversation/conversationPresentation.d.ts +137 -0
- package/conversation/conversationPresentation.d.ts.map +1 -0
- package/conversation/conversationPresentation.js +230 -0
- package/conversation/conversationPresentation.js.map +1 -0
- package/conversation/index.d.ts +26 -0
- package/conversation/index.d.ts.map +1 -0
- package/conversation/index.js +14 -0
- package/conversation/index.js.map +1 -0
- package/conversation/polling.d.ts +39 -0
- package/conversation/polling.d.ts.map +1 -0
- package/conversation/polling.js +39 -0
- package/conversation/polling.js.map +1 -0
- package/conversation/useConversation.d.ts +61 -0
- package/conversation/useConversation.d.ts.map +1 -0
- package/conversation/useConversation.js +153 -0
- package/conversation/useConversation.js.map +1 -0
- package/conversation/useConversationList.d.ts +98 -0
- package/conversation/useConversationList.d.ts.map +1 -0
- package/conversation/useConversationList.js +200 -0
- package/conversation/useConversationList.js.map +1 -0
- package/conversation/useConversationParticipation.d.ts +63 -0
- package/conversation/useConversationParticipation.d.ts.map +1 -0
- package/conversation/useConversationParticipation.js +84 -0
- package/conversation/useConversationParticipation.js.map +1 -0
- package/conversation/useConversationTimeline.d.ts +71 -0
- package/conversation/useConversationTimeline.d.ts.map +1 -0
- package/conversation/useConversationTimeline.js +152 -0
- package/conversation/useConversationTimeline.js.map +1 -0
- package/conversation/useConversationsWantsHumanCount.d.ts +42 -0
- package/conversation/useConversationsWantsHumanCount.d.ts.map +1 -0
- package/conversation/useConversationsWantsHumanCount.js +40 -0
- package/conversation/useConversationsWantsHumanCount.js.map +1 -0
- package/execution/useCreateAgentExecution.d.ts +14 -0
- package/execution/useCreateAgentExecution.d.ts.map +1 -1
- package/execution/useCreateAgentExecution.js +5 -0
- package/execution/useCreateAgentExecution.js.map +1 -1
- package/index.d.ts +6 -2
- package/index.d.ts.map +1 -1
- package/index.js +14 -5
- package/index.js.map +1 -1
- package/internal/Pagination.d.ts +15 -0
- package/internal/Pagination.d.ts.map +1 -0
- package/internal/Pagination.js +20 -0
- package/internal/Pagination.js.map +1 -0
- package/internal/tooltip.d.ts.map +1 -1
- package/internal/tooltip.js +7 -1
- package/internal/tooltip.js.map +1 -1
- package/internal/useAutoScroll.d.ts +25 -4
- package/internal/useAutoScroll.d.ts.map +1 -1
- package/internal/useAutoScroll.js +55 -15
- package/internal/useAutoScroll.js.map +1 -1
- package/internal/useFetch.d.ts.map +1 -1
- package/internal/useFetch.js +14 -4
- package/internal/useFetch.js.map +1 -1
- package/models/ModelSelector.d.ts +45 -1
- package/models/ModelSelector.d.ts.map +1 -1
- package/models/ModelSelector.js +49 -6
- package/models/ModelSelector.js.map +1 -1
- package/models/index.d.ts +2 -0
- package/models/index.d.ts.map +1 -1
- package/models/index.js +1 -0
- package/models/index.js.map +1 -1
- package/models/registry.d.ts +11 -0
- package/models/registry.d.ts.map +1 -1
- package/models/registry.js +3 -0
- package/models/registry.js.map +1 -1
- package/models/service-tier.d.ts +27 -0
- package/models/service-tier.d.ts.map +1 -0
- package/models/service-tier.js +34 -0
- package/models/service-tier.js.map +1 -0
- package/package.json +4 -4
- package/schedule/ScheduleDetailView.d.ts +31 -8
- package/schedule/ScheduleDetailView.d.ts.map +1 -1
- package/schedule/ScheduleDetailView.js +441 -29
- package/schedule/ScheduleDetailView.js.map +1 -1
- package/schedule/ScheduleForm.d.ts +7 -4
- package/schedule/ScheduleForm.d.ts.map +1 -1
- package/schedule/ScheduleForm.js +94 -8
- package/schedule/ScheduleForm.js.map +1 -1
- package/schedule/ScheduleRunsTable.d.ts +72 -0
- package/schedule/ScheduleRunsTable.d.ts.map +1 -0
- package/schedule/ScheduleRunsTable.js +161 -0
- package/schedule/ScheduleRunsTable.js.map +1 -0
- package/schedule/index.d.ts +6 -0
- package/schedule/index.d.ts.map +1 -1
- package/schedule/index.js +3 -0
- package/schedule/index.js.map +1 -1
- package/schedule/useScheduleRuns.d.ts +44 -0
- package/schedule/useScheduleRuns.d.ts.map +1 -0
- package/schedule/useScheduleRuns.js +48 -0
- package/schedule/useScheduleRuns.js.map +1 -0
- package/schedule/useTriggerSchedule.d.ts +23 -10
- package/schedule/useTriggerSchedule.d.ts.map +1 -1
- package/schedule/useTriggerSchedule.js +28 -9
- package/schedule/useTriggerSchedule.js.map +1 -1
- package/schedule/useUpdateScheduleSpec.d.ts +49 -0
- package/schedule/useUpdateScheduleSpec.d.ts.map +1 -0
- package/schedule/useUpdateScheduleSpec.js +70 -0
- package/schedule/useUpdateScheduleSpec.js.map +1 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +1 -0
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionConversation.d.ts +11 -0
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +1 -0
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +1 -0
- package/session/useSessionPageFlow.js.map +1 -1
- package/sharing/useSaveAgentShare.d.ts +10 -1
- package/sharing/useSaveAgentShare.d.ts.map +1 -1
- package/sharing/useSaveAgentShare.js +9 -0
- package/sharing/useSaveAgentShare.js.map +1 -1
- package/sidebar/WorkspaceSidebar.d.ts +12 -4
- package/sidebar/WorkspaceSidebar.d.ts.map +1 -1
- package/sidebar/WorkspaceSidebar.js +19 -7
- package/sidebar/WorkspaceSidebar.js.map +1 -1
- package/src/billing/CreditLedgerTable.tsx +3 -42
- package/src/channel/AgentChannelsPanel.tsx +33 -2
- package/src/channel/ChannelConversationsDialog.tsx +22 -25
- package/src/channel/__tests__/AgentChannelsPanel.test.tsx +36 -5
- package/src/channel/__tests__/ChannelConversationsDialog.test.tsx +38 -1
- package/src/channel/__tests__/useSaveAgentChannel.test.tsx +26 -0
- package/src/channel/providers.ts +27 -0
- package/src/channel/useSaveAgentChannel.ts +18 -4
- package/src/composer/ComposerToolbar.tsx +9 -0
- package/src/composer/SessionComposer.tsx +24 -1
- package/src/composer/__tests__/SessionComposer-serviceTier.test.tsx +157 -0
- package/src/conversation/ConversationAttentionBanner.tsx +77 -0
- package/src/conversation/ConversationComposer.tsx +156 -0
- package/src/conversation/ConversationControlBanner.tsx +193 -0
- package/src/conversation/ConversationListPane.tsx +459 -0
- package/src/conversation/ConversationTimelineView.tsx +435 -0
- package/src/conversation/ConversationsWorkbench.tsx +378 -0
- package/src/conversation/__tests__/ConversationAttentionBanner.test.tsx +82 -0
- package/src/conversation/__tests__/ConversationComposer.test.tsx +160 -0
- package/src/conversation/__tests__/ConversationControlBanner.test.tsx +190 -0
- package/src/conversation/__tests__/ConversationListPane.test.tsx +372 -0
- package/src/conversation/__tests__/ConversationTimelineView.layout.test.tsx +160 -0
- package/src/conversation/__tests__/ConversationTimelineView.test.tsx +405 -0
- package/src/conversation/__tests__/ConversationsWorkbench.test.tsx +860 -0
- package/src/conversation/__tests__/a11y/conversation-surfaces.a11y.test.tsx +235 -0
- package/src/conversation/__tests__/a11y/harness.tsx +100 -0
- package/src/conversation/__tests__/conversation-tooltips.layout.test.tsx +167 -0
- package/src/conversation/__tests__/conversationPollingComposition.test.tsx +138 -0
- package/src/conversation/__tests__/conversationPresentation.test.ts +289 -0
- package/src/conversation/__tests__/useConversation.test.tsx +243 -0
- package/src/conversation/__tests__/useConversationList.test.tsx +492 -0
- package/src/conversation/__tests__/useConversationParticipation.test.tsx +190 -0
- package/src/conversation/__tests__/useConversationTimeline.test.tsx +258 -0
- package/src/conversation/__tests__/useConversationsWantsHumanCount.test.tsx +102 -0
- package/src/conversation/conversationPresentation.ts +305 -0
- package/src/conversation/index.ts +80 -0
- package/src/conversation/polling.ts +41 -0
- package/src/conversation/useConversation.ts +221 -0
- package/src/conversation/useConversationList.ts +328 -0
- package/src/conversation/useConversationParticipation.ts +178 -0
- package/src/conversation/useConversationTimeline.ts +244 -0
- package/src/conversation/useConversationsWantsHumanCount.ts +86 -0
- package/src/execution/useCreateAgentExecution.ts +18 -0
- package/src/index.ts +76 -4
- package/src/internal/Pagination.tsx +72 -0
- package/src/internal/__tests__/fake-timer-slices.ts +29 -0
- package/src/internal/__tests__/useAutoScroll.layout.test.tsx +143 -0
- package/src/internal/__tests__/useAutoScroll.test.tsx +62 -5
- package/src/internal/__tests__/useFetch-poll-under-render-pressure.test.tsx +79 -0
- package/src/internal/tooltip.tsx +6 -1
- package/src/internal/useAutoScroll.ts +66 -20
- package/src/internal/useFetch.ts +15 -4
- package/src/models/ModelSelector.tsx +133 -4
- package/src/models/__tests__/ModelSelector-serviceTier.test.tsx +256 -0
- package/src/models/__tests__/useModelRegistry.test.tsx +15 -0
- package/src/models/index.ts +2 -0
- package/src/models/registry.ts +17 -0
- package/src/models/service-tier.ts +49 -0
- package/src/schedule/ScheduleDetailView.tsx +1179 -111
- package/src/schedule/ScheduleForm.tsx +218 -7
- package/src/schedule/ScheduleRunsTable.tsx +424 -0
- package/src/schedule/__tests__/ScheduleDetailView.test.tsx +431 -8
- package/src/schedule/__tests__/scheduleCreation.test.tsx +197 -0
- package/src/schedule/__tests__/scheduleHooks.test.tsx +94 -7
- package/src/schedule/index.ts +12 -0
- package/src/schedule/useScheduleRuns.ts +93 -0
- package/src/schedule/useTriggerSchedule.ts +39 -14
- package/src/schedule/useUpdateScheduleSpec.ts +108 -0
- package/src/session/useNewSessionFlow.ts +1 -0
- package/src/session/useSessionConversation.ts +12 -0
- package/src/session/useSessionPageFlow.ts +1 -0
- package/src/sharing/__tests__/useSaveAgentShare.test.tsx +55 -1
- package/src/sharing/__tests__/useShareToolReadiness.test.tsx +1 -0
- package/src/sharing/useSaveAgentShare.ts +19 -1
- package/src/sidebar/WorkspaceSidebar.tsx +62 -3
- package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +56 -1
- package/src/workflow/__tests__/inspector-forms.test.tsx +119 -2
- package/src/workflow/inspector/forms/AgentCallForm.tsx +260 -37
- package/src/workflow/inspector/tabs/RuntimeTab.tsx +72 -33
- package/src/workflow/starter-workflow-yaml.ts +2 -1
- package/styles.css +1 -1
- package/workflow/inspector/forms/AgentCallForm.d.ts +18 -2
- package/workflow/inspector/forms/AgentCallForm.d.ts.map +1 -1
- package/workflow/inspector/forms/AgentCallForm.js +87 -9
- package/workflow/inspector/forms/AgentCallForm.js.map +1 -1
- package/workflow/inspector/tabs/RuntimeTab.d.ts +2 -1
- package/workflow/inspector/tabs/RuntimeTab.d.ts.map +1 -1
- package/workflow/inspector/tabs/RuntimeTab.js +31 -5
- package/workflow/inspector/tabs/RuntimeTab.js.map +1 -1
- package/workflow/starter-workflow-yaml.d.ts +1 -1
- package/workflow/starter-workflow-yaml.d.ts.map +1 -1
- package/workflow/starter-workflow-yaml.js +2 -1
- package/workflow/starter-workflow-yaml.js.map +1 -1
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Props for {@link Pagination}. */
|
|
2
|
+
export interface PaginationProps {
|
|
3
|
+
/** Current page number, 1-indexed. */
|
|
4
|
+
readonly pageNum: number;
|
|
5
|
+
/** Total number of pages. Render the control only when > 1. */
|
|
6
|
+
readonly totalPages: number;
|
|
7
|
+
/** Called with the new page number when the user navigates. */
|
|
8
|
+
readonly onPageChange: (page: number) => void;
|
|
9
|
+
/** Accessible label naming what is being paginated (e.g. "Run history pagination"). */
|
|
10
|
+
readonly ariaLabel: string;
|
|
11
|
+
/** Additional CSS classes for the root container. */
|
|
12
|
+
readonly className?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function Pagination({ pageNum, totalPages, onPageChange, ariaLabel, className, }: PaginationProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=Pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../src/internal/Pagination.tsx"],"names":[],"mappings":"AAiBA,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAQD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,SAAS,GACV,EAAE,eAAe,2CA4BjB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Shared prev/next pagination control for paginated SDK tables.
|
|
5
|
+
*
|
|
6
|
+
* Extracted from `CreditLedgerTable` (its original, file-private home)
|
|
7
|
+
* when `ScheduleRunsTable` became the second consumer. Deliberately
|
|
8
|
+
* minimal — Previous / "Page N of M" / Next — because every paginated
|
|
9
|
+
* surface in the SDK so far wants exactly this shape; page-number
|
|
10
|
+
* jumping earns its complexity only when a consumer actually needs it.
|
|
11
|
+
*
|
|
12
|
+
* Internal (not barrel-exported): the public contract is each table
|
|
13
|
+
* component, not this control.
|
|
14
|
+
*/
|
|
15
|
+
import { cn } from "@stigmer/theme";
|
|
16
|
+
const buttonClasses = cn("rounded-md px-2.5 py-1 text-xs font-medium text-muted-foreground transition-colors", "hover:bg-accent hover:text-foreground", "disabled:pointer-events-none disabled:opacity-40");
|
|
17
|
+
export function Pagination({ pageNum, totalPages, onPageChange, ariaLabel, className, }) {
|
|
18
|
+
return (_jsxs("div", { className: cn("flex items-center justify-between", className), role: "navigation", "aria-label": ariaLabel, children: [_jsx("button", { type: "button", disabled: pageNum <= 1, onClick: () => onPageChange(pageNum - 1), className: buttonClasses, children: "Previous" }), _jsxs("span", { className: "text-xs tabular-nums text-muted-foreground", children: ["Page ", pageNum, " of ", totalPages] }), _jsx("button", { type: "button", disabled: pageNum >= totalPages, onClick: () => onPageChange(pageNum + 1), className: buttonClasses, children: "Next" })] }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=Pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../src/internal/Pagination.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAgBpC,MAAM,aAAa,GAAG,EAAE,CACtB,oFAAoF,EACpF,uCAAuC,EACvC,kDAAkD,CACnD,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,SAAS,GACO;IAChB,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,mCAAmC,EAAE,SAAS,CAAC,EAC7D,IAAI,EAAC,YAAY,gBACL,SAAS,aAErB,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,OAAO,IAAI,CAAC,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EACxC,SAAS,EAAE,aAAa,yBAGjB,EACT,gBAAM,SAAS,EAAC,4CAA4C,sBACpD,OAAO,UAAM,UAAU,IACxB,EACP,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,OAAO,IAAI,UAAU,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EACxC,SAAS,EAAE,aAAa,qBAGjB,IACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/internal/tooltip.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAgBrE,iBAAS,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,2CAE9D;AAED,iBAAS,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,2CAElD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,2CAE5D;AAED,iBAAS,cAAc,CAAC,EACtB,IAAc,EACd,UAAc,EACd,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAC7B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/internal/tooltip.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAgBrE,iBAAS,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,2CAE9D;AAED,iBAAS,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,2CAElD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,2CAE5D;AAED,iBAAS,cAAc,CAAC,EACtB,IAAc,EACd,UAAc,EACd,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAC7B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,2CA8B/D;AAED,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
|
package/internal/tooltip.js
CHANGED
|
@@ -25,7 +25,13 @@ function TooltipTrigger(props) {
|
|
|
25
25
|
}
|
|
26
26
|
function TooltipContent({ side = "right", sideOffset = 8, className, children, ...props }) {
|
|
27
27
|
const portalContainer = useStigmerPortalContainer();
|
|
28
|
-
return (
|
|
28
|
+
return (
|
|
29
|
+
// `?? undefined`, never a raw null: Base UI treats an EXPLICIT null
|
|
30
|
+
// container as "wait for one" and renders the popup nowhere, while
|
|
31
|
+
// undefined falls back to document.body — the standalone behavior
|
|
32
|
+
// `useStigmerPortalContainer` documents. Without the coalesce, a
|
|
33
|
+
// tooltip outside a StigmerProvider opens invisibly.
|
|
34
|
+
_jsx(TooltipPrimitive.Portal, { container: portalContainer ?? undefined, children: _jsx(TooltipPrimitive.Positioner, { className: "isolate z-50 outline-none", side: side, sideOffset: sideOffset, children: _jsx(TooltipPrimitive.Popup, { className: cn("bg-popover text-popover-foreground ring-foreground/10 z-50 max-w-64 rounded-lg px-2.5 py-1.5 text-sm shadow-md ring-1", "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", "data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", "duration-100", className), ...props, children: children }) }) }));
|
|
29
35
|
}
|
|
30
36
|
export { Tooltip, TooltipProvider, TooltipTrigger, TooltipContent };
|
|
31
37
|
//# sourceMappingURL=tooltip.js.map
|
package/internal/tooltip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/internal/tooltip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,8EAA8E;AAC9E,8DAA8D;AAC9D,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,2CAA2C;AAC3C,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,8EAA8E;AAE9E,SAAS,eAAe,CAAC,KAAsC;IAC7D,OAAO,KAAC,gBAAgB,CAAC,QAAQ,OAAK,KAAK,GAAI,CAAC;AAClD,CAAC;AAED,SAAS,OAAO,CAAC,KAAkC;IACjD,OAAO,KAAC,gBAAgB,CAAC,IAAI,OAAK,KAAK,GAAI,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,KAAqC;IAC3D,OAAO,KAAC,gBAAgB,CAAC,OAAO,OAAK,KAAK,GAAI,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,IAAI,GAAG,OAAO,EACd,UAAU,GAAG,CAAC,EACd,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EAEsD;IAC9D,MAAM,eAAe,GAAG,yBAAyB,EAAE,CAAC;IAEpD,OAAO,
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/internal/tooltip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,8EAA8E;AAC9E,8DAA8D;AAC9D,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,2CAA2C;AAC3C,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,8EAA8E;AAE9E,SAAS,eAAe,CAAC,KAAsC;IAC7D,OAAO,KAAC,gBAAgB,CAAC,QAAQ,OAAK,KAAK,GAAI,CAAC;AAClD,CAAC;AAED,SAAS,OAAO,CAAC,KAAkC;IACjD,OAAO,KAAC,gBAAgB,CAAC,IAAI,OAAK,KAAK,GAAI,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,KAAqC;IAC3D,OAAO,KAAC,gBAAgB,CAAC,OAAO,OAAK,KAAK,GAAI,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,IAAI,GAAG,OAAO,EACd,UAAU,GAAG,CAAC,EACd,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EAEsD;IAC9D,MAAM,eAAe,GAAG,yBAAyB,EAAE,CAAC;IAEpD,OAAO;IACL,oEAAoE;IACpE,mEAAmE;IACnE,kEAAkE;IAClE,iEAAiE;IACjE,qDAAqD;IACrD,KAAC,gBAAgB,CAAC,MAAM,IAAC,SAAS,EAAE,eAAe,IAAI,SAAS,YAC9D,KAAC,gBAAgB,CAAC,UAAU,IAC1B,SAAS,EAAC,2BAA2B,EACrC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,YAEtB,KAAC,gBAAgB,CAAC,KAAK,IACrB,SAAS,EAAE,EAAE,CACX,uHAAuH,EACvH,+DAA+D,EAC/D,wEAAwE,EACxE,cAAc,EACd,SAAS,CACV,KACG,KAAK,YAER,QAAQ,GACc,GACG,GACN,CAC3B,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
export interface UseAutoScrollReturn {
|
|
2
|
-
/** Attach to the scrollable container. */
|
|
2
|
+
/** Attach to the scrollable container. Must be mounted from the first render. */
|
|
3
3
|
readonly scrollRef: React.RefObject<HTMLDivElement | null>;
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Attach to a zero-height div as the last child of the scroll container.
|
|
6
|
+
* Must be mounted from the first render.
|
|
7
|
+
*/
|
|
5
8
|
readonly sentinelRef: React.RefObject<HTMLDivElement | null>;
|
|
6
|
-
/**
|
|
7
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Attach to a wrapper div around the thread content (ResizeObserver
|
|
11
|
+
* target). MAY mount late or round-trip through unmount — a callback
|
|
12
|
+
* ref, so consumers whose content sits inside a loading branch (the
|
|
13
|
+
* conversation timeline) are observed the moment the wrapper appears.
|
|
14
|
+
*/
|
|
15
|
+
readonly contentRef: React.RefCallback<HTMLDivElement>;
|
|
8
16
|
/** True when the thread auto-scrolls to follow new content. */
|
|
9
17
|
readonly isFollowing: boolean;
|
|
10
18
|
/** Scroll to the latest content and re-engage follow mode. */
|
|
@@ -26,6 +34,19 @@ export interface UseAutoScrollReturn {
|
|
|
26
34
|
* detects height growth and triggers rAF-batched scroll writes when
|
|
27
35
|
* in the Following state.
|
|
28
36
|
*
|
|
37
|
+
* Ref contract (asymmetric on purpose): the scroller and sentinel must
|
|
38
|
+
* exist from the first render — every thread renders its scroll pane
|
|
39
|
+
* unconditionally, and the observers that need them attach once at
|
|
40
|
+
* mount. The CONTENT wrapper may appear later or round-trip through
|
|
41
|
+
* unmount: chat threads legitimately render a loading skeleton first
|
|
42
|
+
* (the conversation timeline does), so `contentRef` is a callback ref
|
|
43
|
+
* that owns the ResizeObserver's lifecycle — React hands it the node on
|
|
44
|
+
* attach and `null` on detach, so the observer follows the wrapper
|
|
45
|
+
* wherever it goes, with no render cost. Attaching only at mount
|
|
46
|
+
* shipped channel-conversations F-09: a late-mounting wrapper was never
|
|
47
|
+
* observed, so every conversation opened at its oldest message and
|
|
48
|
+
* nothing ever scrolled the view.
|
|
49
|
+
*
|
|
29
50
|
* @internal Not part of the public API.
|
|
30
51
|
*/
|
|
31
52
|
export declare function useAutoScroll(): UseAutoScrollReturn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoScroll.d.ts","sourceRoot":"","sources":["../../src/internal/useAutoScroll.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,mBAAmB;IAClC,
|
|
1
|
+
{"version":3,"file":"useAutoScroll.d.ts","sourceRoot":"","sources":["../../src/internal/useAutoScroll.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3D;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACvD,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,aAAa,IAAI,mBAAmB,CAsGnD"}
|
|
@@ -23,12 +23,24 @@ const NEAR_BOTTOM_MARGIN_PX = 80;
|
|
|
23
23
|
* detects height growth and triggers rAF-batched scroll writes when
|
|
24
24
|
* in the Following state.
|
|
25
25
|
*
|
|
26
|
+
* Ref contract (asymmetric on purpose): the scroller and sentinel must
|
|
27
|
+
* exist from the first render — every thread renders its scroll pane
|
|
28
|
+
* unconditionally, and the observers that need them attach once at
|
|
29
|
+
* mount. The CONTENT wrapper may appear later or round-trip through
|
|
30
|
+
* unmount: chat threads legitimately render a loading skeleton first
|
|
31
|
+
* (the conversation timeline does), so `contentRef` is a callback ref
|
|
32
|
+
* that owns the ResizeObserver's lifecycle — React hands it the node on
|
|
33
|
+
* attach and `null` on detach, so the observer follows the wrapper
|
|
34
|
+
* wherever it goes, with no render cost. Attaching only at mount
|
|
35
|
+
* shipped channel-conversations F-09: a late-mounting wrapper was never
|
|
36
|
+
* observed, so every conversation opened at its oldest message and
|
|
37
|
+
* nothing ever scrolled the view.
|
|
38
|
+
*
|
|
26
39
|
* @internal Not part of the public API.
|
|
27
40
|
*/
|
|
28
41
|
export function useAutoScroll() {
|
|
29
42
|
const scrollRef = useRef(null);
|
|
30
43
|
const sentinelRef = useRef(null);
|
|
31
|
-
const contentRef = useRef(null);
|
|
32
44
|
const [isFollowing, setIsFollowing] = useState(true);
|
|
33
45
|
const isFollowingRef = useRef(true);
|
|
34
46
|
const rafIdRef = useRef(0);
|
|
@@ -46,11 +58,20 @@ export function useAutoScroll() {
|
|
|
46
58
|
// Establish initial position at the bottom so the first IO
|
|
47
59
|
// callback sees the sentinel as intersecting.
|
|
48
60
|
scroller.scrollTop = scroller.scrollHeight;
|
|
49
|
-
const io = new IntersectionObserver((
|
|
50
|
-
|
|
51
|
-
|
|
61
|
+
const io = new IntersectionObserver(() => {
|
|
62
|
+
// The delivery is the signal; the LIVE geometry is the truth.
|
|
63
|
+
// An entry snapshots geometry at OBSERVATION time and can be
|
|
64
|
+
// delivered after the reader has scrolled again — measured in
|
|
65
|
+
// the F-09 net: a stale "visible" (captured at the pinned
|
|
66
|
+
// instant) landed after a scroll-up, re-engaged follow, and the
|
|
67
|
+
// next growth yanked the reader to the bottom. Measuring at
|
|
68
|
+
// delivery time keeps the observer as a poll-free change
|
|
69
|
+
// detector without trusting its stale payload.
|
|
70
|
+
const el = scrollRef.current;
|
|
71
|
+
if (!el)
|
|
52
72
|
return;
|
|
53
|
-
const visible =
|
|
73
|
+
const visible = el.scrollHeight - el.scrollTop - el.clientHeight <=
|
|
74
|
+
NEAR_BOTTOM_MARGIN_PX;
|
|
54
75
|
isFollowingRef.current = visible;
|
|
55
76
|
setIsFollowing(visible);
|
|
56
77
|
}, {
|
|
@@ -62,25 +83,44 @@ export function useAutoScroll() {
|
|
|
62
83
|
return () => io.disconnect();
|
|
63
84
|
}, []);
|
|
64
85
|
// --- ResizeObserver: scroll on content height growth while following ---
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
86
|
+
// Lifecycle lives in the callback ref (not a run-once effect): the
|
|
87
|
+
// observer must adopt a wrapper that mounts after a loading branch and
|
|
88
|
+
// let go of one that unmounts — including on component unmount, where
|
|
89
|
+
// React also calls the ref with null. Its initial delivery on observe()
|
|
90
|
+
// doubles as the first-fill bottom pin. The scroller is read lazily at
|
|
91
|
+
// fire time (deliveries are async, after every commit's refs are set).
|
|
92
|
+
const resizeObserverRef = useRef(null);
|
|
93
|
+
const contentRef = useCallback((node) => {
|
|
94
|
+
resizeObserverRef.current?.disconnect();
|
|
95
|
+
resizeObserverRef.current = null;
|
|
96
|
+
cancelAnimationFrame(rafIdRef.current);
|
|
97
|
+
if (!node)
|
|
68
98
|
return;
|
|
69
99
|
const ro = new ResizeObserver(() => {
|
|
70
100
|
if (!isFollowingRef.current)
|
|
71
101
|
return;
|
|
72
102
|
cancelAnimationFrame(rafIdRef.current);
|
|
103
|
+
// The reader-took-control guard, decided at WRITE time: a frame
|
|
104
|
+
// can lag (headless and busy tabs throttle rAF) long enough for
|
|
105
|
+
// the reader to scroll up between scheduling and writing, and a
|
|
106
|
+
// stale pin then yanks them back to the bottom (the F-09 suite's
|
|
107
|
+
// scrolled-up case, flaking ~1-in-5 under real Chromium). The
|
|
108
|
+
// discriminator is scrollTop itself: content growth never moves
|
|
109
|
+
// it, only the reader does — `isFollowingRef` cannot arbitrate
|
|
110
|
+
// here because growth makes the sentinel leave the viewport
|
|
111
|
+
// transiently, so the flag reads false mid-pin by design.
|
|
112
|
+
const scheduledAt = scrollRef.current?.scrollTop ?? null;
|
|
73
113
|
rafIdRef.current = requestAnimationFrame(() => {
|
|
74
114
|
const el = scrollRef.current;
|
|
75
|
-
if (el)
|
|
76
|
-
|
|
115
|
+
if (!el)
|
|
116
|
+
return;
|
|
117
|
+
if (scheduledAt !== null && el.scrollTop !== scheduledAt)
|
|
118
|
+
return;
|
|
119
|
+
el.scrollTop = el.scrollHeight;
|
|
77
120
|
});
|
|
78
121
|
});
|
|
79
|
-
ro.observe(
|
|
80
|
-
|
|
81
|
-
ro.disconnect();
|
|
82
|
-
cancelAnimationFrame(rafIdRef.current);
|
|
83
|
-
};
|
|
122
|
+
ro.observe(node);
|
|
123
|
+
resizeObserverRef.current = ro;
|
|
84
124
|
}, []);
|
|
85
125
|
const jumpToLatest = useCallback(() => {
|
|
86
126
|
const el = scrollRef.current;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoScroll.js","sourceRoot":"","sources":["../../src/internal/useAutoScroll.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useAutoScroll.js","sourceRoot":"","sources":["../../src/internal/useAutoScroll.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetch.d.ts","sourceRoot":"","sources":["../../src/internal/useFetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAA4C,MAAM,OAAO,CAAC;AAItF,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE1C;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAExC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAClC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,CAAC,EACd,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useFetch.d.ts","sourceRoot":"","sources":["../../src/internal/useFetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAA4C,MAAM,OAAO,CAAC;AAItF,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE1C;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAExC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAClC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,CAAC,EACd,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CAAC,CAAC,CAAC,CA8InB"}
|
package/internal/useFetch.js
CHANGED
|
@@ -107,19 +107,29 @@ export function useFetch(fetchFn, deps, initialData, options) {
|
|
|
107
107
|
cancelled.current = true;
|
|
108
108
|
};
|
|
109
109
|
}, [...deps, fetchKey]);
|
|
110
|
+
// The two effects below use `fetchFn` only as an enabled/disabled
|
|
111
|
+
// signal — they trigger fetches through `refetch()`, and the fetch
|
|
112
|
+
// effect above already closes over the current render's `fetchFn`.
|
|
113
|
+
// Keying them on this boolean instead of on `fetchFn` itself is
|
|
114
|
+
// load-bearing: consumers pass inline closures (referentially new
|
|
115
|
+
// every render), so an identity dep tears the interval down on every
|
|
116
|
+
// render — and under any co-mounted faster render source the timer
|
|
117
|
+
// never completes a period and the consumer never polls at all
|
|
118
|
+
// (channel-conversations F-14; pinned by the render-pressure tests).
|
|
119
|
+
const fetchEnabled = fetchFn !== null;
|
|
110
120
|
const refetchInterval = options?.refetchInterval;
|
|
111
121
|
useEffect(() => {
|
|
112
|
-
if (!refetchInterval || refetchInterval <= 0 || !
|
|
122
|
+
if (!refetchInterval || refetchInterval <= 0 || !fetchEnabled)
|
|
113
123
|
return;
|
|
114
124
|
const id = setInterval(() => {
|
|
115
125
|
if (!isFetchingRef.current)
|
|
116
126
|
refetch();
|
|
117
127
|
}, refetchInterval);
|
|
118
128
|
return () => clearInterval(id);
|
|
119
|
-
}, [refetchInterval,
|
|
129
|
+
}, [refetchInterval, fetchEnabled, refetch]);
|
|
120
130
|
const refetchOnWindowFocus = options?.refetchOnWindowFocus;
|
|
121
131
|
useEffect(() => {
|
|
122
|
-
if (!refetchOnWindowFocus || !
|
|
132
|
+
if (!refetchOnWindowFocus || !fetchEnabled)
|
|
123
133
|
return;
|
|
124
134
|
if (typeof window === "undefined")
|
|
125
135
|
return;
|
|
@@ -137,7 +147,7 @@ export function useFetch(fetchFn, deps, initialData, options) {
|
|
|
137
147
|
window.removeEventListener("focus", onActive);
|
|
138
148
|
document.removeEventListener("visibilitychange", onVisible);
|
|
139
149
|
};
|
|
140
|
-
}, [refetchOnWindowFocus,
|
|
150
|
+
}, [refetchOnWindowFocus, fetchEnabled, refetch]);
|
|
141
151
|
const isLoading = isFetching && !hasDataRef.current;
|
|
142
152
|
const isRefetching = isFetching && hasDataRef.current;
|
|
143
153
|
return { data, isLoading, isRefetching, error, refetch };
|
package/internal/useFetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetch.js","sourceRoot":"","sources":["../../src/internal/useFetch.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useFetch.js","sourceRoot":"","sources":["../../src/internal/useFetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type HarnessOption } from "./harness.js";
|
|
2
|
+
import { type ServiceTierOption } from "./service-tier.js";
|
|
2
3
|
/** Props for {@link ModelSelector}. */
|
|
3
4
|
export interface ModelSelectorProps {
|
|
4
5
|
/** Currently selected model ID. */
|
|
@@ -39,6 +40,36 @@ export interface ModelSelectorProps {
|
|
|
39
40
|
readonly className?: string;
|
|
40
41
|
/** When true, disables the selector. */
|
|
41
42
|
readonly disabled?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Trigger label shown while `value` is empty, instead of falling back
|
|
45
|
+
* to the registry's default model. Lets a form distinguish "nothing
|
|
46
|
+
* pinned — the platform default applies" from an actual selection
|
|
47
|
+
* (the schedule form's contract: an unset model inherits the
|
|
48
|
+
* surface's platform default). The harness prefix is hidden while
|
|
49
|
+
* the placeholder shows, since no engine is pinned either.
|
|
50
|
+
*/
|
|
51
|
+
readonly placeholderLabel?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Current service tier for the selected model (stigmer/stigmer#357).
|
|
54
|
+
* Defaults to "standard". Only meaningful together with
|
|
55
|
+
* {@link onServiceTierChange}.
|
|
56
|
+
*/
|
|
57
|
+
readonly serviceTier?: ServiceTierOption;
|
|
58
|
+
/**
|
|
59
|
+
* Called when the user toggles the fast tier. Providing this enables the
|
|
60
|
+
* "Fast tier" switch in the popover's options area (top of the popover,
|
|
61
|
+
* beside the harness row — the Cursor options-panel convention), which
|
|
62
|
+
* renders ONLY while the selected model prices a fast variant
|
|
63
|
+
* ({@link ModelInfo.serviceTiers}) — no dead controls.
|
|
64
|
+
*
|
|
65
|
+
* An active fast tier persists across switches between fast-capable
|
|
66
|
+
* models (the tier is always visible: trigger badge + options switch),
|
|
67
|
+
* so "fast, but on that other model" is one action, not a re-toggle.
|
|
68
|
+
* Selecting a model without a fast tier resets to "standard" through
|
|
69
|
+
* this callback — an unsupported combination can never be submitted
|
|
70
|
+
* (#357, refused at create time).
|
|
71
|
+
*/
|
|
72
|
+
readonly onServiceTierChange?: (tier: ServiceTierOption) => void;
|
|
42
73
|
/**
|
|
43
74
|
* @deprecated Use {@link onHarnessChange} instead.
|
|
44
75
|
*/
|
|
@@ -55,6 +86,19 @@ export interface ModelSelectorProps {
|
|
|
55
86
|
* The trigger button displays the current selection in compact format:
|
|
56
87
|
* `Harness · Model Name ▾` (or just `Model Name ▾` when harness is locked).
|
|
57
88
|
*
|
|
89
|
+
* **Service tier (#357).** When the consumer opts in via
|
|
90
|
+
* {@link ModelSelectorProps.onServiceTierChange} and the selected model
|
|
91
|
+
* prices a fast variant, a "Fast tier" switch renders in the options area
|
|
92
|
+
* at the TOP of the popover — the first thing visible on open, mirroring
|
|
93
|
+
* Cursor's own options panel (Jakob's Law: our users already know that
|
|
94
|
+
* layout). Deliberately not a per-row affordance: row-level chips crowd
|
|
95
|
+
* the rows and collide with the "Fast/Fastest" speed badge, and an
|
|
96
|
+
* interactive element inside `role="option"` is an ARIA authoring error
|
|
97
|
+
* (option children are presentational). An active fast tier persists
|
|
98
|
+
* across switches between fast-capable models — the visible badge and
|
|
99
|
+
* switch keep the state honest — and resets only for models with no fast
|
|
100
|
+
* variant, where it would be refused at create time.
|
|
101
|
+
*
|
|
58
102
|
* @example
|
|
59
103
|
* ```tsx
|
|
60
104
|
* <ModelSelector
|
|
@@ -65,5 +109,5 @@ export interface ModelSelectorProps {
|
|
|
65
109
|
* />
|
|
66
110
|
* ```
|
|
67
111
|
*/
|
|
68
|
-
export declare function ModelSelector({ value, onValueChange, harness, initialHarness, onHarnessChange, onHarnessResolved, availableHarnesses, curatedModels, groupBy, showSpeedBadge, showDescriptions, compact, className, disabled, }: ModelSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
112
|
+
export declare function ModelSelector({ value, onValueChange, harness, initialHarness, onHarnessChange, onHarnessResolved, availableHarnesses, curatedModels, groupBy, showSpeedBadge, showDescriptions, compact, className, disabled, placeholderLabel, serviceTier, onServiceTierChange, }: ModelSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
69
113
|
//# sourceMappingURL=ModelSelector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../src/models/ModelSelector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../src/models/ModelSelector.tsx"],"names":[],"mappings":"AASA,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAe9E,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC;IACxC,wDAAwD;IACxD,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5D;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACvD,oEAAoE;IACpE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAChD,4CAA4C;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACzC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAEjE;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAa,EACb,OAAO,EACP,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,OAAoB,EACpB,cAAqB,EACrB,gBAAuB,EACvB,OAAe,EACf,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,WAAwB,EACxB,mBAAmB,GACpB,EAAE,kBAAkB,2CAqbpB"}
|
package/models/ModelSelector.js
CHANGED
|
@@ -4,8 +4,10 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
|
4
4
|
import { Popover } from "@base-ui/react/popover";
|
|
5
5
|
import { cn } from "@stigmer/theme";
|
|
6
6
|
import { useStigmerPortalContainer } from "../portal-container.js";
|
|
7
|
+
import { Switch } from "../switch/Switch.js";
|
|
7
8
|
import { useModelRegistry } from "./useModelRegistry.js";
|
|
8
9
|
import { HARNESS_META, HARNESS_OPTIONS } from "./harness.js";
|
|
10
|
+
import { FAST_SERVICE_TIER } from "./service-tier.js";
|
|
9
11
|
const COST_TIER_LABEL = {
|
|
10
12
|
economy: "$",
|
|
11
13
|
standard: "$$",
|
|
@@ -28,6 +30,19 @@ const SPEED_TIER_LABEL = {
|
|
|
28
30
|
* The trigger button displays the current selection in compact format:
|
|
29
31
|
* `Harness · Model Name ▾` (or just `Model Name ▾` when harness is locked).
|
|
30
32
|
*
|
|
33
|
+
* **Service tier (#357).** When the consumer opts in via
|
|
34
|
+
* {@link ModelSelectorProps.onServiceTierChange} and the selected model
|
|
35
|
+
* prices a fast variant, a "Fast tier" switch renders in the options area
|
|
36
|
+
* at the TOP of the popover — the first thing visible on open, mirroring
|
|
37
|
+
* Cursor's own options panel (Jakob's Law: our users already know that
|
|
38
|
+
* layout). Deliberately not a per-row affordance: row-level chips crowd
|
|
39
|
+
* the rows and collide with the "Fast/Fastest" speed badge, and an
|
|
40
|
+
* interactive element inside `role="option"` is an ARIA authoring error
|
|
41
|
+
* (option children are presentational). An active fast tier persists
|
|
42
|
+
* across switches between fast-capable models — the visible badge and
|
|
43
|
+
* switch keep the state honest — and resets only for models with no fast
|
|
44
|
+
* variant, where it would be refused at create time.
|
|
45
|
+
*
|
|
31
46
|
* @example
|
|
32
47
|
* ```tsx
|
|
33
48
|
* <ModelSelector
|
|
@@ -38,7 +53,7 @@ const SPEED_TIER_LABEL = {
|
|
|
38
53
|
* />
|
|
39
54
|
* ```
|
|
40
55
|
*/
|
|
41
|
-
export function ModelSelector({ value, onValueChange, harness, initialHarness, onHarnessChange, onHarnessResolved, availableHarnesses, curatedModels, groupBy = "provider", showSpeedBadge = true, showDescriptions = true, compact = false, className, disabled, }) {
|
|
56
|
+
export function ModelSelector({ value, onValueChange, harness, initialHarness, onHarnessChange, onHarnessResolved, availableHarnesses, curatedModels, groupBy = "provider", showSpeedBadge = true, showDescriptions = true, compact = false, className, disabled, placeholderLabel, serviceTier = "standard", onServiceTierChange, }) {
|
|
42
57
|
const portalContainer = useStigmerPortalContainer();
|
|
43
58
|
const isHarnessLocked = harness !== undefined;
|
|
44
59
|
const [internalHarness, setInternalHarness] = useState(harness ?? initialHarness ?? "native");
|
|
@@ -128,8 +143,18 @@ export function ModelSelector({ value, onValueChange, harness, initialHarness, o
|
|
|
128
143
|
}, [onHarnessChange, onHarnessResolved]);
|
|
129
144
|
const selectModel = useCallback((model) => {
|
|
130
145
|
onValueChange(model.modelId);
|
|
146
|
+
// An active fast tier survives a switch between fast-capable models —
|
|
147
|
+
// resetting it forced users to re-toggle on every model change, and
|
|
148
|
+
// the tier is never silent (trigger badge + options switch both show
|
|
149
|
+
// it). It resets ONLY when the new model prices no fast variant: a
|
|
150
|
+
// stale tier there would be refused at create time (#357).
|
|
151
|
+
if (serviceTier === "fast"
|
|
152
|
+
&& onServiceTierChange
|
|
153
|
+
&& !model.serviceTiers.includes(FAST_SERVICE_TIER)) {
|
|
154
|
+
onServiceTierChange("standard");
|
|
155
|
+
}
|
|
131
156
|
setOpen(false);
|
|
132
|
-
}, [onValueChange]);
|
|
157
|
+
}, [onValueChange, serviceTier, onServiceTierChange]);
|
|
133
158
|
const scrollHighlightIntoView = useCallback((idx) => {
|
|
134
159
|
const container = listRef.current;
|
|
135
160
|
if (!container)
|
|
@@ -170,9 +195,24 @@ export function ModelSelector({ value, onValueChange, harness, initialHarness, o
|
|
|
170
195
|
}
|
|
171
196
|
}, [visibleModels, highlightIdx, selectModel, scrollHighlightIntoView]);
|
|
172
197
|
const showShowAllButton = !isSearching && !showAll && featuredModels.length > 0 && featuredModels.length < models.length;
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
198
|
+
// The options-area switch exists only where it applies: a consumer opted
|
|
199
|
+
// in AND the selected model prices a fast variant (recognition over
|
|
200
|
+
// recall — never a dead control on models with no tier choice).
|
|
201
|
+
const showServiceTierToggle = onServiceTierChange !== undefined
|
|
202
|
+
&& selectedModel !== undefined
|
|
203
|
+
&& selectedModel.serviceTiers.includes(FAST_SERVICE_TIER);
|
|
204
|
+
// The trigger badge is display-only: fast is in effect iff the tier is
|
|
205
|
+
// fast AND the selected model actually prices the variant.
|
|
206
|
+
const fastActive = serviceTier === "fast"
|
|
207
|
+
&& (selectedModel?.serviceTiers.includes(FAST_SERVICE_TIER) ?? false);
|
|
208
|
+
const usingPlaceholder = !value && placeholderLabel !== undefined;
|
|
209
|
+
const triggerLabel = usingPlaceholder
|
|
210
|
+
? placeholderLabel
|
|
211
|
+
: (selectedModel?.displayName ?? "Select model");
|
|
212
|
+
const triggerHarness = !isHarnessLocked && !usingPlaceholder
|
|
213
|
+
? HARNESS_META[activeHarness].label
|
|
214
|
+
: undefined;
|
|
215
|
+
return (_jsxs(Popover.Root, { open: open, onOpenChange: setOpen, children: [_jsxs(Popover.Trigger, { disabled: disabled, className: cn("inline-flex items-center gap-1.5 rounded-md border border-border", "bg-background px-2.5 py-1.5 text-xs text-foreground", "hover:bg-accent-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:pointer-events-none disabled:opacity-50", "transition-colors max-w-[20rem] max-sm:max-w-[12rem]", className), children: [triggerHarness && (_jsx("span", { className: "shrink-0 text-muted-foreground", children: triggerHarness })), triggerHarness && (_jsx("span", { className: "shrink-0 text-border", "aria-hidden": true, children: "\u00B7" })), _jsx("span", { className: "truncate", children: triggerLabel }), fastActive && (_jsxs("span", { className: cn("inline-flex shrink-0 items-center gap-0.5 rounded-full border border-primary px-1.5 py-px", "text-[0.6rem] font-medium uppercase tracking-wider text-primary"), children: [_jsx(BoltIcon, {}), "Fast"] })), _jsx(ChevronIcon, {})] }), _jsx(Popover.Portal, { container: portalContainer, children: _jsx(Popover.Positioner, { sideOffset: 4, children: _jsxs(Popover.Popup, { role: "dialog", "aria-label": "Model selector", className: cn("z-popover w-72 rounded-lg border border-border bg-popover shadow-md", "text-popover-foreground"), children: [_jsxs("div", { className: "relative flex items-center justify-between border-b border-border px-3 py-2", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: "Harness" }), _jsxs("button", { type: "button", "aria-haspopup": "listbox", "aria-expanded": harnessOpen, "aria-label": "Select harness", disabled: isHarnessLocked, className: cn("inline-flex items-center gap-1.5 rounded-md border border-border", "bg-background px-2.5 py-1.5 text-xs text-foreground", "transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", isHarnessLocked
|
|
176
216
|
? "cursor-not-allowed opacity-50"
|
|
177
217
|
: "hover:bg-accent-hover"), onClick: () => {
|
|
178
218
|
if (!isHarnessLocked)
|
|
@@ -188,7 +228,7 @@ export function ModelSelector({ value, onValueChange, harness, initialHarness, o
|
|
|
188
228
|
handleHarnessChange(h);
|
|
189
229
|
setHarnessOpen(false);
|
|
190
230
|
}, children: [_jsx("span", { className: "flex-1 text-left", children: HARNESS_META[h].label }), isActive && _jsx(CheckIcon, { className: "shrink-0 text-primary" })] }, h));
|
|
191
|
-
}) }))] }), _jsx("div", { className: "border-b border-border px-3 py-1.5", children: _jsx("input", { ref: searchRef, role: "searchbox", "aria-label": "Search models", placeholder: "Search models\u2026", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: handleKeyDown, className: cn("w-full bg-transparent text-xs text-foreground placeholder:text-muted-foreground", "outline-none") }) }), _jsxs("div", { ref: listRef, role: "listbox", "aria-label": "Available models", className: "max-h-72 overflow-y-auto p-1", children: [visibleModels.length === 0 && isLoading && (_jsxs("div", { className: "flex items-center justify-center gap-2 px-2 py-3", children: [_jsx("div", { className: "size-3 animate-spin rounded-full border border-muted border-t-primary" }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Loading models\u2026" })] })), visibleModels.length === 0 && !isLoading && error != null && (_jsxs("div", { className: "flex flex-col items-center gap-1.5 px-2 py-3", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: "Failed to load models" }), _jsx("button", { type: "button", className: cn("rounded-md border border-border bg-background px-2.5 py-1 text-xs text-foreground", "hover:bg-accent-hover transition-colors cursor-pointer"), onClick: refetch, children: "Retry" })] })), visibleModels.length === 0 && !isLoading && error == null && (_jsx("div", { className: "px-2 py-3 text-center text-xs text-muted-foreground", children: "No models found" })), groupedModels ? (Array.from(groupedModels.entries()).map(([group, groupModels]) => (_jsxs("div", { children: [_jsx("div", { className: "px-2 pb-0.5 pt-2 text-[0.6rem] font-medium uppercase tracking-wider text-muted-foreground", children: group }), groupModels.map((model) => (_jsx(ModelRow, { model: model, isSelected: model.modelId === selectedModel?.modelId, showDescription: false, showSpeedBadge: showSpeedBadge, onClick: () => selectModel(model) }, model.modelId)))] }, group)))) : (visibleModels.map((model, idx) => (_jsx(ModelRow, { model: model, isSelected: model.modelId === selectedModel?.modelId, isHighlighted: idx === highlightIdx, showDescription: showDescriptions && !compact && !isSearching && !showAll, showSpeedBadge: showSpeedBadge, onClick: () => selectModel(model), onMouseEnter: () => setHighlightIdx(idx) }, model.modelId)))), showShowAllButton && (_jsx("button", { type: "button", className: cn("mt-1 flex w-full items-center justify-center rounded-md border border-dashed border-border", "px-2 py-1.5 text-xs text-muted-foreground", "hover:bg-accent-hover hover:text-foreground transition-colors cursor-pointer"), onClick: () => setShowAll(true), children: "Show all models" }))] })] }) }) })] }));
|
|
231
|
+
}) }))] }), showServiceTierToggle && (_jsxs("div", { className: "flex items-center justify-between border-b border-border px-3 py-2", children: [_jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs text-foreground", children: "Fast tier" }), _jsx("span", { className: "text-[0.65rem] text-muted-foreground", children: "Faster responses at higher per-token rates" })] }), _jsx(Switch, { checked: fastActive, onCheckedChange: (next) => onServiceTierChange?.(next ? "fast" : "standard"), "aria-label": "Fast tier" })] })), _jsx("div", { className: "border-b border-border px-3 py-1.5", children: _jsx("input", { ref: searchRef, role: "searchbox", "aria-label": "Search models", placeholder: "Search models\u2026", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: handleKeyDown, className: cn("w-full bg-transparent text-xs text-foreground placeholder:text-muted-foreground", "outline-none") }) }), _jsxs("div", { ref: listRef, role: "listbox", "aria-label": "Available models", className: "max-h-72 overflow-y-auto p-1", children: [visibleModels.length === 0 && isLoading && (_jsxs("div", { className: "flex items-center justify-center gap-2 px-2 py-3", children: [_jsx("div", { className: "size-3 animate-spin rounded-full border border-muted border-t-primary" }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Loading models\u2026" })] })), visibleModels.length === 0 && !isLoading && error != null && (_jsxs("div", { className: "flex flex-col items-center gap-1.5 px-2 py-3", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: "Failed to load models" }), _jsx("button", { type: "button", className: cn("rounded-md border border-border bg-background px-2.5 py-1 text-xs text-foreground", "hover:bg-accent-hover transition-colors cursor-pointer"), onClick: refetch, children: "Retry" })] })), visibleModels.length === 0 && !isLoading && error == null && (_jsx("div", { className: "px-2 py-3 text-center text-xs text-muted-foreground", children: "No models found" })), groupedModels ? (Array.from(groupedModels.entries()).map(([group, groupModels]) => (_jsxs("div", { children: [_jsx("div", { className: "px-2 pb-0.5 pt-2 text-[0.6rem] font-medium uppercase tracking-wider text-muted-foreground", children: group }), groupModels.map((model) => (_jsx(ModelRow, { model: model, isSelected: model.modelId === selectedModel?.modelId, showDescription: false, showSpeedBadge: showSpeedBadge, onClick: () => selectModel(model) }, model.modelId)))] }, group)))) : (visibleModels.map((model, idx) => (_jsx(ModelRow, { model: model, isSelected: model.modelId === selectedModel?.modelId, isHighlighted: idx === highlightIdx, showDescription: showDescriptions && !compact && !isSearching && !showAll, showSpeedBadge: showSpeedBadge, onClick: () => selectModel(model), onMouseEnter: () => setHighlightIdx(idx) }, model.modelId)))), showShowAllButton && (_jsx("button", { type: "button", className: cn("mt-1 flex w-full items-center justify-center rounded-md border border-dashed border-border", "px-2 py-1.5 text-xs text-muted-foreground", "hover:bg-accent-hover hover:text-foreground transition-colors cursor-pointer"), onClick: () => setShowAll(true), children: "Show all models" }))] })] }) }) })] }));
|
|
192
232
|
}
|
|
193
233
|
function ModelRow({ model, isSelected, isHighlighted, showDescription, showSpeedBadge, onClick, onMouseEnter, }) {
|
|
194
234
|
return (_jsxs("button", { "data-model-option": "", role: "option", "aria-selected": isSelected, type: "button", className: cn("flex w-full cursor-pointer flex-col rounded-md px-2 py-1.5 text-xs outline-none", "transition-colors", isHighlighted && "bg-accent text-accent-foreground", !isHighlighted && "hover:bg-accent-hover"), onClick: onClick, onMouseEnter: onMouseEnter, children: [_jsxs("div", { className: "flex w-full items-center gap-2", children: [_jsx("span", { className: "flex-1 truncate text-left font-medium", children: model.displayName }), _jsx("span", { className: "shrink-0 text-[0.6rem] text-muted-foreground", children: showSpeedBadge
|
|
@@ -201,4 +241,7 @@ function ChevronIcon() {
|
|
|
201
241
|
function CheckIcon({ className }) {
|
|
202
242
|
return (_jsx("svg", { className: className, width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M2 6L5 9L10 3" }) }));
|
|
203
243
|
}
|
|
244
|
+
function BoltIcon() {
|
|
245
|
+
return (_jsx("svg", { className: "shrink-0", width: "8", height: "10", viewBox: "0 0 8 10", fill: "currentColor", "aria-hidden": true, children: _jsx("path", { d: "M4.9 0.2L0.6 5.6h2.6L3.1 9.8l4.3-5.4H4.8L4.9 0.2z" }) }));
|
|
246
|
+
}
|
|
204
247
|
//# sourceMappingURL=ModelSelector.js.map
|