@camunda/design-system 0.1.0 → 0.2.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 (250) hide show
  1. package/dist/.storybook/CamundaLogo.d.ts +13 -0
  2. package/dist/.storybook/CamundaLogo.d.ts.map +1 -0
  3. package/dist/.storybook/CamundaLogo.js +14 -0
  4. package/dist/.storybook/CamundaLogo.js.map +1 -0
  5. package/dist/carbon-compat/filterable-multi-select.d.ts +39 -0
  6. package/dist/carbon-compat/filterable-multi-select.d.ts.map +1 -0
  7. package/dist/carbon-compat/filterable-multi-select.js +54 -0
  8. package/dist/carbon-compat/filterable-multi-select.js.map +1 -0
  9. package/dist/carbon-compat/form.d.ts +5 -0
  10. package/dist/carbon-compat/form.d.ts.map +1 -0
  11. package/dist/carbon-compat/form.js +6 -0
  12. package/dist/carbon-compat/form.js.map +1 -0
  13. package/dist/carbon-compat/index.d.ts +2 -0
  14. package/dist/carbon-compat/index.d.ts.map +1 -1
  15. package/dist/carbon-compat/index.js +2 -0
  16. package/dist/carbon-compat/index.js.map +1 -1
  17. package/dist/carbon-compat/multi-select.d.ts +37 -2
  18. package/dist/carbon-compat/multi-select.d.ts.map +1 -1
  19. package/dist/carbon-compat/multi-select.js +52 -2
  20. package/dist/carbon-compat/multi-select.js.map +1 -1
  21. package/dist/carbon-compat/select.d.ts +3 -3
  22. package/dist/carbon-compat/select.d.ts.map +1 -1
  23. package/dist/carbon-compat/select.js +47 -9
  24. package/dist/carbon-compat/select.js.map +1 -1
  25. package/dist/src/components/ui/checkbox.d.ts.map +1 -1
  26. package/dist/src/components/ui/checkbox.js +1 -1
  27. package/dist/src/components/ui/checkbox.js.map +1 -1
  28. package/dist/src/components/ui/data-table.d.ts.map +1 -1
  29. package/dist/src/components/ui/data-table.js +1 -1
  30. package/dist/src/components/ui/data-table.js.map +1 -1
  31. package/dist/src/components/ui/file-uploader.d.ts +39 -0
  32. package/dist/src/components/ui/file-uploader.d.ts.map +1 -0
  33. package/dist/src/components/ui/file-uploader.js +198 -0
  34. package/dist/src/components/ui/file-uploader.js.map +1 -0
  35. package/dist/src/components/ui/multi-select.d.ts +34 -0
  36. package/dist/src/components/ui/multi-select.d.ts.map +1 -0
  37. package/dist/src/components/ui/multi-select.js +88 -0
  38. package/dist/src/components/ui/multi-select.js.map +1 -0
  39. package/dist/src/components/ui/table.d.ts +1 -1
  40. package/dist/src/components/ui/table.d.ts.map +1 -1
  41. package/dist/src/components/ui/table.js +3 -3
  42. package/dist/src/components/ui/table.js.map +1 -1
  43. package/dist/src/examples/cost-dashboard/CostBreakdownChart.d.ts +2 -0
  44. package/dist/src/examples/cost-dashboard/CostBreakdownChart.d.ts.map +1 -0
  45. package/dist/src/examples/cost-dashboard/CostBreakdownChart.js +18 -0
  46. package/dist/src/examples/cost-dashboard/CostBreakdownChart.js.map +1 -0
  47. package/dist/src/examples/cost-dashboard/CostDashboardPage.d.ts +2 -0
  48. package/dist/src/examples/cost-dashboard/CostDashboardPage.d.ts.map +1 -0
  49. package/dist/src/examples/cost-dashboard/CostDashboardPage.js +53 -0
  50. package/dist/src/examples/cost-dashboard/CostDashboardPage.js.map +1 -0
  51. package/dist/src/examples/cost-dashboard/TrendChart.d.ts +2 -0
  52. package/dist/src/examples/cost-dashboard/TrendChart.d.ts.map +1 -0
  53. package/dist/src/examples/cost-dashboard/TrendChart.js +21 -0
  54. package/dist/src/examples/cost-dashboard/TrendChart.js.map +1 -0
  55. package/dist/src/examples/cost-dashboard/mock-data.d.ts +34 -0
  56. package/dist/src/examples/cost-dashboard/mock-data.d.ts.map +1 -0
  57. package/dist/src/examples/cost-dashboard/mock-data.js +120 -0
  58. package/dist/src/examples/cost-dashboard/mock-data.js.map +1 -0
  59. package/dist/src/examples/cost-dashboard/useChartColors.d.ts +10 -0
  60. package/dist/src/examples/cost-dashboard/useChartColors.d.ts.map +1 -0
  61. package/dist/src/examples/cost-dashboard/useChartColors.js +20 -0
  62. package/dist/src/examples/cost-dashboard/useChartColors.js.map +1 -0
  63. package/dist/src/examples/project-detail/ProjectDetailPage.d.ts +2 -0
  64. package/dist/src/examples/project-detail/ProjectDetailPage.d.ts.map +1 -0
  65. package/dist/src/examples/project-detail/ProjectDetailPage.js +68 -0
  66. package/dist/src/examples/project-detail/ProjectDetailPage.js.map +1 -0
  67. package/dist/src/examples/project-detail/mock-data.d.ts +38 -0
  68. package/dist/src/examples/project-detail/mock-data.d.ts.map +1 -0
  69. package/dist/src/examples/project-detail/mock-data.js +103 -0
  70. package/dist/src/examples/project-detail/mock-data.js.map +1 -0
  71. package/dist/src/examples/projects-list/ProjectsListPage.d.ts +4 -0
  72. package/dist/src/examples/projects-list/ProjectsListPage.d.ts.map +1 -0
  73. package/dist/src/examples/projects-list/ProjectsListPage.js +45 -0
  74. package/dist/src/examples/projects-list/ProjectsListPage.js.map +1 -0
  75. package/dist/src/examples/projects-list/mock-data.d.ts +10 -0
  76. package/dist/src/examples/projects-list/mock-data.d.ts.map +1 -0
  77. package/dist/src/examples/projects-list/mock-data.js +83 -0
  78. package/dist/src/examples/projects-list/mock-data.js.map +1 -0
  79. package/dist/src/examples/shared/AppShell.d.ts +13 -0
  80. package/dist/src/examples/shared/AppShell.d.ts.map +1 -0
  81. package/dist/src/examples/shared/AppShell.js +13 -0
  82. package/dist/src/examples/shared/AppShell.js.map +1 -0
  83. package/dist/src/examples/shared/console-nav.d.ts +5 -0
  84. package/dist/src/examples/shared/console-nav.d.ts.map +1 -0
  85. package/dist/src/examples/shared/console-nav.js +37 -0
  86. package/dist/src/examples/shared/console-nav.js.map +1 -0
  87. package/dist/src/examples/shared/cost-nav.d.ts +5 -0
  88. package/dist/src/examples/shared/cost-nav.d.ts.map +1 -0
  89. package/dist/src/examples/shared/cost-nav.js +47 -0
  90. package/dist/src/examples/shared/cost-nav.js.map +1 -0
  91. package/dist/src/index.d.ts +2 -0
  92. package/dist/src/index.d.ts.map +1 -1
  93. package/dist/src/index.js +2 -0
  94. package/dist/src/index.js.map +1 -1
  95. package/dist/src/specs/schema.d.ts +4 -0
  96. package/dist/src/specs/schema.d.ts.map +1 -1
  97. package/dist/styles.css +233 -0
  98. package/package.json +9 -1
  99. package/dist/carbon-compat/stories/breadcrumb-skeleton.stories.d.ts +0 -10
  100. package/dist/carbon-compat/stories/breadcrumb-skeleton.stories.d.ts.map +0 -1
  101. package/dist/carbon-compat/stories/breadcrumb-skeleton.stories.js +0 -17
  102. package/dist/carbon-compat/stories/breadcrumb-skeleton.stories.js.map +0 -1
  103. package/dist/carbon-compat/stories/breadcrumb.stories.d.ts +0 -6
  104. package/dist/carbon-compat/stories/breadcrumb.stories.d.ts.map +0 -1
  105. package/dist/carbon-compat/stories/breadcrumb.stories.js +0 -11
  106. package/dist/carbon-compat/stories/breadcrumb.stories.js.map +0 -1
  107. package/dist/carbon-compat/stories/button.stories.d.ts +0 -13
  108. package/dist/carbon-compat/stories/button.stories.d.ts.map +0 -1
  109. package/dist/carbon-compat/stories/button.stories.js +0 -45
  110. package/dist/carbon-compat/stories/button.stories.js.map +0 -1
  111. package/dist/carbon-compat/stories/c3-cluster-tag.stories.d.ts +0 -11
  112. package/dist/carbon-compat/stories/c3-cluster-tag.stories.d.ts.map +0 -1
  113. package/dist/carbon-compat/stories/c3-cluster-tag.stories.js +0 -12
  114. package/dist/carbon-compat/stories/c3-cluster-tag.stories.js.map +0 -1
  115. package/dist/carbon-compat/stories/c3-data-table.stories.d.ts +0 -32
  116. package/dist/carbon-compat/stories/c3-data-table.stories.d.ts.map +0 -1
  117. package/dist/carbon-compat/stories/c3-data-table.stories.js +0 -244
  118. package/dist/carbon-compat/stories/c3-data-table.stories.js.map +0 -1
  119. package/dist/carbon-compat/stories/c3-responsive-stack.stories.d.ts +0 -9
  120. package/dist/carbon-compat/stories/c3-responsive-stack.stories.d.ts.map +0 -1
  121. package/dist/carbon-compat/stories/c3-responsive-stack.stories.js +0 -28
  122. package/dist/carbon-compat/stories/c3-responsive-stack.stories.js.map +0 -1
  123. package/dist/carbon-compat/stories/checkbox-skeleton.stories.d.ts +0 -8
  124. package/dist/carbon-compat/stories/checkbox-skeleton.stories.d.ts.map +0 -1
  125. package/dist/carbon-compat/stories/checkbox-skeleton.stories.js +0 -13
  126. package/dist/carbon-compat/stories/checkbox-skeleton.stories.js.map +0 -1
  127. package/dist/carbon-compat/stories/checkbox.stories.d.ts +0 -10
  128. package/dist/carbon-compat/stories/checkbox.stories.d.ts.map +0 -1
  129. package/dist/carbon-compat/stories/checkbox.stories.js +0 -20
  130. package/dist/carbon-compat/stories/checkbox.stories.js.map +0 -1
  131. package/dist/carbon-compat/stories/code-snippet.stories.d.ts +0 -9
  132. package/dist/carbon-compat/stories/code-snippet.stories.d.ts.map +0 -1
  133. package/dist/carbon-compat/stories/code-snippet.stories.js +0 -30
  134. package/dist/carbon-compat/stories/code-snippet.stories.js.map +0 -1
  135. package/dist/carbon-compat/stories/combo-box.stories.d.ts +0 -8
  136. package/dist/carbon-compat/stories/combo-box.stories.d.ts.map +0 -1
  137. package/dist/carbon-compat/stories/combo-box.stories.js +0 -38
  138. package/dist/carbon-compat/stories/combo-box.stories.js.map +0 -1
  139. package/dist/carbon-compat/stories/content-switcher.stories.d.ts +0 -8
  140. package/dist/carbon-compat/stories/content-switcher.stories.d.ts.map +0 -1
  141. package/dist/carbon-compat/stories/content-switcher.stories.js +0 -15
  142. package/dist/carbon-compat/stories/content-switcher.stories.js.map +0 -1
  143. package/dist/carbon-compat/stories/data-table-skeleton.stories.d.ts +0 -11
  144. package/dist/carbon-compat/stories/data-table-skeleton.stories.d.ts.map +0 -1
  145. package/dist/carbon-compat/stories/data-table-skeleton.stories.js +0 -37
  146. package/dist/carbon-compat/stories/data-table-skeleton.stories.js.map +0 -1
  147. package/dist/carbon-compat/stories/data-table.stories.d.ts +0 -16
  148. package/dist/carbon-compat/stories/data-table.stories.d.ts.map +0 -1
  149. package/dist/carbon-compat/stories/data-table.stories.js +0 -103
  150. package/dist/carbon-compat/stories/data-table.stories.js.map +0 -1
  151. package/dist/carbon-compat/stories/dropdown.stories.d.ts +0 -7
  152. package/dist/carbon-compat/stories/dropdown.stories.d.ts.map +0 -1
  153. package/dist/carbon-compat/stories/dropdown.stories.js +0 -23
  154. package/dist/carbon-compat/stories/dropdown.stories.js.map +0 -1
  155. package/dist/carbon-compat/stories/icon-button.stories.d.ts +0 -9
  156. package/dist/carbon-compat/stories/icon-button.stories.d.ts.map +0 -1
  157. package/dist/carbon-compat/stories/icon-button.stories.js +0 -29
  158. package/dist/carbon-compat/stories/icon-button.stories.js.map +0 -1
  159. package/dist/carbon-compat/stories/link.stories.d.ts +0 -11
  160. package/dist/carbon-compat/stories/link.stories.d.ts.map +0 -1
  161. package/dist/carbon-compat/stories/link.stories.js +0 -24
  162. package/dist/carbon-compat/stories/link.stories.js.map +0 -1
  163. package/dist/carbon-compat/stories/loading.stories.d.ts +0 -9
  164. package/dist/carbon-compat/stories/loading.stories.d.ts.map +0 -1
  165. package/dist/carbon-compat/stories/loading.stories.js +0 -22
  166. package/dist/carbon-compat/stories/loading.stories.js.map +0 -1
  167. package/dist/carbon-compat/stories/menu-button.stories.d.ts +0 -8
  168. package/dist/carbon-compat/stories/menu-button.stories.d.ts.map +0 -1
  169. package/dist/carbon-compat/stories/menu-button.stories.js +0 -22
  170. package/dist/carbon-compat/stories/menu-button.stories.js.map +0 -1
  171. package/dist/carbon-compat/stories/modal.stories.d.ts +0 -8
  172. package/dist/carbon-compat/stories/modal.stories.d.ts.map +0 -1
  173. package/dist/carbon-compat/stories/modal.stories.js +0 -28
  174. package/dist/carbon-compat/stories/modal.stories.js.map +0 -1
  175. package/dist/carbon-compat/stories/overflow-menu.stories.d.ts +0 -6
  176. package/dist/carbon-compat/stories/overflow-menu.stories.d.ts.map +0 -1
  177. package/dist/carbon-compat/stories/overflow-menu.stories.js +0 -11
  178. package/dist/carbon-compat/stories/overflow-menu.stories.js.map +0 -1
  179. package/dist/carbon-compat/stories/popover.stories.d.ts +0 -6
  180. package/dist/carbon-compat/stories/popover.stories.d.ts.map +0 -1
  181. package/dist/carbon-compat/stories/popover.stories.js +0 -16
  182. package/dist/carbon-compat/stories/popover.stories.js.map +0 -1
  183. package/dist/carbon-compat/stories/progress-bar.stories.d.ts +0 -11
  184. package/dist/carbon-compat/stories/progress-bar.stories.d.ts.map +0 -1
  185. package/dist/carbon-compat/stories/progress-bar.stories.js +0 -23
  186. package/dist/carbon-compat/stories/progress-bar.stories.js.map +0 -1
  187. package/dist/carbon-compat/stories/radio-button.stories.d.ts +0 -11
  188. package/dist/carbon-compat/stories/radio-button.stories.d.ts.map +0 -1
  189. package/dist/carbon-compat/stories/radio-button.stories.js +0 -25
  190. package/dist/carbon-compat/stories/radio-button.stories.js.map +0 -1
  191. package/dist/carbon-compat/stories/search.stories.d.ts +0 -12
  192. package/dist/carbon-compat/stories/search.stories.d.ts.map +0 -1
  193. package/dist/carbon-compat/stories/search.stories.js +0 -31
  194. package/dist/carbon-compat/stories/search.stories.js.map +0 -1
  195. package/dist/carbon-compat/stories/select-skeleton.stories.d.ts +0 -8
  196. package/dist/carbon-compat/stories/select-skeleton.stories.d.ts.map +0 -1
  197. package/dist/carbon-compat/stories/select-skeleton.stories.js +0 -13
  198. package/dist/carbon-compat/stories/select-skeleton.stories.js.map +0 -1
  199. package/dist/carbon-compat/stories/select.stories.d.ts +0 -7
  200. package/dist/carbon-compat/stories/select.stories.d.ts.map +0 -1
  201. package/dist/carbon-compat/stories/select.stories.js +0 -18
  202. package/dist/carbon-compat/stories/select.stories.js.map +0 -1
  203. package/dist/carbon-compat/stories/skeleton-text.stories.d.ts +0 -10
  204. package/dist/carbon-compat/stories/skeleton-text.stories.d.ts.map +0 -1
  205. package/dist/carbon-compat/stories/skeleton-text.stories.js +0 -26
  206. package/dist/carbon-compat/stories/skeleton-text.stories.js.map +0 -1
  207. package/dist/carbon-compat/stories/stack.stories.d.ts +0 -17
  208. package/dist/carbon-compat/stories/stack.stories.d.ts.map +0 -1
  209. package/dist/carbon-compat/stories/stack.stories.js +0 -41
  210. package/dist/carbon-compat/stories/stack.stories.js.map +0 -1
  211. package/dist/carbon-compat/stories/structured-list-skeleton.stories.d.ts +0 -9
  212. package/dist/carbon-compat/stories/structured-list-skeleton.stories.d.ts.map +0 -1
  213. package/dist/carbon-compat/stories/structured-list-skeleton.stories.js +0 -14
  214. package/dist/carbon-compat/stories/structured-list-skeleton.stories.js.map +0 -1
  215. package/dist/carbon-compat/stories/table.stories.d.ts +0 -6
  216. package/dist/carbon-compat/stories/table.stories.d.ts.map +0 -1
  217. package/dist/carbon-compat/stories/table.stories.js +0 -16
  218. package/dist/carbon-compat/stories/table.stories.js.map +0 -1
  219. package/dist/carbon-compat/stories/tabs.stories.d.ts +0 -7
  220. package/dist/carbon-compat/stories/tabs.stories.d.ts.map +0 -1
  221. package/dist/carbon-compat/stories/tabs.stories.js +0 -14
  222. package/dist/carbon-compat/stories/tabs.stories.js.map +0 -1
  223. package/dist/carbon-compat/stories/tag.stories.d.ts +0 -11
  224. package/dist/carbon-compat/stories/tag.stories.d.ts.map +0 -1
  225. package/dist/carbon-compat/stories/tag.stories.js +0 -46
  226. package/dist/carbon-compat/stories/tag.stories.js.map +0 -1
  227. package/dist/carbon-compat/stories/text-area.stories.d.ts +0 -10
  228. package/dist/carbon-compat/stories/text-area.stories.d.ts.map +0 -1
  229. package/dist/carbon-compat/stories/text-area.stories.js +0 -27
  230. package/dist/carbon-compat/stories/text-area.stories.js.map +0 -1
  231. package/dist/carbon-compat/stories/text-input.stories.d.ts +0 -11
  232. package/dist/carbon-compat/stories/text-input.stories.d.ts.map +0 -1
  233. package/dist/carbon-compat/stories/text-input.stories.js +0 -30
  234. package/dist/carbon-compat/stories/text-input.stories.js.map +0 -1
  235. package/dist/carbon-compat/stories/tile.stories.d.ts +0 -11
  236. package/dist/carbon-compat/stories/tile.stories.d.ts.map +0 -1
  237. package/dist/carbon-compat/stories/tile.stories.js +0 -22
  238. package/dist/carbon-compat/stories/tile.stories.js.map +0 -1
  239. package/dist/carbon-compat/stories/toggle.stories.d.ts +0 -11
  240. package/dist/carbon-compat/stories/toggle.stories.d.ts.map +0 -1
  241. package/dist/carbon-compat/stories/toggle.stories.js +0 -23
  242. package/dist/carbon-compat/stories/toggle.stories.js.map +0 -1
  243. package/dist/carbon-compat/stories/tooltip.stories.d.ts +0 -7
  244. package/dist/carbon-compat/stories/tooltip.stories.d.ts.map +0 -1
  245. package/dist/carbon-compat/stories/tooltip.stories.js +0 -15
  246. package/dist/carbon-compat/stories/tooltip.stories.js.map +0 -1
  247. package/dist/carbon-compat/stories/unordered-list.stories.d.ts +0 -9
  248. package/dist/carbon-compat/stories/unordered-list.stories.d.ts.map +0 -1
  249. package/dist/carbon-compat/stories/unordered-list.stories.js +0 -22
  250. package/dist/carbon-compat/stories/unordered-list.stories.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, } from "recharts";
3
+ import { agents, trend } from "./mock-data";
4
+ import { useChartColors } from "./useChartColors";
5
+ // Input vs output tokens per period, summed across the definition's agents.
6
+ // Coalesce missing series keys to 0 so a data shape change can't produce NaN.
7
+ const data = trend.map((point) => ({
8
+ idx: point.idx,
9
+ input: agents.reduce((sum, a) => sum + (point[`${a.elementId}_in`] ?? 0), 0),
10
+ output: agents.reduce((sum, a) => sum + (point[`${a.elementId}_out`] ?? 0), 0),
11
+ }));
12
+ export function TrendChart() {
13
+ const [ref, colors] = useChartColors();
14
+ return (_jsx("div", { ref: ref, className: "h-72 w-full", children: colors.length >= 2 && (_jsx(ResponsiveContainer, { width: "100%", height: "100%", children: _jsxs(LineChart, { data: data, margin: { top: 8, right: 16, bottom: 0, left: -8 }, children: [_jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: "var(--border)" }), _jsx(XAxis, { dataKey: "idx", tick: { fontSize: 11 }, stroke: "var(--muted-foreground)" }), _jsx(YAxis, { tick: { fontSize: 11 }, stroke: "var(--muted-foreground)" }), _jsx(Tooltip, { contentStyle: {
15
+ background: "var(--popover)",
16
+ border: "1px solid var(--border)",
17
+ borderRadius: 8,
18
+ fontSize: 12,
19
+ } }), _jsx(Legend, { wrapperStyle: { fontSize: 11 } }), _jsx(Line, { type: "monotone", dataKey: "input", name: "Input tokens", stroke: colors[0], dot: false, strokeWidth: 2 }), _jsx(Line, { type: "monotone", dataKey: "output", name: "Output tokens", stroke: colors[1], dot: false, strokeWidth: 2 })] }) })) }));
20
+ }
21
+ //# sourceMappingURL=TrendChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrendChart.js","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/TrendChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,KAAK,EACL,KAAK,EACL,aAAa,EACb,OAAO,EACP,MAAM,EACN,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjC,GAAG,EAAE,KAAK,CAAC,GAAG;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,MAAM,CAAC,MAAM,CACnB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,CAAC,EACpD,CAAC,CACF;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,UAAU;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC;IACvC,OAAO,CACL,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,aAAa,YAEnC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CACrB,KAAC,mBAAmB,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,YAC7C,MAAC,SAAS,IACR,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,aAElD,KAAC,aAAa,IAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,eAAe,GAAG,EAC9D,KAAC,KAAK,IACJ,OAAO,EAAC,KAAK,EACb,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EACtB,MAAM,EAAC,yBAAyB,GAChC,EACF,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAC,yBAAyB,GAAG,EAClE,KAAC,OAAO,IACN,YAAY,EAAE;4BACZ,UAAU,EAAE,gBAAgB;4BAC5B,MAAM,EAAE,yBAAyB;4BACjC,YAAY,EAAE,CAAC;4BACf,QAAQ,EAAE,EAAE;yBACb,GACD,EACF,KAAC,MAAM,IAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAI,EAC1C,KAAC,IAAI,IACH,IAAI,EAAC,UAAU,EACf,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,cAAc,EACnB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,CAAC,GACd,EACF,KAAC,IAAI,IACH,IAAI,EAAC,UAAU,EACf,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAC,eAAe,EACpB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,CAAC,GACd,IACQ,GACQ,CACvB,GACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,34 @@
1
+ export interface Agent {
2
+ elementId: string;
3
+ label: string;
4
+ runs: number;
5
+ inTokensMean: number;
6
+ outTokensMean: number;
7
+ inCostUsd: number;
8
+ outCostUsd: number;
9
+ valueCreatedUsd: number;
10
+ }
11
+ export declare const definition: {
12
+ name: string;
13
+ bpmnProcessId: string;
14
+ version: number;
15
+ versions: number[];
16
+ };
17
+ export declare const agents: Agent[];
18
+ export declare const totalLlmSpend: number;
19
+ export declare const totalTokens: number;
20
+ export declare const totalRuns: number;
21
+ export interface TrendPoint {
22
+ idx: number;
23
+ [series: string]: number;
24
+ }
25
+ export declare const trend: TrendPoint[];
26
+ export interface InstanceRow {
27
+ key: string;
28
+ version: number;
29
+ state: "ACTIVE" | "COMPLETED";
30
+ costUsd: number;
31
+ started: string;
32
+ }
33
+ export declare const instances: InstanceRow[];
34
+ //# sourceMappingURL=mock-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-data.d.ts","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/mock-data.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,KAAK;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AACD,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC;AACF,eAAO,MAAM,MAAM,EAAE,KAAK,EAyCzB,CAAC;AAEF,eAAO,MAAM,aAAa,QAEd,CAAC;AACb,eAAO,MAAM,WAAW,QAEvB,CAAC;AACF,eAAO,MAAM,SAAS,QAAiC,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AACD,eAAO,MAAM,KAAK,EAAE,UAAU,EAS5B,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,eAAO,MAAM,SAAS,EAAE,WAAW,EAyDlC,CAAC"}
@@ -0,0 +1,120 @@
1
+ export const definition = {
2
+ name: "OrderFulfillment",
3
+ bpmnProcessId: "order-fulfillment",
4
+ version: 3,
5
+ versions: [3, 2, 1],
6
+ };
7
+ export const agents = [
8
+ {
9
+ elementId: "ValidateOrder",
10
+ label: "Validate order",
11
+ runs: 156,
12
+ inTokensMean: 1200,
13
+ outTokensMean: 420,
14
+ inCostUsd: 28.1,
15
+ outCostUsd: 19.7,
16
+ valueCreatedUsd: 210,
17
+ },
18
+ {
19
+ elementId: "AssessRisk",
20
+ label: "Assess risk",
21
+ runs: 156,
22
+ inTokensMean: 1850,
23
+ outTokensMean: 610,
24
+ inCostUsd: 43.3,
25
+ outCostUsd: 28.6,
26
+ valueCreatedUsd: 320,
27
+ },
28
+ {
29
+ elementId: "ResolveAddress",
30
+ label: "Resolve address",
31
+ runs: 142,
32
+ inTokensMean: 640,
33
+ outTokensMean: 180,
34
+ inCostUsd: 13.6,
35
+ outCostUsd: 7.7,
36
+ valueCreatedUsd: 95,
37
+ },
38
+ {
39
+ elementId: "DraftReply",
40
+ label: "Draft customer reply",
41
+ runs: 138,
42
+ inTokensMean: 2100,
43
+ outTokensMean: 880,
44
+ inCostUsd: 47.5,
45
+ outCostUsd: 39.9,
46
+ valueCreatedUsd: 410,
47
+ },
48
+ ];
49
+ const sum = (ns) => ns.reduce((a, b) => a + b, 0);
50
+ export const totalLlmSpend = +sum(agents.map((a) => a.inCostUsd + a.outCostUsd)).toFixed(2);
51
+ export const totalTokens = sum(agents.map((a) => (a.inTokensMean + a.outTokensMean) * a.runs));
52
+ export const totalRuns = sum(agents.map((a) => a.runs));
53
+ export const trend = Array.from({ length: 12 }, (_, i) => {
54
+ const wobble = (base, k) => Math.round(base * (1 + 0.12 * Math.sin((i + k) * 1.1)));
55
+ const p = { idx: i + 1 };
56
+ agents.forEach((a, k) => {
57
+ p[`${a.elementId}_in`] = wobble(a.inTokensMean, k);
58
+ p[`${a.elementId}_out`] = wobble(a.outTokensMean, k + 3);
59
+ });
60
+ return p;
61
+ });
62
+ export const instances = [
63
+ {
64
+ key: "2251799813700012",
65
+ version: 3,
66
+ state: "COMPLETED",
67
+ costUsd: 1.42,
68
+ started: "Jun 14, 2026 · 09:12",
69
+ },
70
+ {
71
+ key: "2251799813700018",
72
+ version: 3,
73
+ state: "COMPLETED",
74
+ costUsd: 1.05,
75
+ started: "Jun 14, 2026 · 09:31",
76
+ },
77
+ {
78
+ key: "2251799813700024",
79
+ version: 3,
80
+ state: "ACTIVE",
81
+ costUsd: 0.62,
82
+ started: "Jun 14, 2026 · 09:48",
83
+ },
84
+ {
85
+ key: "2251799813700031",
86
+ version: 2,
87
+ state: "COMPLETED",
88
+ costUsd: 1.88,
89
+ started: "Jun 14, 2026 · 10:02",
90
+ },
91
+ {
92
+ key: "2251799813700037",
93
+ version: 3,
94
+ state: "COMPLETED",
95
+ costUsd: 0.97,
96
+ started: "Jun 14, 2026 · 10:25",
97
+ },
98
+ {
99
+ key: "2251799813700044",
100
+ version: 3,
101
+ state: "ACTIVE",
102
+ costUsd: 0.41,
103
+ started: "Jun 14, 2026 · 10:51",
104
+ },
105
+ {
106
+ key: "2251799813700050",
107
+ version: 2,
108
+ state: "COMPLETED",
109
+ costUsd: 1.33,
110
+ started: "Jun 14, 2026 · 11:09",
111
+ },
112
+ {
113
+ key: "2251799813700057",
114
+ version: 3,
115
+ state: "COMPLETED",
116
+ costUsd: 1.16,
117
+ started: "Jun 14, 2026 · 11:42",
118
+ },
119
+ ];
120
+ //# sourceMappingURL=mock-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-data.js","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/mock-data.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,kBAAkB;IACxB,aAAa,EAAE,mBAAmB;IAClC,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CACpB,CAAC;AACF,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B;QACE,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,GAAG;QACT,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,GAAG;QAClB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,GAAG;KACrB;IACD;QACE,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,GAAG;QACT,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,GAAG;QAClB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,GAAG;KACrB;IACD;QACE,SAAS,EAAE,gBAAgB;QAC3B,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,GAAG;QACT,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,GAAG;QACf,eAAe,EAAE,EAAE;KACpB;IACD;QACE,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,sBAAsB;QAC7B,IAAI,EAAE,GAAG;QACT,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,GAAG;QAClB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,GAAG;KACrB;CACF,CAAC;AACF,MAAM,GAAG,GAAG,CAAC,EAAY,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAG,CAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,CAC9C,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAC/D,CAAC;AACF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAMxD,MAAM,CAAC,MAAM,KAAK,GAAiB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IACrE,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,CAAS,EAAE,EAAE,CACzC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAe,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AASH,MAAM,CAAC,MAAM,SAAS,GAAkB;IACtC;QACE,GAAG,EAAE,kBAAkB;QACvB,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,sBAAsB;KAChC;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,sBAAsB;KAChC;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,sBAAsB;KAChC;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,sBAAsB;KAChC;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,sBAAsB;KAChC;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,sBAAsB;KAChC;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,sBAAsB;KAChC;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,sBAAsB;KAChC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type RefObject } from "react";
2
+ /**
3
+ * Resolve --chart-1..5 to concrete colors from the nearest themed ancestor.
4
+ * recharts geometry (stroke/fill) needs literal color strings, not var(),
5
+ * and the tokens are scoped to .c4-ui, so we read the resolved values once.
6
+ * Note: read on mount only — a live light/dark toggle while mounted won't
7
+ * recolor the series until remount. Acceptable for a static showcase.
8
+ */
9
+ export declare function useChartColors(): [RefObject<HTMLDivElement | null>, string[]];
10
+ //# sourceMappingURL=useChartColors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChartColors.d.ts","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/useChartColors.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAW7E"}
@@ -0,0 +1,20 @@
1
+ import { useEffect, useRef, useState } from "react";
2
+ /**
3
+ * Resolve --chart-1..5 to concrete colors from the nearest themed ancestor.
4
+ * recharts geometry (stroke/fill) needs literal color strings, not var(),
5
+ * and the tokens are scoped to .c4-ui, so we read the resolved values once.
6
+ * Note: read on mount only — a live light/dark toggle while mounted won't
7
+ * recolor the series until remount. Acceptable for a static showcase.
8
+ */
9
+ export function useChartColors() {
10
+ const ref = useRef(null);
11
+ const [colors, setColors] = useState([]);
12
+ useEffect(() => {
13
+ if (!ref.current)
14
+ return;
15
+ const cs = getComputedStyle(ref.current);
16
+ setColors([1, 2, 3, 4, 5].map((n) => cs.getPropertyValue(`--chart-${n}`).trim()));
17
+ }, []);
18
+ return [ref, colors];
19
+ }
20
+ //# sourceMappingURL=useChartColors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChartColors.js","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/useChartColors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACpE;;;;;;GAMG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IACnD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,SAAS,CACP,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CACvE,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function ProjectDetailPage(): import("react").JSX.Element;
2
+ //# sourceMappingURL=ProjectDetailPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectDetailPage.d.ts","sourceRoot":"","sources":["../../../../src/examples/project-detail/ProjectDetailPage.tsx"],"names":[],"mappings":"AA6IA,wBAAgB,iBAAiB,gCAkZhC"}
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from "react";
3
+ import { ArrowUpRight, Bot, BookOpen, CheckCircle2, ChevronDown, Cloud, Copy, Download, FolderInput, FolderOpen, GitBranch, LayoutList, Link2, MoreVertical, Pencil, Plus, Rocket, Search, Table2, Trash2, Workflow, } from "lucide-react";
4
+ import { Badge, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Card, CardContent, CardHeader, CardTitle, cn, Collapsible, CollapsibleContent, CollapsibleTrigger, DataTable, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Input, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../../index";
5
+ import { AppShell } from "../shared/AppShell";
6
+ import { consoleNav, consoleBreadcrumb } from "../shared/console-nav";
7
+ import { assets, deployment, files, git, project, } from "./mock-data";
8
+ // File-type icons mirror the shadcn reference's Create-menu / file-row icon set,
9
+ // rendered monochrome (text-muted-foreground) like the reference rather than tinted.
10
+ const fileIcon = {
11
+ bpmn: _jsx(Workflow, { className: "size-4 text-muted-foreground" }),
12
+ dmn: _jsx(Table2, { className: "size-4 text-muted-foreground" }),
13
+ form: _jsx(LayoutList, { className: "size-4 text-muted-foreground" }),
14
+ rpa: _jsx(Bot, { className: "size-4 text-muted-foreground" }),
15
+ folder: _jsx(FolderOpen, { className: "size-4 text-muted-foreground" }),
16
+ readme: _jsx(BookOpen, { className: "size-4 text-muted-foreground" }),
17
+ };
18
+ function AssetTag({ state }) {
19
+ if (state === "outdated")
20
+ return (
21
+ // Filled warning (amber bg + dark foreground) — amber as text on a
22
+ // transparent badge fails WCAG AA contrast.
23
+ _jsx(Badge, { className: "border-transparent bg-warning text-warning-foreground", children: "Outdated asset" }));
24
+ if (state === "deleted")
25
+ return _jsx(Badge, { variant: "secondary", children: "Deleted" });
26
+ return (_jsx(Badge, { variant: "outline", className: "text-success", children: "Catalog asset" }));
27
+ }
28
+ const fileColumns = [
29
+ {
30
+ accessorKey: "name",
31
+ header: "Name",
32
+ cell: ({ row }) => (_jsxs("span", { className: "flex items-center gap-2 font-medium", children: [fileIcon[row.original.type], row.original.name, row.original.asset ? _jsx(AssetTag, { state: row.original.asset }) : null] })),
33
+ },
34
+ { accessorKey: "lastModified", header: "Last modified" },
35
+ { accessorKey: "modifiedBy", header: "Modified by" },
36
+ { accessorKey: "createdBy", header: "Created by" },
37
+ ];
38
+ // TODO: Replace with API calls to the relevant /v2/projects/{projectId}/files endpoints
39
+ const fileRowActions = [
40
+ { id: "rename", label: "Rename", icon: _jsx(Pencil, {}), onClick: () => { } },
41
+ { id: "download", label: "Download", icon: _jsx(Download, {}), onClick: () => { } },
42
+ { id: "duplicate", label: "Duplicate", icon: _jsx(Copy, {}), onClick: () => { } },
43
+ { id: "move", label: "Move", icon: _jsx(FolderInput, {}), onClick: () => { } },
44
+ {
45
+ id: "delete",
46
+ label: "Delete",
47
+ variant: "destructive",
48
+ separatorBefore: true,
49
+ icon: _jsx(Trash2, {}),
50
+ onClick: () => { },
51
+ },
52
+ ];
53
+ const assetsByGroup = assets.reduce((acc, asset) => {
54
+ (acc[asset.group] ??= []).push(asset);
55
+ return acc;
56
+ }, {});
57
+ export function ProjectDetailPage() {
58
+ // TODO: Replace with API call to GET /v2/projects/{projectId}/files (server-side filtering)
59
+ const [fileQuery, setFileQuery] = useState("");
60
+ const filteredFiles = useMemo(() => {
61
+ const query = fileQuery.trim().toLowerCase();
62
+ if (!query)
63
+ return files;
64
+ return files.filter((file) => file.name.toLowerCase().includes(query));
65
+ }, [fileQuery]);
66
+ return (_jsx(AppShell, { appName: "Console", sidebarLabel: "Workspace navigation", items: consoleNav, breadcrumb: consoleBreadcrumb, children: _jsxs("div", { className: "flex flex-col gap-6 p-6", children: [_jsx(Breadcrumb, { children: _jsxs(BreadcrumbList, { children: [_jsx(BreadcrumbItem, { children: _jsx(BreadcrumbLink, { href: "#", children: "Projects" }) }), _jsx(BreadcrumbSeparator, {}), _jsx(BreadcrumbItem, { children: _jsx(BreadcrumbPage, { children: project.name }) })] }) }), _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("h1", { className: "text-2xl font-semibold", children: project.name }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": "Project actions", children: _jsx(MoreVertical, {}) }) }), _jsxs(DropdownMenuContent, { align: "start", children: [_jsx(DropdownMenuItem, { onClick: () => { }, children: "Rename" }), _jsx(DropdownMenuItem, { onClick: () => { }, children: "Move" }), _jsx(DropdownMenuItem, { onClick: () => { }, children: "Duplicate" }), _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuItem, { variant: "destructive", onClick: () => { }, children: "Delete" })] })] })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Select, { defaultValue: project.version, children: [_jsx(SelectTrigger, { size: "sm", className: "w-32", "aria-label": "Version", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: project.versions.map((version) => (_jsx(SelectItem, { value: version, children: version }, version))) })] }), _jsxs("div", { className: "inline-flex", children: [_jsx(Button, { type: "button", className: "rounded-r-none", onClick: () => { }, children: "Deploy & run" }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { type: "button", size: "icon", "aria-label": "Deploy options", className: "-ml-px rounded-l-none", children: _jsx(ChevronDown, {}) }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsx(DropdownMenuItem, { onClick: () => { }, children: "Deploy latest changes" }), _jsx(DropdownMenuItem, { onClick: () => { }, children: "Deploy a previous version" })] })] })] })] })] }), _jsxs("div", { className: "flex flex-col gap-6 lg:flex-row", children: [_jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-6", children: [_jsxs("div", { className: "overflow-hidden rounded-lg border border-border", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3 border-b border-border bg-card p-3", children: [_jsxs("div", { className: "relative w-64", children: [_jsx(Search, { "aria-hidden": "true", className: "absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { type: "search", role: "searchbox", "aria-label": "Filter files by name", placeholder: "Filter files\u2026", className: "pl-9", value: fileQuery, onChange: (event) => setFileQuery(event.target.value) })] }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { type: "button", variant: "outline", children: [_jsx(Plus, {}), "Create"] }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsxs(DropdownMenuItem, { onClick: () => { }, children: [_jsx(FolderOpen, {}), "Folder"] }), _jsxs(DropdownMenuItem, { onClick: () => { }, children: [_jsx(Workflow, {}), "BPMN diagram"] }), _jsxs(DropdownMenuItem, { onClick: () => { }, children: [_jsx(Table2, {}), "DMN table"] }), _jsxs(DropdownMenuItem, { onClick: () => { }, children: [_jsx(LayoutList, {}), "Form"] }), _jsxs(DropdownMenuItem, { onClick: () => { }, children: [_jsx(Bot, {}), "RPA script"] }), _jsxs(DropdownMenuItem, { onClick: () => { }, children: [_jsx(BookOpen, {}), "README"] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onClick: () => { }, children: [_jsx(Plus, {}), "Upload file"] })] })] })] }), _jsx(DataTable, { columns: fileColumns, data: filteredFiles, rowActions: fileRowActions, getRowId: (row) => row.id, size: "md", emptyState: "No files match your filter.", className: cn("gap-0", "[&_[data-slot=table-container]]:rounded-none", "[&_[data-slot=table-container]]:border-0", "[&_[data-slot=table-container]]:shadow-none") })] }), _jsx(Card, { children: _jsxs(Collapsible, { defaultOpen: true, children: [_jsxs(CardHeader, { className: "flex flex-row items-center justify-between", children: [_jsx(CardTitle, { children: "README.md" }), _jsx(CollapsibleTrigger, { asChild: true, children: _jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": "Toggle readme", children: _jsx(ChevronDown, {}) }) })] }), _jsx(CollapsibleContent, { children: _jsxs(CardContent, { className: "flex flex-col gap-3 text-sm leading-relaxed", children: [_jsx("h3", { className: "text-base font-semibold", children: "Payment Processing" }), _jsx("p", { className: "text-muted-foreground", children: "End-to-end payment orchestration for the Camundanzia checkout flow. Handles card authorization, risk scoring, and reconciliation across the payment providers we integrate with." }), _jsx("p", { className: "font-medium", children: "This project contains:" }), _jsxs("ul", { className: "list-disc space-y-1 pl-5 text-muted-foreground", children: [_jsxs("li", { children: [_jsx("span", { className: "font-mono", children: "order-payment.bpmn" }), " \u2014 the main checkout orchestration process."] }), _jsxs("li", { children: [_jsx("span", { className: "font-mono", children: "risk-scoring.dmn" }), " \u2014 decision table for fraud and risk evaluation."] }), _jsxs("li", { children: [_jsx("span", { className: "font-mono", children: "refund-request.form" }), " \u2014 customer-facing refund intake form."] }), _jsxs("li", { children: [_jsx("span", { className: "font-mono", children: "reconcile.rpa" }), " \u2014 nightly reconciliation script against the ledger."] })] }), _jsxs("p", { className: "text-muted-foreground", children: ["Deploy to the", " ", _jsx("span", { className: "font-medium", children: "eu-1-prod" }), " cluster only after the staging smoke tests pass. See the runbook in the Payments workspace wiki before promoting a new version."] })] }) })] }) })] }), _jsxs("div", { className: "flex w-full shrink-0 flex-col gap-6 lg:w-80", children: [_jsxs(Card, { children: [_jsx(CardHeader, { children: _jsxs(CardTitle, { className: "flex items-center gap-2", children: [_jsx(Rocket, { className: "size-4 text-muted-foreground" }), "Latest deployment"] }) }), _jsx(CardContent, { children: _jsxs("button", { type: "button", "aria-label": `Open ${deployment.cluster} in Operate`, onClick: () => { }, className: "flex w-full items-center gap-3 rounded-md bg-muted/50 p-3 text-left transition-colors hover:bg-muted focus-visible:bg-muted focus-visible:outline-none", children: [_jsx(Cloud, { className: "size-5 shrink-0 text-muted-foreground" }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [_jsx("span", { className: "truncate text-sm font-medium", children: deployment.cluster }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx(Badge, { variant: "secondary", children: deployment.plan }), _jsx("span", { className: "text-xs text-muted-foreground", children: deployment.deployedAt })] })] }), _jsx(ArrowUpRight, { className: "size-3.5 shrink-0 text-muted-foreground" })] }) })] }), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsxs(CardTitle, { className: "flex items-center gap-2", children: [_jsx(GitBranch, { className: "size-4 text-muted-foreground" }), "Git repository"] }) }), _jsxs(CardContent, { className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex items-center gap-3 rounded-md bg-muted/50 p-3", children: [_jsx(GitBranch, { className: "size-5 shrink-0 text-muted-foreground" }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsx("span", { className: "truncate text-sm font-medium", children: git.repo }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [git.branch, " branch"] })] }), git.synced ? (_jsx(CheckCircle2, { "aria-label": "Synced", className: "size-4 shrink-0 text-success" })) : null] }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: () => { }, children: "Sync" }), _jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: () => { }, children: "Configure" })] })] })] }), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsxs(CardTitle, { className: "flex items-center gap-2", children: [_jsx(Link2, { className: "size-4 text-muted-foreground" }), "Assets"] }) }), _jsx(CardContent, { className: "flex flex-col gap-6", children: Object.keys(assetsByGroup).map((group) => (_jsxs("div", { className: "flex flex-col gap-2.5", children: [_jsx("h4", { className: "text-xs font-semibold text-muted-foreground", children: group }), _jsx("div", { className: "flex flex-col gap-2", children: assetsByGroup[group].map((asset) => (_jsxs("div", { className: "flex flex-col gap-2 rounded-md bg-muted/50 p-3", children: [_jsx("a", { href: "#", className: "text-sm font-medium text-info hover:underline", children: asset.name }), _jsxs("div", { className: "flex flex-wrap items-center gap-x-5 gap-y-2 text-xs text-muted-foreground", children: [_jsx(AssetTag, { state: asset.state }), _jsxs("span", { children: ["Version", " ", _jsxs("span", { className: "font-medium tabular-nums text-foreground", children: ["v", asset.version] })] })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-1.5 text-xs text-muted-foreground", children: [_jsx("span", { children: "Used in" }), asset.usedIn.map((file, index) => (_jsxs("span", { children: [_jsx("code", { className: "rounded bg-muted px-1.5 py-0.5 font-mono text-foreground", children: file }), index < asset.usedIn.length - 1 ? "," : ""] }, file)))] })] }, asset.id))) })] }, group))) })] })] })] })] }) }));
67
+ }
68
+ //# sourceMappingURL=ProjectDetailPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectDetailPage.js","sourceRoot":"","sources":["../../../../src/examples/project-detail/ProjectDetailPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export type FileType = "bpmn" | "dmn" | "form" | "rpa" | "folder" | "readme";
2
+ export type AssetState = "available" | "outdated" | "deleted";
3
+ export interface ProjectFile {
4
+ id: string;
5
+ name: string;
6
+ type: FileType;
7
+ asset?: AssetState;
8
+ lastModified: string;
9
+ modifiedBy: string;
10
+ createdBy: string;
11
+ }
12
+ export interface LinkedAsset {
13
+ id: string;
14
+ name: string;
15
+ group: "Catalog" | "Shared resource";
16
+ state: AssetState;
17
+ version: string;
18
+ usedIn: string[];
19
+ }
20
+ export declare const project: {
21
+ id: string;
22
+ name: string;
23
+ version: string;
24
+ versions: string[];
25
+ };
26
+ export declare const files: ProjectFile[];
27
+ export declare const deployment: {
28
+ cluster: string;
29
+ plan: string;
30
+ deployedAt: string;
31
+ };
32
+ export declare const git: {
33
+ repo: string;
34
+ branch: string;
35
+ synced: boolean;
36
+ };
37
+ export declare const assets: LinkedAsset[];
38
+ //# sourceMappingURL=mock-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-data.d.ts","sourceRoot":"","sources":["../../../../src/examples/project-detail/mock-data.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAC9D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAAC;IACrC,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AACD,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AACF,eAAO,MAAM,KAAK,EAAE,WAAW,EA2D9B,CAAC;AACF,eAAO,MAAM,UAAU;;;;CAItB,CAAC;AACF,eAAO,MAAM,GAAG;;;;CAIf,CAAC;AACF,eAAO,MAAM,MAAM,EAAE,WAAW,EAyB/B,CAAC"}
@@ -0,0 +1,103 @@
1
+ export const project = {
2
+ id: "project-9",
3
+ name: "Payment Processing",
4
+ version: "v2.1.0",
5
+ versions: ["v2.1.0", "v2.0.3", "v1.9.0"],
6
+ };
7
+ export const files = [
8
+ {
9
+ id: "f1",
10
+ name: "order-payment.bpmn",
11
+ type: "bpmn",
12
+ asset: "available",
13
+ lastModified: "2 days ago",
14
+ modifiedBy: "Anita Schmidt",
15
+ createdBy: "Anita Schmidt",
16
+ },
17
+ {
18
+ id: "f2",
19
+ name: "risk-scoring.dmn",
20
+ type: "dmn",
21
+ asset: "outdated",
22
+ lastModified: "5 days ago",
23
+ modifiedBy: "Jonas Weber",
24
+ createdBy: "Jonas Weber",
25
+ },
26
+ {
27
+ id: "f3",
28
+ name: "charge-card.bpmn",
29
+ type: "bpmn",
30
+ lastModified: "1 week ago",
31
+ modifiedBy: "Anita Schmidt",
32
+ createdBy: "Marco Rossi",
33
+ },
34
+ {
35
+ id: "f4",
36
+ name: "refund-request.form",
37
+ type: "form",
38
+ lastModified: "1 week ago",
39
+ modifiedBy: "Priya Nair",
40
+ createdBy: "Priya Nair",
41
+ },
42
+ {
43
+ id: "f5",
44
+ name: "reconcile.rpa",
45
+ type: "rpa",
46
+ lastModified: "2 weeks ago",
47
+ modifiedBy: "Marco Rossi",
48
+ createdBy: "Marco Rossi",
49
+ },
50
+ {
51
+ id: "f6",
52
+ name: "shared-connectors",
53
+ type: "folder",
54
+ lastModified: "3 weeks ago",
55
+ modifiedBy: "Jonas Weber",
56
+ createdBy: "Jonas Weber",
57
+ },
58
+ {
59
+ id: "f7",
60
+ name: "README.md",
61
+ type: "readme",
62
+ lastModified: "3 weeks ago",
63
+ modifiedBy: "Anita Schmidt",
64
+ createdBy: "Anita Schmidt",
65
+ },
66
+ ];
67
+ export const deployment = {
68
+ cluster: "eu-1-prod",
69
+ plan: "Production",
70
+ deployedAt: "Jun 14, 2026 · 09:42",
71
+ };
72
+ export const git = {
73
+ repo: "camundanzia/payments-project",
74
+ branch: "main",
75
+ synced: true,
76
+ };
77
+ export const assets = [
78
+ {
79
+ id: "a1",
80
+ name: "Payment Gateway Connector",
81
+ group: "Catalog",
82
+ state: "available",
83
+ version: "3.2.0",
84
+ usedIn: ["order-payment.bpmn", "charge-card.bpmn"],
85
+ },
86
+ {
87
+ id: "a2",
88
+ name: "Risk Scoring Model",
89
+ group: "Catalog",
90
+ state: "outdated",
91
+ version: "1.4.0",
92
+ usedIn: ["risk-scoring.dmn"],
93
+ },
94
+ {
95
+ id: "a3",
96
+ name: "Notification Templates",
97
+ group: "Shared resource",
98
+ state: "available",
99
+ version: "2.0.1",
100
+ usedIn: ["refund-request.form"],
101
+ },
102
+ ];
103
+ //# sourceMappingURL=mock-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-data.js","sourceRoot":"","sources":["../../../../src/examples/project-detail/mock-data.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;CACzC,CAAC;AACF,MAAM,CAAC,MAAM,KAAK,GAAkB;IAClC;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,WAAW;QAClB,YAAY,EAAE,YAAY;QAC1B,UAAU,EAAE,eAAe;QAC3B,SAAS,EAAE,eAAe;KAC3B;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE,YAAY;QAC1B,UAAU,EAAE,aAAa;QACzB,SAAS,EAAE,aAAa;KACzB;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,MAAM;QACZ,YAAY,EAAE,YAAY;QAC1B,UAAU,EAAE,eAAe;QAC3B,SAAS,EAAE,aAAa;KACzB;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,MAAM;QACZ,YAAY,EAAE,YAAY;QAC1B,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,YAAY;KACxB;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,KAAK;QACX,YAAY,EAAE,aAAa;QAC3B,UAAU,EAAE,aAAa;QACzB,SAAS,EAAE,aAAa;KACzB;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,aAAa;QAC3B,UAAU,EAAE,aAAa;QACzB,SAAS,EAAE,aAAa;KACzB;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,aAAa;QAC3B,UAAU,EAAE,eAAe;QAC3B,SAAS,EAAE,eAAe;KAC3B;CACF,CAAC;AACF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,YAAY;IAClB,UAAU,EAAE,sBAAsB;CACnC,CAAC;AACF,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,IAAI,EAAE,8BAA8B;IACpC,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,IAAI;CACb,CAAC;AACF,MAAM,CAAC,MAAM,MAAM,GAAkB;IACnC;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;KACnD;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,CAAC,kBAAkB,CAAC;KAC7B;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,CAAC,qBAAqB,CAAC;KAChC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function ProjectsListPage({ empty }: {
2
+ empty?: boolean;
3
+ }): import("react").JSX.Element;
4
+ //# sourceMappingURL=ProjectsListPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectsListPage.d.ts","sourceRoot":"","sources":["../../../../src/examples/projects-list/ProjectsListPage.tsx"],"names":[],"mappings":"AAiDA,wBAAgB,gBAAgB,CAAC,EAAE,KAAa,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,+BAwFtE"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { Copy, FolderInput, FolderKanban, Pencil, Plus, Rocket, Search, Trash2, } from "lucide-react";
4
+ import { Button, Card, CardContent, DataTable, Input } from "../../index";
5
+ import { AppShell } from "../shared/AppShell";
6
+ import { consoleNav, consoleBreadcrumb } from "../shared/console-nav";
7
+ import { projects } from "./mock-data";
8
+ const columns = [
9
+ {
10
+ accessorKey: "name",
11
+ header: "Name",
12
+ cell: ({ row }) => (_jsxs("span", { className: "flex items-center gap-2 font-medium", children: [_jsx(FolderKanban, { className: "size-4 text-muted-foreground" }), row.original.name] })),
13
+ },
14
+ { accessorKey: "fileCount", header: "Files" },
15
+ { accessorKey: "lastModified", header: "Last modified" },
16
+ { accessorKey: "createdBy", header: "Created by" },
17
+ ];
18
+ // TODO: Replace with API calls to the relevant /v2/workspaces/{workspaceId}/projects endpoints
19
+ const rowActions = [
20
+ { id: "rename", label: "Rename", icon: _jsx(Pencil, {}), onClick: () => { } },
21
+ { id: "move", label: "Move", icon: _jsx(FolderInput, {}), onClick: () => { } },
22
+ { id: "duplicate", label: "Duplicate", icon: _jsx(Copy, {}), onClick: () => { } },
23
+ {
24
+ id: "delete",
25
+ label: "Delete",
26
+ variant: "destructive",
27
+ separatorBefore: true,
28
+ icon: _jsx(Trash2, {}),
29
+ onClick: () => { },
30
+ },
31
+ ];
32
+ export function ProjectsListPage({ empty = false }) {
33
+ const [query, setQuery] = useState("");
34
+ const data = empty
35
+ ? []
36
+ : projects.filter((project) => project.name.toLowerCase().includes(query.toLowerCase()));
37
+ const emptyState = (_jsx(Card, { className: "mx-auto max-w-md border-dashed", children: _jsxs(CardContent, { className: "flex flex-col items-center gap-4 py-10 text-center", children: [_jsx("span", { className: "flex size-12 items-center justify-center rounded-full bg-muted", children: _jsx(Rocket, { className: "size-6 text-muted-foreground" }) }), _jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("h2", { className: "text-base font-semibold", children: "No projects yet" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Projects organize your BPMN diagrams, DMN decisions, and forms. Create your first one to get started." })] }), _jsxs(Button, { type: "button", onClick: () => { }, children: [_jsx(Plus, {}), "New project"] })] }) }));
38
+ return (_jsx(AppShell, { appName: "Console", sidebarLabel: "Workspace navigation", items: consoleNav, breadcrumb: consoleBreadcrumb, children: _jsxs("div", { className: "p-6", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("h1", { className: "text-2xl font-semibold", children: "Projects" }), _jsxs("p", { className: "text-sm text-muted-foreground", children: [empty ? 0 : projects.length, " projects"] })] }), _jsxs(Button, { type: "button", onClick: () => { }, children: [_jsx(Plus, {}), "New project"] })] }), empty ? (
39
+ // Render the empty state directly in the page — not inside the
40
+ // DataTable's empty cell, which would constrain it.
41
+ _jsx("div", { className: "mt-12", children: emptyState })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "relative mt-6 max-w-xs", children: [_jsx(Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { type: "search", placeholder: "Search projects", "aria-label": "Search projects", value: query, onChange: (event) => setQuery(event.target.value), className: "pl-9" })] }), _jsx("div", { className: "mt-4", children: _jsx(DataTable, { columns: columns, data: data, sorting: true, pagination: { pageSizes: [10, 25] }, rowActions: rowActions, getRowId: (row) => row.id,
42
+ // TODO: navigate to project detail
43
+ onRowClick: () => { } }) })] }))] }) }));
44
+ }
45
+ //# sourceMappingURL=ProjectsListPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectsListPage.js","sourceRoot":"","sources":["../../../../src/examples/projects-list/ProjectsListPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface Project {
2
+ id: string;
3
+ name: string;
4
+ fileCount: number;
5
+ lastModified: string;
6
+ lastModifiedIso: string;
7
+ createdBy: string;
8
+ }
9
+ export declare const projects: Project[];
10
+ //# sourceMappingURL=mock-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-data.d.ts","sourceRoot":"","sources":["../../../../src/examples/projects-list/mock-data.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,eAAO,MAAM,QAAQ,EAAE,OAAO,EAiF7B,CAAC"}