@cellarnode/ui 0.178.1 → 0.180.0

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 (284) hide show
  1. package/dist/brand/brand-field-provenance.js +3 -3
  2. package/dist/brand/brand-field-provenance.js.map +1 -1
  3. package/dist/brand/brand-generation-context-form.js +2 -2
  4. package/dist/brand/brand-generation-recovery.js +2 -2
  5. package/dist/brand/brand-generation-recovery.js.map +1 -1
  6. package/dist/brand/brand-image-asset-slot-card.js +1 -1
  7. package/dist/brand/brand-image-chooser.js +1 -1
  8. package/dist/brand/brand-image-source-picker.js +1 -1
  9. package/dist/brand/brand-profile-form-lists.js +2 -2
  10. package/dist/brand/brand-profile-form-people.js +2 -2
  11. package/dist/brand/brand-profile-review-media.js +1 -1
  12. package/dist/brand/brand-profile-review-visibility.d.ts.map +1 -1
  13. package/dist/brand/brand-profile-review-visibility.js +6 -4
  14. package/dist/brand/brand-profile-review-visibility.js.map +1 -1
  15. package/dist/brand/brand-profile-workspace-copy.d.ts +14 -0
  16. package/dist/brand/brand-profile-workspace-copy.d.ts.map +1 -1
  17. package/dist/brand/brand-profile-workspace-copy.js +4 -0
  18. package/dist/brand/brand-profile-workspace-copy.js.map +1 -1
  19. package/dist/brand/brand-profile-workspace-parts.d.ts +22 -2
  20. package/dist/brand/brand-profile-workspace-parts.d.ts.map +1 -1
  21. package/dist/brand/brand-profile-workspace-parts.js +6 -7
  22. package/dist/brand/brand-profile-workspace-parts.js.map +1 -1
  23. package/dist/brand/brand-profile-workspace.d.ts +5 -1
  24. package/dist/brand/brand-profile-workspace.d.ts.map +1 -1
  25. package/dist/brand/brand-profile-workspace.js +8 -3
  26. package/dist/brand/brand-profile-workspace.js.map +1 -1
  27. package/dist/brand/brand-provenance-summary.js +1 -1
  28. package/dist/brand/brand-summary-card.js +1 -1
  29. package/dist/brand/brand-summary-card.js.map +1 -1
  30. package/dist/brand/index.d.ts +1 -0
  31. package/dist/brand/index.d.ts.map +1 -1
  32. package/dist/brand/index.js +1 -0
  33. package/dist/brand/index.js.map +1 -1
  34. package/dist/brand/public-visibility-toggle.d.ts +33 -0
  35. package/dist/brand/public-visibility-toggle.d.ts.map +1 -0
  36. package/dist/brand/public-visibility-toggle.js +23 -0
  37. package/dist/brand/public-visibility-toggle.js.map +1 -0
  38. package/dist/chat/chat-composer.d.ts +3 -1
  39. package/dist/chat/chat-composer.d.ts.map +1 -1
  40. package/dist/chat/chat-composer.js +3 -3
  41. package/dist/chat/chat-composer.js.map +1 -1
  42. package/dist/chat/chat-surface.d.ts +23 -2
  43. package/dist/chat/chat-surface.d.ts.map +1 -1
  44. package/dist/chat/chat-surface.js +77 -41
  45. package/dist/chat/chat-surface.js.map +1 -1
  46. package/dist/chat/index.d.ts +2 -0
  47. package/dist/chat/index.d.ts.map +1 -1
  48. package/dist/chat/index.js +1 -0
  49. package/dist/chat/index.js.map +1 -1
  50. package/dist/chat/messenger-layout.js +2 -2
  51. package/dist/chat/messenger-layout.js.map +1 -1
  52. package/dist/chat/messenger-screen/room-panel.d.ts +24 -0
  53. package/dist/chat/messenger-screen/room-panel.d.ts.map +1 -1
  54. package/dist/chat/messenger-screen/room-panel.js +175 -21
  55. package/dist/chat/messenger-screen/room-panel.js.map +1 -1
  56. package/dist/chat/messenger-screen/types.d.ts +2 -0
  57. package/dist/chat/messenger-screen/types.d.ts.map +1 -1
  58. package/dist/chat/use-stick-to-bottom.d.ts +45 -0
  59. package/dist/chat/use-stick-to-bottom.d.ts.map +1 -0
  60. package/dist/chat/use-stick-to-bottom.js +191 -0
  61. package/dist/chat/use-stick-to-bottom.js.map +1 -0
  62. package/dist/chat-ably/use-presence.d.ts +13 -0
  63. package/dist/chat-ably/use-presence.d.ts.map +1 -1
  64. package/dist/chat-ably/use-presence.js +35 -0
  65. package/dist/chat-ably/use-presence.js.map +1 -1
  66. package/dist/components/access-model-select.d.ts.map +1 -1
  67. package/dist/components/access-model-select.js +2 -1
  68. package/dist/components/access-model-select.js.map +1 -1
  69. package/dist/components/accordion.js +1 -1
  70. package/dist/components/animated-select.js +1 -1
  71. package/dist/components/animated-select.js.map +1 -1
  72. package/dist/components/animated-shadcn-select.d.ts +2 -2
  73. package/dist/components/animated-shadcn-select.d.ts.map +1 -1
  74. package/dist/components/animated-shadcn-select.js +16 -3
  75. package/dist/components/animated-shadcn-select.js.map +1 -1
  76. package/dist/components/avatar-stack.js +3 -3
  77. package/dist/components/avatar-stack.js.map +1 -1
  78. package/dist/components/avatar.js +1 -1
  79. package/dist/components/avatar.js.map +1 -1
  80. package/dist/components/bottle-extract-dialog.js +2 -2
  81. package/dist/components/bottle-extract-dialog.js.map +1 -1
  82. package/dist/components/bottle-extraction-inline-progress.js +1 -1
  83. package/dist/components/bottle-extraction-inline-progress.js.map +1 -1
  84. package/dist/components/card-actions-trigger.js +1 -1
  85. package/dist/components/card-actions-trigger.js.map +1 -1
  86. package/dist/components/certification-upload-card.d.ts +23 -2
  87. package/dist/components/certification-upload-card.d.ts.map +1 -1
  88. package/dist/components/certification-upload-card.js +103 -8
  89. package/dist/components/certification-upload-card.js.map +1 -1
  90. package/dist/components/checkbox.js +1 -1
  91. package/dist/components/checkbox.js.map +1 -1
  92. package/dist/components/closure-select.d.ts.map +1 -1
  93. package/dist/components/closure-select.js +2 -1
  94. package/dist/components/closure-select.js.map +1 -1
  95. package/dist/components/colour-picker-field.js +1 -1
  96. package/dist/components/colour-picker-field.js.map +1 -1
  97. package/dist/components/composition-editor.js +1 -1
  98. package/dist/components/composition-editor.js.map +1 -1
  99. package/dist/components/confirmation/beverage-comparison-modal.js +1 -1
  100. package/dist/components/confirmation/beverage-comparison-modal.js.map +1 -1
  101. package/dist/components/confirmation/confirmation-card.js +2 -2
  102. package/dist/components/confirmation/confirmation-card.js.map +1 -1
  103. package/dist/components/confirmation/cross-portfolio-nudge-sheet.js +5 -5
  104. package/dist/components/confirmation/cross-portfolio-nudge-sheet.js.map +1 -1
  105. package/dist/components/corner-style-picker.js +1 -1
  106. package/dist/components/corner-style-picker.js.map +1 -1
  107. package/dist/components/country-code-multi-select.d.ts.map +1 -1
  108. package/dist/components/country-code-multi-select.js +2 -1
  109. package/dist/components/country-code-multi-select.js.map +1 -1
  110. package/dist/components/country-code-select.d.ts.map +1 -1
  111. package/dist/components/country-code-select.js +4 -2
  112. package/dist/components/country-code-select.js.map +1 -1
  113. package/dist/components/currency-select.d.ts.map +1 -1
  114. package/dist/components/currency-select.js +2 -1
  115. package/dist/components/currency-select.js.map +1 -1
  116. package/dist/components/delivery-terms-select.d.ts.map +1 -1
  117. package/dist/components/delivery-terms-select.js +2 -1
  118. package/dist/components/delivery-terms-select.js.map +1 -1
  119. package/dist/components/enterprise-type-select.d.ts.map +1 -1
  120. package/dist/components/enterprise-type-select.js +2 -1
  121. package/dist/components/enterprise-type-select.js.map +1 -1
  122. package/dist/components/inset-drawer.js +1 -1
  123. package/dist/components/inset-drawer.js.map +1 -1
  124. package/dist/components/link.d.ts +1 -1
  125. package/dist/components/link.d.ts.map +1 -1
  126. package/dist/components/link.js +3 -2
  127. package/dist/components/link.js.map +1 -1
  128. package/dist/components/offer-card.js +1 -1
  129. package/dist/components/offer-card.js.map +1 -1
  130. package/dist/components/packaging-select.d.ts.map +1 -1
  131. package/dist/components/packaging-select.js +2 -1
  132. package/dist/components/packaging-select.js.map +1 -1
  133. package/dist/components/picker-empty-guidance.js +1 -1
  134. package/dist/components/picker-empty-guidance.js.map +1 -1
  135. package/dist/components/preflight-verdict-sheet.js +2 -2
  136. package/dist/components/preflight-verdict-sheet.js.map +1 -1
  137. package/dist/components/price-range-picker.js +1 -1
  138. package/dist/components/price-range-picker.js.map +1 -1
  139. package/dist/components/procurement-channel-select.d.ts.map +1 -1
  140. package/dist/components/procurement-channel-select.js +2 -1
  141. package/dist/components/procurement-channel-select.js.map +1 -1
  142. package/dist/components/product-card.js +1 -1
  143. package/dist/components/product-card.js.map +1 -1
  144. package/dist/components/product-picker-drawer.js +4 -4
  145. package/dist/components/product-picker-drawer.js.map +1 -1
  146. package/dist/components/radio.js +1 -1
  147. package/dist/components/radio.js.map +1 -1
  148. package/dist/components/region-select.d.ts.map +1 -1
  149. package/dist/components/region-select.js +2 -1
  150. package/dist/components/region-select.js.map +1 -1
  151. package/dist/components/scroll-area.js +1 -1
  152. package/dist/components/shadcn-badge.js +2 -2
  153. package/dist/components/shadcn-badge.js.map +1 -1
  154. package/dist/components/shadcn-button.d.ts.map +1 -1
  155. package/dist/components/shadcn-button.js +2 -2
  156. package/dist/components/shadcn-button.js.map +1 -1
  157. package/dist/components/shadcn-input.js +1 -1
  158. package/dist/components/shadcn-input.js.map +1 -1
  159. package/dist/components/shadcn-select.d.ts +1 -1
  160. package/dist/components/shadcn-select.d.ts.map +1 -1
  161. package/dist/components/shadcn-select.js +9 -2
  162. package/dist/components/shadcn-select.js.map +1 -1
  163. package/dist/components/shadcn-textarea.js +1 -1
  164. package/dist/components/shadcn-textarea.js.map +1 -1
  165. package/dist/components/source-composite.js +1 -1
  166. package/dist/components/source-composite.js.map +1 -1
  167. package/dist/components/source-drawer.js +1 -1
  168. package/dist/components/source-drawer.js.map +1 -1
  169. package/dist/components/supporting-pane-layout.d.ts +6 -1
  170. package/dist/components/supporting-pane-layout.d.ts.map +1 -1
  171. package/dist/components/supporting-pane-layout.js +65 -12
  172. package/dist/components/supporting-pane-layout.js.map +1 -1
  173. package/dist/components/switch.d.ts +12 -0
  174. package/dist/components/switch.d.ts.map +1 -1
  175. package/dist/components/switch.js +35 -19
  176. package/dist/components/switch.js.map +1 -1
  177. package/dist/components/table.js +1 -1
  178. package/dist/components/table.js.map +1 -1
  179. package/dist/components/tabs.js +1 -1
  180. package/dist/components/text.js +1 -1
  181. package/dist/components/text.js.map +1 -1
  182. package/dist/components/toast.js +1 -1
  183. package/dist/components/toast.js.map +1 -1
  184. package/dist/components/variant-picker-dialog.js +6 -6
  185. package/dist/components/variant-picker-dialog.js.map +1 -1
  186. package/dist/components/variant-picker-hero.js +1 -1
  187. package/dist/components/variant-picker-hero.js.map +1 -1
  188. package/dist/components/year-picker.js +1 -1
  189. package/dist/components/year-picker.js.map +1 -1
  190. package/dist/fic-label/ingredient-input.js +1 -1
  191. package/dist/fic-label/ingredient-input.js.map +1 -1
  192. package/dist/globe/globe-view.js +1 -1
  193. package/dist/globe/globe-view.js.map +1 -1
  194. package/dist/image-upload/focal-point-picker.js +1 -1
  195. package/dist/image-upload/focal-point-picker.js.map +1 -1
  196. package/dist/index.d.ts +1 -1
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js.map +1 -1
  199. package/dist/insight-band/next-best-action-card.js +1 -1
  200. package/dist/insight-band/next-best-action-card.js.map +1 -1
  201. package/dist/lib/reveal-truncated-select-value.d.ts +8 -0
  202. package/dist/lib/reveal-truncated-select-value.d.ts.map +1 -0
  203. package/dist/lib/reveal-truncated-select-value.js +16 -0
  204. package/dist/lib/reveal-truncated-select-value.js.map +1 -0
  205. package/dist/marketing/pricing-table.js +1 -1
  206. package/dist/marketing/qr/qr-customizer-controls.js +1 -1
  207. package/dist/marketing/qr/qr-customizer-controls.js.map +1 -1
  208. package/dist/notifications/notification-tray.js +1 -1
  209. package/dist/notifications/notification-tray.js.map +1 -1
  210. package/dist/offer/attachments-card.js +1 -1
  211. package/dist/offer/attachments-card.js.map +1 -1
  212. package/dist/offer/index.d.ts +1 -1
  213. package/dist/offer/index.d.ts.map +1 -1
  214. package/dist/offer/index.js.map +1 -1
  215. package/dist/offer/negotiation-flow-timeline.js +1 -1
  216. package/dist/offer/negotiation-flow-timeline.js.map +1 -1
  217. package/dist/offer/negotiation-labels.d.ts +12 -0
  218. package/dist/offer/negotiation-labels.d.ts.map +1 -1
  219. package/dist/offer/negotiation-labels.js +17 -3
  220. package/dist/offer/negotiation-labels.js.map +1 -1
  221. package/dist/offer/offer-branch-shared.d.ts +1 -1
  222. package/dist/offer/offer-branch-shared.js +1 -1
  223. package/dist/offer/offer-evaluation-sections.js +1 -1
  224. package/dist/offer/offer-page.d.ts +62 -2
  225. package/dist/offer/offer-page.d.ts.map +1 -1
  226. package/dist/offer/offer-page.js +158 -14
  227. package/dist/offer/offer-page.js.map +1 -1
  228. package/dist/offer/parties-card.d.ts.map +1 -1
  229. package/dist/offer/parties-card.js +1 -1
  230. package/dist/offer/parties-card.js.map +1 -1
  231. package/dist/offer/reviews-summary.js +1 -1
  232. package/dist/offer/reviews-summary.js.map +1 -1
  233. package/dist/offer/sticky-scroll-padding.d.ts +4 -0
  234. package/dist/offer/sticky-scroll-padding.d.ts.map +1 -0
  235. package/dist/offer/sticky-scroll-padding.js +54 -0
  236. package/dist/offer/sticky-scroll-padding.js.map +1 -0
  237. package/dist/offer/timeline-event.d.ts.map +1 -1
  238. package/dist/offer/timeline-event.js +5 -3
  239. package/dist/offer/timeline-event.js.map +1 -1
  240. package/dist/opportunities/opportunity-detail-header.js +1 -1
  241. package/dist/opportunities/opportunity-detail-header.js.map +1 -1
  242. package/dist/opportunities/opportunity-detail-panel.js +1 -1
  243. package/dist/opportunities/opportunity-detail-panel.js.map +1 -1
  244. package/dist/opportunities/opportunity-filter-bar.js +1 -1
  245. package/dist/opportunities/opportunity-filter-bar.js.map +1 -1
  246. package/dist/opportunities/opportunity-stacked-card.js +2 -2
  247. package/dist/opportunities/opportunity-stacked-card.js.map +1 -1
  248. package/dist/opportunities/wizard/allowed-delivery-terms-section.js +1 -1
  249. package/dist/opportunities/wizard/allowed-delivery-terms-section.js.map +1 -1
  250. package/dist/opportunities/wizard/opportunity-wizard.js +2 -2
  251. package/dist/opportunities/wizard/opportunity-wizard.js.map +1 -1
  252. package/dist/opportunities/wizard/step-opportunities.js +14 -10
  253. package/dist/opportunities/wizard/step-opportunities.js.map +1 -1
  254. package/dist/opportunities/wizard/step-pricing-timeline.js +4 -4
  255. package/dist/opportunities/wizard/step-review.js +1 -1
  256. package/dist/opportunities/wizard/step-tender-basics.js +2 -2
  257. package/dist/opportunities/wizard/wizard-stepper.js +1 -1
  258. package/dist/opportunities/wizard/wizard-task-frame.js +1 -1
  259. package/dist/org/billing-address-source.js +2 -2
  260. package/dist/org/public-location-notice.js +2 -2
  261. package/dist/pdf-tool/live/pdf-label-layer.js +1 -1
  262. package/dist/pdf-tool/live/pdf-label-layer.js.map +1 -1
  263. package/dist/portfolio/portfolio-folder-card.js +1 -1
  264. package/dist/portfolio/portfolio-folder-card.js.map +1 -1
  265. package/dist/portfolio-import/beverage-comparison-modal.js +5 -5
  266. package/dist/portfolio-import/beverage-comparison-modal.js.map +1 -1
  267. package/dist/portfolio-import/bottle-photos-status.js +1 -1
  268. package/dist/portfolio-import/bottle-photos-status.js.map +1 -1
  269. package/dist/portfolio-import/import-job-detail-view.js +1 -1
  270. package/dist/portfolio-import/import-job-detail-view.js.map +1 -1
  271. package/dist/portfolio-import/product-gallery.js +1 -1
  272. package/dist/portfolio-import/product-gallery.js.map +1 -1
  273. package/dist/product-editor/product-editor-surface.js +1 -1
  274. package/dist/product-editor/product-editor-surface.js.map +1 -1
  275. package/dist/product-editor/tabs/product-status-tab.js +1 -1
  276. package/dist/product-editor/tabs/product-status-tab.js.map +1 -1
  277. package/dist/product-editor/tabs/resources/awards-panel.js +2 -2
  278. package/dist/product-editor/tabs/resources/awards-panel.js.map +1 -1
  279. package/dist/profile/business-details.js +1 -1
  280. package/dist/profile/business-details.js.map +1 -1
  281. package/dist/profile/product-detail-drawer.js +2 -2
  282. package/dist/profile/product-detail-drawer.js.map +1 -1
  283. package/package.json +1 -1
  284. package/src/theme/tokens.css +7 -1
@@ -0,0 +1,191 @@
1
+ import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
2
+ /** Distance from the bottom, in px, still treated as "at the bottom". */
3
+ export const STICK_TO_BOTTOM_THRESHOLD_PX = 64;
4
+ /**
5
+ * A scroll event this soon after a wheel or key event is the user's. Wheel and
6
+ * key input arrive continuously while the user scrolls (including OS wheel
7
+ * momentum), so a short window is enough; longer would let a layout-caused
8
+ * scroll event right after the last input unpin a viewer who has stopped.
9
+ */
10
+ const USER_INPUT_WINDOW_MS = 300;
11
+ /** Touch fling momentum keeps scrolling after the finger lifts, with no input events. */
12
+ const TOUCH_MOMENTUM_WINDOW_MS = 1000;
13
+ /**
14
+ * Scroll behaviour for a chat log (CEL-2165). Always instant, never smooth, so
15
+ * it is reduced-motion safe by construction.
16
+ *
17
+ * The hook keeps an INTENT ("the viewer wants the newest message") rather than
18
+ * re-deriving it from scroll events. Only a genuine user action clears it: a
19
+ * scroll event that follows a wheel, touch, key or pointer input and ends more
20
+ * than `STICK_TO_BOTTOM_THRESHOLD_PX` from the bottom. Scroll events caused by
21
+ * our own writes or by layout (a pane settling to its final height) never do,
22
+ * so a list revealed while its container is still resizing ends up at the bottom.
23
+ *
24
+ * - Opens at the newest message, again whenever `active` turns true, and when
25
+ * the list is reused for a different thread (neither end id was in the
26
+ * previous list).
27
+ * - Appended messages follow the intent (or the viewer's own send); otherwise
28
+ * `hasNewBelow` turns true instead of moving the viewport.
29
+ * - Container or content height changes keep an intent-holding list at the bottom.
30
+ * - A scroll that settles within the threshold of the bottom re-pins, whatever
31
+ * caused it (a fling that lands at the bottom follows again).
32
+ * - `release()` drops the intent for code that scrolls the list itself (for
33
+ * example jumping to a quoted message); user input does this automatically.
34
+ * - Prepended older messages keep the visible position. The scroller must set
35
+ * `overflow-anchor: none` so browser anchoring does not also compensate.
36
+ */
37
+ export function useStickToBottom({ scrollerRef, contentRef, ids, lastIsOwn, active = true, hasMessages, }) {
38
+ const wantBottomRef = useRef(true);
39
+ const prevRef = useRef(null);
40
+ const heightRef = useRef(0);
41
+ const lastWrittenRef = useRef(null);
42
+ const userUntilRef = useRef(Number.NEGATIVE_INFINITY);
43
+ const pointerActiveRef = useRef(false);
44
+ const pendingBottomRef = useRef(false);
45
+ const [hasNewBelow, setHasNewBelow] = useState(false);
46
+ const firstId = ids[0];
47
+ const lastId = ids[ids.length - 1];
48
+ const writeBottom = useCallback(() => {
49
+ const el = scrollerRef.current;
50
+ if (!el)
51
+ return;
52
+ el.scrollTop = el.scrollHeight;
53
+ lastWrittenRef.current = el.scrollTop;
54
+ heightRef.current = el.scrollHeight;
55
+ }, [scrollerRef]);
56
+ const scrollToBottom = useCallback(() => {
57
+ if (!scrollerRef.current)
58
+ return;
59
+ wantBottomRef.current = true;
60
+ writeBottom();
61
+ setHasNewBelow(false);
62
+ }, [scrollerRef, writeBottom]);
63
+ // Messages changed.
64
+ useLayoutEffect(() => {
65
+ const el = scrollerRef.current;
66
+ if (!el)
67
+ return;
68
+ const prev = prevRef.current;
69
+ const sameThread = prev !== null &&
70
+ ((firstId !== undefined && prev.ids.has(firstId)) ||
71
+ (lastId !== undefined && prev.ids.has(lastId)));
72
+ if (!prev || !sameThread) {
73
+ scrollToBottom();
74
+ }
75
+ else if (prev.lastId !== lastId) {
76
+ if (wantBottomRef.current || lastIsOwn)
77
+ scrollToBottom();
78
+ else
79
+ setHasNewBelow(true);
80
+ }
81
+ else if (prev.firstId !== firstId && !wantBottomRef.current) {
82
+ el.scrollTop += el.scrollHeight - heightRef.current;
83
+ lastWrittenRef.current = el.scrollTop;
84
+ }
85
+ else if (wantBottomRef.current) {
86
+ writeBottom();
87
+ }
88
+ heightRef.current = el.scrollHeight;
89
+ prevRef.current = { ids: new Set(ids), firstId, lastId };
90
+ }, [ids, firstId, lastId, lastIsOwn, hasMessages, scrollerRef, scrollToBottom, writeBottom]);
91
+ // Hidden to visible: jump to the newest message. A hidden pane has no
92
+ // layout, so when there is nothing to scroll yet the ResizeObserver below
93
+ // finishes the job once it is measurable.
94
+ const wasActiveRef = useRef(active);
95
+ useLayoutEffect(() => {
96
+ const became = active && !wasActiveRef.current;
97
+ wasActiveRef.current = active;
98
+ if (!became)
99
+ return;
100
+ wantBottomRef.current = true;
101
+ const el = scrollerRef.current;
102
+ if (el && el.clientHeight > 0) {
103
+ scrollToBottom();
104
+ pendingBottomRef.current = false;
105
+ }
106
+ else {
107
+ pendingBottomRef.current = true;
108
+ }
109
+ }, [active, hasMessages, scrollerRef, scrollToBottom]);
110
+ // User input, scroll position and size observation.
111
+ useEffect(() => {
112
+ const el = scrollerRef.current;
113
+ if (!el)
114
+ return;
115
+ const markUser = () => {
116
+ userUntilRef.current = performance.now() + USER_INPUT_WINDOW_MS;
117
+ };
118
+ const markTouch = () => {
119
+ userUntilRef.current = performance.now() + TOUCH_MOMENTUM_WINDOW_MS;
120
+ };
121
+ // Any press inside the scroller (scrollbar, or a child such as a quote
122
+ // button) is user input until the pointer is released, however long a drag lasts.
123
+ const onPointerDown = () => {
124
+ pointerActiveRef.current = true;
125
+ };
126
+ const onPointerEnd = () => {
127
+ if (!pointerActiveRef.current)
128
+ return;
129
+ pointerActiveRef.current = false;
130
+ markUser();
131
+ };
132
+ const onScroll = () => {
133
+ const distance = el.scrollHeight - el.scrollTop - el.clientHeight;
134
+ const programmatic = lastWrittenRef.current === el.scrollTop;
135
+ const user = pointerActiveRef.current || performance.now() < userUntilRef.current;
136
+ if (distance <= STICK_TO_BOTTOM_THRESHOLD_PX) {
137
+ wantBottomRef.current = true;
138
+ setHasNewBelow(false);
139
+ }
140
+ else if (user && !programmatic) {
141
+ wantBottomRef.current = false;
142
+ }
143
+ lastWrittenRef.current = null;
144
+ heightRef.current = el.scrollHeight;
145
+ };
146
+ for (const name of ["wheel", "keydown"]) {
147
+ el.addEventListener(name, markUser, { passive: true });
148
+ }
149
+ for (const name of ["touchstart", "touchmove"]) {
150
+ el.addEventListener(name, markTouch, { passive: true });
151
+ }
152
+ el.addEventListener("pointerdown", onPointerDown, { passive: true });
153
+ window.addEventListener("pointerup", onPointerEnd);
154
+ window.addEventListener("pointercancel", onPointerEnd);
155
+ el.addEventListener("scroll", onScroll, { passive: true });
156
+ let observer;
157
+ if (typeof ResizeObserver !== "undefined") {
158
+ observer = new ResizeObserver(() => {
159
+ if (el.clientHeight === 0)
160
+ return;
161
+ if (pendingBottomRef.current) {
162
+ pendingBottomRef.current = false;
163
+ scrollToBottom();
164
+ }
165
+ else if (wantBottomRef.current) {
166
+ writeBottom();
167
+ }
168
+ heightRef.current = el.scrollHeight;
169
+ });
170
+ observer.observe(el);
171
+ if (contentRef.current)
172
+ observer.observe(contentRef.current);
173
+ }
174
+ return () => {
175
+ for (const name of ["wheel", "keydown"])
176
+ el.removeEventListener(name, markUser);
177
+ for (const name of ["touchstart", "touchmove"])
178
+ el.removeEventListener(name, markTouch);
179
+ el.removeEventListener("pointerdown", onPointerDown);
180
+ window.removeEventListener("pointerup", onPointerEnd);
181
+ window.removeEventListener("pointercancel", onPointerEnd);
182
+ el.removeEventListener("scroll", onScroll);
183
+ observer?.disconnect();
184
+ };
185
+ }, [scrollerRef, contentRef, scrollToBottom, writeBottom, hasMessages]);
186
+ const release = useCallback(() => {
187
+ wantBottomRef.current = false;
188
+ }, []);
189
+ return { hasNewBelow, scrollToBottom, release };
190
+ }
191
+ //# sourceMappingURL=use-stick-to-bottom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-stick-to-bottom.js","sourceRoot":"","sources":["../../src/chat/use-stick-to-bottom.ts"],"names":[],"mappings":"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"}
@@ -43,4 +43,17 @@ export interface UsePresenceResponse {
43
43
  * @see Spec §4.3, Arch §2.6
44
44
  */
45
45
  export declare function usePresence(): UsePresenceResponse;
46
+ /**
47
+ * Like {@link usePresence}, but the local user is in presence ONLY while
48
+ * `enabled` is true AND the room is attached: enters when both hold, leaves when
49
+ * either stops holding or on unmount. For a panel that stays mounted while
50
+ * hidden (an embedded pane) so the counterparty never sees someone present who
51
+ * is not looking. The SDK's own auto-enter cannot do this: it does not re-enter
52
+ * after a leave, so this hook drives enter and leave itself.
53
+ *
54
+ * `presence.enter` throws unless the room is attaching or attached, so the
55
+ * effect is keyed on the room status instead of retrying: a room that attaches
56
+ * late (a re-authorise, a detach and re-attach) re-runs the effect and enters.
57
+ */
58
+ export declare function useGatedPresence(enabled: boolean): UsePresenceResponse;
46
59
  //# sourceMappingURL=use-presence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-presence.d.ts","sourceRoot":"","sources":["../../src/chat-ably/use-presence.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC;;;;;;;;OAQG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;;;OAIG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,mBAAmB,CAYjD"}
1
+ {"version":3,"file":"use-presence.d.ts","sourceRoot":"","sources":["../../src/chat-ably/use-presence.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI/D;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC;;;;;;;;OAQG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;;;OAIG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,mBAAmB,CAYjD;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAkBtE"}
@@ -9,6 +9,7 @@
9
9
  // the public surface minimal. Add them here if a future consumer needs
10
10
  // them (e.g. live status updates without re-entering).
11
11
  import { usePresence as useSdkPresence, usePresenceListener } from "@ably/chat/react";
12
+ import * as React from "react";
12
13
  /**
13
14
  * `usePresence()` — composes `usePresence` (write) +
14
15
  * `usePresenceListener` (read) from `@ably/chat/react`. MUST be called
@@ -34,4 +35,38 @@ export function usePresence() {
34
35
  leave,
35
36
  };
36
37
  }
38
+ /** `RoomStatus.Attached`, compared as a string so this module does not import the enum. */
39
+ const ROOM_ATTACHED = "attached";
40
+ /**
41
+ * Like {@link usePresence}, but the local user is in presence ONLY while
42
+ * `enabled` is true AND the room is attached: enters when both hold, leaves when
43
+ * either stops holding or on unmount. For a panel that stays mounted while
44
+ * hidden (an embedded pane) so the counterparty never sees someone present who
45
+ * is not looking. The SDK's own auto-enter cannot do this: it does not re-enter
46
+ * after a leave, so this hook drives enter and leave itself.
47
+ *
48
+ * `presence.enter` throws unless the room is attaching or attached, so the
49
+ * effect is keyed on the room status instead of retrying: a room that attaches
50
+ * late (a re-authorise, a detach and re-attach) re-runs the effect and enters.
51
+ */
52
+ export function useGatedPresence(enabled) {
53
+ const { enter, leave, roomStatus } = useSdkPresence({ autoEnterLeave: false });
54
+ const { presenceData } = usePresenceListener();
55
+ const enterRef = React.useRef(enter);
56
+ const leaveRef = React.useRef(leave);
57
+ React.useEffect(() => {
58
+ enterRef.current = enter;
59
+ leaveRef.current = leave;
60
+ });
61
+ const attached = roomStatus === ROOM_ATTACHED;
62
+ React.useEffect(() => {
63
+ if (!enabled || !attached)
64
+ return;
65
+ void enterRef.current().catch(() => undefined);
66
+ return () => {
67
+ void leaveRef.current().catch(() => undefined);
68
+ };
69
+ }, [enabled, attached]);
70
+ return { presentMembers: presenceData, enter, leave };
71
+ }
37
72
  //# sourceMappingURL=use-presence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-presence.js","sourceRoot":"","sources":["../../src/chat-ably/use-presence.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,qEAAqE;AACrE,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,uDAAuD;AAEvD,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAkCtF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW;IACzB,sEAAsE;IACtE,oEAAoE;IACpE,yDAAyD;IACzD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE/C,OAAO;QACL,cAAc,EAAE,YAAY;QAC5B,KAAK;QACL,KAAK;KACN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"use-presence.js","sourceRoot":"","sources":["../../src/chat-ably/use-presence.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,qEAAqE;AACrE,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,uDAAuD;AAGvD,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiC/B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW;IACzB,sEAAsE;IACtE,oEAAoE;IACpE,yDAAyD;IACzD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE/C,OAAO;QACL,cAAc,EAAE,YAAY;QAC5B,KAAK;QACL,KAAK;KACN,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAI,UAAqB,KAAK,aAAa,CAAC;IAC1D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO;QAClC,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,GAAG,EAAE;YACV,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"access-model-select.d.ts","sourceRoot":"","sources":["../../src/components/access-model-select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,wBAAwB,EAC9B,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,sBAAsB;IACrC,mDAAmD;IACnD,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B;;;;;;;OAOG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAE7C;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAElD;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAExC;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;IAE9D,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oFAAoF;IACpF,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAQ,EACR,OAAsC,EACtC,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,QAAgB,EAChB,SAAiB,EACjB,KAAK,EACL,UAAU,EACV,KAAK,EACL,WAAW,EACX,EAAE,EACF,QAAQ,EACR,SAAS,GACV,EAAE,sBAAsB,2CAoIxB"}
1
+ {"version":3,"file":"access-model-select.d.ts","sourceRoot":"","sources":["../../src/components/access-model-select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,wBAAwB,EAC9B,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,sBAAsB;IACrC,mDAAmD;IACnD,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B;;;;;;;OAOG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAE7C;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAElD;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAExC;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;IAE9D,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oFAAoF;IACpF,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAQ,EACR,OAAsC,EACtC,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,QAAgB,EAChB,SAAiB,EACjB,KAAK,EACL,UAAU,EACV,KAAK,EACL,WAAW,EACX,EAAE,EACF,QAAQ,EACR,SAAS,GACV,EAAE,sBAAsB,2CAqIxB"}
@@ -67,6 +67,7 @@ export function AccessModelSelect({ value, onChange, options = STATIC_ACCESS_MOD
67
67
  const computedPlaceholder = isLoading
68
68
  ? "Loading access models..."
69
69
  : (placeholder ?? "Select access model");
70
- return (_jsxs("div", { className: cn("flex flex-col gap-1.5", className), children: [label && (_jsxs("label", { htmlFor: id, className: cn("text-xs font-semibold text-foreground", hasError && "text-destructive"), children: [label, required && _jsx("span", { className: "ml-0.5 text-destructive", children: "*" })] })), _jsxs(AnimatedShadcnSelect, { value: radixValue, onValueChange: handleRadixValueChange, disabled: isFieldDisabled, children: [_jsx(AnimatedShadcnSelectTrigger, { id: id, "aria-invalid": hasError || undefined, "aria-required": required || undefined, "aria-describedby": describedBy, className: cn("w-full", hasError && "border-destructive focus-visible:ring-destructive/20"), children: _jsx(AnimatedShadcnSelectValue, { placeholder: computedPlaceholder, children: resolvedEntry ? _jsx("span", { children: resolvedEntry.name }) : undefined }) }), _jsx(AnimatedShadcnSelectContent, { children: visibleOptions.length > 0 ? (_jsx(AnimatedShadcnSelectGroup, { children: visibleOptions.map((entry) => (_jsx(AnimatedShadcnSelectItem, { value: entry.id, children: _jsxs("span", { className: "flex flex-col gap-0.5", children: [_jsx("span", { className: "text-sm", children: entry.name }), entry.description && (_jsx("span", { className: "text-xs text-muted-foreground", children: entry.description }))] }) }, entry.id))) })) : (_jsx("div", { className: "px-2 py-3 text-sm text-muted-foreground", children: "No access models available" })) })] }), hasError && error && (_jsx("p", { id: errorId, className: "text-xs text-destructive", role: "alert", children: error })), !hasError && helperText && (_jsx("p", { id: helperId, className: "text-xs text-muted-foreground", children: helperText })), orphanId !== null && renderOrphanBanner?.(orphanId)] }));
70
+ return (_jsxs("div", { className: cn("flex flex-col gap-1.5", className), children: [label && (_jsxs("label", { htmlFor: id, className: cn("text-xs font-semibold text-foreground", hasError && "text-destructive"), children: [label, required && _jsx("span", { className: "ml-0.5 text-destructive", children: "*" })] })), _jsxs(AnimatedShadcnSelect, { value: radixValue, onValueChange: handleRadixValueChange, disabled: isFieldDisabled, children: [_jsx(AnimatedShadcnSelectTrigger, { id: id, "aria-invalid": hasError || undefined, "aria-required": required || undefined, "aria-describedby": describedBy, className: cn("w-full", hasError &&
71
+ "border-destructive focus-visible:border-destructive focus-visible:ring-destructive/90"), children: _jsx(AnimatedShadcnSelectValue, { placeholder: computedPlaceholder, children: resolvedEntry ? _jsx("span", { children: resolvedEntry.name }) : undefined }) }), _jsx(AnimatedShadcnSelectContent, { children: visibleOptions.length > 0 ? (_jsx(AnimatedShadcnSelectGroup, { children: visibleOptions.map((entry) => (_jsx(AnimatedShadcnSelectItem, { value: entry.id, children: _jsxs("span", { className: "flex flex-col gap-0.5", children: [_jsx("span", { className: "text-sm", children: entry.name }), entry.description && (_jsx("span", { className: "text-xs text-muted-foreground", children: entry.description }))] }) }, entry.id))) })) : (_jsx("div", { className: "px-2 py-3 text-sm text-muted-foreground", children: "No access models available" })) })] }), hasError && error && (_jsx("p", { id: errorId, className: "text-xs text-destructive", role: "alert", children: error })), !hasError && helperText && (_jsx("p", { id: helperId, className: "text-xs text-muted-foreground", children: helperText })), orphanId !== null && renderOrphanBanner?.(orphanId)] }));
71
72
  }
72
73
  //# sourceMappingURL=access-model-select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"access-model-select.js","sourceRoot":"","sources":["../../src/components/access-model-select.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access-model-select.js","sourceRoot":"","sources":["../../src/components/access-model-select.tsx"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ function AccordionItem({ className, ...props }) {
10
10
  return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn("border-b last:border-b-0", className), ...props }));
11
11
  }
12
12
  function AccordionTrigger({ className, children, ...props }) {
13
- return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-[box-shadow,border-color] outline-hidden hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", className), ...props, children: [children, _jsx(ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-[var(--duration-standard)]" })] }) }));
13
+ return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-[box-shadow,border-color] outline-hidden hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/70 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", className), ...props, children: [children, _jsx(ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-[var(--duration-standard)]" })] }) }));
14
14
  }
15
15
  function AccordionContent({ className, children, ...props }) {
16
16
  return (_jsx(AccordionPrimitive.Content, { "data-slot": "accordion-content", className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down", ...props, children: _jsx("div", { className: cn("pt-0 pb-4", className), children: children }) }));
@@ -108,7 +108,7 @@ export function AnimatedSelect({ value, onChange, options, placeholder = "Select
108
108
  onChange(optionValue);
109
109
  setOpen(false);
110
110
  }, [onChange]);
111
- return (_jsxs("div", { className: cn("relative", className), ref: containerRef, children: [label && (_jsx("label", { className: "mb-1.5 block text-xs font-semibold text-foreground", children: label })), _jsxs(motion.div, { animate: open ? "open" : "closed", children: [_jsxs("button", { type: "button", onClick: handleToggle, disabled: disabled, className: cn("flex w-full items-center justify-between gap-2 rounded-lg border bg-background px-3 py-2.5 text-left text-sm transition-colors", "border-border hover:border-primary/30 focus:border-primary/30 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-primary/10", open && "border-primary/30 ring-2 ring-primary/10", disabled && "cursor-not-allowed opacity-50", !selectedOption && "text-muted-foreground"), children: [_jsx("span", { className: cn("truncate", selectedOption ? "text-foreground" : "text-muted-foreground"), children: selectedOption?.label ?? placeholder }), _jsx(motion.span, { variants: chevronVariants, transition: { duration: prefersReducedMotion ? 0 : 0.2 }, className: "shrink-0 text-muted-foreground", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", className: "size-4", children: _jsx("path", { fillRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z", clipRule: "evenodd" }) }) })] }), _jsx(AnimatePresence, { children: open && (_jsx(motion.ul, { initial: "closed", animate: "open", exit: "closed", variants: wrapperVariants, style: {
111
+ return (_jsxs("div", { className: cn("relative", className), ref: containerRef, children: [label && (_jsx("label", { className: "mb-1.5 block text-xs font-semibold text-foreground", children: label })), _jsxs(motion.div, { animate: open ? "open" : "closed", children: [_jsxs("button", { type: "button", onClick: handleToggle, disabled: disabled, className: cn("flex w-full items-center justify-between gap-2 rounded-lg border bg-background px-3 py-2.5 text-left text-sm transition-colors", "border-border hover:border-primary/30 focus:border-ring focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring/70", open && "border-primary/30 ring-2 ring-primary/10", disabled && "cursor-not-allowed opacity-50", !selectedOption && "text-muted-foreground"), children: [_jsx("span", { className: cn("truncate", selectedOption ? "text-foreground" : "text-muted-foreground"), children: selectedOption?.label ?? placeholder }), _jsx(motion.span, { variants: chevronVariants, transition: { duration: prefersReducedMotion ? 0 : 0.2 }, className: "shrink-0 text-muted-foreground", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", className: "size-4", children: _jsx("path", { fillRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z", clipRule: "evenodd" }) }) })] }), _jsx(AnimatePresence, { children: open && (_jsx(motion.ul, { initial: "closed", animate: "open", exit: "closed", variants: wrapperVariants, style: {
112
112
  originY: dropDirection === "down" ? "top" : "bottom",
113
113
  }, className: cn("absolute z-50 w-full overflow-hidden rounded-xl border border-border/80 bg-background p-1.5 shadow-lg backdrop-blur-xl", "max-h-56 overflow-y-auto", dropDirection === "down" ? "top-full mt-1.5" : "bottom-full mb-1.5"), children: options.map((option) => {
114
114
  const isSelected = option.value === value;
@@ -1 +1 @@
1
- {"version":3,"file":"animated-select.js","sourceRoot":"","sources":["../../src/components/animated-select.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animated-select.js","sourceRoot":"","sources":["../../src/components/animated-select.tsx"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@ import * as React from "react";
2
2
  import * as SelectPrimitive from "@radix-ui/react-select";
3
3
  export declare const AnimatedShadcnSelect: React.FC<SelectPrimitive.SelectProps>;
4
4
  export declare const AnimatedShadcnSelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
5
- export declare const AnimatedShadcnSelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
6
- export declare function AnimatedShadcnSelectTrigger({ className, size, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
5
+ export declare function AnimatedShadcnSelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>): import("react/jsx-runtime").JSX.Element;
6
+ export declare function AnimatedShadcnSelectTrigger({ className, size, children, onMouseEnter, onFocus, ...props }: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
7
7
  size?: "sm" | "default";
8
8
  }): import("react/jsx-runtime").JSX.Element;
9
9
  export declare function AnimatedShadcnSelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"animated-shadcn-select.d.ts","sourceRoot":"","sources":["../../src/components/animated-shadcn-select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAiB1D,eAAO,MAAM,oBAAoB,uCAAuB,CAAC;AACzD,eAAO,MAAM,yBAAyB,yGAAwB,CAAC;AAC/D,eAAO,MAAM,yBAAyB,0GAAwB,CAAC;AAI/D,wBAAgB,2BAA2B,CAAC,EAC1C,SAAS,EACT,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IACxD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACzB,2CAiBA;AAED,wBAAgB,kCAAkC,CAAC,EACjD,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,2CAU7D;AAED,wBAAgB,oCAAoC,CAAC,EACnD,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,2CAU/D;AAID,KAAK,uBAAuB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;AAEpF,MAAM,WAAW,gCAAiC,SAAQ,uBAAuB;IAC/E;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA8ED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,SAAS,EACT,QAAQ,EACR,QAAyB,EACzB,KAAgB,EAChB,UAAiB,EACjB,WAAmC,EACnC,YAAqC,EACrC,GAAG,KAAK,EACT,EAAE,gCAAgC,2CA4DlC;AA2BD,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAqBnD"}
1
+ {"version":3,"file":"animated-shadcn-select.d.ts","sourceRoot":"","sources":["../../src/components/animated-shadcn-select.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAiB1D,eAAO,MAAM,oBAAoB,uCAAuB,CAAC;AACzD,eAAO,MAAM,yBAAyB,yGAAwB,CAAC;AAK/D,wBAAgB,yBAAyB,CAAC,EACxC,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAID,wBAAgB,2BAA2B,CAAC,EAC1C,SAAS,EACT,IAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IACxD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACzB,2CAyBA;AAED,wBAAgB,kCAAkC,CAAC,EACjD,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,2CAU7D;AAED,wBAAgB,oCAAoC,CAAC,EACnD,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,2CAU/D;AAID,KAAK,uBAAuB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;AAEpF,MAAM,WAAW,gCAAiC,SAAQ,uBAAuB;IAC/E;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA8ED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,SAAS,EACT,QAAQ,EACR,QAAyB,EACzB,KAAgB,EAChB,UAAiB,EACjB,WAAmC,EACnC,YAAqC,EACrC,GAAG,KAAK,EACT,EAAE,gCAAgC,2CA4DlC;AA2BD,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAqBnD"}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { revealTruncatedSelectValue } from "../lib/reveal-truncated-select-value.js";
3
4
  import * as React from "react";
4
5
  import { motion, useReducedMotion } from "motion/react";
5
6
  import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
@@ -11,10 +12,22 @@ import { DROPDOWN_DURATION_CLOSE, DROPDOWN_DURATION_OPEN, DROPDOWN_STAGGER_CLOSE
11
12
  // <ShadcnSelect>; only the Content wrapper carries the motion layer.
12
13
  export const AnimatedShadcnSelect = SelectPrimitive.Root;
13
14
  export const AnimatedShadcnSelectGroup = SelectPrimitive.Group;
14
- export const AnimatedShadcnSelectValue = SelectPrimitive.Value;
15
+ // CEL-2128 — carries `data-slot="select-value"` so the trigger's
16
+ // `*:data-[slot=select-value]:*` rules (truncation, icon alignment) actually
17
+ // match. Without it the value never truncated and a long label (a German
18
+ // closure/region/country name) overflowed the trigger and the card.
19
+ export function AnimatedShadcnSelectValue({ ...props }) {
20
+ return _jsx(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
21
+ }
15
22
  // ─── Trigger (mirrors ShadcnSelectTrigger styling 1:1) ─────────────────────
16
- export function AnimatedShadcnSelectTrigger({ className, size = "default", children, ...props }) {
17
- return (_jsxs(SelectPrimitive.Trigger, { "data-slot": "animated-select-trigger", "data-size": size, className: cn("flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-hidden focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground", className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })] }));
23
+ export function AnimatedShadcnSelectTrigger({ className, size = "default", children, onMouseEnter, onFocus, ...props }) {
24
+ return (_jsxs(SelectPrimitive.Trigger, { "data-slot": "animated-select-trigger", "data-size": size, className: cn("flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-hidden focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/70 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:focus-visible:border-destructive aria-invalid:focus-visible:ring-destructive/90 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:block *:data-[slot=select-value]:min-w-0 *:data-[slot=select-value]:truncate dark:bg-input/30 dark:hover:bg-input/50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground", className), ...props, onMouseEnter: (e) => {
25
+ revealTruncatedSelectValue(e);
26
+ onMouseEnter?.(e);
27
+ }, onFocus: (e) => {
28
+ revealTruncatedSelectValue(e);
29
+ onFocus?.(e);
30
+ }, children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })] }));
18
31
  }
19
32
  export function AnimatedShadcnSelectScrollUpButton({ className, ...props }) {
20
33
  return (_jsx(SelectPrimitive.ScrollUpButton, { "data-slot": "animated-select-scroll-up-button", className: cn("flex cursor-default items-center justify-center py-1", className), ...props, children: _jsx(ChevronUpIcon, { className: "size-4" }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"animated-shadcn-select.js","sourceRoot":"","sources":["../../src/components/animated-shadcn-select.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animated-shadcn-select.js","sourceRoot":"","sources":["../../src/components/animated-shadcn-select.tsx"],"names":[],"mappings":"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"}
@@ -1,18 +1,18 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { cn } from "../lib/utils.js";
3
3
  import { OrgAvatar } from "./org-avatar.js";
4
- const OVERLAP_PX = { sm: -6, md: -9, lg: -12 };
4
+ const OVERLAP_PX = { sm: -4, md: -6, lg: -8 };
5
5
  const PLUS_SIZE_PX = { sm: 24, md: 32, lg: 40 };
6
6
  const PLUS_FONT_PX = { sm: 9, md: 11, lg: 13 };
7
7
  export function AvatarStack({ orgs, max = 4, size = "md", className, direction = "row", }) {
8
8
  const visible = orgs.slice(0, max);
9
9
  const overflow = orgs.length - visible.length;
10
10
  const overlap = OVERLAP_PX[size];
11
- const items = (_jsxs(_Fragment, { children: [visible.map((org, idx) => (_jsx("span", { role: "listitem", className: "relative", style: { marginLeft: idx === 0 ? 0 : overlap, zIndex: visible.length - idx }, children: _jsx(OrgAvatar, { name: org.name, orgId: org.id, logoUrl: org.logoUrl, status: org.status, isOwnOrg: org.isOwnOrg, size: size }) }, org.id))), overflow > 0 && (_jsxs("span", { role: "listitem", className: "relative inline-flex shrink-0 items-center justify-center rounded-full border-2 border-[var(--card)] bg-[color-mix(in_oklab,var(--muted-foreground)_10%,var(--card))] font-display font-bold text-[var(--muted-foreground)] shadow-[0_1px_3px_oklch(0_0_0/0.06)]", style: {
11
+ const items = (_jsxs(_Fragment, { children: [visible.map((org, idx) => (_jsx("span", { role: "listitem", className: "relative", style: { marginInlineStart: idx === 0 ? 0 : overlap, zIndex: visible.length - idx }, children: _jsx(OrgAvatar, { name: org.name, orgId: org.id, logoUrl: org.logoUrl, status: org.status, isOwnOrg: org.isOwnOrg, size: size }) }, org.id))), overflow > 0 && (_jsxs("span", { role: "listitem", className: "relative inline-flex shrink-0 items-center justify-center rounded-full border-2 border-[var(--card)] bg-[color-mix(in_oklab,var(--muted-foreground)_10%,var(--card))] font-display font-bold text-[var(--muted-foreground)] shadow-[0_1px_3px_oklch(0_0_0/0.06)]", style: {
12
12
  width: PLUS_SIZE_PX[size],
13
13
  height: PLUS_SIZE_PX[size],
14
14
  fontSize: PLUS_FONT_PX[size],
15
- marginLeft: overlap,
15
+ marginInlineStart: overlap,
16
16
  zIndex: 0,
17
17
  }, title: `${overflow} more`, children: ["+", overflow] }))] }));
18
18
  return (_jsx("div", { className: cn("inline-flex p-[2px]", direction === "row-reverse" && "flex-row-reverse", className), role: "list", "aria-label": `${orgs.length} organizations`, children: items }));
@@ -1 +1 @@
1
- {"version":3,"file":"avatar-stack.js","sourceRoot":"","sources":["../../src/components/avatar-stack.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,SAAS,EAA4C,MAAM,cAAc,CAAC;AAoBnF,MAAM,UAAU,GAAkC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9E,MAAM,YAAY,GAAkC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC/E,MAAM,YAAY,GAAkC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAE9E,MAAM,UAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAG,GAAG,CAAC,EACP,IAAI,GAAG,IAAI,EACX,SAAS,EACT,SAAS,GAAG,KAAK,GACA;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAG,CACZ,8BACG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CACzB,eAEE,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,YAE5E,KAAC,SAAS,IACR,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,KAAK,EAAE,GAAG,CAAC,EAAE,EACb,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,IAAI,EAAE,IAAI,GACV,IAZG,GAAG,CAAC,EAAE,CAaN,CACR,CAAC,EACD,QAAQ,GAAG,CAAC,IAAI,CACf,gBACE,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,kQAAkQ,EAC5Q,KAAK,EAAE;oBACL,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;oBACzB,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;oBAC1B,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC;oBAC5B,UAAU,EAAE,OAAO;oBACnB,MAAM,EAAE,CAAC;iBACV,EACD,KAAK,EAAE,GAAG,QAAQ,OAAO,kBAEvB,QAAQ,IACL,CACR,IACA,CACJ,CAAC;IAEF,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,qBAAqB,EACrB,SAAS,KAAK,aAAa,IAAI,kBAAkB,EACjD,SAAS,CACV,EACD,IAAI,EAAC,MAAM,gBACC,GAAG,IAAI,CAAC,MAAM,gBAAgB,YAEzC,KAAK,GACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"avatar-stack.js","sourceRoot":"","sources":["../../src/components/avatar-stack.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,SAAS,EAA4C,MAAM,cAAc,CAAC;AAoBnF,MAAM,UAAU,GAAkC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAC7E,MAAM,YAAY,GAAkC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC/E,MAAM,YAAY,GAAkC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAE9E,MAAM,UAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAG,GAAG,CAAC,EACP,IAAI,GAAG,IAAI,EACX,SAAS,EACT,SAAS,GAAG,KAAK,GACA;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAG,CACZ,8BACG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CACzB,eAEE,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,YAEnF,KAAC,SAAS,IACR,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,KAAK,EAAE,GAAG,CAAC,EAAE,EACb,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,IAAI,EAAE,IAAI,GACV,IAZG,GAAG,CAAC,EAAE,CAaN,CACR,CAAC,EACD,QAAQ,GAAG,CAAC,IAAI,CACf,gBACE,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,kQAAkQ,EAC5Q,KAAK,EAAE;oBACL,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;oBACzB,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;oBAC1B,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC;oBAC5B,iBAAiB,EAAE,OAAO;oBAC1B,MAAM,EAAE,CAAC;iBACV,EACD,KAAK,EAAE,GAAG,QAAQ,OAAO,kBAEvB,QAAQ,IACL,CACR,IACA,CACJ,CAAC;IAEF,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,qBAAqB,EACrB,SAAS,KAAK,aAAa,IAAI,kBAAkB,EACjD,SAAS,CACV,EACD,IAAI,EAAC,MAAM,gBACC,GAAG,IAAI,CAAC,MAAM,gBAAgB,YAEzC,KAAK,GACF,CACP,CAAC;AACJ,CAAC"}
@@ -13,7 +13,7 @@ export function Avatar({ src = null, square = false, initials, alt = "", classNa
13
13
  : "rounded-full *:rounded-full"), children: [initials && (_jsxs("svg", { className: "size-full fill-current p-[5%] text-5xl font-medium uppercase select-none", viewBox: "0 0 100 100", "aria-hidden": alt ? undefined : "true", children: [alt && _jsx("title", { children: alt }), _jsx("text", { x: "50%", y: "50%", alignmentBaseline: "middle", dominantBaseline: "middle", textAnchor: "middle", dy: ".125em", children: initials })] })), src && _jsx("img", { className: "size-full", src: src, alt: alt })] }));
14
14
  }
15
15
  export function AvatarButton({ src, square = false, initials, alt, className, ref, ...props }) {
16
- const classes = clsx(className, square ? "rounded-[20%]" : "rounded-full", "relative inline-grid focus:not-data-focus:outline-hidden data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-blue-500");
16
+ const classes = clsx(className, square ? "rounded-[20%]" : "rounded-full", "relative inline-grid focus:not-data-focus:outline-hidden data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-ring");
17
17
  return typeof props.href === "string" ? (_jsx(Link, { ...props, className: classes, ref: ref, children: _jsx(TouchTarget, { children: _jsx(Avatar, { src: src, square: square, initials: initials, alt: alt }) }) })) : (_jsx(Headless.Button, { ...props, className: classes, ref: ref, children: _jsx(TouchTarget, { children: _jsx(Avatar, { src: src, square: square, initials: initials, alt: alt }) }) }));
18
18
  }
19
19
  //# sourceMappingURL=avatar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../src/components/avatar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAU9B,MAAM,UAAU,MAAM,CAAC,EACrB,GAAG,GAAG,IAAI,EACV,MAAM,GAAG,KAAK,EACd,QAAQ,EACR,GAAG,GAAG,EAAE,EACR,SAAS,EACT,GAAG,KAAK,EAC6C;IACrD,OAAO,CACL,6BACY,QAAQ,KACd,KAAK,EACT,SAAS,EAAE,IAAI,CACb,SAAS;QACT,eAAe;QACf,qFAAqF,EACrF,kEAAkE;QAClE,gBAAgB;QAChB,MAAM;YACJ,CAAC,CAAC,uDAAuD;YACzD,CAAC,CAAC,6BAA6B,CAClC,aAEA,QAAQ,IAAI,CACX,eACE,SAAS,EAAC,0EAA0E,EACpF,OAAO,EAAC,aAAa,iBACR,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,aAEpC,GAAG,IAAI,0BAAQ,GAAG,GAAS,EAC5B,eACE,CAAC,EAAC,KAAK,EACP,CAAC,EAAC,KAAK,EACP,iBAAiB,EAAC,QAAQ,EAC1B,gBAAgB,EAAC,QAAQ,EACzB,UAAU,EAAC,QAAQ,EACnB,EAAE,EAAC,QAAQ,YAEV,QAAQ,GACJ,IACH,CACP,EACA,GAAG,IAAI,cAAK,SAAS,EAAC,WAAW,EAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAI,IACpD,CACR,CAAC;AACJ,CAAC;AAcD,MAAM,UAAU,YAAY,CAAC,EAC3B,GAAG,EACH,MAAM,GAAG,KAAK,EACd,QAAQ,EACR,GAAG,EACH,SAAS,EACT,GAAG,EACH,GAAG,KAAK,EACU;IAClB,MAAM,OAAO,GAAG,IAAI,CAClB,SAAS,EACT,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,EACzC,uIAAuI,CACxI,CAAC;IAEF,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CACtC,KAAC,IAAI,OAAK,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAmC,YAC3E,KAAC,WAAW,cACV,KAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAI,GACtD,GACT,CACR,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,CAAC,MAAM,OAAK,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAmC,YACtF,KAAC,WAAW,cACV,KAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAI,GACtD,GACE,CACnB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../src/components/avatar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAU9B,MAAM,UAAU,MAAM,CAAC,EACrB,GAAG,GAAG,IAAI,EACV,MAAM,GAAG,KAAK,EACd,QAAQ,EACR,GAAG,GAAG,EAAE,EACR,SAAS,EACT,GAAG,KAAK,EAC6C;IACrD,OAAO,CACL,6BACY,QAAQ,KACd,KAAK,EACT,SAAS,EAAE,IAAI,CACb,SAAS;QACT,eAAe;QACf,qFAAqF,EACrF,kEAAkE;QAClE,gBAAgB;QAChB,MAAM;YACJ,CAAC,CAAC,uDAAuD;YACzD,CAAC,CAAC,6BAA6B,CAClC,aAEA,QAAQ,IAAI,CACX,eACE,SAAS,EAAC,0EAA0E,EACpF,OAAO,EAAC,aAAa,iBACR,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,aAEpC,GAAG,IAAI,0BAAQ,GAAG,GAAS,EAC5B,eACE,CAAC,EAAC,KAAK,EACP,CAAC,EAAC,KAAK,EACP,iBAAiB,EAAC,QAAQ,EAC1B,gBAAgB,EAAC,QAAQ,EACzB,UAAU,EAAC,QAAQ,EACnB,EAAE,EAAC,QAAQ,YAEV,QAAQ,GACJ,IACH,CACP,EACA,GAAG,IAAI,cAAK,SAAS,EAAC,WAAW,EAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAI,IACpD,CACR,CAAC;AACJ,CAAC;AAcD,MAAM,UAAU,YAAY,CAAC,EAC3B,GAAG,EACH,MAAM,GAAG,KAAK,EACd,QAAQ,EACR,GAAG,EACH,SAAS,EACT,GAAG,EACH,GAAG,KAAK,EACU;IAClB,MAAM,OAAO,GAAG,IAAI,CAClB,SAAS,EACT,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,EACzC,mIAAmI,CACpI,CAAC;IAEF,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CACtC,KAAC,IAAI,OAAK,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAmC,YAC3E,KAAC,WAAW,cACV,KAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAI,GACtD,GACT,CACR,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,CAAC,MAAM,OAAK,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAmC,YACtF,KAAC,WAAW,cACV,KAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAI,GACtD,GACE,CACnB,CAAC;AACJ,CAAC"}
@@ -62,7 +62,7 @@ export function BottleExtractDialog({ open, context, onClose, onSubmit, t, }) {
62
62
  setState({ kind: "error", message: err.message });
63
63
  }
64
64
  };
65
- return (_jsx(Dialog.Root, { open: open, onOpenChange: (nextOpen) => !nextOpen && onClose(), children: _jsxs(Dialog.Portal, { children: [_jsx(Dialog.Overlay, { className: "fixed inset-0 z-50 bg-foreground/20 backdrop-blur-xs" }), _jsxs(Dialog.Content, { "aria-labelledby": titleId, className: cn("fixed left-1/2 top-1/2 z-50 w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2", "rounded-2xl border border-border bg-card p-6 shadow-xl"), children: [_jsx(Dialog.Title, { id: titleId, className: "text-base/6 font-semibold text-foreground", children: t("dialog.title") }), _jsxs("form", { onSubmit: handleSubmit, className: "mt-4 flex flex-col gap-4", children: [_jsx(DropZone, { ref: fileInputRef, file: file, onFileChange: handleFileChange, t: t }), _jsxs("fieldset", { className: "flex flex-col gap-2", children: [_jsx("legend", { className: "sr-only", children: "Upload mode" }), _jsxs("label", { className: "flex cursor-pointer items-start gap-3", children: [_jsx("input", { type: "radio", name: "mode", value: "as_is", checked: mode === "as_is", onChange: () => setMode("as_is"), className: "mt-1" }), _jsxs("span", { children: [_jsx("span", { className: "font-medium text-foreground", children: t("dialog.mode_as_is") }), _jsx("span", { className: "block text-sm text-muted-foreground", children: t("dialog.mode_as_is_help", { name: targetName }) })] })] }), _jsxs("label", { className: "flex cursor-pointer items-start gap-3", children: [_jsx("input", { type: "radio", name: "mode", value: "extract", checked: mode === "extract", onChange: () => setMode("extract"), className: "mt-1" }), _jsxs("span", { children: [_jsx("span", { className: "font-medium text-foreground", children: t("dialog.mode_extract") }), _jsx("span", { className: "block text-sm text-muted-foreground", children: t("dialog.mode_extract_help", { name: targetName }) })] })] })] }), mode === "extract" && (_jsxs("label", { className: "flex cursor-pointer items-center gap-2 text-foreground", children: [_jsx("input", { type: "checkbox", checked: makePrimary, onChange: (e) => setMakePrimary(e.target.checked) }), _jsx("span", { children: t("dialog.make_primary") })] })), state.kind === "error" && (_jsx("div", { role: "alert", className: "rounded-lg border border-[var(--tone-danger-border)] bg-[var(--tone-danger-soft)] p-2 text-sm text-[var(--tone-danger-fg)]", children: state.message })), _jsx("div", { "aria-live": "polite", className: "sr-only", children: state.kind === "submitting" ? t("dialog.uploading") : "" }), _jsxs("div", { className: "mt-2 flex justify-end gap-2", children: [_jsx("button", { type: "button", onClick: onClose, className: "rounded-md px-4 py-2 text-foreground hover:bg-muted/50 focus:outline-hidden focus-visible:ring-2 focus-visible:ring-primary/50", children: t("dialog.cancel") }), _jsx("button", { type: "submit", disabled: !file || state.kind === "submitting", className: "rounded-md bg-[var(--tone-success-solid)] px-4 py-2 text-[var(--tone-success-solid-fg)] hover:bg-[var(--tone-success-solid)]/90 focus:outline-hidden focus-visible:ring-2 focus-visible:ring-[var(--tone-success-ring)] disabled:opacity-50", children: state.kind === "submitting" ? t("dialog.uploading") : t("dialog.submit") })] })] }), _jsx(Dialog.Close, { className: "absolute right-4 top-4 text-muted-foreground hover:text-foreground focus:outline-hidden focus-visible:ring-2 focus-visible:ring-primary/50", "aria-label": "Close", children: "\u00D7" })] })] }) }));
65
+ return (_jsx(Dialog.Root, { open: open, onOpenChange: (nextOpen) => !nextOpen && onClose(), children: _jsxs(Dialog.Portal, { children: [_jsx(Dialog.Overlay, { className: "fixed inset-0 z-50 bg-foreground/20 backdrop-blur-xs" }), _jsxs(Dialog.Content, { "aria-labelledby": titleId, className: cn("fixed left-1/2 top-1/2 z-50 w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2", "rounded-2xl border border-border bg-card p-6 shadow-xl"), children: [_jsx(Dialog.Title, { id: titleId, className: "text-base/6 font-semibold text-foreground", children: t("dialog.title") }), _jsxs("form", { onSubmit: handleSubmit, className: "mt-4 flex flex-col gap-4", children: [_jsx(DropZone, { ref: fileInputRef, file: file, onFileChange: handleFileChange, t: t }), _jsxs("fieldset", { className: "flex flex-col gap-2", children: [_jsx("legend", { className: "sr-only", children: "Upload mode" }), _jsxs("label", { className: "flex cursor-pointer items-start gap-3", children: [_jsx("input", { type: "radio", name: "mode", value: "as_is", checked: mode === "as_is", onChange: () => setMode("as_is"), className: "mt-1" }), _jsxs("span", { children: [_jsx("span", { className: "font-medium text-foreground", children: t("dialog.mode_as_is") }), _jsx("span", { className: "block text-sm text-muted-foreground", children: t("dialog.mode_as_is_help", { name: targetName }) })] })] }), _jsxs("label", { className: "flex cursor-pointer items-start gap-3", children: [_jsx("input", { type: "radio", name: "mode", value: "extract", checked: mode === "extract", onChange: () => setMode("extract"), className: "mt-1" }), _jsxs("span", { children: [_jsx("span", { className: "font-medium text-foreground", children: t("dialog.mode_extract") }), _jsx("span", { className: "block text-sm text-muted-foreground", children: t("dialog.mode_extract_help", { name: targetName }) })] })] })] }), mode === "extract" && (_jsxs("label", { className: "flex cursor-pointer items-center gap-2 text-foreground", children: [_jsx("input", { type: "checkbox", checked: makePrimary, onChange: (e) => setMakePrimary(e.target.checked) }), _jsx("span", { children: t("dialog.make_primary") })] })), state.kind === "error" && (_jsx("div", { role: "alert", className: "rounded-lg border border-[var(--tone-danger-border)] bg-[var(--tone-danger-soft)] p-2 text-sm text-[var(--tone-danger-fg)]", children: state.message })), _jsx("div", { "aria-live": "polite", className: "sr-only", children: state.kind === "submitting" ? t("dialog.uploading") : "" }), _jsxs("div", { className: "mt-2 flex justify-end gap-2", children: [_jsx("button", { type: "button", onClick: onClose, className: "rounded-md px-4 py-2 text-foreground hover:bg-muted/50 focus:outline-hidden focus-visible:ring-2 focus-visible:ring-ring/70", children: t("dialog.cancel") }), _jsx("button", { type: "submit", disabled: !file || state.kind === "submitting", className: "rounded-md bg-[var(--tone-success-solid)] px-4 py-2 text-[var(--tone-success-solid-fg)] hover:bg-[var(--tone-success-solid)]/90 focus:outline-hidden focus-visible:ring-2 focus-visible:ring-ring/70 disabled:opacity-50", children: state.kind === "submitting" ? t("dialog.uploading") : t("dialog.submit") })] })] }), _jsx(Dialog.Close, { className: "absolute right-4 top-4 text-muted-foreground hover:text-foreground focus:outline-hidden focus-visible:ring-2 focus-visible:ring-ring/70", "aria-label": "Close", children: "\u00D7" })] })] }) }));
66
66
  }
67
67
  function DropZone({ ref, file, onFileChange, t, }) {
68
68
  const [hover, setHover] = React.useState(false);
@@ -77,7 +77,7 @@ function DropZone({ ref, file, onFileChange, t, }) {
77
77
  e.preventDefault();
78
78
  setHover(false);
79
79
  onFileChange(e.dataTransfer.files);
80
- }, className: cn("block cursor-pointer rounded-lg border-2 border-dashed p-6 text-center", "focus-within:ring-2 focus-within:ring-[var(--tone-success-ring)]", hover
80
+ }, className: cn("block cursor-pointer rounded-lg border-2 border-dashed p-6 text-center", "focus-within:ring-2 focus-within:ring-ring/70", hover
81
81
  ? "border-[var(--tone-success-border)] bg-[var(--tone-success-soft)]"
82
82
  : "border-border bg-muted/20"), children: [_jsx("input", { ref: ref, type: "file", accept: "image/jpeg,image/png", "aria-labelledby": labelId, className: "sr-only", onChange: (e) => onFileChange(e.target.files) }), _jsx("p", { id: labelId, className: "text-sm text-foreground", children: file ? file.name : t("dialog.drop_zone") })] }));
83
83
  }