@flamingo-stack/openframe-frontend-core 0.0.781 → 0.0.783

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 (217) hide show
  1. package/dist/case-study-card-WYZPBDDM.cjs +23 -0
  2. package/dist/{chunk-RJX33Y4Q.cjs → chunk-3INHO6GP.cjs} +22 -22
  3. package/dist/{chunk-TH5X2BXK.cjs → chunk-3PKORICR.cjs} +115 -115
  4. package/dist/{chunk-JHDPEYZH.cjs → chunk-4DKPNN2A.cjs} +17 -17
  5. package/dist/{chunk-L4XOCV7S.cjs → chunk-4DQ4CNAG.cjs} +10 -10
  6. package/dist/{chunk-HTSRCFXP.cjs → chunk-4MQASMIU.cjs} +7 -7
  7. package/dist/{chunk-3VINTJPE.cjs → chunk-5WMRVMXH.cjs} +5 -5
  8. package/dist/{chunk-OHXB6HUX.cjs → chunk-5XAWVXNI.cjs} +320 -320
  9. package/dist/{chunk-HLZUBJPL.cjs → chunk-62TMGBRO.cjs} +197 -197
  10. package/dist/{chunk-B6EQVH7D.cjs → chunk-6NEWJ6I2.cjs} +51 -51
  11. package/dist/{chunk-FWJ5YECN.cjs → chunk-7OJMOG34.cjs} +546 -544
  12. package/dist/{chunk-63OCO2G5.cjs → chunk-A3UZFFR3.cjs} +4 -4
  13. package/dist/{chunk-XHJI7R4J.cjs → chunk-AFSVWR3X.cjs} +46 -46
  14. package/dist/{chunk-LDGR5VCK.cjs → chunk-APO7GMZQ.cjs} +4 -4
  15. package/dist/{chunk-PID7LUDP.cjs → chunk-BAJB3JF3.cjs} +31 -31
  16. package/dist/{chunk-T7SDYBST.cjs → chunk-BE4OUWTA.cjs} +54 -54
  17. package/dist/{chunk-ZV6RQNXE.cjs → chunk-CBKXU77H.cjs} +46 -46
  18. package/dist/{chunk-IYU2ZH2J.cjs → chunk-CS5SZJFV.cjs} +2 -2
  19. package/dist/{chunk-Q7HXTF2C.cjs → chunk-DYF6XB27.cjs} +4 -4
  20. package/dist/{chunk-AKCBLZAO.cjs → chunk-E2ZZOYSM.cjs} +74 -62
  21. package/dist/{chunk-57NE7SHG.cjs → chunk-EFCWHAYC.cjs} +8 -8
  22. package/dist/{chunk-KWV23THO.cjs → chunk-EHQ2UGT4.cjs} +14 -14
  23. package/dist/{chunk-DJTPDK3W.cjs → chunk-F2FFJWOQ.cjs} +4 -4
  24. package/dist/{chunk-CDBFQVPA.cjs → chunk-FLS6DZEN.cjs} +46 -43
  25. package/dist/{chunk-VZKAAXU3.cjs → chunk-FS7CBRF4.cjs} +23 -23
  26. package/dist/{chunk-X6TXMWBV.cjs → chunk-H3RHAN6B.cjs} +61 -61
  27. package/dist/{chunk-HPGCUYAZ.cjs → chunk-KRXHRL3W.cjs} +110 -110
  28. package/dist/{chunk-D46WFWWI.cjs → chunk-LGISRUGF.cjs} +41 -39
  29. package/dist/{chunk-2OYKOHFK.cjs → chunk-LUWYWYNC.cjs} +2 -2
  30. package/dist/{chunk-N6YCOBLK.cjs → chunk-MGEUZRNQ.cjs} +101 -9
  31. package/dist/{chunk-YEJWNHD3.cjs → chunk-MKF6XX5A.cjs} +63 -63
  32. package/dist/{chunk-3IHGS44W.cjs → chunk-N2SVJJLU.cjs} +5 -5
  33. package/dist/{chunk-TZ6MTHUC.cjs → chunk-N5TPRCSS.cjs} +60 -60
  34. package/dist/{chunk-YNDH72VU.cjs → chunk-NNNRN4OF.cjs} +14 -14
  35. package/dist/{chunk-JQWYXC2E.cjs → chunk-ODDUGLYF.cjs} +110 -110
  36. package/dist/{chunk-T4ZVKEDP.cjs → chunk-OMTH355I.cjs} +3 -3
  37. package/dist/{chunk-OFX6XEVN.cjs → chunk-PQSTPJQQ.cjs} +13 -13
  38. package/dist/{chunk-YKJ4JN6T.cjs → chunk-RL45AU2C.cjs} +42 -42
  39. package/dist/{chunk-DIY4SJZI.cjs → chunk-RT6QATX4.cjs} +19 -19
  40. package/dist/{chunk-ODZ5XGWA.cjs → chunk-THOGSAFH.cjs} +2076 -2052
  41. package/dist/{chunk-UONQCE5N.cjs → chunk-TS6TISIF.cjs} +209 -208
  42. package/dist/{chunk-SMEX3BWO.cjs → chunk-UPQMFK5B.cjs} +7 -7
  43. package/dist/{chunk-5PBWAF2D.cjs → chunk-URFAMWCA.cjs} +44 -44
  44. package/dist/{chunk-VDTLVFCV.cjs → chunk-WHNI4QTG.cjs} +13 -13
  45. package/dist/{chunk-EYNQE2XN.cjs → chunk-WS7IDGEL.cjs} +6 -6
  46. package/dist/{chunk-QD7SKYCQ.cjs → chunk-WSBWP7IW.cjs} +3 -3
  47. package/dist/{chunk-RYIWADIB.cjs → chunk-XAA5LUHC.cjs} +12 -12
  48. package/dist/{chunk-XYKVOBIP.cjs → chunk-XKDJ5ISQ.cjs} +3 -3
  49. package/dist/{chunk-A7FSNBNV.cjs → chunk-YU23M33V.cjs} +173 -172
  50. package/dist/{chunk-ZPYFPLPD.cjs → chunk-YXZOP726.cjs} +10 -10
  51. package/dist/{chunk-4XDYSGRL.cjs → chunk-ZFOMRALU.cjs} +17 -17
  52. package/dist/{chunk-AFJEUBDS.cjs → chunk-ZJS45HQZ.cjs} +29 -29
  53. package/dist/{cloud-tenants-UAFVHKX7.cjs → cloud-tenants-QYW3MPPP.cjs} +32 -32
  54. package/dist/components/calendar.cjs +10 -10
  55. package/dist/components/case-studies/index.cjs +52 -52
  56. package/dist/components/category-card.d.ts.map +1 -1
  57. package/dist/components/category-card.js +1 -0
  58. package/dist/components/chat/ask-display.js +2 -2
  59. package/dist/components/chat/chat-context-memory-bar.js +2 -2
  60. package/dist/components/chat/chat-context-picker.d.ts.map +1 -1
  61. package/dist/components/chat/chat-context-picker.js +4 -2
  62. package/dist/components/chat/chat-input.d.ts.map +1 -1
  63. package/dist/components/chat/chat-input.js +2 -1
  64. package/dist/components/chat/chat-nav-sidebar.d.ts.map +1 -1
  65. package/dist/components/chat/chat-nav-sidebar.js +12 -1
  66. package/dist/components/chat/embeddable-chat.js +120 -98
  67. package/dist/components/chat/guide-mode-banner.js +1 -1
  68. package/dist/components/chat/index.cjs +26 -26
  69. package/dist/components/chat/mingo-welcome.js +1 -1
  70. package/dist/components/contact/index.cjs +33 -33
  71. package/dist/components/docs/index.cjs +36 -36
  72. package/dist/components/embeds/index.cjs +33 -33
  73. package/dist/components/faq/index.cjs +34 -34
  74. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  75. package/dist/components/features/capability-explorer.js +11 -1
  76. package/dist/components/features/command-box.js +1 -1
  77. package/dist/components/features/devices/devices-grid-filters.d.ts.map +1 -1
  78. package/dist/components/features/devices/devices-grid-filters.js +15 -4
  79. package/dist/components/features/filters-dropdown.d.ts.map +1 -1
  80. package/dist/components/features/filters-dropdown.js +6 -5
  81. package/dist/components/features/index.cjs +32 -32
  82. package/dist/components/features/model-token-rates.js +1 -1
  83. package/dist/components/features/notifications/notification-drawer.d.ts.map +1 -1
  84. package/dist/components/features/notifications/notification-drawer.js +1 -0
  85. package/dist/components/features/notifications/notification-tile.js +1 -1
  86. package/dist/components/features/paths-display.js +1 -1
  87. package/dist/components/features/remote-session/remote-session-events.d.ts.map +1 -1
  88. package/dist/components/features/remote-session/remote-session-events.js +1 -0
  89. package/dist/components/features/scripts/schedule-form/schedule-script-picker-card.js +1 -1
  90. package/dist/components/features/scripts/schedule-form/schedule-timing-fields.js +1 -1
  91. package/dist/components/features/select-button.js +0 -1
  92. package/dist/components/features/tags-selector.js +1 -1
  93. package/dist/components/help-center-pages/index.cjs +163 -163
  94. package/dist/components/index.cjs +205 -204
  95. package/dist/components/loading/loading-region.d.ts.map +1 -1
  96. package/dist/components/loading/loading-region.js +2 -2
  97. package/dist/components/meeting-scheduler/index.cjs +187 -187
  98. package/dist/components/navigation/index.cjs +35 -35
  99. package/dist/components/navigation/mobile-burger-menu.d.ts.map +1 -1
  100. package/dist/components/navigation/mobile-burger-menu.js +2 -1
  101. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  102. package/dist/components/navigation/multi-level-navigation.js +4 -2
  103. package/dist/components/navigation/navigation-sidebar-item.js +3 -3
  104. package/dist/components/onboarding-guides/index.cjs +35 -35
  105. package/dist/components/product-demo/index.cjs +45 -45
  106. package/dist/components/related-content/index.cjs +17 -17
  107. package/dist/components/tickets/index.cjs +39 -39
  108. package/dist/components/ui/allowed-domains-input.d.ts.map +1 -1
  109. package/dist/components/ui/allowed-domains-input.js +1 -0
  110. package/dist/components/ui/button/button-styles.d.ts +12 -4
  111. package/dist/components/ui/button/button-styles.d.ts.map +1 -1
  112. package/dist/components/ui/button/button-styles.js +99 -7
  113. package/dist/components/ui/button/button.d.ts +1 -1
  114. package/dist/components/ui/button/button.d.ts.map +1 -1
  115. package/dist/components/ui/button/button.js +3 -0
  116. package/dist/components/ui/file-manager/file-manager-breadcrumb.d.ts.map +1 -1
  117. package/dist/components/ui/file-manager/file-manager-breadcrumb.js +1 -0
  118. package/dist/components/ui/file-manager/index.cjs +56 -55
  119. package/dist/components/ui/file-upload.d.ts.map +1 -1
  120. package/dist/components/ui/file-upload.js +5 -3
  121. package/dist/components/ui/hidden-tags-popup.js +1 -1
  122. package/dist/components/ui/hover-dropdown.js +1 -1
  123. package/dist/components/ui/index.cjs +32 -32
  124. package/dist/components/ui/info-card.js +1 -1
  125. package/dist/components/ui/info-section.d.ts.map +1 -1
  126. package/dist/components/ui/info-section.js +1 -0
  127. package/dist/components/ui/loading-scope.d.ts.map +1 -1
  128. package/dist/components/ui/loading-scope.js +2 -2
  129. package/dist/components/ui/modal-v2.js +1 -1
  130. package/dist/components/ui/organization-card.d.ts.map +1 -1
  131. package/dist/components/ui/organization-card.js +2 -1
  132. package/dist/components/ui/page-actions.d.ts +2 -2
  133. package/dist/components/ui/page-actions.d.ts.map +1 -1
  134. package/dist/components/ui/password-input.js +1 -1
  135. package/dist/components/ui/service-card.js +3 -3
  136. package/dist/components/ui/tab-selector.d.ts.map +1 -1
  137. package/dist/components/ui/tab-selector.js +3 -3
  138. package/dist/components/ui/test-run.d.ts.map +1 -1
  139. package/dist/components/ui/test-run.js +2 -1
  140. package/dist/components/ui/textarea.d.ts.map +1 -1
  141. package/dist/components/ui/textarea.js +2 -1
  142. package/dist/components/ui/ticket-attachments-list.d.ts.map +1 -1
  143. package/dist/components/ui/ticket-attachments-list.js +3 -2
  144. package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
  145. package/dist/components/ui/ticket-info-section.js +1 -0
  146. package/dist/components/ui/ticket-note-card.d.ts.map +1 -1
  147. package/dist/components/ui/ticket-note-card.js +6 -4
  148. package/dist/components/ui/ticket-status-config-row.d.ts.map +1 -1
  149. package/dist/components/ui/ticket-status-config-row.js +1 -10
  150. package/dist/components/ui/toaster.js +1 -1
  151. package/dist/components/vendor-display-button.js +1 -1
  152. package/dist/{devices-TDKCKWRP.cjs → devices-DMMMEO2B.cjs} +33 -33
  153. package/dist/embed-shims/index.cjs +4 -4
  154. package/dist/embed-shims/next-image.cjs +4 -4
  155. package/dist/{embeddable-chat-HEL4Z2FL.cjs → embeddable-chat-OSSPL7L4.cjs} +226 -204
  156. package/dist/hooks/index.cjs +10 -10
  157. package/dist/index.cjs +48 -48
  158. package/dist/{knowledge-A5KJ4CAD.cjs → knowledge-XQQXVV6C.cjs} +33 -33
  159. package/dist/{logs-6WRBPIMM.cjs → logs-BHKMDCBP.cjs} +41 -41
  160. package/dist/{policies-ICRXHW3H.cjs → policies-5IY7QUED.cjs} +36 -36
  161. package/dist/{remote-session-MEV5JL2Z.cjs → remote-session-IEOWFBF7.cjs} +17 -17
  162. package/dist/{scripts-AZVCZE6C.cjs → scripts-ZQXRBGVK.cjs} +39 -39
  163. package/dist/{software-update-4ZBCGJGA.cjs → software-update-RGFRYL3N.cjs} +36 -36
  164. package/dist/{tickets-board-BJPQD3HE.cjs → tickets-board-EYKLSB36.cjs} +17 -17
  165. package/dist/{video-file-player-DETXW4OJ.cjs → video-file-player-ZU666VUY.cjs} +14 -14
  166. package/package.json +1 -1
  167. package/src/components/category-card.tsx +2 -0
  168. package/src/components/chat/ask-display.tsx +2 -2
  169. package/src/components/chat/chat-context-memory-bar.tsx +2 -2
  170. package/src/components/chat/chat-context-picker.tsx +4 -2
  171. package/src/components/chat/chat-input.tsx +3 -1
  172. package/src/components/chat/chat-nav-sidebar.tsx +10 -1
  173. package/src/components/chat/embeddable-chat.tsx +21 -4
  174. package/src/components/chat/guide-mode-banner.tsx +1 -1
  175. package/src/components/chat/mingo-welcome.tsx +1 -1
  176. package/src/components/features/capability-explorer.tsx +8 -1
  177. package/src/components/features/command-box.tsx +1 -1
  178. package/src/components/features/devices/devices-grid-filters.tsx +8 -1
  179. package/src/components/features/filters-dropdown.tsx +6 -1
  180. package/src/components/features/model-token-rates.tsx +1 -1
  181. package/src/components/features/notifications/notification-drawer.tsx +1 -0
  182. package/src/components/features/notifications/notification-tile.tsx +1 -1
  183. package/src/components/features/paths-display.tsx +1 -1
  184. package/src/components/features/remote-session/remote-session-events.tsx +2 -0
  185. package/src/components/features/scripts/schedule-form/schedule-script-picker-card.tsx +1 -1
  186. package/src/components/features/scripts/schedule-form/schedule-timing-fields.tsx +1 -1
  187. package/src/components/features/select-button.tsx +2 -2
  188. package/src/components/features/tags-selector.tsx +1 -1
  189. package/src/components/loading/loading-region.tsx +4 -1
  190. package/src/components/navigation/mobile-burger-menu.tsx +3 -1
  191. package/src/components/navigation/multi-level-navigation.tsx +6 -2
  192. package/src/components/navigation/navigation-sidebar-item.tsx +5 -5
  193. package/src/components/ui/allowed-domains-input.tsx +1 -0
  194. package/src/components/ui/button/button-styles.ts +106 -9
  195. package/src/components/ui/button/button.tsx +3 -0
  196. package/src/components/ui/file-manager/file-manager-breadcrumb.tsx +1 -0
  197. package/src/components/ui/file-upload.tsx +5 -3
  198. package/src/components/ui/hidden-tags-popup.tsx +1 -1
  199. package/src/components/ui/hover-dropdown.tsx +1 -1
  200. package/src/components/ui/info-card.tsx +1 -1
  201. package/src/components/ui/info-section.tsx +2 -0
  202. package/src/components/ui/loading-scope.tsx +2 -1
  203. package/src/components/ui/modal-v2.tsx +1 -1
  204. package/src/components/ui/organization-card.tsx +3 -1
  205. package/src/components/ui/page-actions.tsx +14 -2
  206. package/src/components/ui/password-input.tsx +1 -1
  207. package/src/components/ui/service-card.tsx +3 -3
  208. package/src/components/ui/tab-selector.tsx +5 -3
  209. package/src/components/ui/test-run.tsx +2 -1
  210. package/src/components/ui/textarea.tsx +3 -1
  211. package/src/components/ui/ticket-attachments-list.tsx +3 -2
  212. package/src/components/ui/ticket-info-section.tsx +1 -0
  213. package/src/components/ui/ticket-note-card.tsx +6 -4
  214. package/src/components/ui/ticket-status-config-row.tsx +1 -6
  215. package/src/components/ui/toaster.tsx +1 -1
  216. package/src/components/vendor-display-button.tsx +1 -1
  217. package/dist/case-study-card-CYJ3JXU6.cjs +0 -23
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
- var _chunkHLZUBJPLcjs = require('./chunk-HLZUBJPL.cjs');
4
+ var _chunk62TMGBROcjs = require('./chunk-62TMGBRO.cjs');
5
5
 
6
6
 
7
- var _chunkAKCBLZAOcjs = require('./chunk-AKCBLZAO.cjs');
7
+ var _chunkE2ZZOYSMcjs = require('./chunk-E2ZZOYSM.cjs');
8
8
 
9
9
 
10
10
 
@@ -18,15 +18,15 @@ var _chunkOJZBZH56cjs = require('./chunk-OJZBZH56.cjs');
18
18
 
19
19
 
20
20
 
21
- var _chunkYNDH72VUcjs = require('./chunk-YNDH72VU.cjs');
21
+ var _chunkNNNRN4OFcjs = require('./chunk-NNNRN4OF.cjs');
22
22
 
23
23
 
24
- var _chunkCDBFQVPAcjs = require('./chunk-CDBFQVPA.cjs');
24
+ var _chunkFLS6DZENcjs = require('./chunk-FLS6DZEN.cjs');
25
25
 
26
26
 
27
27
 
28
28
 
29
- var _chunkN6YCOBLKcjs = require('./chunk-N6YCOBLK.cjs');
29
+ var _chunkMGEUZRNQcjs = require('./chunk-MGEUZRNQ.cjs');
30
30
 
31
31
 
32
32
  var _chunkV45KLJQPcjs = require('./chunk-V45KLJQP.cjs');
@@ -41,14 +41,14 @@ var HORIZONTAL_NAV_CLASS = "flex items-stretch gap-6 bg-ods-bg";
41
41
  var HORIZONTAL_BRAND_CLASS = "hidden shrink-0 items-center gap-2.5 border-r border-ods-border pr-6 text-ods-text-primary text-h4 content-lg:flex";
42
42
  var HORIZONTAL_ROW_CLASS = "flex h-full items-center gap-1 [scrollbar-width:none] content-lg:items-stretch";
43
43
  var HORIZONTAL_ACTION_CLASS = "hidden shrink-0 items-center content-lg:flex";
44
- var PILL_CLASS = _chunkN6YCOBLKcjs.cn.call(void 0,
44
+ var PILL_CLASS = _chunkMGEUZRNQcjs.cn.call(void 0,
45
45
  "flex shrink-0 items-center whitespace-nowrap rounded-full border px-3 py-1.5 text-h6",
46
46
  "content-lg:rounded-none content-lg:border-x-0 content-lg:border-b-2 content-lg:border-t-0 content-lg:py-0"
47
47
  );
48
48
  var VERTICAL_NAV_CLASS = "relative bg-ods-bg";
49
49
  var VERTICAL_ROW_CLASS = "relative flex h-10 w-full items-stretch transition-all duration-200";
50
50
  var VERTICAL_BUTTON_LAYOUT_CLASS = "flex-1 justify-start";
51
- var VERTICAL_BUTTON_SKELETON_CLASS = _chunkN6YCOBLKcjs.cn.call(void 0, _chunkN6YCOBLKcjs.BUTTON_KIND_CLASS.tab, VERTICAL_BUTTON_LAYOUT_CLASS);
51
+ var VERTICAL_BUTTON_SKELETON_CLASS = _chunkMGEUZRNQcjs.cn.call(void 0, _chunkMGEUZRNQcjs.BUTTON_KIND_CLASS.tab, VERTICAL_BUTTON_LAYOUT_CLASS);
52
52
  function HorizontalSectionNav({
53
53
  sections,
54
54
  activeSection,
@@ -73,10 +73,10 @@ function HorizontalSectionNav({
73
73
  {
74
74
  ref: navRef,
75
75
  "aria-label": label,
76
- className: _chunkN6YCOBLKcjs.cn.call(void 0, HORIZONTAL_NAV_CLASS, STICKY_SECTION_NAV_HEIGHT_CLASS, className),
76
+ className: _chunkMGEUZRNQcjs.cn.call(void 0, HORIZONTAL_NAV_CLASS, STICKY_SECTION_NAV_HEIGHT_CLASS, className),
77
77
  children: [
78
78
  brand && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: HORIZONTAL_BRAND_CLASS, children: brand }),
79
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAKCBLZAOcjs.ScrollShadow, { axis: "horizontal", className: "min-w-0 flex-1", scrollClassName: HORIZONTAL_ROW_CLASS, children: sections.map((section) => {
79
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2ZZOYSMcjs.ScrollShadow, { axis: "horizontal", className: "min-w-0 flex-1", scrollClassName: HORIZONTAL_ROW_CLASS, children: sections.map((section) => {
80
80
  const active = activeSection === section.id;
81
81
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
82
82
  _chunkV45KLJQPcjs.next_link_default,
@@ -88,7 +88,7 @@ function HorizontalSectionNav({
88
88
  event.preventDefault();
89
89
  onSectionClick(section.id);
90
90
  },
91
- className: _chunkN6YCOBLKcjs.cn.call(void 0,
91
+ className: _chunkMGEUZRNQcjs.cn.call(void 0,
92
92
  PILL_CLASS,
93
93
  "transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent",
94
94
  active ? "border-ods-border bg-ods-card text-ods-text-primary content-lg:border-ods-accent content-lg:bg-transparent content-lg:bg-gradient-to-b content-lg:from-transparent content-lg:to-ods-accent/10" : "border-transparent text-ods-text-secondary hover:text-ods-text-primary content-lg:hover:bg-ods-bg-hover"
@@ -115,7 +115,7 @@ function StickySectionNav({
115
115
  action,
116
116
  label
117
117
  }) {
118
- if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) && sections.length === 0) {
118
+ if (_chunkMGEUZRNQcjs.useLoadingScope.call(void 0, ) && sections.length === 0) {
119
119
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
120
120
  StickySectionNavSkeleton,
121
121
  {
@@ -142,7 +142,7 @@ function StickySectionNav({
142
142
  );
143
143
  }
144
144
  const navHeight = sections.length * 40;
145
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "nav", { "aria-label": label, className: _chunkN6YCOBLKcjs.cn.call(void 0, VERTICAL_NAV_CLASS, className), children: [
145
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "nav", { "aria-label": label, className: _chunkMGEUZRNQcjs.cn.call(void 0, VERTICAL_NAV_CLASS, className), children: [
146
146
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
147
147
  "div",
148
148
  {
@@ -171,7 +171,7 @@ function StickySectionNav({
171
171
  }
172
172
  ),
173
173
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
174
- _chunkCDBFQVPAcjs.Button,
174
+ _chunkFLS6DZENcjs.Button,
175
175
  {
176
176
  variant: "tab",
177
177
  onClick: () => onSectionClick(section.id),
@@ -195,16 +195,16 @@ function StickySectionNavSkeleton({
195
195
  }) {
196
196
  const widths = Array.from({ length: count }, (_, i) => SKELETON_LABEL_WIDTHS[i % SKELETON_LABEL_WIDTHS.length]);
197
197
  if (orientation === "horizontal") {
198
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, HORIZONTAL_NAV_CLASS, STICKY_SECTION_NAV_HEIGHT_CLASS, className), "aria-hidden": true, inert: true, children: [
198
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, HORIZONTAL_NAV_CLASS, STICKY_SECTION_NAV_HEIGHT_CLASS, className), "aria-hidden": true, inert: true, children: [
199
199
  brand && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: HORIZONTAL_BRAND_CLASS, children: brand }),
200
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, "min-w-0 flex-1 overflow-hidden", HORIZONTAL_ROW_CLASS, "content-lg:items-center"), children: widths.map((width, i) => (
200
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, "min-w-0 flex-1 overflow-hidden", HORIZONTAL_ROW_CLASS, "content-lg:items-center"), children: widths.map((width, i) => (
201
201
  // The pill's own box (a tab from the content `lg` step), its label a bar.
202
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, PILL_CLASS, "border-transparent"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", className: width }) }, i)
202
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, PILL_CLASS, "border-transparent"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNNNRN4OFcjs.TextLineSkeleton, { type: "h6", className: width }) }, i)
203
203
  )) }),
204
204
  action && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: HORIZONTAL_ACTION_CLASS, children: action })
205
205
  ] });
206
206
  }
207
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, VERTICAL_NAV_CLASS, className), "aria-hidden": true, children: [
207
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, VERTICAL_NAV_CLASS, className), "aria-hidden": true, children: [
208
208
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
209
209
  "div",
210
210
  {
@@ -217,7 +217,7 @@ function StickySectionNavSkeleton({
217
217
  }
218
218
  }
219
219
  ),
220
- widths.map((width, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: VERTICAL_ROW_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: VERTICAL_BUTTON_SKELETON_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", className: width }) }) }, i))
220
+ widths.map((width, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: VERTICAL_ROW_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: VERTICAL_BUTTON_SKELETON_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNNNRN4OFcjs.TextLineSkeleton, { type: "h6", className: width }) }) }, i))
221
221
  ] });
222
222
  }
223
223
  function useSectionNavigation(sections, options) {
@@ -396,7 +396,7 @@ function useScrollSpy(sections, options = {}) {
396
396
  // src/components/navigation/multi-level-navigation.tsx
397
397
  var _lucidereact = require('lucide-react');
398
398
 
399
- var DEFAULT_FOLDER_INDEX_FILE2 = _chunkHLZUBJPLcjs.DEFAULT_FOLDER_INDEX_FILE;
399
+ var DEFAULT_FOLDER_INDEX_FILE2 = _chunk62TMGBROcjs.DEFAULT_FOLDER_INDEX_FILE;
400
400
  var NAV_LIST_CLASS = "space-y-2";
401
401
  var NAV_ITEM_CLASS = "space-y-1";
402
402
  var NAV_ROW_FRAME_CLASS = "relative w-full rounded-lg border transition-all duration-150";
@@ -416,9 +416,9 @@ function NavigationRowSkeleton({
416
416
  rowHeightClass,
417
417
  indentClass
418
418
  }) {
419
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, NAV_ROW_PAD_CLASS, indentClass), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, NAV_ROW_FRAME_CLASS, "border-ods-border bg-ods-card"), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkN6YCOBLKcjs.BUTTON_KIND_CLASS.row, rowHeightClass), children: [
420
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.MediaSkeleton.Icon, { size: "sm", className: "mr-2 flex-shrink-0" }),
421
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", className: NAV_SKELETON_LABEL_WIDTHS[index % NAV_SKELETON_LABEL_WIDTHS.length] })
419
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, NAV_ROW_PAD_CLASS, indentClass), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, NAV_ROW_FRAME_CLASS, "border-ods-border bg-ods-card"), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, _chunkMGEUZRNQcjs.BUTTON_KIND_CLASS.row, rowHeightClass), children: [
420
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNNNRN4OFcjs.MediaSkeleton.Icon, { size: "sm", className: "mr-2 flex-shrink-0" }),
421
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNNNRN4OFcjs.TextLineSkeleton, { type: "h6", className: NAV_SKELETON_LABEL_WIDTHS[index % NAV_SKELETON_LABEL_WIDTHS.length] })
422
422
  ] }) }) });
423
423
  }
424
424
  function NavigationTreeSkeleton({
@@ -427,7 +427,7 @@ function NavigationTreeSkeleton({
427
427
  indentClass,
428
428
  className
429
429
  }) {
430
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, NAV_LIST_CLASS, className), "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: NAV_ITEM_CLASS, "data-loading-item": true, children: [
430
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, NAV_LIST_CLASS, className), "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: NAV_ITEM_CLASS, "data-loading-item": true, children: [
431
431
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, NavigationRowSkeleton, { index: 0, rowHeightClass }),
432
432
  rows > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: NAV_CHILDREN_CLASS, children: Array.from({ length: rows - 1 }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: NAV_ITEM_CLASS, "data-loading-item": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, NavigationRowSkeleton, { index: i + 1, rowHeightClass, indentClass }) }, i)) })
433
433
  ] }) });
@@ -485,8 +485,8 @@ function MultiLevelNavigation({
485
485
  className,
486
486
  folderIndexFile = DEFAULT_FOLDER_INDEX_FILE2
487
487
  }) {
488
- if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MultiLevelNavigationSkeleton, { className });
489
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, NAV_LIST_CLASS, className), role: "list", "aria-label": "Navigation list", children: nodes.map((node) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
488
+ if (_chunkMGEUZRNQcjs.useLoadingScope.call(void 0, ) || isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MultiLevelNavigationSkeleton, { className });
489
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, NAV_LIST_CLASS, className), role: "list", "aria-label": "Navigation list", children: nodes.map((node) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
490
490
  NavigationItem,
491
491
  {
492
492
  node,
@@ -514,21 +514,22 @@ function NavigationItem({
514
514
  const children = _nullishCoalesce(node.children, () => ( []));
515
515
  const hasChildren = children.length > 0;
516
516
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: NAV_ITEM_CLASS, role: "listitem", "data-loading-item": true, children: [
517
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, NAV_ROW_PAD_CLASS, level > 0 && NAV_INDENT_CLASS.desktop), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
517
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, NAV_ROW_PAD_CLASS, level > 0 && NAV_INDENT_CLASS.desktop), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
518
518
  "div",
519
519
  {
520
- className: _chunkN6YCOBLKcjs.cn.call(void 0,
520
+ className: _chunkMGEUZRNQcjs.cn.call(void 0,
521
521
  NAV_ROW_FRAME_CLASS,
522
522
  isSelected ? "border-ods-border bg-ods-border" : "border-ods-border bg-ods-card"
523
523
  ),
524
524
  children: [
525
525
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative flex items-center", children: [
526
526
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
527
- _chunkCDBFQVPAcjs.Button,
527
+ _chunkFLS6DZENcjs.Button,
528
528
  {
529
529
  variant: "row",
530
530
  "data-state": isSelected ? "active" : void 0,
531
- className: _chunkN6YCOBLKcjs.cn.call(void 0, NAV_ROW_LAYOUT_CLASS, NAV_ROW_HEIGHT.desktop),
531
+ "data-tone": "muted",
532
+ className: _chunkMGEUZRNQcjs.cn.call(void 0, NAV_ROW_LAYOUT_CLASS, NAV_ROW_HEIGHT.desktop),
532
533
  onClick: () => onNodeClick(node),
533
534
  "aria-label": `${isSelected ? "Selected" : "Select"} ${node.name}`,
534
535
  children: [
@@ -539,9 +540,9 @@ function NavigationItem({
539
540
  }
540
541
  ),
541
542
  hasChildren && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
542
- _chunkCDBFQVPAcjs.Button,
543
+ _chunkFLS6DZENcjs.Button,
543
544
  {
544
- variant: "transparent",
545
+ variant: "bare",
545
546
  size: "icon-sm",
546
547
  className: "mr-[var(--spacing-system-xxs)] shrink-0",
547
548
  onClick: (e) => {
@@ -586,8 +587,8 @@ function MobileNavigationDropdown({
586
587
  className,
587
588
  folderIndexFile = DEFAULT_FOLDER_INDEX_FILE2
588
589
  }) {
589
- if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MobileNavigationDropdownSkeleton, { className });
590
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, NAV_LIST_CLASS, className), children: nodes.map((node) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
590
+ if (_chunkMGEUZRNQcjs.useLoadingScope.call(void 0, ) || isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MobileNavigationDropdownSkeleton, { className });
591
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, NAV_LIST_CLASS, className), children: nodes.map((node) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
591
592
  MobileNavigationItem,
592
593
  {
593
594
  node,
@@ -615,21 +616,22 @@ function MobileNavigationItem({
615
616
  const children = _nullishCoalesce(node.children, () => ( []));
616
617
  const hasChildren = children.length > 0;
617
618
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: NAV_ITEM_CLASS, "data-loading-item": true, children: [
618
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, NAV_ROW_PAD_CLASS, level > 0 && NAV_INDENT_CLASS.mobile), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
619
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkMGEUZRNQcjs.cn.call(void 0, NAV_ROW_PAD_CLASS, level > 0 && NAV_INDENT_CLASS.mobile), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
619
620
  "div",
620
621
  {
621
- className: _chunkN6YCOBLKcjs.cn.call(void 0,
622
+ className: _chunkMGEUZRNQcjs.cn.call(void 0,
622
623
  NAV_ROW_FRAME_CLASS,
623
624
  isSelected ? "border-ods-border bg-ods-border" : "border-ods-border bg-ods-card"
624
625
  ),
625
626
  children: [
626
627
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative flex items-center", children: [
627
628
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
628
- _chunkCDBFQVPAcjs.Button,
629
+ _chunkFLS6DZENcjs.Button,
629
630
  {
630
631
  variant: "row",
631
632
  "data-state": isSelected ? "active" : void 0,
632
- className: _chunkN6YCOBLKcjs.cn.call(void 0, NAV_ROW_LAYOUT_CLASS, NAV_ROW_HEIGHT.mobile),
633
+ "data-tone": "muted",
634
+ className: _chunkMGEUZRNQcjs.cn.call(void 0, NAV_ROW_LAYOUT_CLASS, NAV_ROW_HEIGHT.mobile),
633
635
  onClick: () => onNodeClick(node),
634
636
  children: [
635
637
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-2 flex-shrink-0", children: node.type === "folder" ? isExpanded ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.FolderOpen, { className: "h-4 w-4" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Folder, { className: "h-4 w-4" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.FileText, { className: "h-4 w-4" }) }),
@@ -639,9 +641,9 @@ function MobileNavigationItem({
639
641
  }
640
642
  ),
641
643
  hasChildren && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
642
- _chunkCDBFQVPAcjs.Button,
644
+ _chunkFLS6DZENcjs.Button,
643
645
  {
644
- variant: "transparent",
646
+ variant: "bare",
645
647
  size: "icon-sm",
646
648
  className: "mr-[var(--spacing-system-xxs)] shrink-0",
647
649
  onClick: (e) => {
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunkIYU2ZH2Jcjs = require('./chunk-IYU2ZH2J.cjs');
4
+ var _chunkCS5SZJFVcjs = require('./chunk-CS5SZJFV.cjs');
5
5
 
6
6
  // src/components/tool-icon.tsx
7
7
  var _react = require('react');
@@ -12,7 +12,7 @@ function toolIcon(toolType) {
12
12
  const words = toolType.toLowerCase().split("_").filter(Boolean);
13
13
  let icon = null;
14
14
  for (let count = words.length; count >= 1 && !icon; count -= 1) {
15
- icon = _chunkIYU2ZH2Jcjs.findIcon.call(void 0, `${words.slice(0, count).join("-")}-logo-grey`);
15
+ icon = _chunkCS5SZJFVcjs.findIcon.call(void 0, `${words.slice(0, count).join("-")}-logo-grey`);
16
16
  }
17
17
  TOOL_ICONS.set(toolType, icon);
18
18
  return icon;
@@ -64,8 +64,8 @@ function AnnouncedLoadingScope({
64
64
  }) {
65
65
  const outer = useLoadingScope();
66
66
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
67
- status && active && !outer && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingStatus, { label }),
68
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingScope, { active, as, className, children })
67
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingScope, { active, as, className, children }),
68
+ status && active && !outer && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingStatus, { label })
69
69
  ] });
70
70
  }
71
71
  function InertWhileLoading({
@@ -89,7 +89,8 @@ function LoadingItems({ count, children }) {
89
89
  // src/components/ui/button/button-styles.ts
90
90
  var buttonSurfaceClasses = {
91
91
  accent: "bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover active:bg-ods-accent-active disabled:bg-ods-disabled aria-disabled:bg-ods-disabled",
92
- outline: "bg-ods-card text-ods-text-primary hover:bg-ods-bg-hover active:bg-ods-bg-active disabled:bg-ods-card disabled:text-ods-text-disabled aria-disabled:bg-ods-card aria-disabled:text-ods-text-disabled",
92
+ // `data-tone="accent"`: the accent fill on hover (a card's "view" action).
93
+ outline: "bg-ods-card text-ods-text-primary hover:bg-ods-bg-hover active:bg-ods-bg-active disabled:bg-ods-card disabled:text-ods-text-disabled aria-disabled:bg-ods-card aria-disabled:text-ods-text-disabled data-[tone=accent]:hover:bg-ods-accent",
93
94
  transparent: "bg-transparent text-ods-text-primary hover:bg-ods-bg-hover active:bg-ods-bg-active disabled:bg-transparent disabled:text-ods-text-disabled aria-disabled:bg-transparent aria-disabled:text-ods-text-disabled",
94
95
  destructive: "bg-ods-error text-ods-text-on-accent hover:bg-ods-error-hover active:bg-ods-error-active disabled:bg-ods-disabled aria-disabled:bg-ods-disabled",
95
96
  warning: "bg-ods-warning text-ods-text-on-accent hover:bg-ods-warning-hover active:bg-ods-warning-active disabled:bg-ods-disabled aria-disabled:bg-ods-disabled",
@@ -108,7 +109,39 @@ var buttonSurfaceClasses = {
108
109
  // hover, and no surface in any state. Promoted to a variant because the
109
110
  // disclosure toggle was a primitive <button> restating these classes. Pair
110
111
  // with size="compact" and noPaddingX so the label aligns with the text above.
111
- link: "bg-transparent text-ods-text-secondary hover:bg-transparent hover:text-ods-accent active:bg-transparent active:text-ods-accent-active disabled:bg-transparent disabled:text-ods-text-disabled aria-disabled:bg-transparent aria-disabled:text-ods-text-disabled",
112
+ //
113
+ // States, from the element's attributes: `data-state="active"` holds the accent (a filter trigger with filters
114
+ // applied). `data-tone="neutral"` takes the primary text on hover instead of the accent (a secondary text action:
115
+ // "Select all", "Mark all read"); `data-tone="primary"` sits in the primary text and takes the accent on hover (a
116
+ // value that opens something: an info row's link, a breadcrumb).
117
+ link: [
118
+ "bg-transparent text-ods-text-secondary hover:bg-transparent hover:text-ods-accent active:bg-transparent active:text-ods-accent-active disabled:bg-transparent disabled:text-ods-text-disabled aria-disabled:bg-transparent aria-disabled:text-ods-text-disabled",
119
+ "data-[tone=neutral]:hover:text-ods-text-primary",
120
+ "data-[tone=primary]:text-ods-text-primary data-[tone=primary]:hover:text-ods-accent",
121
+ "data-[state=active]:text-ods-accent data-[state=active]:hover:text-ods-accent data-[tone=neutral]:data-[state=active]:hover:text-ods-accent"
122
+ ].join(" "),
123
+ // A bare glyph control with no surface (a composer's send / add-context, a copy, a close, a field's clear): the
124
+ // secondary text, the primary on hover and keyboard focus, faded when disabled. Distinct from `transparent`, which
125
+ // is primary text on a hover fill. States, from the element's attributes:
126
+ // - `aria-expanded="true"`: its popup is open, the glyph stays lit (primary);
127
+ // - `data-state="active"`: the glyph is armed (the composer's send while the editor has focus), the accent;
128
+ // - `data-tone="accent"`: a trigger that opens and presses in the accent (the composer's add-context);
129
+ // - `data-tone="danger"`: a removal that takes the error colour on hover;
130
+ // - `data-tone="error"` / `data-tone="success"`: a glyph drawn in that colour (an error's copy, a done state),
131
+ // dimmed on hover;
132
+ // - `data-tone="field"`: a field's adornment, lit in the accent while the field (the enclosing `group`) has focus
133
+ // and in the error colour while it is invalid (`data-invalid` on the group).
134
+ bare: [
135
+ "bg-transparent text-ods-text-secondary outline-none hover:bg-transparent hover:text-ods-text-primary focus-visible:text-ods-text-primary active:bg-transparent",
136
+ "aria-expanded:text-ods-text-primary",
137
+ "data-[state=active]:text-ods-accent",
138
+ "data-[tone=accent]:aria-expanded:text-ods-accent data-[tone=accent]:active:text-ods-accent",
139
+ "data-[tone=danger]:hover:text-ods-error",
140
+ "data-[tone=error]:text-ods-error data-[tone=error]:hover:text-ods-error data-[tone=error]:hover:opacity-80",
141
+ "data-[tone=success]:text-ods-success data-[tone=success]:hover:text-ods-success data-[tone=success]:hover:opacity-80",
142
+ "data-[tone=field]:group-has-[textarea:focus]:text-ods-accent data-[tone=field]:focus-visible:text-ods-accent data-[tone=field]:group-data-[invalid]:text-ods-error",
143
+ "disabled:cursor-not-allowed disabled:bg-transparent disabled:opacity-40 disabled:hover:text-ods-text-secondary aria-disabled:opacity-40"
144
+ ].join(" "),
112
145
  // Chrome that sits ON media (video cards, image lightboxes): a scrim disc so
113
146
  // the glyph stays legible over an arbitrary frame. Promoted to a variant
114
147
  // because the walkthrough card, its theater and the bite cards were each
@@ -179,22 +212,62 @@ var BUTTON_KIND_CLASS = {
179
212
  "h-11 rounded-[6px] md:h-12",
180
213
  "border-ods-border bg-ods-card text-ods-text-primary text-h4 transition-colors duration-200",
181
214
  "enabled:hover:border-ods-border-hover enabled:hover:bg-ods-bg-hover enabled:active:border-ods-border-active enabled:active:bg-ods-bg-active",
215
+ // Open: the accent border, held under the cursor (a hover must not read as closing it).
182
216
  "data-[state=open]:border-ods-accent aria-expanded:border-ods-accent",
183
- "data-[invalid]:border-ods-error enabled:data-[invalid]:hover:border-ods-error",
217
+ "enabled:data-[state=open]:hover:border-ods-accent enabled:aria-expanded:hover:border-ods-accent",
218
+ // Selected (a choice drawn as a field, `aria-selected="true"`): the accent border on the accent's light fill,
219
+ // whose hover and press are the fill's own steps.
220
+ "aria-selected:border-ods-accent aria-selected:bg-ods-open-yellow-light",
221
+ "enabled:aria-selected:hover:border-ods-accent enabled:aria-selected:hover:bg-ods-open-yellow-light-hover",
222
+ "enabled:aria-selected:active:border-ods-accent enabled:aria-selected:active:bg-ods-open-yellow-light-action",
223
+ // Invalid wins over open.
224
+ "data-[invalid]:border-ods-error enabled:data-[invalid]:hover:border-ods-error enabled:data-[invalid]:active:border-ods-error",
225
+ "data-[invalid]:data-[state=open]:border-ods-error data-[invalid]:aria-expanded:border-ods-error",
226
+ "enabled:data-[invalid]:data-[state=open]:hover:border-ods-error enabled:data-[invalid]:aria-expanded:hover:border-ods-error",
184
227
  "disabled:cursor-not-allowed disabled:bg-ods-bg disabled:text-ods-text-disabled disabled:[&_svg]:text-ods-text-disabled",
185
228
  "outline-none focus-visible:border-ods-accent",
186
229
  "[&_svg]:shrink-0"
187
230
  ].join(" "),
188
231
  // A clickable row of a list, a menu or a navigation: full width, its content on the left, the hover and the
189
- // selected surface of the list.
232
+ // selected surface of the list. The selected row (`data-state="active"`) takes the hover surface; a list that marks
233
+ // its selection differently names its look with `data-tone` (the attribute, on the row and on its skeleton):
234
+ // - `accent`: the accent's secondary fill, no hover surface (a chat list's open conversation);
235
+ // - `link`: the accent text, no surface at all (a chat rail's navigation entries);
236
+ // - `surface`: the raised surface, the hover still showing over it (a filter dropdown's checked option);
237
+ // - `muted`: the border-grey fill, held under the cursor (a timeline's current event, a docs tree's open page);
238
+ // - `card`: a card with its border, no hover over it; idle rows keep a transparent border (a capability list);
239
+ // - `framed`: every row a bordered card, the selected one with the accent border (the mobile menu's entries).
190
240
  row: [
191
241
  "flex w-full items-center gap-[var(--spacing-system-s)] rounded-md px-[var(--spacing-system-m)] py-[var(--spacing-system-s)] text-left",
192
242
  "bg-transparent text-ods-text-primary text-h4 transition-colors duration-150",
193
- "hover:bg-ods-bg-hover active:bg-ods-bg-active data-[state=active]:bg-ods-bg-active",
243
+ "hover:bg-ods-bg-hover active:bg-ods-bg-active data-[state=active]:bg-ods-bg-hover",
244
+ "data-[tone=accent]:hover:bg-transparent data-[tone=accent]:active:bg-transparent",
245
+ "data-[tone=accent]:data-[state=active]:bg-ods-accent-secondary data-[tone=accent]:data-[state=active]:hover:bg-ods-accent-secondary data-[tone=accent]:data-[state=active]:active:bg-ods-accent-secondary",
246
+ "data-[tone=link]:hover:bg-transparent data-[tone=link]:active:bg-transparent data-[tone=link]:data-[state=active]:bg-transparent data-[tone=link]:data-[state=active]:text-ods-accent",
247
+ "data-[tone=surface]:data-[state=active]:bg-ods-bg-surface data-[tone=surface]:data-[state=active]:hover:bg-ods-bg-hover",
248
+ "data-[tone=muted]:data-[state=active]:bg-ods-border",
249
+ "data-[tone=card]:border data-[tone=card]:border-transparent data-[tone=card]:data-[state=active]:border-ods-border data-[tone=card]:data-[state=active]:bg-ods-card",
250
+ "data-[tone=framed]:border data-[tone=framed]:border-ods-border data-[tone=framed]:bg-ods-card data-[tone=framed]:data-[state=active]:border-ods-accent data-[tone=framed]:data-[state=active]:bg-ods-card data-[tone=framed]:data-[state=active]:hover:bg-ods-bg-hover",
194
251
  "disabled:cursor-not-allowed disabled:text-ods-text-disabled disabled:hover:bg-transparent",
195
252
  KIND_FOCUS_INSET,
196
253
  "[&_svg]:shrink-0"
197
254
  ].join(" "),
255
+ // A navigation rail's entry (the app sidebar): the row's box with the rail's two layers. The hover is a wash on its
256
+ // own layer (`::after`), so it can fade while the current page switches in a single frame: the current page's entry
257
+ // (`data-state="active"`) takes the accent's light fill, the accent text and glyphs and the accent bar on its leading
258
+ // edge (`::before`). An entry whose route is still committing (`aria-busy="true"`) holds the hover wash and nothing
259
+ // else.
260
+ rail: [
261
+ "relative isolate flex w-full items-center justify-start gap-[var(--spacing-system-s)] px-[var(--spacing-system-m)] py-[var(--spacing-system-s)] text-left",
262
+ "bg-transparent text-ods-text-primary text-h4 [&_svg]:fill-ods-text-secondary",
263
+ "after:pointer-events-none after:absolute after:inset-0 after:-z-10 after:bg-ods-bg-hover after:opacity-0 after:transition-opacity after:duration-150 after:content-['']",
264
+ "before:absolute before:bottom-0 before:left-0 before:top-0 before:w-1 before:content-['']",
265
+ "hover:after:opacity-100 aria-busy:after:opacity-100",
266
+ "data-[state=active]:bg-ods-open-yellow-light data-[state=active]:text-ods-accent data-[state=active]:[&_svg]:fill-ods-accent data-[state=active]:before:bg-ods-accent data-[state=active]:after:opacity-0",
267
+ "disabled:cursor-not-allowed disabled:text-ods-text-secondary disabled:opacity-50 disabled:after:opacity-0",
268
+ KIND_FOCUS_INSET,
269
+ "[&_svg]:shrink-0"
270
+ ].join(" "),
198
271
  // A tab of a tab strip or a tab list: secondary until it is the open one. A strip that marks its open and hovered
199
272
  // tab with the accent fade (the admin strip) says so on each tab with `data-emphasis="fade"`. ODS colour vars hold
200
273
  // hex values, so a Tailwind alpha modifier would produce no CSS; color-mix() derives the 10% stop from the token.
@@ -208,12 +281,29 @@ var BUTTON_KIND_CLASS = {
208
281
  KIND_FOCUS_INSET,
209
282
  "[&_svg]:shrink-0"
210
283
  ].join(" "),
284
+ // A segment of a segmented control (`TabSelector`): the label on the strip, a hover fill, and the selected segment
285
+ // (`data-state="active"`) filled with the raised surface; `data-tone="accent"` fills it with the accent instead. A
286
+ // disabled selected segment keeps the raised surface with secondary text.
287
+ segment: [
288
+ "flex items-center justify-center gap-[var(--spacing-system-xs)] whitespace-nowrap rounded-xs p-[var(--spacing-system-xsf)]",
289
+ "bg-transparent text-ods-text-primary text-h4 transition-colors duration-200",
290
+ "hover:bg-ods-bg-hover",
291
+ "data-[state=active]:cursor-default data-[state=active]:bg-ods-bg-surface data-[state=active]:text-ods-text-primary data-[state=active]:hover:bg-ods-bg-surface",
292
+ "data-[tone=accent]:data-[state=active]:bg-ods-accent data-[tone=accent]:data-[state=active]:text-ods-text-on-accent data-[tone=accent]:data-[state=active]:hover:bg-ods-accent",
293
+ "disabled:cursor-not-allowed disabled:bg-transparent disabled:text-ods-text-secondary disabled:hover:bg-transparent",
294
+ "disabled:data-[state=active]:bg-ods-bg-surface disabled:data-[state=active]:text-ods-text-secondary disabled:data-[state=active]:hover:bg-ods-bg-surface",
295
+ "disabled:data-[tone=accent]:data-[state=active]:bg-ods-bg-surface disabled:data-[tone=accent]:data-[state=active]:text-ods-text-secondary disabled:data-[tone=accent]:data-[state=active]:hover:bg-ods-bg-surface",
296
+ KIND_FOCUS_INSET,
297
+ "[&_svg]:shrink-0"
298
+ ].join(" "),
211
299
  // A choice drawn as a pill (a filter, a quick question, an answer option): bordered, the accent when picked.
212
300
  chip: [
213
301
  "inline-flex h-8 items-center gap-[var(--spacing-system-xxs)] rounded-full border px-[var(--spacing-system-sf)]",
214
302
  "border-ods-border bg-ods-card text-ods-text-primary text-h6 transition-colors duration-200",
215
303
  "hover:border-ods-border-hover hover:bg-ods-bg-hover",
216
304
  "aria-pressed:border-ods-accent data-[state=active]:border-ods-accent",
305
+ // `data-tone="accent"`: a pill that links somewhere takes the accent border on hover (a vendor pill).
306
+ "data-[tone=accent]:hover:border-ods-accent",
217
307
  "disabled:cursor-not-allowed disabled:text-ods-text-disabled disabled:hover:bg-ods-card",
218
308
  KIND_FOCUS,
219
309
  "[&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0"
@@ -222,11 +312,13 @@ var BUTTON_KIND_CLASS = {
222
312
  // content is the look; the button gives it the click, the keyboard and the focus ring.
223
313
  card: ["relative block w-full rounded-md text-left text-ods-text-primary", KIND_FOCUS].join(" "),
224
314
  // A cell of a bar (a header's or a chat's top bar): the bar's full height, an icon or a short label, secondary
225
- // until hovered or pressed.
315
+ // until hovered. The current cell (`data-state="active"`: the header's open section) takes the pressed surface and
316
+ // the primary text.
226
317
  cell: [
227
318
  "flex h-full shrink-0 items-center justify-center gap-[var(--spacing-system-xsf)] px-[var(--spacing-system-m)]",
228
319
  "bg-transparent text-ods-text-secondary text-h4 transition-colors duration-200",
229
- "hover:bg-ods-bg-hover hover:text-ods-text-primary aria-pressed:text-ods-accent aria-expanded:text-ods-text-primary data-[state=active]:text-ods-accent",
320
+ "hover:bg-ods-bg-hover hover:text-ods-text-primary aria-expanded:text-ods-text-primary",
321
+ "data-[state=active]:bg-ods-bg-active data-[state=active]:text-ods-text-primary",
230
322
  KIND_FOCUS_INSET,
231
323
  "[&_svg]:h-6 [&_svg]:w-6 [&_svg]:shrink-0"
232
324
  ].join(" ")