@wandelbots/wandelbots-js-react-components 2.34.2 → 2.35.0-pr.feature-replace-forwardref.376.d3a302b

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 (72) hide show
  1. package/README.md +1 -1
  2. package/dist/components/AppHeader.d.ts +34 -0
  3. package/dist/components/AppHeader.d.ts.map +1 -0
  4. package/dist/components/CopyableText.d.ts +3 -2
  5. package/dist/components/CopyableText.d.ts.map +1 -1
  6. package/dist/components/CycleTimer.d.ts +33 -16
  7. package/dist/components/CycleTimer.d.ts.map +1 -1
  8. package/dist/components/DataGrid.d.ts +66 -0
  9. package/dist/components/DataGrid.d.ts.map +1 -0
  10. package/dist/components/LogPanel.d.ts +38 -0
  11. package/dist/components/LogPanel.d.ts.map +1 -0
  12. package/dist/components/LogStore.d.ts +12 -0
  13. package/dist/components/LogStore.d.ts.map +1 -0
  14. package/dist/components/LogViewer.d.ts +46 -0
  15. package/dist/components/LogViewer.d.ts.map +1 -0
  16. package/dist/components/ProgramControl.d.ts +8 -2
  17. package/dist/components/ProgramControl.d.ts.map +1 -1
  18. package/dist/components/ProgramStateIndicator.d.ts +1 -1
  19. package/dist/components/ProgramStateIndicator.d.ts.map +1 -1
  20. package/dist/components/RobotCard.d.ts +103 -0
  21. package/dist/components/RobotCard.d.ts.map +1 -0
  22. package/dist/components/RobotListItem.d.ts +34 -0
  23. package/dist/components/RobotListItem.d.ts.map +1 -0
  24. package/dist/components/RobotSetupReadinessIndicator.d.ts +31 -0
  25. package/dist/components/RobotSetupReadinessIndicator.d.ts.map +1 -0
  26. package/dist/components/RobotSetupReadinessIndicator.test.d.ts +2 -0
  27. package/dist/components/RobotSetupReadinessIndicator.test.d.ts.map +1 -0
  28. package/dist/components/SelectableFab.d.ts +2 -1
  29. package/dist/components/SelectableFab.d.ts.map +1 -1
  30. package/dist/components/TabBar.d.ts +32 -0
  31. package/dist/components/TabBar.d.ts.map +1 -0
  32. package/dist/components/robots/Robot.d.ts +3 -2
  33. package/dist/components/robots/Robot.d.ts.map +1 -1
  34. package/dist/components/robots/manufacturerHomePositions.d.ts +21 -0
  35. package/dist/components/robots/manufacturerHomePositions.d.ts.map +1 -0
  36. package/dist/icons/DropdownArrowIcon.d.ts +3 -0
  37. package/dist/icons/DropdownArrowIcon.d.ts.map +1 -0
  38. package/dist/icons/index.d.ts +1 -0
  39. package/dist/icons/index.d.ts.map +1 -1
  40. package/dist/index.cjs +50 -50
  41. package/dist/index.cjs.map +1 -1
  42. package/dist/index.d.ts +10 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +11381 -9522
  45. package/dist/index.js.map +1 -1
  46. package/dist/themes/createDarkTheme.d.ts.map +1 -1
  47. package/package.json +6 -5
  48. package/src/components/AppHeader.md +84 -0
  49. package/src/components/AppHeader.tsx +199 -0
  50. package/src/components/CopyableText.tsx +70 -73
  51. package/src/components/CycleTimer.tsx +384 -159
  52. package/src/components/DataGrid.tsx +659 -0
  53. package/src/components/LogPanel.tsx +69 -0
  54. package/src/components/LogStore.ts +44 -0
  55. package/src/components/LogViewer.tsx +370 -0
  56. package/src/components/ProgramControl.tsx +27 -12
  57. package/src/components/ProgramStateIndicator.tsx +25 -8
  58. package/src/components/RobotCard.tsx +568 -0
  59. package/src/components/RobotListItem.tsx +150 -0
  60. package/src/components/RobotSetupReadinessIndicator.test.tsx +60 -0
  61. package/src/components/RobotSetupReadinessIndicator.tsx +124 -0
  62. package/src/components/SelectableFab.tsx +14 -15
  63. package/src/components/TabBar.tsx +147 -0
  64. package/src/components/robots/Robot.tsx +5 -2
  65. package/src/components/robots/manufacturerHomePositions.ts +76 -0
  66. package/src/i18n/locales/de/translations.json +8 -1
  67. package/src/i18n/locales/en/translations.json +8 -1
  68. package/src/icons/DropdownArrowIcon.tsx +13 -0
  69. package/src/icons/chevronDown.svg +3 -0
  70. package/src/icons/index.ts +1 -0
  71. package/src/index.ts +14 -0
  72. package/src/themes/createDarkTheme.ts +75 -1
package/README.md CHANGED
@@ -84,7 +84,7 @@ type WandelscriptEditorProps = {
84
84
 
85
85
  #### Theming
86
86
 
87
- The UI components presented in this library will respect the Material UI theme of the application they are rendered within, allowing customization with the [MUI theming system](mui.com/material-ui).
87
+ The UI components presented in this library will respect the Material UI theme of the application they are rendered within, allowing customization with the [MUI theming system](http://mui.com/material-ui).
88
88
 
89
89
  Using the Wandelbots MUI theme
90
90
  To make the components look exactly like they do in the storybook, pass the [Wandelbots MUI theme](https://wandelbotsgmbh.github.io/wandelbots-js-react-components/?path=/docs/theming-wandelbots-mui-theme--docs) to ThemeProvider.
@@ -0,0 +1,34 @@
1
+ import { type SxProps } from "@mui/material";
2
+ import { type ReactNode } from "react";
3
+ export type AppItem = {
4
+ /** Unique identifier for the app */
5
+ id: string;
6
+ /** Display name of the app */
7
+ name: string;
8
+ /** Icon component to display */
9
+ icon: ReactNode;
10
+ /** URL or callback to navigate to the app */
11
+ href?: string;
12
+ /** Click handler for the app */
13
+ onClick?: () => void;
14
+ };
15
+ export type AppHeaderProps = {
16
+ /** Current app icon */
17
+ appIcon: ReactNode;
18
+ /** Current app name */
19
+ appName: string;
20
+ /** List of other available apps */
21
+ apps?: AppItem[];
22
+ /** Callback when an app is selected */
23
+ onAppSelect?: (app: AppItem) => void;
24
+ /** Additional styling */
25
+ sx?: SxProps;
26
+ };
27
+ /**
28
+ * A top navigation header component that displays the current app and provides
29
+ * a dropdown menu to navigate to other apps.
30
+ */
31
+ export declare const AppHeader: ((props: AppHeaderProps) => import("react/jsx-runtime").JSX.Element) & {
32
+ displayName: string;
33
+ };
34
+ //# sourceMappingURL=AppHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../src/components/AppHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,OAAO,EAGb,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAmB,KAAK,SAAS,EAAY,MAAM,OAAO,CAAA;AAIjE,MAAM,MAAM,OAAO,GAAG;IACpB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,gCAAgC;IAChC,IAAI,EAAE,SAAS,CAAA;IACf,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,uBAAuB;IACvB,OAAO,EAAE,SAAS,CAAA;IAClB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,mCAAmC;IACnC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,uCAAuC;IACvC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IACpC,yBAAyB;IACzB,EAAE,CAAC,EAAE,OAAO,CAAA;CACb,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,WACH,cAAc;;CAsJhC,CAAA"}
@@ -1,5 +1,6 @@
1
- export declare const CopyableText: import("react").ForwardRefExoticComponent<{
1
+ export declare const CopyableText: (props: {
2
2
  label?: string;
3
3
  value: string;
4
- } & import("react").RefAttributes<HTMLDivElement>>;
4
+ ref?: React.Ref<HTMLDivElement>;
5
+ }) => import("react/jsx-runtime").JSX.Element;
5
6
  //# sourceMappingURL=CopyableText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyableText.d.ts","sourceRoot":"","sources":["../../src/components/CopyableText.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;YAMX,MAAM;WACP,MAAM;kDA4ElB,CAAA"}
1
+ {"version":3,"file":"CopyableText.d.ts","sourceRoot":"","sources":["../../src/components/CopyableText.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,GAAI,OAAO;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;CAChC,4CA4EA,CAAA"}
@@ -1,13 +1,13 @@
1
1
  export interface CycleTimerProps {
2
2
  /**
3
3
  * Callback that receives the timer control functions:
4
- * - `startNewCycle(maxTimeSeconds, elapsedSeconds?)` - Start a new timer cycle
4
+ * - `startNewCycle(maxTimeSeconds?, elapsedSeconds?)` - Start a new timer cycle (if maxTimeSeconds is omitted, runs as count-up timer)
5
5
  * - `pause()` - Pause the countdown while preserving remaining time
6
6
  * - `resume()` - Resume countdown from where it was paused
7
7
  * - `isPaused()` - Check current pause state
8
8
  */
9
9
  onCycleComplete: (controls: {
10
- startNewCycle: (maxTimeSeconds: number, elapsedSeconds?: number) => void;
10
+ startNewCycle: (maxTimeSeconds?: number, elapsedSeconds?: number) => void;
11
11
  pause: () => void;
12
12
  resume: () => void;
13
13
  isPaused: () => boolean;
@@ -22,17 +22,22 @@ export interface CycleTimerProps {
22
22
  compact?: boolean;
23
23
  /** Additional CSS classes */
24
24
  className?: string;
25
+ /** Whether the timer is in an error state (pauses timer and shows error styling) */
26
+ hasError?: boolean;
25
27
  }
26
28
  /**
27
- * A circular gauge timer component that shows the remaining time of a cycle
29
+ * A circular gauge timer component that shows the remaining time of a cycle or counts up
28
30
  *
29
31
  * Features:
30
32
  * - Circular gauge with 264px diameter and 40px thickness
31
- * - Shows remaining time prominently in the center (60px font)
32
- * - Displays "remaining time" label at top and total time at bottom
33
- * - Automatically counts down and triggers callback when reaching zero
33
+ * - Two modes: count-down (with max time) or count-up (without max time)
34
+ * - Count-down mode: shows remaining time prominently, counts down to zero
35
+ * - Count-up mode: shows elapsed time, gauge progresses in minute steps
36
+ * - Displays appropriate labels based on mode
37
+ * - Automatically counts down/up and triggers callback when reaching zero (count-down only)
34
38
  * - Full timer control: start, pause, resume functionality
35
39
  * - Support for starting with elapsed time (resume mid-cycle)
40
+ * - Error state support: pauses timer and shows error styling (red color)
36
41
  * - Smooth spring-based progress animations for all state transitions
37
42
  * - Fully localized with i18next
38
43
  * - Material-UI theming integration
@@ -44,37 +49,49 @@ export interface CycleTimerProps {
44
49
  * @param variant - Visual variant: "default" (large gauge) or "small" (animated icon with text)
45
50
  * @param compact - For small variant: whether to hide remaining time details
46
51
  * @param className - Additional CSS classes
52
+ * @param hasError - Whether the timer is in an error state (pauses timer and shows error styling)
47
53
  *
48
54
  * Usage:
49
55
  * ```tsx
56
+ * // Count-down timer (with max time)
50
57
  * <CycleTimer
51
58
  * onCycleComplete={(controls) => {
52
- * // Start a 5-minute cycle
59
+ * // Start a 5-minute countdown cycle
53
60
  * controls.startNewCycle(300)
54
61
  *
55
62
  * // Or start a 5-minute cycle with 2 minutes already elapsed
56
63
  * controls.startNewCycle(300, 120)
64
+ * }}
65
+ * onCycleEnd={() => console.log('Cycle completed!')}
66
+ * />
57
67
  *
58
- * // Pause the timer
59
- * controls.pause()
68
+ * // Count-up timer (no max time)
69
+ * <CycleTimer
70
+ * onCycleComplete={(controls) => {
71
+ * // Start count-up timer
72
+ * controls.startNewCycle()
60
73
  *
61
- * // Resume the timer
62
- * controls.resume()
74
+ * // Or start count-up timer with some elapsed time
75
+ * controls.startNewCycle(undefined, 120)
76
+ * }}
77
+ * />
63
78
  *
64
- * // Check if paused
65
- * const paused = controls.isPaused()
79
+ * // Timer with error state
80
+ * <CycleTimer
81
+ * hasError={errorCondition}
82
+ * onCycleComplete={(controls) => {
83
+ * controls.startNewCycle(300)
66
84
  * }}
67
- * onCycleEnd={() => console.log('Cycle completed!')}
68
85
  * />
69
86
  * ```
70
87
  *
71
88
  * Control Functions:
72
- * - `startNewCycle(maxTimeSeconds, elapsedSeconds?)` - Start a new timer cycle
89
+ * - `startNewCycle(maxTimeSeconds?, elapsedSeconds?)` - Start a new timer cycle (omit maxTimeSeconds for count-up mode)
73
90
  * - `pause()` - Pause the countdown while preserving remaining time
74
91
  * - `resume()` - Resume countdown from where it was paused
75
92
  * - `isPaused()` - Check current pause state
76
93
  */
77
- export declare const CycleTimer: (({ onCycleComplete, onCycleEnd, autoStart, variant, compact, className, }: CycleTimerProps) => import("react/jsx-runtime").JSX.Element) & {
94
+ export declare const CycleTimer: (({ onCycleComplete, onCycleEnd, autoStart, variant, compact, className, hasError, }: CycleTimerProps) => import("react/jsx-runtime").JSX.Element) & {
78
95
  displayName: string;
79
96
  };
80
97
  //# sourceMappingURL=CycleTimer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CycleTimer.d.ts","sourceRoot":"","sources":["../../src/components/CycleTimer.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,eAAe,EAAE,CAAC,QAAQ,EAAE;QAC1B,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QACxE,KAAK,EAAE,MAAM,IAAI,CAAA;QACjB,MAAM,EAAE,MAAM,IAAI,CAAA;QAClB,QAAQ,EAAE,MAAM,OAAO,CAAA;KACxB,KAAK,IAAI,CAAA;IACV,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,kCAAkC;IAClC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC7B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,eAAO,MAAM,UAAU,8EAShB,eAAe;;CA2YrB,CAAA"}
1
+ {"version":3,"file":"CycleTimer.d.ts","sourceRoot":"","sources":["../../src/components/CycleTimer.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,eAAe,EAAE,CAAC,QAAQ,EAAE;QAC1B,aAAa,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QACzE,KAAK,EAAE,MAAM,IAAI,CAAA;QACjB,MAAM,EAAE,MAAM,IAAI,CAAA;QAClB,QAAQ,EAAE,MAAM,OAAO,CAAA;KACxB,KAAK,IAAI,CAAA;IACV,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,kCAAkC;IAClC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC7B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,eAAO,MAAM,UAAU,wFAUhB,eAAe;;CA0lBrB,CAAA"}
@@ -0,0 +1,66 @@
1
+ import { Box } from "@mui/material";
2
+ import { type DataGridProps, type GridColDef, type GridRowParams } from "@mui/x-data-grid";
3
+ export interface WandelbotsDataGridProps<T = Record<string, unknown>> {
4
+ /**
5
+ * Array of data items to display in the grid
6
+ */
7
+ data: T[];
8
+ /**
9
+ * Column definitions for the DataGrid
10
+ */
11
+ columns: GridColDef[];
12
+ /**
13
+ * Function to transform data items into DataGrid rows
14
+ * Should return an object with an 'id' field and other fields matching column definitions
15
+ */
16
+ getRowData: (item: T) => Record<string, unknown> & {
17
+ id: string | number;
18
+ };
19
+ /**
20
+ * Callback when a row is clicked
21
+ */
22
+ onRowClick?: (item: T, params: GridRowParams) => void;
23
+ /**
24
+ * Currently selected item (for highlighting)
25
+ */
26
+ selectedItem?: T | null;
27
+ /**
28
+ * Function to get the ID of an item (used for selection highlighting)
29
+ */
30
+ getItemId?: (item: T) => string | number;
31
+ /**
32
+ * Title displayed in the toolbar
33
+ */
34
+ title?: string;
35
+ /**
36
+ * Show item count in title
37
+ * @default true
38
+ */
39
+ showCount?: boolean;
40
+ /**
41
+ * Placeholder text for the search input
42
+ * @default "Search programs"
43
+ */
44
+ searchPlaceholder?: string;
45
+ /**
46
+ * Additional DataGrid props to pass through
47
+ */
48
+ dataGridProps?: Partial<DataGridProps>;
49
+ /**
50
+ * Custom toolbar component to replace the default one
51
+ */
52
+ CustomToolbar?: React.ComponentType;
53
+ /**
54
+ * Select the first item by default
55
+ * @default false
56
+ */
57
+ selectFirstByDefault?: boolean;
58
+ /**
59
+ * Custom sx styles for the root container
60
+ */
61
+ sx?: React.ComponentProps<typeof Box>["sx"];
62
+ }
63
+ export declare const WandelbotsDataGrid: (<T>({ data, columns, getRowData, onRowClick, selectedItem, getItemId, title, showCount, searchPlaceholder, dataGridProps, CustomToolbar, selectFirstByDefault, sx, }: WandelbotsDataGridProps<T>) => import("react/jsx-runtime").JSX.Element) & {
64
+ displayName: string;
65
+ };
66
+ //# sourceMappingURL=DataGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../../src/components/DataGrid.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAiC,MAAM,eAAe,CAAA;AAClE,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,UAAU,EACf,KAAK,aAAa,EAQnB,MAAM,kBAAkB,CAAA;AAKzB,MAAM,WAAW,uBAAuB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAA;IAET;;OAEG;IACH,OAAO,EAAE,UAAU,EAAE,CAAA;IAErB;;;OAGG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAE1E;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IAErD;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAA;IAExC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAEtC;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAEnC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B;;OAEG;IACH,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;CAC5C;AAED,eAAO,MAAM,kBAAkB,IAE1B,CAAC,oKAcC,uBAAuB,CAAC,CAAC,CAAC;;CAmiBhC,CAAA"}
@@ -0,0 +1,38 @@
1
+ import type { SxProps } from "@mui/material";
2
+ import { LogStore } from "./LogStore";
3
+ export type LogPanelProps = {
4
+ /** Log store instance to use, or create one automatically if not provided */
5
+ store?: LogStore;
6
+ /** Height of the component */
7
+ height?: string | number;
8
+ /** Additional styles */
9
+ sx?: SxProps;
10
+ /** Ref to the log store for external access */
11
+ onStoreReady?: (store: LogStore) => void;
12
+ };
13
+ /**
14
+ * A complete log panel component with built-in state management.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * function MyComponent() {
19
+ * const [logStore, setLogStore] = useState<LogStore>()
20
+ *
21
+ * return (
22
+ * <LogPanel
23
+ * height={400}
24
+ * onStoreReady={setLogStore}
25
+ * />
26
+ * )
27
+ * }
28
+ *
29
+ * // Then use the store to add messages
30
+ * logStore?.addInfo("Operation completed successfully")
31
+ * logStore?.addError("Something went wrong")
32
+ * logStore?.addWarning("Warning message")
33
+ * ```
34
+ */
35
+ export declare const LogPanel: ((props: LogPanelProps) => import("react/jsx-runtime").JSX.Element) & {
36
+ displayName: string;
37
+ };
38
+ //# sourceMappingURL=LogPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogPanel.d.ts","sourceRoot":"","sources":["../../src/components/LogPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAI5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,MAAM,MAAM,aAAa,GAAG;IAC1B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,wBAAwB;IACxB,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,+CAA+C;IAC/C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;CACzC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,QAAQ,WACF,aAAa;;CA2B/B,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { LogLevel, LogMessage } from "./LogViewer";
2
+ export declare class LogStore {
3
+ messages: LogMessage[];
4
+ constructor();
5
+ addMessage: (message: string, level?: LogLevel) => void;
6
+ clearMessages: () => void;
7
+ addInfo: (message: string) => void;
8
+ addWarning: (message: string) => void;
9
+ addError: (message: string) => void;
10
+ addDebug: (message: string) => void;
11
+ }
12
+ //# sourceMappingURL=LogStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogStore.d.ts","sourceRoot":"","sources":["../../src/components/LogStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEvD,qBAAa,QAAQ;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAK;;IAU3B,UAAU,GAAI,SAAS,MAAM,EAAE,QAAO,QAAiB,UAQtD;IAED,aAAa,aAEZ;IAED,OAAO,GAAI,SAAS,MAAM,UAEzB;IAED,UAAU,GAAI,SAAS,MAAM,UAE5B;IAED,QAAQ,GAAI,SAAS,MAAM,UAE1B;IAED,QAAQ,GAAI,SAAS,MAAM,UAE1B;CACF"}
@@ -0,0 +1,46 @@
1
+ import type { SxProps } from "@mui/material";
2
+ export type LogLevel = "info" | "error" | "warning" | "debug";
3
+ export type LogMessage = {
4
+ id: string;
5
+ timestamp: Date;
6
+ message: string;
7
+ level: LogLevel;
8
+ };
9
+ export type LogViewerProps = {
10
+ /** Log messages to display */
11
+ messages: LogMessage[];
12
+ /** Callback when clear button is clicked */
13
+ onClear?: () => void;
14
+ /** Height of the component */
15
+ height?: string | number;
16
+ /** Additional styles */
17
+ sx?: SxProps;
18
+ };
19
+ /**
20
+ * Utility function to create a log message
21
+ */
22
+ export declare const createLogMessage: (message: string, level: LogLevel, id?: string) => LogMessage;
23
+ /**
24
+ * Utility function to create a debug log message
25
+ */
26
+ export declare const createDebugMessage: (message: string, id?: string) => LogMessage;
27
+ /**
28
+ * Utility function to create an info log message
29
+ */
30
+ export declare const createInfoMessage: (message: string, id?: string) => LogMessage;
31
+ /**
32
+ * Utility function to create a warning log message
33
+ */
34
+ export declare const createWarningMessage: (message: string, id?: string) => LogMessage;
35
+ /**
36
+ * Utility function to create an error log message
37
+ */
38
+ export declare const createErrorMessage: (message: string, id?: string) => LogMessage;
39
+ /**
40
+ * A log viewer component that displays timestamped log messages with different levels.
41
+ * Features a header with document icon and clear button, and scrollable message area.
42
+ */
43
+ export declare const LogViewer: ((props: LogViewerProps) => import("react/jsx-runtime").JSX.Element) & {
44
+ displayName: string;
45
+ };
46
+ //# sourceMappingURL=LogViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogViewer.d.ts","sourceRoot":"","sources":["../../src/components/LogViewer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAa5C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;AAE7D,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,8BAA8B;IAC9B,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,wBAAwB;IACxB,EAAE,CAAC,EAAE,OAAO,CAAA;CACb,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,EACf,OAAO,QAAQ,EACf,KAAK,MAAM,KACV,UAKD,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,KAAG,UAC1B,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,KAAG,UAC1B,CAAA;AAEvC;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,KAAK,MAAM,KACV,UAAsD,CAAA;AAEzD;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,KAAG,UAC1B,CAAA;AAExC;;;GAGG;AACH,eAAO,MAAM,SAAS,WACH,cAAc;;CA6RhC,CAAA"}
@@ -1,4 +1,10 @@
1
- export type ProgramState = "idle" | "running" | "paused" | "stopping";
1
+ export declare enum ProgramState {
2
+ IDLE = "idle",
3
+ RUNNING = "running",
4
+ PAUSED = "paused",
5
+ STOPPING = "stopping",
6
+ ERROR = "error"
7
+ }
2
8
  export interface ProgramControlProps {
3
9
  /** The current state of the program control */
4
10
  state: ProgramState;
@@ -31,7 +37,7 @@ export interface ProgramControlProps {
31
37
  * A control component for program execution with run, pause, and stop functionality.
32
38
  *
33
39
  * Features:
34
- * - State machine with idle, running, paused, and stopping states
40
+ * - State machine with idle, running, paused, stopping, and error states
35
41
  * - Two variants: with_pause (3 buttons) and without_pause (2 buttons)
36
42
  * - Optional manual reset functionality
37
43
  * - Responsive design with 110px circular buttons
@@ -1 +1 @@
1
- {"version":3,"file":"ProgramControl.d.ts","sourceRoot":"","sources":["../../src/components/ProgramControl.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;AAErE,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,KAAK,EAAE,YAAY,CAAA;IACnB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,qDAAqD;IACrD,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAAA;IACxC,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,0FAWpB,mBAAmB;;CAuJzB,CAAA"}
1
+ {"version":3,"file":"ProgramControl.d.ts","sourceRoot":"","sources":["../../src/components/ProgramControl.tsx"],"names":[],"mappings":"AAMA,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,KAAK,EAAE,YAAY,CAAA;IACnB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,qDAAqD;IACrD,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAAA;IACxC,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,0FAWpB,mBAAmB;;CAgKzB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { RobotControllerStateOperationModeEnum, RobotControllerStateSafetyStateEnum } from "@wandelbots/nova-js/v1";
2
- import type { ProgramState } from "./ProgramControl";
2
+ import { ProgramState } from "./ProgramControl";
3
3
  export interface ProgramStateIndicatorProps {
4
4
  /** The current state of the program */
5
5
  programState: ProgramState;
@@ -1 +1 @@
1
- {"version":3,"file":"ProgramStateIndicator.d.ts","sourceRoot":"","sources":["../../src/components/ProgramStateIndicator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qCAAqC,EACrC,mCAAmC,EACpC,MAAM,wBAAwB,CAAA;AAI/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,WAAW,0BAA0B;IACzC,uCAAuC;IACvC,YAAY,EAAE,YAAY,CAAA;IAC1B,uDAAuD;IACvD,WAAW,EAAE,mCAAmC,CAAA;IAChD,yDAAyD;IACzD,aAAa,EAAE,qCAAqC,CAAA;IACpD,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,8DAO3B,0BAA0B;;CA6GhC,CAAA"}
1
+ {"version":3,"file":"ProgramStateIndicator.d.ts","sourceRoot":"","sources":["../../src/components/ProgramStateIndicator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qCAAqC,EACrC,mCAAmC,EACpC,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,WAAW,0BAA0B;IACzC,uCAAuC;IACvC,YAAY,EAAE,YAAY,CAAA;IAC1B,uDAAuD;IACvD,WAAW,EAAE,mCAAmC,CAAA;IAChD,yDAAyD;IACzD,aAAa,EAAE,qCAAqC,CAAA;IACpD,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,8DAO3B,0BAA0B;;CA8HhC,CAAA"}
@@ -0,0 +1,103 @@
1
+ import type { ConnectedMotionGroup, RobotControllerStateOperationModeEnum, RobotControllerStateSafetyStateEnum } from "@wandelbots/nova-js/v1";
2
+ import type { Group } from "three";
3
+ import type { ProgramState } from "./ProgramControl";
4
+ export interface RobotCardProps {
5
+ /** Name of the robot displayed at the top */
6
+ robotName: string;
7
+ /** Current program state */
8
+ programState: ProgramState;
9
+ /** Current safety state of the robot controller */
10
+ safetyState: RobotControllerStateSafetyStateEnum;
11
+ /** Current operation mode of the robot controller */
12
+ operationMode: RobotControllerStateOperationModeEnum;
13
+ /** Whether the "Drive to Home" button should be enabled */
14
+ driveToHomeEnabled?: boolean;
15
+ /** Callback fired when "Drive to Home" button is pressed */
16
+ onDriveToHomePress?: () => void;
17
+ /** Callback fired when "Drive to Home" button is released */
18
+ onDriveToHomeRelease?: () => void;
19
+ /**
20
+ * Callback fired when "Drive to Home" button is pressed, with the default home position.
21
+ * If provided, this will be called instead of onDriveToHomePress, providing the recommended
22
+ * home position joint configuration based on the robot manufacturer.
23
+ */
24
+ onDriveToHomePressWithConfig?: (homePosition: number[]) => void;
25
+ /**
26
+ * Callback fired when "Drive to Home" button is released after using onDriveToHomePressWithConfig.
27
+ * If provided, this will be called instead of onDriveToHomeRelease.
28
+ */
29
+ onDriveToHomeReleaseWithConfig?: () => void;
30
+ /**
31
+ * Custom default joint configuration to use if manufacturer-based defaults are not available.
32
+ * Joint values should be in radians.
33
+ */
34
+ defaultJointConfig?: number[];
35
+ /** Connected motion group for the robot */
36
+ connectedMotionGroup: ConnectedMotionGroup;
37
+ /** Custom robot component to render (optional, defaults to Robot) */
38
+ robotComponent?: React.ComponentType<{
39
+ connectedMotionGroup: ConnectedMotionGroup;
40
+ flangeRef?: React.Ref<Group>;
41
+ postModelRender?: () => void;
42
+ transparentColor?: string;
43
+ getModel?: (modelFromController: string) => string;
44
+ }>;
45
+ /** Custom cycle timer component (optional, defaults to CycleTimer) */
46
+ cycleTimerComponent?: React.ComponentType<{
47
+ variant?: "default" | "small";
48
+ compact?: boolean;
49
+ onCycleComplete: (controls: {
50
+ startNewCycle: (maxTimeSeconds?: number, elapsedSeconds?: number) => void;
51
+ pause: () => void;
52
+ resume: () => void;
53
+ isPaused: () => boolean;
54
+ }) => void;
55
+ onCycleEnd?: () => void;
56
+ autoStart?: boolean;
57
+ hasError?: boolean;
58
+ className?: string;
59
+ }>;
60
+ /** Callback to receive cycle timer controls for external timer management */
61
+ onCycleTimerReady?: (controls: {
62
+ startNewCycle: (maxTimeSeconds?: number, elapsedSeconds?: number) => void;
63
+ pause: () => void;
64
+ resume: () => void;
65
+ isPaused: () => boolean;
66
+ }) => void;
67
+ /** Callback fired when a cycle completes (reaches zero) */
68
+ onCycleEnd?: () => void;
69
+ /** Whether the cycle timer should auto-start when a new cycle is set */
70
+ cycleTimerAutoStart?: boolean;
71
+ /** Whether the cycle timer is in an error state (pauses timer and shows error styling) */
72
+ cycleTimerHasError?: boolean;
73
+ /** Additional CSS class name */
74
+ className?: string;
75
+ }
76
+ /**
77
+ * A responsive card component that displays a 3D robot with states and controls.
78
+ * The card automatically adapts to its container's size and aspect ratio.
79
+ *
80
+ * Features:
81
+ * - Fully responsive Material-UI Card that adapts to container dimensions
82
+ * - Automatic layout switching based on aspect ratio:
83
+ * - Portrait mode: Vertical layout with robot in center
84
+ * - Landscape mode: Horizontal layout with robot on left, content on right (left-aligned)
85
+ * - Responsive 3D robot rendering:
86
+ * - Scales dynamically with container size
87
+ * - Hides at very small sizes to preserve usability
88
+ * - Adaptive margin based on available space
89
+ * - Smart spacing and padding that reduces at smaller sizes
90
+ * - Minimum size constraints for usability while maximizing content density
91
+ * - Robot name displayed in Typography h6 at top-left
92
+ * - Program state indicator below the name
93
+ * - Auto-fitting 3D robot model that scales with container size
94
+ * - Compact cycle time component with small variant, error state, and count-up/count-down mode support
95
+ * - Transparent gray divider line
96
+ * - "Drive to Home" button with press-and-hold functionality
97
+ * - Localization support via react-i18next
98
+ * - Material-UI theming integration
99
+ */
100
+ export declare const RobotCard: (({ robotName, programState, safetyState, operationMode, driveToHomeEnabled, onDriveToHomePress, onDriveToHomeRelease, connectedMotionGroup, robotComponent: RobotComponent, cycleTimerComponent: CycleTimerComponent, onCycleTimerReady, onCycleEnd, cycleTimerAutoStart, cycleTimerHasError, className, }: RobotCardProps) => import("react/jsx-runtime").JSX.Element) & {
101
+ displayName: string;
102
+ };
103
+ //# sourceMappingURL=RobotCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RobotCard.d.ts","sourceRoot":"","sources":["../../src/components/RobotCard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { ComponentType } from "react";
2
+ import { RobotSetupReadinessState } from "./RobotSetupReadinessIndicator";
3
+ export interface RobotListItemProps {
4
+ /** The name of the robot */
5
+ robotName: string;
6
+ /** The type/model of the robot (will try to derive from nova if not provided) */
7
+ robotType?: string;
8
+ /** The current setup readiness state of the robot */
9
+ setupState: RobotSetupReadinessState;
10
+ /**
11
+ * Component to render for the precondition indicator.
12
+ * Defaults to RobotSetupReadinessIndicator.
13
+ * Pass null or undefined to hide the indicator.
14
+ */
15
+ PreconditionComponent?: ComponentType<{
16
+ setupState: RobotSetupReadinessState;
17
+ }> | null;
18
+ /** Additional CSS class name */
19
+ className?: string;
20
+ }
21
+ /**
22
+ * A list item component that displays robot information and setup readiness state.
23
+ *
24
+ * Features:
25
+ * - Shows robot name, type, and customizable precondition component
26
+ * - Color-coded icon based on readiness state (robot icon for ready, warning for issues)
27
+ * - Styled with consistent border, background, and spacing
28
+ * - Responsive layout with proper spacing and alignment
29
+ * - Flexible precondition component that can be customized or hidden
30
+ */
31
+ export declare const RobotListItem: (({ robotName, robotType, setupState, PreconditionComponent, className, }: RobotListItemProps) => import("react/jsx-runtime").JSX.Element) & {
32
+ displayName: string;
33
+ };
34
+ //# sourceMappingURL=RobotListItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RobotListItem.d.ts","sourceRoot":"","sources":["../../src/components/RobotListItem.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAG1C,OAAO,EAEL,wBAAwB,EACzB,MAAM,gCAAgC,CAAA;AAEvC,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,UAAU,EAAE,wBAAwB,CAAA;IACpC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,aAAa,CAAC;QACpC,UAAU,EAAE,wBAAwB,CAAA;KACrC,CAAC,GAAG,IAAI,CAAA;IACT,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,6EAQnB,kBAAkB;;CAqGxB,CAAA"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Enum representing the robot setup readiness state
3
+ */
4
+ export declare enum RobotSetupReadinessState {
5
+ /** Preconditions are not fulfilled for robot operation */
6
+ PRECONDITION_NOT_FULFILLED = "PRECONDITION_NOT_FULFILLED",
7
+ /** Robot is disconnected from the system */
8
+ ROBOT_DISCONNECTED = "ROBOT_DISCONNECTED",
9
+ /** Robot is ready for operation */
10
+ READY = "READY"
11
+ }
12
+ export interface RobotSetupReadinessIndicatorProps {
13
+ /** The current setup readiness state of the robot */
14
+ setupState: RobotSetupReadinessState;
15
+ /** Additional CSS class name */
16
+ className?: string;
17
+ }
18
+ /**
19
+ * A state indicator component that displays the current robot setup readiness state.
20
+ *
21
+ * Features:
22
+ * - Shows three states: Precondition not fulfilled, Robot disconnected, Ready
23
+ * - Color-coded based on state (ready: tertiary/main, others: error/main)
24
+ * - Rendered as Material-UI filled chip with paper-elevation-11 background
25
+ * - Includes colored circle indicator (8px width)
26
+ * - Localization support via react-i18next
27
+ */
28
+ export declare const RobotSetupReadinessIndicator: (({ setupState, className }: RobotSetupReadinessIndicatorProps) => import("react/jsx-runtime").JSX.Element) & {
29
+ displayName: string;
30
+ };
31
+ //# sourceMappingURL=RobotSetupReadinessIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RobotSetupReadinessIndicator.d.ts","sourceRoot":"","sources":["../../src/components/RobotSetupReadinessIndicator.tsx"],"names":[],"mappings":"AAKA;;GAEG;AACH,oBAAY,wBAAwB;IAClC,0DAA0D;IAC1D,0BAA0B,+BAA+B;IACzD,4CAA4C;IAC5C,kBAAkB,uBAAuB;IACzC,mCAAmC;IACnC,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,iCAAiC;IAChD,qDAAqD;IACrD,UAAU,EAAE,wBAAwB,CAAA;IACpC,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,+BACF,iCAAiC;;CAwFvE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RobotSetupReadinessIndicator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RobotSetupReadinessIndicator.test.d.ts","sourceRoot":"","sources":["../../src/components/RobotSetupReadinessIndicator.test.tsx"],"names":[],"mappings":""}
@@ -1,7 +1,8 @@
1
1
  import { type FabProps } from "@mui/material";
2
2
  type CodeFabProps = {
3
3
  selected?: boolean;
4
+ ref?: React.Ref<HTMLButtonElement>;
4
5
  } & Omit<FabProps, "variant" | "color">;
5
- export declare const SelectableFab: import("react").ForwardRefExoticComponent<Omit<CodeFabProps, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
6
+ export declare const SelectableFab: (props: CodeFabProps) => import("react/jsx-runtime").JSX.Element;
6
7
  export {};
7
8
  //# sourceMappingURL=SelectableFab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectableFab.d.ts","sourceRoot":"","sources":["../../src/components/SelectableFab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAkC1D,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,CAAA;AAEvC,eAAO,MAAM,aAAa,yHAYzB,CAAA"}
1
+ {"version":3,"file":"SelectableFab.d.ts","sourceRoot":"","sources":["../../src/components/SelectableFab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,QAAQ,EAAU,MAAM,eAAe,CAAA;AAiC1D,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CACnC,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,CAAA;AAEvC,eAAO,MAAM,aAAa,GAAI,OAAO,YAAY,4CAWhD,CAAA"}