@contractspec/example.crm-pipeline 1.57.0 → 1.59.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 (259) hide show
  1. package/.turbo/turbo-build.log +148 -164
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +39 -0
  4. package/dist/browser/crm-pipeline.feature.js +75 -0
  5. package/dist/browser/deal/deal.enum.js +18 -0
  6. package/dist/browser/deal/deal.operation.js +396 -0
  7. package/dist/browser/deal/deal.schema.js +141 -0
  8. package/dist/browser/deal/deal.test-spec.js +58 -0
  9. package/dist/browser/deal/index.js +408 -0
  10. package/dist/browser/docs/crm-pipeline.docblock.js +113 -0
  11. package/dist/browser/docs/index.js +113 -0
  12. package/dist/browser/entities/company.entity.js +52 -0
  13. package/dist/browser/entities/contact.entity.js +66 -0
  14. package/dist/browser/entities/deal.entity.js +107 -0
  15. package/dist/browser/entities/index.js +343 -0
  16. package/dist/browser/entities/task.entity.js +99 -0
  17. package/dist/browser/events/contact.event.js +31 -0
  18. package/dist/browser/events/deal.event.js +101 -0
  19. package/dist/browser/events/index.js +158 -0
  20. package/dist/browser/events/task.event.js +28 -0
  21. package/dist/browser/example.js +39 -0
  22. package/dist/browser/handlers/crm.handlers.js +160 -0
  23. package/dist/browser/handlers/deal.handlers.js +293 -0
  24. package/dist/browser/handlers/index.js +456 -0
  25. package/dist/browser/handlers/mock-data.js +165 -0
  26. package/dist/browser/index.js +3279 -0
  27. package/dist/browser/operations/index.js +407 -0
  28. package/dist/browser/presentations/dashboard.presentation.js +52 -0
  29. package/dist/browser/presentations/index.js +284 -0
  30. package/dist/browser/presentations/pipeline.presentation.js +233 -0
  31. package/dist/browser/seeders/index.js +22 -0
  32. package/dist/browser/shared/overlay-types.js +0 -0
  33. package/dist/browser/ui/CrmDashboard.js +1325 -0
  34. package/dist/browser/ui/CrmDealCard.js +50 -0
  35. package/dist/browser/ui/CrmPipelineBoard.js +160 -0
  36. package/dist/browser/ui/hooks/index.js +186 -0
  37. package/dist/browser/ui/hooks/useDealList.js +84 -0
  38. package/dist/browser/ui/hooks/useDealMutations.js +100 -0
  39. package/dist/browser/ui/index.js +1972 -0
  40. package/dist/browser/ui/modals/CreateDealModal.js +211 -0
  41. package/dist/browser/ui/modals/DealActionsModal.js +428 -0
  42. package/dist/browser/ui/modals/index.js +638 -0
  43. package/dist/browser/ui/overlays/demo-overlays.js +55 -0
  44. package/dist/browser/ui/overlays/index.js +55 -0
  45. package/dist/browser/ui/renderers/index.js +827 -0
  46. package/dist/browser/ui/renderers/pipeline.markdown.js +564 -0
  47. package/dist/browser/ui/renderers/pipeline.renderer.js +264 -0
  48. package/dist/crm-pipeline.feature.d.ts +1 -6
  49. package/dist/crm-pipeline.feature.d.ts.map +1 -1
  50. package/dist/crm-pipeline.feature.js +74 -164
  51. package/dist/deal/deal.enum.d.ts +2 -7
  52. package/dist/deal/deal.enum.d.ts.map +1 -1
  53. package/dist/deal/deal.enum.js +16 -22
  54. package/dist/deal/deal.operation.d.ts +444 -450
  55. package/dist/deal/deal.operation.d.ts.map +1 -1
  56. package/dist/deal/deal.operation.js +390 -263
  57. package/dist/deal/deal.schema.d.ts +251 -256
  58. package/dist/deal/deal.schema.d.ts.map +1 -1
  59. package/dist/deal/deal.schema.js +131 -275
  60. package/dist/deal/deal.test-spec.d.ts +2 -7
  61. package/dist/deal/deal.test-spec.d.ts.map +1 -1
  62. package/dist/deal/deal.test-spec.js +56 -62
  63. package/dist/deal/index.d.ts +7 -4
  64. package/dist/deal/index.d.ts.map +1 -0
  65. package/dist/deal/index.js +408 -4
  66. package/dist/docs/crm-pipeline.docblock.d.ts +2 -1
  67. package/dist/docs/crm-pipeline.docblock.d.ts.map +1 -0
  68. package/dist/docs/crm-pipeline.docblock.js +45 -51
  69. package/dist/docs/index.d.ts +2 -1
  70. package/dist/docs/index.d.ts.map +1 -0
  71. package/dist/docs/index.js +114 -1
  72. package/dist/entities/company.entity.d.ts +27 -32
  73. package/dist/entities/company.entity.d.ts.map +1 -1
  74. package/dist/entities/company.entity.js +51 -61
  75. package/dist/entities/contact.entity.d.ts +31 -36
  76. package/dist/entities/contact.entity.d.ts.map +1 -1
  77. package/dist/entities/contact.entity.js +65 -76
  78. package/dist/entities/deal.entity.d.ts +52 -57
  79. package/dist/entities/deal.entity.d.ts.map +1 -1
  80. package/dist/entities/deal.entity.js +104 -116
  81. package/dist/entities/index.d.ts +6 -10
  82. package/dist/entities/index.d.ts.map +1 -1
  83. package/dist/entities/index.js +342 -31
  84. package/dist/entities/task.entity.d.ts +42 -47
  85. package/dist/entities/task.entity.d.ts.map +1 -1
  86. package/dist/entities/task.entity.js +95 -124
  87. package/dist/events/contact.event.d.ts +21 -27
  88. package/dist/events/contact.event.d.ts.map +1 -1
  89. package/dist/events/contact.event.js +29 -42
  90. package/dist/events/deal.event.d.ts +100 -106
  91. package/dist/events/deal.event.d.ts.map +1 -1
  92. package/dist/events/deal.event.js +93 -163
  93. package/dist/events/index.d.ts +4 -4
  94. package/dist/events/index.d.ts.map +1 -0
  95. package/dist/events/index.js +158 -4
  96. package/dist/events/task.event.d.ts +21 -27
  97. package/dist/events/task.event.d.ts.map +1 -1
  98. package/dist/events/task.event.js +26 -42
  99. package/dist/example.d.ts +2 -6
  100. package/dist/example.d.ts.map +1 -1
  101. package/dist/example.js +38 -50
  102. package/dist/handlers/crm.handlers.d.ts +80 -78
  103. package/dist/handlers/crm.handlers.d.ts.map +1 -1
  104. package/dist/handlers/crm.handlers.js +155 -166
  105. package/dist/handlers/deal.handlers.d.ts +58 -63
  106. package/dist/handlers/deal.handlers.d.ts.map +1 -1
  107. package/dist/handlers/deal.handlers.js +279 -105
  108. package/dist/handlers/index.d.ts +10 -4
  109. package/dist/handlers/index.d.ts.map +1 -0
  110. package/dist/handlers/index.js +456 -4
  111. package/dist/handlers/mock-data.d.ts +38 -41
  112. package/dist/handlers/mock-data.d.ts.map +1 -1
  113. package/dist/handlers/mock-data.js +162 -184
  114. package/dist/index.d.ts +13 -42
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +3277 -53
  117. package/dist/node/crm-pipeline.feature.js +75 -0
  118. package/dist/node/deal/deal.enum.js +18 -0
  119. package/dist/node/deal/deal.operation.js +396 -0
  120. package/dist/node/deal/deal.schema.js +141 -0
  121. package/dist/node/deal/deal.test-spec.js +58 -0
  122. package/dist/node/deal/index.js +408 -0
  123. package/dist/node/docs/crm-pipeline.docblock.js +113 -0
  124. package/dist/node/docs/index.js +113 -0
  125. package/dist/node/entities/company.entity.js +52 -0
  126. package/dist/node/entities/contact.entity.js +66 -0
  127. package/dist/node/entities/deal.entity.js +107 -0
  128. package/dist/node/entities/index.js +343 -0
  129. package/dist/node/entities/task.entity.js +99 -0
  130. package/dist/node/events/contact.event.js +31 -0
  131. package/dist/node/events/deal.event.js +101 -0
  132. package/dist/node/events/index.js +158 -0
  133. package/dist/node/events/task.event.js +28 -0
  134. package/dist/node/example.js +39 -0
  135. package/dist/node/handlers/crm.handlers.js +160 -0
  136. package/dist/node/handlers/deal.handlers.js +293 -0
  137. package/dist/node/handlers/index.js +456 -0
  138. package/dist/node/handlers/mock-data.js +165 -0
  139. package/dist/node/index.js +3279 -0
  140. package/dist/node/operations/index.js +407 -0
  141. package/dist/node/presentations/dashboard.presentation.js +52 -0
  142. package/dist/node/presentations/index.js +284 -0
  143. package/dist/node/presentations/pipeline.presentation.js +233 -0
  144. package/dist/node/seeders/index.js +22 -0
  145. package/dist/node/shared/overlay-types.js +0 -0
  146. package/dist/node/ui/CrmDashboard.js +1325 -0
  147. package/dist/node/ui/CrmDealCard.js +50 -0
  148. package/dist/node/ui/CrmPipelineBoard.js +160 -0
  149. package/dist/node/ui/hooks/index.js +186 -0
  150. package/dist/node/ui/hooks/useDealList.js +84 -0
  151. package/dist/node/ui/hooks/useDealMutations.js +100 -0
  152. package/dist/node/ui/index.js +1972 -0
  153. package/dist/node/ui/modals/CreateDealModal.js +211 -0
  154. package/dist/node/ui/modals/DealActionsModal.js +428 -0
  155. package/dist/node/ui/modals/index.js +638 -0
  156. package/dist/node/ui/overlays/demo-overlays.js +55 -0
  157. package/dist/node/ui/overlays/index.js +55 -0
  158. package/dist/node/ui/renderers/index.js +827 -0
  159. package/dist/node/ui/renderers/pipeline.markdown.js +564 -0
  160. package/dist/node/ui/renderers/pipeline.renderer.js +264 -0
  161. package/dist/operations/index.d.ts +2 -5
  162. package/dist/operations/index.d.ts.map +1 -0
  163. package/dist/operations/index.js +407 -5
  164. package/dist/presentations/dashboard.presentation.d.ts +2 -7
  165. package/dist/presentations/dashboard.presentation.d.ts.map +1 -1
  166. package/dist/presentations/dashboard.presentation.js +51 -60
  167. package/dist/presentations/index.d.ts +3 -3
  168. package/dist/presentations/index.d.ts.map +1 -0
  169. package/dist/presentations/index.js +284 -3
  170. package/dist/presentations/pipeline.presentation.d.ts +4 -9
  171. package/dist/presentations/pipeline.presentation.d.ts.map +1 -1
  172. package/dist/presentations/pipeline.presentation.js +228 -116
  173. package/dist/seeders/index.d.ts +4 -8
  174. package/dist/seeders/index.d.ts.map +1 -1
  175. package/dist/seeders/index.js +21 -45
  176. package/dist/shared/overlay-types.d.ts +25 -28
  177. package/dist/shared/overlay-types.d.ts.map +1 -1
  178. package/dist/shared/overlay-types.js +1 -0
  179. package/dist/ui/CrmDashboard.d.ts +1 -6
  180. package/dist/ui/CrmDashboard.d.ts.map +1 -1
  181. package/dist/ui/CrmDashboard.js +1318 -296
  182. package/dist/ui/CrmDealCard.d.ts +8 -12
  183. package/dist/ui/CrmDealCard.d.ts.map +1 -1
  184. package/dist/ui/CrmDealCard.js +47 -45
  185. package/dist/ui/CrmPipelineBoard.d.ts +11 -20
  186. package/dist/ui/CrmPipelineBoard.d.ts.map +1 -1
  187. package/dist/ui/CrmPipelineBoard.js +157 -94
  188. package/dist/ui/hooks/index.d.ts +3 -3
  189. package/dist/ui/hooks/index.d.ts.map +1 -0
  190. package/dist/ui/hooks/index.js +185 -4
  191. package/dist/ui/hooks/useDealList.d.ts +28 -32
  192. package/dist/ui/hooks/useDealList.d.ts.map +1 -1
  193. package/dist/ui/hooks/useDealList.js +81 -90
  194. package/dist/ui/hooks/useDealMutations.d.ts +18 -22
  195. package/dist/ui/hooks/useDealMutations.d.ts.map +1 -1
  196. package/dist/ui/hooks/useDealMutations.js +97 -155
  197. package/dist/ui/index.d.ts +8 -14
  198. package/dist/ui/index.d.ts.map +1 -0
  199. package/dist/ui/index.js +1973 -15
  200. package/dist/ui/modals/CreateDealModal.d.ts +19 -29
  201. package/dist/ui/modals/CreateDealModal.d.ts.map +1 -1
  202. package/dist/ui/modals/CreateDealModal.js +209 -180
  203. package/dist/ui/modals/DealActionsModal.d.ts +31 -44
  204. package/dist/ui/modals/DealActionsModal.d.ts.map +1 -1
  205. package/dist/ui/modals/DealActionsModal.js +424 -367
  206. package/dist/ui/modals/index.d.ts +3 -3
  207. package/dist/ui/modals/index.d.ts.map +1 -0
  208. package/dist/ui/modals/index.js +638 -3
  209. package/dist/ui/overlays/demo-overlays.d.ts +10 -8
  210. package/dist/ui/overlays/demo-overlays.d.ts.map +1 -1
  211. package/dist/ui/overlays/demo-overlays.js +54 -66
  212. package/dist/ui/overlays/index.d.ts +2 -2
  213. package/dist/ui/overlays/index.d.ts.map +1 -0
  214. package/dist/ui/overlays/index.js +56 -3
  215. package/dist/ui/renderers/index.d.ts +3 -3
  216. package/dist/ui/renderers/index.d.ts.map +1 -0
  217. package/dist/ui/renderers/index.js +827 -3
  218. package/dist/ui/renderers/pipeline.markdown.d.ts +12 -11
  219. package/dist/ui/renderers/pipeline.markdown.d.ts.map +1 -1
  220. package/dist/ui/renderers/pipeline.markdown.js +560 -114
  221. package/dist/ui/renderers/pipeline.renderer.d.ts +9 -7
  222. package/dist/ui/renderers/pipeline.renderer.d.ts.map +1 -1
  223. package/dist/ui/renderers/pipeline.renderer.js +261 -24
  224. package/package.json +476 -90
  225. package/tsdown.config.js +1 -2
  226. package/.turbo/turbo-build$colon$bundle.log +0 -164
  227. package/dist/crm-pipeline.feature.js.map +0 -1
  228. package/dist/deal/deal.enum.js.map +0 -1
  229. package/dist/deal/deal.operation.js.map +0 -1
  230. package/dist/deal/deal.schema.js.map +0 -1
  231. package/dist/deal/deal.test-spec.js.map +0 -1
  232. package/dist/docs/crm-pipeline.docblock.js.map +0 -1
  233. package/dist/entities/company.entity.js.map +0 -1
  234. package/dist/entities/contact.entity.js.map +0 -1
  235. package/dist/entities/deal.entity.js.map +0 -1
  236. package/dist/entities/index.js.map +0 -1
  237. package/dist/entities/task.entity.js.map +0 -1
  238. package/dist/events/contact.event.js.map +0 -1
  239. package/dist/events/deal.event.js.map +0 -1
  240. package/dist/events/task.event.js.map +0 -1
  241. package/dist/example.js.map +0 -1
  242. package/dist/handlers/crm.handlers.js.map +0 -1
  243. package/dist/handlers/deal.handlers.js.map +0 -1
  244. package/dist/handlers/mock-data.js.map +0 -1
  245. package/dist/index.js.map +0 -1
  246. package/dist/presentations/dashboard.presentation.js.map +0 -1
  247. package/dist/presentations/pipeline.presentation.js.map +0 -1
  248. package/dist/seeders/index.js.map +0 -1
  249. package/dist/ui/CrmDashboard.js.map +0 -1
  250. package/dist/ui/CrmDealCard.js.map +0 -1
  251. package/dist/ui/CrmPipelineBoard.js.map +0 -1
  252. package/dist/ui/hooks/useDealList.js.map +0 -1
  253. package/dist/ui/hooks/useDealMutations.js.map +0 -1
  254. package/dist/ui/modals/CreateDealModal.js.map +0 -1
  255. package/dist/ui/modals/DealActionsModal.js.map +0 -1
  256. package/dist/ui/overlays/demo-overlays.js.map +0 -1
  257. package/dist/ui/renderers/pipeline.markdown.js.map +0 -1
  258. package/dist/ui/renderers/pipeline.renderer.js.map +0 -1
  259. package/tsconfig.tsbuildinfo +0 -1
@@ -1,33 +1,23 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
- //#region src/ui/modals/CreateDealModal.d.ts
4
- interface CreateDealInput {
5
- name: string;
6
- value: number;
7
- currency: string;
8
- pipelineId: string;
9
- stageId: string;
10
- expectedCloseDate?: Date;
11
- contactId?: string;
12
- companyId?: string;
1
+ export interface CreateDealInput {
2
+ name: string;
3
+ value: number;
4
+ currency: string;
5
+ pipelineId: string;
6
+ stageId: string;
7
+ expectedCloseDate?: Date;
8
+ contactId?: string;
9
+ companyId?: string;
13
10
  }
14
11
  interface CreateDealModalProps {
15
- isOpen: boolean;
16
- onClose: () => void;
17
- onSubmit: (input: CreateDealInput) => Promise<void>;
18
- stages: {
19
- id: string;
20
- name: string;
21
- }[];
22
- isLoading?: boolean;
12
+ isOpen: boolean;
13
+ onClose: () => void;
14
+ onSubmit: (input: CreateDealInput) => Promise<void>;
15
+ stages: {
16
+ id: string;
17
+ name: string;
18
+ }[];
19
+ isLoading?: boolean;
23
20
  }
24
- declare function CreateDealModal({
25
- isOpen,
26
- onClose,
27
- onSubmit,
28
- stages,
29
- isLoading
30
- }: CreateDealModalProps): react_jsx_runtime0.JSX.Element | null;
31
- //#endregion
32
- export { CreateDealInput, CreateDealModal };
21
+ export declare function CreateDealModal({ isOpen, onClose, onSubmit, stages, isLoading, }: CreateDealModalProps): import("react/jsx-runtime").JSX.Element | null;
22
+ export {};
33
23
  //# sourceMappingURL=CreateDealModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateDealModal.d.ts","names":[],"sources":["../../../src/ui/modals/CreateDealModal.tsx"],"mappings":";;;UAWiB,eAAA;EACf,IAAA;EACA,KAAA;EACA,QAAA;EACA,UAAA;EACA,OAAA;EACA,iBAAA,GAAoB,IAAA;EACpB,SAAA;EACA,SAAA;AAAA;AAAA,UAGQ,oBAAA;EACR,MAAA;EACA,OAAA;EACA,QAAA,GAAW,KAAA,EAAO,eAAA,KAAoB,OAAA;EACtC,MAAA;IAAU,EAAA;IAAY,IAAA;EAAA;EACtB,SAAA;AAAA;AAAA,iBAMc,eAAA,CAAA;EACd,MAAA;EACA,OAAA;EACA,QAAA;EACA,MAAA;EACA;AAAA,GACC,oBAAA,GAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"CreateDealModal.d.ts","sourceRoot":"","sources":["../../../src/ui/modals/CreateDealModal.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oBAAoB;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAKD,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAiB,GAClB,EAAE,oBAAoB,kDAuMtB"}
@@ -1,183 +1,212 @@
1
- 'use client';
2
-
1
+ // @bun
2
+ // src/ui/modals/CreateDealModal.tsx
3
3
  import { useState } from "react";
4
4
  import { Button, Input } from "@contractspec/lib.design-system";
5
- import { jsx, jsxs } from "react/jsx-runtime";
6
-
7
- //#region src/ui/modals/CreateDealModal.tsx
8
- /**
9
- * CreateDealModal - Form for creating a new deal
10
- *
11
- * Wires to CreateDealContract via useDealMutations hook.
12
- */
13
- const CURRENCIES = [
14
- "USD",
15
- "EUR",
16
- "GBP",
17
- "CAD"
18
- ];
19
- const DEFAULT_PIPELINE_ID = "pipeline-1";
20
- function CreateDealModal({ isOpen, onClose, onSubmit, stages, isLoading = false }) {
21
- const [name, setName] = useState("");
22
- const [value, setValue] = useState("");
23
- const [currency, setCurrency] = useState("USD");
24
- const [stageId, setStageId] = useState(stages[0]?.id ?? "");
25
- const [expectedCloseDate, setExpectedCloseDate] = useState("");
26
- const [error, setError] = useState(null);
27
- const handleSubmit = async (e) => {
28
- e.preventDefault();
29
- setError(null);
30
- if (!name.trim()) {
31
- setError("Deal name is required");
32
- return;
33
- }
34
- const numericValue = parseFloat(value);
35
- if (isNaN(numericValue) || numericValue <= 0) {
36
- setError("Value must be a positive number");
37
- return;
38
- }
39
- if (!stageId) {
40
- setError("Please select a pipeline stage");
41
- return;
42
- }
43
- try {
44
- await onSubmit({
45
- name: name.trim(),
46
- value: numericValue,
47
- currency,
48
- pipelineId: DEFAULT_PIPELINE_ID,
49
- stageId,
50
- expectedCloseDate: expectedCloseDate ? new Date(expectedCloseDate) : void 0
51
- });
52
- setName("");
53
- setValue("");
54
- setCurrency("USD");
55
- setStageId(stages[0]?.id ?? "");
56
- setExpectedCloseDate("");
57
- onClose();
58
- } catch (err) {
59
- setError(err instanceof Error ? err.message : "Failed to create deal");
60
- }
61
- };
62
- if (!isOpen) return null;
63
- return /* @__PURE__ */ jsxs("div", {
64
- className: "fixed inset-0 z-50 flex items-center justify-center",
65
- children: [/* @__PURE__ */ jsx("div", {
66
- className: "bg-background/80 absolute inset-0 backdrop-blur-sm",
67
- onClick: onClose,
68
- role: "button",
69
- tabIndex: 0,
70
- onKeyDown: (e) => {
71
- if (e.key === "Enter" || e.key === " ") onClose();
72
- },
73
- "aria-label": "Close modal"
74
- }), /* @__PURE__ */ jsxs("div", {
75
- className: "bg-card border-border relative z-10 w-full max-w-md rounded-xl border p-6 shadow-xl",
76
- children: [/* @__PURE__ */ jsx("h2", {
77
- className: "mb-4 text-xl font-semibold",
78
- children: "Create New Deal"
79
- }), /* @__PURE__ */ jsxs("form", {
80
- onSubmit: handleSubmit,
81
- className: "space-y-4",
82
- children: [
83
- /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("label", {
84
- htmlFor: "deal-name",
85
- className: "text-muted-foreground mb-1 block text-sm font-medium",
86
- children: "Deal Name *"
87
- }), /* @__PURE__ */ jsx(Input, {
88
- id: "deal-name",
89
- value: name,
90
- onChange: (e) => setName(e.target.value),
91
- placeholder: "e.g., Enterprise License - Acme Corp",
92
- disabled: isLoading
93
- })] }),
94
- /* @__PURE__ */ jsxs("div", {
95
- className: "flex gap-3",
96
- children: [/* @__PURE__ */ jsxs("div", {
97
- className: "flex-1",
98
- children: [/* @__PURE__ */ jsx("label", {
99
- htmlFor: "deal-value",
100
- className: "text-muted-foreground mb-1 block text-sm font-medium",
101
- children: "Value *"
102
- }), /* @__PURE__ */ jsx(Input, {
103
- id: "deal-value",
104
- type: "number",
105
- min: "0",
106
- step: "0.01",
107
- value,
108
- onChange: (e) => setValue(e.target.value),
109
- placeholder: "50000",
110
- disabled: isLoading
111
- })]
112
- }), /* @__PURE__ */ jsxs("div", {
113
- className: "w-24",
114
- children: [/* @__PURE__ */ jsx("label", {
115
- htmlFor: "deal-currency",
116
- className: "text-muted-foreground mb-1 block text-sm font-medium",
117
- children: "Currency"
118
- }), /* @__PURE__ */ jsx("select", {
119
- id: "deal-currency",
120
- value: currency,
121
- onChange: (e) => setCurrency(e.target.value),
122
- disabled: isLoading,
123
- className: "border-input bg-background focus:ring-ring h-10 w-full rounded-md border px-3 py-2 text-sm focus:ring-2 focus:outline-none disabled:opacity-50",
124
- children: CURRENCIES.map((c) => /* @__PURE__ */ jsx("option", {
125
- value: c,
126
- children: c
127
- }, c))
128
- })]
129
- })]
130
- }),
131
- /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("label", {
132
- htmlFor: "deal-stage",
133
- className: "text-muted-foreground mb-1 block text-sm font-medium",
134
- children: "Pipeline Stage *"
135
- }), /* @__PURE__ */ jsx("select", {
136
- id: "deal-stage",
137
- value: stageId,
138
- onChange: (e) => setStageId(e.target.value),
139
- disabled: isLoading,
140
- className: "border-input bg-background focus:ring-ring h-10 w-full rounded-md border px-3 py-2 text-sm focus:ring-2 focus:outline-none disabled:opacity-50",
141
- children: stages.map((stage) => /* @__PURE__ */ jsx("option", {
142
- value: stage.id,
143
- children: stage.name
144
- }, stage.id))
145
- })] }),
146
- /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("label", {
147
- htmlFor: "deal-close-date",
148
- className: "text-muted-foreground mb-1 block text-sm font-medium",
149
- children: "Expected Close Date"
150
- }), /* @__PURE__ */ jsx(Input, {
151
- id: "deal-close-date",
152
- type: "date",
153
- value: expectedCloseDate,
154
- onChange: (e) => setExpectedCloseDate(e.target.value),
155
- disabled: isLoading
156
- })] }),
157
- error && /* @__PURE__ */ jsx("div", {
158
- className: "bg-destructive/10 text-destructive rounded-md p-3 text-sm",
159
- children: error
160
- }),
161
- /* @__PURE__ */ jsxs("div", {
162
- className: "flex justify-end gap-3 pt-2",
163
- children: [/* @__PURE__ */ jsx(Button, {
164
- type: "button",
165
- variant: "ghost",
166
- onPress: onClose,
167
- disabled: isLoading,
168
- children: "Cancel"
169
- }), /* @__PURE__ */ jsx(Button, {
170
- type: "submit",
171
- disabled: isLoading,
172
- children: isLoading ? "Creating..." : "Create Deal"
173
- })]
174
- })
175
- ]
176
- })]
177
- })]
178
- });
5
+ import { jsxDEV } from "react/jsx-dev-runtime";
6
+ "use client";
7
+ var CURRENCIES = ["USD", "EUR", "GBP", "CAD"];
8
+ var DEFAULT_PIPELINE_ID = "pipeline-1";
9
+ function CreateDealModal({
10
+ isOpen,
11
+ onClose,
12
+ onSubmit,
13
+ stages,
14
+ isLoading = false
15
+ }) {
16
+ const [name, setName] = useState("");
17
+ const [value, setValue] = useState("");
18
+ const [currency, setCurrency] = useState("USD");
19
+ const [stageId, setStageId] = useState(stages[0]?.id ?? "");
20
+ const [expectedCloseDate, setExpectedCloseDate] = useState("");
21
+ const [error, setError] = useState(null);
22
+ const handleSubmit = async (e) => {
23
+ e.preventDefault();
24
+ setError(null);
25
+ if (!name.trim()) {
26
+ setError("Deal name is required");
27
+ return;
28
+ }
29
+ const numericValue = parseFloat(value);
30
+ if (isNaN(numericValue) || numericValue <= 0) {
31
+ setError("Value must be a positive number");
32
+ return;
33
+ }
34
+ if (!stageId) {
35
+ setError("Please select a pipeline stage");
36
+ return;
37
+ }
38
+ try {
39
+ await onSubmit({
40
+ name: name.trim(),
41
+ value: numericValue,
42
+ currency,
43
+ pipelineId: DEFAULT_PIPELINE_ID,
44
+ stageId,
45
+ expectedCloseDate: expectedCloseDate ? new Date(expectedCloseDate) : undefined
46
+ });
47
+ setName("");
48
+ setValue("");
49
+ setCurrency("USD");
50
+ setStageId(stages[0]?.id ?? "");
51
+ setExpectedCloseDate("");
52
+ onClose();
53
+ } catch (err) {
54
+ setError(err instanceof Error ? err.message : "Failed to create deal");
55
+ }
56
+ };
57
+ if (!isOpen)
58
+ return null;
59
+ return /* @__PURE__ */ jsxDEV("div", {
60
+ className: "fixed inset-0 z-50 flex items-center justify-center",
61
+ children: [
62
+ /* @__PURE__ */ jsxDEV("div", {
63
+ className: "bg-background/80 absolute inset-0 backdrop-blur-sm",
64
+ onClick: onClose,
65
+ role: "button",
66
+ tabIndex: 0,
67
+ onKeyDown: (e) => {
68
+ if (e.key === "Enter" || e.key === " ")
69
+ onClose();
70
+ },
71
+ "aria-label": "Close modal"
72
+ }, undefined, false, undefined, this),
73
+ /* @__PURE__ */ jsxDEV("div", {
74
+ className: "bg-card border-border relative z-10 w-full max-w-md rounded-xl border p-6 shadow-xl",
75
+ children: [
76
+ /* @__PURE__ */ jsxDEV("h2", {
77
+ className: "mb-4 text-xl font-semibold",
78
+ children: "Create New Deal"
79
+ }, undefined, false, undefined, this),
80
+ /* @__PURE__ */ jsxDEV("form", {
81
+ onSubmit: handleSubmit,
82
+ className: "space-y-4",
83
+ children: [
84
+ /* @__PURE__ */ jsxDEV("div", {
85
+ children: [
86
+ /* @__PURE__ */ jsxDEV("label", {
87
+ htmlFor: "deal-name",
88
+ className: "text-muted-foreground mb-1 block text-sm font-medium",
89
+ children: "Deal Name *"
90
+ }, undefined, false, undefined, this),
91
+ /* @__PURE__ */ jsxDEV(Input, {
92
+ id: "deal-name",
93
+ value: name,
94
+ onChange: (e) => setName(e.target.value),
95
+ placeholder: "e.g., Enterprise License - Acme Corp",
96
+ disabled: isLoading
97
+ }, undefined, false, undefined, this)
98
+ ]
99
+ }, undefined, true, undefined, this),
100
+ /* @__PURE__ */ jsxDEV("div", {
101
+ className: "flex gap-3",
102
+ children: [
103
+ /* @__PURE__ */ jsxDEV("div", {
104
+ className: "flex-1",
105
+ children: [
106
+ /* @__PURE__ */ jsxDEV("label", {
107
+ htmlFor: "deal-value",
108
+ className: "text-muted-foreground mb-1 block text-sm font-medium",
109
+ children: "Value *"
110
+ }, undefined, false, undefined, this),
111
+ /* @__PURE__ */ jsxDEV(Input, {
112
+ id: "deal-value",
113
+ type: "number",
114
+ min: "0",
115
+ step: "0.01",
116
+ value,
117
+ onChange: (e) => setValue(e.target.value),
118
+ placeholder: "50000",
119
+ disabled: isLoading
120
+ }, undefined, false, undefined, this)
121
+ ]
122
+ }, undefined, true, undefined, this),
123
+ /* @__PURE__ */ jsxDEV("div", {
124
+ className: "w-24",
125
+ children: [
126
+ /* @__PURE__ */ jsxDEV("label", {
127
+ htmlFor: "deal-currency",
128
+ className: "text-muted-foreground mb-1 block text-sm font-medium",
129
+ children: "Currency"
130
+ }, undefined, false, undefined, this),
131
+ /* @__PURE__ */ jsxDEV("select", {
132
+ id: "deal-currency",
133
+ value: currency,
134
+ onChange: (e) => setCurrency(e.target.value),
135
+ disabled: isLoading,
136
+ className: "border-input bg-background focus:ring-ring h-10 w-full rounded-md border px-3 py-2 text-sm focus:ring-2 focus:outline-none disabled:opacity-50",
137
+ children: CURRENCIES.map((c) => /* @__PURE__ */ jsxDEV("option", {
138
+ value: c,
139
+ children: c
140
+ }, c, false, undefined, this))
141
+ }, undefined, false, undefined, this)
142
+ ]
143
+ }, undefined, true, undefined, this)
144
+ ]
145
+ }, undefined, true, undefined, this),
146
+ /* @__PURE__ */ jsxDEV("div", {
147
+ children: [
148
+ /* @__PURE__ */ jsxDEV("label", {
149
+ htmlFor: "deal-stage",
150
+ className: "text-muted-foreground mb-1 block text-sm font-medium",
151
+ children: "Pipeline Stage *"
152
+ }, undefined, false, undefined, this),
153
+ /* @__PURE__ */ jsxDEV("select", {
154
+ id: "deal-stage",
155
+ value: stageId,
156
+ onChange: (e) => setStageId(e.target.value),
157
+ disabled: isLoading,
158
+ className: "border-input bg-background focus:ring-ring h-10 w-full rounded-md border px-3 py-2 text-sm focus:ring-2 focus:outline-none disabled:opacity-50",
159
+ children: stages.map((stage) => /* @__PURE__ */ jsxDEV("option", {
160
+ value: stage.id,
161
+ children: stage.name
162
+ }, stage.id, false, undefined, this))
163
+ }, undefined, false, undefined, this)
164
+ ]
165
+ }, undefined, true, undefined, this),
166
+ /* @__PURE__ */ jsxDEV("div", {
167
+ children: [
168
+ /* @__PURE__ */ jsxDEV("label", {
169
+ htmlFor: "deal-close-date",
170
+ className: "text-muted-foreground mb-1 block text-sm font-medium",
171
+ children: "Expected Close Date"
172
+ }, undefined, false, undefined, this),
173
+ /* @__PURE__ */ jsxDEV(Input, {
174
+ id: "deal-close-date",
175
+ type: "date",
176
+ value: expectedCloseDate,
177
+ onChange: (e) => setExpectedCloseDate(e.target.value),
178
+ disabled: isLoading
179
+ }, undefined, false, undefined, this)
180
+ ]
181
+ }, undefined, true, undefined, this),
182
+ error && /* @__PURE__ */ jsxDEV("div", {
183
+ className: "bg-destructive/10 text-destructive rounded-md p-3 text-sm",
184
+ children: error
185
+ }, undefined, false, undefined, this),
186
+ /* @__PURE__ */ jsxDEV("div", {
187
+ className: "flex justify-end gap-3 pt-2",
188
+ children: [
189
+ /* @__PURE__ */ jsxDEV(Button, {
190
+ type: "button",
191
+ variant: "ghost",
192
+ onPress: onClose,
193
+ disabled: isLoading,
194
+ children: "Cancel"
195
+ }, undefined, false, undefined, this),
196
+ /* @__PURE__ */ jsxDEV(Button, {
197
+ type: "submit",
198
+ disabled: isLoading,
199
+ children: isLoading ? "Creating..." : "Create Deal"
200
+ }, undefined, false, undefined, this)
201
+ ]
202
+ }, undefined, true, undefined, this)
203
+ ]
204
+ }, undefined, true, undefined, this)
205
+ ]
206
+ }, undefined, true, undefined, this)
207
+ ]
208
+ }, undefined, true, undefined, this);
179
209
  }
180
-
181
- //#endregion
182
- export { CreateDealModal };
183
- //# sourceMappingURL=CreateDealModal.js.map
210
+ export {
211
+ CreateDealModal
212
+ };
@@ -1,51 +1,38 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
- //#region src/ui/modals/DealActionsModal.d.ts
4
- interface Deal {
5
- id: string;
6
- name: string;
7
- value: number;
8
- currency: string;
9
- stageId: string;
10
- status: 'OPEN' | 'WON' | 'LOST' | 'STALE';
1
+ export interface Deal {
2
+ id: string;
3
+ name: string;
4
+ value: number;
5
+ currency: string;
6
+ stageId: string;
7
+ status: 'OPEN' | 'WON' | 'LOST' | 'STALE';
11
8
  }
12
- interface WinDealInput {
13
- dealId: string;
14
- wonSource?: string;
15
- notes?: string;
9
+ export interface WinDealInput {
10
+ dealId: string;
11
+ wonSource?: string;
12
+ notes?: string;
16
13
  }
17
- interface LoseDealInput {
18
- dealId: string;
19
- lostReason: string;
20
- notes?: string;
14
+ export interface LoseDealInput {
15
+ dealId: string;
16
+ lostReason: string;
17
+ notes?: string;
21
18
  }
22
- interface MoveDealInput {
23
- dealId: string;
24
- stageId: string;
19
+ export interface MoveDealInput {
20
+ dealId: string;
21
+ stageId: string;
25
22
  }
26
23
  interface DealActionsModalProps {
27
- isOpen: boolean;
28
- deal: Deal | null;
29
- stages: {
30
- id: string;
31
- name: string;
32
- }[];
33
- onClose: () => void;
34
- onWin: (input: WinDealInput) => Promise<void>;
35
- onLose: (input: LoseDealInput) => Promise<void>;
36
- onMove: (input: MoveDealInput) => Promise<void>;
37
- isLoading?: boolean;
24
+ isOpen: boolean;
25
+ deal: Deal | null;
26
+ stages: {
27
+ id: string;
28
+ name: string;
29
+ }[];
30
+ onClose: () => void;
31
+ onWin: (input: WinDealInput) => Promise<void>;
32
+ onLose: (input: LoseDealInput) => Promise<void>;
33
+ onMove: (input: MoveDealInput) => Promise<void>;
34
+ isLoading?: boolean;
38
35
  }
39
- declare function DealActionsModal({
40
- isOpen,
41
- deal,
42
- stages,
43
- onClose,
44
- onWin,
45
- onLose,
46
- onMove,
47
- isLoading
48
- }: DealActionsModalProps): react_jsx_runtime0.JSX.Element | null;
49
- //#endregion
50
- export { Deal, DealActionsModal, LoseDealInput, MoveDealInput, WinDealInput };
36
+ export declare function DealActionsModal({ isOpen, deal, stages, onClose, onWin, onLose, onMove, isLoading, }: DealActionsModalProps): import("react/jsx-runtime").JSX.Element | null;
37
+ export {};
51
38
  //# sourceMappingURL=DealActionsModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DealActionsModal.d.ts","names":[],"sources":["../../../src/ui/modals/DealActionsModal.tsx"],"mappings":";;;UAYiB,IAAA;EACf,EAAA;EACA,IAAA;EACA,KAAA;EACA,QAAA;EACA,OAAA;EACA,MAAA;AAAA;AAAA,UAGe,YAAA;EACf,MAAA;EACA,SAAA;EACA,KAAA;AAAA;AAAA,UAGe,aAAA;EACf,MAAA;EACA,UAAA;EACA,KAAA;AAAA;AAAA,UAGe,aAAA;EACf,MAAA;EACA,OAAA;AAAA;AAAA,UAKQ,qBAAA;EACR,MAAA;EACA,IAAA,EAAM,IAAA;EACN,MAAA;IAAU,EAAA;IAAY,IAAA;EAAA;EACtB,OAAA;EACA,KAAA,GAAQ,KAAA,EAAO,YAAA,KAAiB,OAAA;EAChC,MAAA,GAAS,KAAA,EAAO,aAAA,KAAkB,OAAA;EAClC,MAAA,GAAS,KAAA,EAAO,aAAA,KAAkB,OAAA;EAClC,SAAA;AAAA;AAAA,iBAYc,gBAAA,CAAA;EACd,MAAA;EACA,IAAA;EACA,MAAA;EACA,OAAA;EACA,KAAA;EACA,MAAA;EACA,MAAA;EACA;AAAA,GACC,qBAAA,GAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"DealActionsModal.d.ts","sourceRoot":"","sources":["../../../src/ui/modals/DealActionsModal.tsx"],"names":[],"mappings":"AAYA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,UAAU,qBAAqB;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAWD,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,IAAI,EACJ,MAAM,EACN,OAAO,EACP,KAAK,EACL,MAAM,EACN,MAAM,EACN,SAAiB,GAClB,EAAE,qBAAqB,kDAkWvB"}