diff --git a/frontend/src/routes/flows/get/[...path].svelte b/frontend/src/routes/flows/get/[...path].svelte
index 478834d59c..72349832eb 100644
--- a/frontend/src/routes/flows/get/[...path].svelte
+++ b/frontend/src/routes/flows/get/[...path].svelte
@@ -34,9 +34,7 @@
import ShareModal from '$lib/components/ShareModal.svelte'
import Toggle from '$lib/components/Toggle.svelte'
import { userStore, workspaceStore } from '$lib/stores'
- import SharedBadge from '$lib/components/SharedBadge.svelte'
import SvelteMarkdown from 'svelte-markdown'
- import Dropdown from '$lib/components/Dropdown.svelte'
import CenteredPage from '$lib/components/CenteredPage.svelte'
import FlowViewer from '$lib/components/FlowViewer.svelte'
import { Button, ActionRow, Skeleton, Badge } from '$lib/components/common'
diff --git a/frontend/src/routes/index.svelte b/frontend/src/routes/index.svelte
index 0be0e11a15..294c1b9a60 100644
--- a/frontend/src/routes/index.svelte
+++ b/frontend/src/routes/index.svelte
@@ -2,15 +2,18 @@
import CenteredPage from '$lib/components/CenteredPage.svelte'
import JobDetail from '$lib/components/jobs/JobDetail.svelte'
import {
+ AppService,
FlowService,
Job,
JobService,
+ ListableApp,
Script,
ScriptService,
type Flow,
type OpenFlow
} from '$lib/gen'
import { superadmin, userStore, workspaceStore } from '$lib/stores'
+ import VirtualList from '@sveltejs/svelte-virtual-list'
import {
Alert,
Button,
@@ -25,16 +28,15 @@
import PageHeader from '$lib/components/PageHeader.svelte'
import CreateActionsFlow from '$lib/components/flows/CreateActionsFlow.svelte'
import CreateActionsScript from '$lib/components/scripts/CreateActionsScript.svelte'
- import { canWrite, getScriptByPath, sendUserToast } from '$lib/utils'
+ import { canWrite, classNames, getScriptByPath, pluralize } from '$lib/utils'
import type { HubItem } from '$lib/components/flows/pickers/model'
import ShareModal from '$lib/components/ShareModal.svelte'
- import Icon from 'svelte-awesome'
import {
- faBuilding,
faCodeFork,
+ faDashboard,
faGlobe,
- faScroll,
- faWind
+ faLayerGroup,
+ faPlus
} from '@fortawesome/free-solid-svg-icons'
import PickHubScript from '$lib/components/flows/pickers/PickHubScript.svelte'
import PickHubFlow from './PickHubFlow.svelte'
@@ -42,20 +44,40 @@
import HighlightCode from '$lib/components/HighlightCode.svelte'
import SearchItems from '$lib/components/SearchItems.svelte'
import Badge from '$lib/components/common/badge/Badge.svelte'
- import ScriptBox from '$lib/components/ScriptBox.svelte'
- import FlowBox from '$lib/components/FlowBox.svelte'
import type uFuzzy from '@leeoniya/ufuzzy'
+ import { Building, Code2, Globe2, LayoutDashboard, Wind } from 'svelte-lucide'
+ import Table from '$lib/components/common/table/Table.svelte'
+ import ScriptRow from '$lib/components/common/table/ScriptRow.svelte'
+ import FlowRow from '$lib/components/common/table/FlowRow.svelte'
+ import AppRow from '$lib/components/common/table/AppRow.svelte'
+
+ import { fade } from 'svelte/transition'
+ import { flip } from 'svelte/animate'
+ import CreateApp from '$lib/components/apps/CreateApp.svelte'
let jobs: Job[] = []
type Tab = 'hubscripts' | 'hubflows' | 'workspace'
- type ScriptW = Script & { canWrite: boolean; marked?: string }
- type FlowW = Flow & { canWrite: boolean; marked?: string }
- let scripts: ScriptW[] = []
- let flows: FlowW[] = []
- let filteredItems: ((ScriptW & { type: 'script' }) | (FlowW & { type: 'flow' }))[] = []
- let itemKind: 'script' | 'flow' | 'all' = 'all'
+ type TableItem = T & {
+ canWrite: boolean
+ marked?: string
+ type?: U
+ time?: number
+ starred?: boolean
+ }
+
+ type TableScript = TableItem
-
+ startIcon={{ icon: faCodeFork }}
+ >
+ Fork
+
+
@@ -250,15 +288,18 @@
-
+ View on the HubFork
+ variant="border"
+ >
+ View on the Hub
+
+
+ Fork
+
+
{#if flowViewerFlow?.flow}
@@ -273,14 +314,15 @@
{:else if $workspaceStore == 'starter'}
- The starter workspace has all its elements (variables, resources, scripts, flows) shared
+
+ The starter workspace has all its elements (variables, resources, scripts, flows) shared
across all other workspaces. Useful to seed workspace with common elements within your
- organization.
+ organization.
+
{/if}
-
{#if $superadmin}
- Superadmin settings
+
+ Superadmin settings
+
{/if}
- User settings
+
+ User settings
+
- This OAuth token will be kept up-to-date in the background by Windmill using
- its refresh token
+ This OAuth token will be kept up-to-date in the background by Windmill
+ using its refresh token