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

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 (215) hide show
  1. package/dist/case-study-card-WYZPBDDM.cjs +23 -0
  2. package/dist/{chunk-D46WFWWI.cjs → chunk-2EXD2RSC.cjs} +41 -39
  3. package/dist/{chunk-RJX33Y4Q.cjs → chunk-3INHO6GP.cjs} +22 -22
  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-VDTLVFCV.cjs → chunk-7DKDVJMR.cjs} +13 -13
  10. package/dist/{chunk-FWJ5YECN.cjs → chunk-7OJMOG34.cjs} +546 -544
  11. package/dist/{chunk-63OCO2G5.cjs → chunk-A3UZFFR3.cjs} +4 -4
  12. package/dist/{chunk-ODZ5XGWA.cjs → chunk-A4YUTS6Q.cjs} +2076 -2052
  13. package/dist/{chunk-T7SDYBST.cjs → chunk-BE4OUWTA.cjs} +54 -54
  14. package/dist/{chunk-YKJ4JN6T.cjs → chunk-C42BXIY7.cjs} +42 -42
  15. package/dist/{chunk-HPGCUYAZ.cjs → chunk-C5UUWXHE.cjs} +110 -110
  16. package/dist/{chunk-ZV6RQNXE.cjs → chunk-CBKXU77H.cjs} +46 -46
  17. package/dist/{chunk-IYU2ZH2J.cjs → chunk-CS5SZJFV.cjs} +2 -2
  18. package/dist/{chunk-Q7HXTF2C.cjs → chunk-DYF6XB27.cjs} +4 -4
  19. package/dist/{chunk-AKCBLZAO.cjs → chunk-E2ZZOYSM.cjs} +74 -62
  20. package/dist/{chunk-57NE7SHG.cjs → chunk-EFCWHAYC.cjs} +8 -8
  21. package/dist/{chunk-KWV23THO.cjs → chunk-EHQ2UGT4.cjs} +14 -14
  22. package/dist/{chunk-DJTPDK3W.cjs → chunk-F2FFJWOQ.cjs} +4 -4
  23. package/dist/{chunk-CDBFQVPA.cjs → chunk-FLS6DZEN.cjs} +46 -43
  24. package/dist/{chunk-VZKAAXU3.cjs → chunk-FS7CBRF4.cjs} +23 -23
  25. package/dist/{chunk-B6EQVH7D.cjs → chunk-GFRKNUJZ.cjs} +51 -51
  26. package/dist/{chunk-PID7LUDP.cjs → chunk-I7LRZR4Q.cjs} +31 -31
  27. package/dist/{chunk-A7FSNBNV.cjs → chunk-ISB7LW3D.cjs} +173 -172
  28. package/dist/{chunk-LDGR5VCK.cjs → chunk-IZKEWQJN.cjs} +4 -4
  29. package/dist/{chunk-X6TXMWBV.cjs → chunk-JGKPEGZN.cjs} +61 -61
  30. package/dist/{chunk-EYNQE2XN.cjs → chunk-LTF6UDGO.cjs} +6 -6
  31. package/dist/{chunk-2OYKOHFK.cjs → chunk-LUWYWYNC.cjs} +2 -2
  32. package/dist/{chunk-5PBWAF2D.cjs → chunk-MDGDL3C7.cjs} +44 -44
  33. package/dist/{chunk-N6YCOBLK.cjs → chunk-MGEUZRNQ.cjs} +101 -9
  34. package/dist/{chunk-YEJWNHD3.cjs → chunk-MKF6XX5A.cjs} +63 -63
  35. package/dist/{chunk-3IHGS44W.cjs → chunk-N2SVJJLU.cjs} +5 -5
  36. package/dist/{chunk-TZ6MTHUC.cjs → chunk-N5TPRCSS.cjs} +60 -60
  37. package/dist/{chunk-HLZUBJPL.cjs → chunk-N7QNWHJA.cjs} +197 -197
  38. package/dist/{chunk-YNDH72VU.cjs → chunk-NNNRN4OF.cjs} +14 -14
  39. package/dist/{chunk-JQWYXC2E.cjs → chunk-ODDUGLYF.cjs} +110 -110
  40. package/dist/{chunk-T4ZVKEDP.cjs → chunk-OMTH355I.cjs} +3 -3
  41. package/dist/{chunk-TH5X2BXK.cjs → chunk-QV4GHAWN.cjs} +115 -115
  42. package/dist/{chunk-DIY4SJZI.cjs → chunk-RT6QATX4.cjs} +19 -19
  43. package/dist/{chunk-UONQCE5N.cjs → chunk-TS6TISIF.cjs} +209 -208
  44. package/dist/{chunk-SMEX3BWO.cjs → chunk-UPQMFK5B.cjs} +7 -7
  45. package/dist/{chunk-XYKVOBIP.cjs → chunk-VH3KQSI2.cjs} +3 -3
  46. package/dist/{chunk-OFX6XEVN.cjs → chunk-VZUV2FCP.cjs} +13 -13
  47. package/dist/{chunk-QD7SKYCQ.cjs → chunk-WSBWP7IW.cjs} +3 -3
  48. package/dist/{chunk-RYIWADIB.cjs → chunk-XAA5LUHC.cjs} +12 -12
  49. package/dist/{chunk-XHJI7R4J.cjs → chunk-YX7X5QQN.cjs} +46 -46
  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-LXKEG5N4.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/guide-mode-banner.js +1 -1
  67. package/dist/components/chat/index.cjs +26 -26
  68. package/dist/components/chat/mingo-welcome.js +1 -1
  69. package/dist/components/contact/index.cjs +33 -33
  70. package/dist/components/docs/index.cjs +36 -36
  71. package/dist/components/embeds/index.cjs +33 -33
  72. package/dist/components/faq/index.cjs +34 -34
  73. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  74. package/dist/components/features/capability-explorer.js +11 -1
  75. package/dist/components/features/command-box.js +1 -1
  76. package/dist/components/features/devices/devices-grid-filters.d.ts.map +1 -1
  77. package/dist/components/features/devices/devices-grid-filters.js +15 -4
  78. package/dist/components/features/filters-dropdown.d.ts.map +1 -1
  79. package/dist/components/features/filters-dropdown.js +6 -5
  80. package/dist/components/features/index.cjs +32 -32
  81. package/dist/components/features/model-token-rates.js +1 -1
  82. package/dist/components/features/notifications/notification-drawer.d.ts.map +1 -1
  83. package/dist/components/features/notifications/notification-drawer.js +1 -0
  84. package/dist/components/features/notifications/notification-tile.js +1 -1
  85. package/dist/components/features/paths-display.js +1 -1
  86. package/dist/components/features/remote-session/remote-session-events.d.ts.map +1 -1
  87. package/dist/components/features/remote-session/remote-session-events.js +1 -0
  88. package/dist/components/features/scripts/schedule-form/schedule-script-picker-card.js +1 -1
  89. package/dist/components/features/scripts/schedule-form/schedule-timing-fields.js +1 -1
  90. package/dist/components/features/select-button.js +0 -1
  91. package/dist/components/features/tags-selector.js +1 -1
  92. package/dist/components/help-center-pages/index.cjs +163 -163
  93. package/dist/components/index.cjs +205 -204
  94. package/dist/components/loading/loading-region.d.ts.map +1 -1
  95. package/dist/components/loading/loading-region.js +2 -2
  96. package/dist/components/meeting-scheduler/index.cjs +187 -187
  97. package/dist/components/navigation/index.cjs +35 -35
  98. package/dist/components/navigation/mobile-burger-menu.d.ts.map +1 -1
  99. package/dist/components/navigation/mobile-burger-menu.js +2 -1
  100. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  101. package/dist/components/navigation/multi-level-navigation.js +4 -2
  102. package/dist/components/navigation/navigation-sidebar-item.js +3 -3
  103. package/dist/components/onboarding-guides/index.cjs +35 -35
  104. package/dist/components/product-demo/index.cjs +45 -45
  105. package/dist/components/related-content/index.cjs +17 -17
  106. package/dist/components/tickets/index.cjs +39 -39
  107. package/dist/components/ui/allowed-domains-input.d.ts.map +1 -1
  108. package/dist/components/ui/allowed-domains-input.js +1 -0
  109. package/dist/components/ui/button/button-styles.d.ts +12 -4
  110. package/dist/components/ui/button/button-styles.d.ts.map +1 -1
  111. package/dist/components/ui/button/button-styles.js +99 -7
  112. package/dist/components/ui/button/button.d.ts +1 -1
  113. package/dist/components/ui/button/button.d.ts.map +1 -1
  114. package/dist/components/ui/button/button.js +3 -0
  115. package/dist/components/ui/file-manager/file-manager-breadcrumb.d.ts.map +1 -1
  116. package/dist/components/ui/file-manager/file-manager-breadcrumb.js +1 -0
  117. package/dist/components/ui/file-manager/index.cjs +56 -55
  118. package/dist/components/ui/file-upload.d.ts.map +1 -1
  119. package/dist/components/ui/file-upload.js +5 -3
  120. package/dist/components/ui/hidden-tags-popup.js +1 -1
  121. package/dist/components/ui/hover-dropdown.js +1 -1
  122. package/dist/components/ui/index.cjs +32 -32
  123. package/dist/components/ui/info-card.js +1 -1
  124. package/dist/components/ui/info-section.d.ts.map +1 -1
  125. package/dist/components/ui/info-section.js +1 -0
  126. package/dist/components/ui/loading-scope.d.ts.map +1 -1
  127. package/dist/components/ui/loading-scope.js +2 -2
  128. package/dist/components/ui/modal-v2.js +1 -1
  129. package/dist/components/ui/organization-card.d.ts.map +1 -1
  130. package/dist/components/ui/organization-card.js +2 -1
  131. package/dist/components/ui/page-actions.d.ts +2 -2
  132. package/dist/components/ui/page-actions.d.ts.map +1 -1
  133. package/dist/components/ui/password-input.js +1 -1
  134. package/dist/components/ui/service-card.js +3 -3
  135. package/dist/components/ui/tab-selector.d.ts.map +1 -1
  136. package/dist/components/ui/tab-selector.js +3 -3
  137. package/dist/components/ui/test-run.d.ts.map +1 -1
  138. package/dist/components/ui/test-run.js +2 -1
  139. package/dist/components/ui/textarea.d.ts.map +1 -1
  140. package/dist/components/ui/textarea.js +2 -1
  141. package/dist/components/ui/ticket-attachments-list.d.ts.map +1 -1
  142. package/dist/components/ui/ticket-attachments-list.js +3 -2
  143. package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
  144. package/dist/components/ui/ticket-info-section.js +1 -0
  145. package/dist/components/ui/ticket-note-card.d.ts.map +1 -1
  146. package/dist/components/ui/ticket-note-card.js +6 -4
  147. package/dist/components/ui/ticket-status-config-row.d.ts.map +1 -1
  148. package/dist/components/ui/ticket-status-config-row.js +1 -10
  149. package/dist/components/ui/toaster.js +1 -1
  150. package/dist/components/vendor-display-button.js +1 -1
  151. package/dist/{devices-TDKCKWRP.cjs → devices-PYJRYIQN.cjs} +33 -33
  152. package/dist/embed-shims/index.cjs +4 -4
  153. package/dist/embed-shims/next-image.cjs +4 -4
  154. package/dist/{embeddable-chat-HEL4Z2FL.cjs → embeddable-chat-7MSM62UC.cjs} +114 -114
  155. package/dist/hooks/index.cjs +10 -10
  156. package/dist/index.cjs +48 -48
  157. package/dist/{knowledge-A5KJ4CAD.cjs → knowledge-R4H2ZDX2.cjs} +33 -33
  158. package/dist/{logs-6WRBPIMM.cjs → logs-YWL6NK24.cjs} +41 -41
  159. package/dist/{policies-ICRXHW3H.cjs → policies-3COFYSKB.cjs} +36 -36
  160. package/dist/{remote-session-MEV5JL2Z.cjs → remote-session-IEOWFBF7.cjs} +17 -17
  161. package/dist/{scripts-AZVCZE6C.cjs → scripts-72EJDICT.cjs} +39 -39
  162. package/dist/{software-update-4ZBCGJGA.cjs → software-update-PPUVCLPO.cjs} +36 -36
  163. package/dist/{tickets-board-BJPQD3HE.cjs → tickets-board-EYKLSB36.cjs} +17 -17
  164. package/dist/{video-file-player-DETXW4OJ.cjs → video-file-player-ZU666VUY.cjs} +14 -14
  165. package/package.json +1 -1
  166. package/src/components/category-card.tsx +2 -0
  167. package/src/components/chat/ask-display.tsx +2 -2
  168. package/src/components/chat/chat-context-memory-bar.tsx +2 -2
  169. package/src/components/chat/chat-context-picker.tsx +4 -2
  170. package/src/components/chat/chat-input.tsx +3 -1
  171. package/src/components/chat/chat-nav-sidebar.tsx +10 -1
  172. package/src/components/chat/guide-mode-banner.tsx +1 -1
  173. package/src/components/chat/mingo-welcome.tsx +1 -1
  174. package/src/components/features/capability-explorer.tsx +8 -1
  175. package/src/components/features/command-box.tsx +1 -1
  176. package/src/components/features/devices/devices-grid-filters.tsx +8 -1
  177. package/src/components/features/filters-dropdown.tsx +6 -1
  178. package/src/components/features/model-token-rates.tsx +1 -1
  179. package/src/components/features/notifications/notification-drawer.tsx +1 -0
  180. package/src/components/features/notifications/notification-tile.tsx +1 -1
  181. package/src/components/features/paths-display.tsx +1 -1
  182. package/src/components/features/remote-session/remote-session-events.tsx +2 -0
  183. package/src/components/features/scripts/schedule-form/schedule-script-picker-card.tsx +1 -1
  184. package/src/components/features/scripts/schedule-form/schedule-timing-fields.tsx +1 -1
  185. package/src/components/features/select-button.tsx +2 -2
  186. package/src/components/features/tags-selector.tsx +1 -1
  187. package/src/components/loading/loading-region.tsx +4 -1
  188. package/src/components/navigation/mobile-burger-menu.tsx +3 -1
  189. package/src/components/navigation/multi-level-navigation.tsx +6 -2
  190. package/src/components/navigation/navigation-sidebar-item.tsx +5 -5
  191. package/src/components/ui/allowed-domains-input.tsx +1 -0
  192. package/src/components/ui/button/button-styles.ts +106 -9
  193. package/src/components/ui/button/button.tsx +3 -0
  194. package/src/components/ui/file-manager/file-manager-breadcrumb.tsx +1 -0
  195. package/src/components/ui/file-upload.tsx +5 -3
  196. package/src/components/ui/hidden-tags-popup.tsx +1 -1
  197. package/src/components/ui/hover-dropdown.tsx +1 -1
  198. package/src/components/ui/info-card.tsx +1 -1
  199. package/src/components/ui/info-section.tsx +2 -0
  200. package/src/components/ui/loading-scope.tsx +2 -1
  201. package/src/components/ui/modal-v2.tsx +1 -1
  202. package/src/components/ui/organization-card.tsx +3 -1
  203. package/src/components/ui/page-actions.tsx +14 -2
  204. package/src/components/ui/password-input.tsx +1 -1
  205. package/src/components/ui/service-card.tsx +3 -3
  206. package/src/components/ui/tab-selector.tsx +5 -3
  207. package/src/components/ui/test-run.tsx +2 -1
  208. package/src/components/ui/textarea.tsx +3 -1
  209. package/src/components/ui/ticket-attachments-list.tsx +3 -2
  210. package/src/components/ui/ticket-info-section.tsx +1 -0
  211. package/src/components/ui/ticket-note-card.tsx +6 -4
  212. package/src/components/ui/ticket-status-config-row.tsx +1 -6
  213. package/src/components/ui/toaster.tsx +1 -1
  214. package/src/components/vendor-display-button.tsx +1 -1
  215. package/dist/case-study-card-CYJ3JXU6.cjs +0 -23
@@ -2,41 +2,41 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkODZ5XGWAcjs = require('./chunk-ODZ5XGWA.cjs');
5
+ var _chunkA4YUTS6Qcjs = require('./chunk-A4YUTS6Q.cjs');
6
6
 
7
7
 
8
8
 
9
9
 
10
10
 
11
11
 
12
- var _chunkUONQCE5Ncjs = require('./chunk-UONQCE5N.cjs');
12
+ var _chunkTS6TISIFcjs = require('./chunk-TS6TISIF.cjs');
13
13
 
14
14
 
15
15
 
16
16
 
17
- var _chunkZV6RQNXEcjs = require('./chunk-ZV6RQNXE.cjs');
17
+ var _chunkCBKXU77Hcjs = require('./chunk-CBKXU77H.cjs');
18
18
 
19
19
 
20
- var _chunkHLZUBJPLcjs = require('./chunk-HLZUBJPL.cjs');
20
+ var _chunkN7QNWHJAcjs = require('./chunk-N7QNWHJA.cjs');
21
21
 
22
22
 
23
23
 
24
24
 
25
- var _chunkFWJ5YECNcjs = require('./chunk-FWJ5YECN.cjs');
25
+ var _chunk7OJMOG34cjs = require('./chunk-7OJMOG34.cjs');
26
26
 
27
27
 
28
28
 
29
- var _chunkOHXB6HUXcjs = require('./chunk-OHXB6HUX.cjs');
29
+ var _chunk5XAWVXNIcjs = require('./chunk-5XAWVXNI.cjs');
30
30
 
31
31
 
32
32
 
33
- var _chunkKWV23THOcjs = require('./chunk-KWV23THO.cjs');
33
+ var _chunkEHQ2UGT4cjs = require('./chunk-EHQ2UGT4.cjs');
34
34
 
35
35
 
36
- var _chunkT4ZVKEDPcjs = require('./chunk-T4ZVKEDP.cjs');
36
+ var _chunkOMTH355Icjs = require('./chunk-OMTH355I.cjs');
37
37
 
38
38
 
39
- var _chunkCDBFQVPAcjs = require('./chunk-CDBFQVPA.cjs');
39
+ var _chunkFLS6DZENcjs = require('./chunk-FLS6DZEN.cjs');
40
40
 
41
41
  // src/components/contact/contact-form.tsx
42
42
  var _zod = require('@hookform/resolvers/zod');
@@ -119,14 +119,14 @@ function ContactForm({
119
119
  successToastMessage = "Redirecting you to join our community...",
120
120
  rescue: rescueForm = null
121
121
  } = {}) {
122
- const attachments = _chunkFWJ5YECNcjs.useChatAttachments.call(void 0, );
123
- const builtInSubmission = _chunkZV6RQNXEcjs.useContactSubmission.call(void 0, {
122
+ const attachments = _chunk7OJMOG34cjs.useChatAttachments.call(void 0, );
123
+ const builtInSubmission = _chunkCBKXU77Hcjs.useContactSubmission.call(void 0, {
124
124
  userId,
125
125
  successRedirectUrl,
126
126
  successToastMessage
127
127
  });
128
128
  const [customSubmitting, setCustomSubmitting] = _react.useState.call(void 0, false);
129
- const { honeypotInputProps, getSignals, resetSignals } = _chunkZV6RQNXEcjs.useHumanitySignals.call(void 0, );
129
+ const { honeypotInputProps, getSignals, resetSignals } = _chunkCBKXU77Hcjs.useHumanitySignals.call(void 0, );
130
130
  const isSubmitting = onCustomSubmit ? customSubmitting : builtInSubmission.isSubmitting;
131
131
  const isSuccess = onCustomSubmit ? false : builtInSubmission.isSuccess;
132
132
  const form = _reacthookform.useForm.call(void 0, {
@@ -152,7 +152,7 @@ function ContactForm({
152
152
  ),
153
153
  [hideFields]
154
154
  );
155
- const rescue = _chunkZV6RQNXEcjs.useRescuedForm.call(void 0, form, { rescue: rescueForm, fields: rescueFieldNames, getSignals });
155
+ const rescue = _chunkCBKXU77Hcjs.useRescuedForm.call(void 0, form, { rescue: rescueForm, fields: rescueFieldNames, getSignals });
156
156
  const handleFormSubmit = async (data) => {
157
157
  if (isSubmitting) return;
158
158
  if (attachmentsEnabled && attachments.hasInflightUploads) return;
@@ -190,7 +190,7 @@ function ContactForm({
190
190
  className: `flex h-full flex-col ${!noBorder ? "rounded-2xl border border-ods-border content-md:rounded-3xl" : ""} ${!noPadding ? "p-6 content-md:p-8 content-lg:p-10" : ""}`,
191
191
  children: [
192
192
  (title || subtitle) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mb-6 content-md:mb-8", children: [
193
- title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunkOHXB6HUXcjs.SECTION_HEADING_CLASS} mb-3 content-md:mb-4`, children: _chunkOHXB6HUXcjs.accentSentenceMarks.call(void 0, title) }),
193
+ title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunk5XAWVXNIcjs.SECTION_HEADING_CLASS} mb-3 content-md:mb-4`, children: _chunk5XAWVXNIcjs.accentSentenceMarks.call(void 0, title) }),
194
194
  subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h4", children: subtitle })
195
195
  ] }),
196
196
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -203,22 +203,22 @@ function ContactForm({
203
203
  );
204
204
  }),
205
205
  className: "flex flex-grow flex-col space-y-4 content-md:space-y-6",
206
- ..._chunkHLZUBJPLcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
206
+ ..._chunkN7QNWHJAcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
207
207
  children: [
208
208
  !showName && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("name") }),
209
209
  !showEmail && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("email") }),
210
210
  !showHelpCategory && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("helpCategory") }),
211
211
  !showMessage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("message") }),
212
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkODZ5XGWAcjs.HoneypotField, { ...honeypotInputProps }),
212
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA4YUTS6Qcjs.HoneypotField, { ...honeypotInputProps }),
213
213
  extraTopField,
214
214
  showNameEmailRow && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 content-md:grid-cols-2 content-md:gap-6", children: [
215
215
  showName && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
216
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkT4ZVKEDPcjs.Label, { htmlFor: "name", children: [
216
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkOMTH355Icjs.Label, { htmlFor: "name", children: [
217
217
  "Your Name",
218
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKWV23THOcjs.RequiredMark, {})
218
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEHQ2UGT4cjs.RequiredMark, {})
219
219
  ] }),
220
220
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
221
- _chunkKWV23THOcjs.Input,
221
+ _chunkEHQ2UGT4cjs.Input,
222
222
  {
223
223
  id: "name",
224
224
  type: "text",
@@ -233,12 +233,12 @@ function ContactForm({
233
233
  errors.name && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { id: "name-error", className: "mt-1 text-ods-error text-h6", children: errors.name.message })
234
234
  ] }),
235
235
  showEmail && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
236
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkT4ZVKEDPcjs.Label, { htmlFor: "email", children: [
236
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkOMTH355Icjs.Label, { htmlFor: "email", children: [
237
237
  "Email",
238
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKWV23THOcjs.RequiredMark, {})
238
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEHQ2UGT4cjs.RequiredMark, {})
239
239
  ] }),
240
240
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
241
- _chunkKWV23THOcjs.Input,
241
+ _chunkEHQ2UGT4cjs.Input,
242
242
  {
243
243
  id: "email",
244
244
  type: "email",
@@ -255,46 +255,46 @@ function ContactForm({
255
255
  ] }),
256
256
  (showCompanySize || showReferralSource) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 content-md:grid-cols-2 content-md:gap-6", children: [
257
257
  showCompanySize && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
258
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT4ZVKEDPcjs.Label, { htmlFor: "companySize", children: "Company Size" }),
258
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOMTH355Icjs.Label, { htmlFor: "companySize", children: "Company Size" }),
259
259
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
260
260
  _reacthookform.Controller,
261
261
  {
262
262
  control,
263
263
  name: "companySize",
264
- render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkUONQCE5Ncjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
264
+ render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTS6TISIFcjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
265
265
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
266
- _chunkUONQCE5Ncjs.SelectTrigger,
266
+ _chunkTS6TISIFcjs.SelectTrigger,
267
267
  {
268
268
  id: "companySize",
269
269
  "aria-label": "Company Size",
270
270
  className: "h-12 border-ods-border bg-ods-card px-3 text-ods-text-primary",
271
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUONQCE5Ncjs.SelectValue, { placeholder: "Select company size" })
271
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.SelectValue, { placeholder: "Select company size" })
272
272
  }
273
273
  ),
274
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUONQCE5Ncjs.SelectContent, { children: companySizeOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUONQCE5Ncjs.SelectItem, { value: opt, children: opt }, opt)) })
274
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.SelectContent, { children: companySizeOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.SelectItem, { value: opt, children: opt }, opt)) })
275
275
  ] })
276
276
  }
277
277
  ),
278
278
  errors.companySize && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { id: "companySize-error", className: "mt-1 text-ods-error text-h6", children: errors.companySize.message })
279
279
  ] }),
280
280
  showReferralSource && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
281
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT4ZVKEDPcjs.Label, { htmlFor: "referralSource", children: "How did you hear about us?" }),
281
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOMTH355Icjs.Label, { htmlFor: "referralSource", children: "How did you hear about us?" }),
282
282
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
283
283
  _reacthookform.Controller,
284
284
  {
285
285
  control,
286
286
  name: "referralSource",
287
- render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkUONQCE5Ncjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
287
+ render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTS6TISIFcjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
288
288
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
289
- _chunkUONQCE5Ncjs.SelectTrigger,
289
+ _chunkTS6TISIFcjs.SelectTrigger,
290
290
  {
291
291
  id: "referralSource",
292
292
  "aria-label": "Referral Source",
293
293
  className: "h-12 border-ods-border bg-ods-card px-3 text-ods-text-primary",
294
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUONQCE5Ncjs.SelectValue, { placeholder: "Select an option" })
294
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.SelectValue, { placeholder: "Select an option" })
295
295
  }
296
296
  ),
297
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUONQCE5Ncjs.SelectContent, { children: referralSourceOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUONQCE5Ncjs.SelectItem, { value: opt, children: opt }, opt)) })
297
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.SelectContent, { children: referralSourceOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.SelectItem, { value: opt, children: opt }, opt)) })
298
298
  ] })
299
299
  }
300
300
  ),
@@ -302,39 +302,39 @@ function ContactForm({
302
302
  ] })
303
303
  ] }),
304
304
  showHelpCategory && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
305
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkT4ZVKEDPcjs.Label, { htmlFor: "helpCategory", children: [
305
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkOMTH355Icjs.Label, { htmlFor: "helpCategory", children: [
306
306
  "Choose your main interest",
307
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKWV23THOcjs.RequiredMark, {})
307
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEHQ2UGT4cjs.RequiredMark, {})
308
308
  ] }),
309
309
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
310
310
  _reacthookform.Controller,
311
311
  {
312
312
  control,
313
313
  name: "helpCategory",
314
- render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkUONQCE5Ncjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
314
+ render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTS6TISIFcjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
315
315
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
316
- _chunkUONQCE5Ncjs.SelectTrigger,
316
+ _chunkTS6TISIFcjs.SelectTrigger,
317
317
  {
318
318
  id: "helpCategory",
319
319
  "aria-label": "Help Category",
320
320
  "aria-required": true,
321
321
  className: "h-12 border-ods-border bg-ods-card px-3 text-ods-text-primary",
322
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUONQCE5Ncjs.SelectValue, { placeholder: "Choose your main interest" })
322
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.SelectValue, { placeholder: "Choose your main interest" })
323
323
  }
324
324
  ),
325
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUONQCE5Ncjs.SelectContent, { children: helpCategoryOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUONQCE5Ncjs.SelectItem, { value: opt, children: opt }, opt)) })
325
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.SelectContent, { children: helpCategoryOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.SelectItem, { value: opt, children: opt }, opt)) })
326
326
  ] })
327
327
  }
328
328
  ),
329
329
  errors.helpCategory && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { id: "helpCategory-error", className: "mt-1 text-ods-error text-h6", children: errors.helpCategory.message })
330
330
  ] }),
331
331
  showMessage && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-grow flex-col", children: [
332
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkT4ZVKEDPcjs.Label, { htmlFor: "message", children: [
332
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkOMTH355Icjs.Label, { htmlFor: "message", children: [
333
333
  "Your Message",
334
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKWV23THOcjs.RequiredMark, {})
334
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEHQ2UGT4cjs.RequiredMark, {})
335
335
  ] }),
336
336
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
337
- _chunkODZ5XGWAcjs.Textarea,
337
+ _chunkA4YUTS6Qcjs.Textarea,
338
338
  {
339
339
  id: "message",
340
340
  ...register("message"),
@@ -349,7 +349,7 @@ function ContactForm({
349
349
  ] }),
350
350
  attachmentsEnabled && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
351
351
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
352
- _chunkFWJ5YECNcjs.ChatAttachmentChipStrip,
352
+ _chunk7OJMOG34cjs.ChatAttachmentChipStrip,
353
353
  {
354
354
  attachments: attachments.attachments,
355
355
  onRemove: attachments.removeAttachment,
@@ -358,7 +358,7 @@ function ContactForm({
358
358
  ),
359
359
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
360
360
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
361
- _chunkFWJ5YECNcjs.ChatAttachmentAddButton,
361
+ _chunk7OJMOG34cjs.ChatAttachmentAddButton,
362
362
  {
363
363
  attachmentsEnabled: true,
364
364
  attachmentsCount: attachments.attachments.length,
@@ -372,7 +372,7 @@ function ContactForm({
372
372
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mt-auto flex w-full flex-col items-center justify-end gap-4 pt-2 content-md:flex-row content-md:gap-6", children: [
373
373
  footerText && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-center text-ods-text-secondary text-h6 content-md:text-left", children: footerText }),
374
374
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
375
- _chunkCDBFQVPAcjs.Button,
375
+ _chunkFLS6DZENcjs.Button,
376
376
  {
377
377
  type: "submit",
378
378
  loading: isSubmitting,
@@ -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(" ")