@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.
- package/README.md +84 -37
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +140 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +126 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +341 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.js +43 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +154 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.js +44 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +136 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +389 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +54 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +96 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js +58 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js +421 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +177 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/autoFill.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/autoFill.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/autoFill.js +41 -0
- package/dist/components/composed/PlateMapEditor/autoFill.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs +4 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.js +103 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/helpers.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/helpers.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/helpers.js +11 -0
- package/dist/components/composed/PlateMapEditor/helpers.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.js +56 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.js.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.cjs +2 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.cjs.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.js +543 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.js.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.cjs +2 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.cjs.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.js +84 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.js.map +1 -0
- package/dist/components/ui/accordion.cjs +1 -1
- package/dist/components/ui/accordion.cjs.map +1 -1
- package/dist/components/ui/accordion.js +1 -1
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/badge.cjs +1 -1
- package/dist/components/ui/badge.cjs.map +1 -1
- package/dist/components/ui/badge.js +18 -18
- package/dist/components/ui/badge.js.map +1 -1
- package/dist/components/ui/button.cjs +1 -1
- package/dist/components/ui/button.cjs.map +1 -1
- package/dist/components/ui/button.js +16 -16
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/calendar.cjs +1 -1
- package/dist/components/ui/calendar.cjs.map +1 -1
- package/dist/components/ui/calendar.js +5 -5
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/card.cjs +1 -1
- package/dist/components/ui/card.cjs.map +1 -1
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/checkbox.cjs +1 -1
- package/dist/components/ui/checkbox.cjs.map +1 -1
- package/dist/components/ui/checkbox.js +9 -9
- package/dist/components/ui/checkbox.js.map +1 -1
- package/dist/components/ui/combobox.cjs +1 -1
- package/dist/components/ui/combobox.cjs.map +1 -1
- package/dist/components/ui/combobox.js +5 -5
- package/dist/components/ui/combobox.js.map +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs +2 -0
- package/dist/components/ui/data-table/data-table-group.cjs.map +1 -0
- package/dist/components/ui/data-table/data-table-group.js +118 -0
- package/dist/components/ui/data-table/data-table-group.js.map +1 -0
- package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.js +22 -22
- package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
- package/dist/components/ui/data-table/data-table.cjs +1 -1
- package/dist/components/ui/data-table/data-table.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table.js +567 -316
- package/dist/components/ui/data-table/data-table.js.map +1 -1
- package/dist/components/ui/dialog.cjs +1 -1
- package/dist/components/ui/dialog.cjs.map +1 -1
- package/dist/components/ui/dialog.js +13 -13
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/input-group.cjs +1 -1
- package/dist/components/ui/input-group.cjs.map +1 -1
- package/dist/components/ui/input-group.js +29 -29
- package/dist/components/ui/input-group.js.map +1 -1
- package/dist/components/ui/input-otp.cjs +1 -1
- package/dist/components/ui/input-otp.cjs.map +1 -1
- package/dist/components/ui/input-otp.js +10 -10
- package/dist/components/ui/input-otp.js.map +1 -1
- package/dist/components/ui/input.cjs +1 -1
- package/dist/components/ui/input.cjs.map +1 -1
- package/dist/components/ui/input.js +7 -7
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/item.cjs +1 -1
- package/dist/components/ui/item.cjs.map +1 -1
- package/dist/components/ui/item.js +17 -17
- package/dist/components/ui/item.js.map +1 -1
- package/dist/components/ui/navigation-menu.cjs +1 -1
- package/dist/components/ui/navigation-menu.cjs.map +1 -1
- package/dist/components/ui/navigation-menu.js +24 -24
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/popover.cjs +2 -0
- package/dist/components/ui/popover.cjs.map +1 -0
- package/dist/components/ui/popover.js +45 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/radio-group.cjs +1 -1
- package/dist/components/ui/radio-group.cjs.map +1 -1
- package/dist/components/ui/radio-group.js +16 -16
- package/dist/components/ui/radio-group.js.map +1 -1
- package/dist/components/ui/scroll-area.cjs +1 -1
- package/dist/components/ui/scroll-area.cjs.map +1 -1
- package/dist/components/ui/scroll-area.js +6 -6
- package/dist/components/ui/scroll-area.js.map +1 -1
- package/dist/components/ui/select.cjs +1 -1
- package/dist/components/ui/select.cjs.map +1 -1
- package/dist/components/ui/select.js +48 -48
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/slider.cjs +1 -1
- package/dist/components/ui/slider.cjs.map +1 -1
- package/dist/components/ui/slider.js +22 -22
- package/dist/components/ui/slider.js.map +1 -1
- package/dist/components/ui/switch.cjs +1 -1
- package/dist/components/ui/switch.cjs.map +1 -1
- package/dist/components/ui/switch.js +14 -14
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/table.cjs +1 -1
- package/dist/components/ui/table.cjs.map +1 -1
- package/dist/components/ui/table.js +2 -2
- package/dist/components/ui/table.js.map +1 -1
- package/dist/components/ui/tabs.cjs +1 -1
- package/dist/components/ui/tabs.cjs.map +1 -1
- package/dist/components/ui/tabs.js +9 -9
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/components/ui/textarea.cjs +1 -1
- package/dist/components/ui/textarea.cjs.map +1 -1
- package/dist/components/ui/textarea.js +6 -6
- package/dist/components/ui/textarea.js.map +1 -1
- package/dist/components/ui/toggle.cjs +1 -1
- package/dist/components/ui/toggle.cjs.map +1 -1
- package/dist/components/ui/toggle.js +13 -13
- package/dist/components/ui/toggle.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +830 -3
- package/dist/index.js +649 -593
- package/dist/index.js.map +1 -1
- package/dist/index.tailwind.css +1 -1
- package/dist/utils/colors.cjs +1 -1
- package/dist/utils/colors.cjs.map +1 -1
- package/dist/utils/colors.js +43 -21
- package/dist/utils/colors.js.map +1 -1
- 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":"wNA8EMA,EAAoE,CACxE,QAAS,wBACT,OAAQ,kBACR,UAAW,kBACX,MAAO,mBACP,SAAU,uBACZ,EAEMC,EAA+D,CACnE,QAAS,oDACT,OAAQ,oDACR,UAAW,8CACX,MAAO,oDACP,SAAU,8CACZ,EAEMC,EAAmE,CACvE,QAAS,6BACT,OAAQ,iBACR,UAAW,kBACX,MAAO,qBACP,SAAU,eACZ,EAEMC,EAAkD,CACtD,QAAS,QACT,QAAS,QACX,EAEMC,EAA6D,CACjE,QAAS,OACT,QAAS,MACX,EAEMC,EAA2D,CAC/D,QAAS,SACT,QAAS,SACX,EAEMC,EAAuD,CAC3D,QAAS,UACT,QAAS,QACX,EAEMC,EAAkD,CACtD,QAAS,SACT,QAAS,SACX,EAEMC,EAA6D,CACjE,QAAS,SACT,QAAS,MACX,EAEMC,EAA2D,CAC/D,QAAS,SACT,QAAS,SACX,EAEMC,EAAuD,CAC3D,QAAS,SACT,QAAS,MACX,EAEMC,EAA4C,CAChD,QAAS,UACT,QAAS,SACX,EAEMC,EAAuD,CAC3D,QAAS,WACT,QAAS,UACX,EAEMC,EAAqD,CACzD,QAAS,SACT,QAAS,UACX,EAEMC,EAAiD,CACrD,QAAS,WACT,QAAS,SACX,EAEMC,EAAsD,CAC1D,QAAS,SACT,QAAS,SACX,EAEMC,EAAiE,CACrE,QAAS,OACT,QAAS,QACX,EAEMC,EAA+D,CACnE,QAAS,SACT,QAAS,SACX,EAEMC,EAA2D,CAC/D,QAAS,UACT,QAAS,UACX,EAEA,SAASC,EAAiBC,EAA+BC,EAAoB,CAC3E,OAAID,IAAW,YACNE,EAAAA,IAACC,EAAAA,UAAA,CAAU,cAAY,MAAA,CAAO,EAGnCH,IAAW,QACNE,EAAAA,IAACE,EAAAA,kBAAA,CAAkB,cAAY,MAAA,CAAO,EAG3CJ,IAAW,WACNE,EAAAA,IAACG,EAAAA,SAAA,CAAS,cAAY,MAAA,CAAO,EAGlCL,IAAW,SACNE,EAAAA,IAACI,EAAAA,QAAA,CAAQ,cAAY,MAAA,CAAO,EAG9BL,CACT,CAEA,SAASM,EAAsBC,EAAeC,EAA8B,CAC1E,MAAO,CACL,KAAM,SAAUD,EAAQ,IAAOC,EAAS,GAAG,6CAC3C,MAAO,QAAS,EAAIA,EAAS,GAAG,sCAAA,CAEpC,CAEA,SAASC,EAAwBF,EAAeC,EAA8B,CAC5E,MAAO,CACL,OAAQ,QAAS,EAAIA,EAAS,GAAG,uCACjC,IAAK,SAAUD,EAAQ,IAAOC,EAAS,GAAG,4CAAA,CAE9C,CAEA,SAASE,GAAwC,CAC/C,MAAMC,EAAQ,yFAEd,MAAO,CACL,KAAMA,EACN,MAAOA,CAAA,CAEX,CAEA,SAASC,GAAsC,CAC7C,MAAMD,EAAQ,yFAEd,MAAO,CACL,OAAQA,EACR,IAAKA,CAAA,CAET,CAEA,SAASE,EAAwB,CAAE,cAAAC,EAAe,aAAAC,EAAc,WAAAC,EAAY,KAAAC,EAAM,OAAAlB,GAAmC,CACnH,OAAOmB,EAAAA,GACL,2IACAJ,IAAkB,UAAY,wCAC9BA,IAAkB,WAAa,0CAC/BA,IAAkB,YAAc,mEAChCG,IAAS,YAAcH,IAAkB,SAAW,QAAU,WAC9DC,GACE,CAACC,GACDE,EAAAA,GAAG,uCAAwCJ,IAAkB,YAAc,uBAAuB,EACpGC,GAAgBC,GAAc,qBAC9BrC,EAA2BoB,CAAM,CAAA,CAErC,CAEA,SAASoB,EAAmB,CAC1B,WAAAC,EACA,KAAAH,EACA,OAAAlB,CACF,EAAoE,CAClE,OAAOmB,EAAAA,GACL,2KACAD,IAAS,WAAa,+BACtB,2CACAG,GAAc,yBACdxC,EAAsBmB,CAAM,CAAA,CAEhC,CAEA,SAASsB,EAAkB,CACzB,OAAAC,EACA,WAAAF,EACA,OAAArB,CACF,EAAsE,CACpE,OAAOmB,EAAAA,GACL,qDACAI,IAAW,UAAYF,GAAcrB,IAAW,aAAe,gBAC/DuB,IAAW,UAAYF,GAAcrB,IAAW,aAAeA,IAAW,SAAW,cAAA,CAEzF,CAEA,SAASwB,EAAuB,CAC9B,KAAAC,EACA,WAAAJ,EACA,aAAAL,EACA,sBAAAU,EACA,KAAAR,EACA,OAAAK,EACA,cAAAR,CACF,EAQG,CACD,KAAM,CAAE,KAAAY,EAAM,UAAAC,EAAW,OAAA5B,CAAA,EAAWyB,EAC9BR,EAAajB,IAAW,YAAc2B,EAAK,aAAe,GAC1DE,EAAkBC,EAAAA,uBAAuBH,EAAM3B,EAAQ4B,EAAY,CAAC,EACpEG,EAAiBL,IAA0B,UAAY,UAAY,OACnEM,EAAmBlB,EAAwB,CAE/C,cAAAC,EACA,aAAAC,EACA,WAAAC,EAEA,KAAAC,EACA,OAAAlB,CAAA,CACD,EACKiC,EACJ/B,EAAAA,IAAC,OAAA,CACC,cAAY,OACZ,UAAWkB,EAAmB,CAC5B,WAAAC,EACA,KAAAH,EACA,OAAAlB,CAAA,CACD,EACD,YAAU,sBAET,SAAAD,EAAiBC,EAAQ4B,EAAY,CAAC,CAAA,CAAA,EAGrCM,EACJC,EAAAA,KAAC,OAAA,CACC,YAAU,oBACV,uBAAsBJ,EACtB,UAAWZ,EAAAA,GACT,gCACAJ,IAAkB,WAAa,sBAC/BA,IAAkB,YAChB,mMAAA,EAGJ,SAAA,CAAAb,EAAAA,IAAC,OAAA,CAAK,UAAWoB,EAAkB,CAAE,OAAAC,EAAQ,WAAAF,EAAY,OAAArB,CAAA,CAAQ,EAAG,YAAU,qBAC3E,SAAA2B,EAAK,KAAA,CACR,EACCD,IAA0B,UAAYC,EAAK,YAC1CzB,EAAAA,IAAC,OAAA,CACC,UAAU,0DACV,8BAA6BwB,EAC7B,YAAU,2BAET,SAAAC,EAAK,WAAA,CAAA,EAEN,KACJQ,EAAAA,KAAC,OAAA,CAAK,UAAU,UAAU,SAAA,CAAA,WAASC,EAAAA,cAAcpC,CAAM,CAAA,CAAA,CAAE,CAAA,CAAA,CAAA,EAGvDqC,EACJF,EAAAA,KAAAG,EAAAA,SAAA,CACG,SAAA,CAAAL,EACAC,CAAA,EACH,EAGF,OAAKlB,EAiBHd,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,eAAcF,IAAW,SAAW,OAAS,OAC7C,eAAcA,IAAW,SAAW,OACpC,aAAY6B,EACZ,eAAcR,EACd,UAAWW,EACX,gBAAeX,GAAc,OAC7B,cAAarB,EACb,SAAUiB,EACV,QAAUsB,GACRvB,EAAaW,EAAM,CACjB,YAAAY,EACA,OAAAvC,EACA,UAAA4B,CAAA,CACD,EAGF,SAAAS,CAAA,CAAA,EAjCDnC,EAAAA,IAAC,MAAA,CACC,eAAcF,IAAW,SAAW,OAAS,OAC7C,gBAAeiB,GAAc,OAC7B,eAAcjB,IAAW,SAAW,OACpC,aAAY6B,EACZ,UAAWG,EACX,gBAAeX,GAAc,OAC7B,cAAarB,EAEZ,SAAAqC,CAAA,CAAA,CA2BT,CAEA,SAASG,EAAsB,CAC7B,MAAAC,EACA,eAAAC,EACA,aAAA1B,EACA,KAAAE,EACA,iBAAAyB,CACF,EAEG,CACD,MAAMC,EAAkBH,EAAM,IAAI,CAACd,EAAMnB,IAAUqC,EAAAA,aAAalB,EAAMnB,EAAO,YAAY,CAAC,EACpFsC,EAAsBC,EAAAA,mBAAmBH,CAAe,EACxDlB,EAAwBsB,EAAAA,yBAAyBL,CAAgB,EACjEM,EAAY,CAChB,uBAAwBR,EAAM,OAC9B,qCAAsC1D,EAAemC,CAAI,EACzD,2CAA4ClC,EAA0BkC,CAAI,EAC1E,yCAA0CjC,EAAwBiC,CAAI,EACtE,qCAAsChC,EAAoBgC,CAAI,EAC9D,qCAAsC/B,EAAe+B,CAAI,EACzD,2CAA4C9B,EAA0B8B,CAAI,EAC1E,yCAA0C7B,EAAwB6B,CAAI,EACtE,qCAAsC5B,EAAoB4B,CAAI,EAC9D,kCAAmCvB,EAAmBuB,CAAI,EAC1D,wCAAyCtB,EAA8BsB,CAAI,EAC3E,sCAAuCrB,EAA4BqB,CAAI,EACvE,kCAAmCpB,EAAwBoB,CAAI,CAAA,EAGjE,aACG,MAAA,CAAI,UAAU,4BAA4B,YAAU,wBAAwB,MAAO+B,EAClF,SAAAd,EAAAA,KAAC,KAAA,CACC,UAAU,iFACV,YAAU,oBACV,MAAO,CACL,oBAAqB,mDAAA,EAGtB,SAAA,CAAAM,EAAM,OAAS,EACdvC,EAAAA,IAAC,KAAA,CACC,cAAY,OACZ,UAAU,sGACV,MAAOS,EAAA,CAAuB,CAAA,EAE9B,KACHmC,EAAoB,IAAI,CAACI,EAAY1C,IACpCN,EAAAA,IAAC,KAAA,CAEC,cAAY,OACZ,UAAWiB,EAAAA,GACT,+GACA+B,EAAW,SAAW,aAAe,cACrCA,EAAW,SAAW,UAAY,aAClCA,EAAW,SAAW,SAAW,iBACjCA,EAAW,SAAW,WAAa,WACnCA,EAAW,SAAW,YAAc,WAAA,EAEtC,MAAO3C,EAAsBC,EAAOiC,EAAM,MAAM,CAAA,EAV3CS,EAAW,EAAA,CAYnB,EACAN,EAAgB,IAAKnB,GACpBvB,EAAAA,IAAC,KAAA,CAEC,UAAU,yDACV,YAAU,oBAEV,SAAAA,EAAAA,IAACsB,EAAA,CACC,KAAAC,EACA,cAAc,UACd,sBAAAC,EACA,WAAYgB,IAAmBjB,EAAK,KAAK,GACzC,OAAO,SACP,aAAAT,EACA,KAAAE,CAAA,CAAA,CACF,EAZKO,EAAK,KAAK,EAAA,CAclB,CAAA,CAAA,CAAA,EAEL,CAEJ,CAEA,SAAS0B,EAAoB,CAC3B,MAAAV,EACA,eAAAC,EACA,aAAA1B,EACA,KAAAE,EACA,iBAAAyB,CACF,EAEG,CACD,MAAMC,EAAkBH,EAAM,IAAI,CAACd,EAAMnB,IAAUqC,EAAAA,aAAalB,EAAMnB,EAAO,UAAU,CAAC,EAClFsC,EAAsBC,EAAAA,mBAAmBH,CAAe,EACxDlB,EAAwBsB,EAAAA,yBAAyBL,CAAgB,EACjEM,EAAY,CAChB,uBAAwBR,EAAM,OAC9B,qCAAsCtD,EAAe+B,CAAI,EACzD,2CAA4C9B,EAA0B8B,CAAI,EAC1E,yCAA0C7B,EAAwB6B,CAAI,EACtE,qCAAsC5B,EAAoB4B,CAAI,EAC9D,kCAAmCvB,EAAmBuB,CAAI,EAC1D,wCAAyCtB,EAA8BsB,CAAI,EAC3E,sCAAuCrB,EAA4BqB,CAAI,EACvE,kCAAmCpB,EAAwBoB,CAAI,CAAA,EAGjE,aACG,MAAA,CAAI,UAAU,4BAA4B,YAAU,wBAAwB,MAAO+B,EAClF,SAAAd,EAAAA,KAAC,KAAA,CACC,UAAU,kHACV,YAAU,oBACV,MAAO,CACL,iBAAkB,qFAAA,EAGnB,SAAA,CAAAM,EAAM,OAAS,EACdvC,EAAAA,IAAC,KAAA,CACC,cAAY,OACZ,UAAU,uGACV,MAAOW,EAAA,CAAqB,CAAA,EAE5B,KACHiC,EAAoB,IAAI,CAACI,EAAY1C,IACpCN,EAAAA,IAAC,KAAA,CAEC,cAAY,OACZ,UAAWiB,EAAAA,GACT,gHACA+B,EAAW,SAAW,aAAe,cACrCA,EAAW,SAAW,UAAY,aAClCA,EAAW,SAAW,SAAW,iBACjCA,EAAW,SAAW,WAAa,WACnCA,EAAW,SAAW,YAAc,WAAA,EAEtC,MAAOxC,EAAwBF,EAAOiC,EAAM,MAAM,CAAA,EAV7CS,EAAW,EAAA,CAYnB,EACAN,EAAgB,IAAKnB,SACnB,KAAA,CAAsB,UAAU,2CAA2C,YAAU,oBACpF,SAAAvB,EAAAA,IAACsB,EAAA,CACC,KAAAC,EACA,cAAc,SACd,sBAAAC,EACA,WAAYgB,IAAmBjB,EAAK,KAAK,GACzC,OAAO,SACP,aAAAT,EACA,KAAAE,CAAA,CAAA,GARKO,EAAK,KAAK,EAUnB,CACD,CAAA,CAAA,CAAA,EAEL,CAEJ,CAEO,SAAS2B,GAAY,CAC1B,MAAAX,EACA,YAAAY,EACA,eAAAX,EACA,aAAA1B,EACA,YAAAsC,EAAc,aACd,KAAApC,EAAO,UACP,iBAAAyB,EACA,UAAAY,EACA,MAAAC,EACA,aAAcC,EAAY,eAC1B,GAAGC,CACL,EAAqB,CACnB,GAAIjB,EAAM,SAAW,EACnB,OAAO,KAGT,MAAMlB,EAA4B8B,GAAeM,EAAAA,oBAAoBlB,CAAK,EAAI,YAAc,SAE5F,GAAIlB,IAAW,UAAY+B,IAAgB,aACzC,OACEpD,EAAAA,IAAC,MAAA,CACC,aAAYuD,EACZ,UAAWtC,EAAAA,GAAG,iBAAkBoC,CAAS,EACzC,mBAAkBD,EAClB,YAAU,eACV,YAAWpC,EACX,MAAAsC,EACC,GAAGE,EAEJ,SAAAxD,EAAAA,IAACsC,EAAA,CACC,MAAAC,EACA,eAAAC,EACA,aAAA1B,EACA,iBAAA2B,EACA,KAAAzB,CAAA,CAAA,CACF,CAAA,EAKN,GAAIK,IAAW,UAAY+B,IAAgB,WACzC,OACEpD,EAAAA,IAAC,MAAA,CACC,aAAYuD,EACZ,UAAWtC,EAAAA,GAAG,iBAAkBoC,CAAS,EACzC,mBAAkBD,EAClB,YAAU,eACV,YAAWpC,EACX,MAAAsC,EACC,GAAGE,EAEJ,SAAAxD,EAAAA,IAACiD,EAAA,CACC,MAAAV,EACA,eAAAC,EACA,aAAA1B,EACA,iBAAA2B,EACA,KAAAzB,CAAA,CAAA,CACF,CAAA,EAKN,MAAM0B,EAAkBH,EAAM,IAAI,CAACd,EAAMnB,IAAUqC,EAAAA,aAAalB,EAAMnB,EAAO8C,CAAW,CAAC,EACnFM,EAAW,KAAK,IAAI,GAAGhB,EAAgB,IAAKjB,GAASA,EAAK,IAAM,CAAC,EAAG,CAAC,EACrEkC,EAAc,KAAK,IAAI,GAAGjB,EAAgB,IAAKjB,GAASA,EAAK,OAAS,CAAC,EAAG,CAAC,EAC3EmB,EAAsBC,EAAAA,mBAAmBH,EAAiBS,CAAW,EACrE3B,EAAwBsB,EAAAA,yBAAyBL,CAAgB,EACjEM,EAAY,CAChB,yBAA0BY,EAC1B,sBAAuBD,EACvB,qCAAsC7E,EAAemC,CAAI,EACzD,2CAA4ClC,EAA0BkC,CAAI,EAC1E,yCAA0CjC,EAAwBiC,CAAI,EACtE,qCAAsChC,EAAoBgC,CAAI,EAC9D,qCAAsC/B,EAAe+B,CAAI,EACzD,2CAA4C9B,EAA0B8B,CAAI,EAC1E,yCAA0C7B,EAAwB6B,CAAI,EACtE,qCAAsC5B,EAAoB4B,CAAI,EAC9D,0BAA2B3B,EAAS2B,CAAI,EACxC,gCAAiC1B,EAAoB0B,CAAI,EACzD,8BAA+BzB,EAAkByB,CAAI,EACrD,0BAA2BxB,EAAcwB,CAAI,EAC7C,kCAAmCvB,EAAmBuB,CAAI,EAC1D,wCAAyCtB,EAA8BsB,CAAI,EAC3E,sCAAuCrB,EAA4BqB,CAAI,EACvE,kCAAmCpB,EAAwBoB,CAAI,CAAA,EAGjE,OACEhB,EAAAA,IAAC,MAAA,CACC,aAAYuD,EACZ,UAAWtC,EAAAA,GAAG,iBAAkBoC,CAAS,EACzC,mBAAkBD,EAClB,YAAU,eACV,YAAWpC,EACX,MAAAsC,EACC,GAAGE,EAEJ,eAAC,MAAA,CAAI,UAAU,uBAAuB,YAAU,wBAAwB,MAAOT,EAC7E,SAAAd,EAAAA,KAAC,MAAA,CACC,UAAU,kKACV,YAAU,sBAEV,SAAA,CAAAjC,EAAAA,IAAC,MAAA,CACC,cAAY,OACZ,UAAU,sEACV,oBAAoB,OACpB,QAAQ,cAEP,SAAA4C,EAAoB,IAAKI,GACxBhD,EAAAA,IAAC,OAAA,CAEC,UAAWiB,EAAAA,GACT,uCACArC,EAA0BoE,EAAW,MAAM,EAC3CA,EAAW,SAAW,YAAc,YAAA,EAEtC,EAAGY,EAAAA,kBAAkBZ,EAAYU,EAAUC,CAAW,EACtD,cAAaX,EAAW,OACxB,cAAc,QACd,aAAa,oBAAA,EATRA,EAAW,EAAA,CAWnB,CAAA,CAAA,EAGHhD,EAAAA,IAAC,KAAA,CACC,UAAU,oDACV,YAAU,oBACV,MAAO,CACL,IAAK,0BACL,oBACE,uFACF,iBAAkB,oFAAA,EAGnB,SAAA0C,EAAgB,IAAKnB,GACpBvB,EAAAA,IAAC,KAAA,CAEC,UAAU,2CACV,YAAU,oBACV,MAAO,CACL,WAAYuB,EAAK,OAAS,EAC1B,QAASA,EAAK,IAAM,CAAA,EAGtB,SAAAvB,EAAAA,IAACsB,EAAA,CACC,KAAAC,EACA,cAAc,WACd,sBAAAC,EACA,WAAYgB,IAAmBjB,EAAK,KAAK,GACzC,OAAO,YACP,aAAAT,EACA,KAAAE,CAAA,CAAA,CACF,EAhBKO,EAAK,KAAK,EAAA,CAkBlB,CAAA,CAAA,CACH,CAAA,CAAA,CACF,CACF,CAAA,CAAA,CAGN"}
|
|
@@ -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
|