@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.
Files changed (137) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-JFR3OFE6.cjs → chunk-275AQ6LC.cjs} +6 -6
  3. package/dist/{chunk-5BM7X4GA.cjs → chunk-5GBLXY5F.cjs} +2 -2
  4. package/dist/{chunk-5L3UKDC6.cjs → chunk-6LDL3UZE.cjs} +9 -9
  5. package/dist/{chunk-SWMUW3RR.cjs → chunk-744JXTDP.cjs} +19 -19
  6. package/dist/{chunk-46LATWQR.cjs → chunk-7WKRMJI6.cjs} +5 -5
  7. package/dist/{chunk-2X5LYDNA.cjs → chunk-AT6D7BAZ.cjs} +5 -5
  8. package/dist/{chunk-C4OQIYGW.cjs → chunk-CCRXBFNL.cjs} +8 -8
  9. package/dist/{chunk-LC65AC6M.cjs → chunk-COWMXUHN.cjs} +2 -0
  10. package/dist/{chunk-5E4YEHHO.cjs → chunk-DGY5KEPY.cjs} +55 -55
  11. package/dist/{chunk-B4THEQOW.cjs → chunk-DYDQLS2R.cjs} +744 -561
  12. package/dist/{chunk-LWMWY3JO.cjs → chunk-E7M54JWW.cjs} +14 -14
  13. package/dist/{chunk-Z7A7IZWL.cjs → chunk-EV6BPF47.cjs} +236 -210
  14. package/dist/{chunk-7XRFAHJF.cjs → chunk-FHI4I3TQ.cjs} +9 -9
  15. package/dist/{chunk-ZABZIM2Y.cjs → chunk-FRL2ZN4O.cjs} +3 -3
  16. package/dist/{chunk-7Z536SPR.cjs → chunk-FW7RKWPY.cjs} +15 -1
  17. package/dist/{chunk-U4MJ2Z4V.cjs → chunk-GMK4JGC2.cjs} +46 -46
  18. package/dist/{chunk-NV5AHL4G.cjs → chunk-GUKFMMDZ.cjs} +3 -3
  19. package/dist/{chunk-JI34QKPJ.cjs → chunk-HXTZZE3R.cjs} +253 -131
  20. package/dist/{chunk-MMPMQUQM.cjs → chunk-IELPVUPR.cjs} +18 -18
  21. package/dist/{chunk-64PF3UC7.cjs → chunk-INBFKUZA.cjs} +17 -17
  22. package/dist/{chunk-APOMNC7H.cjs → chunk-IUDBG3HJ.cjs} +3 -3
  23. package/dist/{chunk-4JHO2NVI.cjs → chunk-J2IXYCEH.cjs} +26 -10
  24. package/dist/{chunk-V322TUBY.cjs → chunk-JM2XA7VY.cjs} +28 -28
  25. package/dist/{chunk-GPXKG34G.cjs → chunk-JUEAZCD6.cjs} +46 -46
  26. package/dist/{chunk-2QAUQPGC.cjs → chunk-MYAPG3FQ.cjs} +21 -21
  27. package/dist/{chunk-GRHF5SWL.cjs → chunk-NFNSPLGC.cjs} +3 -3
  28. package/dist/{chunk-4TUHHKLR.cjs → chunk-Q6WUHYOG.cjs} +72 -72
  29. package/dist/{chunk-H3WTYAVR.cjs → chunk-RSJYTQEA.cjs} +30 -30
  30. package/dist/{chunk-MG3HJIGG.cjs → chunk-UAI4VMEF.cjs} +4 -4
  31. package/dist/{chunk-S5RMRQKT.cjs → chunk-UZPYYHF5.cjs} +18 -18
  32. package/dist/{chunk-TMD55O5U.cjs → chunk-VBH2RCFM.cjs} +73 -73
  33. package/dist/{chunk-FNNDGOR3.cjs → chunk-WCK5T3UD.cjs} +43 -43
  34. package/dist/{chunk-TRZEFT2N.cjs → chunk-WI7EXAZT.cjs} +9 -5
  35. package/dist/{chunk-7QNGILIY.cjs → chunk-Z35PL3UR.cjs} +32 -32
  36. package/dist/{chunk-ENK75WN4.cjs → chunk-ZAO5SYBJ.cjs} +4 -4
  37. package/dist/{cloud-tenants-GLPDB2F5.cjs → cloud-tenants-PV63RZ73.cjs} +19 -19
  38. package/dist/components/case-studies/index.cjs +33 -33
  39. package/dist/components/chat/chat-nav-sidebar.d.ts.map +1 -1
  40. package/dist/components/chat/chat-nav-sidebar.js +17 -3
  41. package/dist/components/chat/index.cjs +13 -13
  42. package/dist/components/contact/index.cjs +20 -20
  43. package/dist/components/docs/index.cjs +23 -23
  44. package/dist/components/embeds/index.cjs +20 -20
  45. package/dist/components/faq/index.cjs +21 -21
  46. package/dist/components/features/command-box.d.ts.map +1 -1
  47. package/dist/components/features/command-box.js +4 -23
  48. package/dist/components/features/index.cjs +29 -19
  49. package/dist/components/features/software/index.d.ts +1 -0
  50. package/dist/components/features/software/index.d.ts.map +1 -1
  51. package/dist/components/features/software/index.js +12 -0
  52. package/dist/components/features/software/software-action-form.d.ts +9 -1
  53. package/dist/components/features/software/software-action-form.d.ts.map +1 -1
  54. package/dist/components/features/software/software-action-form.js +18 -1
  55. package/dist/components/features/software/update-settings-fields.d.ts +43 -0
  56. package/dist/components/features/software/update-settings-fields.d.ts.map +1 -0
  57. package/dist/components/features/software/update-settings-fields.js +202 -0
  58. package/dist/components/help-center-pages/download-apps-page.d.ts +1 -1
  59. package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
  60. package/dist/components/help-center-pages/download-apps-page.js +2 -3
  61. package/dist/components/help-center-pages/index.cjs +122 -123
  62. package/dist/components/index.cjs +86 -76
  63. package/dist/components/meeting-scheduler/index.cjs +82 -82
  64. package/dist/components/navigation/account-popover.d.ts.map +1 -1
  65. package/dist/components/navigation/account-popover.js +26 -2
  66. package/dist/components/navigation/app-layout-side-panel.d.ts.map +1 -1
  67. package/dist/components/navigation/app-layout-side-panel.js +2 -9
  68. package/dist/components/navigation/index.cjs +22 -22
  69. package/dist/components/navigation/navigation-sidebar-grouped.d.ts.map +1 -1
  70. package/dist/components/navigation/navigation-sidebar-grouped.js +30 -6
  71. package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
  72. package/dist/components/navigation/navigation-sidebar-item.js +14 -1
  73. package/dist/components/navigation/navigation-sidebar.d.ts.map +1 -1
  74. package/dist/components/navigation/navigation-sidebar.js +72 -3
  75. package/dist/components/onboarding-guides/index.cjs +22 -22
  76. package/dist/components/product-demo/fixtures/software-update.d.ts +2 -0
  77. package/dist/components/product-demo/fixtures/software-update.d.ts.map +1 -1
  78. package/dist/components/product-demo/fixtures/software-update.js +3 -2
  79. package/dist/components/product-demo/index.cjs +30 -30
  80. package/dist/components/related-content/index.cjs +8 -8
  81. package/dist/components/tickets/index.cjs +24 -24
  82. package/dist/components/ui/index.cjs +19 -19
  83. package/dist/components/ui/panel-resize-handle.d.ts +27 -6
  84. package/dist/components/ui/panel-resize-handle.d.ts.map +1 -1
  85. package/dist/components/ui/panel-resize-handle.js +27 -3
  86. package/dist/{devices-GHPW5WCO.cjs → devices-VECG5JNC.cjs} +20 -20
  87. package/dist/{embeddable-chat-RBC7F4TL.cjs → embeddable-chat-VRYAQQF6.cjs} +90 -90
  88. package/dist/hooks/index.cjs +11 -7
  89. package/dist/hooks/ui/index.d.ts +1 -0
  90. package/dist/hooks/ui/index.d.ts.map +1 -1
  91. package/dist/hooks/ui/index.js +1 -0
  92. package/dist/hooks/ui/use-clipped-label-tooltip.d.ts +14 -0
  93. package/dist/hooks/ui/use-clipped-label-tooltip.d.ts.map +1 -0
  94. package/dist/hooks/ui/use-clipped-label-tooltip.js +13 -0
  95. package/dist/hooks/ui/use-is-truncated.d.ts.map +1 -1
  96. package/dist/hooks/ui/use-is-truncated.js +1 -0
  97. package/dist/hooks/ui/use-media-query.d.ts.map +1 -1
  98. package/dist/hooks/ui/use-media-query.js +1 -0
  99. package/dist/hooks/ui/use-resizable-panel-size.d.ts +1 -0
  100. package/dist/hooks/ui/use-resizable-panel-size.d.ts.map +1 -1
  101. package/dist/hooks/ui/use-resizable-panel-size.js +5 -1
  102. package/dist/index.cjs +38 -24
  103. package/dist/{knowledge-4TOSY2S5.cjs → knowledge-YJSDJIXT.cjs} +20 -20
  104. package/dist/{logs-MUODFY6N.cjs → logs-42JG3NZ5.cjs} +26 -26
  105. package/dist/{policies-TJHO3VLE.cjs → policies-D4QNVJ26.cjs} +23 -23
  106. package/dist/{remote-session-CN3G7JNR.cjs → remote-session-EE6477O3.cjs} +10 -10
  107. package/dist/{scripts-X5CMYE2V.cjs → scripts-4VFYBXBE.cjs} +26 -26
  108. package/dist/{software-update-2UZKHTYM.cjs → software-update-OSDZQ5CP.cjs} +25 -25
  109. package/dist/{tickets-board-PLYD2NSY.cjs → tickets-board-44HO3LR4.cjs} +10 -10
  110. package/dist/types/navigation.d.ts +36 -0
  111. package/dist/types/navigation.d.ts.map +1 -1
  112. package/dist/utils/notifications.cjs +2 -0
  113. package/dist/utils/notifications.d.ts +1 -1
  114. package/dist/utils/notifications.d.ts.map +1 -1
  115. package/dist/utils/notifications.js +2 -0
  116. package/package.json +1 -1
  117. package/src/components/chat/chat-nav-sidebar.tsx +17 -4
  118. package/src/components/features/command-box.tsx +17 -19
  119. package/src/components/features/notifications/notification-category-icon.tsx +1 -1
  120. package/src/components/features/software/index.ts +11 -0
  121. package/src/components/features/software/software-action-form.tsx +28 -1
  122. package/src/components/features/software/update-settings-fields.tsx +265 -0
  123. package/src/components/help-center-pages/download-apps-page.tsx +4 -5
  124. package/src/components/navigation/account-popover.tsx +31 -2
  125. package/src/components/navigation/app-layout-side-panel.tsx +2 -7
  126. package/src/components/navigation/navigation-sidebar-grouped.tsx +37 -6
  127. package/src/components/navigation/navigation-sidebar-item.tsx +18 -1
  128. package/src/components/navigation/navigation-sidebar.tsx +116 -7
  129. package/src/components/product-demo/fixtures/software-update.ts +2 -2
  130. package/src/components/ui/panel-resize-handle.tsx +50 -8
  131. package/src/hooks/ui/index.ts +1 -0
  132. package/src/hooks/ui/use-clipped-label-tooltip.ts +20 -0
  133. package/src/hooks/ui/use-is-truncated.ts +2 -0
  134. package/src/hooks/ui/use-media-query.ts +2 -0
  135. package/src/hooks/ui/use-resizable-panel-size.ts +7 -1
  136. package/src/types/navigation.ts +37 -0
  137. 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 _chunkSWMUW3RRcjs = require('./chunk-SWMUW3RR.cjs');
14
- require('./chunk-APOMNC7H.cjs');
15
- require('./chunk-5L3UKDC6.cjs');
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-GRHF5SWL.cjs');
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-LC65AC6M.cjs');
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
- _chunkSWMUW3RRcjs.columnFromTicketStatus.call(void 0, "ACTIVE", [
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
- _chunkSWMUW3RRcjs.columnFromTicketStatus.call(void 0, "TECH_REQUIRED", [
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
- _chunkSWMUW3RRcjs.columnFromTicketStatus.call(void 0, "ON_HOLD", [
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
- _chunkSWMUW3RRcjs.columnFromTicketStatus.call(void 0,
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, _chunkSWMUW3RRcjs.Board, { columns, onChange: noop, initialCollapsed: compact ? void 0 : FOLDED }) });
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,wJAa1B,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,CAavF,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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.838",
3
+ "version": "0.0.840",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -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
- <span
169
- className={cn('min-w-0 flex-1 truncate text-h4', active ? 'text-ods-accent' : 'text-ods-text-primary')}
172
+ <FloatingTooltip
173
+ content={title}
174
+ side="top"
175
+ as="span"
176
+ disabled={!titleTooltip}
177
+ triggerClassName="min-w-0 flex-1"
170
178
  >
171
- {title}
172
- </span>
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
- const COMMAND_BOX_COPY_BUTTON_LAYOUT = 'shrink-0';
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
- <Button
188
- variant="bare"
189
- size="icon-sm"
190
- type="button"
191
- onClick={onCopy}
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
- <span
294
- className={cn(
295
- buttonVariants({ variant: 'transparent', size: 'icon-sm' }),
296
- COMMAND_BOX_COPY_BUTTON_LAYOUT,
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: () => onSubmit({ rows, mode, date, time, timeReference }),
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
  )}