@sudobility/testomniac_ui 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -0
- package/dist/components/bundles/AddToBundleButton.d.ts +8 -0
- package/dist/components/bundles/AddToBundleButton.d.ts.map +1 -0
- package/dist/components/bundles/AddToBundleButton.js +64 -0
- package/dist/components/bundles/AddToBundleButton.js.map +1 -0
- package/dist/components/cells/BundleCell.d.ts +10 -0
- package/dist/components/cells/BundleCell.d.ts.map +1 -0
- package/dist/components/cells/BundleCell.js +8 -0
- package/dist/components/cells/BundleCell.js.map +1 -0
- package/dist/components/cells/InteractionCell.d.ts +17 -0
- package/dist/components/cells/InteractionCell.d.ts.map +1 -0
- package/dist/components/cells/InteractionCell.js +13 -0
- package/dist/components/cells/InteractionCell.js.map +1 -0
- package/dist/components/cells/ListCell.d.ts +29 -0
- package/dist/components/cells/ListCell.d.ts.map +1 -0
- package/dist/components/cells/ListCell.js +19 -0
- package/dist/components/cells/ListCell.js.map +1 -0
- package/dist/components/cells/PersonaCell.d.ts +10 -0
- package/dist/components/cells/PersonaCell.d.ts.map +1 -0
- package/dist/components/cells/PersonaCell.js +7 -0
- package/dist/components/cells/PersonaCell.js.map +1 -0
- package/dist/components/cells/ScaffoldCell.d.ts +12 -0
- package/dist/components/cells/ScaffoldCell.d.ts.map +1 -0
- package/dist/components/cells/ScaffoldCell.js +10 -0
- package/dist/components/cells/ScaffoldCell.js.map +1 -0
- package/dist/components/cells/ScenarioCell.d.ts +12 -0
- package/dist/components/cells/ScenarioCell.d.ts.map +1 -0
- package/dist/components/cells/ScenarioCell.js +8 -0
- package/dist/components/cells/ScenarioCell.js.map +1 -0
- package/dist/components/cells/SurfaceCell.d.ts +14 -0
- package/dist/components/cells/SurfaceCell.d.ts.map +1 -0
- package/dist/components/cells/SurfaceCell.js +23 -0
- package/dist/components/cells/SurfaceCell.js.map +1 -0
- package/dist/components/cells/index.d.ts +9 -0
- package/dist/components/cells/index.d.ts.map +1 -0
- package/dist/components/cells/index.js +9 -0
- package/dist/components/cells/index.js.map +1 -0
- package/dist/components/cells/scaffoldMeta.d.ts +6 -0
- package/dist/components/cells/scaffoldMeta.d.ts.map +1 -0
- package/dist/components/cells/scaffoldMeta.js +47 -0
- package/dist/components/cells/scaffoldMeta.js.map +1 -0
- package/dist/components/dashboard/DashboardSidebar.d.ts +6 -0
- package/dist/components/dashboard/DashboardSidebar.d.ts.map +1 -0
- package/dist/components/dashboard/DashboardSidebar.js +163 -0
- package/dist/components/dashboard/DashboardSidebar.js.map +1 -0
- package/dist/components/data/DataTable.d.ts +16 -0
- package/dist/components/data/DataTable.d.ts.map +1 -0
- package/dist/components/data/DataTable.js +54 -0
- package/dist/components/data/DataTable.js.map +1 -0
- package/dist/components/data/JsonViewer.d.ts +6 -0
- package/dist/components/data/JsonViewer.d.ts.map +1 -0
- package/dist/components/data/JsonViewer.js +5 -0
- package/dist/components/data/JsonViewer.js.map +1 -0
- package/dist/components/data/index.d.ts +3 -0
- package/dist/components/data/index.d.ts.map +1 -0
- package/dist/components/data/index.js +3 -0
- package/dist/components/data/index.js.map +1 -0
- package/dist/components/forms/SelectField.d.ts +22 -0
- package/dist/components/forms/SelectField.d.ts.map +1 -0
- package/dist/components/forms/SelectField.js +14 -0
- package/dist/components/forms/SelectField.js.map +1 -0
- package/dist/components/navigation/BackLink.d.ts +7 -0
- package/dist/components/navigation/BackLink.d.ts.map +1 -0
- package/dist/components/navigation/BackLink.js +6 -0
- package/dist/components/navigation/BackLink.js.map +1 -0
- package/dist/components/pages/PagesListView.d.ts +12 -0
- package/dist/components/pages/PagesListView.d.ts.map +1 -0
- package/dist/components/pages/PagesListView.js +19 -0
- package/dist/components/pages/PagesListView.js.map +1 -0
- package/dist/components/pages/PagesMapView.d.ts +15 -0
- package/dist/components/pages/PagesMapView.d.ts.map +1 -0
- package/dist/components/pages/PagesMapView.js +232 -0
- package/dist/components/pages/PagesMapView.js.map +1 -0
- package/dist/components/scanner/EventLog.d.ts +8 -0
- package/dist/components/scanner/EventLog.d.ts.map +1 -0
- package/dist/components/scanner/EventLog.js +18 -0
- package/dist/components/scanner/EventLog.js.map +1 -0
- package/dist/components/scanner/LiveCounters.d.ts +9 -0
- package/dist/components/scanner/LiveCounters.d.ts.map +1 -0
- package/dist/components/scanner/LiveCounters.js +33 -0
- package/dist/components/scanner/LiveCounters.js.map +1 -0
- package/dist/components/scanner/PhaseIndicator.d.ts +6 -0
- package/dist/components/scanner/PhaseIndicator.d.ts.map +1 -0
- package/dist/components/scanner/PhaseIndicator.js +31 -0
- package/dist/components/scanner/PhaseIndicator.js.map +1 -0
- package/dist/components/scanner/RunSummaryCard.d.ts +12 -0
- package/dist/components/scanner/RunSummaryCard.d.ts.map +1 -0
- package/dist/components/scanner/RunSummaryCard.js +7 -0
- package/dist/components/scanner/RunSummaryCard.js.map +1 -0
- package/dist/components/scanner/ScanForm.d.ts +9 -0
- package/dist/components/scanner/ScanForm.d.ts.map +1 -0
- package/dist/components/scanner/ScanForm.js +31 -0
- package/dist/components/scanner/ScanForm.js.map +1 -0
- package/dist/components/scanner/ScanProgressPanel.d.ts +16 -0
- package/dist/components/scanner/ScanProgressPanel.d.ts.map +1 -0
- package/dist/components/scanner/ScanProgressPanel.js +8 -0
- package/dist/components/scanner/ScanProgressPanel.js.map +1 -0
- package/dist/components/scanner/StatusBadge.d.ts +7 -0
- package/dist/components/scanner/StatusBadge.d.ts.map +1 -0
- package/dist/components/scanner/StatusBadge.js +65 -0
- package/dist/components/scanner/StatusBadge.js.map +1 -0
- package/dist/components/scanner/index.d.ts +8 -0
- package/dist/components/scanner/index.d.ts.map +1 -0
- package/dist/components/scanner/index.js +8 -0
- package/dist/components/scanner/index.js.map +1 -0
- package/dist/components/scenarios/AddScenarioForm.d.ts +14 -0
- package/dist/components/scenarios/AddScenarioForm.d.ts.map +1 -0
- package/dist/components/scenarios/AddScenarioForm.js +43 -0
- package/dist/components/scenarios/AddScenarioForm.js.map +1 -0
- package/dist/components/scripts/ScriptPanel.d.ts +17 -0
- package/dist/components/scripts/ScriptPanel.d.ts.map +1 -0
- package/dist/components/scripts/ScriptPanel.js +32 -0
- package/dist/components/scripts/ScriptPanel.js.map +1 -0
- package/dist/components/states/index.d.ts +19 -0
- package/dist/components/states/index.d.ts.map +1 -0
- package/dist/components/states/index.js +16 -0
- package/dist/components/states/index.js.map +1 -0
- package/dist/config/priorityConfig.d.ts +12 -0
- package/dist/config/priorityConfig.d.ts.map +1 -0
- package/dist/config/priorityConfig.js +39 -0
- package/dist/config/priorityConfig.js.map +1 -0
- package/dist/context/config.d.ts +53 -0
- package/dist/context/config.d.ts.map +1 -0
- package/dist/context/config.js +32 -0
- package/dist/context/config.js.map +1 -0
- package/dist/context/routing.d.ts +42 -0
- package/dist/context/routing.d.ts.map +1 -0
- package/dist/context/routing.js +33 -0
- package/dist/context/routing.js.map +1 -0
- package/dist/hooks/useDashboardEnvironmentContext.d.ts +15 -0
- package/dist/hooks/useDashboardEnvironmentContext.d.ts.map +1 -0
- package/dist/hooks/useDashboardEnvironmentContext.js +89 -0
- package/dist/hooks/useDashboardEnvironmentContext.js.map +1 -0
- package/dist/hooks/useEnvBasePath.d.ts +8 -0
- package/dist/hooks/useEnvBasePath.d.ts.map +1 -0
- package/dist/hooks/useEnvBasePath.js +12 -0
- package/dist/hooks/useEnvBasePath.js.map +1 -0
- package/dist/hooks/useLocalizedNavigate.d.ts +12 -0
- package/dist/hooks/useLocalizedNavigate.d.ts.map +1 -0
- package/dist/hooks/useLocalizedNavigate.js +14 -0
- package/dist/hooks/useLocalizedNavigate.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/dist/pages/BundleDetailPage.d.ts +2 -0
- package/dist/pages/BundleDetailPage.d.ts.map +1 -0
- package/dist/pages/BundleDetailPage.js +155 -0
- package/dist/pages/BundleDetailPage.js.map +1 -0
- package/dist/pages/BundlesPage.d.ts +2 -0
- package/dist/pages/BundlesPage.d.ts.map +1 -0
- package/dist/pages/BundlesPage.js +61 -0
- package/dist/pages/BundlesPage.js.map +1 -0
- package/dist/pages/DashboardOverview.d.ts +2 -0
- package/dist/pages/DashboardOverview.d.ts.map +1 -0
- package/dist/pages/DashboardOverview.js +179 -0
- package/dist/pages/DashboardOverview.js.map +1 -0
- package/dist/pages/FindingsListPage.d.ts +2 -0
- package/dist/pages/FindingsListPage.d.ts.map +1 -0
- package/dist/pages/FindingsListPage.js +160 -0
- package/dist/pages/FindingsListPage.js.map +1 -0
- package/dist/pages/PageDetailPage.d.ts +2 -0
- package/dist/pages/PageDetailPage.d.ts.map +1 -0
- package/dist/pages/PageDetailPage.js +120 -0
- package/dist/pages/PageDetailPage.js.map +1 -0
- package/dist/pages/PageGraphPage.d.ts +3 -0
- package/dist/pages/PageGraphPage.d.ts.map +1 -0
- package/dist/pages/PageGraphPage.js +72 -0
- package/dist/pages/PageGraphPage.js.map +1 -0
- package/dist/pages/PageStateDetailPage.d.ts +2 -0
- package/dist/pages/PageStateDetailPage.d.ts.map +1 -0
- package/dist/pages/PageStateDetailPage.js +69 -0
- package/dist/pages/PageStateDetailPage.js.map +1 -0
- package/dist/pages/PagesPage.d.ts +2 -0
- package/dist/pages/PagesPage.d.ts.map +1 -0
- package/dist/pages/PagesPage.js +83 -0
- package/dist/pages/PagesPage.js.map +1 -0
- package/dist/pages/PatternsPage.d.ts +2 -0
- package/dist/pages/PatternsPage.d.ts.map +1 -0
- package/dist/pages/PatternsPage.js +102 -0
- package/dist/pages/PatternsPage.js.map +1 -0
- package/dist/pages/PersonasPage.d.ts +2 -0
- package/dist/pages/PersonasPage.d.ts.map +1 -0
- package/dist/pages/PersonasPage.js +151 -0
- package/dist/pages/PersonasPage.js.map +1 -0
- package/dist/pages/RunRedirect.d.ts +2 -0
- package/dist/pages/RunRedirect.d.ts.map +1 -0
- package/dist/pages/RunRedirect.js +25 -0
- package/dist/pages/RunRedirect.js.map +1 -0
- package/dist/pages/RunSurfaceRunDetailPage.d.ts +2 -0
- package/dist/pages/RunSurfaceRunDetailPage.d.ts.map +1 -0
- package/dist/pages/RunSurfaceRunDetailPage.js +38 -0
- package/dist/pages/RunSurfaceRunDetailPage.js.map +1 -0
- package/dist/pages/RunSurfaceRunsPage.d.ts +2 -0
- package/dist/pages/RunSurfaceRunsPage.d.ts.map +1 -0
- package/dist/pages/RunSurfaceRunsPage.js +35 -0
- package/dist/pages/RunSurfaceRunsPage.js.map +1 -0
- package/dist/pages/RunTestInteractionRunDetailPage.d.ts +2 -0
- package/dist/pages/RunTestInteractionRunDetailPage.d.ts.map +1 -0
- package/dist/pages/RunTestInteractionRunDetailPage.js +55 -0
- package/dist/pages/RunTestInteractionRunDetailPage.js.map +1 -0
- package/dist/pages/RunTestInteractionRunsPage.d.ts +2 -0
- package/dist/pages/RunTestInteractionRunsPage.d.ts.map +1 -0
- package/dist/pages/RunTestInteractionRunsPage.js +38 -0
- package/dist/pages/RunTestInteractionRunsPage.js.map +1 -0
- package/dist/pages/RunnerGraphPage.d.ts +3 -0
- package/dist/pages/RunnerGraphPage.d.ts.map +1 -0
- package/dist/pages/RunnerGraphPage.js +86 -0
- package/dist/pages/RunnerGraphPage.js.map +1 -0
- package/dist/pages/ScaffoldDetailPage.d.ts +2 -0
- package/dist/pages/ScaffoldDetailPage.d.ts.map +1 -0
- package/dist/pages/ScaffoldDetailPage.js +56 -0
- package/dist/pages/ScaffoldDetailPage.js.map +1 -0
- package/dist/pages/ScaffoldsPage.d.ts +2 -0
- package/dist/pages/ScaffoldsPage.d.ts.map +1 -0
- package/dist/pages/ScaffoldsPage.js +35 -0
- package/dist/pages/ScaffoldsPage.js.map +1 -0
- package/dist/pages/ScanProgressPage.d.ts +2 -0
- package/dist/pages/ScanProgressPage.d.ts.map +1 -0
- package/dist/pages/ScanProgressPage.js +30 -0
- package/dist/pages/ScanProgressPage.js.map +1 -0
- package/dist/pages/SchedulesPage.d.ts +2 -0
- package/dist/pages/SchedulesPage.d.ts.map +1 -0
- package/dist/pages/SchedulesPage.js +165 -0
- package/dist/pages/SchedulesPage.js.map +1 -0
- package/dist/pages/StartScanPage.d.ts +2 -0
- package/dist/pages/StartScanPage.d.ts.map +1 -0
- package/dist/pages/StartScanPage.js +97 -0
- package/dist/pages/StartScanPage.js.map +1 -0
- package/dist/pages/TestInteractionDetailPage.d.ts +2 -0
- package/dist/pages/TestInteractionDetailPage.d.ts.map +1 -0
- package/dist/pages/TestInteractionDetailPage.js +60 -0
- package/dist/pages/TestInteractionDetailPage.js.map +1 -0
- package/dist/pages/TestInteractionsPage.d.ts +2 -0
- package/dist/pages/TestInteractionsPage.d.ts.map +1 -0
- package/dist/pages/TestInteractionsPage.js +96 -0
- package/dist/pages/TestInteractionsPage.js.map +1 -0
- package/dist/pages/TestRunDetailPage.d.ts +2 -0
- package/dist/pages/TestRunDetailPage.d.ts.map +1 -0
- package/dist/pages/TestRunDetailPage.js +81 -0
- package/dist/pages/TestRunDetailPage.js.map +1 -0
- package/dist/pages/TestRunsListPage.d.ts +2 -0
- package/dist/pages/TestRunsListPage.d.ts.map +1 -0
- package/dist/pages/TestRunsListPage.js +18 -0
- package/dist/pages/TestRunsListPage.js.map +1 -0
- package/dist/pages/TestScenarioDetailPage.d.ts +2 -0
- package/dist/pages/TestScenarioDetailPage.d.ts.map +1 -0
- package/dist/pages/TestScenarioDetailPage.js +101 -0
- package/dist/pages/TestScenarioDetailPage.js.map +1 -0
- package/dist/pages/TestScenariosPage.d.ts +2 -0
- package/dist/pages/TestScenariosPage.d.ts.map +1 -0
- package/dist/pages/TestScenariosPage.js +73 -0
- package/dist/pages/TestScenariosPage.js.map +1 -0
- package/dist/pages/TestSurfaceDetailPage.d.ts +2 -0
- package/dist/pages/TestSurfaceDetailPage.d.ts.map +1 -0
- package/dist/pages/TestSurfaceDetailPage.js +33 -0
- package/dist/pages/TestSurfaceDetailPage.js.map +1 -0
- package/dist/pages/TestSurfacesListPage.d.ts +2 -0
- package/dist/pages/TestSurfacesListPage.d.ts.map +1 -0
- package/dist/pages/TestSurfacesListPage.js +73 -0
- package/dist/pages/TestSurfacesListPage.js.map +1 -0
- package/dist/utils/formatDateTime.d.ts +13 -0
- package/dist/utils/formatDateTime.d.ts.map +1 -0
- package/dist/utils/formatDateTime.js +27 -0
- package/dist/utils/formatDateTime.js.map +1 -0
- package/package.json +72 -0
package/README.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# @sudobility/testomniac_ui
|
|
2
|
+
|
|
3
|
+
Shared **dashboard UI** for Testomniac apps — the environment-scoped pages
|
|
4
|
+
(test surfaces, runs, findings, pages, scaffolds, patterns, personas, schedules,
|
|
5
|
+
bundles, scenarios, graphs) and their components, extracted from `testomniac_app`
|
|
6
|
+
so they can be reused in `testomniac_extension` and other hosts.
|
|
7
|
+
|
|
8
|
+
The library is **router-agnostic and i18n-free**: it never imports
|
|
9
|
+
`react-router-dom`, `@sudobility/building_blocks`, or app constants. The host
|
|
10
|
+
supplies routing, the API client, and (optionally) SEO via two context
|
|
11
|
+
providers.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
bun add @sudobility/testomniac_ui
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Peer deps: `react`, `react-dom`, `@tanstack/react-query`, `@tanstack/react-table`,
|
|
20
|
+
`@xyflow/react`, `@heroicons/react`, and `@sudobility/{components,design,testomniac_client,testomniac_lib,testomniac_types,types}`.
|
|
21
|
+
|
|
22
|
+
## Host integration
|
|
23
|
+
|
|
24
|
+
The library reads everything host-specific from two contexts:
|
|
25
|
+
|
|
26
|
+
| Concern | Provider | Library hook used by pages |
|
|
27
|
+
| --- | --- | --- |
|
|
28
|
+
| API client + auth + SEO | `TestomniacUiProvider` | `useTestomniacApi()` → `{ networkClient, token, baseUrl }`, `<SEOHead/>` |
|
|
29
|
+
| Routing (params + navigate) | `RoutingProvider` | `useRouteParams()`, `useLocalizedNavigate()`, `useEnvBasePath()`, `<Redirect/>` |
|
|
30
|
+
|
|
31
|
+
`TestomniacUiProvider` is mounted once (it carries the network client + token +
|
|
32
|
+
API URL + optional SEO component). `RoutingProvider` is mounted per rendered
|
|
33
|
+
page/route, fed by whatever routing the host uses.
|
|
34
|
+
|
|
35
|
+
### Web app (react-router)
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
// Bridge (mounted once, inside the auth provider so useApi resolves)
|
|
39
|
+
<TestomniacUiProvider
|
|
40
|
+
networkClient={networkClient}
|
|
41
|
+
token={token ?? ''}
|
|
42
|
+
apiUrl={API_URL}
|
|
43
|
+
SeoHead={SEOHead} // your Helmet-based component
|
|
44
|
+
>
|
|
45
|
+
<Routes>…</Routes>
|
|
46
|
+
</TestomniacUiProvider>
|
|
47
|
+
|
|
48
|
+
// Per-route adapter (feeds react-router params + navigation into the lib)
|
|
49
|
+
function UiRoute({ children }) {
|
|
50
|
+
const params = useParams();
|
|
51
|
+
const { pathname } = useLocation();
|
|
52
|
+
const navigate = useNavigate();
|
|
53
|
+
return (
|
|
54
|
+
<RoutingProvider
|
|
55
|
+
params={params}
|
|
56
|
+
pathname={pathname}
|
|
57
|
+
currentLanguage={lang}
|
|
58
|
+
navigate={(p, o) => navigate(`/${lang}${p}`, o)}
|
|
59
|
+
>
|
|
60
|
+
{children}
|
|
61
|
+
</RoutingProvider>
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
<Route path="environments/:envId/test-surfaces"
|
|
66
|
+
element={<UiRoute><TestSurfacesListPage /></UiRoute>} />
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Extension (no router)
|
|
70
|
+
|
|
71
|
+
Provide `RoutingProvider` with state-based params + a `navigate` that updates
|
|
72
|
+
your view state (mount pages under a `MemoryRouter`-free setup; the library
|
|
73
|
+
needs no router). Omit `SeoHead` so `<SEOHead/>` renders nothing.
|
|
74
|
+
|
|
75
|
+
## Build
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
bun run build # tsc -> dist/ (ESM + .d.ts)
|
|
79
|
+
bun run verify # typecheck + lint + format:check
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
No bundler, no Tailwind emission — the host app's Tailwind picks up the class
|
|
83
|
+
names (add `node_modules/@sudobility/testomniac_ui` to its `content` globs).
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type ItemType = 'surface' | 'interaction' | 'scenario';
|
|
2
|
+
interface AddToBundleButtonProps {
|
|
3
|
+
itemType: ItemType;
|
|
4
|
+
itemId: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function AddToBundleButton({ itemType, itemId }: AddToBundleButtonProps): import("react").JSX.Element | null;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=AddToBundleButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddToBundleButton.d.ts","sourceRoot":"","sources":["../../../src/components/bundles/AddToBundleButton.tsx"],"names":[],"mappings":"AAOA,KAAK,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEvD,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,sBAAsB,sCA4F7E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef, useEffect, useMemo } from 'react';
|
|
3
|
+
import { useMutation } from '@tanstack/react-query';
|
|
4
|
+
import { Button } from '@sudobility/components';
|
|
5
|
+
import { useRunnerTestSurfaceBundles, TestomniacClient } from '@sudobility/testomniac_client';
|
|
6
|
+
import { useTestomniacApi } from '../../context/config';
|
|
7
|
+
import { useDashboardEnvironmentContext } from '../../hooks/useDashboardEnvironmentContext';
|
|
8
|
+
export function AddToBundleButton({ itemType, itemId }) {
|
|
9
|
+
const { networkClient, token, primaryRunner } = useDashboardEnvironmentContext();
|
|
10
|
+
const { baseUrl } = useTestomniacApi();
|
|
11
|
+
const runnerId = primaryRunner?.id ?? 0;
|
|
12
|
+
const [open, setOpen] = useState(false);
|
|
13
|
+
const [feedback, setFeedback] = useState(null);
|
|
14
|
+
const menuRef = useRef(null);
|
|
15
|
+
const { bundles } = useRunnerTestSurfaceBundles({
|
|
16
|
+
networkClient,
|
|
17
|
+
baseUrl,
|
|
18
|
+
runnerId,
|
|
19
|
+
token,
|
|
20
|
+
enabled: !!token && !!primaryRunner,
|
|
21
|
+
});
|
|
22
|
+
const nonDiscoveryBundles = useMemo(() => bundles.filter(b => b.title !== 'Discovery'), [bundles]);
|
|
23
|
+
const client = useMemo(() => new TestomniacClient({ baseUrl, networkClient }), [networkClient, baseUrl]);
|
|
24
|
+
const mutation = useMutation({
|
|
25
|
+
mutationFn: async (bundleId) => {
|
|
26
|
+
if (itemType === 'surface') {
|
|
27
|
+
return client.addSurfaceToBundle(runnerId, bundleId, itemId, token);
|
|
28
|
+
}
|
|
29
|
+
else if (itemType === 'interaction') {
|
|
30
|
+
return client.addInteractionToBundle(runnerId, bundleId, itemId, token);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return client.addScenarioToBundle(runnerId, bundleId, itemId, token);
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (!open)
|
|
39
|
+
return;
|
|
40
|
+
function handleClickOutside(e) {
|
|
41
|
+
if (menuRef.current && !menuRef.current.contains(e.target)) {
|
|
42
|
+
setOpen(false);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
46
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
47
|
+
}, [open]);
|
|
48
|
+
const handleSelect = async (bundleId, bundleTitle) => {
|
|
49
|
+
setOpen(false);
|
|
50
|
+
setFeedback(null);
|
|
51
|
+
try {
|
|
52
|
+
await mutation.mutateAsync(bundleId);
|
|
53
|
+
setFeedback(`Added to "${bundleTitle}"`);
|
|
54
|
+
setTimeout(() => setFeedback(null), 3000);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
setFeedback(err instanceof Error ? err.message : 'Failed to add to bundle');
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
if (!primaryRunner || nonDiscoveryBundles.length === 0)
|
|
61
|
+
return null;
|
|
62
|
+
return (_jsxs("div", { className: "relative", ref: menuRef, children: [_jsx(Button, { type: "button", variant: "outline", onClick: () => setOpen(prev => !prev), disabled: mutation.isPending, children: mutation.isPending ? 'Adding...' : 'Add to Bundle' }), feedback && (_jsx("span", { className: "ml-2 text-xs text-green-600 dark:text-green-400", children: feedback })), open && (_jsx("div", { className: "absolute right-0 top-full z-10 mt-1 w-56 rounded-lg border border-gray-200 bg-white py-1 shadow-lg dark:border-gray-700 dark:bg-gray-800", children: nonDiscoveryBundles.map(bundle => (_jsx("button", { onClick: () => handleSelect(bundle.id, bundle.title), className: "w-full px-3 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700", children: bundle.title }, bundle.id))) }))] }));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=AddToBundleButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddToBundleButton.js","sourceRoot":"","sources":["../../../src/components/bundles/AddToBundleButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { TestSurfaceBundleResponse } from '@sudobility/testomniac_types';
|
|
3
|
+
export interface BundleCellProps {
|
|
4
|
+
bundle: TestSurfaceBundleResponse;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
actions?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
/** 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;
|
|
10
|
+
//# sourceMappingURL=BundleCell.d.ts.map
|
|
@@ -0,0 +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;AAG9E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,oHAAoH;AACpH,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,eAAe,+BAoBvE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ListCell, ChevronRight } from './ListCell';
|
|
3
|
+
/** Canonical cell for a TestSurfaceBundle — title (with an "auto" tag for the Discovery bundle) and description. */
|
|
4
|
+
export function BundleCell({ bundle, onClick, actions }) {
|
|
5
|
+
const isAuto = bundle.title === 'Discovery';
|
|
6
|
+
return (_jsx(ListCell, { title: _jsxs("span", { className: "inline-flex items-center", children: [bundle.title, isAuto && (_jsx("span", { className: "ml-2 rounded bg-gray-100 px-1.5 py-0.5 text-[11px] text-gray-500 dark:bg-gray-700 dark:text-gray-400", children: "auto" }))] }), subtitle: bundle.description || undefined, trailing: onClick ? _jsx(ChevronRight, {}) : undefined, actions: actions, onClick: onClick }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=BundleCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BundleCell.js","sourceRoot":"","sources":["../../../src/components/cells/BundleCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQpD,oHAAoH;AACpH,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAmB;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC;IAC5C,OAAO,CACL,KAAC,QAAQ,IACP,KAAK,EACH,gBAAM,SAAS,EAAC,0BAA0B,aACvC,MAAM,CAAC,KAAK,EACZ,MAAM,IAAI,CACT,eAAM,SAAS,EAAC,sGAAsG,qBAE/G,CACR,IACI,EAET,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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { TestInteractionResponse } from '@sudobility/testomniac_types';
|
|
3
|
+
export interface InteractionCellProps {
|
|
4
|
+
interaction: TestInteractionResponse;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
actions?: ReactNode;
|
|
7
|
+
/** Optional leading content (e.g. a step number inside a sequence). */
|
|
8
|
+
leading?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Canonical cell for a TestInteraction — title over its starting path, with the
|
|
12
|
+
* test-type badge trailing. Matches the Test Interactions screen so the same
|
|
13
|
+
* interaction looks identical everywhere it appears (sequences, bundles,
|
|
14
|
+
* scaffolds, page detail, …).
|
|
15
|
+
*/
|
|
16
|
+
export declare function InteractionCell({ interaction, onClick, actions, leading }: InteractionCellProps): import("react").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=InteractionCell.d.ts.map
|
|
@@ -0,0 +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;AAI5E,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;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,oBAAoB,+BAW/F"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { StatusBadge } from '../scanner/StatusBadge';
|
|
3
|
+
import { ListCell } from './ListCell';
|
|
4
|
+
/**
|
|
5
|
+
* Canonical cell for a TestInteraction — title over its starting path, with the
|
|
6
|
+
* test-type badge trailing. Matches the Test Interactions screen so the same
|
|
7
|
+
* interaction looks identical everywhere it appears (sequences, bundles,
|
|
8
|
+
* scaffolds, page detail, …).
|
|
9
|
+
*/
|
|
10
|
+
export function InteractionCell({ interaction, onClick, actions, leading }) {
|
|
11
|
+
return (_jsx(ListCell, { leading: leading, title: interaction.title, subtitle: interaction.startingPath || '/', trailing: _jsx(StatusBadge, { status: interaction.testType }), actions: actions, onClick: onClick }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=InteractionCell.js.map
|
|
@@ -0,0 +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;AAUtC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAwB;IAC9F,OAAO,CACL,KAAC,QAAQ,IACP,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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface ListCellProps {
|
|
3
|
+
/** Optional leading icon / indicator. */
|
|
4
|
+
leading?: ReactNode;
|
|
5
|
+
/** Primary line (object name). */
|
|
6
|
+
title: ReactNode;
|
|
7
|
+
/** Secondary line (path, description, etc.). */
|
|
8
|
+
subtitle?: ReactNode;
|
|
9
|
+
/** Non-interactive trailing content — badges, status, counts. */
|
|
10
|
+
trailing?: ReactNode;
|
|
11
|
+
/** Interactive trailing content — buttons (Edit/Delete/Remove/menu). */
|
|
12
|
+
actions?: ReactNode;
|
|
13
|
+
/** When provided, the title/subtitle area becomes a clickable button. */
|
|
14
|
+
onClick?: () => void;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The canonical list/cell layout shared by every object cell.
|
|
19
|
+
*
|
|
20
|
+
* Renders a bordered row with an optional leading icon, a title over an
|
|
21
|
+
* optional subtitle, and a trailing area for badges (`trailing`) and buttons
|
|
22
|
+
* (`actions`). When `onClick` is set, only the title/subtitle area is the
|
|
23
|
+
* clickable target, so `actions` stay independently clickable without needing
|
|
24
|
+
* to stop event propagation.
|
|
25
|
+
*/
|
|
26
|
+
export declare function ListCell({ leading, title, subtitle, trailing, actions, onClick, className, }: ListCellProps): import("react").JSX.Element;
|
|
27
|
+
/** Small right-chevron used as a trailing affordance on navigable cells. */
|
|
28
|
+
export declare function ChevronRight(): import("react").JSX.Element;
|
|
29
|
+
//# sourceMappingURL=ListCell.d.ts.map
|
|
@@ -0,0 +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,+BA0Cf;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,gCAY3B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The canonical list/cell layout shared by every object cell.
|
|
4
|
+
*
|
|
5
|
+
* Renders a bordered row with an optional leading icon, a title over an
|
|
6
|
+
* optional subtitle, and a trailing area for badges (`trailing`) and buttons
|
|
7
|
+
* (`actions`). When `onClick` is set, only the title/subtitle area is the
|
|
8
|
+
* clickable target, so `actions` stay independently clickable without needing
|
|
9
|
+
* to stop event propagation.
|
|
10
|
+
*/
|
|
11
|
+
export function ListCell({ leading, title, subtitle, trailing, actions, onClick, className = '', }) {
|
|
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] }))] }));
|
|
14
|
+
}
|
|
15
|
+
/** Small right-chevron used as a trailing affordance on navigable cells. */
|
|
16
|
+
export function ChevronRight() {
|
|
17
|
+
return (_jsx("svg", { className: "h-4 w-4 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: "M9 5l7 7-7 7" }) }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ListCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListCell.js","sourceRoot":"","sources":["../../../src/components/cells/ListCell.tsx"],"names":[],"mappings":";AAkBA;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,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,sIACT,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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { PersonaResponse } from '@sudobility/testomniac_types';
|
|
3
|
+
export interface PersonaCellProps {
|
|
4
|
+
persona: PersonaResponse;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
actions?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
/** 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;
|
|
10
|
+
//# sourceMappingURL=PersonaCell.d.ts.map
|
|
@@ -0,0 +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;AAGpE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,2FAA2F;AAC3F,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,gBAAgB,+BAS1E"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ListCell } from './ListCell';
|
|
3
|
+
/** Canonical cell for a Persona — title over description, with action buttons trailing. */
|
|
4
|
+
export function PersonaCell({ persona, onClick, actions }) {
|
|
5
|
+
return (_jsx(ListCell, { title: persona.title, subtitle: persona.description || undefined, actions: actions, onClick: onClick }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=PersonaCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersonaCell.js","sourceRoot":"","sources":["../../../src/components/cells/PersonaCell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,2FAA2F;AAC3F,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAoB;IACzE,OAAO,CACL,KAAC,QAAQ,IACP,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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { ScaffoldResponse } from '@sudobility/testomniac_types';
|
|
3
|
+
export interface ScaffoldCellProps {
|
|
4
|
+
scaffold: ScaffoldResponse;
|
|
5
|
+
/** Number of pages using this scaffold (rendered as the subtitle). */
|
|
6
|
+
pageCount?: number;
|
|
7
|
+
onClick?: () => void;
|
|
8
|
+
actions?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
/** 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;
|
|
12
|
+
//# sourceMappingURL=ScaffoldCell.d.ts.map
|
|
@@ -0,0 +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;AAIrE,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;CACrB;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,iBAAiB,+BAexF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ListCell, ChevronRight } from './ListCell';
|
|
3
|
+
import { SCAFFOLD_ICONS, SCAFFOLD_LABELS } from './scaffoldMeta';
|
|
4
|
+
/** Canonical cell for a Scaffold — type icon + label, page count, navigable chevron. */
|
|
5
|
+
export function ScaffoldCell({ scaffold, pageCount, onClick, actions }) {
|
|
6
|
+
return (_jsx(ListCell, { leading: SCAFFOLD_ICONS[scaffold.type], title: SCAFFOLD_LABELS[scaffold.type] ?? scaffold.type, subtitle: pageCount != null && pageCount > 0
|
|
7
|
+
? `${pageCount} ${pageCount === 1 ? 'page' : 'pages'}`
|
|
8
|
+
: undefined, trailing: onClick ? _jsx(ChevronRight, {}) : undefined, actions: actions, onClick: onClick }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ScaffoldCell.js.map
|
|
@@ -0,0 +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;AAUjE,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAqB;IACvF,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EACtC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,EACtD,QAAQ,EACN,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC;YAChC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;YACtD,CAAC,CAAC,SAAS,EAEf,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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { TestScenarioResponse } from '@sudobility/testomniac_types';
|
|
3
|
+
export interface ScenarioCellProps {
|
|
4
|
+
scenario: TestScenarioResponse;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
actions?: ReactNode;
|
|
7
|
+
/** Overrides the default trailing (device badge) — e.g. to prepend a persona label. */
|
|
8
|
+
trailing?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
/** 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;
|
|
12
|
+
//# sourceMappingURL=ScenarioCell.d.ts.map
|
|
@@ -0,0 +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;AAIzE,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;CACtB;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,iBAAiB,+BAUvF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { StatusBadge } from '../scanner/StatusBadge';
|
|
3
|
+
import { ListCell } from './ListCell';
|
|
4
|
+
/** Canonical cell for a TestScenario — title over its starting path, device badge trailing. */
|
|
5
|
+
export function ScenarioCell({ scenario, onClick, actions, trailing }) {
|
|
6
|
+
return (_jsx(ListCell, { title: scenario.title, subtitle: scenario.startingPath || '/', trailing: trailing ?? _jsx(StatusBadge, { status: scenario.sizeClass }), actions: actions, onClick: onClick }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=ScenarioCell.js.map
|
|
@@ -0,0 +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;AAUtC,+FAA+F;AAC/F,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAqB;IACtF,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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { TestSurfaceResponse } from '@sudobility/testomniac_types';
|
|
3
|
+
/** Surface priority is a 0–10 scale (higher = more critical). */
|
|
4
|
+
export declare function SurfacePriorityBadge({ priority }: {
|
|
5
|
+
priority: number;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
7
|
+
export interface SurfaceCellProps {
|
|
8
|
+
surface: TestSurfaceResponse;
|
|
9
|
+
onClick?: () => void;
|
|
10
|
+
actions?: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
/** 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;
|
|
14
|
+
//# sourceMappingURL=SurfaceCell.d.ts.map
|
|
@@ -0,0 +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;AAsBxE,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAmBtE;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,gBAAgB,+BAgB1E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { StatusBadge } from '../scanner/StatusBadge';
|
|
3
|
+
import { ListCell } from './ListCell';
|
|
4
|
+
function FolderIcon() {
|
|
5
|
+
return (_jsx("svg", { className: "h-5 w-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.06-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z" }) }));
|
|
6
|
+
}
|
|
7
|
+
/** Surface priority is a 0–10 scale (higher = more critical). */
|
|
8
|
+
export function SurfacePriorityBadge({ priority }) {
|
|
9
|
+
const label = priority >= 8 ? 'critical' : priority >= 5 ? 'high' : priority >= 3 ? 'medium' : 'low';
|
|
10
|
+
const colors = priority >= 8
|
|
11
|
+
? 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300'
|
|
12
|
+
: priority >= 5
|
|
13
|
+
? 'bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-300'
|
|
14
|
+
: priority >= 3
|
|
15
|
+
? 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300'
|
|
16
|
+
: 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300';
|
|
17
|
+
return (_jsxs("span", { className: `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${colors}`, children: ["P", priority, " ", label] }));
|
|
18
|
+
}
|
|
19
|
+
/** Canonical cell for a TestSurface — folder icon, title, description/path, priority + device badges. */
|
|
20
|
+
export function SurfaceCell({ surface, onClick, actions }) {
|
|
21
|
+
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 }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=SurfaceCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SurfaceCell.js","sourceRoot":"","sources":["../../../src/components/cells/SurfaceCell.tsx"],"names":[],"mappings":";AAEA,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,MAAM,GACV,QAAQ,IAAI,CAAC;QACX,CAAC,CAAC,8DAA8D;QAChE,CAAC,CAAC,QAAQ,IAAI,CAAC;YACb,CAAC,CAAC,0EAA0E;YAC5E,CAAC,CAAC,QAAQ,IAAI,CAAC;gBACb,CAAC,CAAC,0EAA0E;gBAC5E,CAAC,CAAC,kEAAkE,CAAC;IAE7E,OAAO,CACL,gBACE,SAAS,EAAE,yEAAyE,MAAM,EAAE,kBAE1F,QAAQ,OAAG,KAAK,IACb,CACR,CAAC;AACJ,CAAC;AAQD,yGAAyG;AACzG,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAoB;IACzE,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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { ListCell, ChevronRight, type ListCellProps } from './ListCell';
|
|
2
|
+
export { InteractionCell, type InteractionCellProps } from './InteractionCell';
|
|
3
|
+
export { SurfaceCell, SurfacePriorityBadge, type SurfaceCellProps } from './SurfaceCell';
|
|
4
|
+
export { ScenarioCell, type ScenarioCellProps } from './ScenarioCell';
|
|
5
|
+
export { ScaffoldCell, type ScaffoldCellProps } from './ScaffoldCell';
|
|
6
|
+
export { BundleCell, type BundleCellProps } from './BundleCell';
|
|
7
|
+
export { PersonaCell, type PersonaCellProps } from './PersonaCell';
|
|
8
|
+
export { SCAFFOLD_ICONS, SCAFFOLD_LABELS } from './scaffoldMeta';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/cells/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { ListCell, ChevronRight } from './ListCell';
|
|
2
|
+
export { InteractionCell } from './InteractionCell';
|
|
3
|
+
export { SurfaceCell, SurfacePriorityBadge } from './SurfaceCell';
|
|
4
|
+
export { ScenarioCell } from './ScenarioCell';
|
|
5
|
+
export { ScaffoldCell } from './ScaffoldCell';
|
|
6
|
+
export { BundleCell } from './BundleCell';
|
|
7
|
+
export { PersonaCell } from './PersonaCell';
|
|
8
|
+
export { SCAFFOLD_ICONS, SCAFFOLD_LABELS } from './scaffoldMeta';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/cells/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,eAAe,EAA6B,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAyB,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,YAAY,EAA0B,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,YAAY,EAA0B,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAwB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,WAAW,EAAyB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/** Human-readable labels for scaffold types. Shared across scaffold cells/pages. */
|
|
3
|
+
export declare const SCAFFOLD_LABELS: Record<string, string>;
|
|
4
|
+
/** Inline icons for scaffold types. Shared across scaffold cells/pages. */
|
|
5
|
+
export declare const SCAFFOLD_ICONS: Record<string, ReactNode>;
|
|
6
|
+
//# sourceMappingURL=scaffoldMeta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffoldMeta.d.ts","sourceRoot":"","sources":["../../../src/components/cells/scaffoldMeta.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,oFAAoF;AACpF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBlD,CAAC;AAYF,2EAA2E;AAC3E,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CA4GpD,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/** Human-readable labels for scaffold types. Shared across scaffold cells/pages. */
|
|
3
|
+
export const SCAFFOLD_LABELS = {
|
|
4
|
+
topMenu: 'Top navigation',
|
|
5
|
+
footer: 'Footer',
|
|
6
|
+
breadcrumb: 'Breadcrumb',
|
|
7
|
+
leftMenu: 'Left navigation',
|
|
8
|
+
hamburgerMenu: 'Hamburger menu',
|
|
9
|
+
rightSidebar: 'Right sidebar',
|
|
10
|
+
searchBar: 'Search bar',
|
|
11
|
+
userMenu: 'User menu',
|
|
12
|
+
cookieBanner: 'Cookie banner',
|
|
13
|
+
chatWidget: 'Chat widget',
|
|
14
|
+
socialLinks: 'Social links',
|
|
15
|
+
skipNav: 'Skip navigation',
|
|
16
|
+
languageSwitcher: 'Language switcher',
|
|
17
|
+
announcementBar: 'Announcement bar',
|
|
18
|
+
backToTop: 'Back to top',
|
|
19
|
+
};
|
|
20
|
+
const iconProps = {
|
|
21
|
+
width: 14,
|
|
22
|
+
height: 14,
|
|
23
|
+
viewBox: '0 0 14 14',
|
|
24
|
+
fill: 'none',
|
|
25
|
+
stroke: 'currentColor',
|
|
26
|
+
strokeWidth: 1.5,
|
|
27
|
+
strokeLinecap: 'round',
|
|
28
|
+
};
|
|
29
|
+
/** Inline icons for scaffold types. Shared across scaffold cells/pages. */
|
|
30
|
+
export const SCAFFOLD_ICONS = {
|
|
31
|
+
topMenu: (_jsxs("svg", { ...iconProps, children: [_jsx("rect", { x: "1", y: "1", width: "12", height: "3", rx: "0.5" }), _jsx("line", { x1: "3", y1: "2.5", x2: "5", y2: "2.5" }), _jsx("line", { x1: "6.5", y1: "2.5", x2: "8.5", y2: "2.5" }), _jsx("line", { x1: "10", y1: "2.5", x2: "11", y2: "2.5" })] })),
|
|
32
|
+
footer: (_jsxs("svg", { ...iconProps, children: [_jsx("rect", { x: "1", y: "10", width: "12", height: "3", rx: "0.5" }), _jsx("line", { x1: "3", y1: "11.5", x2: "7", y2: "11.5" })] })),
|
|
33
|
+
breadcrumb: (_jsxs("svg", { ...iconProps, strokeLinejoin: "round", children: [_jsx("polyline", { points: "2,5 4.5,7 2,9" }), _jsx("polyline", { points: "5.5,5 8,7 5.5,9" }), _jsx("polyline", { points: "9,5 11.5,7 9,9" })] })),
|
|
34
|
+
leftMenu: (_jsxs("svg", { ...iconProps, children: [_jsx("rect", { x: "1", y: "1", width: "12", height: "12", rx: "1" }), _jsx("line", { x1: "5", y1: "1", x2: "5", y2: "13" }), _jsx("line", { x1: "2.5", y1: "4", x2: "4", y2: "4" }), _jsx("line", { x1: "2.5", y1: "6.5", x2: "4", y2: "6.5" }), _jsx("line", { x1: "2.5", y1: "9", x2: "4", y2: "9" })] })),
|
|
35
|
+
hamburgerMenu: (_jsxs("svg", { ...iconProps, children: [_jsx("line", { x1: "2", y1: "3.5", x2: "12", y2: "3.5" }), _jsx("line", { x1: "2", y1: "7", x2: "12", y2: "7" }), _jsx("line", { x1: "2", y1: "10.5", x2: "12", y2: "10.5" })] })),
|
|
36
|
+
rightSidebar: (_jsxs("svg", { ...iconProps, children: [_jsx("rect", { x: "1", y: "1", width: "12", height: "12", rx: "1" }), _jsx("line", { x1: "9", y1: "1", x2: "9", y2: "13" }), _jsx("line", { x1: "10", y1: "4", x2: "11.5", y2: "4" }), _jsx("line", { x1: "10", y1: "6.5", x2: "11.5", y2: "6.5" })] })),
|
|
37
|
+
searchBar: (_jsxs("svg", { ...iconProps, children: [_jsx("circle", { cx: "6", cy: "6", r: "4" }), _jsx("line", { x1: "9", y1: "9", x2: "12.5", y2: "12.5" })] })),
|
|
38
|
+
userMenu: (_jsxs("svg", { ...iconProps, children: [_jsx("circle", { cx: "7", cy: "5", r: "2.5" }), _jsx("path", { d: "M2.5 13c0-2.5 2-4.5 4.5-4.5s4.5 2 4.5 4.5" })] })),
|
|
39
|
+
cookieBanner: (_jsxs("svg", { ...iconProps, children: [_jsx("path", { d: "M2 3.5C2 2.67 2.67 2 3.5 2h7c.83 0 1.5.67 1.5 1.5v7c0 .83-.67 1.5-1.5 1.5h-7C2.67 12 2 11.33 2 10.5v-7z" }), _jsx("path", { d: "M5 5.5v0", strokeWidth: "2" }), _jsx("path", { d: "M7 8v0", strokeWidth: "2" }), _jsx("path", { d: "M9.5 5v0", strokeWidth: "2" })] })),
|
|
40
|
+
chatWidget: (_jsx("svg", { ...iconProps, strokeLinejoin: "round", children: _jsx("path", { d: "M2 2.5C2 1.67 2.67 1 3.5 1h7c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5H6l-2.5 2.5V9H3.5C2.67 9 2 8.33 2 7.5v-5z" }) })),
|
|
41
|
+
socialLinks: (_jsxs("svg", { ...iconProps, children: [_jsx("circle", { cx: "3", cy: "7", r: "1.5" }), _jsx("circle", { cx: "11", cy: "3.5", r: "1.5" }), _jsx("circle", { cx: "11", cy: "10.5", r: "1.5" }), _jsx("line", { x1: "4.3", y1: "6.3", x2: "9.7", y2: "4.2" }), _jsx("line", { x1: "4.3", y1: "7.7", x2: "9.7", y2: "9.8" })] })),
|
|
42
|
+
skipNav: (_jsxs("svg", { ...iconProps, strokeLinejoin: "round", children: [_jsx("polyline", { points: "2,3 7,7 2,11" }), _jsx("line", { x1: "7", y1: "3", x2: "7", y2: "11" }), _jsx("line", { x1: "10", y1: "3", x2: "10", y2: "11" }), _jsx("polyline", { points: "10,5 12.5,7 10,9" })] })),
|
|
43
|
+
languageSwitcher: (_jsxs("svg", { ...iconProps, children: [_jsx("circle", { cx: "7", cy: "7", r: "5.5" }), _jsx("ellipse", { cx: "7", cy: "7", rx: "2.5", ry: "5.5" }), _jsx("line", { x1: "1.5", y1: "7", x2: "12.5", y2: "7" })] })),
|
|
44
|
+
announcementBar: (_jsxs("svg", { ...iconProps, strokeLinejoin: "round", children: [_jsx("path", { d: "M11 2L4 5H2.5C1.67 5 1 5.67 1 6.5v0c0 .83.67 1.5 1.5 1.5H4l7 3V2z" }), _jsx("line", { x1: "13", y1: "5", x2: "13", y2: "8" }), _jsx("line", { x1: "4", y1: "8", x2: "4.5", y2: "12" })] })),
|
|
45
|
+
backToTop: (_jsxs("svg", { ...iconProps, strokeLinejoin: "round", children: [_jsx("line", { x1: "7", y1: "12", x2: "7", y2: "3" }), _jsx("polyline", { points: "3.5,6 7,2.5 10.5,6" })] })),
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=scaffoldMeta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffoldMeta.js","sourceRoot":"","sources":["../../../src/components/cells/scaffoldMeta.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/DashboardSidebar.tsx"],"names":[],"mappings":"AAaA,UAAU,qBAAqB;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAgLD,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,EAAE,qBAAqB,+BA2LrE"}
|