@burdenoff/fe-libs 2026.527.2 → 2026.527.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/button/Button.js +18 -16
- package/dist/chrome/AccountSwitcher.js +10 -7
- package/dist/chrome/AutoBreadcrumbs.js +2 -0
- package/dist/chrome/Breadcrumbs.js +2 -0
- package/dist/chrome/CommandPalette.js +5 -3
- package/dist/chrome/ContextSwitcher.js +90 -338
- package/dist/chrome/DynamicFooter.js +7 -7
- package/dist/chrome/Footer.js +5 -5
- package/dist/chrome/GeographySwitcher.js +3 -3
- package/dist/chrome/GlobalSearch.js +73 -448
- package/dist/chrome/HeaderBar.js +6 -1
- package/dist/chrome/LanguagePickerSheet.js +1 -1
- package/dist/chrome/LanguageSwitcher.js +2 -2
- package/dist/chrome/NotificationCenter.js +69 -694
- package/dist/chrome/PanelTabs.js +7 -4
- package/dist/chrome/PluginContextMenuTarget.js +1 -1
- package/dist/chrome/ProductPickerSheet.js +4 -4
- package/dist/chrome/ProductSideNav.js +1 -1
- package/dist/chrome/ProductSwitcher.js +3 -3
- package/dist/chrome/ProfileSwitcher.js +13 -8
- package/dist/chrome/ShortcutHelpDialog.js +2 -1
- package/dist/chrome/SideNavigation.js +75 -239
- package/dist/chrome/Sidebar.js +1 -0
- package/dist/chrome/contextSwitcher/EmptyState.js +32 -0
- package/dist/chrome/contextSwitcher/OrganizationList.js +34 -0
- package/dist/chrome/contextSwitcher/ProjectList.js +34 -0
- package/dist/chrome/contextSwitcher/SearchInput.js +50 -0
- package/dist/chrome/contextSwitcher/TabButton.js +9 -0
- package/dist/chrome/contextSwitcher/TriggerButton.js +38 -0
- package/dist/chrome/contextSwitcher/WorkspaceList.js +34 -0
- package/dist/chrome/contextSwitcher/icons.js +58 -0
- package/dist/chrome/contextSwitcher/useIsMobile.js +11 -0
- package/dist/chrome/globalSearch/AdvancedFiltersPanel.js +253 -0
- package/dist/chrome/globalSearch/CategoryTabs.js +28 -0
- package/dist/chrome/globalSearch/ResultsList.js +58 -0
- package/dist/chrome/globalSearch/SearchInput.js +28 -0
- package/dist/chrome/globalSearch/SearchModeBar.js +36 -0
- package/dist/chrome/globalSearch/useAdvancedFilters.js +78 -0
- package/dist/chrome/globalSearch/utils.js +22 -0
- package/dist/chrome/notificationCenter/BellButton.js +27 -0
- package/dist/chrome/notificationCenter/NotificationCardItem.js +129 -0
- package/dist/chrome/notificationCenter/NotificationFilters.js +67 -0
- package/dist/chrome/notificationCenter/NotificationFooter.js +23 -0
- package/dist/chrome/notificationCenter/NotificationHeader.js +75 -0
- package/dist/chrome/notificationCenter/NotificationList.js +75 -0
- package/dist/chrome/notificationCenter/NotificationPanel.js +19 -0
- package/dist/chrome/notificationCenter/SkeletonCard.js +18 -0
- package/dist/chrome/notificationCenter/constants.js +93 -0
- package/dist/chrome/notificationCenter/gql.js +58 -0
- package/dist/chrome/notificationCenter/useNotificationCenter.js +149 -0
- package/dist/chrome/notificationCenter/usePanelChrome.js +36 -0
- package/dist/chrome/sideNavigation/CollapseToggle.js +29 -0
- package/dist/chrome/sideNavigation/MobileActionsBar.js +25 -0
- package/dist/chrome/sideNavigation/NavItemRenderer.js +79 -0
- package/dist/chrome/sideNavigation/SidebarHeader.js +29 -0
- package/dist/chrome/sideNavigation/helpers.js +19 -0
- package/dist/chrome/sideNavigation/useSideNavigationState.js +45 -0
- package/dist/form/Checkbox.js +17 -15
- package/dist/form/FormDescription.js +9 -10
- package/dist/form/FormField.js +11 -12
- package/dist/form/FormLabel.js +13 -13
- package/dist/form/FormMessage.js +10 -11
- package/dist/form/Input.js +11 -10
- package/dist/form/Radio.js +25 -21
- package/dist/form/Select.js +81 -66
- package/dist/form/Textarea.js +10 -9
- package/dist/shared/components/AccessDenied.js +8 -4
- package/dist/shared/components/AppErrorBoundary.js +2 -0
- package/dist/shared/components/ContextConversationWidget.js +173 -767
- package/dist/shared/components/ErrorFallback.js +3 -0
- package/dist/shared/components/PWAInstallBanner.js +8 -4
- package/dist/shared/components/RequireAuth.js +4 -4
- package/dist/shared/components/SSORedirectGuard.js +1 -1
- package/dist/shared/components/contextConversationWidget/Composer.js +66 -0
- package/dist/shared/components/contextConversationWidget/MessageItem.js +124 -0
- package/dist/shared/components/contextConversationWidget/MessageList.js +32 -0
- package/dist/shared/components/contextConversationWidget/NoWorkspaceCard.js +19 -0
- package/dist/shared/components/contextConversationWidget/PendingAttachmentsBar.js +28 -0
- package/dist/shared/components/contextConversationWidget/ReplyBanner.js +32 -0
- package/dist/shared/components/contextConversationWidget/WidgetHeader.js +70 -0
- package/dist/shared/components/contextConversationWidget/queries.js +197 -0
- package/dist/shared/components/contextConversationWidget/types.js +10 -0
- package/dist/shared/components/contextConversationWidget/useAttachmentUpload.js +57 -0
- package/dist/shared/components/contextConversationWidget/useConversationSubscriptions.js +26 -0
- package/dist/shared/components/contextConversationWidget/useMessageActions.js +34 -0
- package/dist/shared/components/contextConversationWidget/useSendMessage.js +45 -0
- package/dist/shared/components/contextConversationWidget/useWidgetMessages.js +44 -0
- package/dist/shared/components/contextConversationWidget/utils.js +56 -0
- package/dist/shared/feature-flags/FeatureFlagProvider.js +21 -21
- package/dist/shared/geography/GeographyProvider.js +20 -20
- package/dist/shared/graphql/GatewayContext.js +1 -1
- package/dist/shared/motion/MotionList.js +1 -1
- package/dist/shared/pages/AiPage.js +3 -3
- package/dist/shared/pages/SearchPage.js +293 -1071
- package/dist/shared/pages/searchPage/ActiveFilterChips.js +176 -0
- package/dist/shared/pages/searchPage/FiltersPanel.js +329 -0
- package/dist/shared/pages/searchPage/ResultsList.js +119 -0
- package/dist/shared/pages/searchPage/ResultsStatus.js +32 -0
- package/dist/shared/pages/searchPage/SearchInput.js +31 -0
- package/dist/shared/pages/searchPage/SearchPagination.js +37 -0
- package/dist/shared/pages/searchPage/SearchToolbar.js +58 -0
- package/dist/shared/pages/searchPage/constants.js +155 -0
- package/dist/shared/pages/searchPage/utils.js +24 -0
- package/dist/shared/plugins/PluginRuntimeProvider.js +1 -1
- package/dist/shared/providers/shell/ActiveContextProvider.js +12 -12
- package/dist/shared/providers/shell/AppShellContext.js +1 -1
- package/dist/shared/providers/shell/AuthProvider.js +130 -384
- package/dist/shared/providers/shell/AuthTokenProvider.js +6 -6
- package/dist/shared/providers/shell/ContextManagerProvider.js +1 -1
- package/dist/shared/providers/shell/FeatureFlagsProvider.js +5 -5
- package/dist/shared/providers/shell/GlobalUiProvider.js +17 -17
- package/dist/shared/providers/shell/I18nProvider.js +15 -15
- package/dist/shared/providers/shell/PageConversationContextProvider.js +14 -14
- package/dist/shared/providers/shell/PermissionProvider.js +16 -16
- package/dist/shared/providers/shell/ShellUiProvider.js +13 -13
- package/dist/shared/providers/shell/ThemeProvider.js +9 -9
- package/dist/shared/providers/shell/authProvider/bridgeStateSync.js +34 -0
- package/dist/shared/providers/shell/authProvider/jwt.js +13 -0
- package/dist/shared/providers/shell/authProvider/ssoRelay.js +38 -0
- package/dist/shared/providers/shell/authProvider/useAuthActions.js +170 -0
- package/dist/shared/providers/shell/authProvider/useBridgeInitialization.js +86 -0
- package/dist/shared/providers/shell/authProvider/useRemoteSLO.js +32 -0
- package/dist/shared/providers/shell/authProvider/useStorageSync.js +35 -0
- package/dist/shared/providers/shell/authProvider/useTokenExpiryTimer.js +37 -0
- package/dist/shared/tours/TourPlayer.js +1 -0
- package/dist/shared/tours/TourPlayerProvider.js +1 -1
- package/dist/shared/tours/TourTooltip.js +3 -0
- package/dist/shared/tours/TourTrigger.js +86 -259
- package/dist/shared/tours/ToursContext.js +108 -398
- package/dist/shared/tours/tourTrigger/DesktopTourDropdown.js +48 -0
- package/dist/shared/tours/tourTrigger/MobileTourSheet.js +68 -0
- package/dist/shared/tours/tourTrigger/TourListItemDesktop.js +36 -0
- package/dist/shared/tours/tourTrigger/TourListItemMobile.js +47 -0
- package/dist/shared/tours/tourTrigger/TourStatusChip.js +30 -0
- package/dist/shared/tours/tourTrigger/TourTriggerButton.js +22 -0
- package/dist/shared/tours/toursContext/errors.js +18 -0
- package/dist/shared/tours/toursContext/gql.js +152 -0
- package/dist/shared/tours/toursContext/route.js +20 -0
- package/dist/shared/tours/toursContext/session.js +19 -0
- package/dist/shared/tours/toursContext/useIdleReady.js +18 -0
- package/dist/shared/tours/toursContext/useTourMutations.js +118 -0
- package/dist/shared-events.js +3 -3
- package/dist/shared-hooks.js +1 -1
- package/dist/storage/SaveToFilesButton.js +3 -3
- package/dist/storage/SaveToFilesDialog.js +1 -1
- package/dist/tag/TagBadge.js +1 -1
- package/dist/tag/TagsWidget.js +81 -226
- package/dist/tag/tagsWidget/AddTagTrigger.js +14 -0
- package/dist/tag/tagsWidget/TagBadgeList.js +17 -0
- package/dist/tag/tagsWidget/TagSearchPopover.js +80 -0
- package/dist/tag/tagsWidget/operations.js +64 -0
- package/dist/tag/tagsWidget/useVocabResolver.js +30 -0
- package/dist/ui/card.js +44 -39
- package/dist/ui/dropdown-menu.js +82 -66
- package/dist/ui/input.js +10 -10
- package/dist/ui/label.js +13 -11
- package/dist/ui/select.js +80 -66
- package/dist/ui/table.js +61 -54
- package/dist/ui/textarea.js +9 -9
- package/dist/ui/tooltip.js +13 -11
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Fragment as e, jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
2
|
+
//#region src/chrome/contextSwitcher/EmptyState.tsx
|
|
3
|
+
var r = ({ message: r, isSearchResult: i }) => /* @__PURE__ */ t("div", {
|
|
4
|
+
className: "px-4 py-8 text-center animate-in fade-in-0 duration-200",
|
|
5
|
+
children: i ? /* @__PURE__ */ n(e, { children: [
|
|
6
|
+
/* @__PURE__ */ t("svg", {
|
|
7
|
+
className: "size-8 mx-auto mb-2 text-[var(--color-text-tertiary)]",
|
|
8
|
+
fill: "none",
|
|
9
|
+
stroke: "currentColor",
|
|
10
|
+
viewBox: "0 0 24 24",
|
|
11
|
+
children: /* @__PURE__ */ t("path", {
|
|
12
|
+
strokeLinecap: "round",
|
|
13
|
+
strokeLinejoin: "round",
|
|
14
|
+
strokeWidth: 2,
|
|
15
|
+
d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
|
|
16
|
+
})
|
|
17
|
+
}),
|
|
18
|
+
/* @__PURE__ */ t("p", {
|
|
19
|
+
className: "text-[var(--color-text-secondary)] text-sm",
|
|
20
|
+
children: "No results found"
|
|
21
|
+
}),
|
|
22
|
+
/* @__PURE__ */ t("p", {
|
|
23
|
+
className: "text-[var(--color-text-tertiary)] text-xs mt-1",
|
|
24
|
+
children: "Try a different search term"
|
|
25
|
+
})
|
|
26
|
+
] }) : /* @__PURE__ */ t("p", {
|
|
27
|
+
className: "text-[var(--color-text-secondary)] text-sm",
|
|
28
|
+
children: r
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
//#endregion
|
|
32
|
+
export { r as EmptyState };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SearchInput as e } from "./SearchInput.js";
|
|
2
|
+
import { EmptyState as t } from "./EmptyState.js";
|
|
3
|
+
import { BuildingIcon as n, CheckIcon as r } from "./icons.js";
|
|
4
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
+
//#region src/chrome/contextSwitcher/OrganizationList.tsx
|
|
6
|
+
var o = ({ searchedOrganizations: o, currentOrganizationId: s, searchQuery: c, onSearchChange: l, onSelect: u, searchInputRef: d }) => /* @__PURE__ */ a("div", {
|
|
7
|
+
className: "h-full flex flex-col",
|
|
8
|
+
children: [/* @__PURE__ */ i(e, {
|
|
9
|
+
value: c,
|
|
10
|
+
onChange: l,
|
|
11
|
+
placeholder: "Search organizations...",
|
|
12
|
+
inputRef: d
|
|
13
|
+
}), /* @__PURE__ */ i("div", {
|
|
14
|
+
className: "flex-1 overflow-y-auto py-1",
|
|
15
|
+
children: o.length > 0 ? o.map((e, t) => /* @__PURE__ */ a("button", {
|
|
16
|
+
onClick: () => u(e),
|
|
17
|
+
className: `w-full flex items-center gap-3 px-4 py-3 text-sm transition-all duration-200 ease-out animate-in fade-in-0 slide-in-from-left-2 ${e.id === s ? "bg-[var(--color-bg-accent)] text-[var(--color-text-primary)] font-medium" : "text-[var(--color-text-primary)] hover:bg-[var(--color-action-ghost-bgHover)] hover:translate-x-0.5"}`,
|
|
18
|
+
style: { animationDelay: `${t * 30}ms` },
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ i(n, { className: "size-5 text-[var(--color-text-secondary)] flex-shrink-0" }),
|
|
21
|
+
/* @__PURE__ */ i("span", {
|
|
22
|
+
className: "flex-1 text-left truncate",
|
|
23
|
+
children: e.name
|
|
24
|
+
}),
|
|
25
|
+
e.id === s && /* @__PURE__ */ i(r, { className: "size-5 text-[var(--color-action-primary-bg)] flex-shrink-0 animate-in zoom-in-50 duration-200" })
|
|
26
|
+
]
|
|
27
|
+
}, e.id)) : /* @__PURE__ */ i(t, {
|
|
28
|
+
message: "No organizations available",
|
|
29
|
+
isSearchResult: c.length > 0
|
|
30
|
+
})
|
|
31
|
+
})]
|
|
32
|
+
});
|
|
33
|
+
//#endregion
|
|
34
|
+
export { o as OrganizationList };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SearchInput as e } from "./SearchInput.js";
|
|
2
|
+
import { EmptyState as t } from "./EmptyState.js";
|
|
3
|
+
import { CheckIcon as n, FolderIcon as r } from "./icons.js";
|
|
4
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
+
//#region src/chrome/contextSwitcher/ProjectList.tsx
|
|
6
|
+
var o = ({ filteredProjects: o, searchedProjects: s, currentProjectId: c, searchQuery: l, onSearchChange: u, onSelect: d, searchInputRef: f }) => /* @__PURE__ */ a("div", {
|
|
7
|
+
className: "h-full flex flex-col",
|
|
8
|
+
children: [/* @__PURE__ */ i(e, {
|
|
9
|
+
value: l,
|
|
10
|
+
onChange: u,
|
|
11
|
+
placeholder: "Search projects...",
|
|
12
|
+
inputRef: f
|
|
13
|
+
}), /* @__PURE__ */ i("div", {
|
|
14
|
+
className: "flex-1 overflow-y-auto py-1",
|
|
15
|
+
children: o.length === 0 ? /* @__PURE__ */ i(t, { message: "No projects in this workspace" }) : s.length > 0 ? s.map((e, t) => /* @__PURE__ */ a("button", {
|
|
16
|
+
onClick: () => d(e),
|
|
17
|
+
className: `w-full flex items-center gap-3 px-4 py-3 text-sm transition-all duration-200 ease-out animate-in fade-in-0 slide-in-from-left-2 ${e.id === c ? "bg-[var(--color-bg-accent)] text-[var(--color-text-primary)] font-medium" : "text-[var(--color-text-primary)] hover:bg-[var(--color-action-ghost-bgHover)] hover:translate-x-0.5"}`,
|
|
18
|
+
style: { animationDelay: `${t * 30}ms` },
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ i(r, { className: "size-5 text-[var(--color-text-secondary)] flex-shrink-0" }),
|
|
21
|
+
/* @__PURE__ */ i("span", {
|
|
22
|
+
className: "flex-1 text-left truncate",
|
|
23
|
+
children: e.name
|
|
24
|
+
}),
|
|
25
|
+
e.id === c && /* @__PURE__ */ i(n, { className: "size-5 text-[var(--color-action-primary-bg)] flex-shrink-0 animate-in zoom-in-50 duration-200" })
|
|
26
|
+
]
|
|
27
|
+
}, e.id)) : /* @__PURE__ */ i(t, {
|
|
28
|
+
message: "No projects found",
|
|
29
|
+
isSearchResult: l.length > 0
|
|
30
|
+
})
|
|
31
|
+
})]
|
|
32
|
+
});
|
|
33
|
+
//#endregion
|
|
34
|
+
export { o as ProjectList };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
2
|
+
//#region src/chrome/contextSwitcher/SearchInput.tsx
|
|
3
|
+
var n = ({ value: n, onChange: r, placeholder: i, inputRef: a }) => /* @__PURE__ */ e("div", {
|
|
4
|
+
className: "relative px-3 py-2 border-b border-[var(--color-border-subtle)]",
|
|
5
|
+
children: /* @__PURE__ */ t("div", {
|
|
6
|
+
className: "relative",
|
|
7
|
+
children: [
|
|
8
|
+
/* @__PURE__ */ e("svg", {
|
|
9
|
+
className: "absolute left-3 top-1/2 -translate-y-1/2 size-4 text-[var(--color-text-tertiary)]",
|
|
10
|
+
fill: "none",
|
|
11
|
+
stroke: "currentColor",
|
|
12
|
+
viewBox: "0 0 24 24",
|
|
13
|
+
children: /* @__PURE__ */ e("path", {
|
|
14
|
+
strokeLinecap: "round",
|
|
15
|
+
strokeLinejoin: "round",
|
|
16
|
+
strokeWidth: 2,
|
|
17
|
+
d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
|
|
18
|
+
})
|
|
19
|
+
}),
|
|
20
|
+
/* @__PURE__ */ e("input", {
|
|
21
|
+
ref: a,
|
|
22
|
+
type: "text",
|
|
23
|
+
value: n,
|
|
24
|
+
onChange: (e) => r(e.target.value),
|
|
25
|
+
placeholder: i,
|
|
26
|
+
className: "w-full pl-9 pr-8 py-2 text-sm bg-[var(--color-bg-surface)] border border-[var(--color-border-subtle)] rounded-md focus:outline-none focus:ring-2 focus:ring-[var(--color-action-primary-border)] focus:border-transparent text-[var(--color-text-primary)] placeholder:text-[var(--color-text-tertiary)] transition-all duration-200"
|
|
27
|
+
}),
|
|
28
|
+
n && /* @__PURE__ */ e("button", {
|
|
29
|
+
type: "button",
|
|
30
|
+
onClick: () => r(""),
|
|
31
|
+
className: "absolute right-2 top-1/2 -translate-y-1/2 p-1 rounded-md hover:bg-[var(--color-action-ghost-bgHover)] text-[var(--color-text-tertiary)] hover:text-[var(--color-text-primary)] transition-all duration-150 ease-out",
|
|
32
|
+
"aria-label": "Clear search",
|
|
33
|
+
children: /* @__PURE__ */ e("svg", {
|
|
34
|
+
className: "size-4",
|
|
35
|
+
fill: "none",
|
|
36
|
+
stroke: "currentColor",
|
|
37
|
+
viewBox: "0 0 24 24",
|
|
38
|
+
children: /* @__PURE__ */ e("path", {
|
|
39
|
+
strokeLinecap: "round",
|
|
40
|
+
strokeLinejoin: "round",
|
|
41
|
+
strokeWidth: 2,
|
|
42
|
+
d: "M6 18L18 6M6 6l12 12"
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
]
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
//#endregion
|
|
50
|
+
export { n as SearchInput };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
//#region src/chrome/contextSwitcher/TabButton.tsx
|
|
3
|
+
var t = ({ label: t, isActive: n, onClick: r }) => /* @__PURE__ */ e("button", {
|
|
4
|
+
onClick: r,
|
|
5
|
+
className: `flex-1 px-3 py-2.5 text-[13px] font-medium whitespace-nowrap text-center transition-all duration-200 ease-out ${n ? "text-[var(--color-text-link)] border-b-2 border-[var(--color-action-primary-bg)] bg-[var(--color-bg-accent)]" : "text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] hover:bg-[var(--color-action-ghost-bgHover)] border-b-2 border-transparent"}`,
|
|
6
|
+
children: t
|
|
7
|
+
});
|
|
8
|
+
//#endregion
|
|
9
|
+
export { t as TabButton };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { BuildingIcon as e, ChevronDownIcon as t } from "./icons.js";
|
|
2
|
+
import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
3
|
+
//#region src/chrome/contextSwitcher/TriggerButton.tsx
|
|
4
|
+
var a = ({ isOpen: a, compact: o, currentOrg: s, currentWorkspace: c, currentProject: l, onToggle: u }) => /* @__PURE__ */ r("button", {
|
|
5
|
+
onClick: u,
|
|
6
|
+
className: `flex items-center gap-2 px-3 py-2 rounded-md hover:bg-[var(--color-action-ghost-bgHover)] transition-all duration-200 ease-out ${a ? "bg-[var(--color-action-ghost-bgHover)]" : ""}`,
|
|
7
|
+
"aria-label": "Switch context",
|
|
8
|
+
"aria-expanded": a,
|
|
9
|
+
children: o ? /* @__PURE__ */ r(e, { className: "size-5 text-[var(--color-text-primary)]" }) : /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ i("div", {
|
|
10
|
+
className: "flex items-center gap-1.5",
|
|
11
|
+
children: [/* @__PURE__ */ r(e, { className: "size-4 text-[var(--color-text-secondary)]" }), /* @__PURE__ */ i("div", {
|
|
12
|
+
className: "flex items-center gap-1 text-sm",
|
|
13
|
+
children: [
|
|
14
|
+
/* @__PURE__ */ r("span", {
|
|
15
|
+
className: "text-[var(--color-text-primary)] font-medium",
|
|
16
|
+
children: s?.name || "Select Org"
|
|
17
|
+
}),
|
|
18
|
+
/* @__PURE__ */ r("span", {
|
|
19
|
+
className: "text-[var(--color-text-tertiary)]",
|
|
20
|
+
children: "/"
|
|
21
|
+
}),
|
|
22
|
+
/* @__PURE__ */ r("span", {
|
|
23
|
+
className: "text-[var(--color-text-secondary)]",
|
|
24
|
+
children: c?.name || "Workspace"
|
|
25
|
+
}),
|
|
26
|
+
l && /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ r("span", {
|
|
27
|
+
className: "text-[var(--color-text-tertiary)]",
|
|
28
|
+
children: "/"
|
|
29
|
+
}), /* @__PURE__ */ r("span", {
|
|
30
|
+
className: "text-[var(--color-text-secondary)]",
|
|
31
|
+
children: l.name
|
|
32
|
+
})] })
|
|
33
|
+
]
|
|
34
|
+
})]
|
|
35
|
+
}), /* @__PURE__ */ r(t, { className: `w-4 h-4 text-[var(--color-text-secondary)] transition-transform duration-200 ${a ? "rotate-180" : ""}` })] })
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
export { a as TriggerButton };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SearchInput as e } from "./SearchInput.js";
|
|
2
|
+
import { EmptyState as t } from "./EmptyState.js";
|
|
3
|
+
import { BriefcaseIcon as n, CheckIcon as r } from "./icons.js";
|
|
4
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
+
//#region src/chrome/contextSwitcher/WorkspaceList.tsx
|
|
6
|
+
var o = ({ filteredWorkspaces: o, searchedWorkspaces: s, currentWorkspaceId: c, searchQuery: l, onSearchChange: u, onSelect: d, searchInputRef: f }) => /* @__PURE__ */ a("div", {
|
|
7
|
+
className: "h-full flex flex-col",
|
|
8
|
+
children: [/* @__PURE__ */ i(e, {
|
|
9
|
+
value: l,
|
|
10
|
+
onChange: u,
|
|
11
|
+
placeholder: "Search workspaces...",
|
|
12
|
+
inputRef: f
|
|
13
|
+
}), /* @__PURE__ */ i("div", {
|
|
14
|
+
className: "flex-1 overflow-y-auto py-1",
|
|
15
|
+
children: o.length === 0 ? /* @__PURE__ */ i(t, { message: "No workspaces in this organization" }) : s.length > 0 ? s.map((e, t) => /* @__PURE__ */ a("button", {
|
|
16
|
+
onClick: () => d(e),
|
|
17
|
+
className: `w-full flex items-center gap-3 px-4 py-3 text-sm transition-all duration-200 ease-out animate-in fade-in-0 slide-in-from-left-2 ${e.id === c ? "bg-[var(--color-bg-accent)] text-[var(--color-text-primary)] font-medium" : "text-[var(--color-text-primary)] hover:bg-[var(--color-action-ghost-bgHover)] hover:translate-x-0.5"}`,
|
|
18
|
+
style: { animationDelay: `${t * 30}ms` },
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ i(n, { className: "size-5 text-[var(--color-text-secondary)] flex-shrink-0" }),
|
|
21
|
+
/* @__PURE__ */ i("span", {
|
|
22
|
+
className: "flex-1 text-left truncate",
|
|
23
|
+
children: e.name
|
|
24
|
+
}),
|
|
25
|
+
e.id === c && /* @__PURE__ */ i(r, { className: "size-5 text-[var(--color-action-primary-bg)] flex-shrink-0 animate-in zoom-in-50 duration-200" })
|
|
26
|
+
]
|
|
27
|
+
}, e.id)) : /* @__PURE__ */ i(t, {
|
|
28
|
+
message: "No workspaces found",
|
|
29
|
+
isSearchResult: l.length > 0
|
|
30
|
+
})
|
|
31
|
+
})]
|
|
32
|
+
});
|
|
33
|
+
//#endregion
|
|
34
|
+
export { o as WorkspaceList };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
//#region src/chrome/contextSwitcher/icons.tsx
|
|
3
|
+
var t = ({ className: t }) => /* @__PURE__ */ e("svg", {
|
|
4
|
+
className: t,
|
|
5
|
+
fill: "none",
|
|
6
|
+
stroke: "currentColor",
|
|
7
|
+
viewBox: "0 0 24 24",
|
|
8
|
+
children: /* @__PURE__ */ e("path", {
|
|
9
|
+
strokeLinecap: "round",
|
|
10
|
+
strokeLinejoin: "round",
|
|
11
|
+
strokeWidth: 2,
|
|
12
|
+
d: "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"
|
|
13
|
+
})
|
|
14
|
+
}), n = ({ className: t }) => /* @__PURE__ */ e("svg", {
|
|
15
|
+
className: t,
|
|
16
|
+
fill: "none",
|
|
17
|
+
stroke: "currentColor",
|
|
18
|
+
viewBox: "0 0 24 24",
|
|
19
|
+
children: /* @__PURE__ */ e("path", {
|
|
20
|
+
strokeLinecap: "round",
|
|
21
|
+
strokeLinejoin: "round",
|
|
22
|
+
strokeWidth: 2,
|
|
23
|
+
d: "M21 13.255A23.931 23.931 0 0112 15c-3.183 0-6.22-.62-9-1.745M16 6V4a2 2 0 00-2-2h-4a2 2 0 00-2 2v2m4 6h.01M5 20h14a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
|
|
24
|
+
})
|
|
25
|
+
}), r = ({ className: t }) => /* @__PURE__ */ e("svg", {
|
|
26
|
+
className: t,
|
|
27
|
+
fill: "none",
|
|
28
|
+
stroke: "currentColor",
|
|
29
|
+
viewBox: "0 0 24 24",
|
|
30
|
+
children: /* @__PURE__ */ e("path", {
|
|
31
|
+
strokeLinecap: "round",
|
|
32
|
+
strokeLinejoin: "round",
|
|
33
|
+
strokeWidth: 2,
|
|
34
|
+
d: "M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"
|
|
35
|
+
})
|
|
36
|
+
}), i = ({ className: t }) => /* @__PURE__ */ e("svg", {
|
|
37
|
+
className: t,
|
|
38
|
+
fill: "currentColor",
|
|
39
|
+
viewBox: "0 0 20 20",
|
|
40
|
+
children: /* @__PURE__ */ e("path", {
|
|
41
|
+
fillRule: "evenodd",
|
|
42
|
+
d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",
|
|
43
|
+
clipRule: "evenodd"
|
|
44
|
+
})
|
|
45
|
+
}), a = ({ className: t }) => /* @__PURE__ */ e("svg", {
|
|
46
|
+
className: t,
|
|
47
|
+
fill: "none",
|
|
48
|
+
stroke: "currentColor",
|
|
49
|
+
viewBox: "0 0 24 24",
|
|
50
|
+
children: /* @__PURE__ */ e("path", {
|
|
51
|
+
strokeLinecap: "round",
|
|
52
|
+
strokeLinejoin: "round",
|
|
53
|
+
strokeWidth: 2,
|
|
54
|
+
d: "M19 9l-7 7-7-7"
|
|
55
|
+
})
|
|
56
|
+
});
|
|
57
|
+
//#endregion
|
|
58
|
+
export { n as BriefcaseIcon, t as BuildingIcon, i as CheckIcon, a as ChevronDownIcon, r as FolderIcon };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useEffect as e, useState as t } from "react";
|
|
2
|
+
//#region src/chrome/contextSwitcher/useIsMobile.ts
|
|
3
|
+
function n(n = 640) {
|
|
4
|
+
let [r, i] = t(!1);
|
|
5
|
+
return e(() => {
|
|
6
|
+
let e = () => i(window.innerWidth < n);
|
|
7
|
+
return e(), window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
|
|
8
|
+
}, [n]), r;
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { n as useIsMobile };
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
2
|
+
//#region src/chrome/globalSearch/AdvancedFiltersPanel.tsx
|
|
3
|
+
function n({ filters: n }) {
|
|
4
|
+
return /* @__PURE__ */ t("div", {
|
|
5
|
+
className: "px-3 py-2 border-b space-y-2 bg-muted/30 max-h-64 overflow-y-auto",
|
|
6
|
+
children: [
|
|
7
|
+
/* @__PURE__ */ t("div", {
|
|
8
|
+
className: "flex items-center gap-2",
|
|
9
|
+
children: [/* @__PURE__ */ e("label", {
|
|
10
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
11
|
+
children: "Sort by"
|
|
12
|
+
}), /* @__PURE__ */ t("select", {
|
|
13
|
+
value: n.sortBy,
|
|
14
|
+
onChange: (e) => n.setSortBy(e.target.value),
|
|
15
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none",
|
|
16
|
+
children: [
|
|
17
|
+
/* @__PURE__ */ e("option", {
|
|
18
|
+
value: "SCORE_DESC",
|
|
19
|
+
children: "Relevance"
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ e("option", {
|
|
22
|
+
value: "CREATED_DESC",
|
|
23
|
+
children: "Newest first"
|
|
24
|
+
}),
|
|
25
|
+
/* @__PURE__ */ e("option", {
|
|
26
|
+
value: "CREATED_ASC",
|
|
27
|
+
children: "Oldest first"
|
|
28
|
+
}),
|
|
29
|
+
/* @__PURE__ */ e("option", {
|
|
30
|
+
value: "UPDATED_DESC",
|
|
31
|
+
children: "Recently updated"
|
|
32
|
+
}),
|
|
33
|
+
/* @__PURE__ */ e("option", {
|
|
34
|
+
value: "UPDATED_ASC",
|
|
35
|
+
children: "Least recently updated"
|
|
36
|
+
}),
|
|
37
|
+
/* @__PURE__ */ e("option", {
|
|
38
|
+
value: "TITLE_ASC",
|
|
39
|
+
children: "Title A-Z"
|
|
40
|
+
}),
|
|
41
|
+
/* @__PURE__ */ e("option", {
|
|
42
|
+
value: "TITLE_DESC",
|
|
43
|
+
children: "Title Z-A"
|
|
44
|
+
})
|
|
45
|
+
]
|
|
46
|
+
})]
|
|
47
|
+
}),
|
|
48
|
+
/* @__PURE__ */ t("div", {
|
|
49
|
+
className: "flex items-center gap-2",
|
|
50
|
+
children: [/* @__PURE__ */ e("label", {
|
|
51
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
52
|
+
children: "Products"
|
|
53
|
+
}), /* @__PURE__ */ e("input", {
|
|
54
|
+
"aria-label": "Product sources filter",
|
|
55
|
+
type: "text",
|
|
56
|
+
placeholder: "vibecontrols, wspace-tags",
|
|
57
|
+
value: n.productSourcesInput,
|
|
58
|
+
onChange: (e) => n.setProductSourcesInput(e.target.value),
|
|
59
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none placeholder:text-muted-foreground"
|
|
60
|
+
})]
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ t("div", {
|
|
63
|
+
className: "flex items-center gap-2",
|
|
64
|
+
children: [/* @__PURE__ */ e("label", {
|
|
65
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
66
|
+
children: "Project"
|
|
67
|
+
}), /* @__PURE__ */ e("input", {
|
|
68
|
+
"aria-label": "Project ID filter",
|
|
69
|
+
type: "text",
|
|
70
|
+
placeholder: "Project ID",
|
|
71
|
+
value: n.projectId,
|
|
72
|
+
onChange: (e) => n.setProjectId(e.target.value),
|
|
73
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none placeholder:text-muted-foreground"
|
|
74
|
+
})]
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ t("div", {
|
|
77
|
+
className: "flex items-center gap-2",
|
|
78
|
+
children: [/* @__PURE__ */ e("label", {
|
|
79
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
80
|
+
children: "Created by"
|
|
81
|
+
}), /* @__PURE__ */ e("input", {
|
|
82
|
+
type: "text",
|
|
83
|
+
placeholder: "Actor ID",
|
|
84
|
+
value: n.createdBy,
|
|
85
|
+
onChange: (e) => n.setCreatedBy(e.target.value),
|
|
86
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none placeholder:text-muted-foreground"
|
|
87
|
+
})]
|
|
88
|
+
}),
|
|
89
|
+
/* @__PURE__ */ t("div", {
|
|
90
|
+
className: "flex items-center gap-2",
|
|
91
|
+
children: [/* @__PURE__ */ e("label", {
|
|
92
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
93
|
+
children: "Updated by"
|
|
94
|
+
}), /* @__PURE__ */ e("input", {
|
|
95
|
+
"aria-label": "Updated by filter",
|
|
96
|
+
type: "text",
|
|
97
|
+
placeholder: "Actor ID",
|
|
98
|
+
value: n.updatedBy,
|
|
99
|
+
onChange: (e) => n.setUpdatedBy(e.target.value),
|
|
100
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none placeholder:text-muted-foreground"
|
|
101
|
+
})]
|
|
102
|
+
}),
|
|
103
|
+
/* @__PURE__ */ t("div", {
|
|
104
|
+
className: "flex items-center gap-2",
|
|
105
|
+
children: [/* @__PURE__ */ e("label", {
|
|
106
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
107
|
+
children: "Date from"
|
|
108
|
+
}), /* @__PURE__ */ e("input", {
|
|
109
|
+
type: "date",
|
|
110
|
+
value: n.dateFrom,
|
|
111
|
+
onChange: (e) => n.setDateFrom(e.target.value),
|
|
112
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none"
|
|
113
|
+
})]
|
|
114
|
+
}),
|
|
115
|
+
/* @__PURE__ */ t("div", {
|
|
116
|
+
className: "flex items-center gap-2",
|
|
117
|
+
children: [/* @__PURE__ */ e("label", {
|
|
118
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
119
|
+
children: "Date to"
|
|
120
|
+
}), /* @__PURE__ */ e("input", {
|
|
121
|
+
type: "date",
|
|
122
|
+
value: n.dateTo,
|
|
123
|
+
onChange: (e) => n.setDateTo(e.target.value),
|
|
124
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none"
|
|
125
|
+
})]
|
|
126
|
+
}),
|
|
127
|
+
/* @__PURE__ */ t("div", {
|
|
128
|
+
className: "flex items-center gap-2",
|
|
129
|
+
children: [/* @__PURE__ */ e("label", {
|
|
130
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
131
|
+
children: "Updated from"
|
|
132
|
+
}), /* @__PURE__ */ e("input", {
|
|
133
|
+
"aria-label": "Updated from date",
|
|
134
|
+
type: "date",
|
|
135
|
+
value: n.updatedDateFrom,
|
|
136
|
+
onChange: (e) => n.setUpdatedDateFrom(e.target.value),
|
|
137
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none"
|
|
138
|
+
})]
|
|
139
|
+
}),
|
|
140
|
+
/* @__PURE__ */ t("div", {
|
|
141
|
+
className: "flex items-center gap-2",
|
|
142
|
+
children: [/* @__PURE__ */ e("label", {
|
|
143
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
144
|
+
children: "Updated to"
|
|
145
|
+
}), /* @__PURE__ */ e("input", {
|
|
146
|
+
"aria-label": "Updated to date",
|
|
147
|
+
type: "date",
|
|
148
|
+
value: n.updatedDateTo,
|
|
149
|
+
onChange: (e) => n.setUpdatedDateTo(e.target.value),
|
|
150
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none"
|
|
151
|
+
})]
|
|
152
|
+
}),
|
|
153
|
+
/* @__PURE__ */ t("div", {
|
|
154
|
+
className: "flex items-center gap-2",
|
|
155
|
+
children: [/* @__PURE__ */ e("label", {
|
|
156
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
157
|
+
children: "Tag keys"
|
|
158
|
+
}), /* @__PURE__ */ e("input", {
|
|
159
|
+
"aria-label": "Tag keys filter",
|
|
160
|
+
type: "text",
|
|
161
|
+
placeholder: "search, team/platform",
|
|
162
|
+
value: n.tagKeysInput,
|
|
163
|
+
onChange: (e) => n.setTagKeysInput(e.target.value),
|
|
164
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none placeholder:text-muted-foreground"
|
|
165
|
+
})]
|
|
166
|
+
}),
|
|
167
|
+
/* @__PURE__ */ t("div", {
|
|
168
|
+
className: "flex items-center gap-2",
|
|
169
|
+
children: [/* @__PURE__ */ e("label", {
|
|
170
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
171
|
+
children: "Tag IDs"
|
|
172
|
+
}), /* @__PURE__ */ e("input", {
|
|
173
|
+
"aria-label": "Tag IDs filter",
|
|
174
|
+
type: "text",
|
|
175
|
+
placeholder: "Comma-separated IDs",
|
|
176
|
+
value: n.tagIdsInput,
|
|
177
|
+
onChange: (e) => n.setTagIdsInput(e.target.value),
|
|
178
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none placeholder:text-muted-foreground"
|
|
179
|
+
})]
|
|
180
|
+
}),
|
|
181
|
+
/* @__PURE__ */ t("div", {
|
|
182
|
+
className: "flex items-center gap-2",
|
|
183
|
+
children: [/* @__PURE__ */ e("label", {
|
|
184
|
+
className: "text-[10px] font-medium text-muted-foreground w-16 flex-shrink-0",
|
|
185
|
+
children: "Tag paths"
|
|
186
|
+
}), /* @__PURE__ */ e("input", {
|
|
187
|
+
"aria-label": "Tag hierarchy filter",
|
|
188
|
+
type: "text",
|
|
189
|
+
placeholder: "team/engineering",
|
|
190
|
+
value: n.tagPathsInput,
|
|
191
|
+
onChange: (e) => n.setTagPathsInput(e.target.value),
|
|
192
|
+
className: "flex-1 h-7 text-xs rounded border border-border bg-background px-2 outline-none placeholder:text-muted-foreground"
|
|
193
|
+
})]
|
|
194
|
+
}),
|
|
195
|
+
/* @__PURE__ */ t("div", {
|
|
196
|
+
className: "grid grid-cols-[1fr_auto_1fr] gap-2 items-center",
|
|
197
|
+
children: [
|
|
198
|
+
/* @__PURE__ */ e("input", {
|
|
199
|
+
"aria-label": "Metadata key filter",
|
|
200
|
+
type: "text",
|
|
201
|
+
placeholder: "metadata.path",
|
|
202
|
+
value: n.metadataKey,
|
|
203
|
+
onChange: (e) => n.setMetadataKey(e.target.value),
|
|
204
|
+
className: "h-7 text-xs rounded border border-border bg-background px-2 outline-none placeholder:text-muted-foreground"
|
|
205
|
+
}),
|
|
206
|
+
/* @__PURE__ */ t("select", {
|
|
207
|
+
"aria-label": "Metadata operator filter",
|
|
208
|
+
value: n.metadataOperator,
|
|
209
|
+
onChange: (e) => n.setMetadataOperator(e.target.value),
|
|
210
|
+
className: "h-7 text-xs rounded border border-border bg-background px-2 outline-none",
|
|
211
|
+
children: [
|
|
212
|
+
/* @__PURE__ */ e("option", {
|
|
213
|
+
value: "EQUALS",
|
|
214
|
+
children: "="
|
|
215
|
+
}),
|
|
216
|
+
/* @__PURE__ */ e("option", {
|
|
217
|
+
value: "NOT_EQUALS",
|
|
218
|
+
children: "≠"
|
|
219
|
+
}),
|
|
220
|
+
/* @__PURE__ */ e("option", {
|
|
221
|
+
value: "CONTAINS",
|
|
222
|
+
children: "contains"
|
|
223
|
+
}),
|
|
224
|
+
/* @__PURE__ */ e("option", {
|
|
225
|
+
value: "STARTS_WITH",
|
|
226
|
+
children: "starts"
|
|
227
|
+
})
|
|
228
|
+
]
|
|
229
|
+
}),
|
|
230
|
+
/* @__PURE__ */ e("input", {
|
|
231
|
+
"aria-label": "Metadata value filter",
|
|
232
|
+
type: "text",
|
|
233
|
+
placeholder: "Value",
|
|
234
|
+
value: n.metadataValue,
|
|
235
|
+
onChange: (e) => n.setMetadataValue(e.target.value),
|
|
236
|
+
className: "h-7 text-xs rounded border border-border bg-background px-2 outline-none placeholder:text-muted-foreground"
|
|
237
|
+
})
|
|
238
|
+
]
|
|
239
|
+
}),
|
|
240
|
+
/* @__PURE__ */ e("div", {
|
|
241
|
+
className: "flex justify-end",
|
|
242
|
+
children: /* @__PURE__ */ e("button", {
|
|
243
|
+
type: "button",
|
|
244
|
+
onClick: n.reset,
|
|
245
|
+
className: "text-[10px] text-muted-foreground hover:text-foreground transition-colors",
|
|
246
|
+
children: "Clear filters"
|
|
247
|
+
})
|
|
248
|
+
})
|
|
249
|
+
]
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
//#endregion
|
|
253
|
+
export { n as AdvancedFiltersPanel };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import "../../utils/index.js";
|
|
3
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
4
|
+
//#region src/chrome/globalSearch/CategoryTabs.tsx
|
|
5
|
+
function r({ categories: r, selectedCategory: i, onSelect: a }) {
|
|
6
|
+
return r.length === 0 ? null : /* @__PURE__ */ n("div", {
|
|
7
|
+
className: "flex items-center gap-1 p-2 border-b overflow-x-auto scrollbar-hide scroll-smooth snap-x snap-mandatory",
|
|
8
|
+
children: [/* @__PURE__ */ t("button", {
|
|
9
|
+
type: "button",
|
|
10
|
+
onClick: () => a(void 0),
|
|
11
|
+
className: e("px-3 py-1.5 text-xs rounded-md transition-colors whitespace-nowrap flex-shrink-0 snap-start", i === void 0 ? "bg-primary text-primary-foreground" : "bg-muted hover:bg-muted/80"),
|
|
12
|
+
children: "All"
|
|
13
|
+
}), r.map((r) => {
|
|
14
|
+
let o = r.icon;
|
|
15
|
+
return /* @__PURE__ */ n("button", {
|
|
16
|
+
type: "button",
|
|
17
|
+
onClick: () => a(r.name),
|
|
18
|
+
className: e("px-3 py-1.5 text-xs rounded-md transition-colors whitespace-nowrap flex-shrink-0 flex items-center gap-1.5 snap-start", i === r.name ? "bg-primary text-primary-foreground" : "bg-muted hover:bg-muted/80"),
|
|
19
|
+
children: [/* @__PURE__ */ t(o, { className: "size-3.5" }), /* @__PURE__ */ t("span", {
|
|
20
|
+
className: "hidden xs:inline",
|
|
21
|
+
children: r.label
|
|
22
|
+
})]
|
|
23
|
+
}, r.name);
|
|
24
|
+
})]
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { r as CategoryTabs };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Clock as e, Loader2 as t } from "lucide-react";
|
|
2
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
3
|
+
//#region src/chrome/globalSearch/ResultsList.tsx
|
|
4
|
+
function i({ loading: i, error: a, query: o, results: s, groupedResults: c, recentSearches: l, onRecentSelect: u, onResultSelect: d }) {
|
|
5
|
+
return /* @__PURE__ */ r("div", {
|
|
6
|
+
className: "max-h-[60dvh] overflow-y-auto p-2",
|
|
7
|
+
children: [
|
|
8
|
+
i && /* @__PURE__ */ n("div", {
|
|
9
|
+
className: "flex items-center justify-center py-6",
|
|
10
|
+
children: /* @__PURE__ */ n(t, { className: "size-4 animate-spin" })
|
|
11
|
+
}),
|
|
12
|
+
a && /* @__PURE__ */ n("div", {
|
|
13
|
+
className: "py-6 text-center text-sm text-destructive",
|
|
14
|
+
children: a
|
|
15
|
+
}),
|
|
16
|
+
!i && !a && !o && l.length > 0 && /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("div", {
|
|
17
|
+
className: "px-2 py-1.5 text-xs font-medium text-muted-foreground",
|
|
18
|
+
children: "Recent Searches"
|
|
19
|
+
}), l.map((t, i) => /* @__PURE__ */ r("button", {
|
|
20
|
+
type: "button",
|
|
21
|
+
onClick: () => u(t),
|
|
22
|
+
className: "w-full flex items-center gap-2 px-2 py-2 text-sm rounded-md hover:bg-accent transition-colors text-left",
|
|
23
|
+
children: [/* @__PURE__ */ n(e, { className: "size-4 opacity-50" }), t]
|
|
24
|
+
}, i))] }),
|
|
25
|
+
!i && !a && o && s.length === 0 && /* @__PURE__ */ r("div", {
|
|
26
|
+
className: "py-6 text-center text-sm text-muted-foreground",
|
|
27
|
+
children: [
|
|
28
|
+
"No results found for \"",
|
|
29
|
+
o,
|
|
30
|
+
"\""
|
|
31
|
+
]
|
|
32
|
+
}),
|
|
33
|
+
!i && !a && Object.entries(c).map(([e, t]) => /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("div", {
|
|
34
|
+
className: "px-2 py-1.5 text-xs font-medium text-muted-foreground",
|
|
35
|
+
children: e
|
|
36
|
+
}), t.map((e) => {
|
|
37
|
+
let t = e.icon;
|
|
38
|
+
return /* @__PURE__ */ r("button", {
|
|
39
|
+
type: "button",
|
|
40
|
+
onClick: () => d(e),
|
|
41
|
+
className: "w-full flex items-start gap-2 px-2 py-2 text-sm rounded-md hover:bg-accent transition-colors text-left",
|
|
42
|
+
children: [t && /* @__PURE__ */ n(t, { className: "size-4 mt-0.5 flex-shrink-0" }), /* @__PURE__ */ r("div", {
|
|
43
|
+
className: "flex-1 min-w-0",
|
|
44
|
+
children: [/* @__PURE__ */ n("div", {
|
|
45
|
+
className: "font-medium truncate",
|
|
46
|
+
children: e.title
|
|
47
|
+
}), e.description && /* @__PURE__ */ n("div", {
|
|
48
|
+
className: "text-xs text-muted-foreground truncate",
|
|
49
|
+
children: e.description
|
|
50
|
+
})]
|
|
51
|
+
})]
|
|
52
|
+
}, e.id);
|
|
53
|
+
})] }, e))
|
|
54
|
+
]
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//#endregion
|
|
58
|
+
export { i as ResultsList };
|