@sudobility/testomniac_ui 0.0.7 → 0.0.8
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/dist/components/cells/BundleCell.d.ts +3 -1
- package/dist/components/cells/BundleCell.d.ts.map +1 -1
- package/dist/components/cells/BundleCell.js +7 -3
- package/dist/components/cells/BundleCell.js.map +1 -1
- package/dist/components/cells/InteractionCell.d.ts +5 -1
- package/dist/components/cells/InteractionCell.d.ts.map +1 -1
- package/dist/components/cells/InteractionCell.js +6 -2
- package/dist/components/cells/InteractionCell.js.map +1 -1
- package/dist/components/cells/ListCell.d.ts +3 -1
- package/dist/components/cells/ListCell.d.ts.map +1 -1
- package/dist/components/cells/ListCell.js +2 -2
- package/dist/components/cells/ListCell.js.map +1 -1
- package/dist/components/cells/PersonaCell.d.ts +3 -1
- package/dist/components/cells/PersonaCell.d.ts.map +1 -1
- package/dist/components/cells/PersonaCell.js +7 -2
- package/dist/components/cells/PersonaCell.js.map +1 -1
- package/dist/components/cells/ScaffoldCell.d.ts +3 -1
- package/dist/components/cells/ScaffoldCell.d.ts.map +1 -1
- package/dist/components/cells/ScaffoldCell.js +10 -4
- package/dist/components/cells/ScaffoldCell.js.map +1 -1
- package/dist/components/cells/ScenarioCell.d.ts +3 -1
- package/dist/components/cells/ScenarioCell.d.ts.map +1 -1
- package/dist/components/cells/ScenarioCell.js +5 -1
- package/dist/components/cells/ScenarioCell.js.map +1 -1
- package/dist/components/cells/SurfaceCell.d.ts +3 -1
- package/dist/components/cells/SurfaceCell.d.ts.map +1 -1
- package/dist/components/cells/SurfaceCell.js +5 -2
- package/dist/components/cells/SurfaceCell.js.map +1 -1
- package/dist/components/data/DataTable.d.ts.map +1 -1
- package/dist/components/data/DataTable.js +12 -10
- package/dist/components/data/DataTable.js.map +1 -1
- package/dist/components/pages/PagesListView.d.ts.map +1 -1
- package/dist/components/pages/PagesListView.js +6 -5
- package/dist/components/pages/PagesListView.js.map +1 -1
- package/dist/components/pages/PagesMapView.d.ts +3 -1
- package/dist/components/pages/PagesMapView.d.ts.map +1 -1
- package/dist/components/pages/PagesMapView.js +2 -2
- package/dist/components/pages/PagesMapView.js.map +1 -1
- package/dist/components/ui/AddButton.d.ts +19 -0
- package/dist/components/ui/AddButton.d.ts.map +1 -0
- package/dist/components/ui/AddButton.js +12 -0
- package/dist/components/ui/AddButton.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/pages/BundleDetailPage.d.ts.map +1 -1
- package/dist/pages/BundleDetailPage.js +2 -2
- package/dist/pages/BundleDetailPage.js.map +1 -1
- package/dist/pages/BundlesPage.d.ts.map +1 -1
- package/dist/pages/BundlesPage.js +3 -2
- package/dist/pages/BundlesPage.js.map +1 -1
- package/dist/pages/DashboardOverview.d.ts.map +1 -1
- package/dist/pages/DashboardOverview.js +2 -2
- package/dist/pages/DashboardOverview.js.map +1 -1
- package/dist/pages/FindingsListPage.js +50 -44
- package/dist/pages/FindingsListPage.js.map +1 -1
- package/dist/pages/PageDetailPage.d.ts.map +1 -1
- package/dist/pages/PageDetailPage.js +11 -8
- package/dist/pages/PageDetailPage.js.map +1 -1
- package/dist/pages/PageGraphPage.d.ts.map +1 -1
- package/dist/pages/PageGraphPage.js +2 -1
- package/dist/pages/PageGraphPage.js.map +1 -1
- package/dist/pages/PageStateDetailPage.d.ts.map +1 -1
- package/dist/pages/PageStateDetailPage.js +10 -10
- package/dist/pages/PageStateDetailPage.js.map +1 -1
- package/dist/pages/PagesPage.d.ts.map +1 -1
- package/dist/pages/PagesPage.js +6 -5
- package/dist/pages/PagesPage.js.map +1 -1
- package/dist/pages/PatternsPage.d.ts.map +1 -1
- package/dist/pages/PatternsPage.js +8 -8
- package/dist/pages/PatternsPage.js.map +1 -1
- package/dist/pages/PersonasPage.d.ts.map +1 -1
- package/dist/pages/PersonasPage.js +3 -2
- package/dist/pages/PersonasPage.js.map +1 -1
- package/dist/pages/RunSurfaceRunDetailPage.d.ts.map +1 -1
- package/dist/pages/RunSurfaceRunDetailPage.js +4 -4
- package/dist/pages/RunSurfaceRunDetailPage.js.map +1 -1
- package/dist/pages/RunSurfaceRunsPage.d.ts.map +1 -1
- package/dist/pages/RunSurfaceRunsPage.js +2 -2
- package/dist/pages/RunSurfaceRunsPage.js.map +1 -1
- package/dist/pages/RunTestInteractionRunDetailPage.d.ts.map +1 -1
- package/dist/pages/RunTestInteractionRunDetailPage.js +2 -2
- package/dist/pages/RunTestInteractionRunDetailPage.js.map +1 -1
- package/dist/pages/RunTestInteractionRunsPage.d.ts.map +1 -1
- package/dist/pages/RunTestInteractionRunsPage.js +2 -2
- package/dist/pages/RunTestInteractionRunsPage.js.map +1 -1
- package/dist/pages/RunnerGraphPage.d.ts.map +1 -1
- package/dist/pages/RunnerGraphPage.js +2 -1
- package/dist/pages/RunnerGraphPage.js.map +1 -1
- package/dist/pages/RunnerSettingsPage.d.ts.map +1 -1
- package/dist/pages/RunnerSettingsPage.js +2 -1
- package/dist/pages/RunnerSettingsPage.js.map +1 -1
- package/dist/pages/ScaffoldDetailPage.d.ts.map +1 -1
- package/dist/pages/ScaffoldDetailPage.js +3 -3
- package/dist/pages/ScaffoldDetailPage.js.map +1 -1
- package/dist/pages/ScaffoldsPage.d.ts.map +1 -1
- package/dist/pages/ScaffoldsPage.js +4 -3
- package/dist/pages/ScaffoldsPage.js.map +1 -1
- package/dist/pages/ScanProgressPage.d.ts.map +1 -1
- package/dist/pages/ScanProgressPage.js +2 -2
- package/dist/pages/ScanProgressPage.js.map +1 -1
- package/dist/pages/SchedulesPage.d.ts.map +1 -1
- package/dist/pages/SchedulesPage.js +34 -33
- package/dist/pages/SchedulesPage.js.map +1 -1
- package/dist/pages/StartScanPage.d.ts.map +1 -1
- package/dist/pages/StartScanPage.js +3 -3
- package/dist/pages/StartScanPage.js.map +1 -1
- package/dist/pages/TestInteractionDetailPage.d.ts.map +1 -1
- package/dist/pages/TestInteractionDetailPage.js +5 -5
- package/dist/pages/TestInteractionDetailPage.js.map +1 -1
- package/dist/pages/TestInteractionsPage.d.ts.map +1 -1
- package/dist/pages/TestInteractionsPage.js +10 -40
- package/dist/pages/TestInteractionsPage.js.map +1 -1
- package/dist/pages/TestRunDetailPage.d.ts.map +1 -1
- package/dist/pages/TestRunDetailPage.js +4 -3
- package/dist/pages/TestRunDetailPage.js.map +1 -1
- package/dist/pages/TestRunsListPage.d.ts.map +1 -1
- package/dist/pages/TestRunsListPage.js +24 -1
- package/dist/pages/TestRunsListPage.js.map +1 -1
- package/dist/pages/TestScenarioDetailPage.d.ts.map +1 -1
- package/dist/pages/TestScenarioDetailPage.js +5 -5
- package/dist/pages/TestScenarioDetailPage.js.map +1 -1
- package/dist/pages/TestScenariosPage.d.ts.map +1 -1
- package/dist/pages/TestScenariosPage.js +8 -7
- package/dist/pages/TestScenariosPage.js.map +1 -1
- package/dist/pages/TestSurfaceDetailPage.d.ts.map +1 -1
- package/dist/pages/TestSurfaceDetailPage.js +3 -5
- package/dist/pages/TestSurfaceDetailPage.js.map +1 -1
- package/dist/pages/TestSurfacesListPage.d.ts.map +1 -1
- package/dist/pages/TestSurfacesListPage.js +11 -10
- package/dist/pages/TestSurfacesListPage.js.map +1 -1
- package/package.json +3 -3
|
@@ -4,7 +4,9 @@ export interface BundleCellProps {
|
|
|
4
4
|
bundle: TestSurfaceBundleResponse;
|
|
5
5
|
onClick?: () => void;
|
|
6
6
|
actions?: ReactNode;
|
|
7
|
+
/** `row` (default, full-width ListCell) or `tile` (compact card for CardGrid). */
|
|
8
|
+
variant?: 'row' | 'tile';
|
|
7
9
|
}
|
|
8
10
|
/** Canonical cell for a TestSurfaceBundle — title (with an "auto" tag for the Discovery bundle) and description. */
|
|
9
|
-
export declare function BundleCell({ bundle, onClick, actions }: BundleCellProps): import("react").JSX.Element;
|
|
11
|
+
export declare function BundleCell({ bundle, onClick, actions, variant }: BundleCellProps): import("react").JSX.Element;
|
|
10
12
|
//# sourceMappingURL=BundleCell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundleCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/BundleCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAI9E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"BundleCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/BundleCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAI9E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kFAAkF;IAClF,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B;AAED,oHAAoH;AACpH,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAe,EAAE,EAAE,eAAe,+BAgCxF"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Badge } from '@sudobility/components';
|
|
2
|
+
import { Badge, GridTile } from '@sudobility/components';
|
|
3
3
|
import { ListCell, ChevronRight } from './ListCell';
|
|
4
4
|
/** Canonical cell for a TestSurfaceBundle — title (with an "auto" tag for the Discovery bundle) and description. */
|
|
5
|
-
export function BundleCell({ bundle, onClick, actions }) {
|
|
5
|
+
export function BundleCell({ bundle, onClick, actions, variant = 'row' }) {
|
|
6
6
|
const isAuto = bundle.title === 'Discovery';
|
|
7
|
-
|
|
7
|
+
const title = (_jsxs("span", { className: "inline-flex items-center", children: [bundle.title, isAuto && (_jsx(Badge, { variant: "default", size: "sm", className: "ml-2", children: "auto" }))] }));
|
|
8
|
+
if (variant === 'tile') {
|
|
9
|
+
return (_jsx(GridTile, { title: title, subtitle: bundle.description || undefined, actions: actions, onClick: onClick }));
|
|
10
|
+
}
|
|
11
|
+
return (_jsx(ListCell, { title: title, subtitle: bundle.description || undefined, trailing: onClick ? _jsx(ChevronRight, {}) : undefined, actions: actions, onClick: onClick }));
|
|
8
12
|
}
|
|
9
13
|
//# sourceMappingURL=BundleCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundleCell.js","sourceRoot":"","sources":["../../../src/components/cells/BundleCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"BundleCell.js","sourceRoot":"","sources":["../../../src/components/cells/BundleCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAUpD,oHAAoH;AACpH,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,EAAmB;IACvF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC;IAC5C,MAAM,KAAK,GAAG,CACZ,gBAAM,SAAS,EAAC,0BAA0B,aACvC,MAAM,CAAC,KAAK,EACZ,MAAM,IAAI,CACT,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,MAAM,qBAE3C,CACT,IACI,CACR,CAAC;IAEF,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS,EACzC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;IACJ,CAAC;IACD,OAAO,CACL,KAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS,EACzC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,KAAC,YAAY,KAAG,CAAC,CAAC,CAAC,SAAS,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -6,6 +6,10 @@ export interface InteractionCellProps {
|
|
|
6
6
|
actions?: ReactNode;
|
|
7
7
|
/** Optional leading content (e.g. a step number inside a sequence). */
|
|
8
8
|
leading?: ReactNode;
|
|
9
|
+
/** `row` (default, full-width ListCell) or `tile` (compact card for CardGrid). */
|
|
10
|
+
variant?: 'row' | 'tile';
|
|
11
|
+
/** Reduces row padding when used inside a tightened list (row variant only). */
|
|
12
|
+
compact?: boolean;
|
|
9
13
|
}
|
|
10
14
|
/**
|
|
11
15
|
* Canonical cell for a TestInteraction — title over its starting path, with the
|
|
@@ -13,5 +17,5 @@ export interface InteractionCellProps {
|
|
|
13
17
|
* interaction looks identical everywhere it appears (sequences, bundles,
|
|
14
18
|
* scaffolds, page detail, …).
|
|
15
19
|
*/
|
|
16
|
-
export declare function InteractionCell({ interaction, onClick, actions, leading }: InteractionCellProps): import("react").JSX.Element;
|
|
20
|
+
export declare function InteractionCell({ interaction, onClick, actions, leading, variant, compact, }: InteractionCellProps): import("react").JSX.Element;
|
|
17
21
|
//# sourceMappingURL=InteractionCell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractionCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/InteractionCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"InteractionCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/InteractionCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAK5E,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,uBAAuB,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,uEAAuE;IACvE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kFAAkF;IAClF,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACzB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAe,EACf,OAAe,GAChB,EAAE,oBAAoB,+BAwBtB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { GridTile } from '@sudobility/components';
|
|
2
3
|
import { StatusBadge } from '../scanner/StatusBadge';
|
|
3
4
|
import { ListCell } from './ListCell';
|
|
4
5
|
/**
|
|
@@ -7,7 +8,10 @@ import { ListCell } from './ListCell';
|
|
|
7
8
|
* interaction looks identical everywhere it appears (sequences, bundles,
|
|
8
9
|
* scaffolds, page detail, …).
|
|
9
10
|
*/
|
|
10
|
-
export function InteractionCell({ interaction, onClick, actions, leading }) {
|
|
11
|
-
|
|
11
|
+
export function InteractionCell({ interaction, onClick, actions, leading, variant = 'row', compact = false, }) {
|
|
12
|
+
if (variant === 'tile') {
|
|
13
|
+
return (_jsx(GridTile, { leading: leading, title: interaction.title, subtitle: interaction.startingPath || '/', footer: _jsx(StatusBadge, { status: interaction.testType }), actions: actions, onClick: onClick }));
|
|
14
|
+
}
|
|
15
|
+
return (_jsx(ListCell, { compact: compact, leading: leading, title: interaction.title, subtitle: interaction.startingPath || '/', trailing: _jsx(StatusBadge, { status: interaction.testType }), actions: actions, onClick: onClick }));
|
|
12
16
|
}
|
|
13
17
|
//# sourceMappingURL=InteractionCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractionCell.js","sourceRoot":"","sources":["../../../src/components/cells/InteractionCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"InteractionCell.js","sourceRoot":"","sources":["../../../src/components/cells/InteractionCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AActC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,KAAK,GACM;IACrB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,CAAC,KAAK,EACxB,QAAQ,EAAE,WAAW,CAAC,YAAY,IAAI,GAAG,EACzC,MAAM,EAAE,KAAC,WAAW,IAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,GAAI,EACrD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;IACJ,CAAC;IACD,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,CAAC,KAAK,EACxB,QAAQ,EAAE,WAAW,CAAC,YAAY,IAAI,GAAG,EACzC,QAAQ,EAAE,KAAC,WAAW,IAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,GAAI,EACvD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -12,6 +12,8 @@ export interface ListCellProps {
|
|
|
12
12
|
actions?: ReactNode;
|
|
13
13
|
/** When provided, the title/subtitle area becomes a clickable button. */
|
|
14
14
|
onClick?: () => void;
|
|
15
|
+
/** Reduces vertical padding (py-3 → py-2) for tightened row pages. */
|
|
16
|
+
compact?: boolean;
|
|
15
17
|
className?: string;
|
|
16
18
|
}
|
|
17
19
|
/**
|
|
@@ -23,7 +25,7 @@ export interface ListCellProps {
|
|
|
23
25
|
* clickable target, so `actions` stay independently clickable without needing
|
|
24
26
|
* to stop event propagation.
|
|
25
27
|
*/
|
|
26
|
-
export declare function ListCell({ leading, title, subtitle, trailing, actions, onClick, className, }: ListCellProps): import("react").JSX.Element;
|
|
28
|
+
export declare function ListCell({ leading, title, subtitle, trailing, actions, onClick, compact, className, }: ListCellProps): import("react").JSX.Element;
|
|
27
29
|
/** Small right-chevron used as a trailing affordance on navigable cells. */
|
|
28
30
|
export declare function ChevronRight(): import("react").JSX.Element;
|
|
29
31
|
//# sourceMappingURL=ListCell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/ListCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kCAAkC;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wEAAwE;IACxE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAc,GACf,EAAE,aAAa,+
|
|
1
|
+
{"version":3,"file":"ListCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/ListCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kCAAkC;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wEAAwE;IACxE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAe,EACf,SAAc,GACf,EAAE,aAAa,+BA4Cf;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,gCAY3B"}
|
|
@@ -8,9 +8,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
8
8
|
* clickable target, so `actions` stay independently clickable without needing
|
|
9
9
|
* to stop event propagation.
|
|
10
10
|
*/
|
|
11
|
-
export function ListCell({ leading, title, subtitle, trailing, actions, onClick, className = '', }) {
|
|
11
|
+
export function ListCell({ leading, title, subtitle, trailing, actions, onClick, compact = false, className = '', }) {
|
|
12
12
|
const main = (_jsxs(_Fragment, { children: [leading != null && (_jsx("span", { className: "flex shrink-0 items-center text-gray-400 dark:text-gray-500", children: leading })), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-sm font-medium text-gray-900 dark:text-gray-100", children: title }), subtitle != null && subtitle !== '' && (_jsx("div", { className: "mt-0.5 truncate text-xs text-gray-500 dark:text-gray-400", children: subtitle }))] })] }));
|
|
13
|
-
return (_jsxs("div", { className: `flex items-center justify-between gap-3 rounded-lg border border-gray-200 bg-white px-4 py-3 dark:border-gray-700 dark:bg-gray-800 ${onClick ? 'transition-colors hover:bg-gray-50 dark:hover:bg-gray-700/50' : ''} ${className}`, children: [onClick ? (_jsx("button", { type: "button", onClick: onClick, className: "flex min-w-0 flex-1 items-center gap-3 text-left", children: main })) : (_jsx("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: main })), (trailing != null || actions != null) && (_jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [trailing, actions] }))] }));
|
|
13
|
+
return (_jsxs("div", { className: `flex items-center justify-between gap-3 rounded-lg border border-gray-200 bg-white px-4 ${compact ? 'py-2' : 'py-3'} dark:border-gray-700 dark:bg-gray-800 ${onClick ? 'transition-colors hover:bg-gray-50 dark:hover:bg-gray-700/50' : ''} ${className}`, children: [onClick ? (_jsx("button", { type: "button", onClick: onClick, className: "flex min-w-0 flex-1 items-center gap-3 text-left", children: main })) : (_jsx("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: main })), (trailing != null || actions != null) && (_jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [trailing, actions] }))] }));
|
|
14
14
|
}
|
|
15
15
|
/** Small right-chevron used as a trailing affordance on navigable cells. */
|
|
16
16
|
export function ChevronRight() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListCell.js","sourceRoot":"","sources":["../../../src/components/cells/ListCell.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ListCell.js","sourceRoot":"","sources":["../../../src/components/cells/ListCell.tsx"],"names":[],"mappings":";AAoBA;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAO,GAAG,KAAK,EACf,SAAS,GAAG,EAAE,GACA;IACd,MAAM,IAAI,GAAG,CACX,8BACG,OAAO,IAAI,IAAI,IAAI,CAClB,eAAM,SAAS,EAAC,6DAA6D,YAC1E,OAAO,GACH,CACR,EACD,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cAAK,SAAS,EAAC,+DAA+D,YAAE,KAAK,GAAO,EAC3F,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,IAAI,CACtC,cAAK,SAAS,EAAC,0DAA0D,YAAE,QAAQ,GAAO,CAC3F,IACG,IACL,CACJ,CAAC;IAEF,OAAO,CACL,eACE,SAAS,EAAE,2FACT,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MACrB,0CACE,OAAO,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,EAC7E,IAAI,SAAS,EAAE,aAEd,OAAO,CAAC,CAAC,CAAC,CACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,kDAAkD,YAE3D,IAAI,GACE,CACV,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,wCAAwC,YAAE,IAAI,GAAO,CACrE,EACA,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,CACxC,eAAK,SAAS,EAAC,kCAAkC,aAC9C,QAAQ,EACR,OAAO,IACJ,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,YAAY;IAC1B,OAAO,CACL,cACE,SAAS,EAAC,0CAA0C,EACpD,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,YAEf,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,cAAc,GAAG,GAClE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -4,7 +4,9 @@ export interface PersonaCellProps {
|
|
|
4
4
|
persona: PersonaResponse;
|
|
5
5
|
onClick?: () => void;
|
|
6
6
|
actions?: ReactNode;
|
|
7
|
+
/** `row` (default, full-width ListCell) or `tile` (compact card for CardGrid). */
|
|
8
|
+
variant?: 'row' | 'tile';
|
|
7
9
|
}
|
|
8
10
|
/** Canonical cell for a Persona — title over description, with action buttons trailing. */
|
|
9
|
-
export declare function PersonaCell({ persona, onClick, actions }: PersonaCellProps): import("react").JSX.Element;
|
|
11
|
+
export declare function PersonaCell({ persona, onClick, actions, variant }: PersonaCellProps): import("react").JSX.Element;
|
|
10
12
|
//# sourceMappingURL=PersonaCell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonaCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/PersonaCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"PersonaCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/PersonaCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAIpE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kFAAkF;IAClF,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B;AAED,2FAA2F;AAC3F,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAe,EAAE,EAAE,gBAAgB,+BA4B3F"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { GridTile } from '@sudobility/components';
|
|
2
3
|
import { ListCell } from './ListCell';
|
|
3
4
|
/** Canonical cell for a Persona — title over description, with action buttons trailing. */
|
|
4
|
-
export function PersonaCell({ persona, onClick, actions }) {
|
|
5
|
-
|
|
5
|
+
export function PersonaCell({ persona, onClick, actions, variant = 'row' }) {
|
|
6
|
+
const colorDot = persona.color ? (_jsx("span", { className: "inline-block h-2.5 w-2.5 rounded-full", style: { backgroundColor: persona.color } })) : undefined;
|
|
7
|
+
if (variant === 'tile') {
|
|
8
|
+
return (_jsx(GridTile, { leading: colorDot, title: persona.title, subtitle: persona.description || undefined, actions: actions, onClick: onClick }));
|
|
9
|
+
}
|
|
10
|
+
return (_jsx(ListCell, { leading: colorDot, title: persona.title, subtitle: persona.description || undefined, actions: actions, onClick: onClick }));
|
|
6
11
|
}
|
|
7
12
|
//# sourceMappingURL=PersonaCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonaCell.js","sourceRoot":"","sources":["../../../src/components/cells/PersonaCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"PersonaCell.js","sourceRoot":"","sources":["../../../src/components/cells/PersonaCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAUtC,2FAA2F;AAC3F,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,EAAoB;IAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,eACE,SAAS,EAAC,uCAAuC,EACjD,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,GACzC,CACH,CAAC,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,QAAQ,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS,EAC1C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;IACJ,CAAC;IACD,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,QAAQ,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS,EAC1C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -6,7 +6,9 @@ export interface ScaffoldCellProps {
|
|
|
6
6
|
pageCount?: number;
|
|
7
7
|
onClick?: () => void;
|
|
8
8
|
actions?: ReactNode;
|
|
9
|
+
/** `row` (default, full-width ListCell) or `tile` (compact card for CardGrid). */
|
|
10
|
+
variant?: 'row' | 'tile';
|
|
9
11
|
}
|
|
10
12
|
/** Canonical cell for a Scaffold — type icon + label, page count, navigable chevron. */
|
|
11
|
-
export declare function ScaffoldCell({ scaffold, pageCount, onClick, actions }: ScaffoldCellProps): import("react").JSX.Element;
|
|
13
|
+
export declare function ScaffoldCell({ scaffold, pageCount, onClick, actions, variant, }: ScaffoldCellProps): import("react").JSX.Element;
|
|
12
14
|
//# sourceMappingURL=ScaffoldCell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScaffoldCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/ScaffoldCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ScaffoldCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/ScaffoldCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKrE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kFAAkF;IAClF,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAe,GAChB,EAAE,iBAAiB,+BA4BnB"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { GridTile } from '@sudobility/components';
|
|
2
3
|
import { ListCell, ChevronRight } from './ListCell';
|
|
3
4
|
import { SCAFFOLD_ICONS, SCAFFOLD_LABELS } from './scaffoldMeta';
|
|
4
5
|
/** Canonical cell for a Scaffold — type icon + label, page count, navigable chevron. */
|
|
5
|
-
export function ScaffoldCell({ scaffold, pageCount, onClick, actions }) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
export function ScaffoldCell({ scaffold, pageCount, onClick, actions, variant = 'row', }) {
|
|
7
|
+
const label = SCAFFOLD_LABELS[scaffold.type] ?? scaffold.type;
|
|
8
|
+
const subtitle = pageCount != null && pageCount > 0
|
|
9
|
+
? `${pageCount} ${pageCount === 1 ? 'page' : 'pages'}`
|
|
10
|
+
: undefined;
|
|
11
|
+
if (variant === 'tile') {
|
|
12
|
+
return (_jsx(GridTile, { leading: SCAFFOLD_ICONS[scaffold.type], title: label, subtitle: subtitle, actions: actions, onClick: onClick }));
|
|
13
|
+
}
|
|
14
|
+
return (_jsx(ListCell, { leading: SCAFFOLD_ICONS[scaffold.type], title: label, subtitle: subtitle, trailing: onClick ? _jsx(ChevronRight, {}) : undefined, actions: actions, onClick: onClick }));
|
|
9
15
|
}
|
|
10
16
|
//# sourceMappingURL=ScaffoldCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScaffoldCell.js","sourceRoot":"","sources":["../../../src/components/cells/ScaffoldCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ScaffoldCell.js","sourceRoot":"","sources":["../../../src/components/cells/ScaffoldCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAYjE,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,GAAG,KAAK,GACG;IAClB,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;IAC9D,MAAM,QAAQ,GACZ,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC;QAChC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;QACtD,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EACtC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;IACJ,CAAC;IACD,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EACtC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,KAAC,YAAY,KAAG,CAAC,CAAC,CAAC,SAAS,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -6,7 +6,9 @@ export interface ScenarioCellProps {
|
|
|
6
6
|
actions?: ReactNode;
|
|
7
7
|
/** Overrides the default trailing (device badge) — e.g. to prepend a persona label. */
|
|
8
8
|
trailing?: ReactNode;
|
|
9
|
+
/** `row` (default, full-width ListCell) or `tile` (compact card for CardGrid). */
|
|
10
|
+
variant?: 'row' | 'tile';
|
|
9
11
|
}
|
|
10
12
|
/** Canonical cell for a TestScenario — title over its starting path, device badge trailing. */
|
|
11
|
-
export declare function ScenarioCell({ scenario, onClick, actions, trailing }: ScenarioCellProps): import("react").JSX.Element;
|
|
13
|
+
export declare function ScenarioCell({ scenario, onClick, actions, trailing, variant, }: ScenarioCellProps): import("react").JSX.Element;
|
|
12
14
|
//# sourceMappingURL=ScenarioCell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScenarioCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/ScenarioCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ScenarioCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/ScenarioCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAKzE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,kFAAkF;IAClF,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAe,GAChB,EAAE,iBAAiB,+BAqBnB"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { GridTile } from '@sudobility/components';
|
|
2
3
|
import { StatusBadge } from '../scanner/StatusBadge';
|
|
3
4
|
import { ListCell } from './ListCell';
|
|
4
5
|
/** Canonical cell for a TestScenario — title over its starting path, device badge trailing. */
|
|
5
|
-
export function ScenarioCell({ scenario, onClick, actions, trailing }) {
|
|
6
|
+
export function ScenarioCell({ scenario, onClick, actions, trailing, variant = 'row', }) {
|
|
7
|
+
if (variant === 'tile') {
|
|
8
|
+
return (_jsx(GridTile, { title: scenario.title, subtitle: scenario.startingPath || '/', footer: trailing ?? _jsx(StatusBadge, { status: scenario.sizeClass }), actions: actions, onClick: onClick }));
|
|
9
|
+
}
|
|
6
10
|
return (_jsx(ListCell, { title: scenario.title, subtitle: scenario.startingPath || '/', trailing: trailing ?? _jsx(StatusBadge, { status: scenario.sizeClass }), actions: actions, onClick: onClick }));
|
|
7
11
|
}
|
|
8
12
|
//# sourceMappingURL=ScenarioCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScenarioCell.js","sourceRoot":"","sources":["../../../src/components/cells/ScenarioCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ScenarioCell.js","sourceRoot":"","sources":["../../../src/components/cells/ScenarioCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAYtC,+FAA+F;AAC/F,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,GAAG,KAAK,GACG;IAClB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,QAAQ,IACP,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,QAAQ,EAAE,QAAQ,CAAC,YAAY,IAAI,GAAG,EACtC,MAAM,EAAE,QAAQ,IAAI,KAAC,WAAW,IAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,GAAI,EAC/D,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;IACJ,CAAC;IACD,OAAO,CACL,KAAC,QAAQ,IACP,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,QAAQ,EAAE,QAAQ,CAAC,YAAY,IAAI,GAAG,EACtC,QAAQ,EAAE,QAAQ,IAAI,KAAC,WAAW,IAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,GAAI,EACjE,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -8,7 +8,9 @@ export interface SurfaceCellProps {
|
|
|
8
8
|
surface: TestSurfaceResponse;
|
|
9
9
|
onClick?: () => void;
|
|
10
10
|
actions?: ReactNode;
|
|
11
|
+
/** `row` (default, full-width ListCell) or `tile` (compact card for CardGrid). */
|
|
12
|
+
variant?: 'row' | 'tile';
|
|
11
13
|
}
|
|
12
14
|
/** Canonical cell for a TestSurface — folder icon, title, description/path, priority + device badges. */
|
|
13
|
-
export declare function SurfaceCell({ surface, onClick, actions }: SurfaceCellProps): import("react").JSX.Element;
|
|
15
|
+
export declare function SurfaceCell({ surface, onClick, actions, variant }: SurfaceCellProps): import("react").JSX.Element;
|
|
14
16
|
//# sourceMappingURL=SurfaceCell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SurfaceCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/SurfaceCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAuBxE,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAWtE;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"SurfaceCell.d.ts","sourceRoot":"","sources":["../../../src/components/cells/SurfaceCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAuBxE,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAWtE;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kFAAkF;IAClF,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B;AAED,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAe,EAAE,EAAE,gBAAgB,+BA6B3F"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { Badge } from '@sudobility/components';
|
|
2
|
+
import { Badge, GridTile } from '@sudobility/components';
|
|
3
3
|
import { StatusBadge } from '../scanner/StatusBadge';
|
|
4
4
|
import { ListCell } from './ListCell';
|
|
5
5
|
function FolderIcon() {
|
|
@@ -12,7 +12,10 @@ export function SurfacePriorityBadge({ priority }) {
|
|
|
12
12
|
return (_jsxs(Badge, { variant: variant, size: "sm", pill: true, children: ["P", priority, " ", label] }));
|
|
13
13
|
}
|
|
14
14
|
/** Canonical cell for a TestSurface — folder icon, title, description/path, priority + device badges. */
|
|
15
|
-
export function SurfaceCell({ surface, onClick, actions }) {
|
|
15
|
+
export function SurfaceCell({ surface, onClick, actions, variant = 'row' }) {
|
|
16
|
+
if (variant === 'tile') {
|
|
17
|
+
return (_jsx(GridTile, { leading: _jsx(FolderIcon, {}), topRight: _jsx(SurfacePriorityBadge, { priority: surface.priority }), title: surface.title, subtitle: surface.startingPath || '/', footer: _jsx(StatusBadge, { status: surface.sizeClass }), actions: actions, onClick: onClick }));
|
|
18
|
+
}
|
|
16
19
|
return (_jsx(ListCell, { leading: _jsx(FolderIcon, {}), title: surface.title, subtitle: surface.description || surface.startingPath || '/', trailing: _jsxs(_Fragment, { children: [_jsx(SurfacePriorityBadge, { priority: surface.priority }), _jsx(StatusBadge, { status: surface.sizeClass })] }), actions: actions, onClick: onClick }));
|
|
17
20
|
}
|
|
18
21
|
//# sourceMappingURL=SurfaceCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SurfaceCell.js","sourceRoot":"","sources":["../../../src/components/cells/SurfaceCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"SurfaceCell.js","sourceRoot":"","sources":["../../../src/components/cells/SurfaceCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,SAAS,UAAU;IACjB,OAAO,CACL,cACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,GAAG,YAEhB,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,CAAC,EAAC,wPAAwP,GAC1P,GACE,CACP,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAAwB;IACrE,MAAM,KAAK,GACT,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACzF,MAAM,OAAO,GACX,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/F,OAAO,CACL,MAAC,KAAK,IAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,IAAI,EAAC,IAAI,wBACnC,QAAQ,OAAG,KAAK,IACZ,CACT,CAAC;AACJ,CAAC;AAUD,yGAAyG;AACzG,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,EAAoB;IAC1F,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,KAAC,UAAU,KAAG,EACvB,QAAQ,EAAE,KAAC,oBAAoB,IAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAI,EAC9D,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,QAAQ,EAAE,OAAO,CAAC,YAAY,IAAI,GAAG,EACrC,MAAM,EAAE,KAAC,WAAW,IAAC,MAAM,EAAE,OAAO,CAAC,SAAS,GAAI,EAClD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;IACJ,CAAC;IACD,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,KAAC,UAAU,KAAG,EACvB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,QAAQ,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,YAAY,IAAI,GAAG,EAC5D,QAAQ,EACN,8BACE,KAAC,oBAAoB,IAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAI,EACpD,KAAC,WAAW,IAAC,MAAM,EAAE,OAAO,CAAC,SAAS,GAAI,IACzC,EAEL,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../src/components/data/DataTable.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAG/B,UAAU,cAAc,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,8EAA8E;IAC9E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;
|
|
1
|
+
{"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../src/components/data/DataTable.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAG/B,UAAU,cAAc,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,8EAA8E;IAC9E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AA4CD,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAC3B,IAAI,EACJ,OAAO,EACP,QAAa,EACb,SAAS,EACT,cAAc,EACd,YAA8B,EAC9B,YAAY,EAAE,cAAc,EAC5B,oBAAoB,EAAE,sBAAsB,EAC5C,UAAU,EACV,gBAAgB,EAChB,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,eAAe,EAC1B,YAAY,GACb,EAAE,cAAc,CAAC,CAAC,CAAC,+BAyMnB"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* eslint-disable react-hooks/incompatible-library */
|
|
3
3
|
import { useReactTable, getCoreRowModel, getSortedRowModel, getFilteredRowModel, getPaginationRowModel, flexRender, } from '@tanstack/react-table';
|
|
4
4
|
import { useState } from 'react';
|
|
5
|
-
function
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
function SkeletonCards() {
|
|
6
|
+
return (_jsx("div", { className: "space-y-2", children: Array.from({ length: 5 }).map((_, rowIdx) => (_jsxs("div", { className: "rounded-lg border border-gray-200 px-4 py-3 dark:border-gray-700", children: [_jsx("div", { className: "h-4 w-2/3 rounded bg-gray-200 animate-pulse dark:bg-gray-700" }), _jsx("div", { className: "mt-2 h-3 w-1/3 rounded bg-gray-200 animate-pulse dark:bg-gray-700" })] }, rowIdx))) }));
|
|
7
|
+
}
|
|
8
|
+
/** Column header text for a cell label, falling back to the column id. */
|
|
9
|
+
function columnLabel(header, id) {
|
|
10
|
+
return typeof header === 'string' ? header : id;
|
|
8
11
|
}
|
|
9
12
|
function EmptyState({ message }) {
|
|
10
13
|
return (_jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-gray-400 dark:text-gray-500", children: [_jsx("svg", { className: "mb-3 h-10 w-10", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5m6 4.125l2.25 2.25m0 0l2.25 2.25M12 11.625l2.25-2.25M12 11.625l-2.25 2.25M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z" }) }), _jsx("p", { className: "text-sm font-medium", children: message })] }));
|
|
@@ -51,12 +54,11 @@ export function DataTable({ data, columns, pageSize = 20, isLoading, initialSort
|
|
|
51
54
|
? Math.min(pageIndex * currentPageSize + data.length, totalRows)
|
|
52
55
|
: Math.min((pageIndex + 1) * currentPageSize, totalRows);
|
|
53
56
|
const pageCount = table.getPageCount();
|
|
54
|
-
return (_jsxs("div", { className: "overflow-x-auto", children: [!isLoading && data.length > 0 && (_jsxs("div", { className: "flex items-center justify-between px-3 py-2 mb-1", children: [_jsxs("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: ["Showing ", startRow, "\u2013", endRow, " of ", totalRows] }), !manualPagination && (_jsxs("div", { className: "relative", children: [_jsx("svg", { className: "pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-gray-400 dark:text-gray-500", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z" }) }), _jsx("input", { type: "text", value: globalFilter, onChange: e => setGlobalFilter(e.target.value), placeholder: "Filter...", className: "h-7 w-48 rounded border border-gray-300 bg-white pl-8 pr-2 text-xs text-gray-700 placeholder-gray-400 focus:border-blue-400 focus:outline-none focus:ring-1 focus:ring-blue-400 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:placeholder-gray-500" })] }))] })), !isLoading && data.length === 0 && _jsx(EmptyState, { message: emptyMessage }), (isLoading
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}) }, headerGroup.id))) }), _jsx("tbody", { children: isLoading ? (_jsx(SkeletonRows, { columnCount: columns.length })) : (table.getRowModel().rows.map(row => (_jsx("tr", { onClick: onRowClick ? () => onRowClick(row.original) : undefined, className: `border-b border-gray-100 dark:border-gray-800 even:bg-gray-50 dark:even:bg-gray-800/30 hover:bg-gray-100/70 dark:hover:bg-gray-800/50 transition-colors ${onRowClick ? 'cursor-pointer' : ''}`, children: row.getVisibleCells().map(cell => (_jsx("td", { className: "px-3 py-2.5 text-gray-900 dark:text-gray-100", children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id)))) })] })), !isLoading && pageCount > 1 && (_jsxs("div", { className: "flex items-center justify-between px-3 py-2.5 border-t border-gray-200 dark:border-gray-700", children: [_jsxs("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: ["Showing ", startRow, "\u2013", endRow, " of ", totalRows] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { onClick: () => table.setPageIndex(0), disabled: !table.getCanPreviousPage(), className: "px-2 py-1 text-xs rounded border border-gray-300 dark:border-gray-600 disabled:opacity-30 disabled:cursor-not-allowed hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors", "aria-label": "First page", children: "\u00AB" }), _jsx("button", { onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), className: "px-2 py-1 text-xs rounded border border-gray-300 dark:border-gray-600 disabled:opacity-30 disabled:cursor-not-allowed hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors", "aria-label": "Previous page", children: "\u2039" }), Array.from({ length: pageCount }).map((_, i) => {
|
|
57
|
+
return (_jsxs("div", { className: "overflow-x-auto", children: [!isLoading && data.length > 0 && (_jsxs("div", { className: "flex items-center justify-between px-3 py-2 mb-1", children: [_jsxs("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: ["Showing ", startRow, "\u2013", endRow, " of ", totalRows] }), !manualPagination && (_jsxs("div", { className: "relative", children: [_jsx("svg", { className: "pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-gray-400 dark:text-gray-500", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z" }) }), _jsx("input", { type: "text", value: globalFilter, onChange: e => setGlobalFilter(e.target.value), placeholder: "Filter...", className: "h-7 w-48 rounded border border-gray-300 bg-white pl-8 pr-2 text-xs text-gray-700 placeholder-gray-400 focus:border-blue-400 focus:outline-none focus:ring-1 focus:ring-blue-400 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:placeholder-gray-500" })] }))] })), !isLoading && data.length === 0 && _jsx(EmptyState, { message: emptyMessage }), isLoading && _jsx(SkeletonCards, {}), !isLoading && data.length > 0 && (_jsx("div", { className: "space-y-2", children: table.getRowModel().rows.map(row => {
|
|
58
|
+
const cells = row.getVisibleCells();
|
|
59
|
+
const [first, ...rest] = cells;
|
|
60
|
+
return (_jsxs("div", { role: onRowClick ? 'button' : undefined, tabIndex: onRowClick ? 0 : undefined, onClick: onRowClick ? () => onRowClick(row.original) : undefined, className: `rounded-lg border border-gray-200 bg-white px-4 py-3 transition-colors dark:border-gray-700 dark:bg-gray-800 ${onRowClick ? 'cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700/40' : ''}`, children: [first && (_jsx("div", { className: "font-medium text-gray-900 dark:text-gray-100", children: flexRender(first.column.columnDef.cell, first.getContext()) })), rest.length > 0 && (_jsx("div", { className: "mt-1.5 flex flex-wrap items-center gap-x-4 gap-y-1 text-xs", children: rest.map(cell => (_jsxs("span", { className: "inline-flex items-center gap-1", children: [_jsxs("span", { className: "text-gray-400 dark:text-gray-500", children: [columnLabel(cell.column.columnDef.header, cell.column.id), ":"] }), _jsx("span", { className: "text-gray-700 dark:text-gray-300", children: flexRender(cell.column.columnDef.cell, cell.getContext()) })] }, cell.id))) }))] }, row.id));
|
|
61
|
+
}) })), !isLoading && pageCount > 1 && (_jsxs("div", { className: "flex items-center justify-between px-3 py-2.5 border-t border-gray-200 dark:border-gray-700", children: [_jsxs("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: ["Showing ", startRow, "\u2013", endRow, " of ", totalRows] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { onClick: () => table.setPageIndex(0), disabled: !table.getCanPreviousPage(), className: "px-2 py-1 text-xs rounded border border-gray-300 dark:border-gray-600 disabled:opacity-30 disabled:cursor-not-allowed hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors", "aria-label": "First page", children: "\u00AB" }), _jsx("button", { onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), className: "px-2 py-1 text-xs rounded border border-gray-300 dark:border-gray-600 disabled:opacity-30 disabled:cursor-not-allowed hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors", "aria-label": "Previous page", children: "\u2039" }), Array.from({ length: pageCount }).map((_, i) => {
|
|
60
62
|
// Show first, last, current, and neighbors
|
|
61
63
|
const show = i === 0 || i === pageCount - 1 || Math.abs(i - pageIndex) <= 1;
|
|
62
64
|
const showEllipsis = !show && (i === 1 || i === pageCount - 2) && Math.abs(i - pageIndex) > 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../../src/components/data/DataTable.tsx"],"names":[],"mappings":";AAAA,qDAAqD;AACrD,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,UAAU,GAGX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AA0BjC,SAAS,
|
|
1
|
+
{"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../../src/components/data/DataTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PagesListView.d.ts","sourceRoot":"","sources":["../../../src/components/pages/PagesListView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"PagesListView.d.ts","sourceRoot":"","sources":["../../../src/components/pages/PagesListView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMjE,UAAU,kBAAkB;IAC1B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,kBAAkB,+BA0E9F"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { buildArtifactUrl } from '@sudobility/testomniac_client';
|
|
3
|
+
import { CardGrid } from '@sudobility/components';
|
|
3
4
|
import { useLocalizedNavigate } from '../../hooks/useLocalizedNavigate';
|
|
4
5
|
import { useEnvRoutes } from '../../context/routing';
|
|
5
6
|
export function PagesListView({ pages, runId, screenshotsByPageId, apiUrl }) {
|
|
@@ -9,10 +10,10 @@ export function PagesListView({ pages, runId, screenshotsByPageId, apiUrl }) {
|
|
|
9
10
|
if (sorted.length === 0) {
|
|
10
11
|
return (_jsx("div", { className: "py-8 text-center text-gray-500 dark:text-gray-400", children: "No pages discovered." }));
|
|
11
12
|
}
|
|
12
|
-
return (_jsx(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
return (_jsx(CardGrid, { children: sorted.map(page => {
|
|
14
|
+
const isExternal = page.relativePath.startsWith('http');
|
|
15
|
+
const screenshotPath = screenshotsByPageId?.get(page.id);
|
|
16
|
+
return (_jsxs("div", { role: "button", tabIndex: 0, onClick: () => navigate(runId ? r.runPage(runId, page.id) : r.page(page.id)), className: "flex flex-col overflow-hidden rounded-lg border border-gray-200 bg-white text-left transition-colors dark:border-gray-700 dark:bg-gray-800 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700/40", children: [_jsx("div", { className: "aspect-[16/9] w-full shrink-0 overflow-hidden border-b border-gray-200 bg-gray-100 dark:border-gray-700 dark:bg-gray-900 flex items-center justify-center", children: screenshotPath && apiUrl ? (_jsx("img", { src: buildArtifactUrl(apiUrl, screenshotPath, { thumbnail: true }), alt: "", className: "h-full w-full object-cover object-top", loading: "lazy" })) : (_jsxs("svg", { className: "h-8 w-8 text-gray-300 dark:text-gray-600", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), _jsx("path", { d: "M3 15l5-5 4 4 3-3 6 6" })] })) }), _jsxs("div", { className: "min-w-0 flex-1 p-3", children: [_jsx("div", { className: "truncate text-sm font-medium text-gray-900 dark:text-gray-100", children: page.relativePath }), _jsxs("div", { className: "mt-1.5 flex flex-wrap items-center gap-1", children: [page.routeKey && (_jsx("span", { className: "rounded bg-gray-100 px-1.5 py-0.5 text-[11px] text-gray-500 dark:bg-gray-700 dark:text-gray-400", children: page.routeKey })), page.requiresLogin && (_jsx("span", { className: "rounded bg-yellow-100 px-1.5 py-0.5 text-[11px] text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-300", children: "Login" })), isExternal && (_jsx("span", { className: "rounded bg-gray-100 px-1.5 py-0.5 text-[11px] text-gray-500 dark:bg-gray-700 dark:text-gray-400", children: "external" }))] })] })] }, page.id));
|
|
17
|
+
}) }));
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=PagesListView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PagesListView.js","sourceRoot":"","sources":["../../../src/components/pages/PagesListView.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAWrD,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAsB;IAC7F,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IAEzB,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAEvF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CACL,cAAK,SAAS,EAAC,mDAAmD,qCAA2B,CAC9F,CAAC;IACJ,CAAC;IAED,OAAO,CACL,
|
|
1
|
+
{"version":3,"file":"PagesListView.js","sourceRoot":"","sources":["../../../src/components/pages/PagesListView.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAWrD,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAsB;IAC7F,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IAEzB,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAEvF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CACL,cAAK,SAAS,EAAC,mDAAmD,qCAA2B,CAC9F,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,QAAQ,cACN,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACjB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,cAAc,GAAG,mBAAmB,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEzD,OAAO,CACL,eAEE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAC5E,SAAS,EAAC,sMAAsM,aAEhN,cAAK,SAAS,EAAC,2JAA2J,YACvK,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,CAC1B,cACE,GAAG,EAAE,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAClE,GAAG,EAAC,EAAE,EACN,SAAS,EAAC,uCAAuC,EACjD,OAAO,EAAC,MAAM,GACd,CACH,CAAC,CAAC,CAAC,CACF,eACE,SAAS,EAAC,0CAA0C,EACpD,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,aAEjB,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,GAAG,EAClD,eAAM,CAAC,EAAC,uBAAuB,GAAG,IAC9B,CACP,GACG,EACN,eAAK,SAAS,EAAC,oBAAoB,aACjC,cAAK,SAAS,EAAC,+DAA+D,YAC3E,IAAI,CAAC,YAAY,GACd,EACN,eAAK,SAAS,EAAC,0CAA0C,aACtD,IAAI,CAAC,QAAQ,IAAI,CAChB,eAAM,SAAS,EAAC,iGAAiG,YAC9G,IAAI,CAAC,QAAQ,GACT,CACR,EACA,IAAI,CAAC,aAAa,IAAI,CACrB,eAAM,SAAS,EAAC,4GAA4G,sBAErH,CACR,EACA,UAAU,IAAI,CACb,eAAM,SAAS,EAAC,iGAAiG,yBAE1G,CACR,IACG,IACF,KAhDD,IAAI,CAAC,EAAE,CAiDR,CACP,CAAC;QACJ,CAAC,CAAC,GACO,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -9,7 +9,9 @@ interface PagesMapViewProps {
|
|
|
9
9
|
/** Map of pageId → screenshot artifact path (from page states) */
|
|
10
10
|
screenshotsByPageId?: Map<number, string>;
|
|
11
11
|
apiUrl?: string;
|
|
12
|
+
/** When true, the map fills its parent's height instead of a fixed 600px box. */
|
|
13
|
+
fill?: boolean;
|
|
12
14
|
}
|
|
13
|
-
export declare function PagesMapView({ pages, testInteractions, runId, screenshotsByPageId, apiUrl, }: PagesMapViewProps): import("react").JSX.Element;
|
|
15
|
+
export declare function PagesMapView({ pages, testInteractions, runId, screenshotsByPageId, apiUrl, fill, }: PagesMapViewProps): import("react").JSX.Element;
|
|
14
16
|
export {};
|
|
15
17
|
//# sourceMappingURL=PagesMapView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PagesMapView.d.ts","sourceRoot":"","sources":["../../../src/components/pages/PagesMapView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAkB1F,OAAO,8BAA8B,CAAC;AA6HtC,UAAU,iBAAiB;IACzB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"PagesMapView.d.ts","sourceRoot":"","sources":["../../../src/components/pages/PagesMapView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAkB1F,OAAO,8BAA8B,CAAC;AA6HtC,UAAU,iBAAiB;IACzB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,gBAAgB,EAChB,KAAK,EACL,mBAAmB,EACnB,MAAM,EACN,IAAY,GACb,EAAE,iBAAiB,+BAoOnB"}
|
|
@@ -58,7 +58,7 @@ function getPathDepth(path) {
|
|
|
58
58
|
return 0;
|
|
59
59
|
return path.split('/').filter(Boolean).length;
|
|
60
60
|
}
|
|
61
|
-
export function PagesMapView({ pages, testInteractions, runId, screenshotsByPageId, apiUrl, }) {
|
|
61
|
+
export function PagesMapView({ pages, testInteractions, runId, screenshotsByPageId, apiUrl, fill = false, }) {
|
|
62
62
|
const { navigate } = useLocalizedNavigate();
|
|
63
63
|
const r = useEnvRoutes();
|
|
64
64
|
const { initialNodes, initialEdges, hiddenInteractionCount } = useMemo(() => {
|
|
@@ -226,6 +226,6 @@ export function PagesMapView({ pages, testInteractions, runId, screenshotsByPage
|
|
|
226
226
|
if (pages.length === 0) {
|
|
227
227
|
return (_jsx("div", { className: "flex h-[500px] items-center justify-center rounded-lg border border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800", children: _jsx("p", { className: "text-gray-500 dark:text-gray-400", children: "No page connections to display. Run a scan to discover navigation flows." }) }));
|
|
228
228
|
}
|
|
229
|
-
return (_jsxs("div", { className:
|
|
229
|
+
return (_jsxs("div", { className: fill ? 'flex h-full flex-col gap-2' : 'space-y-2', children: [hiddenInteractionCount > 0 && (_jsxs("p", { className: "flex-shrink-0 text-xs text-gray-500 dark:text-gray-400", children: [hiddenInteractionCount, " interaction", hiddenInteractionCount === 1 ? '' : 's', " omitted (no cross-page connection)."] })), _jsx("div", { className: `w-full overflow-hidden rounded-lg border border-gray-200 dark:border-gray-700 ${fill ? 'min-h-0 flex-1' : 'h-[600px]'}`, children: _jsxs(ReactFlow, { nodes: nodes, edges: edges, nodeTypes: nodeTypes, edgeTypes: edgeTypes, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, onNodeDoubleClick: handleNodeDoubleClick, fitView: true, className: "bg-gray-50 dark:bg-gray-900", children: [_jsx(Background, {}), _jsx(Controls, {}), _jsx(MiniMap, {})] }) })] }));
|
|
230
230
|
}
|
|
231
231
|
//# sourceMappingURL=PagesMapView.js.map
|