@burdenoff/fe-libs 2026.1018.1 → 2026.1019.1
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/chrome/AccountSwitcher.js +90 -89
- package/dist/chrome/Breadcrumbs.js +1 -1
- package/dist/chrome/CommandPalette.js +91 -90
- package/dist/chrome/Footer.js +31 -8
- package/dist/chrome/GlobalSearch.js +78 -77
- package/dist/chrome/HeaderBar.js +1 -1
- package/dist/chrome/HeaderThemeSwitcher.js +48 -47
- package/dist/chrome/LanguagePickerSheet.js +23 -22
- package/dist/chrome/NavCustomizeDialog.d.ts +0 -14
- package/dist/chrome/NavCustomizeDialog.js +114 -122
- package/dist/chrome/PanelTabs.js +45 -41
- package/dist/chrome/PersonaSurfaceControls.d.ts +0 -17
- package/dist/chrome/PersonaSurfaceControls.js +115 -118
- package/dist/chrome/PluginSettingsPage.js +29 -28
- package/dist/chrome/PluginWidgetGrid.js +19 -18
- package/dist/chrome/ProductPickerSheet.js +44 -47
- package/dist/chrome/ProductSwitcher.js +2 -6
- package/dist/chrome/ProfileSwitcher.js +6 -10
- package/dist/chrome/ShortcutHelpDialog.js +60 -65
- package/dist/chrome/SideNavigation.js +2 -2
- package/dist/chrome/Sidebar.js +44 -43
- package/dist/chrome/ThemePreferences.js +289 -267
- package/dist/chrome/contextSwitcher/EmptyState.js +31 -27
- package/dist/chrome/contextSwitcher/OrganizationList.js +40 -30
- package/dist/chrome/contextSwitcher/ProjectList.js +48 -44
- package/dist/chrome/contextSwitcher/SearchInput.js +44 -40
- package/dist/chrome/contextSwitcher/TriggerButton.js +2 -2
- package/dist/chrome/contextSwitcher/WorkspaceList.js +36 -32
- package/dist/chrome/globalSearch/AdvancedFiltersPanel.js +128 -126
- package/dist/chrome/globalSearch/ResultsList.js +25 -27
- package/dist/chrome/globalSearch/SearchInput.js +16 -14
- package/dist/chrome/notificationCenter/NotificationCardItem.js +58 -47
- package/dist/chrome/notificationCenter/NotificationFilters.js +76 -62
- package/dist/chrome/notificationCenter/NotificationFooter.js +21 -21
- package/dist/chrome/notificationCenter/NotificationHeader.js +67 -63
- package/dist/chrome/notificationCenter/NotificationList.js +75 -71
- package/dist/chrome/notificationCenter/NotificationPanel.js +37 -33
- package/dist/chrome/notificationCenter/PushOptInToggle.js +33 -32
- package/dist/chrome/notificationCenter/constants.d.ts +6 -1
- package/dist/chrome/notificationCenter/constants.js +12 -11
- package/dist/chrome/useThemeOptionLabels.d.ts +33 -0
- package/dist/chrome/useThemeOptionLabels.js +39 -0
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.d.ts +6 -6
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.js +86 -85
- package/dist/shared/assistant/ui/AssistantMessageItem.js +101 -96
- package/dist/shared/assistant/ui/WorkflowAssistantPanel.js +152 -140
- package/dist/shared/events/sinks/RybbitSink.js +2 -2
- package/dist/shared/providers/shell/interpolateShellLabel.d.ts +3 -0
- package/dist/shared/providers/shell/interpolateShellLabel.js +11 -0
- package/dist/shared/providers/shell/useAssistantShellLabels.d.ts +45 -0
- package/dist/shared/providers/shell/useAssistantShellLabels.js +54 -0
- package/dist/shared/tours/TourPlayer.js +33 -32
- package/dist/shared/tours/TourTooltip.js +108 -109
- package/dist/shared/tours/tourTrigger/MobileTourSheet.js +98 -85
- package/dist/shared/tours/tourTrigger/TourListItemDesktop.js +20 -18
- package/dist/shared/tours/tourTrigger/TourListItemMobile.js +23 -25
- package/package.json +2 -2
|
@@ -1,95 +1,108 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { useShellLabel as e } from "../../providers/shell/useShellLabel.js";
|
|
2
|
+
import { TourLoadError as t } from "./TourLoadError.js";
|
|
3
|
+
import { TourListItemMobile as n } from "./TourListItemMobile.js";
|
|
4
|
+
import { forwardRef as r } from "react";
|
|
5
|
+
import { ExternalLink as i, HelpCircle as a, Sparkles as o, X as s } from "lucide-react";
|
|
6
|
+
import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
7
|
+
import { createPortal as d } from "react-dom";
|
|
7
8
|
//#region src/shared/tours/tourTrigger/MobileTourSheet.tsx
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
return u(/* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c("div", {
|
|
9
|
+
var f = r(function({ loading: e, error: t, onRetry: n, tours: r, onClose: i, onStartTour: a, actions: o, onAction: s }, f) {
|
|
10
|
+
return d(/* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l("div", {
|
|
11
11
|
className: "fixed inset-0 bg-black/50 z-[100] animate-in fade-in duration-200",
|
|
12
|
-
onClick:
|
|
12
|
+
onClick: i
|
|
13
13
|
}), /* @__PURE__ */ l("div", {
|
|
14
|
-
ref:
|
|
14
|
+
ref: f,
|
|
15
15
|
className: "fixed inset-x-0 bottom-0 z-[101] bg-bg-surface rounded-t-2xl shadow-xl animate-in slide-in-from-bottom duration-300 max-h-[80vh] flex flex-col",
|
|
16
|
-
children:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
16
|
+
children: /* @__PURE__ */ l(p, {
|
|
17
|
+
loading: e,
|
|
18
|
+
error: t,
|
|
19
|
+
onRetry: n,
|
|
20
|
+
tours: r,
|
|
21
|
+
onClose: i,
|
|
22
|
+
onStartTour: a,
|
|
23
|
+
actions: o,
|
|
24
|
+
onAction: s
|
|
25
|
+
})
|
|
26
|
+
})] }), document.body);
|
|
27
|
+
});
|
|
28
|
+
function p({ loading: r, error: d, onRetry: f, tours: p, onClose: m, onStartTour: h, actions: g, onAction: _ }) {
|
|
29
|
+
let v = e(), y = !!(g && g.length > 0);
|
|
30
|
+
return /* @__PURE__ */ u(c, { children: [
|
|
31
|
+
/* @__PURE__ */ l("div", {
|
|
32
|
+
className: "flex justify-center pt-3 pb-2",
|
|
33
|
+
children: /* @__PURE__ */ l("div", { className: "w-10 h-1 bg-border-default rounded-full" })
|
|
34
|
+
}),
|
|
35
|
+
/* @__PURE__ */ u("div", {
|
|
36
|
+
className: "flex items-center justify-between px-4 pb-3 border-b border-border-subtle",
|
|
37
|
+
children: [/* @__PURE__ */ u("div", {
|
|
38
|
+
className: "flex items-center gap-2",
|
|
39
|
+
children: [/* @__PURE__ */ l(o, { className: "size-5 text-action-primary-bg" }), /* @__PURE__ */ l("h2", {
|
|
40
|
+
className: "text-lg font-semibold text-text-primary",
|
|
41
|
+
children: v("tours.helpTours", "Help & tours")
|
|
35
42
|
})]
|
|
36
|
-
}),
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
className: "text-
|
|
53
|
-
children:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
/* @__PURE__ */ c(r, { className: "size-4 text-text-muted" })
|
|
75
|
-
]
|
|
76
|
-
}, e.id) : /* @__PURE__ */ l("button", {
|
|
77
|
-
type: "button",
|
|
78
|
-
onClick: () => _?.(e),
|
|
79
|
-
className: "flex w-full items-center gap-3 rounded-button px-3 py-3 text-left text-sm text-text-secondary hover:bg-bg-sunken hover:text-text-primary transition-colors",
|
|
80
|
-
children: [e.icon && /* @__PURE__ */ c("span", {
|
|
43
|
+
}), /* @__PURE__ */ l("button", {
|
|
44
|
+
type: "button",
|
|
45
|
+
onClick: m,
|
|
46
|
+
className: "p-2 hover:bg-action-ghost-bg-hover rounded-full",
|
|
47
|
+
"aria-label": v("common.close", "Close"),
|
|
48
|
+
children: /* @__PURE__ */ l(s, { className: "size-5" })
|
|
49
|
+
})]
|
|
50
|
+
}),
|
|
51
|
+
/* @__PURE__ */ u("div", {
|
|
52
|
+
className: "flex-1 overflow-y-auto p-4",
|
|
53
|
+
children: [r ? /* @__PURE__ */ l("div", {
|
|
54
|
+
className: "flex items-center justify-center py-8",
|
|
55
|
+
children: /* @__PURE__ */ l("div", { className: "animate-spin rounded-full size-6 border-2 border-action-primary-bg border-t-transparent" })
|
|
56
|
+
}) : d ? /* @__PURE__ */ l(t, { onRetry: f }) : p.length > 0 ? /* @__PURE__ */ u("div", {
|
|
57
|
+
className: "space-y-3",
|
|
58
|
+
children: [/* @__PURE__ */ l("p", {
|
|
59
|
+
className: "text-sm text-text-secondary mb-4",
|
|
60
|
+
children: v("tours.orderHint", "Take a guided tour. Current-page tours are shown first.")
|
|
61
|
+
}), p.map((e) => /* @__PURE__ */ l(n, {
|
|
62
|
+
tour: e,
|
|
63
|
+
onStart: h
|
|
64
|
+
}, e.id))]
|
|
65
|
+
}) : /* @__PURE__ */ u("div", {
|
|
66
|
+
className: "text-center py-6",
|
|
67
|
+
children: [/* @__PURE__ */ l(a, { className: "size-10 mx-auto text-text-tertiary mb-2" }), /* @__PURE__ */ l("p", {
|
|
68
|
+
className: "text-text-secondary",
|
|
69
|
+
children: v("tours.noGuidedToursForThisPageYet", "No guided tours for this page yet")
|
|
70
|
+
})]
|
|
71
|
+
}), y && /* @__PURE__ */ l("div", {
|
|
72
|
+
className: "mt-4 border-t border-border-subtle pt-3 space-y-1",
|
|
73
|
+
children: g.map((e) => e.href ? /* @__PURE__ */ u("a", {
|
|
74
|
+
href: e.href,
|
|
75
|
+
target: "_blank",
|
|
76
|
+
rel: "noreferrer",
|
|
77
|
+
onClick: () => _?.(e),
|
|
78
|
+
className: "flex items-center gap-3 rounded-button px-3 py-3 text-sm text-text-secondary hover:bg-bg-sunken hover:text-text-primary transition-colors",
|
|
79
|
+
children: [
|
|
80
|
+
e.icon && /* @__PURE__ */ l("span", {
|
|
81
81
|
className: "flex size-5 items-center justify-center text-text-muted",
|
|
82
82
|
children: e.icon
|
|
83
|
-
}),
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ l("span", {
|
|
84
85
|
className: "flex-1 truncate",
|
|
85
86
|
children: e.label
|
|
86
|
-
})
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
87
|
+
}),
|
|
88
|
+
/* @__PURE__ */ l(i, { className: "size-4 text-text-muted" })
|
|
89
|
+
]
|
|
90
|
+
}, e.id) : /* @__PURE__ */ u("button", {
|
|
91
|
+
type: "button",
|
|
92
|
+
onClick: () => _?.(e),
|
|
93
|
+
className: "flex w-full items-center gap-3 rounded-button px-3 py-3 text-left text-sm text-text-secondary hover:bg-bg-sunken hover:text-text-primary transition-colors",
|
|
94
|
+
children: [e.icon && /* @__PURE__ */ l("span", {
|
|
95
|
+
className: "flex size-5 items-center justify-center text-text-muted",
|
|
96
|
+
children: e.icon
|
|
97
|
+
}), /* @__PURE__ */ l("span", {
|
|
98
|
+
className: "flex-1 truncate",
|
|
99
|
+
children: e.label
|
|
100
|
+
})]
|
|
101
|
+
}, e.id))
|
|
102
|
+
})]
|
|
103
|
+
}),
|
|
104
|
+
/* @__PURE__ */ l("div", { className: "h-safe-area-inset-bottom" })
|
|
105
|
+
] });
|
|
106
|
+
}
|
|
94
107
|
//#endregion
|
|
95
|
-
export {
|
|
108
|
+
export { f as MobileTourSheet };
|
|
@@ -1,36 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { useShellLabel as e } from "../../providers/shell/useShellLabel.js";
|
|
2
|
+
import { TourStatusChip as t } from "./TourStatusChip.js";
|
|
3
|
+
import { ChevronRight as n } from "lucide-react";
|
|
4
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
5
|
//#region src/shared/tours/tourTrigger/TourListItemDesktop.tsx
|
|
5
|
-
function
|
|
6
|
-
|
|
6
|
+
function a({ tour: a, onStart: o }) {
|
|
7
|
+
let s = e();
|
|
8
|
+
return /* @__PURE__ */ r("button", {
|
|
7
9
|
type: "button",
|
|
8
|
-
onClick: () => a
|
|
10
|
+
onClick: () => o(a),
|
|
9
11
|
className: "w-full p-3 hover:bg-action-ghost-bg-hover rounded-md transition-colors text-left group",
|
|
10
|
-
children: /* @__PURE__ */
|
|
12
|
+
children: /* @__PURE__ */ i("div", {
|
|
11
13
|
className: "flex items-center justify-between",
|
|
12
|
-
children: [/* @__PURE__ */
|
|
14
|
+
children: [/* @__PURE__ */ i("div", {
|
|
13
15
|
className: "flex-1 min-w-0",
|
|
14
16
|
children: [
|
|
15
|
-
/* @__PURE__ */
|
|
17
|
+
/* @__PURE__ */ i("div", {
|
|
16
18
|
className: "flex items-center gap-2 min-w-0",
|
|
17
|
-
children: [/* @__PURE__ */
|
|
19
|
+
children: [/* @__PURE__ */ r("h4", {
|
|
18
20
|
className: "min-w-0 flex-1 font-medium text-text-primary text-sm truncate",
|
|
19
|
-
children:
|
|
20
|
-
}), /* @__PURE__ */
|
|
21
|
+
children: a.name
|
|
22
|
+
}), /* @__PURE__ */ r(t, { status: a.myProgress?.status })]
|
|
21
23
|
}),
|
|
22
|
-
|
|
24
|
+
a.description && /* @__PURE__ */ r("p", {
|
|
23
25
|
className: "text-xs text-text-secondary mt-0.5 line-clamp-1",
|
|
24
|
-
children:
|
|
26
|
+
children: a.description
|
|
25
27
|
}),
|
|
26
|
-
/* @__PURE__ */
|
|
28
|
+
/* @__PURE__ */ r("div", {
|
|
27
29
|
className: "flex items-center gap-2 mt-1 text-xs text-text-tertiary",
|
|
28
|
-
children: /* @__PURE__ */ r("span", { children:
|
|
30
|
+
children: /* @__PURE__ */ r("span", { children: s("tours.stepCount", "{{count}} steps", { count: a.steps?.length || 0 }) })
|
|
29
31
|
})
|
|
30
32
|
]
|
|
31
|
-
}), /* @__PURE__ */ n
|
|
33
|
+
}), /* @__PURE__ */ r(n, { className: "size-4 text-text-tertiary group-hover:text-action-primary-bg group-hover:translate-x-0.5 transition-all" })]
|
|
32
34
|
})
|
|
33
35
|
});
|
|
34
36
|
}
|
|
35
37
|
//#endregion
|
|
36
|
-
export {
|
|
38
|
+
export { a as TourListItemDesktop };
|
|
@@ -1,47 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { useShellLabel as e } from "../../providers/shell/useShellLabel.js";
|
|
2
|
+
import { TourStatusChip as t } from "./TourStatusChip.js";
|
|
3
|
+
import { Play as n } from "lucide-react";
|
|
4
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
5
|
//#region src/shared/tours/tourTrigger/TourListItemMobile.tsx
|
|
5
|
-
function
|
|
6
|
-
|
|
6
|
+
function a({ tour: a, onStart: o }) {
|
|
7
|
+
let s = e();
|
|
8
|
+
return /* @__PURE__ */ r("button", {
|
|
7
9
|
type: "button",
|
|
8
|
-
onClick: () => a
|
|
10
|
+
onClick: () => o(a),
|
|
9
11
|
className: "w-full p-4 bg-bg-muted hover:bg-action-ghost-bg-hover rounded-xl transition-colors text-left group",
|
|
10
|
-
children: /* @__PURE__ */
|
|
12
|
+
children: /* @__PURE__ */ i("div", {
|
|
11
13
|
className: "flex items-center justify-between",
|
|
12
|
-
children: [/* @__PURE__ */
|
|
14
|
+
children: [/* @__PURE__ */ i("div", {
|
|
13
15
|
className: "flex-1 min-w-0",
|
|
14
16
|
children: [
|
|
15
|
-
/* @__PURE__ */
|
|
17
|
+
/* @__PURE__ */ i("div", {
|
|
16
18
|
className: "flex items-center gap-2 min-w-0",
|
|
17
|
-
children: [/* @__PURE__ */
|
|
19
|
+
children: [/* @__PURE__ */ r("h3", {
|
|
18
20
|
className: "min-w-0 flex-1 font-medium text-text-primary truncate",
|
|
19
|
-
children:
|
|
20
|
-
}), /* @__PURE__ */
|
|
21
|
+
children: a.name
|
|
22
|
+
}), /* @__PURE__ */ r(t, { status: a.myProgress?.status })]
|
|
21
23
|
}),
|
|
22
|
-
|
|
24
|
+
a.description && /* @__PURE__ */ r("p", {
|
|
23
25
|
className: "text-sm text-text-secondary mt-1 line-clamp-2",
|
|
24
|
-
children:
|
|
26
|
+
children: a.description
|
|
25
27
|
}),
|
|
26
|
-
/* @__PURE__ */
|
|
28
|
+
/* @__PURE__ */ i("div", {
|
|
27
29
|
className: "flex items-center gap-3 mt-2 text-xs text-text-tertiary",
|
|
28
30
|
children: [
|
|
29
|
-
/* @__PURE__ */ r("span", { children:
|
|
30
|
-
/* @__PURE__ */
|
|
31
|
-
/* @__PURE__ */ r("span", { children:
|
|
32
|
-
"~",
|
|
33
|
-
Math.ceil((i.steps?.length || 0) * .5),
|
|
34
|
-
" min"
|
|
35
|
-
] })
|
|
31
|
+
/* @__PURE__ */ r("span", { children: s("tours.stepCount", "{{count}} steps", { count: a.steps?.length || 0 }) }),
|
|
32
|
+
/* @__PURE__ */ r("span", { children: "•" }),
|
|
33
|
+
/* @__PURE__ */ r("span", { children: s("tours.durationMinutes", "~{{count}} min", { count: Math.ceil((a.steps?.length || 0) * .5) }) })
|
|
36
34
|
]
|
|
37
35
|
})
|
|
38
36
|
]
|
|
39
|
-
}), /* @__PURE__ */
|
|
37
|
+
}), /* @__PURE__ */ r("div", {
|
|
40
38
|
className: "ml-3 p-2 bg-action-primary-bg rounded-full text-action-primary-text group-hover:scale-110 transition-transform",
|
|
41
|
-
children: /* @__PURE__ */ n
|
|
39
|
+
children: /* @__PURE__ */ r(n, { className: "size-4" })
|
|
42
40
|
})]
|
|
43
41
|
})
|
|
44
42
|
});
|
|
45
43
|
}
|
|
46
44
|
//#endregion
|
|
47
|
-
export {
|
|
45
|
+
export { a as TourListItemMobile };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/fe-libs",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.1019.1",
|
|
4
4
|
"description": "Burdenoff frontend primitives and domain libraries",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
"dev": "vite",
|
|
305
305
|
"build": "tsc && MFE_DTS=1 bash scripts/build-limits.sh --gate vite build && node scripts/validate-livekit-optional.mjs",
|
|
306
306
|
"lint": "eslint .",
|
|
307
|
-
"lint:sanity": "if [ \"${CI:-}\" = \"true\" ]; then bun run lint; else bun run lint -- --cache --cache-location .eslintcache; fi",
|
|
307
|
+
"lint:sanity": "bun scripts/check-shell-labels.ts && (if [ \"${CI:-}\" = \"true\" ]; then bun run lint; else bun run lint -- --cache --cache-location .eslintcache; fi)",
|
|
308
308
|
"format": "prettier --config shared/config/prettier.config.mjs --write \"src/**/*.{ts,tsx}\" \"!src/config/*.config.ts\"",
|
|
309
309
|
"type:check": "bash scripts/build-limits.sh tsc --noEmit",
|
|
310
310
|
"test:package-css-exports": "node scripts/validate-package-css-exports.mjs",
|