@tetrascience-npm/tetrascience-react-ui 0.5.0 → 0.6.0-beta.78.1

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 (192) hide show
  1. package/README.md +84 -37
  2. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +2 -0
  3. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -0
  4. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +140 -0
  5. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -0
  6. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +2 -0
  7. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -0
  8. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +126 -0
  9. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -0
  10. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +2 -0
  11. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -0
  12. package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +341 -0
  13. package/dist/components/composed/PlateMapEditor/PlateMapEditor.js.map +1 -0
  14. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +2 -0
  15. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -0
  16. package/dist/components/composed/PlateMapEditor/PlateMapForm.js +43 -0
  17. package/dist/components/composed/PlateMapEditor/PlateMapForm.js.map +1 -0
  18. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +2 -0
  19. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -0
  20. package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +154 -0
  21. package/dist/components/composed/PlateMapEditor/PlateMapGrid.js.map +1 -0
  22. package/dist/components/composed/PlateMapEditor/PlateMapManifest.cjs +2 -0
  23. package/dist/components/composed/PlateMapEditor/PlateMapManifest.cjs.map +1 -0
  24. package/dist/components/composed/PlateMapEditor/PlateMapManifest.js +44 -0
  25. package/dist/components/composed/PlateMapEditor/PlateMapManifest.js.map +1 -0
  26. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +2 -0
  27. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -0
  28. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +136 -0
  29. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -0
  30. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +2 -0
  31. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -0
  32. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +389 -0
  33. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -0
  34. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +2 -0
  35. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -0
  36. package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +54 -0
  37. package/dist/components/composed/PlateMapEditor/PlateZoomControl.js.map +1 -0
  38. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +2 -0
  39. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -0
  40. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +96 -0
  41. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js.map +1 -0
  42. package/dist/components/composed/PlateMapEditor/WellLegend.cjs +2 -0
  43. package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -0
  44. package/dist/components/composed/PlateMapEditor/WellLegend.js +58 -0
  45. package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -0
  46. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +2 -0
  47. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -0
  48. package/dist/components/composed/PlateMapEditor/WellManifestTable.js +421 -0
  49. package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -0
  50. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +2 -0
  51. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -0
  52. package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +177 -0
  53. package/dist/components/composed/PlateMapEditor/WellMetadataForm.js.map +1 -0
  54. package/dist/components/composed/PlateMapEditor/autoFill.cjs +2 -0
  55. package/dist/components/composed/PlateMapEditor/autoFill.cjs.map +1 -0
  56. package/dist/components/composed/PlateMapEditor/autoFill.js +41 -0
  57. package/dist/components/composed/PlateMapEditor/autoFill.js.map +1 -0
  58. package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs +4 -0
  59. package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs.map +1 -0
  60. package/dist/components/composed/PlateMapEditor/csvPlateTriage.js +103 -0
  61. package/dist/components/composed/PlateMapEditor/csvPlateTriage.js.map +1 -0
  62. package/dist/components/composed/PlateMapEditor/helpers.cjs +2 -0
  63. package/dist/components/composed/PlateMapEditor/helpers.cjs.map +1 -0
  64. package/dist/components/composed/PlateMapEditor/helpers.js +11 -0
  65. package/dist/components/composed/PlateMapEditor/helpers.js.map +1 -0
  66. package/dist/components/composed/PlateMapEditor/wellGrid.cjs +2 -0
  67. package/dist/components/composed/PlateMapEditor/wellGrid.cjs.map +1 -0
  68. package/dist/components/composed/PlateMapEditor/wellGrid.js +56 -0
  69. package/dist/components/composed/PlateMapEditor/wellGrid.js.map +1 -0
  70. package/dist/components/composed/ProcessFlow/ProcessFlow.cjs +2 -0
  71. package/dist/components/composed/ProcessFlow/ProcessFlow.cjs.map +1 -0
  72. package/dist/components/composed/ProcessFlow/ProcessFlow.js +543 -0
  73. package/dist/components/composed/ProcessFlow/ProcessFlow.js.map +1 -0
  74. package/dist/components/composed/ProcessFlow/ProcessFlow.utils.cjs +2 -0
  75. package/dist/components/composed/ProcessFlow/ProcessFlow.utils.cjs.map +1 -0
  76. package/dist/components/composed/ProcessFlow/ProcessFlow.utils.js +84 -0
  77. package/dist/components/composed/ProcessFlow/ProcessFlow.utils.js.map +1 -0
  78. package/dist/components/ui/accordion.cjs +1 -1
  79. package/dist/components/ui/accordion.cjs.map +1 -1
  80. package/dist/components/ui/accordion.js +1 -1
  81. package/dist/components/ui/accordion.js.map +1 -1
  82. package/dist/components/ui/badge.cjs +1 -1
  83. package/dist/components/ui/badge.cjs.map +1 -1
  84. package/dist/components/ui/badge.js +18 -18
  85. package/dist/components/ui/badge.js.map +1 -1
  86. package/dist/components/ui/button.cjs +1 -1
  87. package/dist/components/ui/button.cjs.map +1 -1
  88. package/dist/components/ui/button.js +16 -16
  89. package/dist/components/ui/button.js.map +1 -1
  90. package/dist/components/ui/calendar.cjs +1 -1
  91. package/dist/components/ui/calendar.cjs.map +1 -1
  92. package/dist/components/ui/calendar.js +5 -5
  93. package/dist/components/ui/calendar.js.map +1 -1
  94. package/dist/components/ui/card.cjs +1 -1
  95. package/dist/components/ui/card.cjs.map +1 -1
  96. package/dist/components/ui/card.js +1 -1
  97. package/dist/components/ui/card.js.map +1 -1
  98. package/dist/components/ui/checkbox.cjs +1 -1
  99. package/dist/components/ui/checkbox.cjs.map +1 -1
  100. package/dist/components/ui/checkbox.js +9 -9
  101. package/dist/components/ui/checkbox.js.map +1 -1
  102. package/dist/components/ui/combobox.cjs +1 -1
  103. package/dist/components/ui/combobox.cjs.map +1 -1
  104. package/dist/components/ui/combobox.js +5 -5
  105. package/dist/components/ui/combobox.js.map +1 -1
  106. package/dist/components/ui/data-table/data-table-group.cjs +2 -0
  107. package/dist/components/ui/data-table/data-table-group.cjs.map +1 -0
  108. package/dist/components/ui/data-table/data-table-group.js +118 -0
  109. package/dist/components/ui/data-table/data-table-group.js.map +1 -0
  110. package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
  111. package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
  112. package/dist/components/ui/data-table/data-table-pagination.js +22 -22
  113. package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
  114. package/dist/components/ui/data-table/data-table.cjs +1 -1
  115. package/dist/components/ui/data-table/data-table.cjs.map +1 -1
  116. package/dist/components/ui/data-table/data-table.js +567 -316
  117. package/dist/components/ui/data-table/data-table.js.map +1 -1
  118. package/dist/components/ui/dialog.cjs +1 -1
  119. package/dist/components/ui/dialog.cjs.map +1 -1
  120. package/dist/components/ui/dialog.js +13 -13
  121. package/dist/components/ui/dialog.js.map +1 -1
  122. package/dist/components/ui/input-group.cjs +1 -1
  123. package/dist/components/ui/input-group.cjs.map +1 -1
  124. package/dist/components/ui/input-group.js +29 -29
  125. package/dist/components/ui/input-group.js.map +1 -1
  126. package/dist/components/ui/input-otp.cjs +1 -1
  127. package/dist/components/ui/input-otp.cjs.map +1 -1
  128. package/dist/components/ui/input-otp.js +10 -10
  129. package/dist/components/ui/input-otp.js.map +1 -1
  130. package/dist/components/ui/input.cjs +1 -1
  131. package/dist/components/ui/input.cjs.map +1 -1
  132. package/dist/components/ui/input.js +7 -7
  133. package/dist/components/ui/input.js.map +1 -1
  134. package/dist/components/ui/item.cjs +1 -1
  135. package/dist/components/ui/item.cjs.map +1 -1
  136. package/dist/components/ui/item.js +17 -17
  137. package/dist/components/ui/item.js.map +1 -1
  138. package/dist/components/ui/navigation-menu.cjs +1 -1
  139. package/dist/components/ui/navigation-menu.cjs.map +1 -1
  140. package/dist/components/ui/navigation-menu.js +24 -24
  141. package/dist/components/ui/navigation-menu.js.map +1 -1
  142. package/dist/components/ui/popover.cjs +2 -0
  143. package/dist/components/ui/popover.cjs.map +1 -0
  144. package/dist/components/ui/popover.js +45 -0
  145. package/dist/components/ui/popover.js.map +1 -0
  146. package/dist/components/ui/radio-group.cjs +1 -1
  147. package/dist/components/ui/radio-group.cjs.map +1 -1
  148. package/dist/components/ui/radio-group.js +16 -16
  149. package/dist/components/ui/radio-group.js.map +1 -1
  150. package/dist/components/ui/scroll-area.cjs +1 -1
  151. package/dist/components/ui/scroll-area.cjs.map +1 -1
  152. package/dist/components/ui/scroll-area.js +6 -6
  153. package/dist/components/ui/scroll-area.js.map +1 -1
  154. package/dist/components/ui/select.cjs +1 -1
  155. package/dist/components/ui/select.cjs.map +1 -1
  156. package/dist/components/ui/select.js +48 -48
  157. package/dist/components/ui/select.js.map +1 -1
  158. package/dist/components/ui/slider.cjs +1 -1
  159. package/dist/components/ui/slider.cjs.map +1 -1
  160. package/dist/components/ui/slider.js +22 -22
  161. package/dist/components/ui/slider.js.map +1 -1
  162. package/dist/components/ui/switch.cjs +1 -1
  163. package/dist/components/ui/switch.cjs.map +1 -1
  164. package/dist/components/ui/switch.js +14 -14
  165. package/dist/components/ui/switch.js.map +1 -1
  166. package/dist/components/ui/table.cjs +1 -1
  167. package/dist/components/ui/table.cjs.map +1 -1
  168. package/dist/components/ui/table.js +2 -2
  169. package/dist/components/ui/table.js.map +1 -1
  170. package/dist/components/ui/tabs.cjs +1 -1
  171. package/dist/components/ui/tabs.cjs.map +1 -1
  172. package/dist/components/ui/tabs.js +9 -9
  173. package/dist/components/ui/tabs.js.map +1 -1
  174. package/dist/components/ui/textarea.cjs +1 -1
  175. package/dist/components/ui/textarea.cjs.map +1 -1
  176. package/dist/components/ui/textarea.js +6 -6
  177. package/dist/components/ui/textarea.js.map +1 -1
  178. package/dist/components/ui/toggle.cjs +1 -1
  179. package/dist/components/ui/toggle.cjs.map +1 -1
  180. package/dist/components/ui/toggle.js +13 -13
  181. package/dist/components/ui/toggle.js.map +1 -1
  182. package/dist/index.cjs +1 -1
  183. package/dist/index.css +1 -1
  184. package/dist/index.d.ts +830 -3
  185. package/dist/index.js +649 -593
  186. package/dist/index.js.map +1 -1
  187. package/dist/index.tailwind.css +1 -1
  188. package/dist/utils/colors.cjs +1 -1
  189. package/dist/utils/colors.cjs.map +1 -1
  190. package/dist/utils/colors.js +43 -21
  191. package/dist/utils/colors.js.map +1 -1
  192. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessFlow.cjs","sources":["../../../../src/components/composed/ProcessFlow/ProcessFlow.tsx"],"sourcesContent":["import { CheckIcon, DotIcon, LockIcon, TriangleAlertIcon } from \"lucide-react\";\n\nimport {\n getConnectionPath,\n getDescriptionVisibility,\n getStepAccessibleLabel,\n hasCustomStepLayout,\n positionStep,\n resolveConnections,\n STATUS_LABELS,\n type PositionedStep,\n type ProcessFlowConnection,\n type ProcessFlowDescriptionVisibility,\n type ProcessFlowOrientation,\n type ProcessFlowSize,\n type ProcessFlowStep,\n type ProcessFlowStepStatus,\n} from \"./ProcessFlow.utils\";\n\nimport type { ComponentPropsWithoutRef, CSSProperties, MouseEvent } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport { PROCESS_FLOW_STEP_STATUSES } from \"./ProcessFlow.utils\";\nexport type {\n ProcessFlowConnection,\n ProcessFlowOrientation,\n ProcessFlowSize,\n ProcessFlowStep,\n ProcessFlowStepConfig,\n ProcessFlowStepPosition,\n ProcessFlowStepStatus,\n ProcessStep,\n ProcessStepStatus,\n} from \"./ProcessFlow.utils\";\n\ntype ProcessFlowLayout = \"linear\" | \"branching\";\ntype ProcessFlowStepContentLayout = \"stacked\" | \"inline\" | \"anchored\";\n\nexport interface ProcessFlowStepSelectDetails {\n /** Zero-based index of the selected step in the steps prop. */\n stepIndex: number;\n /** Current visual status of the selected step. */\n status: ProcessFlowStepStatus;\n nativeEvent: MouseEvent<HTMLButtonElement>;\n}\n\n/**\n * Presentational process flow.\n *\n * ProcessFlow is fully controlled by props. It visualizes parent-owned workflow state and emits user selection through\n * onStepSelect. It intentionally does not own status transitions or fire completion/error side effects.\n */\nexport interface ProcessFlowProps extends Omit<ComponentPropsWithoutRef<\"nav\">, \"onSelect\"> {\n /** Ordered list of steps to render. Each step controls its own visual status. */\n steps: ProcessFlowStep[];\n /** Optional explicit connections for branching/configurable flows. */\n connections?: ProcessFlowConnection[];\n /** Selected/viewed step id. This is separate from the active workflow status. */\n selectedStepId?: string;\n /** Called when a selectable step is clicked. Disabled and non-selectable steps do not call this. */\n onStepSelect?: (step: ProcessFlowStep, details: ProcessFlowStepSelectDetails) => void;\n orientation?: ProcessFlowOrientation;\n size?: ProcessFlowSize;\n /** Defaults to true. Set to false to hide step descriptions. */\n showDescriptions?: boolean;\n}\n\ninterface StepControlClassOptions {\n layout: ProcessFlowLayout;\n contentLayout: ProcessFlowStepContentLayout;\n onStepSelect?: ProcessFlowProps[\"onStepSelect\"];\n isDisabled: boolean;\n isSelected: boolean;\n size: ProcessFlowSize;\n status: ProcessFlowStepStatus;\n}\n\nconst LINEAR_STEP_STATUS_CLASSES: Record<ProcessFlowStepStatus, string> = {\n pending: \"text-muted-foreground\",\n active: \"text-foreground\",\n completed: \"text-foreground\",\n error: \"text-destructive\",\n disabled: \"text-muted-foreground\",\n};\n\nconst MARKER_STATUS_CLASSES: Record<ProcessFlowStepStatus, string> = {\n pending: \"border-border bg-background text-muted-foreground\",\n active: \"border-primary bg-primary text-primary-foreground\",\n completed: \"border-positive bg-positive text-background\",\n error: \"border-destructive bg-destructive text-background\",\n disabled: \"border-border bg-muted text-muted-foreground\",\n};\n\nconst CONNECTION_STATUS_CLASSES: Record<ProcessFlowStepStatus, string> = {\n pending: \"stroke-muted-foreground/35\",\n active: \"stroke-primary\",\n completed: \"stroke-positive\",\n error: \"stroke-destructive\",\n disabled: \"stroke-border\",\n};\n\nconst STEP_MIN_WIDTH: Record<ProcessFlowSize, string> = {\n default: \"11rem\",\n compact: \"8.5rem\",\n};\n\nconst RESPONSIVE_STEP_MIN_WIDTH: Record<ProcessFlowSize, string> = {\n default: \"8rem\",\n compact: \"7rem\",\n};\n\nconst SQUEEZED_STEP_MIN_WIDTH: Record<ProcessFlowSize, string> = {\n default: \"5.5rem\",\n compact: \"4.75rem\",\n};\n\nconst MINI_STEP_MIN_WIDTH: Record<ProcessFlowSize, string> = {\n default: \"2.75rem\",\n compact: \"2.5rem\",\n};\n\nconst ROW_MIN_HEIGHT: Record<ProcessFlowSize, string> = {\n default: \"7.5rem\",\n compact: \"5.75rem\",\n};\n\nconst RESPONSIVE_ROW_MIN_HEIGHT: Record<ProcessFlowSize, string> = {\n default: \"6.5rem\",\n compact: \"5rem\",\n};\n\nconst SQUEEZED_ROW_MIN_HEIGHT: Record<ProcessFlowSize, string> = {\n default: \"4.5rem\",\n compact: \"3.75rem\",\n};\n\nconst MINI_ROW_MIN_HEIGHT: Record<ProcessFlowSize, string> = {\n default: \"3.5rem\",\n compact: \"3rem\",\n};\n\nconst GRID_GAP: Record<ProcessFlowSize, string> = {\n default: \"1.25rem\",\n compact: \"0.75rem\",\n};\n\nconst RESPONSIVE_GRID_GAP: Record<ProcessFlowSize, string> = {\n default: \"0.875rem\",\n compact: \"0.625rem\",\n};\n\nconst SQUEEZED_GRID_GAP: Record<ProcessFlowSize, string> = {\n default: \"0.5rem\",\n compact: \"0.375rem\",\n};\n\nconst MINI_GRID_GAP: Record<ProcessFlowSize, string> = {\n default: \"0.375rem\",\n compact: \"0.25rem\",\n};\n\nconst LINEAR_MARKER_SIZE: Record<ProcessFlowSize, string> = {\n default: \"2.5rem\",\n compact: \"1.75rem\",\n};\n\nconst RESPONSIVE_LINEAR_MARKER_SIZE: Record<ProcessFlowSize, string> = {\n default: \"2rem\",\n compact: \"1.5rem\",\n};\n\nconst SQUEEZED_LINEAR_MARKER_SIZE: Record<ProcessFlowSize, string> = {\n default: \"1.5rem\",\n compact: \"1.25rem\",\n};\n\nconst MINI_LINEAR_MARKER_SIZE: Record<ProcessFlowSize, string> = {\n default: \"1.25rem\",\n compact: \"1.125rem\",\n};\n\nfunction getMarkerContent(status: ProcessFlowStepStatus, stepNumber: number) {\n if (status === \"completed\") {\n return <CheckIcon aria-hidden=\"true\" />;\n }\n\n if (status === \"error\") {\n return <TriangleAlertIcon aria-hidden=\"true\" />;\n }\n\n if (status === \"disabled\") {\n return <LockIcon aria-hidden=\"true\" />;\n }\n\n if (status === \"active\") {\n return <DotIcon aria-hidden=\"true\" />;\n }\n\n return stepNumber;\n}\n\nfunction getLinearSegmentStyle(index: number, count: number): CSSProperties {\n return {\n left: `calc(${((index + 0.5) / count) * 100}% + (var(--process-flow-marker-size) / 2))`,\n width: `calc(${(1 / count) * 100}% - var(--process-flow-marker-size))`,\n };\n}\n\nfunction getVerticalSegmentStyle(index: number, count: number): CSSProperties {\n return {\n height: `calc(${(1 / count) * 100}% - var(--process-flow-marker-size))`,\n top: `calc(${((index + 0.5) / count) * 100}% + (var(--process-flow-marker-size) / 2))`,\n };\n}\n\nfunction getHorizontalRailStyle(): CSSProperties {\n const inset = \"calc(((100% / var(--process-flow-count)) / 2) + (var(--process-flow-marker-size) / 2))\";\n\n return {\n left: inset,\n right: inset,\n };\n}\n\nfunction getVerticalRailStyle(): CSSProperties {\n const inset = \"calc(((100% / var(--process-flow-count)) / 2) + (var(--process-flow-marker-size) / 2))\";\n\n return {\n bottom: inset,\n top: inset,\n };\n}\n\nfunction getStepControlClassName({ contentLayout, onStepSelect, isDisabled, size, status }: StepControlClassOptions) {\n return cn(\n \"flex w-full min-w-0 border-0 bg-transparent p-0 text-sm outline-none transition-all focus-visible:border-ring focus-visible:shadow-focus\",\n contentLayout === \"inline\" && \"flex-row items-center gap-3 text-left\",\n contentLayout === \"stacked\" && \"flex-col items-center gap-2 text-center\",\n contentLayout === \"anchored\" && \"relative h-full flex-col items-center justify-center text-center\",\n size === \"compact\" && (contentLayout === \"inline\" ? \"gap-2\" : \"gap-1.5\"),\n onStepSelect &&\n !isDisabled &&\n cn(\"cursor-pointer hover:text-foreground\", contentLayout !== \"anchored\" && \"hover:-translate-y-px\"),\n onStepSelect && isDisabled && \"cursor-not-allowed\",\n LINEAR_STEP_STATUS_CLASSES[status],\n );\n}\n\nfunction getMarkerClassName({\n isSelected,\n size,\n status,\n}: Pick<StepControlClassOptions, \"isSelected\" | \"size\" | \"status\">) {\n return cn(\n \"flex size-[var(--process-flow-marker-size)] shrink-0 items-center justify-center rounded-full border text-xs font-semibold tabular-nums transition-colors [&_svg]:size-4\",\n size === \"compact\" && \"text-[0.7rem] [&_svg]:size-3\",\n \"shadow-[0_0_0_0.25rem_var(--background)]\",\n isSelected && \"ring-4 ring-primary/20\",\n MARKER_STATUS_CLASSES[status],\n );\n}\n\nfunction getLabelClassName({\n layout,\n isSelected,\n status,\n}: Pick<StepControlClassOptions, \"layout\" | \"isSelected\" | \"status\">) {\n return cn(\n \"block max-w-full truncate font-medium text-current\",\n layout === \"linear\" && isSelected && status === \"completed\" && \"text-positive\",\n layout === \"linear\" && isSelected && status !== \"completed\" && status !== \"error\" && \"text-primary\",\n );\n}\n\nfunction ProcessFlowStepControl({\n item,\n isSelected,\n onStepSelect,\n descriptionVisibility,\n size,\n layout,\n contentLayout,\n}: {\n item: PositionedStep;\n isSelected: boolean;\n onStepSelect?: ProcessFlowProps[\"onStepSelect\"];\n descriptionVisibility: ProcessFlowDescriptionVisibility;\n size: ProcessFlowSize;\n layout: ProcessFlowLayout;\n contentLayout: ProcessFlowStepContentLayout;\n}) {\n const { step, stepIndex, status } = item;\n const isDisabled = status === \"disabled\" || step.selectable === false;\n const accessibleLabel = getStepAccessibleLabel(step, status, stepIndex + 1);\n const textVisibility = descriptionVisibility === \"visible\" ? \"visible\" : \"auto\";\n const controlClassName = getStepControlClassName({\n layout,\n contentLayout,\n onStepSelect,\n isDisabled,\n isSelected,\n size,\n status,\n });\n const markerContent = (\n <span\n aria-hidden=\"true\"\n className={getMarkerClassName({\n isSelected,\n size,\n status,\n })}\n data-slot=\"process-flow-marker\"\n >\n {getMarkerContent(status, stepIndex + 1)}\n </span>\n );\n const textContent = (\n <span\n data-slot=\"process-flow-text\"\n data-text-visibility={textVisibility}\n className={cn(\n \"flex min-w-0 flex-col gap-0.5\",\n contentLayout === \"stacked\" && \"w-full items-center\",\n contentLayout === \"anchored\" &&\n \"pointer-events-none absolute left-1/2 top-[calc(50%+var(--process-flow-marker-size)/2+0.375rem)] w-max max-w-[calc(var(--process-flow-step-min-width)-0.5rem)] -translate-x-1/2 items-center px-1\",\n )}\n >\n <span className={getLabelClassName({ layout, isSelected, status })} data-slot=\"process-flow-label\">\n {step.label}\n </span>\n {descriptionVisibility !== \"hidden\" && step.description ? (\n <span\n className=\"line-clamp-2 text-xs leading-snug text-muted-foreground\"\n data-description-visibility={descriptionVisibility}\n data-slot=\"process-flow-description\"\n >\n {step.description}\n </span>\n ) : null}\n <span className=\"sr-only\">Status: {STATUS_LABELS[status]}</span>\n </span>\n );\n const content = (\n <>\n {markerContent}\n {textContent}\n </>\n );\n\n if (!onStepSelect) {\n return (\n <div\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-disabled={isDisabled || undefined}\n aria-invalid={status === \"error\" || undefined}\n aria-label={accessibleLabel}\n className={controlClassName}\n data-selected={isSelected || undefined}\n data-status={status}\n >\n {content}\n </div>\n );\n }\n\n return (\n <button\n type=\"button\"\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-invalid={status === \"error\" || undefined}\n aria-label={accessibleLabel}\n aria-pressed={isSelected}\n className={controlClassName}\n data-selected={isSelected || undefined}\n data-status={status}\n disabled={isDisabled}\n onClick={(nativeEvent) =>\n onStepSelect(step, {\n nativeEvent,\n status,\n stepIndex,\n })\n }\n >\n {content}\n </button>\n );\n}\n\nfunction HorizontalProcessFlow({\n steps,\n selectedStepId,\n onStepSelect,\n size,\n showDescriptions,\n}: Pick<ProcessFlowProps, \"steps\" | \"selectedStepId\" | \"onStepSelect\" | \"showDescriptions\"> & {\n size: ProcessFlowSize;\n}) {\n const positionedSteps = steps.map((step, index) => positionStep(step, index, \"horizontal\"));\n const resolvedConnections = resolveConnections(positionedSteps);\n const descriptionVisibility = getDescriptionVisibility(showDescriptions);\n const flowStyle = {\n \"--process-flow-count\": steps.length,\n \"--process-flow-step-min-width-base\": STEP_MIN_WIDTH[size],\n \"--process-flow-step-min-width-responsive\": RESPONSIVE_STEP_MIN_WIDTH[size],\n \"--process-flow-step-min-width-squeezed\": SQUEEZED_STEP_MIN_WIDTH[size],\n \"--process-flow-step-min-width-mini\": MINI_STEP_MIN_WIDTH[size],\n \"--process-flow-row-min-height-base\": ROW_MIN_HEIGHT[size],\n \"--process-flow-row-min-height-responsive\": RESPONSIVE_ROW_MIN_HEIGHT[size],\n \"--process-flow-row-min-height-squeezed\": SQUEEZED_ROW_MIN_HEIGHT[size],\n \"--process-flow-row-min-height-mini\": MINI_ROW_MIN_HEIGHT[size],\n \"--process-flow-marker-size-base\": LINEAR_MARKER_SIZE[size],\n \"--process-flow-marker-size-responsive\": RESPONSIVE_LINEAR_MARKER_SIZE[size],\n \"--process-flow-marker-size-squeezed\": SQUEEZED_LINEAR_MARKER_SIZE[size],\n \"--process-flow-marker-size-mini\": MINI_LINEAR_MARKER_SIZE[size],\n } as CSSProperties;\n\n return (\n <div className=\"overflow-hidden px-3 py-4\" data-slot=\"process-flow-viewport\" style={flowStyle}>\n <ol\n className=\"relative grid min-w-0 min-h-[var(--process-flow-row-min-height)] list-none p-0\"\n data-slot=\"process-flow-list\"\n style={{\n gridTemplateColumns: \"repeat(var(--process-flow-count), minmax(0, 1fr))\",\n }}\n >\n {steps.length > 1 ? (\n <li\n aria-hidden=\"true\"\n className=\"absolute top-[calc(var(--process-flow-marker-size)/2)] h-0.5 -translate-y-1/2 rounded-full bg-muted\"\n style={getHorizontalRailStyle()}\n />\n ) : null}\n {resolvedConnections.map((connection, index) => (\n <li\n key={connection.id}\n aria-hidden=\"true\"\n className={cn(\n \"absolute top-[calc(var(--process-flow-marker-size)/2)] h-0.5 -translate-y-1/2 rounded-full transition-colors\",\n connection.status === \"completed\" && \"bg-positive\",\n connection.status === \"active\" && \"bg-primary\",\n connection.status === \"error\" && \"bg-destructive\",\n connection.status === \"pending\" && \"bg-muted\",\n connection.status === \"disabled\" && \"bg-border\",\n )}\n style={getLinearSegmentStyle(index, steps.length)}\n />\n ))}\n {positionedSteps.map((item) => (\n <li\n key={item.step.id}\n className=\"relative z-[1] flex min-w-0 items-start justify-center\"\n data-slot=\"process-flow-item\"\n >\n <ProcessFlowStepControl\n item={item}\n contentLayout=\"stacked\"\n descriptionVisibility={descriptionVisibility}\n isSelected={selectedStepId === item.step.id}\n layout=\"linear\"\n onStepSelect={onStepSelect}\n size={size}\n />\n </li>\n ))}\n </ol>\n </div>\n );\n}\n\nfunction VerticalProcessFlow({\n steps,\n selectedStepId,\n onStepSelect,\n size,\n showDescriptions,\n}: Pick<ProcessFlowProps, \"steps\" | \"selectedStepId\" | \"onStepSelect\" | \"showDescriptions\"> & {\n size: ProcessFlowSize;\n}) {\n const positionedSteps = steps.map((step, index) => positionStep(step, index, \"vertical\"));\n const resolvedConnections = resolveConnections(positionedSteps);\n const descriptionVisibility = getDescriptionVisibility(showDescriptions);\n const flowStyle = {\n \"--process-flow-count\": steps.length,\n \"--process-flow-row-min-height-base\": ROW_MIN_HEIGHT[size],\n \"--process-flow-row-min-height-responsive\": RESPONSIVE_ROW_MIN_HEIGHT[size],\n \"--process-flow-row-min-height-squeezed\": SQUEEZED_ROW_MIN_HEIGHT[size],\n \"--process-flow-row-min-height-mini\": MINI_ROW_MIN_HEIGHT[size],\n \"--process-flow-marker-size-base\": LINEAR_MARKER_SIZE[size],\n \"--process-flow-marker-size-responsive\": RESPONSIVE_LINEAR_MARKER_SIZE[size],\n \"--process-flow-marker-size-squeezed\": SQUEEZED_LINEAR_MARKER_SIZE[size],\n \"--process-flow-marker-size-mini\": MINI_LINEAR_MARKER_SIZE[size],\n } as CSSProperties;\n\n return (\n <div className=\"overflow-x-auto px-3 py-3\" data-slot=\"process-flow-viewport\" style={flowStyle}>\n <ol\n className=\"relative grid min-h-[calc(var(--process-flow-count)*var(--process-flow-row-min-height))] min-w-72 list-none p-0\"\n data-slot=\"process-flow-list\"\n style={{\n gridTemplateRows: \"repeat(var(--process-flow-count), minmax(var(--process-flow-row-min-height), auto))\",\n }}\n >\n {steps.length > 1 ? (\n <li\n aria-hidden=\"true\"\n className=\"absolute left-[calc(var(--process-flow-marker-size)/2)] w-0.5 -translate-x-1/2 rounded-full bg-muted\"\n style={getVerticalRailStyle()}\n />\n ) : null}\n {resolvedConnections.map((connection, index) => (\n <li\n key={connection.id}\n aria-hidden=\"true\"\n className={cn(\n \"absolute left-[calc(var(--process-flow-marker-size)/2)] w-0.5 -translate-x-1/2 rounded-full transition-colors\",\n connection.status === \"completed\" && \"bg-positive\",\n connection.status === \"active\" && \"bg-primary\",\n connection.status === \"error\" && \"bg-destructive\",\n connection.status === \"pending\" && \"bg-muted\",\n connection.status === \"disabled\" && \"bg-border\",\n )}\n style={getVerticalSegmentStyle(index, steps.length)}\n />\n ))}\n {positionedSteps.map((item) => (\n <li key={item.step.id} className=\"relative z-[1] flex min-w-0 items-center\" data-slot=\"process-flow-item\">\n <ProcessFlowStepControl\n item={item}\n contentLayout=\"inline\"\n descriptionVisibility={descriptionVisibility}\n isSelected={selectedStepId === item.step.id}\n layout=\"linear\"\n onStepSelect={onStepSelect}\n size={size}\n />\n </li>\n ))}\n </ol>\n </div>\n );\n}\n\nexport function ProcessFlow({\n steps,\n connections,\n selectedStepId,\n onStepSelect,\n orientation = \"horizontal\",\n size = \"default\",\n showDescriptions,\n className,\n style,\n \"aria-label\": ariaLabel = \"Process flow\",\n ...props\n}: ProcessFlowProps) {\n if (steps.length === 0) {\n return null;\n }\n\n const layout: ProcessFlowLayout = connections || hasCustomStepLayout(steps) ? \"branching\" : \"linear\";\n\n if (layout === \"linear\" && orientation === \"horizontal\") {\n return (\n <nav\n aria-label={ariaLabel}\n className={cn(\"w-full min-w-0\", className)}\n data-orientation={orientation}\n data-slot=\"process-flow\"\n data-size={size}\n style={style}\n {...props}\n >\n <HorizontalProcessFlow\n steps={steps}\n selectedStepId={selectedStepId}\n onStepSelect={onStepSelect}\n showDescriptions={showDescriptions}\n size={size}\n />\n </nav>\n );\n }\n\n if (layout === \"linear\" && orientation === \"vertical\") {\n return (\n <nav\n aria-label={ariaLabel}\n className={cn(\"w-full min-w-0\", className)}\n data-orientation={orientation}\n data-slot=\"process-flow\"\n data-size={size}\n style={style}\n {...props}\n >\n <VerticalProcessFlow\n steps={steps}\n selectedStepId={selectedStepId}\n onStepSelect={onStepSelect}\n showDescriptions={showDescriptions}\n size={size}\n />\n </nav>\n );\n }\n\n const positionedSteps = steps.map((step, index) => positionStep(step, index, orientation));\n const rowCount = Math.max(...positionedSteps.map((step) => step.row + 1), 1);\n const columnCount = Math.max(...positionedSteps.map((step) => step.column + 1), 1);\n const resolvedConnections = resolveConnections(positionedSteps, connections);\n const descriptionVisibility = getDescriptionVisibility(showDescriptions);\n const flowStyle = {\n \"--process-flow-columns\": columnCount,\n \"--process-flow-rows\": rowCount,\n \"--process-flow-step-min-width-base\": STEP_MIN_WIDTH[size],\n \"--process-flow-step-min-width-responsive\": RESPONSIVE_STEP_MIN_WIDTH[size],\n \"--process-flow-step-min-width-squeezed\": SQUEEZED_STEP_MIN_WIDTH[size],\n \"--process-flow-step-min-width-mini\": MINI_STEP_MIN_WIDTH[size],\n \"--process-flow-row-min-height-base\": ROW_MIN_HEIGHT[size],\n \"--process-flow-row-min-height-responsive\": RESPONSIVE_ROW_MIN_HEIGHT[size],\n \"--process-flow-row-min-height-squeezed\": SQUEEZED_ROW_MIN_HEIGHT[size],\n \"--process-flow-row-min-height-mini\": MINI_ROW_MIN_HEIGHT[size],\n \"--process-flow-gap-base\": GRID_GAP[size],\n \"--process-flow-gap-responsive\": RESPONSIVE_GRID_GAP[size],\n \"--process-flow-gap-squeezed\": SQUEEZED_GRID_GAP[size],\n \"--process-flow-gap-mini\": MINI_GRID_GAP[size],\n \"--process-flow-marker-size-base\": LINEAR_MARKER_SIZE[size],\n \"--process-flow-marker-size-responsive\": RESPONSIVE_LINEAR_MARKER_SIZE[size],\n \"--process-flow-marker-size-squeezed\": SQUEEZED_LINEAR_MARKER_SIZE[size],\n \"--process-flow-marker-size-mini\": MINI_LINEAR_MARKER_SIZE[size],\n } as CSSProperties;\n\n return (\n <nav\n aria-label={ariaLabel}\n className={cn(\"w-full min-w-0\", className)}\n data-orientation={orientation}\n data-slot=\"process-flow\"\n data-size={size}\n style={style}\n {...props}\n >\n <div className=\"overflow-x-auto py-2\" data-slot=\"process-flow-viewport\" style={flowStyle}>\n <div\n className=\"relative min-w-[calc(var(--process-flow-columns)*var(--process-flow-step-min-width))] min-h-[calc(var(--process-flow-rows)*var(--process-flow-row-min-height))]\"\n data-slot=\"process-flow-canvas\"\n >\n <svg\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 z-0 size-full overflow-visible\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 100 100\"\n >\n {resolvedConnections.map((connection) => (\n <path\n key={connection.id}\n className={cn(\n \"fill-none stroke-2 transition-colors\",\n CONNECTION_STATUS_CLASSES[connection.status],\n connection.status === \"disabled\" && \"opacity-60\",\n )}\n d={getConnectionPath(connection, rowCount, columnCount)}\n data-status={connection.status}\n strokeLinecap=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n />\n ))}\n </svg>\n\n <ol\n className=\"relative z-[1] grid min-h-[inherit] list-none p-0\"\n data-slot=\"process-flow-list\"\n style={{\n gap: \"var(--process-flow-gap)\",\n gridTemplateColumns:\n \"repeat(var(--process-flow-columns), minmax(var(--process-flow-step-min-width), 1fr))\",\n gridTemplateRows: \"repeat(var(--process-flow-rows), minmax(var(--process-flow-row-min-height), auto))\",\n }}\n >\n {positionedSteps.map((item) => (\n <li\n key={item.step.id}\n className=\"flex min-w-0 items-center justify-center\"\n data-slot=\"process-flow-item\"\n style={{\n gridColumn: item.column + 1,\n gridRow: item.row + 1,\n }}\n >\n <ProcessFlowStepControl\n item={item}\n contentLayout=\"anchored\"\n descriptionVisibility={descriptionVisibility}\n isSelected={selectedStepId === item.step.id}\n layout=\"branching\"\n onStepSelect={onStepSelect}\n size={size}\n />\n </li>\n ))}\n </ol>\n </div>\n </div>\n </nav>\n );\n}\n"],"names":["LINEAR_STEP_STATUS_CLASSES","MARKER_STATUS_CLASSES","CONNECTION_STATUS_CLASSES","STEP_MIN_WIDTH","RESPONSIVE_STEP_MIN_WIDTH","SQUEEZED_STEP_MIN_WIDTH","MINI_STEP_MIN_WIDTH","ROW_MIN_HEIGHT","RESPONSIVE_ROW_MIN_HEIGHT","SQUEEZED_ROW_MIN_HEIGHT","MINI_ROW_MIN_HEIGHT","GRID_GAP","RESPONSIVE_GRID_GAP","SQUEEZED_GRID_GAP","MINI_GRID_GAP","LINEAR_MARKER_SIZE","RESPONSIVE_LINEAR_MARKER_SIZE","SQUEEZED_LINEAR_MARKER_SIZE","MINI_LINEAR_MARKER_SIZE","getMarkerContent","status","stepNumber","jsx","CheckIcon","TriangleAlertIcon","LockIcon","DotIcon","getLinearSegmentStyle","index","count","getVerticalSegmentStyle","getHorizontalRailStyle","inset","getVerticalRailStyle","getStepControlClassName","contentLayout","onStepSelect","isDisabled","size","cn","getMarkerClassName","isSelected","getLabelClassName","layout","ProcessFlowStepControl","item","descriptionVisibility","step","stepIndex","accessibleLabel","getStepAccessibleLabel","textVisibility","controlClassName","markerContent","textContent","jsxs","STATUS_LABELS","content","Fragment","nativeEvent","HorizontalProcessFlow","steps","selectedStepId","showDescriptions","positionedSteps","positionStep","resolvedConnections","resolveConnections","getDescriptionVisibility","flowStyle","connection","VerticalProcessFlow","ProcessFlow","connections","orientation","className","style","ariaLabel","props","hasCustomStepLayout","rowCount","columnCount","getConnectionPath"],"mappings":"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"}
@@ -0,0 +1,543 @@
1
+ import { jsx as s, jsxs as w, Fragment as V } from "react/jsx-runtime";
2
+ import { CheckIcon as q, TriangleAlertIcon as U, LockIcon as W, DotIcon as Z } from "lucide-react";
3
+ import { hasCustomStepLayout as z, positionStep as E, resolveConnections as N, getConnectionPath as j, getStepAccessibleLabel as F, STATUS_LABELS as K, getDescriptionVisibility as S } from "./ProcessFlow.utils.js";
4
+ import { PROCESS_FLOW_STEP_STATUSES as ge } from "./ProcessFlow.utils.js";
5
+ import { cn as f } from "../../../lib/utils.js";
6
+ const Q = {
7
+ pending: "text-muted-foreground",
8
+ active: "text-foreground",
9
+ completed: "text-foreground",
10
+ error: "text-destructive",
11
+ disabled: "text-muted-foreground"
12
+ }, $ = {
13
+ pending: "border-border bg-background text-muted-foreground",
14
+ active: "border-primary bg-primary text-primary-foreground",
15
+ completed: "border-positive bg-positive text-background",
16
+ error: "border-destructive bg-destructive text-background",
17
+ disabled: "border-border bg-muted text-muted-foreground"
18
+ }, B = {
19
+ pending: "stroke-muted-foreground/35",
20
+ active: "stroke-primary",
21
+ completed: "stroke-positive",
22
+ error: "stroke-destructive",
23
+ disabled: "stroke-border"
24
+ }, H = {
25
+ default: "11rem",
26
+ compact: "8.5rem"
27
+ }, L = {
28
+ default: "8rem",
29
+ compact: "7rem"
30
+ }, D = {
31
+ default: "5.5rem",
32
+ compact: "4.75rem"
33
+ }, G = {
34
+ default: "2.75rem",
35
+ compact: "2.5rem"
36
+ }, k = {
37
+ default: "7.5rem",
38
+ compact: "5.75rem"
39
+ }, I = {
40
+ default: "6.5rem",
41
+ compact: "5rem"
42
+ }, y = {
43
+ default: "4.5rem",
44
+ compact: "3.75rem"
45
+ }, R = {
46
+ default: "3.5rem",
47
+ compact: "3rem"
48
+ }, J = {
49
+ default: "1.25rem",
50
+ compact: "0.75rem"
51
+ }, X = {
52
+ default: "0.875rem",
53
+ compact: "0.625rem"
54
+ }, Y = {
55
+ default: "0.5rem",
56
+ compact: "0.375rem"
57
+ }, ee = {
58
+ default: "0.375rem",
59
+ compact: "0.25rem"
60
+ }, T = {
61
+ default: "2.5rem",
62
+ compact: "1.75rem"
63
+ }, C = {
64
+ default: "2rem",
65
+ compact: "1.5rem"
66
+ }, A = {
67
+ default: "1.5rem",
68
+ compact: "1.25rem"
69
+ }, M = {
70
+ default: "1.25rem",
71
+ compact: "1.125rem"
72
+ };
73
+ function re(r, a) {
74
+ return r === "completed" ? /* @__PURE__ */ s(q, { "aria-hidden": "true" }) : r === "error" ? /* @__PURE__ */ s(U, { "aria-hidden": "true" }) : r === "disabled" ? /* @__PURE__ */ s(W, { "aria-hidden": "true" }) : r === "active" ? /* @__PURE__ */ s(Z, { "aria-hidden": "true" }) : a;
75
+ }
76
+ function te(r, a) {
77
+ return {
78
+ left: `calc(${(r + 0.5) / a * 100}% + (var(--process-flow-marker-size) / 2))`,
79
+ width: `calc(${1 / a * 100}% - var(--process-flow-marker-size))`
80
+ };
81
+ }
82
+ function oe(r, a) {
83
+ return {
84
+ height: `calc(${1 / a * 100}% - var(--process-flow-marker-size))`,
85
+ top: `calc(${(r + 0.5) / a * 100}% + (var(--process-flow-marker-size) / 2))`
86
+ };
87
+ }
88
+ function se() {
89
+ const r = "calc(((100% / var(--process-flow-count)) / 2) + (var(--process-flow-marker-size) / 2))";
90
+ return {
91
+ left: r,
92
+ right: r
93
+ };
94
+ }
95
+ function ae() {
96
+ const r = "calc(((100% / var(--process-flow-count)) / 2) + (var(--process-flow-marker-size) / 2))";
97
+ return {
98
+ bottom: r,
99
+ top: r
100
+ };
101
+ }
102
+ function le({ contentLayout: r, onStepSelect: a, isDisabled: l, size: t, status: n }) {
103
+ return f(
104
+ "flex w-full min-w-0 border-0 bg-transparent p-0 text-sm outline-none transition-all focus-visible:border-ring focus-visible:shadow-focus",
105
+ r === "inline" && "flex-row items-center gap-3 text-left",
106
+ r === "stacked" && "flex-col items-center gap-2 text-center",
107
+ r === "anchored" && "relative h-full flex-col items-center justify-center text-center",
108
+ t === "compact" && (r === "inline" ? "gap-2" : "gap-1.5"),
109
+ a && !l && f("cursor-pointer hover:text-foreground", r !== "anchored" && "hover:-translate-y-px"),
110
+ a && l && "cursor-not-allowed",
111
+ Q[n]
112
+ );
113
+ }
114
+ function ie({
115
+ isSelected: r,
116
+ size: a,
117
+ status: l
118
+ }) {
119
+ return f(
120
+ "flex size-[var(--process-flow-marker-size)] shrink-0 items-center justify-center rounded-full border text-xs font-semibold tabular-nums transition-colors [&_svg]:size-4",
121
+ a === "compact" && "text-[0.7rem] [&_svg]:size-3",
122
+ "shadow-[0_0_0_0.25rem_var(--background)]",
123
+ r && "ring-4 ring-primary/20",
124
+ $[l]
125
+ );
126
+ }
127
+ function ne({
128
+ layout: r,
129
+ isSelected: a,
130
+ status: l
131
+ }) {
132
+ return f(
133
+ "block max-w-full truncate font-medium text-current",
134
+ r === "linear" && a && l === "completed" && "text-positive",
135
+ r === "linear" && a && l !== "completed" && l !== "error" && "text-primary"
136
+ );
137
+ }
138
+ function P({
139
+ item: r,
140
+ isSelected: a,
141
+ onStepSelect: l,
142
+ descriptionVisibility: t,
143
+ size: n,
144
+ layout: o,
145
+ contentLayout: m
146
+ }) {
147
+ const { step: d, stepIndex: p, status: e } = r, c = e === "disabled" || d.selectable === !1, h = F(d, e, p + 1), u = t === "visible" ? "visible" : "auto", v = le({
148
+ contentLayout: m,
149
+ onStepSelect: l,
150
+ isDisabled: c,
151
+ size: n,
152
+ status: e
153
+ }), g = /* @__PURE__ */ s(
154
+ "span",
155
+ {
156
+ "aria-hidden": "true",
157
+ className: ie({
158
+ isSelected: a,
159
+ size: n,
160
+ status: e
161
+ }),
162
+ "data-slot": "process-flow-marker",
163
+ children: re(e, p + 1)
164
+ }
165
+ ), x = /* @__PURE__ */ w(
166
+ "span",
167
+ {
168
+ "data-slot": "process-flow-text",
169
+ "data-text-visibility": u,
170
+ className: f(
171
+ "flex min-w-0 flex-col gap-0.5",
172
+ m === "stacked" && "w-full items-center",
173
+ m === "anchored" && "pointer-events-none absolute left-1/2 top-[calc(50%+var(--process-flow-marker-size)/2+0.375rem)] w-max max-w-[calc(var(--process-flow-step-min-width)-0.5rem)] -translate-x-1/2 items-center px-1"
174
+ ),
175
+ children: [
176
+ /* @__PURE__ */ s("span", { className: ne({ layout: o, isSelected: a, status: e }), "data-slot": "process-flow-label", children: d.label }),
177
+ t !== "hidden" && d.description ? /* @__PURE__ */ s(
178
+ "span",
179
+ {
180
+ className: "line-clamp-2 text-xs leading-snug text-muted-foreground",
181
+ "data-description-visibility": t,
182
+ "data-slot": "process-flow-description",
183
+ children: d.description
184
+ }
185
+ ) : null,
186
+ /* @__PURE__ */ w("span", { className: "sr-only", children: [
187
+ "Status: ",
188
+ K[e]
189
+ ] })
190
+ ]
191
+ }
192
+ ), b = /* @__PURE__ */ w(V, { children: [
193
+ g,
194
+ x
195
+ ] });
196
+ return l ? /* @__PURE__ */ s(
197
+ "button",
198
+ {
199
+ type: "button",
200
+ "aria-current": e === "active" ? "step" : void 0,
201
+ "aria-invalid": e === "error" || void 0,
202
+ "aria-label": h,
203
+ "aria-pressed": a,
204
+ className: v,
205
+ "data-selected": a || void 0,
206
+ "data-status": e,
207
+ disabled: c,
208
+ onClick: (_) => l(d, {
209
+ nativeEvent: _,
210
+ status: e,
211
+ stepIndex: p
212
+ }),
213
+ children: b
214
+ }
215
+ ) : /* @__PURE__ */ s(
216
+ "div",
217
+ {
218
+ "aria-current": e === "active" ? "step" : void 0,
219
+ "aria-disabled": c || void 0,
220
+ "aria-invalid": e === "error" || void 0,
221
+ "aria-label": h,
222
+ className: v,
223
+ "data-selected": a || void 0,
224
+ "data-status": e,
225
+ children: b
226
+ }
227
+ );
228
+ }
229
+ function ce({
230
+ steps: r,
231
+ selectedStepId: a,
232
+ onStepSelect: l,
233
+ size: t,
234
+ showDescriptions: n
235
+ }) {
236
+ const o = r.map((e, c) => E(e, c, "horizontal")), m = N(o), d = S(n), p = {
237
+ "--process-flow-count": r.length,
238
+ "--process-flow-step-min-width-base": H[t],
239
+ "--process-flow-step-min-width-responsive": L[t],
240
+ "--process-flow-step-min-width-squeezed": D[t],
241
+ "--process-flow-step-min-width-mini": G[t],
242
+ "--process-flow-row-min-height-base": k[t],
243
+ "--process-flow-row-min-height-responsive": I[t],
244
+ "--process-flow-row-min-height-squeezed": y[t],
245
+ "--process-flow-row-min-height-mini": R[t],
246
+ "--process-flow-marker-size-base": T[t],
247
+ "--process-flow-marker-size-responsive": C[t],
248
+ "--process-flow-marker-size-squeezed": A[t],
249
+ "--process-flow-marker-size-mini": M[t]
250
+ };
251
+ return /* @__PURE__ */ s("div", { className: "overflow-hidden px-3 py-4", "data-slot": "process-flow-viewport", style: p, children: /* @__PURE__ */ w(
252
+ "ol",
253
+ {
254
+ className: "relative grid min-w-0 min-h-[var(--process-flow-row-min-height)] list-none p-0",
255
+ "data-slot": "process-flow-list",
256
+ style: {
257
+ gridTemplateColumns: "repeat(var(--process-flow-count), minmax(0, 1fr))"
258
+ },
259
+ children: [
260
+ r.length > 1 ? /* @__PURE__ */ s(
261
+ "li",
262
+ {
263
+ "aria-hidden": "true",
264
+ className: "absolute top-[calc(var(--process-flow-marker-size)/2)] h-0.5 -translate-y-1/2 rounded-full bg-muted",
265
+ style: se()
266
+ }
267
+ ) : null,
268
+ m.map((e, c) => /* @__PURE__ */ s(
269
+ "li",
270
+ {
271
+ "aria-hidden": "true",
272
+ className: f(
273
+ "absolute top-[calc(var(--process-flow-marker-size)/2)] h-0.5 -translate-y-1/2 rounded-full transition-colors",
274
+ e.status === "completed" && "bg-positive",
275
+ e.status === "active" && "bg-primary",
276
+ e.status === "error" && "bg-destructive",
277
+ e.status === "pending" && "bg-muted",
278
+ e.status === "disabled" && "bg-border"
279
+ ),
280
+ style: te(c, r.length)
281
+ },
282
+ e.id
283
+ )),
284
+ o.map((e) => /* @__PURE__ */ s(
285
+ "li",
286
+ {
287
+ className: "relative z-[1] flex min-w-0 items-start justify-center",
288
+ "data-slot": "process-flow-item",
289
+ children: /* @__PURE__ */ s(
290
+ P,
291
+ {
292
+ item: e,
293
+ contentLayout: "stacked",
294
+ descriptionVisibility: d,
295
+ isSelected: a === e.step.id,
296
+ layout: "linear",
297
+ onStepSelect: l,
298
+ size: t
299
+ }
300
+ )
301
+ },
302
+ e.step.id
303
+ ))
304
+ ]
305
+ }
306
+ ) });
307
+ }
308
+ function de({
309
+ steps: r,
310
+ selectedStepId: a,
311
+ onStepSelect: l,
312
+ size: t,
313
+ showDescriptions: n
314
+ }) {
315
+ const o = r.map((e, c) => E(e, c, "vertical")), m = N(o), d = S(n), p = {
316
+ "--process-flow-count": r.length,
317
+ "--process-flow-row-min-height-base": k[t],
318
+ "--process-flow-row-min-height-responsive": I[t],
319
+ "--process-flow-row-min-height-squeezed": y[t],
320
+ "--process-flow-row-min-height-mini": R[t],
321
+ "--process-flow-marker-size-base": T[t],
322
+ "--process-flow-marker-size-responsive": C[t],
323
+ "--process-flow-marker-size-squeezed": A[t],
324
+ "--process-flow-marker-size-mini": M[t]
325
+ };
326
+ return /* @__PURE__ */ s("div", { className: "overflow-x-auto px-3 py-3", "data-slot": "process-flow-viewport", style: p, children: /* @__PURE__ */ w(
327
+ "ol",
328
+ {
329
+ className: "relative grid min-h-[calc(var(--process-flow-count)*var(--process-flow-row-min-height))] min-w-72 list-none p-0",
330
+ "data-slot": "process-flow-list",
331
+ style: {
332
+ gridTemplateRows: "repeat(var(--process-flow-count), minmax(var(--process-flow-row-min-height), auto))"
333
+ },
334
+ children: [
335
+ r.length > 1 ? /* @__PURE__ */ s(
336
+ "li",
337
+ {
338
+ "aria-hidden": "true",
339
+ className: "absolute left-[calc(var(--process-flow-marker-size)/2)] w-0.5 -translate-x-1/2 rounded-full bg-muted",
340
+ style: ae()
341
+ }
342
+ ) : null,
343
+ m.map((e, c) => /* @__PURE__ */ s(
344
+ "li",
345
+ {
346
+ "aria-hidden": "true",
347
+ className: f(
348
+ "absolute left-[calc(var(--process-flow-marker-size)/2)] w-0.5 -translate-x-1/2 rounded-full transition-colors",
349
+ e.status === "completed" && "bg-positive",
350
+ e.status === "active" && "bg-primary",
351
+ e.status === "error" && "bg-destructive",
352
+ e.status === "pending" && "bg-muted",
353
+ e.status === "disabled" && "bg-border"
354
+ ),
355
+ style: oe(c, r.length)
356
+ },
357
+ e.id
358
+ )),
359
+ o.map((e) => /* @__PURE__ */ s("li", { className: "relative z-[1] flex min-w-0 items-center", "data-slot": "process-flow-item", children: /* @__PURE__ */ s(
360
+ P,
361
+ {
362
+ item: e,
363
+ contentLayout: "inline",
364
+ descriptionVisibility: d,
365
+ isSelected: a === e.step.id,
366
+ layout: "linear",
367
+ onStepSelect: l,
368
+ size: t
369
+ }
370
+ ) }, e.step.id))
371
+ ]
372
+ }
373
+ ) });
374
+ }
375
+ function we({
376
+ steps: r,
377
+ connections: a,
378
+ selectedStepId: l,
379
+ onStepSelect: t,
380
+ orientation: n = "horizontal",
381
+ size: o = "default",
382
+ showDescriptions: m,
383
+ className: d,
384
+ style: p,
385
+ "aria-label": e = "Process flow",
386
+ ...c
387
+ }) {
388
+ if (r.length === 0)
389
+ return null;
390
+ const h = a || z(r) ? "branching" : "linear";
391
+ if (h === "linear" && n === "horizontal")
392
+ return /* @__PURE__ */ s(
393
+ "nav",
394
+ {
395
+ "aria-label": e,
396
+ className: f("w-full min-w-0", d),
397
+ "data-orientation": n,
398
+ "data-slot": "process-flow",
399
+ "data-size": o,
400
+ style: p,
401
+ ...c,
402
+ children: /* @__PURE__ */ s(
403
+ ce,
404
+ {
405
+ steps: r,
406
+ selectedStepId: l,
407
+ onStepSelect: t,
408
+ showDescriptions: m,
409
+ size: o
410
+ }
411
+ )
412
+ }
413
+ );
414
+ if (h === "linear" && n === "vertical")
415
+ return /* @__PURE__ */ s(
416
+ "nav",
417
+ {
418
+ "aria-label": e,
419
+ className: f("w-full min-w-0", d),
420
+ "data-orientation": n,
421
+ "data-slot": "process-flow",
422
+ "data-size": o,
423
+ style: p,
424
+ ...c,
425
+ children: /* @__PURE__ */ s(
426
+ de,
427
+ {
428
+ steps: r,
429
+ selectedStepId: l,
430
+ onStepSelect: t,
431
+ showDescriptions: m,
432
+ size: o
433
+ }
434
+ )
435
+ }
436
+ );
437
+ const u = r.map((i, O) => E(i, O, n)), v = Math.max(...u.map((i) => i.row + 1), 1), g = Math.max(...u.map((i) => i.column + 1), 1), x = N(u, a), b = S(m), _ = {
438
+ "--process-flow-columns": g,
439
+ "--process-flow-rows": v,
440
+ "--process-flow-step-min-width-base": H[o],
441
+ "--process-flow-step-min-width-responsive": L[o],
442
+ "--process-flow-step-min-width-squeezed": D[o],
443
+ "--process-flow-step-min-width-mini": G[o],
444
+ "--process-flow-row-min-height-base": k[o],
445
+ "--process-flow-row-min-height-responsive": I[o],
446
+ "--process-flow-row-min-height-squeezed": y[o],
447
+ "--process-flow-row-min-height-mini": R[o],
448
+ "--process-flow-gap-base": J[o],
449
+ "--process-flow-gap-responsive": X[o],
450
+ "--process-flow-gap-squeezed": Y[o],
451
+ "--process-flow-gap-mini": ee[o],
452
+ "--process-flow-marker-size-base": T[o],
453
+ "--process-flow-marker-size-responsive": C[o],
454
+ "--process-flow-marker-size-squeezed": A[o],
455
+ "--process-flow-marker-size-mini": M[o]
456
+ };
457
+ return /* @__PURE__ */ s(
458
+ "nav",
459
+ {
460
+ "aria-label": e,
461
+ className: f("w-full min-w-0", d),
462
+ "data-orientation": n,
463
+ "data-slot": "process-flow",
464
+ "data-size": o,
465
+ style: p,
466
+ ...c,
467
+ children: /* @__PURE__ */ s("div", { className: "overflow-x-auto py-2", "data-slot": "process-flow-viewport", style: _, children: /* @__PURE__ */ w(
468
+ "div",
469
+ {
470
+ className: "relative min-w-[calc(var(--process-flow-columns)*var(--process-flow-step-min-width))] min-h-[calc(var(--process-flow-rows)*var(--process-flow-row-min-height))]",
471
+ "data-slot": "process-flow-canvas",
472
+ children: [
473
+ /* @__PURE__ */ s(
474
+ "svg",
475
+ {
476
+ "aria-hidden": "true",
477
+ className: "pointer-events-none absolute inset-0 z-0 size-full overflow-visible",
478
+ preserveAspectRatio: "none",
479
+ viewBox: "0 0 100 100",
480
+ children: x.map((i) => /* @__PURE__ */ s(
481
+ "path",
482
+ {
483
+ className: f(
484
+ "fill-none stroke-2 transition-colors",
485
+ B[i.status],
486
+ i.status === "disabled" && "opacity-60"
487
+ ),
488
+ d: j(i, v, g),
489
+ "data-status": i.status,
490
+ strokeLinecap: "round",
491
+ vectorEffect: "non-scaling-stroke"
492
+ },
493
+ i.id
494
+ ))
495
+ }
496
+ ),
497
+ /* @__PURE__ */ s(
498
+ "ol",
499
+ {
500
+ className: "relative z-[1] grid min-h-[inherit] list-none p-0",
501
+ "data-slot": "process-flow-list",
502
+ style: {
503
+ gap: "var(--process-flow-gap)",
504
+ gridTemplateColumns: "repeat(var(--process-flow-columns), minmax(var(--process-flow-step-min-width), 1fr))",
505
+ gridTemplateRows: "repeat(var(--process-flow-rows), minmax(var(--process-flow-row-min-height), auto))"
506
+ },
507
+ children: u.map((i) => /* @__PURE__ */ s(
508
+ "li",
509
+ {
510
+ className: "flex min-w-0 items-center justify-center",
511
+ "data-slot": "process-flow-item",
512
+ style: {
513
+ gridColumn: i.column + 1,
514
+ gridRow: i.row + 1
515
+ },
516
+ children: /* @__PURE__ */ s(
517
+ P,
518
+ {
519
+ item: i,
520
+ contentLayout: "anchored",
521
+ descriptionVisibility: b,
522
+ isSelected: l === i.step.id,
523
+ layout: "branching",
524
+ onStepSelect: t,
525
+ size: o
526
+ }
527
+ )
528
+ },
529
+ i.step.id
530
+ ))
531
+ }
532
+ )
533
+ ]
534
+ }
535
+ ) })
536
+ }
537
+ );
538
+ }
539
+ export {
540
+ ge as PROCESS_FLOW_STEP_STATUSES,
541
+ we as ProcessFlow
542
+ };
543
+ //# sourceMappingURL=ProcessFlow.js.map