@flamingo-stack/openframe-frontend-core 0.0.838 → 0.0.840
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/build/export-map.json +1 -1
- package/dist/{chunk-JFR3OFE6.cjs → chunk-275AQ6LC.cjs} +6 -6
- package/dist/{chunk-5BM7X4GA.cjs → chunk-5GBLXY5F.cjs} +2 -2
- package/dist/{chunk-5L3UKDC6.cjs → chunk-6LDL3UZE.cjs} +9 -9
- package/dist/{chunk-SWMUW3RR.cjs → chunk-744JXTDP.cjs} +19 -19
- package/dist/{chunk-46LATWQR.cjs → chunk-7WKRMJI6.cjs} +5 -5
- package/dist/{chunk-2X5LYDNA.cjs → chunk-AT6D7BAZ.cjs} +5 -5
- package/dist/{chunk-C4OQIYGW.cjs → chunk-CCRXBFNL.cjs} +8 -8
- package/dist/{chunk-LC65AC6M.cjs → chunk-COWMXUHN.cjs} +2 -0
- package/dist/{chunk-5E4YEHHO.cjs → chunk-DGY5KEPY.cjs} +55 -55
- package/dist/{chunk-B4THEQOW.cjs → chunk-DYDQLS2R.cjs} +744 -561
- package/dist/{chunk-LWMWY3JO.cjs → chunk-E7M54JWW.cjs} +14 -14
- package/dist/{chunk-Z7A7IZWL.cjs → chunk-EV6BPF47.cjs} +236 -210
- package/dist/{chunk-7XRFAHJF.cjs → chunk-FHI4I3TQ.cjs} +9 -9
- package/dist/{chunk-ZABZIM2Y.cjs → chunk-FRL2ZN4O.cjs} +3 -3
- package/dist/{chunk-7Z536SPR.cjs → chunk-FW7RKWPY.cjs} +15 -1
- package/dist/{chunk-U4MJ2Z4V.cjs → chunk-GMK4JGC2.cjs} +46 -46
- package/dist/{chunk-NV5AHL4G.cjs → chunk-GUKFMMDZ.cjs} +3 -3
- package/dist/{chunk-JI34QKPJ.cjs → chunk-HXTZZE3R.cjs} +253 -131
- package/dist/{chunk-MMPMQUQM.cjs → chunk-IELPVUPR.cjs} +18 -18
- package/dist/{chunk-64PF3UC7.cjs → chunk-INBFKUZA.cjs} +17 -17
- package/dist/{chunk-APOMNC7H.cjs → chunk-IUDBG3HJ.cjs} +3 -3
- package/dist/{chunk-4JHO2NVI.cjs → chunk-J2IXYCEH.cjs} +26 -10
- package/dist/{chunk-V322TUBY.cjs → chunk-JM2XA7VY.cjs} +28 -28
- package/dist/{chunk-GPXKG34G.cjs → chunk-JUEAZCD6.cjs} +46 -46
- package/dist/{chunk-2QAUQPGC.cjs → chunk-MYAPG3FQ.cjs} +21 -21
- package/dist/{chunk-GRHF5SWL.cjs → chunk-NFNSPLGC.cjs} +3 -3
- package/dist/{chunk-4TUHHKLR.cjs → chunk-Q6WUHYOG.cjs} +72 -72
- package/dist/{chunk-H3WTYAVR.cjs → chunk-RSJYTQEA.cjs} +30 -30
- package/dist/{chunk-MG3HJIGG.cjs → chunk-UAI4VMEF.cjs} +4 -4
- package/dist/{chunk-S5RMRQKT.cjs → chunk-UZPYYHF5.cjs} +18 -18
- package/dist/{chunk-TMD55O5U.cjs → chunk-VBH2RCFM.cjs} +73 -73
- package/dist/{chunk-FNNDGOR3.cjs → chunk-WCK5T3UD.cjs} +43 -43
- package/dist/{chunk-TRZEFT2N.cjs → chunk-WI7EXAZT.cjs} +9 -5
- package/dist/{chunk-7QNGILIY.cjs → chunk-Z35PL3UR.cjs} +32 -32
- package/dist/{chunk-ENK75WN4.cjs → chunk-ZAO5SYBJ.cjs} +4 -4
- package/dist/{cloud-tenants-GLPDB2F5.cjs → cloud-tenants-PV63RZ73.cjs} +19 -19
- package/dist/components/case-studies/index.cjs +33 -33
- package/dist/components/chat/chat-nav-sidebar.d.ts.map +1 -1
- package/dist/components/chat/chat-nav-sidebar.js +17 -3
- package/dist/components/chat/index.cjs +13 -13
- package/dist/components/contact/index.cjs +20 -20
- package/dist/components/docs/index.cjs +23 -23
- package/dist/components/embeds/index.cjs +20 -20
- package/dist/components/faq/index.cjs +21 -21
- package/dist/components/features/command-box.d.ts.map +1 -1
- package/dist/components/features/command-box.js +4 -23
- package/dist/components/features/index.cjs +29 -19
- package/dist/components/features/software/index.d.ts +1 -0
- package/dist/components/features/software/index.d.ts.map +1 -1
- package/dist/components/features/software/index.js +12 -0
- package/dist/components/features/software/software-action-form.d.ts +9 -1
- package/dist/components/features/software/software-action-form.d.ts.map +1 -1
- package/dist/components/features/software/software-action-form.js +18 -1
- package/dist/components/features/software/update-settings-fields.d.ts +43 -0
- package/dist/components/features/software/update-settings-fields.d.ts.map +1 -0
- package/dist/components/features/software/update-settings-fields.js +202 -0
- package/dist/components/help-center-pages/download-apps-page.d.ts +1 -1
- package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
- package/dist/components/help-center-pages/download-apps-page.js +2 -3
- package/dist/components/help-center-pages/index.cjs +122 -123
- package/dist/components/index.cjs +86 -76
- package/dist/components/meeting-scheduler/index.cjs +82 -82
- package/dist/components/navigation/account-popover.d.ts.map +1 -1
- package/dist/components/navigation/account-popover.js +26 -2
- package/dist/components/navigation/app-layout-side-panel.d.ts.map +1 -1
- package/dist/components/navigation/app-layout-side-panel.js +2 -9
- package/dist/components/navigation/index.cjs +22 -22
- package/dist/components/navigation/navigation-sidebar-grouped.d.ts.map +1 -1
- package/dist/components/navigation/navigation-sidebar-grouped.js +30 -6
- package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
- package/dist/components/navigation/navigation-sidebar-item.js +14 -1
- package/dist/components/navigation/navigation-sidebar.d.ts.map +1 -1
- package/dist/components/navigation/navigation-sidebar.js +72 -3
- package/dist/components/onboarding-guides/index.cjs +22 -22
- package/dist/components/product-demo/fixtures/software-update.d.ts +2 -0
- package/dist/components/product-demo/fixtures/software-update.d.ts.map +1 -1
- package/dist/components/product-demo/fixtures/software-update.js +3 -2
- package/dist/components/product-demo/index.cjs +30 -30
- package/dist/components/related-content/index.cjs +8 -8
- package/dist/components/tickets/index.cjs +24 -24
- package/dist/components/ui/index.cjs +19 -19
- package/dist/components/ui/panel-resize-handle.d.ts +27 -6
- package/dist/components/ui/panel-resize-handle.d.ts.map +1 -1
- package/dist/components/ui/panel-resize-handle.js +27 -3
- package/dist/{devices-GHPW5WCO.cjs → devices-VECG5JNC.cjs} +20 -20
- package/dist/{embeddable-chat-RBC7F4TL.cjs → embeddable-chat-VRYAQQF6.cjs} +90 -90
- package/dist/hooks/index.cjs +11 -7
- package/dist/hooks/ui/index.d.ts +1 -0
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/hooks/ui/index.js +1 -0
- package/dist/hooks/ui/use-clipped-label-tooltip.d.ts +14 -0
- package/dist/hooks/ui/use-clipped-label-tooltip.d.ts.map +1 -0
- package/dist/hooks/ui/use-clipped-label-tooltip.js +13 -0
- package/dist/hooks/ui/use-is-truncated.d.ts.map +1 -1
- package/dist/hooks/ui/use-is-truncated.js +1 -0
- package/dist/hooks/ui/use-media-query.d.ts.map +1 -1
- package/dist/hooks/ui/use-media-query.js +1 -0
- package/dist/hooks/ui/use-resizable-panel-size.d.ts +1 -0
- package/dist/hooks/ui/use-resizable-panel-size.d.ts.map +1 -1
- package/dist/hooks/ui/use-resizable-panel-size.js +5 -1
- package/dist/index.cjs +38 -24
- package/dist/{knowledge-4TOSY2S5.cjs → knowledge-YJSDJIXT.cjs} +20 -20
- package/dist/{logs-MUODFY6N.cjs → logs-42JG3NZ5.cjs} +26 -26
- package/dist/{policies-TJHO3VLE.cjs → policies-D4QNVJ26.cjs} +23 -23
- package/dist/{remote-session-CN3G7JNR.cjs → remote-session-EE6477O3.cjs} +10 -10
- package/dist/{scripts-X5CMYE2V.cjs → scripts-4VFYBXBE.cjs} +26 -26
- package/dist/{software-update-2UZKHTYM.cjs → software-update-OSDZQ5CP.cjs} +25 -25
- package/dist/{tickets-board-PLYD2NSY.cjs → tickets-board-44HO3LR4.cjs} +10 -10
- package/dist/types/navigation.d.ts +36 -0
- package/dist/types/navigation.d.ts.map +1 -1
- package/dist/utils/notifications.cjs +2 -0
- package/dist/utils/notifications.d.ts +1 -1
- package/dist/utils/notifications.d.ts.map +1 -1
- package/dist/utils/notifications.js +2 -0
- package/package.json +1 -1
- package/src/components/chat/chat-nav-sidebar.tsx +17 -4
- package/src/components/features/command-box.tsx +17 -19
- package/src/components/features/notifications/notification-category-icon.tsx +1 -1
- package/src/components/features/software/index.ts +11 -0
- package/src/components/features/software/software-action-form.tsx +28 -1
- package/src/components/features/software/update-settings-fields.tsx +265 -0
- package/src/components/help-center-pages/download-apps-page.tsx +4 -5
- package/src/components/navigation/account-popover.tsx +31 -2
- package/src/components/navigation/app-layout-side-panel.tsx +2 -7
- package/src/components/navigation/navigation-sidebar-grouped.tsx +37 -6
- package/src/components/navigation/navigation-sidebar-item.tsx +18 -1
- package/src/components/navigation/navigation-sidebar.tsx +116 -7
- package/src/components/product-demo/fixtures/software-update.ts +2 -2
- package/src/components/ui/panel-resize-handle.tsx +50 -8
- package/src/hooks/ui/index.ts +1 -0
- package/src/hooks/ui/use-clipped-label-tooltip.ts +20 -0
- package/src/hooks/ui/use-is-truncated.ts +2 -0
- package/src/hooks/ui/use-media-query.ts +2 -0
- package/src/hooks/ui/use-resizable-panel-size.ts +7 -1
- package/src/types/navigation.ts +37 -0
- package/src/utils/notifications.ts +2 -0
|
@@ -10,9 +10,9 @@ var _chunkFDZOE5TLcjs = require('./chunk-FDZOE5TL.cjs');
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
14
|
-
require('./chunk-
|
|
15
|
-
require('./chunk-
|
|
13
|
+
var _chunk744JXTDPcjs = require('./chunk-744JXTDP.cjs');
|
|
14
|
+
require('./chunk-IUDBG3HJ.cjs');
|
|
15
|
+
require('./chunk-6LDL3UZE.cjs');
|
|
16
16
|
require('./chunk-YJZ7R3W5.cjs');
|
|
17
17
|
require('./chunk-46547WQW.cjs');
|
|
18
18
|
require('./chunk-LNUFH4E2.cjs');
|
|
@@ -1806,7 +1806,7 @@ require('./chunk-XIBCMGBW.cjs');
|
|
|
1806
1806
|
require('./chunk-BUEEQD3G.cjs');
|
|
1807
1807
|
require('./chunk-WWUSFOJ7.cjs');
|
|
1808
1808
|
require('./chunk-SKI6NKOE.cjs');
|
|
1809
|
-
require('./chunk-
|
|
1809
|
+
require('./chunk-NFNSPLGC.cjs');
|
|
1810
1810
|
require('./chunk-JBTH3O2C.cjs');
|
|
1811
1811
|
require('./chunk-S5C3OZCO.cjs');
|
|
1812
1812
|
require('./chunk-32ASZMTV.cjs');
|
|
@@ -1815,7 +1815,7 @@ require('./chunk-4IYNDV3G.cjs');
|
|
|
1815
1815
|
require('./chunk-6VOOPMP5.cjs');
|
|
1816
1816
|
require('./chunk-ORO54HDF.cjs');
|
|
1817
1817
|
require('./chunk-RUHKTWGB.cjs');
|
|
1818
|
-
require('./chunk-
|
|
1818
|
+
require('./chunk-COWMXUHN.cjs');
|
|
1819
1819
|
require('./chunk-YSDB6HGQ.cjs');
|
|
1820
1820
|
require('./chunk-FX35L4Y6.cjs');
|
|
1821
1821
|
require('./chunk-JQCQCE6U.cjs');
|
|
@@ -1841,7 +1841,7 @@ function buildTicketsBoardFixture(cast) {
|
|
|
1841
1841
|
const dana = assignee(cast.person("dana"));
|
|
1842
1842
|
const alex = assignee(cast.person("alex"));
|
|
1843
1843
|
return [
|
|
1844
|
-
|
|
1844
|
+
_chunk744JXTDPcjs.columnFromTicketStatus.call(void 0, "ACTIVE", [
|
|
1845
1845
|
ticket("tk-1051", "Printer offline at the front desk", "ACTIVE", {
|
|
1846
1846
|
ticketNumber: "1051",
|
|
1847
1847
|
agent: "fae",
|
|
@@ -1859,7 +1859,7 @@ function buildTicketsBoardFixture(cast) {
|
|
|
1859
1859
|
tags: ["onboarding"]
|
|
1860
1860
|
})
|
|
1861
1861
|
]),
|
|
1862
|
-
|
|
1862
|
+
_chunk744JXTDPcjs.columnFromTicketStatus.call(void 0, "TECH_REQUIRED", [
|
|
1863
1863
|
ticket("tk-1049", "Acrobat Pro for Maya", "TECH_REQUIRED", {
|
|
1864
1864
|
ticketNumber: "1049",
|
|
1865
1865
|
agent: "fae",
|
|
@@ -1883,7 +1883,7 @@ function buildTicketsBoardFixture(cast) {
|
|
|
1883
1883
|
escalatedByUser: true
|
|
1884
1884
|
})
|
|
1885
1885
|
]),
|
|
1886
|
-
|
|
1886
|
+
_chunk744JXTDPcjs.columnFromTicketStatus.call(void 0, "ON_HOLD", [
|
|
1887
1887
|
ticket("tk-1046", "Replace the conference room display", "ON_HOLD", {
|
|
1888
1888
|
ticketNumber: "1046",
|
|
1889
1889
|
organizationName: _chunkFDZOE5TLcjs.DEMO_ORGANIZATIONS.acme.name,
|
|
@@ -1892,7 +1892,7 @@ function buildTicketsBoardFixture(cast) {
|
|
|
1892
1892
|
activity: { kind: "waiting-external" }
|
|
1893
1893
|
})
|
|
1894
1894
|
]),
|
|
1895
|
-
|
|
1895
|
+
_chunk744JXTDPcjs.columnFromTicketStatus.call(void 0,
|
|
1896
1896
|
"RESOLVED",
|
|
1897
1897
|
[
|
|
1898
1898
|
ticket("tk-1048", "Slow laptop", "RESOLVED", {
|
|
@@ -1928,7 +1928,7 @@ function TicketsBoardScreen({ compact = false }) {
|
|
|
1928
1928
|
const cast = _chunkLHV2R6QUcjs.useProductDemoCast.call(void 0, );
|
|
1929
1929
|
const board = _react.useMemo.call(void 0, () => buildTicketsBoardFixture(cast), [cast]);
|
|
1930
1930
|
const columns = compact ? board.filter((column) => column.id !== "ON_HOLD") : board;
|
|
1931
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-m)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1931
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-m)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk744JXTDPcjs.Board, { columns, onChange: noop, initialCollapsed: compact ? void 0 : FOLDED }) });
|
|
1932
1932
|
}
|
|
1933
1933
|
|
|
1934
1934
|
|
|
@@ -126,6 +126,34 @@ export interface SlidingSidebarConfig {
|
|
|
126
126
|
position?: 'left' | 'right';
|
|
127
127
|
className?: string;
|
|
128
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* `NavigationSidebarConfig.resizable`: the user drags the expanded sidebar's
|
|
131
|
+
* right edge on desktop (`lg` and up). The 56px rail is not resizable, nor are
|
|
132
|
+
* the tablet overlay and the burger menu; the overlay opens to the chosen width.
|
|
133
|
+
*/
|
|
134
|
+
export interface NavigationSidebarResizeConfig {
|
|
135
|
+
/**
|
|
136
|
+
* Narrowest expanded width, in px. Raised to 141px when lower: the rows read
|
|
137
|
+
* 140px and up as expanded (`@[140px]/of-nav-sidebar`).
|
|
138
|
+
*/
|
|
139
|
+
minWidth: number;
|
|
140
|
+
/** Widest expanded width, in px. Also kept to the room there is (`minContentWidth`). */
|
|
141
|
+
maxWidth: number;
|
|
142
|
+
/**
|
|
143
|
+
* Px of the row the content beside the sidebar always keeps, so a wide sidebar
|
|
144
|
+
* cannot crowd the page out of a narrow desktop window. Default 720, the lib's
|
|
145
|
+
* `content-md` breakpoint.
|
|
146
|
+
*/
|
|
147
|
+
minContentWidth?: number;
|
|
148
|
+
/**
|
|
149
|
+
* `localStorage` key for the width the user chose: `{ size }` under
|
|
150
|
+
* `<storageKey>:chosen` (see `useResizablePanelSize`). Only a drag or a key
|
|
151
|
+
* press on the handle writes it, never the default or a clamped width; a double
|
|
152
|
+
* click removes it. Omit to keep the choice for the mount only. A host that seeds
|
|
153
|
+
* `NAVIGATION_SIDEBAR_WIDTH_VAR` before first paint reads the same entry.
|
|
154
|
+
*/
|
|
155
|
+
storageKey?: string;
|
|
156
|
+
}
|
|
129
157
|
/**
|
|
130
158
|
* Configuration for the navigation sidebar component
|
|
131
159
|
*/
|
|
@@ -253,6 +281,14 @@ export interface NavigationSidebarConfig {
|
|
|
253
281
|
* chat search in `sectionSlot`.
|
|
254
282
|
*/
|
|
255
283
|
revealSignal?: number;
|
|
284
|
+
/**
|
|
285
|
+
* Let the user resize the expanded sidebar on desktop: a drag handle astride
|
|
286
|
+
* its right edge (the grip the Mingo chat drawer had), arrow keys, Home and
|
|
287
|
+
* End on it, a double click back to the default. The default stays
|
|
288
|
+
* `expandedWidth` (grouped) or 224px (flat); both variants. Omitted: the fixed
|
|
289
|
+
* widths, as before.
|
|
290
|
+
*/
|
|
291
|
+
resizable?: NavigationSidebarResizeConfig;
|
|
256
292
|
}
|
|
257
293
|
/** What a slot render function is told about the place it is drawn in. */
|
|
258
294
|
export interface NavigationSidebarSlotState {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/types/navigation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/types/navigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ var NOTIFICATION_CATEGORIES = [
|
|
|
21
21
|
"INSIGHTS",
|
|
22
22
|
"MINGO",
|
|
23
23
|
"INTEGRATIONS",
|
|
24
|
+
"BILLING",
|
|
24
25
|
"GENERIC"
|
|
25
26
|
];
|
|
26
27
|
var NOTIFICATION_CATEGORY_LABELS = {
|
|
@@ -35,6 +36,7 @@ var NOTIFICATION_CATEGORY_LABELS = {
|
|
|
35
36
|
INSIGHTS: "Insights",
|
|
36
37
|
MINGO: "Mingo",
|
|
37
38
|
INTEGRATIONS: "Integrations",
|
|
39
|
+
BILLING: "Billing",
|
|
38
40
|
GENERIC: "General"
|
|
39
41
|
};
|
|
40
42
|
var DEFAULT_NOTIFICATION_CATEGORY = "GENERIC";
|
|
@@ -18,7 +18,7 @@ export declare const DEFAULT_NOTIFICATION_SEVERITY: NotificationSeverity;
|
|
|
18
18
|
* The backend's `NotificationCategory`: the dashboard section a notification
|
|
19
19
|
* belongs to. Any section but GENERIC shows an unread counter on its menu item.
|
|
20
20
|
*/
|
|
21
|
-
export declare const NOTIFICATION_CATEGORIES: readonly ["DASHBOARD", "CUSTOMERS", "DEVICES", "SCRIPTS", "MONITORING", "SOFTWARE", "LOGS", "TICKETS", "INSIGHTS", "MINGO", "INTEGRATIONS", "GENERIC"];
|
|
21
|
+
export declare const NOTIFICATION_CATEGORIES: readonly ["DASHBOARD", "CUSTOMERS", "DEVICES", "SCRIPTS", "MONITORING", "SOFTWARE", "LOGS", "TICKETS", "INSIGHTS", "MINGO", "INTEGRATIONS", "BILLING", "GENERIC"];
|
|
22
22
|
export type NotificationCategory = (typeof NOTIFICATION_CATEGORIES)[number];
|
|
23
23
|
/** Each category as the app's navigation names its section. */
|
|
24
24
|
export declare const NOTIFICATION_CATEGORY_LABELS: Readonly<Record<NotificationCategory, string>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/utils/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,mDAAoD,CAAC;AACzF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAKvF,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,6BAA6B,EAAE,oBAA6B,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/utils/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,mDAAoD,CAAC;AACzF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAKvF,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,6BAA6B,EAAE,oBAA6B,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,uBAAuB,mKAc1B,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,+DAA+D;AAC/D,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAcvF,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,6BAA6B,EAAE,oBAAgC,CAAC;AAE7E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF"}
|
|
@@ -18,6 +18,7 @@ const NOTIFICATION_CATEGORIES = [
|
|
|
18
18
|
"INSIGHTS",
|
|
19
19
|
"MINGO",
|
|
20
20
|
"INTEGRATIONS",
|
|
21
|
+
"BILLING",
|
|
21
22
|
"GENERIC"
|
|
22
23
|
];
|
|
23
24
|
const NOTIFICATION_CATEGORY_LABELS = {
|
|
@@ -32,6 +33,7 @@ const NOTIFICATION_CATEGORY_LABELS = {
|
|
|
32
33
|
INSIGHTS: "Insights",
|
|
33
34
|
MINGO: "Mingo",
|
|
34
35
|
INTEGRATIONS: "Integrations",
|
|
36
|
+
BILLING: "Billing",
|
|
35
37
|
GENERIC: "General"
|
|
36
38
|
};
|
|
37
39
|
const DEFAULT_NOTIFICATION_CATEGORY = "GENERIC";
|
package/package.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { forwardRef, type ButtonHTMLAttributes, type HTMLAttributes, type ReactNode } from 'react';
|
|
4
|
+
import { useClippedLabelTooltip } from '../../hooks/ui/use-clipped-label-tooltip';
|
|
4
5
|
import { cn } from '../../utils/cn';
|
|
5
6
|
import { MediaSkeleton, TextLineSkeleton } from '../loading/unified-skeleton';
|
|
6
7
|
import { BUTTON_KIND_CLASS, Button } from '../ui/button';
|
|
8
|
+
import { FloatingTooltip } from '../ui/floating-tooltip';
|
|
7
9
|
import { LoadingItems, loadingItemProps, useLoadingScope } from '../ui/loading-scope';
|
|
8
10
|
import { ScrollFadeOverlay, useScrollFade } from '../ui/scroll-fade';
|
|
9
11
|
|
|
@@ -157,6 +159,8 @@ const ChatListItem = forwardRef<HTMLButtonElement, ChatListItemProps>(
|
|
|
157
159
|
ref,
|
|
158
160
|
) => {
|
|
159
161
|
const loading = useLoadingScope() || loadingProp;
|
|
162
|
+
// A title the list clips: its full text in a tooltip over it, only while clipped and where a pointer can hover.
|
|
163
|
+
const { ref: titleRef, enabled: titleTooltip } = useClippedLabelTooltip<HTMLSpanElement>(title);
|
|
160
164
|
const content = (
|
|
161
165
|
<>
|
|
162
166
|
<span className="flex min-w-0 flex-1 flex-col">
|
|
@@ -165,11 +169,20 @@ const ChatListItem = forwardRef<HTMLButtonElement, ChatListItemProps>(
|
|
|
165
169
|
{loading ? (
|
|
166
170
|
<TextLineSkeleton type="h4" className={SKELETON_TITLE_WIDTHS[index % SKELETON_TITLE_WIDTHS.length]} />
|
|
167
171
|
) : (
|
|
168
|
-
<
|
|
169
|
-
|
|
172
|
+
<FloatingTooltip
|
|
173
|
+
content={title}
|
|
174
|
+
side="top"
|
|
175
|
+
as="span"
|
|
176
|
+
disabled={!titleTooltip}
|
|
177
|
+
triggerClassName="min-w-0 flex-1"
|
|
170
178
|
>
|
|
171
|
-
|
|
172
|
-
|
|
179
|
+
<span
|
|
180
|
+
ref={titleRef}
|
|
181
|
+
className={cn('block min-w-0 truncate text-h4', active ? 'text-ods-accent' : 'text-ods-text-primary')}
|
|
182
|
+
>
|
|
183
|
+
{title}
|
|
184
|
+
</span>
|
|
185
|
+
</FloatingTooltip>
|
|
173
186
|
)}
|
|
174
187
|
</span>
|
|
175
188
|
{subtitle != null &&
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { ChevronDown } from 'lucide-react';
|
|
4
4
|
import type React from 'react';
|
|
5
|
+
import { TEXT_LINES_HEIGHT } from '../../styles/component-sizes';
|
|
5
6
|
import { cn } from '../../utils/cn';
|
|
6
7
|
import { Copy02Icon } from '../icons-v2-generated/documents/copy-02-icon';
|
|
7
8
|
import { TextLineSkeleton } from '../loading/unified-skeleton';
|
|
@@ -106,7 +107,11 @@ const COMMAND_BOX_CLASS = 'flex flex-col gap-2';
|
|
|
106
107
|
const COMMAND_BOX_TITLE_CLASS = 'text-ods-text-primary text-h4';
|
|
107
108
|
const COMMAND_BOX_FRAME_CLASS = 'rounded-[6px] border border-ods-border bg-ods-bg p-4';
|
|
108
109
|
const COMMAND_BOX_COPY_ROW_CLASS = 'flex items-start gap-4';
|
|
109
|
-
|
|
110
|
+
/**
|
|
111
|
+
* The copy button's slot, one line of the command's text class tall: the taller button overflows it evenly, so the
|
|
112
|
+
* frame's padding stays even and the icon stays on the first line of a long command.
|
|
113
|
+
*/
|
|
114
|
+
const COMMAND_BOX_COPY_SLOT_CLASS = cn(TEXT_LINES_HEIGHT[1], 'flex shrink-0 items-center text-code');
|
|
110
115
|
const COMMAND_BOX_ACTIONS_CLASS = 'mt-4 flex flex-col gap-3 content-md:flex-row content-md:justify-end';
|
|
111
116
|
const COMMAND_BOX_ACTION_CLASS = 'w-full content-md:w-auto';
|
|
112
117
|
/** The fixed-height command area: N rows of the `text-code` line height token. Read by the box and its skeleton. */
|
|
@@ -184,16 +189,11 @@ export function CommandBox({
|
|
|
184
189
|
{onCopy ? (
|
|
185
190
|
<div className={COMMAND_BOX_COPY_ROW_CLASS}>
|
|
186
191
|
{commandText}
|
|
187
|
-
<
|
|
188
|
-
variant="bare"
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
aria-label={copyAriaLabel}
|
|
193
|
-
className={COMMAND_BOX_COPY_BUTTON_LAYOUT}
|
|
194
|
-
>
|
|
195
|
-
<Copy02Icon />
|
|
196
|
-
</Button>
|
|
192
|
+
<div className={COMMAND_BOX_COPY_SLOT_CLASS}>
|
|
193
|
+
<Button variant="bare" size="icon-sm" type="button" onClick={onCopy} aria-label={copyAriaLabel}>
|
|
194
|
+
<Copy02Icon />
|
|
195
|
+
</Button>
|
|
196
|
+
</div>
|
|
197
197
|
</div>
|
|
198
198
|
) : (
|
|
199
199
|
commandText
|
|
@@ -290,14 +290,12 @@ function CommandBoxSkeleton({
|
|
|
290
290
|
{showCopy ? (
|
|
291
291
|
<div className={COMMAND_BOX_COPY_ROW_CLASS}>
|
|
292
292
|
{commandLines}
|
|
293
|
-
<
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
>
|
|
299
|
-
<Copy02Icon />
|
|
300
|
-
</span>
|
|
293
|
+
<div className={COMMAND_BOX_COPY_SLOT_CLASS}>
|
|
294
|
+
{/* `cn` resolves the conflicting icon sizes, as `Button` does; without it, the icon is 20px. */}
|
|
295
|
+
<span className={cn(buttonVariants({ variant: 'bare', size: 'icon-sm' }))}>
|
|
296
|
+
<Copy02Icon />
|
|
297
|
+
</span>
|
|
298
|
+
</div>
|
|
301
299
|
</div>
|
|
302
300
|
) : (
|
|
303
301
|
commandLines
|
|
@@ -6,7 +6,7 @@ import { NamedIcon, type IconRef } from '../../chat/utils/icon-loading';
|
|
|
6
6
|
* Backend `NotificationCategory` → icon, the icon of the dashboard section the
|
|
7
7
|
* notification belongs to (the app navigation's own). A table of icon NAMES: an
|
|
8
8
|
* icon is loaded when a notification of its category is drawn. GENERIC,
|
|
9
|
-
* INTEGRATIONS and unknown categories have none (the tile draws its severity
|
|
9
|
+
* INTEGRATIONS, BILLING and unknown categories have none (the tile draws its severity
|
|
10
10
|
* dot). Every icon takes the host's text colour, so a row of them is one colour.
|
|
11
11
|
*/
|
|
12
12
|
const ICON_BY_CATEGORY: Readonly<Record<string, IconRef>> = {
|
|
@@ -37,3 +37,14 @@ export {
|
|
|
37
37
|
} from './software-action-form';
|
|
38
38
|
export { newSoftwareRow, type SelectedPackage, type SoftwareRow } from './software-row';
|
|
39
39
|
export { type PackageSearchSlotProps, SoftwareRowFields, type SoftwareRowFieldsProps } from './software-row-fields';
|
|
40
|
+
export {
|
|
41
|
+
DEFAULT_SOFTWARE_UPDATE_POLICY,
|
|
42
|
+
DEFAULT_SOFTWARE_UPDATE_SETTINGS,
|
|
43
|
+
SOFTWARE_UPDATE_COUNTDOWN_OPTIONS,
|
|
44
|
+
SOFTWARE_UPDATE_DEADLINE_OPTIONS,
|
|
45
|
+
type SoftwareUpdateMode,
|
|
46
|
+
type SoftwareUpdatePolicy,
|
|
47
|
+
SoftwareUpdateSettingsFields,
|
|
48
|
+
type SoftwareUpdateSettingsFieldsProps,
|
|
49
|
+
type SoftwareUpdateSettingsValues,
|
|
50
|
+
} from './update-settings-fields';
|
|
@@ -9,6 +9,11 @@ import { SoftwareScheduleFields, type SoftwareScheduleTiming } from './schedule-
|
|
|
9
9
|
import { SOFTWARE_ACTION_COPY, type SoftwareActionKind } from './software-action-copy';
|
|
10
10
|
import { newSoftwareRow, type SoftwareRow } from './software-row';
|
|
11
11
|
import { type PackageSearchSlotProps, SoftwareRowFields } from './software-row-fields';
|
|
12
|
+
import {
|
|
13
|
+
DEFAULT_SOFTWARE_UPDATE_SETTINGS,
|
|
14
|
+
SoftwareUpdateSettingsFields,
|
|
15
|
+
type SoftwareUpdateSettingsValues,
|
|
16
|
+
} from './update-settings-fields';
|
|
12
17
|
|
|
13
18
|
/** Run the packages now, or at a scheduled start. */
|
|
14
19
|
export type SoftwareRunMode = 'now' | 'schedule';
|
|
@@ -20,6 +25,8 @@ export interface SoftwareActionFormValues<TRef extends string = string> {
|
|
|
20
25
|
date: Date | null;
|
|
21
26
|
time: string;
|
|
22
27
|
timeReference: TRef;
|
|
28
|
+
/** UPDATE only: "Update Settings". Undefined for INSTALL, and when the form hides them (`showUpdateSettings`). */
|
|
29
|
+
updateSettings?: SoftwareUpdateSettingsValues;
|
|
23
30
|
}
|
|
24
31
|
|
|
25
32
|
/** What the device picker slot is told: which devices the chosen packages can run on. */
|
|
@@ -62,6 +69,11 @@ export interface SoftwareActionFormProps<TRef extends string = string> {
|
|
|
62
69
|
* schedule's fields on the same row, so the devices start higher.
|
|
63
70
|
*/
|
|
64
71
|
runModeLayout?: 'stacked' | 'inline';
|
|
72
|
+
/**
|
|
73
|
+
* UPDATE only: the "Update Settings" block under the timing. Default false, so a host that does not send the
|
|
74
|
+
* settings yet never shows choices that go nowhere; the host that submits `updateSettings` passes true.
|
|
75
|
+
*/
|
|
76
|
+
showUpdateSettings?: boolean;
|
|
65
77
|
/** The "Device Selection" heading over the picker. Default true; a host that titles the picker itself passes false. */
|
|
66
78
|
showDeviceHeading?: boolean;
|
|
67
79
|
className?: string;
|
|
@@ -91,6 +103,7 @@ export function SoftwareActionForm<TRef extends string = string>({
|
|
|
91
103
|
renderDevicePicker,
|
|
92
104
|
addRows = true,
|
|
93
105
|
runModeLayout = 'stacked',
|
|
106
|
+
showUpdateSettings = false,
|
|
94
107
|
showDeviceHeading = true,
|
|
95
108
|
className = 'px-[var(--spacing-system-l)] pb-[var(--spacing-system-l)]',
|
|
96
109
|
}: SoftwareActionFormProps<TRef>) {
|
|
@@ -101,6 +114,10 @@ export function SoftwareActionForm<TRef extends string = string>({
|
|
|
101
114
|
const [date, setDate] = useState<Date | null>(initialValues.date ?? null);
|
|
102
115
|
const [time, setTime] = useState(initialValues.time ?? '');
|
|
103
116
|
const [timeReference, setTimeReference] = useState<TRef>(initialValues.timeReference);
|
|
117
|
+
const [updateSettings, setUpdateSettings] = useState<SoftwareUpdateSettingsValues>(
|
|
118
|
+
() => initialValues.updateSettings ?? DEFAULT_SOFTWARE_UPDATE_SETTINGS,
|
|
119
|
+
);
|
|
120
|
+
const withUpdateSettings = action === 'UPDATE' && showUpdateSettings;
|
|
104
121
|
|
|
105
122
|
// The picker's frame: devices on the OS the chosen packages install on.
|
|
106
123
|
const osTypesKey = [...new Set(rows.map(row => PACKAGE_MANAGER_OS[row.packageManager]))].sort().join(',');
|
|
@@ -110,7 +127,15 @@ export function SoftwareActionForm<TRef extends string = string>({
|
|
|
110
127
|
{
|
|
111
128
|
label: mode === 'now' ? copy.runLabel : copy.scheduleLabel,
|
|
112
129
|
variant: 'accent',
|
|
113
|
-
onClick: () =>
|
|
130
|
+
onClick: () =>
|
|
131
|
+
onSubmit({
|
|
132
|
+
rows,
|
|
133
|
+
mode,
|
|
134
|
+
date,
|
|
135
|
+
time,
|
|
136
|
+
timeReference,
|
|
137
|
+
updateSettings: withUpdateSettings ? updateSettings : undefined,
|
|
138
|
+
}),
|
|
114
139
|
disabled: submitDisabled,
|
|
115
140
|
loading: submitting,
|
|
116
141
|
},
|
|
@@ -190,6 +215,8 @@ export function SoftwareActionForm<TRef extends string = string>({
|
|
|
190
215
|
</>
|
|
191
216
|
)}
|
|
192
217
|
|
|
218
|
+
{withUpdateSettings && <SoftwareUpdateSettingsFields value={updateSettings} onChange={setUpdateSettings} />}
|
|
219
|
+
|
|
193
220
|
{showDeviceHeading && (
|
|
194
221
|
<h2 className="pt-[var(--spacing-system-l)] text-ods-text-primary text-h2">Device Selection</h2>
|
|
195
222
|
)}
|