@cellarnode/ui 0.1.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 (378) hide show
  1. package/dist/chat/chat-api.d.ts +14 -0
  2. package/dist/chat/chat-api.d.ts.map +1 -0
  3. package/dist/chat/chat-api.js +36 -0
  4. package/dist/chat/chat-api.js.map +1 -0
  5. package/dist/chat/chat-toggle-button.d.ts +8 -0
  6. package/dist/chat/chat-toggle-button.d.ts.map +1 -0
  7. package/dist/chat/chat-toggle-button.js +8 -0
  8. package/dist/chat/chat-toggle-button.js.map +1 -0
  9. package/dist/chat/chat-ws.d.ts +61 -0
  10. package/dist/chat/chat-ws.d.ts.map +1 -0
  11. package/dist/chat/chat-ws.js +217 -0
  12. package/dist/chat/chat-ws.js.map +1 -0
  13. package/dist/chat/communication-hub-widget.d.ts +21 -0
  14. package/dist/chat/communication-hub-widget.d.ts.map +1 -0
  15. package/dist/chat/communication-hub-widget.js +49 -0
  16. package/dist/chat/communication-hub-widget.js.map +1 -0
  17. package/dist/chat/communication-panel.d.ts +3 -0
  18. package/dist/chat/communication-panel.d.ts.map +1 -0
  19. package/dist/chat/communication-panel.js +34 -0
  20. package/dist/chat/communication-panel.js.map +1 -0
  21. package/dist/chat/index.d.ts +17 -0
  22. package/dist/chat/index.d.ts.map +1 -0
  23. package/dist/chat/index.js +11 -0
  24. package/dist/chat/index.js.map +1 -0
  25. package/dist/chat/messenger-layout.d.ts +25 -0
  26. package/dist/chat/messenger-layout.d.ts.map +1 -0
  27. package/dist/chat/messenger-layout.js +70 -0
  28. package/dist/chat/messenger-layout.js.map +1 -0
  29. package/dist/chat/negotiation-event-card.d.ts +9 -0
  30. package/dist/chat/negotiation-event-card.d.ts.map +1 -0
  31. package/dist/chat/negotiation-event-card.js +39 -0
  32. package/dist/chat/negotiation-event-card.js.map +1 -0
  33. package/dist/chat/timeline-utils.d.ts +7 -0
  34. package/dist/chat/timeline-utils.d.ts.map +1 -0
  35. package/dist/chat/timeline-utils.js +40 -0
  36. package/dist/chat/timeline-utils.js.map +1 -0
  37. package/dist/chat/types.d.ts +132 -0
  38. package/dist/chat/types.d.ts.map +1 -0
  39. package/dist/chat/types.js +3 -0
  40. package/dist/chat/types.js.map +1 -0
  41. package/dist/chat/unified-timeline.d.ts +13 -0
  42. package/dist/chat/unified-timeline.d.ts.map +1 -0
  43. package/dist/chat/unified-timeline.js +97 -0
  44. package/dist/chat/unified-timeline.js.map +1 -0
  45. package/dist/chat/use-chat.d.ts +10 -0
  46. package/dist/chat/use-chat.d.ts.map +1 -0
  47. package/dist/chat/use-chat.js +280 -0
  48. package/dist/chat/use-chat.js.map +1 -0
  49. package/dist/components/accordion.d.ts +8 -0
  50. package/dist/components/accordion.d.ts.map +1 -0
  51. package/dist/components/accordion.js +19 -0
  52. package/dist/components/accordion.js.map +1 -0
  53. package/dist/components/alert.d.ts +29 -0
  54. package/dist/components/alert.d.ts.map +1 -0
  55. package/dist/components/alert.js +31 -0
  56. package/dist/components/alert.js.map +1 -0
  57. package/dist/components/animated-list.d.ts +20 -0
  58. package/dist/components/animated-list.d.ts.map +1 -0
  59. package/dist/components/animated-list.js +50 -0
  60. package/dist/components/animated-list.js.map +1 -0
  61. package/dist/components/avatar.d.ts +19 -0
  62. package/dist/components/avatar.d.ts.map +1 -0
  63. package/dist/components/avatar.js +18 -0
  64. package/dist/components/avatar.js.map +1 -0
  65. package/dist/components/badge.d.ts +39 -0
  66. package/dist/components/badge.d.ts.map +1 -0
  67. package/dist/components/badge.js +35 -0
  68. package/dist/components/badge.js.map +1 -0
  69. package/dist/components/button.d.ts +64 -0
  70. package/dist/components/button.d.ts.map +1 -0
  71. package/dist/components/button.js +174 -0
  72. package/dist/components/button.js.map +1 -0
  73. package/dist/components/button.stories.d.ts +13 -0
  74. package/dist/components/button.stories.d.ts.map +1 -0
  75. package/dist/components/button.stories.js +48 -0
  76. package/dist/components/button.stories.js.map +1 -0
  77. package/dist/components/card.d.ts +9 -0
  78. package/dist/components/card.d.ts.map +1 -0
  79. package/dist/components/card.js +17 -0
  80. package/dist/components/card.js.map +1 -0
  81. package/dist/components/checkbox.d.ts +37 -0
  82. package/dist/components/checkbox.d.ts.map +1 -0
  83. package/dist/components/checkbox.js +84 -0
  84. package/dist/components/checkbox.js.map +1 -0
  85. package/dist/components/combobox.d.ts +20 -0
  86. package/dist/components/combobox.d.ts.map +1 -0
  87. package/dist/components/combobox.js +87 -0
  88. package/dist/components/combobox.js.map +1 -0
  89. package/dist/components/command.d.ts +12 -0
  90. package/dist/components/command.d.ts.map +1 -0
  91. package/dist/components/command.js +31 -0
  92. package/dist/components/command.js.map +1 -0
  93. package/dist/components/description-list.d.ts +4 -0
  94. package/dist/components/description-list.d.ts.map +1 -0
  95. package/dist/components/description-list.js +12 -0
  96. package/dist/components/description-list.js.map +1 -0
  97. package/dist/components/dialog.d.ts +30 -0
  98. package/dist/components/dialog.d.ts.map +1 -0
  99. package/dist/components/dialog.js +32 -0
  100. package/dist/components/dialog.js.map +1 -0
  101. package/dist/components/divider.d.ts +4 -0
  102. package/dist/components/divider.d.ts.map +1 -0
  103. package/dist/components/divider.js +6 -0
  104. package/dist/components/divider.js.map +1 -0
  105. package/dist/components/drawer.d.ts +23 -0
  106. package/dist/components/drawer.d.ts.map +1 -0
  107. package/dist/components/drawer.js +23 -0
  108. package/dist/components/drawer.js.map +1 -0
  109. package/dist/components/dropdown-menu.d.ts +26 -0
  110. package/dist/components/dropdown-menu.d.ts.map +1 -0
  111. package/dist/components/dropdown-menu.js +52 -0
  112. package/dist/components/dropdown-menu.js.map +1 -0
  113. package/dist/components/dropdown.d.ts +37 -0
  114. package/dist/components/dropdown.d.ts.map +1 -0
  115. package/dist/components/dropdown.js +79 -0
  116. package/dist/components/dropdown.js.map +1 -0
  117. package/dist/components/fieldset.d.ts +22 -0
  118. package/dist/components/fieldset.d.ts.map +1 -0
  119. package/dist/components/fieldset.js +25 -0
  120. package/dist/components/fieldset.js.map +1 -0
  121. package/dist/components/form.d.ts +25 -0
  122. package/dist/components/form.d.ts.map +1 -0
  123. package/dist/components/form.js +60 -0
  124. package/dist/components/form.js.map +1 -0
  125. package/dist/components/heading.d.ts +7 -0
  126. package/dist/components/heading.d.ts.map +1 -0
  127. package/dist/components/heading.js +11 -0
  128. package/dist/components/heading.js.map +1 -0
  129. package/dist/components/input.d.ts +11 -0
  130. package/dist/components/input.d.ts.map +1 -0
  131. package/dist/components/input.js +57 -0
  132. package/dist/components/input.js.map +1 -0
  133. package/dist/components/kanban-board.d.ts +78 -0
  134. package/dist/components/kanban-board.d.ts.map +1 -0
  135. package/dist/components/kanban-board.js +18 -0
  136. package/dist/components/kanban-board.js.map +1 -0
  137. package/dist/components/kanban-board.stories.d.ts +10 -0
  138. package/dist/components/kanban-board.stories.d.ts.map +1 -0
  139. package/dist/components/kanban-board.stories.js +125 -0
  140. package/dist/components/kanban-board.stories.js.map +1 -0
  141. package/dist/components/kanban-card.d.ts +8 -0
  142. package/dist/components/kanban-card.d.ts.map +1 -0
  143. package/dist/components/kanban-card.js +13 -0
  144. package/dist/components/kanban-card.js.map +1 -0
  145. package/dist/components/kanban-dnd-board.d.ts +8 -0
  146. package/dist/components/kanban-dnd-board.d.ts.map +1 -0
  147. package/dist/components/kanban-dnd-board.js +104 -0
  148. package/dist/components/kanban-dnd-board.js.map +1 -0
  149. package/dist/components/label.d.ts +5 -0
  150. package/dist/components/label.d.ts.map +1 -0
  151. package/dist/components/label.js +9 -0
  152. package/dist/components/label.js.map +1 -0
  153. package/dist/components/link.d.ts +12 -0
  154. package/dist/components/link.d.ts.map +1 -0
  155. package/dist/components/link.js +14 -0
  156. package/dist/components/link.js.map +1 -0
  157. package/dist/components/listbox.d.ts +16 -0
  158. package/dist/components/listbox.d.ts.map +1 -0
  159. package/dist/components/listbox.js +88 -0
  160. package/dist/components/listbox.js.map +1 -0
  161. package/dist/components/pagination.d.ts +18 -0
  162. package/dist/components/pagination.d.ts.map +1 -0
  163. package/dist/components/pagination.js +22 -0
  164. package/dist/components/pagination.js.map +1 -0
  165. package/dist/components/popover.d.ts +11 -0
  166. package/dist/components/popover.d.ts.map +1 -0
  167. package/dist/components/popover.js +27 -0
  168. package/dist/components/popover.js.map +1 -0
  169. package/dist/components/radio.d.ts +38 -0
  170. package/dist/components/radio.d.ts.map +1 -0
  171. package/dist/components/radio.js +87 -0
  172. package/dist/components/radio.js.map +1 -0
  173. package/dist/components/scroll-area.d.ts +6 -0
  174. package/dist/components/scroll-area.d.ts.map +1 -0
  175. package/dist/components/scroll-area.js +14 -0
  176. package/dist/components/scroll-area.js.map +1 -0
  177. package/dist/components/select.d.ts +6 -0
  178. package/dist/components/select.d.ts.map +1 -0
  179. package/dist/components/select.js +41 -0
  180. package/dist/components/select.js.map +1 -0
  181. package/dist/components/separator.d.ts +5 -0
  182. package/dist/components/separator.d.ts.map +1 -0
  183. package/dist/components/separator.js +9 -0
  184. package/dist/components/separator.js.map +1 -0
  185. package/dist/components/shadcn-badge.d.ts +10 -0
  186. package/dist/components/shadcn-badge.d.ts.map +1 -0
  187. package/dist/components/shadcn-badge.js +25 -0
  188. package/dist/components/shadcn-badge.js.map +1 -0
  189. package/dist/components/shadcn-button.d.ts +11 -0
  190. package/dist/components/shadcn-button.d.ts.map +1 -0
  191. package/dist/components/shadcn-button.js +36 -0
  192. package/dist/components/shadcn-button.js.map +1 -0
  193. package/dist/components/shadcn-dialog.d.ts +18 -0
  194. package/dist/components/shadcn-dialog.d.ts.map +1 -0
  195. package/dist/components/shadcn-dialog.js +37 -0
  196. package/dist/components/shadcn-dialog.js.map +1 -0
  197. package/dist/components/shadcn-input.d.ts +4 -0
  198. package/dist/components/shadcn-input.d.ts.map +1 -0
  199. package/dist/components/shadcn-input.js +7 -0
  200. package/dist/components/shadcn-input.js.map +1 -0
  201. package/dist/components/shadcn-select.d.ts +14 -0
  202. package/dist/components/shadcn-select.d.ts.map +1 -0
  203. package/dist/components/shadcn-select.js +32 -0
  204. package/dist/components/shadcn-select.js.map +1 -0
  205. package/dist/components/shadcn-textarea.d.ts +4 -0
  206. package/dist/components/shadcn-textarea.d.ts.map +1 -0
  207. package/dist/components/shadcn-textarea.js +7 -0
  208. package/dist/components/shadcn-textarea.js.map +1 -0
  209. package/dist/components/sheet.d.ts +26 -0
  210. package/dist/components/sheet.d.ts.map +1 -0
  211. package/dist/components/sheet.js +37 -0
  212. package/dist/components/sheet.js.map +1 -0
  213. package/dist/components/sidebar.d.ts +68 -0
  214. package/dist/components/sidebar.d.ts.map +1 -0
  215. package/dist/components/sidebar.js +208 -0
  216. package/dist/components/sidebar.js.map +1 -0
  217. package/dist/components/skeleton.d.ts +3 -0
  218. package/dist/components/skeleton.d.ts.map +1 -0
  219. package/dist/components/skeleton.js +7 -0
  220. package/dist/components/skeleton.js.map +1 -0
  221. package/dist/components/slider.d.ts +5 -0
  222. package/dist/components/slider.d.ts.map +1 -0
  223. package/dist/components/slider.js +8 -0
  224. package/dist/components/slider.js.map +1 -0
  225. package/dist/components/sonner.d.ts +11 -0
  226. package/dist/components/sonner.d.ts.map +1 -0
  227. package/dist/components/sonner.js +14 -0
  228. package/dist/components/sonner.js.map +1 -0
  229. package/dist/components/switch.d.ts +30 -0
  230. package/dist/components/switch.d.ts.map +1 -0
  231. package/dist/components/switch.js +68 -0
  232. package/dist/components/switch.js.map +1 -0
  233. package/dist/components/table.d.ts +17 -0
  234. package/dist/components/table.d.ts.map +1 -0
  235. package/dist/components/table.js +41 -0
  236. package/dist/components/table.js.map +1 -0
  237. package/dist/components/tabs.d.ts +12 -0
  238. package/dist/components/tabs.d.ts.map +1 -0
  239. package/dist/components/tabs.js +30 -0
  240. package/dist/components/tabs.js.map +1 -0
  241. package/dist/components/text.d.ts +6 -0
  242. package/dist/components/text.d.ts.map +1 -0
  243. package/dist/components/text.js +16 -0
  244. package/dist/components/text.js.map +1 -0
  245. package/dist/components/textarea.d.ts +8 -0
  246. package/dist/components/textarea.d.ts.map +1 -0
  247. package/dist/components/textarea.js +38 -0
  248. package/dist/components/textarea.js.map +1 -0
  249. package/dist/components/toast.d.ts +16 -0
  250. package/dist/components/toast.d.ts.map +1 -0
  251. package/dist/components/toast.js +34 -0
  252. package/dist/components/toast.js.map +1 -0
  253. package/dist/components/toaster.d.ts +2 -0
  254. package/dist/components/toaster.d.ts.map +1 -0
  255. package/dist/components/toaster.js +10 -0
  256. package/dist/components/toaster.js.map +1 -0
  257. package/dist/components/tooltip.d.ts +8 -0
  258. package/dist/components/tooltip.d.ts.map +1 -0
  259. package/dist/components/tooltip.js +11 -0
  260. package/dist/components/tooltip.js.map +1 -0
  261. package/dist/components/use-toast.d.ts +3 -0
  262. package/dist/components/use-toast.d.ts.map +1 -0
  263. package/dist/components/use-toast.js +3 -0
  264. package/dist/components/use-toast.js.map +1 -0
  265. package/dist/globe/data/country-geo.d.ts +15 -0
  266. package/dist/globe/data/country-geo.d.ts.map +1 -0
  267. package/dist/globe/data/country-geo.js +81 -0
  268. package/dist/globe/data/country-geo.js.map +1 -0
  269. package/dist/globe/electron-arc.d.ts +30 -0
  270. package/dist/globe/electron-arc.d.ts.map +1 -0
  271. package/dist/globe/electron-arc.js +119 -0
  272. package/dist/globe/electron-arc.js.map +1 -0
  273. package/dist/globe/globe-theme.d.ts +34 -0
  274. package/dist/globe/globe-theme.d.ts.map +1 -0
  275. package/dist/globe/globe-theme.js +118 -0
  276. package/dist/globe/globe-theme.js.map +1 -0
  277. package/dist/globe/globe-types.d.ts +42 -0
  278. package/dist/globe/globe-types.d.ts.map +1 -0
  279. package/dist/globe/globe-types.js +5 -0
  280. package/dist/globe/globe-types.js.map +1 -0
  281. package/dist/globe/globe-view.d.ts +27 -0
  282. package/dist/globe/globe-view.d.ts.map +1 -0
  283. package/dist/globe/globe-view.js +601 -0
  284. package/dist/globe/globe-view.js.map +1 -0
  285. package/dist/globe/globe-view.stories.d.ts +42 -0
  286. package/dist/globe/globe-view.stories.d.ts.map +1 -0
  287. package/dist/globe/globe-view.stories.js +319 -0
  288. package/dist/globe/globe-view.stories.js.map +1 -0
  289. package/dist/globe/index.d.ts +12 -0
  290. package/dist/globe/index.d.ts.map +1 -0
  291. package/dist/globe/index.js +7 -0
  292. package/dist/globe/index.js.map +1 -0
  293. package/dist/globe/map/country-code-map.d.ts +10 -0
  294. package/dist/globe/map/country-code-map.d.ts.map +1 -0
  295. package/dist/globe/map/country-code-map.js +15 -0
  296. package/dist/globe/map/country-code-map.js.map +1 -0
  297. package/dist/globe/map/map-geometry.d.ts +10 -0
  298. package/dist/globe/map/map-geometry.d.ts.map +1 -0
  299. package/dist/globe/map/map-geometry.js +57 -0
  300. package/dist/globe/map/map-geometry.js.map +1 -0
  301. package/dist/globe/map/map-materials.d.ts +8 -0
  302. package/dist/globe/map/map-materials.d.ts.map +1 -0
  303. package/dist/globe/map/map-materials.js +32 -0
  304. package/dist/globe/map/map-materials.js.map +1 -0
  305. package/dist/globe/map/map-projection.d.ts +11 -0
  306. package/dist/globe/map/map-projection.d.ts.map +1 -0
  307. package/dist/globe/map/map-projection.js +17 -0
  308. package/dist/globe/map/map-projection.js.map +1 -0
  309. package/dist/globe/scene-extras.d.ts +10 -0
  310. package/dist/globe/scene-extras.d.ts.map +1 -0
  311. package/dist/globe/scene-extras.js +69 -0
  312. package/dist/globe/scene-extras.js.map +1 -0
  313. package/dist/hooks/use-kanban-dnd.d.ts +23 -0
  314. package/dist/hooks/use-kanban-dnd.d.ts.map +1 -0
  315. package/dist/hooks/use-kanban-dnd.js +22 -0
  316. package/dist/hooks/use-kanban-dnd.js.map +1 -0
  317. package/dist/hooks/use-mobile.d.ts +2 -0
  318. package/dist/hooks/use-mobile.d.ts.map +1 -0
  319. package/dist/hooks/use-mobile.js +16 -0
  320. package/dist/hooks/use-mobile.js.map +1 -0
  321. package/dist/hooks/use-toast.d.ts +45 -0
  322. package/dist/hooks/use-toast.d.ts.map +1 -0
  323. package/dist/hooks/use-toast.js +125 -0
  324. package/dist/hooks/use-toast.js.map +1 -0
  325. package/dist/index.d.ts +58 -0
  326. package/dist/index.d.ts.map +1 -0
  327. package/dist/index.js +68 -0
  328. package/dist/index.js.map +1 -0
  329. package/dist/lib/currencies.d.ts +33 -0
  330. package/dist/lib/currencies.d.ts.map +1 -0
  331. package/dist/lib/currencies.js +13 -0
  332. package/dist/lib/currencies.js.map +1 -0
  333. package/dist/lib/kanban-transitions.d.ts +12 -0
  334. package/dist/lib/kanban-transitions.d.ts.map +1 -0
  335. package/dist/lib/kanban-transitions.js +13 -0
  336. package/dist/lib/kanban-transitions.js.map +1 -0
  337. package/dist/lib/semantic-tones.d.ts +4 -0
  338. package/dist/lib/semantic-tones.d.ts.map +1 -0
  339. package/dist/lib/semantic-tones.js +35 -0
  340. package/dist/lib/semantic-tones.js.map +1 -0
  341. package/dist/lib/utils.d.ts +3 -0
  342. package/dist/lib/utils.d.ts.map +1 -0
  343. package/dist/lib/utils.js +6 -0
  344. package/dist/lib/utils.js.map +1 -0
  345. package/dist/offer/attachments-folder.d.ts +13 -0
  346. package/dist/offer/attachments-folder.d.ts.map +1 -0
  347. package/dist/offer/attachments-folder.js +20 -0
  348. package/dist/offer/attachments-folder.js.map +1 -0
  349. package/dist/offer/confirm-action-dialog.d.ts +18 -0
  350. package/dist/offer/confirm-action-dialog.d.ts.map +1 -0
  351. package/dist/offer/confirm-action-dialog.js +57 -0
  352. package/dist/offer/confirm-action-dialog.js.map +1 -0
  353. package/dist/offer/index.d.ts +11 -0
  354. package/dist/offer/index.d.ts.map +1 -0
  355. package/dist/offer/index.js +6 -0
  356. package/dist/offer/index.js.map +1 -0
  357. package/dist/offer/inline-counter-form.d.ts +19 -0
  358. package/dist/offer/inline-counter-form.d.ts.map +1 -0
  359. package/dist/offer/inline-counter-form.js +59 -0
  360. package/dist/offer/inline-counter-form.js.map +1 -0
  361. package/dist/offer/negotiation-event-card.d.ts +9 -0
  362. package/dist/offer/negotiation-event-card.d.ts.map +1 -0
  363. package/dist/offer/negotiation-event-card.js +39 -0
  364. package/dist/offer/negotiation-event-card.js.map +1 -0
  365. package/dist/offer/offer-status-badge.d.ts +8 -0
  366. package/dist/offer/offer-status-badge.d.ts.map +1 -0
  367. package/dist/offer/offer-status-badge.js +35 -0
  368. package/dist/offer/offer-status-badge.js.map +1 -0
  369. package/dist/offer/types.d.ts +43 -0
  370. package/dist/offer/types.d.ts.map +1 -0
  371. package/dist/offer/types.js +2 -0
  372. package/dist/offer/types.js.map +1 -0
  373. package/dist/theme/index.d.ts +2 -0
  374. package/dist/theme/index.d.ts.map +1 -0
  375. package/dist/theme/index.js +2 -0
  376. package/dist/theme/index.js.map +1 -0
  377. package/package.json +166 -0
  378. package/src/theme/tokens.css +475 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -0,0 +1,6 @@
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
6
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { AttachmentMetadata, TranslationFn } from "./types";
2
+ export interface AttachmentsFolderProps {
3
+ /** Metadata for each attachment. The dashboard resolves these from its own hooks/API. */
4
+ attachments: AttachmentMetadata[];
5
+ /** Callback to download an attachment by ID. The dashboard provides this. */
6
+ onDownload: (attachmentId: string) => void;
7
+ /** Whether a download is in progress */
8
+ isDownloading?: boolean;
9
+ /** Optional translation function; falls back to English defaults. */
10
+ t?: TranslationFn;
11
+ }
12
+ export declare function AttachmentsFolder({ attachments, onDownload, isDownloading, t, }: AttachmentsFolderProps): import("react/jsx-runtime").JSX.Element | null;
13
+ //# sourceMappingURL=attachments-folder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments-folder.d.ts","sourceRoot":"","sources":["../../src/offer/attachments-folder.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,yFAAyF;IACzF,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,6EAA6E;IAC7E,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,wCAAwC;IACxC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qEAAqE;IACrE,CAAC,CAAC,EAAE,aAAa,CAAC;CACnB;AAaD,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,UAAU,EACV,aAAqB,EACrB,CAAY,GACb,EAAE,sBAAsB,kDAqCxB"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Card, CardContent, CardHeader, CardTitle } from "../components/card";
3
+ import { ShadcnButton as Button } from "../components/shadcn-button";
4
+ import { Download, Loader2, FileText, FileImage, File } from "lucide-react";
5
+ const defaultT = (_key, fallback) => fallback;
6
+ function getFileIcon(mimeType) {
7
+ if (!mimeType)
8
+ return _jsx(File, { className: "size-4 text-muted-foreground" });
9
+ if (mimeType.startsWith("image/"))
10
+ return _jsx(FileImage, { className: "size-4 text-primary" });
11
+ if (mimeType.includes("pdf"))
12
+ return _jsx(FileText, { className: "size-4 text-destructive" });
13
+ return _jsx(File, { className: "size-4 text-muted-foreground" });
14
+ }
15
+ export function AttachmentsFolder({ attachments, onDownload, isDownloading = false, t = defaultT, }) {
16
+ if (attachments.length === 0)
17
+ return null;
18
+ return (_jsxs(Card, { className: "premium-panel rounded-[26px] border-0", children: [_jsx(CardHeader, { className: "pb-3", children: _jsx(CardTitle, { className: "text-lg font-display tracking-tight", children: t("attachmentsTitle", "Attachments") }) }), _jsx(CardContent, { className: "grid gap-4", children: _jsx("div", { className: "grid gap-2", children: attachments.map((attachment) => (_jsxs("div", { className: "surface-card flex items-center gap-2 rounded-xl px-3 py-2.5", children: [getFileIcon(attachment.mimeType), _jsx("span", { className: "min-w-0 flex-1 truncate text-sm", children: attachment.fileName }), _jsx(Button, { variant: "ghost", size: "sm", onClick: () => onDownload(attachment.id), disabled: isDownloading, children: isDownloading ? (_jsx(Loader2, { className: "size-4 animate-spin" })) : (_jsx(Download, { className: "size-4" })) })] }, attachment.id))) }) })] }));
19
+ }
20
+ //# sourceMappingURL=attachments-folder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments-folder.js","sourceRoot":"","sources":["../../src/offer/attachments-folder.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAc5E,MAAM,QAAQ,GAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;AAE7D,SAAS,WAAW,CAAC,QAAiB;IACpC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAC,IAAI,IAAC,SAAS,EAAC,8BAA8B,GAAG,CAAC;IACxE,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC/B,OAAO,KAAC,SAAS,IAAC,SAAS,EAAC,qBAAqB,GAAG,CAAC;IACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1B,OAAO,KAAC,QAAQ,IAAC,SAAS,EAAC,yBAAyB,GAAG,CAAC;IAC1D,OAAO,KAAC,IAAI,IAAC,SAAS,EAAC,8BAA8B,GAAG,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,WAAW,EACX,UAAU,EACV,aAAa,GAAG,KAAK,EACrB,CAAC,GAAG,QAAQ,GACW;IACvB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAC,uCAAuC,aACrD,KAAC,UAAU,IAAC,SAAS,EAAC,MAAM,YAC1B,KAAC,SAAS,IAAC,SAAS,EAAC,qCAAqC,YAAE,CAAC,CAAC,kBAAkB,EAAE,aAAa,CAAC,GAAa,GAClG,EACb,KAAC,WAAW,IAAC,SAAS,EAAC,YAAY,YACjC,cAAK,SAAS,EAAC,YAAY,YACxB,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAC/B,eAEE,SAAS,EAAC,6DAA6D,aAEtE,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EACjC,eAAM,SAAS,EAAC,iCAAiC,YAC9C,UAAU,CAAC,QAAQ,GACf,EACP,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,EACxC,QAAQ,EAAE,aAAa,YAEtB,aAAa,CAAC,CAAC,CAAC,CACf,KAAC,OAAO,IAAC,SAAS,EAAC,qBAAqB,GAAG,CAC5C,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,GAAG,CAChC,GACM,KAlBJ,UAAU,CAAC,EAAE,CAmBd,CACP,CAAC,GACE,GACM,IACT,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { OfferActionType, OfferResponseInput, TranslationFn } from "./types";
2
+ export interface ConfirmActionDialogProps {
3
+ offerId: string;
4
+ type: OfferActionType;
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ /**
8
+ * Callback to handle the action. The dashboard provides this
9
+ * (wires to its own mutation/API calls for respond/withdraw).
10
+ */
11
+ onConfirm: (offerId: string, type: OfferActionType, input?: OfferResponseInput) => Promise<void>;
12
+ /** Whether the action is in progress */
13
+ isPending?: boolean;
14
+ /** Optional translation function; falls back to English defaults. */
15
+ t?: TranslationFn;
16
+ }
17
+ export declare function ConfirmActionDialog({ offerId, type, open, onOpenChange, onConfirm, isPending: externalPending, t, }: ConfirmActionDialogProps): import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=confirm-action-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm-action-dialog.d.ts","sourceRoot":"","sources":["../../src/offer/confirm-action-dialog.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElF,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC;;;OAGG;IACH,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,CAAC,CAAC,EAAE,aAAa,CAAC;CACnB;AAkCD,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,SAAS,EAAE,eAAuB,EAClC,CAAY,GACb,EAAE,wBAAwB,2CA2D1B"}
@@ -0,0 +1,57 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { ShadcnDialog as Dialog, ShadcnDialogContent as DialogContent, ShadcnDialogDescription as DialogDescription, ShadcnDialogFooter as DialogFooter, ShadcnDialogHeader as DialogHeader, ShadcnDialogTitle as DialogTitle, } from "../components/shadcn-dialog";
4
+ import { ShadcnButton as Button } from "../components/shadcn-button";
5
+ import { ShadcnTextarea as Textarea } from "../components/shadcn-textarea";
6
+ import { Label } from "../components/label";
7
+ import { Loader2 } from "lucide-react";
8
+ const defaultT = (_key, fallback) => fallback;
9
+ function getDialogConfig(type, t) {
10
+ const configs = {
11
+ accept: {
12
+ title: t("dialogAcceptTitle", "Accept Offer"),
13
+ description: t("dialogAcceptDescription", "Are you sure you want to accept this offer?"),
14
+ confirmLabel: t("accept", "Accept"),
15
+ variant: "default",
16
+ },
17
+ reject: {
18
+ title: t("dialogRejectTitle", "Reject Offer"),
19
+ description: t("dialogRejectDescription", "Are you sure you want to reject this offer?"),
20
+ confirmLabel: t("reject", "Reject"),
21
+ variant: "destructive",
22
+ },
23
+ withdraw: {
24
+ title: t("dialogWithdrawTitle", "Withdraw Response"),
25
+ description: t("dialogWithdrawDescription", "This will withdraw your latest response. This action cannot be undone."),
26
+ confirmLabel: t("withdraw", "Withdraw"),
27
+ variant: "destructive",
28
+ },
29
+ };
30
+ return configs[type];
31
+ }
32
+ export function ConfirmActionDialog({ offerId, type, open, onOpenChange, onConfirm, isPending: externalPending = false, t = defaultT, }) {
33
+ const [message, setMessage] = useState("");
34
+ const [submitting, setSubmitting] = useState(false);
35
+ const config = getDialogConfig(type, t);
36
+ const isPending = externalPending || submitting;
37
+ async function handleConfirm() {
38
+ setSubmitting(true);
39
+ try {
40
+ if (type === "withdraw") {
41
+ await onConfirm(offerId, type);
42
+ }
43
+ else {
44
+ await onConfirm(offerId, type, {
45
+ responseType: type,
46
+ message: message || undefined,
47
+ });
48
+ }
49
+ onOpenChange(false);
50
+ }
51
+ finally {
52
+ setSubmitting(false);
53
+ }
54
+ }
55
+ return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: config.title }), _jsx(DialogDescription, { children: config.description })] }), type !== "withdraw" && (_jsxs("div", { className: "grid gap-2 py-2", children: [_jsx(Label, { htmlFor: "action-message", children: t("messageOptional", "Message (optional)") }), _jsx(Textarea, { id: "action-message", placeholder: t("addNotePlaceholder", "Add a note..."), value: message, onChange: (e) => setMessage(e.target.value) })] })), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "outline", onClick: () => onOpenChange(false), children: t("cancel", "Cancel") }), _jsxs(Button, { onClick: handleConfirm, disabled: isPending, variant: config.variant, children: [isPending && _jsx(Loader2, { className: "mr-2 size-4 animate-spin" }), config.confirmLabel] })] })] }) }));
56
+ }
57
+ //# sourceMappingURL=confirm-action-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm-action-dialog.js","sourceRoot":"","sources":["../../src/offer/confirm-action-dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { OfferStatusBadge } from "./offer-status-badge";
2
+ export type { OfferStatusBadgeProps } from "./offer-status-badge";
3
+ export { NegotiationEventCard } from "./negotiation-event-card";
4
+ export { InlineCounterForm } from "./inline-counter-form";
5
+ export type { InlineCounterFormProps } from "./inline-counter-form";
6
+ export { ConfirmActionDialog } from "./confirm-action-dialog";
7
+ export type { ConfirmActionDialogProps } from "./confirm-action-dialog";
8
+ export { AttachmentsFolder } from "./attachments-folder";
9
+ export type { AttachmentsFolderProps } from "./attachments-folder";
10
+ export type { OfferResponseThread, OfferResponseInput, TranslationFn, AttachmentMetadata, OfferActionType, } from "./types";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/offer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { OfferStatusBadge } from "./offer-status-badge";
2
+ export { NegotiationEventCard } from "./negotiation-event-card";
3
+ export { InlineCounterForm } from "./inline-counter-form";
4
+ export { ConfirmActionDialog } from "./confirm-action-dialog";
5
+ export { AttachmentsFolder } from "./attachments-folder";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/offer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { OfferResponseInput, TranslationFn } from "./types";
2
+ export interface InlineCounterFormProps {
3
+ offerId: string;
4
+ defaultCurrency?: string | null;
5
+ parentResponseId?: string | null;
6
+ onCancel: () => void;
7
+ onSuccess: () => void;
8
+ /**
9
+ * Callback to submit the counter offer. The dashboard provides this
10
+ * (wires to its own mutation/API call).
11
+ */
12
+ onSubmit: (offerId: string, input: OfferResponseInput) => Promise<void>;
13
+ /** Whether the submit is in progress */
14
+ isSubmitting?: boolean;
15
+ /** Optional translation function; falls back to English defaults. */
16
+ t?: TranslationFn;
17
+ }
18
+ export declare function InlineCounterForm({ offerId, defaultCurrency, parentResponseId, onCancel, onSuccess, onSubmit, isSubmitting, t, }: InlineCounterFormProps): import("react/jsx-runtime").JSX.Element;
19
+ //# sourceMappingURL=inline-counter-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-counter-form.d.ts","sourceRoot":"","sources":["../../src/offer/inline-counter-form.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,wCAAwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qEAAqE;IACrE,CAAC,CAAC,EAAE,aAAa,CAAC;CACnB;AAID,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAoB,EACpB,CAAY,GACb,EAAE,sBAAsB,2CA6MxB"}
@@ -0,0 +1,59 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { AnimatePresence, motion } from "motion/react";
4
+ import { ShadcnBadge as Badge } from "../components/shadcn-badge";
5
+ import { ShadcnButton as Button } from "../components/shadcn-button";
6
+ import { ShadcnInput as Input } from "../components/shadcn-input";
7
+ import { Label } from "../components/label";
8
+ import { ShadcnTextarea as Textarea } from "../components/shadcn-textarea";
9
+ import { ShadcnSelect as Select, ShadcnSelectContent as SelectContent, ShadcnSelectItem as SelectItem, ShadcnSelectTrigger as SelectTrigger, ShadcnSelectValue as SelectValue, } from "../components/shadcn-select";
10
+ import { ArrowLeftRight, ChevronDown, ChevronUp, Loader2 } from "lucide-react";
11
+ import { COMMON_CURRENCIES } from "../lib/currencies";
12
+ import { toneClass } from "../lib/semantic-tones";
13
+ const defaultT = (_key, fallback) => fallback;
14
+ export function InlineCounterForm({ offerId, defaultCurrency, parentResponseId, onCancel, onSuccess, onSubmit, isSubmitting = false, t = defaultT, }) {
15
+ const [price, setPrice] = useState("");
16
+ const [currency, setCurrency] = useState(defaultCurrency ?? "EUR");
17
+ const [volume, setVolume] = useState("");
18
+ const [validThrough, setValidThrough] = useState("");
19
+ const [terms, setTerms] = useState("");
20
+ const [message, setMessage] = useState("");
21
+ const [minimized, setMinimized] = useState(false);
22
+ const [submitting, setSubmitting] = useState(false);
23
+ const isPending = isSubmitting || submitting;
24
+ async function handleSubmit(e) {
25
+ e.preventDefault();
26
+ const input = {
27
+ responseType: "counter",
28
+ message: message || undefined,
29
+ parentResponseId: parentResponseId ?? undefined,
30
+ details: {},
31
+ };
32
+ if (price)
33
+ input.details.price = price;
34
+ if (currency)
35
+ input.details.currency = currency;
36
+ if (volume)
37
+ input.details.availableVolume = volume;
38
+ if (validThrough)
39
+ input.details.validThrough = validThrough;
40
+ if (terms)
41
+ input.details.terms = terms;
42
+ setSubmitting(true);
43
+ try {
44
+ await onSubmit(offerId, input);
45
+ onSuccess();
46
+ }
47
+ finally {
48
+ setSubmitting(false);
49
+ }
50
+ }
51
+ return (_jsxs("form", { onSubmit: handleSubmit, className: `${toneClass("negotiation")} rounded-xl border-l-4 px-4 py-3.5`, style: {
52
+ borderLeftColor: "var(--tone-solid)",
53
+ background: "var(--tone-surface)",
54
+ }, children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Badge, { className: `status-pill ${toneClass("negotiation")}`, children: [_jsx(ArrowLeftRight, { className: "size-3" }), t("draftCounter", "Draft Counter")] }), _jsx("span", { className: "flex-1 text-xs text-muted-foreground", children: minimized ? t("expandToEdit", "Expand to edit") : t("changesAppearAs", "Changes appear as a negotiation card") }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", className: "size-7", onClick: () => setMinimized((v) => !v), children: minimized ? (_jsx(ChevronUp, { className: "size-3.5" })) : (_jsx(ChevronDown, { className: "size-3.5" })) })] }), _jsx(AnimatePresence, { initial: false, children: !minimized && (_jsxs(motion.div, { initial: { height: 0, opacity: 0 }, animate: { height: "auto", opacity: 1 }, exit: { height: 0, opacity: 0 }, transition: { duration: 0.2 }, className: "overflow-hidden", children: [_jsxs("div", { className: "mt-3 mb-3", children: [_jsx(Label, { htmlFor: "counter-message", className: "text-xs", children: t("messageOptional", "Message (optional)") }), _jsx(Textarea, { id: "counter-message", placeholder: t("counterNotePlaceholder", "Add a note to the producer..."), rows: 1, className: "resize-none", value: message, onChange: (e) => setMessage(e.target.value) })] }), _jsxs("div", { className: "surface-card mb-3 grid gap-2 rounded-[18px] p-3.5", children: [_jsxs("div", { className: "flex gap-2", children: [_jsxs("div", { className: "flex-1", children: [_jsx(Label, { htmlFor: "counter-price", className: "text-xs", children: t("chipPrice", "Price") }), _jsx(Input, { id: "counter-price", type: "number", step: "0.01", placeholder: "0.00", className: "text-base/6 font-semibold", value: price, onChange: (e) => setPrice(e.target.value) })] }), _jsxs("div", { className: "w-24", children: [_jsx(Label, { htmlFor: "counter-currency", className: "text-xs", children: t("currency", "Currency") }), _jsxs(Select, { value: currency, onValueChange: setCurrency, children: [_jsx(SelectTrigger, { id: "counter-currency", className: "w-full", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: COMMON_CURRENCIES.map((c) => (_jsx(SelectItem, { value: c.code, children: c.code }, c.code))) })] })] })] }), _jsxs("div", { className: "grid grid-cols-2 gap-2", children: [_jsxs("div", { children: [_jsx(Label, { htmlFor: "counter-volume", className: "text-xs", children: t("availableVolumeLabel", "Available Volume (L)") }), _jsx(Input, { id: "counter-volume", type: "number", placeholder: "0", value: volume, onChange: (e) => setVolume(e.target.value) })] }), _jsxs("div", { children: [_jsx(Label, { htmlFor: "counter-valid", className: "text-xs", children: t("chipValidThrough", "Valid through") }), _jsx(Input, { id: "counter-valid", type: "date", value: validThrough, onChange: (e) => setValidThrough(e.target.value) })] })] }), _jsxs("div", { children: [_jsx(Label, { htmlFor: "counter-terms", className: "text-xs", children: t("terms", "Terms") }), _jsx(Textarea, { id: "counter-terms", placeholder: t("termsPlaceholder", "Delivery, payment terms..."), rows: 2, value: terms, onChange: (e) => setTerms(e.target.value) })] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: t("allFieldsOptional", "All fields optional") }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: onCancel, children: t("cancel", "Cancel") }), _jsxs(Button, { type: "submit", size: "sm", disabled: isPending, style: {
55
+ background: "var(--tone-solid)",
56
+ color: "var(--tone-solid-fg)",
57
+ }, children: [isPending && (_jsx(Loader2, { className: "mr-1 size-4 animate-spin" })), t("sendCounter", "Send Counter")] })] })] })] })) })] }));
58
+ }
59
+ //# sourceMappingURL=inline-counter-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-counter-form.js","sourceRoot":"","sources":["../../src/offer/inline-counter-form.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { OfferResponseThread, TranslationFn } from "./types";
2
+ interface NegotiationEventCardProps {
3
+ response: OfferResponseThread;
4
+ /** Optional translation function; falls back to English defaults. */
5
+ t?: TranslationFn;
6
+ }
7
+ export declare function NegotiationEventCard({ response, t }: NegotiationEventCardProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=negotiation-event-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negotiation-event-card.d.ts","sourceRoot":"","sources":["../../src/offer/negotiation-event-card.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,UAAU,yBAAyB;IACjC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,qEAAqE;IACrE,CAAC,CAAC,EAAE,aAAa,CAAC;CACnB;AAkBD,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAY,EAAE,EAAE,yBAAyB,2CAkFzF"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { format, formatDistanceToNow } from "date-fns";
3
+ import { ShadcnBadge as Badge } from "../components/shadcn-badge";
4
+ import { Check, X, ArrowLeftRight, Ban, Link2, } from "lucide-react";
5
+ import { toneClass } from "../lib/semantic-tones";
6
+ const TYPE_ICONS = {
7
+ accept: _jsx(Check, { className: "size-3.5" }),
8
+ counter: _jsx(ArrowLeftRight, { className: "size-3.5" }),
9
+ reject: _jsx(X, { className: "size-3.5" }),
10
+ withdraw: _jsx(Ban, { className: "size-3.5" }),
11
+ };
12
+ const TYPE_TONES = {
13
+ accept: "success",
14
+ counter: "negotiation",
15
+ reject: "danger",
16
+ withdraw: "neutral",
17
+ };
18
+ const defaultT = (_key, fallback) => fallback;
19
+ export function NegotiationEventCard({ response, t = defaultT }) {
20
+ const typeLabels = {
21
+ accept: t("eventAccepted", "Accepted"),
22
+ counter: t("eventCounter", "Counter"),
23
+ reject: t("eventRejected", "Rejected"),
24
+ withdraw: t("eventWithdrawn", "Withdrawn"),
25
+ };
26
+ const icon = TYPE_ICONS[response.responseType] ?? TYPE_ICONS.counter;
27
+ const label = typeLabels[response.responseType] ?? typeLabels.counter;
28
+ const tone = TYPE_TONES[response.responseType] ?? TYPE_TONES.counter;
29
+ const config = { icon, label, tone };
30
+ const isProducer = response.responderRole === "producer";
31
+ const hasCommercials = response.details?.price ||
32
+ response.details?.availableVolume ||
33
+ response.details?.validThrough ||
34
+ response.details?.terms;
35
+ return (_jsxs("div", { className: `tone-panel premium-panel rounded-[24px] border-l-4 px-4 py-4 ${toneClass(config.tone)}`, style: { borderLeftColor: "var(--tone-solid)" }, children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Badge, { className: `status-pill ${toneClass(config.tone)}`, children: [_jsx("span", { className: "mr-1", children: config.icon }), config.label] }), _jsx("span", { className: "text-xs font-medium", children: isProducer ? t("producer", "Producer") : t("you", "You") }), _jsx("span", { className: "text-xs text-muted-foreground", children: formatDistanceToNow(new Date(response.createdAt), {
36
+ addSuffix: true,
37
+ }) }), response.parentResponseId && (_jsxs("span", { className: "inline-flex items-center gap-1 text-xs text-muted-foreground", children: [_jsx(Link2, { className: "size-3" }), t("repliesToPrior", "Replies to prior terms")] }))] }), response.message && (_jsx("p", { className: "mt-3 text-sm/6 text-foreground", children: response.message })), hasCommercials && (_jsxs("div", { className: "surface-card mt-4 grid gap-3 rounded-[20px] p-4 text-sm", children: [response.details?.price && (_jsxs("div", { className: "flex items-center justify-between gap-4", children: [_jsx("span", { className: "text-muted-foreground", children: t("chipPrice", "Price") }), _jsxs("span", { className: "font-medium text-foreground", children: [response.details.currency ?? "", " ", response.details.price] })] })), response.details?.availableVolume && (_jsxs("div", { className: "flex items-center justify-between gap-4", children: [_jsx("span", { className: "text-muted-foreground", children: t("availableVolume", "Available Volume") }), _jsx("span", { className: "font-medium text-foreground", children: response.details.availableVolume })] })), response.details?.validThrough && (_jsxs("div", { className: "flex items-center justify-between gap-4", children: [_jsx("span", { className: "text-muted-foreground", children: t("chipValidThrough", "Valid through") }), _jsx("span", { className: "font-medium text-foreground", children: format(new Date(response.details.validThrough), "MMM d, yyyy") })] })), response.details?.terms && (_jsxs("div", { className: "grid gap-1", children: [_jsx("span", { className: "text-muted-foreground", children: t("terms", "Terms") }), _jsx("span", { className: "text-foreground", children: response.details.terms })] }))] }))] }));
38
+ }
39
+ //# sourceMappingURL=negotiation-event-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negotiation-event-card.js","sourceRoot":"","sources":["../../src/offer/negotiation-event-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACL,KAAK,EACL,CAAC,EACD,cAAc,EACd,GAAG,EACH,KAAK,GACN,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAqB,MAAM,uBAAuB,CAAC;AASrE,MAAM,UAAU,GAAoC;IAClD,MAAM,EAAE,KAAC,KAAK,IAAC,SAAS,EAAC,UAAU,GAAG;IACtC,OAAO,EAAE,KAAC,cAAc,IAAC,SAAS,EAAC,UAAU,GAAG;IAChD,MAAM,EAAE,KAAC,CAAC,IAAC,SAAS,EAAC,UAAU,GAAG;IAClC,QAAQ,EAAE,KAAC,GAAG,IAAC,SAAS,EAAC,UAAU,GAAG;CACvC,CAAC;AAEF,MAAM,UAAU,GAAiC;IAC/C,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,QAAQ,GAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;AAE7D,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAA6B;IACxF,MAAM,UAAU,GAA2B;QACzC,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE,UAAU,CAAC;QACtC,OAAO,EAAE,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC;QACrC,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE,UAAU,CAAC;QACtC,QAAQ,EAAE,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC;KAC3C,CAAC;IACF,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC;IACrE,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC;IACtE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC;IACrE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,KAAK,UAAU,CAAC;IACzD,MAAM,cAAc,GAClB,QAAQ,CAAC,OAAO,EAAE,KAAK;QACvB,QAAQ,CAAC,OAAO,EAAE,eAAe;QACjC,QAAQ,CAAC,OAAO,EAAE,YAAY;QAC9B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IAE1B,OAAO,CACL,eACE,SAAS,EAAE,gEAAgE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EACnG,KAAK,EAAE,EAAE,eAAe,EAAE,mBAAmB,EAAE,aAE/C,eAAK,SAAS,EAAC,mCAAmC,aAChD,MAAC,KAAK,IAAC,SAAS,EAAE,eAAe,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,aACvD,eAAM,SAAS,EAAC,MAAM,YAAE,MAAM,CAAC,IAAI,GAAQ,EAC1C,MAAM,CAAC,KAAK,IACP,EACR,eAAM,SAAS,EAAC,qBAAqB,YAClC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,GACpD,EACP,eAAM,SAAS,EAAC,+BAA+B,YAC5C,mBAAmB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;4BACjD,SAAS,EAAE,IAAI;yBAChB,CAAC,GACG,EACN,QAAQ,CAAC,gBAAgB,IAAI,CAC5B,gBAAM,SAAS,EAAC,8DAA8D,aAC5E,KAAC,KAAK,IAAC,SAAS,EAAC,QAAQ,GAAG,EAC3B,CAAC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,IACzC,CACR,IACG,EAEL,QAAQ,CAAC,OAAO,IAAI,CACnB,YAAG,SAAS,EAAC,gCAAgC,YAAE,QAAQ,CAAC,OAAO,GAAK,CACrE,EAEA,cAAc,IAAI,CACjB,eAAK,SAAS,EAAC,yDAAyD,aACrE,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,CAC1B,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,uBAAuB,YAAE,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,GAAQ,EACxE,gBAAM,SAAS,EAAC,6BAA6B,aAC1C,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,OAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,IACpD,IACH,CACP,EACA,QAAQ,CAAC,OAAO,EAAE,eAAe,IAAI,CACpC,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,uBAAuB,YAAE,CAAC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAAQ,EACzF,eAAM,SAAS,EAAC,6BAA6B,YAAE,QAAQ,CAAC,OAAO,CAAC,eAAe,GAAQ,IACnF,CACP,EACA,QAAQ,CAAC,OAAO,EAAE,YAAY,IAAI,CACjC,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,uBAAuB,YAAE,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC,GAAQ,EACvF,eAAM,SAAS,EAAC,6BAA6B,YAC1C,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,GAC1D,IACH,CACP,EACA,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,CAC1B,eAAK,SAAS,EAAC,YAAY,aACzB,eAAM,SAAS,EAAC,uBAAuB,YAAE,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,GAAQ,EACpE,eAAM,SAAS,EAAC,iBAAiB,YAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAQ,IAC7D,CACP,IACG,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { TranslationFn } from "./types";
2
+ export interface OfferStatusBadgeProps {
3
+ status: string;
4
+ /** Optional translation function; falls back to English defaults. */
5
+ t?: TranslationFn;
6
+ }
7
+ export declare function OfferStatusBadge({ status, t }: OfferStatusBadgeProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=offer-status-badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-status-badge.d.ts","sourceRoot":"","sources":["../../src/offer/offer-status-badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA+B7C,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,CAAC,CAAC,EAAE,aAAa,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAY,EAAE,EAAE,qBAAqB,2CAQ/E"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ShadcnBadge as Badge } from "../components/shadcn-badge";
3
+ import { offerStatusTone, toneClass } from "../lib/semantic-tones";
4
+ const defaultT = (_key, fallback) => fallback;
5
+ function getStatusLabel(status, t) {
6
+ const labels = {
7
+ pending: t("statusPending", "Pending"),
8
+ sent: t("statusSent", "Sent"),
9
+ submitted: t("statusSubmitted", "Submitted"),
10
+ viewed: t("statusViewed", "Viewed"),
11
+ responded: t("statusResponded", "Responded"),
12
+ accepted: t("statusAccepted", "Accepted"),
13
+ declined: t("statusDeclined", "Declined"),
14
+ rejected: t("statusRejected", "Rejected"),
15
+ in_negotiation: t("statusInNegotiation", "In Negotiation"),
16
+ expired: t("statusExpired", "Expired"),
17
+ discarded: t("statusDiscarded", "Discarded"),
18
+ archived: t("statusArchived", "Archived"),
19
+ draft: t("statusDraft", "Draft"),
20
+ };
21
+ return labels[status] ?? t("statusUnknown", "Unknown");
22
+ }
23
+ const MUTED_STATUSES = new Set([
24
+ "expired",
25
+ "discarded",
26
+ "archived",
27
+ "draft",
28
+ "viewed",
29
+ ]);
30
+ export function OfferStatusBadge({ status, t = defaultT }) {
31
+ const label = getStatusLabel(status, t);
32
+ const muted = MUTED_STATUSES.has(status) ? " status-pill-muted" : "";
33
+ return (_jsx(Badge, { variant: "ghost", className: `status-pill${muted} ${toneClass(offerStatusTone(status))}`, children: label }));
34
+ }
35
+ //# sourceMappingURL=offer-status-badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-status-badge.js","sourceRoot":"","sources":["../../src/offer/offer-status-badge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGnE,MAAM,QAAQ,GAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;AAE7D,SAAS,cAAc,CAAC,MAAc,EAAE,CAAgB;IACtD,MAAM,MAAM,GAA2B;QACrC,OAAO,EAAE,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC;QACtC,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC;QAC7B,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC;QAC5C,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC;QACnC,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC;QAC5C,QAAQ,EAAE,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC;QACzC,QAAQ,EAAE,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC;QACzC,QAAQ,EAAE,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC;QACzC,cAAc,EAAE,CAAC,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;QAC1D,OAAO,EAAE,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC;QACtC,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC;QAC5C,QAAQ,EAAE,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC;QACzC,KAAK,EAAE,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC;KACjC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,SAAS;IACT,WAAW;IACX,UAAU;IACV,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAQH,MAAM,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAyB;IAC9E,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,OAAO,CACL,KAAC,KAAK,IAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAE,cAAc,KAAK,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,YAC1F,KAAK,GACA,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { SemanticTone } from "../lib/semantic-tones";
2
+ export interface OfferResponseThread {
3
+ id: string;
4
+ offerId: string;
5
+ recipientId?: string | null;
6
+ importerOrgId: string;
7
+ responseType: "accept" | "counter" | "reject" | "withdraw";
8
+ details?: {
9
+ price?: string;
10
+ currency?: string;
11
+ availableVolume?: string;
12
+ terms?: string;
13
+ validThrough?: string;
14
+ } | null;
15
+ message?: string | null;
16
+ isAccepted?: boolean;
17
+ parentResponseId?: string | null;
18
+ responderOrgId: string;
19
+ responderRole: "producer" | "importer";
20
+ createdAt: string;
21
+ }
22
+ export interface OfferResponseInput {
23
+ responseType: "accept" | "reject" | "counter";
24
+ message?: string;
25
+ parentResponseId?: string;
26
+ details?: {
27
+ price?: string;
28
+ currency?: string;
29
+ availableVolume?: string;
30
+ terms?: string;
31
+ validThrough?: string;
32
+ };
33
+ }
34
+ export type TranslationFn = (key: string, fallback: string, options?: Record<string, unknown>) => string;
35
+ export interface AttachmentMetadata {
36
+ id: string;
37
+ fileName: string;
38
+ mimeType?: string;
39
+ fileSize?: number;
40
+ }
41
+ export type OfferActionType = "accept" | "reject" | "withdraw";
42
+ export type { SemanticTone };
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/offer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC3D,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,IAAI,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,UAAU,GAAG,UAAU,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAID,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;AAIzG,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAG/D,YAAY,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/offer/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const THEME_CSS_PATH = "@cellarnode/ui/theme/tokens.css";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const THEME_CSS_PATH = "@cellarnode/ui/theme/tokens.css";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,iCAAiC,CAAC"}