@flexkit/studio 0.2.32 → 0.2.33
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/activity-nav-button-ZHQOZBCC.js +2 -0
- package/dist/{activity-nav-button-E4I4YC3X.js.map → activity-nav-button-ZHQOZBCC.js.map} +1 -1
- package/dist/astro.js +1 -1
- package/dist/chat-page-LR7XC2US.js +4 -0
- package/dist/{chat-page-7UB3BMBF.js.map → chat-page-LR7XC2US.js.map} +1 -1
- package/dist/chunk-2MVQXXY7.js +4 -0
- package/dist/{chunk-R2O4WC3H.js.map → chunk-2MVQXXY7.js.map} +1 -1
- package/dist/{chunk-ERCVR23U.js → chunk-36DLIVZF.js} +2 -2
- package/dist/{chunk-ERCVR23U.js.map → chunk-36DLIVZF.js.map} +1 -1
- package/dist/chunk-3SY46ERM.js +2 -0
- package/dist/chunk-3SY46ERM.js.map +1 -0
- package/dist/chunk-4ZWQ44NZ.js +2 -0
- package/dist/{chunk-2NXQF2F7.js.map → chunk-4ZWQ44NZ.js.map} +1 -1
- package/dist/chunk-5JUG4BEF.js +2 -0
- package/dist/chunk-5JUG4BEF.js.map +1 -0
- package/dist/chunk-6I7D2JBA.js +3 -0
- package/dist/chunk-6I7D2JBA.js.map +1 -0
- package/dist/chunk-7ODGH7G2.js +2 -0
- package/dist/{chunk-5LGIALCK.js.map → chunk-7ODGH7G2.js.map} +1 -1
- package/dist/{chunk-SZEGGBOC.js → chunk-A4DPLZZF.js} +2 -2
- package/dist/{chunk-SZEGGBOC.js.map → chunk-A4DPLZZF.js.map} +1 -1
- package/dist/{chunk-C4XLDODU.js → chunk-C2KPTRYM.js} +3 -1
- package/dist/chunk-C3OHXPJV.js +2 -0
- package/dist/chunk-C3OHXPJV.js.map +1 -0
- package/dist/{chunk-KR27GOH6.js → chunk-CFYO546Y.js} +3 -3
- package/dist/{chunk-KR27GOH6.js.map → chunk-CFYO546Y.js.map} +1 -1
- package/dist/chunk-DHE6PO3V.js +2 -0
- package/dist/{chunk-5AJXR47U.js.map → chunk-DHE6PO3V.js.map} +1 -1
- package/dist/{chunk-V7C4EHK3.js → chunk-DSLPTDZX.js} +2 -2
- package/dist/{chunk-V7C4EHK3.js.map → chunk-DSLPTDZX.js.map} +1 -1
- package/dist/chunk-HSGUVQXU.js +10 -0
- package/dist/{chunk-JAPZBEBZ.js.map → chunk-HSGUVQXU.js.map} +1 -1
- package/dist/{chunk-EMFHKTAV.js → chunk-K3HW6YWS.js} +2 -2
- package/dist/{chunk-EMFHKTAV.js.map → chunk-K3HW6YWS.js.map} +1 -1
- package/dist/chunk-L5T56MRH.js +7 -0
- package/dist/chunk-L5T56MRH.js.map +1 -0
- package/dist/chunk-MBBE4RND.js +3 -0
- package/dist/chunk-MBBE4RND.js.map +1 -0
- package/dist/{chunk-USNXQOMJ.js → chunk-N33S7BSG.js} +2 -2
- package/dist/{chunk-USNXQOMJ.js.map → chunk-N33S7BSG.js.map} +1 -1
- package/dist/{chunk-KN7OJFEX.js → chunk-N52JTYBJ.js} +2 -2
- package/dist/{chunk-KN7OJFEX.js.map → chunk-N52JTYBJ.js.map} +1 -1
- package/dist/{chunk-AY2RXJWS.js → chunk-NFEQBTIW.js} +2 -2
- package/dist/{chunk-AY2RXJWS.js.map → chunk-NFEQBTIW.js.map} +1 -1
- package/dist/chunk-RFUMT6ZR.js +2 -0
- package/dist/{chunk-JWJJZVP3.js.map → chunk-RFUMT6ZR.js.map} +1 -1
- package/dist/{chunk-GSGPULRL.js → chunk-RLVHUIFC.js} +2 -2
- package/dist/{chunk-GSGPULRL.js.map → chunk-RLVHUIFC.js.map} +1 -1
- package/dist/chunk-S26WK6RF.js +2 -0
- package/dist/{chunk-54AXLGAK.js.map → chunk-S26WK6RF.js.map} +1 -1
- package/dist/{chunk-ONB3FWK5.js → chunk-S7VNSSIK.js} +2 -2
- package/dist/{chunk-ONB3FWK5.js.map → chunk-S7VNSSIK.js.map} +1 -1
- package/dist/chunk-S7Z6KKIN.js +2 -0
- package/dist/chunk-S7Z6KKIN.js.map +1 -0
- package/dist/{chunk-2NQ2RZ2M.js → chunk-U5XZWEPO.js} +3 -3
- package/dist/{chunk-2NQ2RZ2M.js.map → chunk-U5XZWEPO.js.map} +1 -1
- package/dist/chunk-UB22GYFK.js +2 -0
- package/dist/{chunk-MRHZN4G4.js.map → chunk-UB22GYFK.js.map} +1 -1
- package/dist/chunk-VUZ7GHSO.js +7 -0
- package/dist/{chunk-NNISUDZX.js.map → chunk-VUZ7GHSO.js.map} +1 -1
- package/dist/chunk-X3SHNHHM.js +2 -0
- package/dist/chunk-X3SHNHHM.js.map +1 -0
- package/dist/{chunk-XV7U33XQ.js → chunk-YKM3FUGK.js} +3 -3
- package/dist/{chunk-XV7U33XQ.js.map → chunk-YKM3FUGK.js.map} +1 -1
- package/dist/electron.js +1 -1
- package/dist/{entry-CA2QAEHN.js → entry-ROTT3ZDN.js} +2 -2
- package/dist/{entry-CA2QAEHN.js.map → entry-ROTT3ZDN.js.map} +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/list-N4E3VXM5.js +3 -0
- package/dist/{list-Q2KAEJ26.js.map → list-N4E3VXM5.js.map} +1 -1
- package/dist/list-RCTHBJOK.js +2 -0
- package/dist/{list-UMMVRYVD.js.map → list-RCTHBJOK.js.map} +1 -1
- package/dist/nextjs.js +1 -1
- package/dist/pages-XUJGIHQI.js +5 -0
- package/dist/{pages-KZ66JVNU.js.map → pages-XUJGIHQI.js.map} +1 -1
- package/dist/plugin-pages-FEQILAQR.js +2 -0
- package/dist/{plugin-pages-SR2WSUKZ.js.map → plugin-pages-FEQILAQR.js.map} +1 -1
- package/dist/project-selector-U64ROZ5D.js +2 -0
- package/dist/project-selector-U64ROZ5D.js.map +1 -0
- package/dist/record-links-HO4SEHOA.js +2 -0
- package/dist/{record-links-3WZGSVFU.js.map → record-links-HO4SEHOA.js.map} +1 -1
- package/dist/root-BUXIQKA5.js +14 -0
- package/dist/{root-LFJ5BQSY.js.map → root-BUXIQKA5.js.map} +1 -1
- package/dist/root-CCUROZVR.js +2 -0
- package/dist/{root-6QTQUYK4.js.map → root-CCUROZVR.js.map} +1 -1
- package/dist/root-GQL3P63Z.js +31 -0
- package/dist/{root-7BUVDOMV.js.map → root-GQL3P63Z.js.map} +1 -1
- package/dist/root-KXY4A6DW.js +2 -0
- package/dist/{root-2VBLPRG7.js.map → root-KXY4A6DW.js.map} +1 -1
- package/dist/root-MLEJUEMJ.js +23 -0
- package/dist/{root-FZLKYL5W.js.map → root-MLEJUEMJ.js.map} +1 -1
- package/dist/root-VA3E6HEY.js +2 -0
- package/dist/{root-OXS3QQX6.js.map → root-VA3E6HEY.js.map} +1 -1
- package/dist/search-YY4GQQRM.js +2 -0
- package/dist/{search-AZK3Q2KX.js.map → search-YY4GQQRM.js.map} +1 -1
- package/dist/skills-pages-SAOZTUOH.js +2 -0
- package/dist/{skills-pages-7IYBJ4QI.js.map → skills-pages-SAOZTUOH.js.map} +1 -1
- package/dist/source-2S24MZ5D.js +2 -0
- package/dist/{source-4BP5PJ2N.js.map → source-2S24MZ5D.js.map} +1 -1
- package/dist/spec-renderer-ZSIVMKVE.js +2 -0
- package/dist/{spec-renderer-3GAVSV52.js.map → spec-renderer-ZSIVMKVE.js.map} +1 -1
- package/dist/tanstack-start.js +1 -1
- package/dist/ui.js +1 -1
- package/dist/user-nav-ZH63YHX7.js +2 -0
- package/dist/{user-nav-OWTTAXZS.js.map → user-nav-ZH63YHX7.js.map} +1 -1
- package/package.json +4 -4
- package/dist/activity-nav-button-E4I4YC3X.js +0 -2
- package/dist/chat-page-7UB3BMBF.js +0 -4
- package/dist/chunk-2NXQF2F7.js +0 -2
- package/dist/chunk-32ZU4MLE.js +0 -2
- package/dist/chunk-32ZU4MLE.js.map +0 -1
- package/dist/chunk-54AXLGAK.js +0 -2
- package/dist/chunk-5AJXR47U.js +0 -2
- package/dist/chunk-5LGIALCK.js +0 -2
- package/dist/chunk-6NRQMG26.js +0 -2
- package/dist/chunk-6NRQMG26.js.map +0 -1
- package/dist/chunk-AKQ6ELDX.js +0 -2
- package/dist/chunk-AKQ6ELDX.js.map +0 -1
- package/dist/chunk-DGIY4SKN.js +0 -7
- package/dist/chunk-DGIY4SKN.js.map +0 -1
- package/dist/chunk-HDOIOXMP.js +0 -2
- package/dist/chunk-HDOIOXMP.js.map +0 -1
- package/dist/chunk-HZOD2HOF.js +0 -3
- package/dist/chunk-HZOD2HOF.js.map +0 -1
- package/dist/chunk-JAPZBEBZ.js +0 -10
- package/dist/chunk-JWJJZVP3.js +0 -2
- package/dist/chunk-MRHZN4G4.js +0 -2
- package/dist/chunk-NNISUDZX.js +0 -7
- package/dist/chunk-O2QMYUPS.js +0 -2
- package/dist/chunk-O2QMYUPS.js.map +0 -1
- package/dist/chunk-R2O4WC3H.js +0 -4
- package/dist/chunk-WPCPL2TQ.js +0 -3
- package/dist/chunk-WPCPL2TQ.js.map +0 -1
- package/dist/list-Q2KAEJ26.js +0 -3
- package/dist/list-UMMVRYVD.js +0 -2
- package/dist/pages-KZ66JVNU.js +0 -5
- package/dist/plugin-pages-SR2WSUKZ.js +0 -2
- package/dist/project-selector-72VM6SUI.js +0 -2
- package/dist/project-selector-72VM6SUI.js.map +0 -1
- package/dist/record-links-3WZGSVFU.js +0 -2
- package/dist/root-2VBLPRG7.js +0 -2
- package/dist/root-6QTQUYK4.js +0 -2
- package/dist/root-7BUVDOMV.js +0 -31
- package/dist/root-FZLKYL5W.js +0 -23
- package/dist/root-LFJ5BQSY.js +0 -14
- package/dist/root-OXS3QQX6.js +0 -2
- package/dist/search-AZK3Q2KX.js +0 -2
- package/dist/skills-pages-7IYBJ4QI.js +0 -2
- package/dist/source-4BP5PJ2N.js +0 -2
- package/dist/spec-renderer-3GAVSV52.js +0 -2
- package/dist/user-nav-OWTTAXZS.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data-grid/data-table-row-actions.tsx","../src/data-grid/data-table-view-options.tsx","../src/data-grid/data-table-toolbar.tsx"],"names":["DataTableRowActions","entityName","entityNamePlural","row","options","actionDispatch","useDispatch","canMutate","useCanMutate","entityId","canDelete","canEdit","handleEdit","handleDelete","jsxs","Button","jsx","PencilIcon","Trash2Icon","DropdownMenu","DropdownMenuTrigger","Ellipsis","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","DataTableViewOptions","table","Settings2","DropdownMenuLabel","column","DropdownMenuCheckboxItem","value","EntityKnowledgeButton","lazy","m","EntityGraphButton","DataTableToolbar","isReloading","onReload","appDispatch","useAppDispatch","appContext","useAppContext","apolloClient","useApolloClient","currentProject","currentProjectId","useConfig","schema","scopes","runMutation","setMutation","setOptions","useEntityMutation","isDeleting","setIsDeleting","useState","selectedIds","handleCreate","handleScopeChange","deleteSelected","ids","mutation","getEntityDeleteMutation","resolve","reject","gql","getEntityDeleteWhere","cache","id","error","handleBatchDelete","itemLabel","idsToDelete","scheduleEntityListRemoval","getEntityListQueryName","toast","Select","SelectTrigger","SelectValue","find","propEq","SelectContent","scopeItem","SelectItem","RefreshCw","DataTableSortedBy","PermissionTooltip","Loader2","Trash2","isKnowledgeLinkableEntity","Suspense"],"mappings":"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","file":"chunk-R2O4WC3H.js","sourcesContent":["'use client';\n\nimport type { JSX } from 'react';\nimport { Ellipsis, PencilIcon, Trash2Icon } from 'lucide-react';\nimport type { Row } from '@tanstack/react-table';\nimport { Button } from '../ui/primitives/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/primitives/dropdown-menu';\nimport { useDispatch } from '../entities/actions-context';\nimport { useCanMutate } from '../core/permissions';\n\ninterface DataTableRowActionsProps<TData> {\n entityName: string;\n entityNamePlural: string;\n row: Row<TData>;\n options?: {\n canDelete?: boolean;\n canEdit?: boolean;\n };\n}\n\nexport function DataTableRowActions<TData>({\n entityName,\n entityNamePlural,\n row,\n options = { canDelete: true, canEdit: true },\n}: DataTableRowActionsProps<TData>): JSX.Element {\n const actionDispatch = useDispatch();\n const canMutate = useCanMutate();\n // @ts-expect-error -- the DataGrid's original type doesn't know about the _id property\n const entityId = row.original._id;\n // Read-only roles keep the pencil (the drawer doubles as their read view)\n // but lose the delete affordance entirely.\n const canDelete = (options.canDelete ?? true) && canMutate;\n const canEdit = options.canEdit ?? true;\n\n function handleEdit(): void {\n actionDispatch({ type: 'EditEntity', payload: { entityId, entityNamePlural } });\n }\n\n function handleDelete(): void {\n actionDispatch({ type: 'DeleteEntity', payload: { entityId, entityName } });\n }\n\n return (\n <div className=\"fk:flex\">\n {canEdit && (\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:mr-1\" onClick={handleEdit} variant=\"ghost\">\n <PencilIcon className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Edit</span>\n </Button>\n )}\n {canDelete && !canEdit && (\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:mr-1\" onClick={handleDelete} variant=\"ghost\">\n <Trash2Icon className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Delete</span>\n </Button>\n )}\n {canEdit && canDelete && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0\" variant=\"ghost\">\n <Ellipsis className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Additional actions</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[160px]\">\n <DropdownMenuItem onClick={handleEdit}>\n <PencilIcon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n Edit\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem className=\"fk:text-destructive\" onClick={handleDelete}>\n <Trash2Icon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n Delete\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { JSX } from 'react';\nimport { Settings2 } from 'lucide-react';\nimport type { Table } from '@tanstack/react-table';\nimport { Button } from '../ui/primitives/button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/primitives/dropdown-menu';\n\ninterface DataTableViewOptionsProps<TData> {\n table: Table<TData>;\n}\n\nexport function DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): JSX.Element {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:hidden fk:h-8 fk:lg:flex\" size=\"sm\" variant=\"outline\">\n <Settings2 className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"fk:w-[150px]\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n checked={column.getIsVisible()}\n className=\"capitalize\"\n key={column.id}\n onCheckedChange={(value) => {\n column.toggleVisibility(Boolean(value));\n }}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","'use client';\n\nimport { lazy, Suspense, useState } from 'react';\nimport type { JSX } from 'react';\nimport { find, propEq } from 'ramda';\nimport type { Table } from '@tanstack/react-table';\nimport { Loader2, RefreshCw, Trash2 } from 'lucide-react';\nimport { gql } from '@apollo/client';\nimport { useApolloClient } from '@apollo/client/react';\nimport { toast } from 'sonner';\nimport { Button } from '../ui/primitives/button';\nimport { PermissionTooltip } from '../ui/components/permission-tooltip';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/primitives/select';\nimport { useDispatch } from '../entities/actions-context';\nimport { useAppContext, useAppDispatch } from '../core/app-context';\nimport { useCanMutate } from '../core/permissions';\nimport { useConfig } from '../core/config/config-context';\nimport { DataTableViewOptions } from './data-table-view-options';\nimport { DataTableSortedBy } from './data-table-sorted-by';\nimport { useEntityMutation } from '../graphql-client/use-entity-mutation';\nimport { getEntityDeleteMutation, getEntityDeleteWhere } from '../graphql-client/queries';\nimport { getEntityListQueryName, scheduleEntityListRemoval } from '../graphql-client/refetch-entity-lists';\nimport { isKnowledgeLinkableEntity } from '../apps/knowledge/knowledge';\n\n// Loaded on demand: the Knowledge module should only download when a list of\n// a linkable entity is in view, the way the record drawer loads its panel.\nconst EntityKnowledgeButton = lazy(() =>\n import('../apps/knowledge/record-links').then((m) => ({ default: m.EntityKnowledgeButton }))\n);\nconst EntityGraphButton = lazy(() => import('../apps/graph/entry').then((m) => ({ default: m.EntityGraphButton })));\n\ninterface DataTableToolbarProps<TData> {\n entityName: string;\n isReloading?: boolean;\n onReload?: () => void;\n table: Table<TData>;\n}\n\nexport function DataTableToolbar<TData>({\n entityName,\n isReloading = false,\n onReload,\n table,\n}: DataTableToolbarProps<TData>): JSX.Element {\n const actionDispatch = useDispatch();\n const appDispatch = useAppDispatch();\n const appContext = useAppContext();\n const apolloClient = useApolloClient();\n const { currentProject, currentProjectId } = useConfig();\n const schema = currentProject?.schema ?? [];\n const scopes = currentProject?.scopes;\n const [runMutation, setMutation, setOptions] = useEntityMutation();\n const [isDeleting, setIsDeleting] = useState(false);\n const canMutate = useCanMutate();\n\n // Collect selected entity ids from the table\n // @ts-expect-error -- the DataGrid's original type doesn't know about the _id property\n const selectedIds: string[] = table.getSelectedRowModel().rows.map((row) => row.original._id as string);\n\n function handleCreate(): void {\n actionDispatch({ type: 'AddEntity', payload: { entityName } });\n }\n\n function handleScopeChange(value: string): void {\n appDispatch({ type: 'setScope', payload: { projectId: currentProjectId, scope: value } });\n }\n\n async function deleteSelected(ids: string[]): Promise<void> {\n if (ids.length === 0) {\n return;\n }\n\n const mutation = getEntityDeleteMutation(entityName, schema, ids);\n\n await new Promise<void>((resolve, reject) => {\n setMutation(gql`\n ${mutation}\n `);\n\n setOptions({\n variables: { where: getEntityDeleteWhere(ids) },\n update(cache: { evict: (arg0: { id: string }) => void }) {\n for (const id of ids) {\n cache.evict({ id });\n }\n },\n onCompleted: () => {\n resolve();\n },\n onError: (error: Error) => {\n reject(error);\n },\n });\n\n runMutation(true);\n });\n }\n\n function handleBatchDelete(): void {\n const itemLabel = entityName === '_asset' ? 'asset' : entityName.toLowerCase();\n\n actionDispatch({\n type: 'AlertDialog',\n payload: {\n options: {\n dialogTitle: `Delete ${selectedIds.length} ${itemLabel}${selectedIds.length > 1 ? 's' : ''}`,\n dialogMessage:\n selectedIds.length > 1\n ? `Are you sure you want to delete the selected ${itemLabel}s? They will be deleted permanently.`\n : `Are you sure you want to delete the selected ${itemLabel}? The item will be deleted permanently.`,\n dialogCancelTitle: 'Cancel',\n dialogActionLabel: 'Delete',\n isDestructive: true,\n dialogActionSubmit: async () => {\n setIsDeleting(true);\n\n try {\n const idsToDelete = [...selectedIds];\n\n await deleteSelected(idsToDelete);\n\n table.resetRowSelection();\n // Drop rows immediately, then soft-refetch counts/pages.\n await scheduleEntityListRemoval(apolloClient, getEntityListQueryName(entityName, schema), idsToDelete);\n toast.success(idsToDelete.length > 1 ? 'Items successfully deleted.' : 'Item successfully deleted.');\n } catch {\n toast.error('Failed to delete selected items.');\n } finally {\n setIsDeleting(false);\n }\n },\n dialogActionCancel: () => {\n // no-op\n },\n },\n },\n });\n }\n\n return (\n <div className=\"fk:flex fk:items-center fk:justify-between\">\n <div className=\"fk:flex fk:flex-1 fk:items-center fk:space-x-2\">\n {scopes && scopes.length > 0 ? (\n <Select\n defaultValue={appContext.scope}\n onValueChange={(value) => {\n handleScopeChange(value);\n }}\n value={appContext.scope}\n >\n <SelectTrigger className=\"fk:w-48!\" id=\"project\" size=\"sm\">\n <span className=\"fk:text-muted-foreground\">Scope:</span>\n <SelectValue>\n {\n ((find(propEq(appContext.scope ?? '', 'name'))(scopes) as { name: string; label: string }) || null)\n ?.label\n }\n </SelectValue>\n </SelectTrigger>\n <SelectContent>\n {scopes.map((scopeItem) => (\n <SelectItem key={scopeItem.name} value={scopeItem.name}>\n {scopeItem.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : null}\n <DataTableViewOptions table={table} />\n {onReload ? (\n <Button\n aria-label=\"Reload\"\n className=\"fk:h-8\"\n disabled={isDeleting || isReloading}\n onClick={onReload}\n size=\"icon-sm\"\n variant=\"outline\"\n >\n <RefreshCw className={isReloading ? 'fk:animate-spin' : undefined} />\n </Button>\n ) : null}\n <DataTableSortedBy table={table} />\n </div>\n {selectedIds.length > 0 ? (\n <PermissionTooltip disabled={!canMutate}>\n <Button\n className=\"fk:h-8 fk:mr-2 fk:lg:flex\"\n disabled={isDeleting || !canMutate}\n onClick={handleBatchDelete}\n size=\"sm\"\n variant=\"destructive\"\n >\n {isDeleting ? (\n <Loader2 className=\"fk:mr-2 fk:h-4 fk:w-4 fk:animate-spin\" />\n ) : (\n <Trash2 className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n )}\n Delete ({selectedIds.length})\n </Button>\n </PermissionTooltip>\n ) : null}\n {entityName && isKnowledgeLinkableEntity(entityName) ? (\n <Suspense fallback={null}>\n <EntityKnowledgeButton entityName={entityName} />\n </Suspense>\n ) : null}\n {entityName ? (\n <Suspense fallback={null}>\n <EntityGraphButton entityName={entityName} selectedIds={selectedIds} />\n </Suspense>\n ) : null}\n <PermissionTooltip disabled={!canMutate}>\n <Button\n className=\"fk:h-8 fk:lg:flex\"\n disabled={isDeleting || !canMutate}\n onClick={handleCreate}\n size=\"sm\"\n variant=\"default\"\n >\n Create\n </Button>\n </PermissionTooltip>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/data-grid/data-table-row-actions.tsx","../src/data-grid/data-table-view-options.tsx","../src/data-grid/data-table-toolbar.tsx"],"names":["DataTableRowActions","entityName","entityNamePlural","row","options","actionDispatch","useDispatch","canMutate","useCanMutate","entityId","canDelete","canEdit","handleEdit","handleDelete","jsxs","Button","jsx","PencilIcon","Trash2Icon","DropdownMenu","DropdownMenuTrigger","Ellipsis","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","DataTableViewOptions","table","Settings2","DropdownMenuLabel","column","DropdownMenuCheckboxItem","value","EntityKnowledgeButton","lazy","m","EntityGraphButton","DataTableToolbar","isReloading","onReload","appDispatch","useAppDispatch","appContext","useAppContext","apolloClient","useApolloClient","currentProject","currentProjectId","useConfig","schema","scopes","runMutation","setMutation","setOptions","useEntityMutation","isDeleting","setIsDeleting","useState","selectedIds","handleCreate","handleScopeChange","deleteSelected","ids","mutation","getEntityDeleteMutation","resolve","reject","gql","getEntityDeleteWhere","cache","id","error","handleBatchDelete","itemLabel","idsToDelete","scheduleEntityListRemoval","getEntityListQueryName","toast","Select","SelectTrigger","SelectValue","find","propEq","SelectContent","scopeItem","SelectItem","RefreshCw","DataTableSortedBy","PermissionTooltip","Loader2","Trash2","isKnowledgeLinkableEntity","Suspense"],"mappings":"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","file":"chunk-2MVQXXY7.js","sourcesContent":["'use client';\n\nimport type { JSX } from 'react';\nimport { Ellipsis, PencilIcon, Trash2Icon } from 'lucide-react';\nimport type { Row } from '@tanstack/react-table';\nimport { Button } from '../ui/primitives/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/primitives/dropdown-menu';\nimport { useDispatch } from '../entities/actions-context';\nimport { useCanMutate } from '../core/permissions';\n\ninterface DataTableRowActionsProps<TData> {\n entityName: string;\n entityNamePlural: string;\n row: Row<TData>;\n options?: {\n canDelete?: boolean;\n canEdit?: boolean;\n };\n}\n\nexport function DataTableRowActions<TData>({\n entityName,\n entityNamePlural,\n row,\n options = { canDelete: true, canEdit: true },\n}: DataTableRowActionsProps<TData>): JSX.Element {\n const actionDispatch = useDispatch();\n const canMutate = useCanMutate();\n // @ts-expect-error -- the DataGrid's original type doesn't know about the _id property\n const entityId = row.original._id;\n // Read-only roles keep the pencil (the drawer doubles as their read view)\n // but lose the delete affordance entirely.\n const canDelete = (options.canDelete ?? true) && canMutate;\n const canEdit = options.canEdit ?? true;\n\n function handleEdit(): void {\n actionDispatch({ type: 'EditEntity', payload: { entityId, entityNamePlural } });\n }\n\n function handleDelete(): void {\n actionDispatch({ type: 'DeleteEntity', payload: { entityId, entityName } });\n }\n\n return (\n <div className=\"fk:flex\">\n {canEdit && (\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:mr-1\" onClick={handleEdit} variant=\"ghost\">\n <PencilIcon className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Edit</span>\n </Button>\n )}\n {canDelete && !canEdit && (\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:mr-1\" onClick={handleDelete} variant=\"ghost\">\n <Trash2Icon className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Delete</span>\n </Button>\n )}\n {canEdit && canDelete && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0\" variant=\"ghost\">\n <Ellipsis className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Additional actions</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[160px]\">\n <DropdownMenuItem onClick={handleEdit}>\n <PencilIcon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n Edit\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem className=\"fk:text-destructive\" onClick={handleDelete}>\n <Trash2Icon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n Delete\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { JSX } from 'react';\nimport { Settings2 } from 'lucide-react';\nimport type { Table } from '@tanstack/react-table';\nimport { Button } from '../ui/primitives/button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/primitives/dropdown-menu';\n\ninterface DataTableViewOptionsProps<TData> {\n table: Table<TData>;\n}\n\nexport function DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): JSX.Element {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:hidden fk:h-8 fk:lg:flex\" size=\"sm\" variant=\"outline\">\n <Settings2 className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"fk:w-[150px]\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n checked={column.getIsVisible()}\n className=\"capitalize\"\n key={column.id}\n onCheckedChange={(value) => {\n column.toggleVisibility(Boolean(value));\n }}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","'use client';\n\nimport { lazy, Suspense, useState } from 'react';\nimport type { JSX } from 'react';\nimport { find, propEq } from 'ramda';\nimport type { Table } from '@tanstack/react-table';\nimport { Loader2, RefreshCw, Trash2 } from 'lucide-react';\nimport { gql } from '@apollo/client';\nimport { useApolloClient } from '@apollo/client/react';\nimport { toast } from 'sonner';\nimport { Button } from '../ui/primitives/button';\nimport { PermissionTooltip } from '../ui/components/permission-tooltip';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/primitives/select';\nimport { useDispatch } from '../entities/actions-context';\nimport { useAppContext, useAppDispatch } from '../core/app-context';\nimport { useCanMutate } from '../core/permissions';\nimport { useConfig } from '../core/config/config-context';\nimport { DataTableViewOptions } from './data-table-view-options';\nimport { DataTableSortedBy } from './data-table-sorted-by';\nimport { useEntityMutation } from '../graphql-client/use-entity-mutation';\nimport { getEntityDeleteMutation, getEntityDeleteWhere } from '../graphql-client/queries';\nimport { getEntityListQueryName, scheduleEntityListRemoval } from '../graphql-client/refetch-entity-lists';\nimport { isKnowledgeLinkableEntity } from '../apps/knowledge/knowledge';\n\n// Loaded on demand: the Knowledge module should only download when a list of\n// a linkable entity is in view, the way the record drawer loads its panel.\nconst EntityKnowledgeButton = lazy(() =>\n import('../apps/knowledge/record-links').then((m) => ({ default: m.EntityKnowledgeButton }))\n);\nconst EntityGraphButton = lazy(() => import('../apps/graph/entry').then((m) => ({ default: m.EntityGraphButton })));\n\ninterface DataTableToolbarProps<TData> {\n entityName: string;\n isReloading?: boolean;\n onReload?: () => void;\n table: Table<TData>;\n}\n\nexport function DataTableToolbar<TData>({\n entityName,\n isReloading = false,\n onReload,\n table,\n}: DataTableToolbarProps<TData>): JSX.Element {\n const actionDispatch = useDispatch();\n const appDispatch = useAppDispatch();\n const appContext = useAppContext();\n const apolloClient = useApolloClient();\n const { currentProject, currentProjectId } = useConfig();\n const schema = currentProject?.schema ?? [];\n const scopes = currentProject?.scopes;\n const [runMutation, setMutation, setOptions] = useEntityMutation();\n const [isDeleting, setIsDeleting] = useState(false);\n const canMutate = useCanMutate();\n\n // Collect selected entity ids from the table\n // @ts-expect-error -- the DataGrid's original type doesn't know about the _id property\n const selectedIds: string[] = table.getSelectedRowModel().rows.map((row) => row.original._id as string);\n\n function handleCreate(): void {\n actionDispatch({ type: 'AddEntity', payload: { entityName } });\n }\n\n function handleScopeChange(value: string): void {\n appDispatch({ type: 'setScope', payload: { projectId: currentProjectId, scope: value } });\n }\n\n async function deleteSelected(ids: string[]): Promise<void> {\n if (ids.length === 0) {\n return;\n }\n\n const mutation = getEntityDeleteMutation(entityName, schema, ids);\n\n await new Promise<void>((resolve, reject) => {\n setMutation(gql`\n ${mutation}\n `);\n\n setOptions({\n variables: { where: getEntityDeleteWhere(ids) },\n update(cache: { evict: (arg0: { id: string }) => void }) {\n for (const id of ids) {\n cache.evict({ id });\n }\n },\n onCompleted: () => {\n resolve();\n },\n onError: (error: Error) => {\n reject(error);\n },\n });\n\n runMutation(true);\n });\n }\n\n function handleBatchDelete(): void {\n const itemLabel = entityName === '_asset' ? 'asset' : entityName.toLowerCase();\n\n actionDispatch({\n type: 'AlertDialog',\n payload: {\n options: {\n dialogTitle: `Delete ${selectedIds.length} ${itemLabel}${selectedIds.length > 1 ? 's' : ''}`,\n dialogMessage:\n selectedIds.length > 1\n ? `Are you sure you want to delete the selected ${itemLabel}s? They will be deleted permanently.`\n : `Are you sure you want to delete the selected ${itemLabel}? The item will be deleted permanently.`,\n dialogCancelTitle: 'Cancel',\n dialogActionLabel: 'Delete',\n isDestructive: true,\n dialogActionSubmit: async () => {\n setIsDeleting(true);\n\n try {\n const idsToDelete = [...selectedIds];\n\n await deleteSelected(idsToDelete);\n\n table.resetRowSelection();\n // Drop rows immediately, then soft-refetch counts/pages.\n await scheduleEntityListRemoval(apolloClient, getEntityListQueryName(entityName, schema), idsToDelete);\n toast.success(idsToDelete.length > 1 ? 'Items successfully deleted.' : 'Item successfully deleted.');\n } catch {\n toast.error('Failed to delete selected items.');\n } finally {\n setIsDeleting(false);\n }\n },\n dialogActionCancel: () => {\n // no-op\n },\n },\n },\n });\n }\n\n return (\n <div className=\"fk:flex fk:items-center fk:justify-between\">\n <div className=\"fk:flex fk:flex-1 fk:items-center fk:space-x-2\">\n {scopes && scopes.length > 0 ? (\n <Select\n defaultValue={appContext.scope}\n onValueChange={(value) => {\n handleScopeChange(value);\n }}\n value={appContext.scope}\n >\n <SelectTrigger className=\"fk:w-48!\" id=\"project\" size=\"sm\">\n <span className=\"fk:text-muted-foreground\">Scope:</span>\n <SelectValue>\n {\n ((find(propEq(appContext.scope ?? '', 'name'))(scopes) as { name: string; label: string }) || null)\n ?.label\n }\n </SelectValue>\n </SelectTrigger>\n <SelectContent>\n {scopes.map((scopeItem) => (\n <SelectItem key={scopeItem.name} value={scopeItem.name}>\n {scopeItem.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : null}\n <DataTableViewOptions table={table} />\n {onReload ? (\n <Button\n aria-label=\"Reload\"\n className=\"fk:h-8\"\n disabled={isDeleting || isReloading}\n onClick={onReload}\n size=\"icon-sm\"\n variant=\"outline\"\n >\n <RefreshCw className={isReloading ? 'fk:animate-spin' : undefined} />\n </Button>\n ) : null}\n <DataTableSortedBy table={table} />\n </div>\n {selectedIds.length > 0 ? (\n <PermissionTooltip disabled={!canMutate}>\n <Button\n className=\"fk:h-8 fk:mr-2 fk:lg:flex\"\n disabled={isDeleting || !canMutate}\n onClick={handleBatchDelete}\n size=\"sm\"\n variant=\"destructive\"\n >\n {isDeleting ? (\n <Loader2 className=\"fk:mr-2 fk:h-4 fk:w-4 fk:animate-spin\" />\n ) : (\n <Trash2 className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n )}\n Delete ({selectedIds.length})\n </Button>\n </PermissionTooltip>\n ) : null}\n {entityName && isKnowledgeLinkableEntity(entityName) ? (\n <Suspense fallback={null}>\n <EntityKnowledgeButton entityName={entityName} />\n </Suspense>\n ) : null}\n {entityName ? (\n <Suspense fallback={null}>\n <EntityGraphButton entityName={entityName} selectedIds={selectedIds} />\n </Suspense>\n ) : null}\n <PermissionTooltip disabled={!canMutate}>\n <Button\n className=\"fk:h-8 fk:lg:flex\"\n disabled={isDeleting || !canMutate}\n onClick={handleCreate}\n size=\"sm\"\n variant=\"default\"\n >\n Create\n </Button>\n </PermissionTooltip>\n </div>\n );\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'./index.css';import {g,f as f$1}from'./chunk-U6VZY3V2.js';import {b}from'./chunk-5CVDMZUI.js';import {a,b as b$1,c,e}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import'./index.css';import {g,f as f$1}from'./chunk-U6VZY3V2.js';import {b}from'./chunk-5CVDMZUI.js';import {a,b as b$1,c,e}from'./chunk-N33S7BSG.js';import {c as c$1}from'./chunk-X3SHNHHM.js';import {useEffect}from'react';import {BellIcon}from'lucide-react';import {Link}from'react-router-dom';import A from'swr';import {jsx,jsxs}from'react/jsx-runtime';function T(t){let{data:i}=A(t?g(t).activitySummary():null,f$1,{refreshInterval:3e4});return i}function f(t){return t>99?"99+":t.toString()}function $({projectId:t}){let i=T(t),e$1=i?.needsActionCount??0,r=i?.unreadCount??0;useEffect(()=>{let n=b();if(n)return n.setBadgeCount(e$1),()=>{n.setBadgeCount(0);}},[e$1]);let s=e$1>0?`Activity: ${f(e$1)} waiting for you`:r>0?`Activity: ${f(r)} unread`:"Activity";return jsx(a,{children:jsxs(b$1,{children:[jsx(c,{asChild:true,children:jsx(c$1,{asChild:true,"aria-label":s,className:"fk:relative fk:h-8 fk:w-8 fk:rounded-full",size:"icon",variant:"ghost",children:jsxs(Link,{to:`/${t}/ai/activity`,children:[jsx(BellIcon,{className:"fk:size-4"}),e$1>0?jsx("span",{className:"fk:absolute fk:-right-1 fk:-top-1 fk:flex fk:h-4 fk:min-w-4 fk:items-center fk:justify-center fk:rounded-full fk:bg-amber-500 fk:px-1 fk:text-[0.625rem] fk:font-semibold fk:leading-none fk:text-white",children:f(e$1)}):r>0?jsx("span",{className:"fk:absolute fk:right-1 fk:top-1 fk:size-2 fk:rounded-full fk:bg-success"}):null]})})}),jsx(e,{children:s})]})})}export{T as a,$ as b};//# sourceMappingURL=chunk-36DLIVZF.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-36DLIVZF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/apps/ai/activity-nav-button.tsx"],"names":["useActivitySummary","projectId","data","useSWR","paths","fetcher","formatCount","count","ActivityNavButton","summary","needsAction","unread","useEffect","desktop","getDesktop","label","jsx","TooltipProvider","jsxs","Tooltip","TooltipTrigger","Button","Link","BellIcon","TooltipContent"],"mappings":"mWAeO,SAASA,CAAAA,CAAmBC,EAA4D,CAC7F,GAAM,CAAE,IAAA,CAAAC,CAAK,EAAIC,CAAAA,CAAwBF,CAAAA,CAAYG,EAAMH,CAAS,CAAA,CAAE,iBAAgB,CAAI,IAAA,CAAMI,IAAS,CACvG,eAAA,CAAiB,GACnB,CAAC,CAAA,CAED,OAAOH,CACT,CAEA,SAASI,EAAYC,CAAAA,CAAuB,CAC1C,OAAOA,CAAAA,CAAQ,EAAA,CAAK,MAAQA,CAAAA,CAAM,QAAA,EACpC,CAGO,SAASC,EAAkB,CAAE,SAAA,CAAAP,CAAU,CAAA,CAAuC,CACnF,IAAMQ,CAAAA,CAAUT,CAAAA,CAAmBC,CAAS,CAAA,CACtCS,GAAAA,CAAcD,GAAS,gBAAA,EAAoB,CAAA,CAC3CE,EAASF,CAAAA,EAAS,WAAA,EAAe,EAGvCG,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAUC,GAAW,CAE3B,GAAKD,EAIL,OAAAA,CAAAA,CAAQ,cAAcH,GAAW,CAAA,CAE1B,IAAM,CACXG,CAAAA,CAAQ,aAAA,CAAc,CAAC,EACzB,CACF,EAAG,CAACH,GAAW,CAAC,CAAA,CAEhB,IAAMK,EACJL,GAAAA,CAAc,CAAA,CACV,aAAaJ,CAAAA,CAAYI,GAAW,CAAC,CAAA,gBAAA,CAAA,CACrCC,CAAAA,CAAS,EACP,CAAA,UAAA,EAAaL,CAAAA,CAAYK,CAAM,CAAC,CAAA,OAAA,CAAA,CAChC,WAER,OACEK,GAAAA,CAACC,EAAA,CACC,QAAA,CAAAC,KAACC,GAAAA,CAAA,CACC,UAAAH,GAAAA,CAACI,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,SAAAJ,GAAAA,CAACK,GAAAA,CAAA,CAAO,OAAA,CAAO,IAAA,CAAC,YAAA,CAAYN,CAAAA,CAAO,SAAA,CAAU,2CAAA,CAA4C,KAAK,MAAA,CAAO,OAAA,CAAQ,QAC3G,QAAA,CAAAG,IAAAA,CAACI,KAAA,CAAK,EAAA,CAAI,IAAIrB,CAAS,CAAA,YAAA,CAAA,CACrB,UAAAe,GAAAA,CAACO,QAAAA,CAAA,CAAS,SAAA,CAAU,WAAA,CAAY,EAC/Bb,GAAAA,CAAc,CAAA,CACbM,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,yMAAA,CACb,SAAAV,CAAAA,CAAYI,GAAW,EAC1B,CAAA,CACEC,CAAAA,CAAS,EACXK,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,yEAAA,CAA0E,CAAA,CACxF,MACN,CAAA,CACF,CAAA,CACF,EACAA,GAAAA,CAACQ,CAAAA,CAAA,CAAgB,QAAA,CAAAT,CAAAA,CAAM,CAAA,CAAA,CACzB,CAAA,CACF,CAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/apps/ai/activity-nav-button.tsx"],"names":["useActivitySummary","projectId","data","useSWR","paths","fetcher","formatCount","count","ActivityNavButton","summary","needsAction","unread","useEffect","desktop","getDesktop","label","jsx","TooltipProvider","jsxs","Tooltip","TooltipTrigger","Button","Link","BellIcon","TooltipContent"],"mappings":"mWAeO,SAASA,CAAAA,CAAmBC,EAA4D,CAC7F,GAAM,CAAE,IAAA,CAAAC,CAAK,EAAIC,CAAAA,CAAwBF,CAAAA,CAAYG,EAAMH,CAAS,CAAA,CAAE,iBAAgB,CAAI,IAAA,CAAMI,IAAS,CACvG,eAAA,CAAiB,GACnB,CAAC,CAAA,CAED,OAAOH,CACT,CAEA,SAASI,EAAYC,CAAAA,CAAuB,CAC1C,OAAOA,CAAAA,CAAQ,EAAA,CAAK,MAAQA,CAAAA,CAAM,QAAA,EACpC,CAGO,SAASC,EAAkB,CAAE,SAAA,CAAAP,CAAU,CAAA,CAAuC,CACnF,IAAMQ,CAAAA,CAAUT,CAAAA,CAAmBC,CAAS,CAAA,CACtCS,GAAAA,CAAcD,GAAS,gBAAA,EAAoB,CAAA,CAC3CE,EAASF,CAAAA,EAAS,WAAA,EAAe,EAGvCG,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAUC,GAAW,CAE3B,GAAKD,EAIL,OAAAA,CAAAA,CAAQ,cAAcH,GAAW,CAAA,CAE1B,IAAM,CACXG,CAAAA,CAAQ,aAAA,CAAc,CAAC,EACzB,CACF,EAAG,CAACH,GAAW,CAAC,CAAA,CAEhB,IAAMK,EACJL,GAAAA,CAAc,CAAA,CACV,aAAaJ,CAAAA,CAAYI,GAAW,CAAC,CAAA,gBAAA,CAAA,CACrCC,CAAAA,CAAS,EACP,CAAA,UAAA,EAAaL,CAAAA,CAAYK,CAAM,CAAC,CAAA,OAAA,CAAA,CAChC,WAER,OACEK,GAAAA,CAACC,EAAA,CACC,QAAA,CAAAC,KAACC,GAAAA,CAAA,CACC,UAAAH,GAAAA,CAACI,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,SAAAJ,GAAAA,CAACK,GAAAA,CAAA,CAAO,OAAA,CAAO,IAAA,CAAC,YAAA,CAAYN,CAAAA,CAAO,SAAA,CAAU,2CAAA,CAA4C,KAAK,MAAA,CAAO,OAAA,CAAQ,QAC3G,QAAA,CAAAG,IAAAA,CAACI,KAAA,CAAK,EAAA,CAAI,IAAIrB,CAAS,CAAA,YAAA,CAAA,CACrB,UAAAe,GAAAA,CAACO,QAAAA,CAAA,CAAS,SAAA,CAAU,WAAA,CAAY,EAC/Bb,GAAAA,CAAc,CAAA,CACbM,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,yMAAA,CACb,SAAAV,CAAAA,CAAYI,GAAW,EAC1B,CAAA,CACEC,CAAAA,CAAS,EACXK,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,yEAAA,CAA0E,CAAA,CACxF,MACN,CAAA,CACF,CAAA,CACF,EACAA,GAAAA,CAACQ,CAAAA,CAAA,CAAgB,QAAA,CAAAT,CAAAA,CAAM,CAAA,CAAA,CACzB,CAAA,CACF,CAEJ","file":"chunk-36DLIVZF.js","sourcesContent":["import { useEffect } from 'react';\nimport type { JSX } from 'react';\nimport { BellIcon } from 'lucide-react';\nimport { Link } from 'react-router-dom';\nimport useSWR from 'swr';\nimport { Button } from '../../ui/primitives/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../ui/primitives/tooltip';\nimport { getDesktop } from '../../core/desktop';\nimport { fetcher, paths } from './api';\nimport type { ActivitySummary } from './types';\n\n/**\n * The project's Activity badge counts. `ActivityNotifier` refreshes the same\n * SWR key on every poll, so every reader stays in sync with one request.\n */\nexport function useActivitySummary(projectId: string | undefined): ActivitySummary | undefined {\n const { data } = useSWR<ActivitySummary>(projectId ? paths(projectId).activitySummary() : null, fetcher, {\n refreshInterval: 30_000,\n });\n\n return data;\n}\n\nfunction formatCount(count: number): string {\n return count > 99 ? '99+' : count.toString();\n}\n\n/** Navbar shortcut to Activity, so pending items are visible from every app. */\nexport function ActivityNavButton({ projectId }: { projectId: string }): JSX.Element {\n const summary = useActivitySummary(projectId);\n const needsAction = summary?.needsActionCount ?? 0;\n const unread = summary?.unreadCount ?? 0;\n // The desktop app shows what waits for you on its dock or taskbar icon;\n // leaving the project or signing out clears it.\n useEffect(() => {\n const desktop = getDesktop();\n\n if (!desktop) {\n return;\n }\n\n desktop.setBadgeCount(needsAction);\n\n return () => {\n desktop.setBadgeCount(0);\n };\n }, [needsAction]);\n\n const label =\n needsAction > 0\n ? `Activity: ${formatCount(needsAction)} waiting for you`\n : unread > 0\n ? `Activity: ${formatCount(unread)} unread`\n : 'Activity';\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button asChild aria-label={label} className=\"fk:relative fk:h-8 fk:w-8 fk:rounded-full\" size=\"icon\" variant=\"ghost\">\n <Link to={`/${projectId}/ai/activity`}>\n <BellIcon className=\"fk:size-4\" />\n {needsAction > 0 ? (\n <span className=\"fk:absolute fk:-right-1 fk:-top-1 fk:flex fk:h-4 fk:min-w-4 fk:items-center fk:justify-center fk:rounded-full fk:bg-amber-500 fk:px-1 fk:text-[0.625rem] fk:font-semibold fk:leading-none fk:text-white\">\n {formatCount(needsAction)}\n </span>\n ) : unread > 0 ? (\n <span className=\"fk:absolute fk:right-1 fk:top-1 fk:size-2 fk:rounded-full fk:bg-success\" />\n ) : null}\n </Link>\n </Button>\n </TooltipTrigger>\n <TooltipContent>{label}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';import {a}from'./chunk-X3SHNHHM.js';import {Label}from'radix-ui';import {jsx}from'react/jsx-runtime';import {cva}from'class-variance-authority';function p({className:e,...t}){return jsx(Label.Root,{"data-slot":"label",className:a("fk:flex fk:items-center fk:gap-2 fk:text-sm fk:leading-none fk:font-medium fk:select-none fk:group-data-[disabled=true]:pointer-events-none fk:group-data-[disabled=true]:opacity-50 fk:peer-disabled:cursor-not-allowed fk:peer-disabled:opacity-50",e),...t})}function v({className:e,type:t,...o}){return jsx("input",{type:t,"data-slot":"input",className:a("fk:h-9 fk:w-full fk:min-w-0 fk:rounded-md fk:border fk:border-input fk:bg-background fk:px-3 fk:py-1 fk:text-base fk:shadow-xs fk:transition-[color,box-shadow] fk:outline-none fk:selection:bg-primary fk:selection:text-primary-foreground fk:file:inline-flex fk:file:h-7 fk:file:border-0 fk:file:bg-transparent fk:file:text-sm fk:file:font-medium fk:file:text-foreground fk:placeholder:text-muted-foreground fk:disabled:pointer-events-none fk:disabled:cursor-not-allowed fk:disabled:opacity-50 fk:md:text-sm fk:dark:bg-input/30 fk:corner-squircle","fk:focus-visible:border-ring fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50","fk:aria-invalid:border-destructive fk:aria-invalid:ring-destructive/20 fk:dark:aria-invalid:ring-destructive/40",e),...o})}var s=cva("fk:relative fk:w-full fk:rounded-lg fk:border fk:px-4 fk:py-3 fk:[&>svg~*]:pl-7 fk:[&>svg+div]:translate-y-[-3px] fk:[&>svg]:absolute fk:[&>svg]:left-4 fk:[&>svg]:top-4 fk:[&>svg]:text-foreground fk:corner-squircle",{variants:{variant:{default:"fk:bg-card fk:text-card-foreground",destructive:"fk:border-none fk:text-destructive fk:bg-destructive-foreground fk:[&>svg]:text-destructive"}},defaultVariants:{variant:"default"}});function R({className:e,variant:t,...o}){return jsx("div",{"data-slot":"alert",role:"alert",className:a(s({variant:t}),e),...o})}function P({className:e,...t}){return jsx("div",{"data-slot":"alert-title",className:a("fk:col-start-2 fk:line-clamp-1 fk:min-h-4 fk:font-medium fk:tracking-tight",e),...t})}function h({className:e,...t}){return jsx("div",{"data-slot":"alert-description",className:a("fk:text-sm fk:[&_p]:leading-relaxed",e),...t})}export{p as a,v as b,R as c,P as d,h as e};//# sourceMappingURL=chunk-3SY46ERM.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-3SY46ERM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/primitives/label.tsx","../src/ui/primitives/input.tsx","../src/ui/primitives/alert.tsx"],"names":["Label","className","props","jsx","LabelPrimitive","cn","Input","type","alertVariants","cva","Alert","variant","AlertTitle","AlertDescription"],"mappings":"oKAMA,SAASA,CAAAA,CAAM,CAAE,SAAA,CAAAC,EAAW,GAAGC,CAAM,EAAqD,CACxF,OACEC,IAACC,KAAAA,CAAe,IAAA,CAAf,CACC,WAAA,CAAU,QACV,SAAA,CAAWC,CAAAA,CACT,uPACAJ,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAEJ,CCdA,SAASI,EAAM,CAAE,SAAA,CAAAL,EAAW,IAAA,CAAAM,CAAAA,CAAM,GAAGL,CAAM,EAAkC,CAC3E,OACEC,GAAAA,CAAC,OAAA,CAAA,CACC,KAAMI,CAAAA,CACN,WAAA,CAAU,OAAA,CACV,SAAA,CAAWF,EACT,kiBAAA,CACA,wFAAA,CACA,kHACAJ,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAEJ,CCbA,IAAMM,CAAAA,CAAgBC,GAAAA,CACpB,wNAAA,CACA,CACE,SAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAW,oCAAA,CACX,YAAa,6FACf,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SACX,CACF,CACF,EAEA,SAASC,CAAAA,CAAM,CAAE,SAAA,CAAAT,EAAW,OAAA,CAAAU,CAAAA,CAAS,GAAGT,CAAM,CAAA,CAAqE,CACjH,OAAOC,GAAAA,CAAC,KAAA,CAAA,CAAI,WAAA,CAAU,QAAQ,IAAA,CAAK,OAAA,CAAQ,UAAWE,CAAAA,CAAGG,CAAAA,CAAc,CAAE,OAAA,CAAAG,CAAQ,CAAC,CAAA,CAAGV,CAAS,CAAA,CAAI,GAAGC,EAAO,CAC9G,CAEA,SAASU,CAAAA,CAAW,CAAE,SAAA,CAAAX,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAgC,CACxE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,aAAA,CACV,SAAA,CAAWE,EAAG,4EAAA,CAA8EJ,CAAS,EACpG,GAAGC,CAAAA,CACN,CAEJ,CAEA,SAASW,CAAAA,CAAiB,CAAE,UAAAZ,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAgC,CAC9E,OACEC,GAAAA,CAAC,KAAA,CAAA,CAAI,WAAA,CAAU,mBAAA,CAAoB,UAAWE,CAAAA,CAAG,qCAAA,CAAuCJ,CAAS,CAAA,CAAI,GAAGC,EAAO,CAEnH","file":"chunk-3SY46ERM.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Label as LabelPrimitive } from 'radix-ui';\nimport { cn } from '../lib/utils';\n\nfunction Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n 'fk:flex fk:items-center fk:gap-2 fk:text-sm fk:leading-none fk:font-medium fk:select-none fk:group-data-[disabled=true]:pointer-events-none fk:group-data-[disabled=true]:opacity-50 fk:peer-disabled:cursor-not-allowed fk:peer-disabled:opacity-50',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import * as React from 'react';\nimport { cn } from '../lib/utils';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n 'fk:h-9 fk:w-full fk:min-w-0 fk:rounded-md fk:border fk:border-input fk:bg-background fk:px-3 fk:py-1 fk:text-base fk:shadow-xs fk:transition-[color,box-shadow] fk:outline-none fk:selection:bg-primary fk:selection:text-primary-foreground fk:file:inline-flex fk:file:h-7 fk:file:border-0 fk:file:bg-transparent fk:file:text-sm fk:file:font-medium fk:file:text-foreground fk:placeholder:text-muted-foreground fk:disabled:pointer-events-none fk:disabled:cursor-not-allowed fk:disabled:opacity-50 fk:md:text-sm fk:dark:bg-input/30 fk:corner-squircle',\n 'fk:focus-visible:border-ring fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50',\n 'fk:aria-invalid:border-destructive fk:aria-invalid:ring-destructive/20 fk:dark:aria-invalid:ring-destructive/40',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../lib/utils';\n\nconst alertVariants = cva(\n 'fk:relative fk:w-full fk:rounded-lg fk:border fk:px-4 fk:py-3 fk:[&>svg~*]:pl-7 fk:[&>svg+div]:translate-y-[-3px] fk:[&>svg]:absolute fk:[&>svg]:left-4 fk:[&>svg]:top-4 fk:[&>svg]:text-foreground fk:corner-squircle',\n {\n variants: {\n variant: {\n 'default': 'fk:bg-card fk:text-card-foreground',\n destructive: 'fk:border-none fk:text-destructive fk:bg-destructive-foreground fk:[&>svg]:text-destructive',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nfunction Alert({ className, variant, ...props }: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n return <div data-slot=\"alert\" role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props} />;\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn('fk:col-start-2 fk:line-clamp-1 fk:min-h-4 fk:font-medium fk:tracking-tight', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"alert-description\" className={cn('fk:text-sm fk:[&_p]:leading-relaxed', className)} {...props} />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';import {a,c}from'./chunk-X3SHNHHM.js';import {AlertDialog}from'radix-ui';import {jsx,jsxs}from'react/jsx-runtime';function p({...t}){return jsx(AlertDialog.Root,{"data-slot":"alert-dialog",...t})}function s({...t}){return jsx(AlertDialog.Portal,{"data-slot":"alert-dialog-portal",...t})}function d({className:t,...a$1}){return jsx(AlertDialog.Overlay,{"data-slot":"alert-dialog-overlay",className:a("fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",t),...a$1})}function u({className:t,size:a$1="default",...i}){return jsxs(s,{children:[jsx(d,{}),jsx(AlertDialog.Content,{"data-slot":"alert-dialog-content","data-size":a$1,className:a("fk:group/alert-dialog-content fk:fixed fk:top-[50%] fk:left-[50%] fk:z-50 fk:grid fk:w-full fk:max-w-[calc(100%-2rem)] fk:translate-x-[-50%] fk:translate-y-[-50%] fk:gap-4 fk:rounded-lg fk:border fk:bg-background fk:p-6 fk:shadow-lg fk:duration-200 fk:data-[size=sm]:max-w-xs fk:data-[state=closed]:animate-out fk:data-[state=closed]:fade-out-0 fk:data-[state=closed]:zoom-out-95 fk:data-[state=open]:animate-in fk:data-[state=open]:fade-in-0 fk:data-[state=open]:zoom-in-95 fk:data-[size=default]:sm:max-w-lg fk:corner-squircle",t),...i})]})}function k({className:t,...a$1}){return jsx("div",{"data-slot":"alert-dialog-header",className:a("fk:grid fk:grid-rows-[auto_1fr] fk:place-items-center fk:gap-1.5 fk:text-center fk:has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] fk:has-data-[slot=alert-dialog-media]:gap-x-6 fk:sm:group-data-[size=default]/alert-dialog-content:place-items-start fk:sm:group-data-[size=default]/alert-dialog-content:text-left fk:sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",t),...a$1})}function P({className:t,...a$1}){return jsx("div",{"data-slot":"alert-dialog-footer",className:a("fk:flex fk:flex-col-reverse fk:gap-2 fk:group-data-[size=sm]/alert-dialog-content:grid fk:group-data-[size=sm]/alert-dialog-content:grid-cols-2 fk:sm:flex-row fk:sm:justify-end",t),...a$1})}function A({className:t,...a$1}){return jsx(AlertDialog.Title,{"data-slot":"alert-dialog-title",className:a("fk:text-lg fk:font-semibold fk:sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",t),...a$1})}function D({className:t,...a$1}){return jsx(AlertDialog.Description,{"data-slot":"alert-dialog-description",className:a("fk:text-sm fk:text-muted-foreground",t),...a$1})}function v({className:t,variant:a$1="default",size:i="default",...r}){return jsx(c,{variant:a$1,size:i,asChild:true,children:jsx(AlertDialog.Action,{"data-slot":"alert-dialog-action",className:a(t),...r})})}function z({className:t,variant:a$1="outline",size:i="default",...r}){return jsx(c,{variant:a$1,size:i,asChild:true,children:jsx(AlertDialog.Cancel,{"data-slot":"alert-dialog-cancel",className:a(t),...r})})}export{p as a,s as b,u as c,k as d,P as e,A as f,D as g,v as h,z as i};//# sourceMappingURL=chunk-4ZWQ44NZ.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-4ZWQ44NZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/primitives/alert-dialog.tsx"],"names":["AlertDialog","props","jsx","AlertDialogPrimitive","AlertDialogPortal","AlertDialogOverlay","className","cn","AlertDialogContent","size","jsxs","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","variant","Button","AlertDialogCancel"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/ui/primitives/alert-dialog.tsx"],"names":["AlertDialog","props","jsx","AlertDialogPrimitive","AlertDialogPortal","AlertDialogOverlay","className","cn","AlertDialogContent","size","jsxs","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","variant","Button","AlertDialogCancel"],"mappings":"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","file":"chunk-4ZWQ44NZ.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { AlertDialog as AlertDialogPrimitive } from 'radix-ui';\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\n\nfunction AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />;\n}\n\nfunction AlertDialogPortal({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />;\n}\n\nfunction AlertDialogOverlay({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n 'fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: 'default' | 'sm';\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n 'fk:group/alert-dialog-content fk:fixed fk:top-[50%] fk:left-[50%] fk:z-50 fk:grid fk:w-full fk:max-w-[calc(100%-2rem)] fk:translate-x-[-50%] fk:translate-y-[-50%] fk:gap-4 fk:rounded-lg fk:border fk:bg-background fk:p-6 fk:shadow-lg fk:duration-200 fk:data-[size=sm]:max-w-xs fk:data-[state=closed]:animate-out fk:data-[state=closed]:fade-out-0 fk:data-[state=closed]:zoom-out-95 fk:data-[state=open]:animate-in fk:data-[state=open]:fade-in-0 fk:data-[state=open]:zoom-in-95 fk:data-[size=default]:sm:max-w-lg fk:corner-squircle',\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n 'fk:grid fk:grid-rows-[auto_1fr] fk:place-items-center fk:gap-1.5 fk:text-center fk:has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] fk:has-data-[slot=alert-dialog-media]:gap-x-6 fk:sm:group-data-[size=default]/alert-dialog-content:place-items-start fk:sm:group-data-[size=default]/alert-dialog-content:text-left fk:sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n 'fk:flex fk:flex-col-reverse fk:gap-2 fk:group-data-[size=sm]/alert-dialog-content:grid fk:group-data-[size=sm]/alert-dialog-content:grid-cols-2 fk:sm:flex-row fk:sm:justify-end',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n 'fk:text-lg fk:font-semibold fk:sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn('fk:text-sm fk:text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogMedia({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"fk:mb-2 fk:inline-flex fk:size-16 fk:items-center fk:justify-center fk:rounded-md fk:bg-muted fk:sm:group-data-[size=default]/alert-dialog-content:row-span-2 fk:*:[svg:not([class*='size-'])]:size-8 fk:corner-squircle\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n variant = 'default',\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Action data-slot=\"alert-dialog-action\" className={cn(className)} {...props} />\n </Button>\n );\n}\n\nfunction AlertDialogCancel({\n className,\n variant = 'outline',\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Cancel data-slot=\"alert-dialog-cancel\" className={cn(className)} {...props} />\n </Button>\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';import {k,q,s,t,p}from'./chunk-S7Z6KKIN.js';import {a}from'./chunk-X3SHNHHM.js';import {Slot,Separator,ScrollArea}from'radix-ui';import {cva}from'class-variance-authority';import {jsx,jsxs}from'react/jsx-runtime';import {Command}from'cmdk';import {SearchIcon}from'lucide-react';var C=cva("fk:inline-flex fk:w-fit fk:shrink-0 fk:items-center fk:justify-center fk:gap-1 fk:overflow-hidden fk:rounded-full fk:border fk:border-transparent fk:px-2 fk:py-0.5 fk:text-xs fk:font-medium fk:whitespace-nowrap fk:transition-[color,box-shadow] fk:focus-visible:border-ring fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:aria-invalid:border-destructive fk:aria-invalid:ring-destructive/20 fk:dark:aria-invalid:ring-destructive/40 fk:[&>svg]:pointer-events-none fk:[&>svg]:size-3 fk:corner-squircle",{variants:{variant:{default:"fk:bg-primary fk:text-primary-foreground fk:[a&]:hover:bg-primary/90",secondary:"fk:bg-secondary fk:text-secondary-foreground fk:[a&]:hover:bg-secondary/90",destructive:"fk:bg-destructive fk:text-white fk:focus-visible:ring-destructive/20 fk:dark:bg-destructive/60 fk:dark:focus-visible:ring-destructive/40 fk:[a&]:hover:bg-destructive/90",outline:"fk:border-border fk:text-foreground fk:[a&]:hover:bg-accent fk:[a&]:hover:text-accent-foreground",ghost:"fk:[a&]:hover:bg-accent fk:[a&]:hover:text-accent-foreground",link:"fk:text-primary fk:underline-offset-4 fk:[a&]:hover:underline"}},defaultVariants:{variant:"default"}});function B({className:o,variant:t="default",asChild:r=false,...n}){let l=r?Slot.Root:"span";return jsx(l,{"data-slot":"badge","data-variant":t,className:a(C({variant:t}),o),...n})}function w({className:o,...t}){return jsx(Command,{"data-slot":"command",className:a("fk:flex fk:h-full fk:w-full fk:flex-col fk:rounded-md fk:bg-popover fk:text-popover-foreground fk:corner-squircle",o),...t})}function J({title:o="Command Palette",description:t$1="Search for a command to run...",children:r,className:n,showCloseButton:l=true,...h}){return jsxs(k,{...h,children:[jsxs(q,{className:"fk:sr-only",children:[jsx(s,{children:o}),jsx(t,{children:t$1})]}),jsx(p,{className:a("fk:overflow-hidden fk:p-0",n),showCloseButton:l,children:jsx(w,{className:"fk:**:data-[slot=command-input-wrapper]:h-12 fk:**:[[cmdk-group-heading]]:px-2 fk:**:[[cmdk-group-heading]]:font-medium fk:**:[[cmdk-group-heading]]:text-muted-foreground fk:**:[[cmdk-group]]:px-2 fk:[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 fk:[&_[cmdk-input-wrapper]_svg]:h-5 fk:[&_[cmdk-input-wrapper]_svg]:w-5 fk:**:[[cmdk-input]]:h-12 fk:**:[[cmdk-item]]:px-2 fk:**:[[cmdk-item]]:py-3 fk:[&_[cmdk-item]_svg]:h-5 fk:[&_[cmdk-item]_svg]:w-5",children:r})})]})}function K({className:o,...t}){return jsxs("div",{"data-slot":"command-input-wrapper",className:"fk:flex fk:h-9 fk:items-center fk:gap-2 fk:border-b fk:px-3",children:[jsx(SearchIcon,{className:"fk:size-4 fk:shrink-0 fk:opacity-50"}),jsx(Command.Input,{"data-slot":"command-input",className:a("fk:flex fk:h-10 fk:w-full fk:rounded-md fk:bg-transparent fk:py-3 fk:text-sm fk:outline-hidden fk:placeholder:text-muted-foreground fk:disabled:cursor-not-allowed fk:disabled:opacity-50 fk:corner-squircle",o),...t})]})}function M({className:o,...t}){return jsx(Command.List,{"data-slot":"command-list",className:a("fk:max-h-[300px] fk:scroll-py-1 fk:overflow-x-hidden fk:overflow-y-auto",o),...t})}function O({...o}){return jsx(Command.Empty,{"data-slot":"command-empty",className:"fk:py-6 fk:text-center fk:text-sm",...o})}function Q({className:o,...t}){return jsx(Command.Group,{"data-slot":"command-group",className:a("fk:overflow-hidden fk:p-1 fk:text-foreground fk:**:[[cmdk-group-heading]]:px-2 fk:**:[[cmdk-group-heading]]:py-1.5 fk:**:[[cmdk-group-heading]]:text-xs fk:**:[[cmdk-group-heading]]:font-medium fk:**:[[cmdk-group-heading]]:text-muted-foreground",o),...t})}function U({className:o,...t}){return jsx(Command.Separator,{"data-slot":"command-separator",className:a("fk:-mx-1 fk:h-px fk:bg-border",o),...t})}function W({className:o,...t}){return jsx(Command.Item,{"data-slot":"command-item",className:a("fk:relative fk:flex fk:cursor-default fk:items-center fk:gap-2 fk:rounded-sm fk:px-2 fk:py-1.5 fk:text-sm fk:outline-hidden fk:select-none fk:data-[disabled=true]:pointer-events-none fk:data-[disabled=true]:opacity-50 fk:data-[selected=true]:bg-accent fk:data-[selected=true]:text-accent-foreground fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4 fk:[&_svg:not([class*='text-'])]:text-muted-foreground fk:corner-squircle",o),...t})}function X({className:o,...t}){return jsx("span",{"data-slot":"command-shortcut",className:a("fk:ml-auto fk:text-xs fk:tracking-widest fk:text-muted-foreground",o),...t})}function v({className:o,orientation:t="horizontal",decorative:r=true,...n}){return jsx(Separator.Root,{"data-slot":"separator",decorative:r,orientation:t,className:a("fk:shrink-0 fk:bg-border fk:data-[orientation=horizontal]:h-px fk:data-[orientation=horizontal]:w-full fk:data-[orientation=vertical]:h-full fk:data-[orientation=vertical]:w-px",o),...n})}function at({className:o,children:t,...r}){return jsxs(ScrollArea.Root,{"data-slot":"scroll-area",className:a("fk:relative",o),...r,children:[jsx(ScrollArea.Viewport,{"data-slot":"scroll-area-viewport",className:"fk:size-full fk:rounded-[inherit] fk:transition-[color,box-shadow] fk:outline-none fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:focus-visible:outline-1 fk:corner-squircle",children:t}),jsx(N,{}),jsx(ScrollArea.Corner,{})]})}function N({className:o,orientation:t="vertical",...r}){return jsx(ScrollArea.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:t,className:a("fk:flex fk:touch-none fk:p-px fk:transition-colors fk:select-none",t==="vertical"&&"fk:h-full fk:w-2.5 fk:border-l fk:border-l-transparent",t==="horizontal"&&"fk:h-2.5 fk:flex-col fk:border-t fk:border-t-transparent",o),...r,children:jsx(ScrollArea.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"fk:relative fk:flex-1 fk:rounded-full fk:bg-border fk:corner-squircle"})})}var A=cva("fk:flex fk:w-fit fk:items-stretch fk:has-[>[data-slot=button-group]]:gap-2 fk:[&>*]:focus-visible:relative fk:[&>*]:focus-visible:z-10 fk:has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md fk:[&>[data-slot=select-trigger]:not([class*=w-])]:w-fit fk:[&>input]:flex-1",{variants:{orientation:{horizontal:"fk:[&>*:not(:first-child)]:rounded-l-none fk:[&>*:not(:first-child)]:border-l-0 fk:[&>*:not(:last-child)]:rounded-r-none",vertical:"fk:flex-col fk:[&>*:not(:first-child)]:rounded-t-none fk:[&>*:not(:first-child)]:border-t-0 fk:[&>*:not(:last-child)]:rounded-b-none"}},defaultVariants:{orientation:"horizontal"}});function mt({className:o,orientation:t,...r}){return jsx("div",{role:"group","data-slot":"button-group","data-orientation":t,className:a(A({orientation:t}),o),...r})}function ct({className:o,asChild:t=false,...r}){let n=t?Slot.Root:"div";return jsx(n,{className:a("fk:bg-muted fk:shadow-xs fk:flex fk:items-center fk:gap-2 fk:rounded-md fk:border fk:px-4 fk:text-sm fk:font-medium fk:[&_svg:not([class*=size-])]:size-4 fk:[&_svg]:pointer-events-none fk:corner-squircle",o),...r})}function kt({className:o,orientation:t="vertical",...r}){return jsx(v,{"data-slot":"button-group-separator",orientation:t,className:a("fk:bg-input fk:relative fk:!m-0 fk:self-stretch fk:data-[orientation=vertical]:h-auto",o),...r})}export{C as a,B as b,w as c,J as d,K as e,M as f,O as g,Q as h,U as i,W as j,X as k,v as l,at as m,N as n,A as o,mt as p,ct as q,kt as r};//# sourceMappingURL=chunk-5JUG4BEF.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-5JUG4BEF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/primitives/badge.tsx","../src/ui/primitives/command.tsx","../src/ui/primitives/separator.tsx","../src/ui/primitives/scroll-area.tsx","../src/ui/primitives/button-group.tsx"],"names":["badgeVariants","cva","Badge","className","variant","asChild","props","Comp","Slot","jsx","cn","Command","CommandPrimitive","CommandDialog","title","description","children","showCloseButton","jsxs","Dialog","DialogHeader","DialogTitle","DialogDescription","DialogContent","CommandInput","SearchIcon","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut","Separator","orientation","decorative","SeparatorPrimitive","ScrollArea","ScrollAreaPrimitive","ScrollBar","buttonGroupVariants","ButtonGroup","ButtonGroupText","ButtonGroupSeparator"],"mappings":"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","file":"chunk-5JUG4BEF.js","sourcesContent":["import * as React from 'react';\nimport { Slot } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../lib/utils';\n\nconst badgeVariants = cva(\n 'fk:inline-flex fk:w-fit fk:shrink-0 fk:items-center fk:justify-center fk:gap-1 fk:overflow-hidden fk:rounded-full fk:border fk:border-transparent fk:px-2 fk:py-0.5 fk:text-xs fk:font-medium fk:whitespace-nowrap fk:transition-[color,box-shadow] fk:focus-visible:border-ring fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:aria-invalid:border-destructive fk:aria-invalid:ring-destructive/20 fk:dark:aria-invalid:ring-destructive/40 fk:[&>svg]:pointer-events-none fk:[&>svg]:size-3 fk:corner-squircle',\n {\n variants: {\n variant: {\n default: 'fk:bg-primary fk:text-primary-foreground fk:[a&]:hover:bg-primary/90',\n secondary: 'fk:bg-secondary fk:text-secondary-foreground fk:[a&]:hover:bg-secondary/90',\n destructive:\n 'fk:bg-destructive fk:text-white fk:focus-visible:ring-destructive/20 fk:dark:bg-destructive/60 fk:dark:focus-visible:ring-destructive/40 fk:[a&]:hover:bg-destructive/90',\n outline: 'fk:border-border fk:text-foreground fk:[a&]:hover:bg-accent fk:[a&]:hover:text-accent-foreground',\n ghost: 'fk:[a&]:hover:bg-accent fk:[a&]:hover:text-accent-foreground',\n link: 'fk:text-primary fk:underline-offset-4 fk:[a&]:hover:underline',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nfunction Badge({\n className,\n variant = 'default',\n asChild = false,\n ...props\n}: React.ComponentProps<'span'> & VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'span';\n\n return (\n <Comp data-slot=\"badge\" data-variant={variant} className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","'use client';\n\nimport * as React from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon } from 'lucide-react';\nimport { cn } from '../lib/utils';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog';\n\ntype CommandChildren = React.ComponentProps<typeof CommandPrimitive>['children'];\n\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'fk:flex fk:h-full fk:w-full fk:flex-col fk:rounded-md fk:bg-popover fk:text-popover-foreground fk:corner-squircle',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"fk:sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className={cn('fk:overflow-hidden fk:p-0', className)} showCloseButton={showCloseButton}>\n <Command className=\"fk:**:data-[slot=command-input-wrapper]:h-12 fk:**:[[cmdk-group-heading]]:px-2 fk:**:[[cmdk-group-heading]]:font-medium fk:**:[[cmdk-group-heading]]:text-muted-foreground fk:**:[[cmdk-group]]:px-2 fk:[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 fk:[&_[cmdk-input-wrapper]_svg]:h-5 fk:[&_[cmdk-input-wrapper]_svg]:w-5 fk:**:[[cmdk-input]]:h-12 fk:**:[[cmdk-item]]:px-2 fk:**:[[cmdk-item]]:py-3 fk:[&_[cmdk-item]_svg]:h-5 fk:[&_[cmdk-item]_svg]:w-5\">\n {children as CommandChildren}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"fk:flex fk:h-9 fk:items-center fk:gap-2 fk:border-b fk:px-3\">\n <SearchIcon className=\"fk:size-4 fk:shrink-0 fk:opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'fk:flex fk:h-10 fk:w-full fk:rounded-md fk:bg-transparent fk:py-3 fk:text-sm fk:outline-hidden fk:placeholder:text-muted-foreground fk:disabled:cursor-not-allowed fk:disabled:opacity-50 fk:corner-squircle',\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn('fk:max-h-[300px] fk:scroll-py-1 fk:overflow-x-hidden fk:overflow-y-auto', className)}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return <CommandPrimitive.Empty data-slot=\"command-empty\" className=\"fk:py-6 fk:text-center fk:text-sm\" {...props} />;\n}\n\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'fk:overflow-hidden fk:p-1 fk:text-foreground fk:**:[[cmdk-group-heading]]:px-2 fk:**:[[cmdk-group-heading]]:py-1.5 fk:**:[[cmdk-group-heading]]:text-xs fk:**:[[cmdk-group-heading]]:font-medium fk:**:[[cmdk-group-heading]]:text-muted-foreground',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn('fk:-mx-1 fk:h-px fk:bg-border', className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"fk:relative fk:flex fk:cursor-default fk:items-center fk:gap-2 fk:rounded-sm fk:px-2 fk:py-1.5 fk:text-sm fk:outline-hidden fk:select-none fk:data-[disabled=true]:pointer-events-none fk:data-[disabled=true]:opacity-50 fk:data-[selected=true]:bg-accent fk:data-[selected=true]:text-accent-foreground fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4 fk:[&_svg:not([class*='text-'])]:text-muted-foreground fk:corner-squircle\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn('fk:ml-auto fk:text-xs fk:tracking-widest fk:text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport * as React from 'react';\nimport { Separator as SeparatorPrimitive } from 'radix-ui';\nimport { cn } from '../lib/utils';\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'fk:shrink-0 fk:bg-border fk:data-[orientation=horizontal]:h-px fk:data-[orientation=horizontal]:w-full fk:data-[orientation=vertical]:h-full fk:data-[orientation=vertical]:w-px',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","'use client';\n\nimport * as React from 'react';\nimport { ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\nimport { cn } from '../lib/utils';\n\nfunction ScrollArea({ className, children, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root data-slot=\"scroll-area\" className={cn('fk:relative', className)} {...props}>\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"fk:size-full fk:rounded-[inherit] fk:transition-[color,box-shadow] fk:outline-none fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:focus-visible:outline-1 fk:corner-squircle\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n 'fk:flex fk:touch-none fk:p-px fk:transition-colors fk:select-none',\n orientation === 'vertical' && 'fk:h-full fk:w-2.5 fk:border-l fk:border-l-transparent',\n orientation === 'horizontal' && 'fk:h-2.5 fk:flex-col fk:border-t fk:border-t-transparent',\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"fk:relative fk:flex-1 fk:rounded-full fk:bg-border fk:corner-squircle\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","import * as React from 'react';\nimport { Slot } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../lib/utils';\nimport { Separator } from './separator';\n\nconst buttonGroupVariants = cva(\n 'fk:flex fk:w-fit fk:items-stretch fk:has-[>[data-slot=button-group]]:gap-2 fk:[&>*]:focus-visible:relative fk:[&>*]:focus-visible:z-10 fk:has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md fk:[&>[data-slot=select-trigger]:not([class*=w-])]:w-fit fk:[&>input]:flex-1',\n {\n variants: {\n orientation: {\n horizontal:\n 'fk:[&>*:not(:first-child)]:rounded-l-none fk:[&>*:not(:first-child)]:border-l-0 fk:[&>*:not(:last-child)]:rounded-r-none',\n vertical:\n 'fk:flex-col fk:[&>*:not(:first-child)]:rounded-t-none fk:[&>*:not(:first-child)]:border-t-0 fk:[&>*:not(:last-child)]:rounded-b-none',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n }\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : 'div';\n\n return (\n <Comp\n className={cn(\n 'fk:bg-muted fk:shadow-xs fk:flex fk:items-center fk:gap-2 fk:rounded-md fk:border fk:px-4 fk:text-sm fk:font-medium fk:[&_svg:not([class*=size-])]:size-4 fk:[&_svg]:pointer-events-none fk:corner-squircle',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n 'fk:bg-input fk:relative fk:!m-0 fk:self-stretch fk:data-[orientation=vertical]:h-auto',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import'./index.css';import {g,d}from'./chunk-MBBE4RND.js';import {b as b$1}from'./chunk-U45E5X3H.js';import w,{mutate}from'swr';import {createContext,lazy,Suspense,useMemo,useContext}from'react';import {Navigate,useParams}from'react-router-dom';import {Bot,Layout,FileStack,BookOpenText,Waypoints,SquarePlay}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';var h={name:"_asset",plural:"_assets",display:"originalFilename",menu:{hidden:true},attributes:[{name:"path",label:"Asset",scope:"global",options:{size:140},dataType:"string",inputType:"text",previewType:"assetPreviewField",defaultValue:""},{name:"originalFilename",label:"Filename",scope:"global",options:{size:320},dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"size",label:"Size",scope:"global",options:{size:120},dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"width",label:"Width",scope:"global",options:{size:90},dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"height",label:"Height",scope:"global",options:{size:100},dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"mimeType",label:"Mime Type",scope:"global",options:{size:160},dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"lqip",label:"lqip",scope:"global",hidden:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"url",label:"URL",scope:"global",hidden:true,readOnly:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"_updatedAt",label:"Updated At",scope:"global",options:{size:220},readOnly:true,hidden:true,dataType:"datetime",inputType:"datetime",previewType:"datetime",defaultValue:""},{name:"tags",label:"Tags",scope:"relationship",dataType:"string",inputType:"relationship",defaultValue:"",previewType:"tags",options:{size:300},relationship:{mode:"multiple",field:"name",entity:"_tag"}}]};var f={name:"_tag",plural:"_tags",display:"name",menu:{hidden:true},attributes:[{name:"name",label:"Tag Name",scope:"global",options:{size:220},dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"_updatedAt",label:"Updated At",scope:"global",options:{size:220},readOnly:true,hidden:true,dataType:"datetime",inputType:"datetime",previewType:"datetime",defaultValue:""},{name:"assets",label:"Assets",scope:"relationship",dataType:"string",inputType:"relationship",defaultValue:"",relationship:{mode:"multiple",field:"originalFilename",entity:"_asset"}}]};async function C(e){try{let t=await fetch(d(e).schema,{credentials:"include",mode:"cors",cache:"no-cache"});if(!t.ok){let n=t.statusText||`Request failed with status ${String(t.status)}`;try{let i=await t.json();n=i.error??i.message??n;}catch{}return {ok:!1,projectId:e,error:{status:t.status,message:n}}}let a=await t.json();return {ok:!0,project:{...a,projectId:a.projectId||e}}}catch(t){return {ok:false,projectId:e,error:{status:0,message:t instanceof Error?t.message:"Network error"}}}}function b(e,t){let a=[],n={};for(let i of e??[])i.ok?a.push(i.project):n[i.projectId]=i.error;return {projects:a,errors:n,isLoading:t}}var A={revalidateOnFocus:true,focusThrottleInterval:15e3,revalidateOnReconnect:false};function L(e,t){return !t.ok&&e?.ok?e:t}function E(e,t){let a=t&&e.length>0?["project-schemas",t,...e]:null,{data:n,isLoading:i}=w(a,async()=>(await Promise.all(e.map(r=>C(r)))).map((r,m)=>L(n?.[m],r)),A);return b(n,!!a&&(i||n===void 0))}function N(e,t){return b(e?[e]:void 0,t)}function I(e,t){let a=t&&e?["project-schema",t,e]:null,{data:n,isLoading:i}=w(a,async()=>L(n,await C(e??"")),A);return N(n,!!a&&(i||n===void 0))}function _(e,t){return Array.isArray(e)&&(e[0]==="project-schema"||e[0]==="project-schemas")&&e.slice(2).includes(t)}function Oe(e){return mutate(t=>_(t,e))}function R(){let{resolvedTheme:e}=b$1();return jsx("div",{className:"fk:flex fk:w-full fk:h-full fk:justify-center fk:items-center fk:bg-background",children:jsxs("div",{className:"fk:flex fk:flex-col fk:items-center",children:[e==="dark"?jsxs("svg",{className:"fk:h-8 fk:w-8 fk:animate-bounce",fill:"none",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M7 8H41V40H7V8Z",fill:"#020817"}),jsx("path",{d:"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z",fill:"white"})]}):jsxs("svg",{className:"fk:h-8 fk:w-8 fk:animate-bounce",fill:"none",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M7 8H41V40H7V8Z",fill:"white"}),jsx("path",{d:"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z",fill:"#020817"})]}),jsx("div",{className:"fk:text-foreground fk:text-center fk:mt-4 fk:animate-pulse",children:"Loading..."})]})})}var $=Navigate;function o(e){let t=lazy(e);return jsx(Suspense,{fallback:jsx(R,{}),children:jsx(t,{})})}var Q=o(()=>import('./root-CCUROZVR.js').then(e=>({default:e.Root}))),Y=o(()=>import('./list-RCTHBJOK.js').then(e=>({default:e.List}))),ee=o(()=>import('./edit-entity-PVT34FD7.js').then(e=>({default:e.EditEntity}))),te=o(()=>import('./root-MLEJUEMJ.js').then(e=>({default:e.Root}))),oe=o(()=>import('./root-KXY4A6DW.js').then(e=>({default:e.Root}))),ne=o(()=>import('./list-N4E3VXM5.js').then(e=>({default:e.List}))),ae=o(()=>import('./source-2S24MZ5D.js').then(e=>({default:e.Source}))),ie=o(()=>import('./root-BUXIQKA5.js').then(e=>({default:e.Root}))),re=o(()=>import('./root-GQL3P63Z.js').then(e=>({default:e.Root}))),se=o(()=>import('./root-VA3E6HEY.js').then(e=>({default:e.Root}))),pe=o(()=>import('./plugin-pages-FEQILAQR.js').then(e=>({default:e.PluginsPage}))),ce=o(()=>import('./plugin-pages-FEQILAQR.js').then(e=>({default:e.InstalledPluginsPage}))),le=o(()=>import('./plugin-pages-FEQILAQR.js').then(e=>({default:e.PluginDetailPage}))),O=o(()=>import('./chat-page-LR7XC2US.js').then(e=>({default:e.AgentChatPage}))),me=o(()=>import('./pages-XUJGIHQI.js').then(e=>({default:e.AutomationsPage}))),ue=o(()=>import('./pages-XUJGIHQI.js').then(e=>({default:e.RunHistoryPage}))),de=o(()=>import('./pages-XUJGIHQI.js').then(e=>({default:e.ApprovalsPage}))),he=o(()=>import('./pages-XUJGIHQI.js').then(e=>({default:e.ActivityPage}))),fe=o(()=>import('./pages-XUJGIHQI.js').then(e=>({default:e.ActivityItemPage}))),ge=o(()=>import('./pages-XUJGIHQI.js').then(e=>({default:e.CreateAutomationPage}))),ye=o(()=>import('./pages-XUJGIHQI.js').then(e=>({default:e.AutomationDetailPage}))),Pe=o(()=>import('./pages-XUJGIHQI.js').then(e=>({default:e.RunsPage}))),Se=o(()=>import('./pages-XUJGIHQI.js').then(e=>({default:e.RunDetailPage}))),ke=o(()=>import('./skills-pages-SAOZTUOH.js').then(e=>({default:e.SkillsPage}))),je=o(()=>import('./skills-pages-SAOZTUOH.js').then(e=>({default:e.CreateSkillPage}))),Te=o(()=>import('./skills-pages-SAOZTUOH.js').then(e=>({default:e.SkillDetailPage}))),l=[{name:"ai",icon:jsx(Bot,{strokeWidth:1.5}),title:"AI",component:se,routes:[{path:"plugins",component:pe},{path:"plugins/installed",component:ce},{path:"plugins/:pluginId",component:le},{component:jsx($,{replace:true,to:"agent"}),path:""},{component:O,path:"agent"},{component:O,path:"agent/chats/:chatId"},{component:me,path:"automations"},{component:ue,path:"runs"},{component:de,path:"approvals"},{component:he,path:"activity"},{component:fe,path:"activity/:itemId"},{component:ge,path:"automations/new"},{component:ye,path:"automations/:automationId"},{component:Pe,path:"automations/:automationId/runs"},{component:Se,path:"automations/:automationId/runs/:runId"},{component:ke,path:"skills"},{component:je,path:"skills/new"},{component:Te,path:"skills/:skillId"}]},{name:"desk",icon:jsx(Layout,{strokeWidth:1.5}),title:"Desk",component:Q,routes:[{path:"list/:entity",component:Y,children:[{path:"edit/:id",component:ee}]}]},{name:"asset-manager",icon:jsx(FileStack,{strokeWidth:1.5}),title:"Asset Manager",component:te,routes:[]},{name:"knowledge",icon:jsx(BookOpenText,{strokeWidth:1.5}),title:"Knowledge",component:oe,routes:[{component:ne,path:""},{component:ae,path:":sourceId"}]},{name:"graph",icon:jsx(Waypoints,{strokeWidth:1.5}),title:"Graph",component:ie,routes:[]},{name:"explorer",icon:jsx(SquarePlay,{strokeWidth:1.5}),title:"Explorer",component:re,routes:[]}];var H=createContext({mode:"projects",apps:l,contributions:{apps:l},currentProjectId:void 0,currentProject:void 0,currentProjectSchema:[],projects:[],projectIds:[],projectSummaries:[],teams:[],schemaErrors:{},isLoadingSchemas:false}),Ce=[];function be(e){return [...e.filter(a=>a.name!==h.name&&a.name!==f.name),h,f]}function $e({projectIds:e,projectSummaries:t=[],teams:a=Ce,mode:n="projects",userId:i,children:y}){let{projectId:r}=useParams(),[,m]=g(),P=m.user?.id??i,F=E(n==="projects"?e:[],P),M=I(n==="hosted"&&r&&e.includes(r)?r:void 0,P),{projects:S,errors:k,isLoading:j}=n==="hosted"?M:F,u=useMemo(()=>e.map(p=>S.find(d=>d.projectId===p)).filter(p=>p!==void 0).map(p=>({...p,schema:be(p.schema)})),[S,e]),z=useMemo(()=>{let p=u.find(d=>d.projectId===r);return {mode:n,apps:l,contributions:{apps:l},currentProjectId:r,currentProject:p,currentProjectSchema:p?.schema??[],projects:u,projectIds:e,projectSummaries:t,teams:a,schemaErrors:k,isLoadingSchemas:j}},[r,k,j,n,e,t,u,a]);return jsx(H.Provider,{value:z,children:y})}function Qe(){return useContext(H)}
|
|
2
|
+
export{R as a,h as b,f as c,Oe as d,$e as e,Qe as f};//# sourceMappingURL=chunk-6I7D2JBA.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-6I7D2JBA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/entities/assets-schema.ts","../src/entities/tags-schema.ts","../src/core/config/use-project-schemas.ts","../src/ui/components/loading.tsx","../src/core/apps/built-in-apps.tsx","../src/core/config/config-context.tsx"],"names":["assetSchema","tagSchema","fetchProjectSchema","projectId","response","apiPaths","message","body","project","error","toProjectSchemasState","outcomes","isLoading","projects","errors","outcome","SCHEMA_SWR_OPTIONS","keepLoadedSchema","previous","next","useProjectSchemas","projectIds","userId","key","data","useSWR","index","toProjectSchemaState","useProjectSchema","isProjectSchemaKey","revalidateProjectSchema","mutate","Loading","resolvedTheme","useTheme","jsx","jsxs","NavigateCompat","Navigate","lazyElement","loader","Component","lazy","Suspense","deskRoot","m","deskList","deskEditEntity","assetManagerRoot","knowledgeRoot","knowledgeList","knowledgeSource","graphRoot","explorerRoot","aiRoot","aiPluginsPage","aiInstalledPluginsPage","aiPluginDetailPage","aiAgentChatPage","aiAutomationsPage","aiRunHistoryPage","aiApprovalsPage","aiActivityPage","aiActivityItemPage","aiCreateAutomationPage","aiAutomationDetailPage","aiRunsPage","aiRunDetailPage","aiSkillsPage","aiCreateSkillPage","aiSkillDetailPage","builtInApps","BotIcon","LayoutIcon","FileStackIcon","BookOpenTextIcon","WaypointsIcon","SquarePlayIcon","ConfigContext","createContext","NO_TEAMS","upsertReservedEntities","schema","entity","ConfigProvider","projectSummaries","teams","mode","children","currentProjectId","useParams","auth","useAuth","schemaUserId","allSchemas","currentSchema","loadedProjects","useMemo","value","currentProject","useConfig","useContext"],"mappings":"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","file":"chunk-6I7D2JBA.js","sourcesContent":["import type { Entity } from '../core/types';\n\nexport const assetSchema: Entity = {\n name: '_asset',\n plural: '_assets',\n display: 'originalFilename',\n menu: {\n hidden: true,\n },\n attributes: [\n {\n name: 'path',\n label: 'Asset',\n scope: 'global',\n options: {\n size: 140,\n },\n dataType: 'string',\n inputType: 'text',\n previewType: 'assetPreviewField',\n defaultValue: '',\n },\n {\n name: 'originalFilename',\n label: 'Filename',\n scope: 'global',\n options: {\n size: 320,\n },\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'size',\n label: 'Size',\n scope: 'global',\n options: {\n size: 120,\n },\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'width',\n label: 'Width',\n scope: 'global',\n options: {\n size: 90,\n },\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'height',\n label: 'Height',\n scope: 'global',\n options: {\n size: 100,\n },\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'mimeType',\n label: 'Mime Type',\n scope: 'global',\n options: {\n size: 160,\n },\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'lqip',\n label: 'lqip',\n scope: 'global',\n hidden: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'url',\n label: 'URL',\n scope: 'global',\n hidden: true,\n readOnly: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: '_updatedAt',\n label: 'Updated At',\n scope: 'global',\n options: {\n size: 220,\n },\n readOnly: true,\n hidden: true,\n dataType: 'datetime',\n inputType: 'datetime',\n previewType: 'datetime',\n defaultValue: '',\n },\n {\n name: 'tags',\n label: 'Tags',\n scope: 'relationship',\n dataType: 'string',\n inputType: 'relationship',\n defaultValue: '',\n previewType: 'tags',\n options: {\n size: 300,\n },\n relationship: {\n mode: 'multiple',\n field: 'name',\n entity: '_tag',\n },\n },\n ],\n};\n","import type { Entity } from '../core/types';\n\nexport const tagSchema: Entity = {\n name: '_tag',\n plural: '_tags',\n display: 'name',\n menu: {\n hidden: true,\n },\n attributes: [\n {\n name: 'name',\n label: 'Tag Name',\n scope: 'global',\n options: {\n size: 220,\n },\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: '_updatedAt',\n label: 'Updated At',\n scope: 'global',\n options: {\n size: 220,\n },\n readOnly: true,\n hidden: true,\n dataType: 'datetime',\n inputType: 'datetime',\n previewType: 'datetime',\n defaultValue: '',\n },\n {\n name: 'assets',\n label: 'Assets',\n scope: 'relationship',\n dataType: 'string',\n inputType: 'relationship',\n defaultValue: '',\n relationship: {\n mode: 'multiple',\n field: 'originalFilename',\n entity: '_asset',\n },\n },\n ],\n};\n","'use client';\n\nimport useSWR, { mutate } from 'swr';\nimport { apiPaths } from '../api-paths';\nimport type { ProjectSchemaError, ProjectUiConfig } from './types';\n\nexport type ProjectSchemasState = {\n projects: ProjectUiConfig[];\n errors: { [projectId: string]: ProjectSchemaError };\n isLoading: boolean;\n};\n\nexport type FetchOutcome =\n | { ok: true; project: ProjectUiConfig }\n | { ok: false; projectId: string; error: ProjectSchemaError };\n\nasync function fetchProjectSchema(projectId: string): Promise<FetchOutcome> {\n try {\n const response = await fetch(apiPaths(projectId).schema, {\n credentials: 'include',\n mode: 'cors',\n // Revalidate with the server on every fetch (304 when unchanged), so a\n // refetch after a deploy never reads a stale HTTP-cached schema.\n cache: 'no-cache',\n });\n\n if (!response.ok) {\n let message = response.statusText || `Request failed with status ${String(response.status)}`;\n\n try {\n const body = (await response.json()) as { error?: string; message?: string };\n message = body.error ?? body.message ?? message;\n } catch {\n // keep the status text\n }\n\n return { ok: false, projectId, error: { status: response.status, message } };\n }\n\n const project = (await response.json()) as ProjectUiConfig;\n\n return { ok: true, project: { ...project, projectId: project.projectId || projectId } };\n } catch (error) {\n return {\n ok: false,\n projectId,\n error: { status: 0, message: error instanceof Error ? error.message : 'Network error' },\n };\n }\n}\n\nexport function toProjectSchemasState(outcomes: FetchOutcome[] | undefined, isLoading: boolean): ProjectSchemasState {\n const projects: ProjectUiConfig[] = [];\n const errors: { [projectId: string]: ProjectSchemaError } = {};\n\n for (const outcome of outcomes ?? []) {\n if (outcome.ok) {\n projects.push(outcome.project);\n } else {\n errors[outcome.projectId] = outcome.error;\n }\n }\n\n return { projects, errors, isLoading };\n}\n\n/**\n * Schemas change on deploy, which can happen outside this tab (the agent, the\n * CLI). Refetch when the user comes back to the tab, at most every 15s;\n * SWR compares the result, so an unchanged schema does not re-render.\n */\nconst SCHEMA_SWR_OPTIONS = {\n revalidateOnFocus: true,\n focusThrottleInterval: 15_000,\n revalidateOnReconnect: false,\n} as const;\n\n/**\n * A refetch (tab focus, reload button, watched deploy) must never replace a\n * schema that already loaded with an error: that would swap the whole app for\n * an error screen and drop an open edit drawer. Offline, an expired session or\n * revoked access still surface through the GraphQL requests themselves.\n */\nexport function keepLoadedSchema(previous: FetchOutcome | undefined, next: FetchOutcome): FetchOutcome {\n return !next.ok && previous?.ok ? previous : next;\n}\n\n/**\n * Loads the deployed schema of every project the Studio can open. Fetching\n * starts once the user is known (the endpoint needs a session). The result is\n * refetched on tab focus, on the list's reload button and after a deploy the\n * Studio watched.\n */\nexport function useProjectSchemas(projectIds: string[], userId: string | undefined): ProjectSchemasState {\n const key = userId && projectIds.length > 0 ? ['project-schemas', userId, ...projectIds] : null;\n const { data, isLoading } = useSWR(\n key,\n async (): Promise<FetchOutcome[]> => {\n const outcomes = await Promise.all(projectIds.map((projectId) => fetchProjectSchema(projectId)));\n\n // The key fixes the order of projectIds, so outcomes line up with the previous data.\n return outcomes.map((outcome, index) => keepLoadedSchema(data?.[index], outcome));\n },\n SCHEMA_SWR_OPTIONS\n );\n\n return toProjectSchemasState(data, Boolean(key) && (isLoading || data === undefined));\n}\n\n/** State of a single project's schema, in the same shape as the multi-project hook. */\nexport function toProjectSchemaState(outcome: FetchOutcome | undefined, isLoading: boolean): ProjectSchemasState {\n return toProjectSchemasState(outcome ? [outcome] : undefined, isLoading);\n}\n\n/**\n * Hosted mode: loads only the project currently open. Each project has its own\n * SWR key, so switching back to a project reuses the schema already fetched.\n */\nexport function useProjectSchema(projectId: string | undefined, userId: string | undefined): ProjectSchemasState {\n const key = userId && projectId ? ['project-schema', userId, projectId] : null;\n const { data, isLoading } = useSWR(\n key,\n async (): Promise<FetchOutcome> => keepLoadedSchema(data, await fetchProjectSchema(projectId ?? '')),\n SCHEMA_SWR_OPTIONS\n );\n\n return toProjectSchemaState(data, Boolean(key) && (isLoading || data === undefined));\n}\n\n/** True for the SWR keys that hold `projectId`'s schema (single- and multi-project hooks). */\nexport function isProjectSchemaKey(key: unknown, projectId: string): boolean {\n return (\n Array.isArray(key) &&\n (key[0] === 'project-schema' || key[0] === 'project-schemas') &&\n key.slice(2).includes(projectId)\n );\n}\n\n/** Refetches the deployed schema of `projectId`, e.g. after the agent deployed a schema change. */\nexport function revalidateProjectSchema(projectId: string): Promise<unknown> {\n return mutate((key) => isProjectSchemaKey(key, projectId));\n}\n","import type { JSX } from 'react';\nimport { useTheme } from '../theme-context';\n\nexport function Loading(): JSX.Element {\n const { resolvedTheme } = useTheme();\n\n return (\n <div className=\"fk:flex fk:w-full fk:h-full fk:justify-center fk:items-center fk:bg-background\">\n <div className=\"fk:flex fk:flex-col fk:items-center\">\n {resolvedTheme === 'dark' ? (\n <svg\n className=\"fk:h-8 fk:w-8 fk:animate-bounce\"\n fill=\"none\"\n viewBox=\"0 0 48 48\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M7 8H41V40H7V8Z\" fill=\"#020817\" />\n <path\n d=\"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z\"\n fill=\"white\"\n />\n </svg>\n ) : (\n <svg\n className=\"fk:h-8 fk:w-8 fk:animate-bounce\"\n fill=\"none\"\n viewBox=\"0 0 48 48\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M7 8H41V40H7V8Z\" fill=\"white\" />\n <path\n d=\"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z\"\n fill=\"#020817\"\n />\n </svg>\n )}\n <div className=\"fk:text-foreground fk:text-center fk:mt-4 fk:animate-pulse\">Loading...</div>\n </div>\n </div>\n );\n}\n","import { lazy, Suspense } from 'react';\nimport type { ComponentType, JSX } from 'react';\nimport {\n BookOpenText as BookOpenTextIcon,\n Bot as BotIcon,\n FileStack as FileStackIcon,\n Layout as LayoutIcon,\n SquarePlay as SquarePlayIcon,\n Waypoints as WaypointsIcon,\n} from 'lucide-react';\nimport { Navigate } from 'react-router-dom';\nimport { Loading } from '../../ui/components/loading';\nimport type { AppOptions } from '../config/types';\n\nconst NavigateCompat = Navigate as unknown as ComponentType<{\n replace?: boolean;\n to: string;\n}>;\n\n/**\n * Wraps a lazily imported component in Suspense so each built-in app (and each of its routes)\n * is only downloaded when it is first rendered.\n */\nfunction lazyElement(loader: () => Promise<{ default: ComponentType }>): JSX.Element {\n const Component = lazy(loader);\n\n return (\n <Suspense fallback={<Loading />}>\n <Component />\n </Suspense>\n );\n}\n\n// Desk\nconst deskRoot = lazyElement(() => import('../../apps/desk/root').then((m) => ({ default: m.Root })));\nconst deskList = lazyElement(() => import('../../apps/desk/list').then((m) => ({ default: m.List })));\nconst deskEditEntity = lazyElement(() =>\n import('../../apps/desk/edit-entity').then((m) => ({ default: m.EditEntity }))\n);\n\n// Asset Manager\nconst assetManagerRoot = lazyElement(() => import('../../apps/asset-manager/root').then((m) => ({ default: m.Root })));\n\n// Knowledge\nconst knowledgeRoot = lazyElement(() => import('../../apps/knowledge/root').then((m) => ({ default: m.Root })));\nconst knowledgeList = lazyElement(() => import('../../apps/knowledge/list').then((m) => ({ default: m.List })));\nconst knowledgeSource = lazyElement(() => import('../../apps/knowledge/source').then((m) => ({ default: m.Source })));\n\n// Graph\nconst graphRoot = lazyElement(() => import('../../apps/graph/root').then((m) => ({ default: m.Root })));\n\n// Explorer\nconst explorerRoot = lazyElement(() => import('../../apps/explorer/root').then((m) => ({ default: m.Root })));\n\n// AI\nconst aiRoot = lazyElement(() => import('../../apps/ai/root').then((m) => ({ default: m.Root })));\nconst aiPluginsPage = lazyElement(() => import('../../apps/ai/plugin-pages').then((m) => ({ default: m.PluginsPage })));\nconst aiInstalledPluginsPage = lazyElement(() =>\n import('../../apps/ai/plugin-pages').then((m) => ({ default: m.InstalledPluginsPage }))\n);\nconst aiPluginDetailPage = lazyElement(() =>\n import('../../apps/ai/plugin-pages').then((m) => ({ default: m.PluginDetailPage }))\n);\nconst aiAgentChatPage = lazyElement(() =>\n import('../../apps/ai/agent/chat-page').then((m) => ({ default: m.AgentChatPage }))\n);\nconst aiAutomationsPage = lazyElement(() =>\n import('../../apps/ai/pages').then((m) => ({ default: m.AutomationsPage }))\n);\nconst aiRunHistoryPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.RunHistoryPage })));\nconst aiApprovalsPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.ApprovalsPage })));\nconst aiActivityPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.ActivityPage })));\nconst aiActivityItemPage = lazyElement(() =>\n import('../../apps/ai/pages').then((m) => ({ default: m.ActivityItemPage }))\n);\nconst aiCreateAutomationPage = lazyElement(() =>\n import('../../apps/ai/pages').then((m) => ({ default: m.CreateAutomationPage }))\n);\nconst aiAutomationDetailPage = lazyElement(() =>\n import('../../apps/ai/pages').then((m) => ({ default: m.AutomationDetailPage }))\n);\nconst aiRunsPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.RunsPage })));\nconst aiRunDetailPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.RunDetailPage })));\nconst aiSkillsPage = lazyElement(() => import('../../apps/ai/skills-pages').then((m) => ({ default: m.SkillsPage })));\nconst aiCreateSkillPage = lazyElement(() =>\n import('../../apps/ai/skills-pages').then((m) => ({ default: m.CreateSkillPage }))\n);\nconst aiSkillDetailPage = lazyElement(() =>\n import('../../apps/ai/skills-pages').then((m) => ({ default: m.SkillDetailPage }))\n);\n\nexport const builtInApps: AppOptions[] = [\n {\n name: 'ai',\n icon: <BotIcon strokeWidth={1.5} />,\n title: 'AI',\n component: aiRoot,\n routes: [\n { path: 'plugins', component: aiPluginsPage },\n { path: 'plugins/installed', component: aiInstalledPluginsPage },\n { path: 'plugins/:pluginId', component: aiPluginDetailPage },\n {\n component: <NavigateCompat replace to=\"agent\" />,\n path: '',\n },\n {\n component: aiAgentChatPage,\n path: 'agent',\n },\n {\n component: aiAgentChatPage,\n path: 'agent/chats/:chatId',\n },\n {\n component: aiAutomationsPage,\n path: 'automations',\n },\n {\n component: aiRunHistoryPage,\n path: 'runs',\n },\n {\n component: aiApprovalsPage,\n path: 'approvals',\n },\n {\n component: aiActivityPage,\n path: 'activity',\n },\n {\n component: aiActivityItemPage,\n path: 'activity/:itemId',\n },\n {\n component: aiCreateAutomationPage,\n path: 'automations/new',\n },\n {\n component: aiAutomationDetailPage,\n path: 'automations/:automationId',\n },\n {\n component: aiRunsPage,\n path: 'automations/:automationId/runs',\n },\n {\n component: aiRunDetailPage,\n path: 'automations/:automationId/runs/:runId',\n },\n {\n component: aiSkillsPage,\n path: 'skills',\n },\n {\n component: aiCreateSkillPage,\n path: 'skills/new',\n },\n {\n component: aiSkillDetailPage,\n path: 'skills/:skillId',\n },\n ],\n },\n {\n name: 'desk',\n icon: <LayoutIcon strokeWidth={1.5} />,\n title: 'Desk',\n component: deskRoot,\n routes: [\n {\n path: 'list/:entity',\n component: deskList,\n children: [\n {\n path: 'edit/:id',\n component: deskEditEntity, // Not used, left here as an example of how to nest routes in apps\n },\n ],\n },\n ],\n },\n {\n name: 'asset-manager',\n icon: <FileStackIcon strokeWidth={1.5} />,\n title: 'Asset Manager',\n component: assetManagerRoot,\n routes: [],\n },\n {\n name: 'knowledge',\n icon: <BookOpenTextIcon strokeWidth={1.5} />,\n title: 'Knowledge',\n component: knowledgeRoot,\n routes: [\n {\n component: knowledgeList,\n path: '',\n },\n {\n component: knowledgeSource,\n path: ':sourceId',\n },\n ],\n },\n {\n name: 'graph',\n icon: <WaypointsIcon strokeWidth={1.5} />,\n title: 'Graph',\n component: graphRoot,\n routes: [],\n },\n {\n name: 'explorer',\n icon: <SquarePlayIcon strokeWidth={1.5} />,\n title: 'Explorer',\n component: explorerRoot,\n routes: [],\n },\n];\n","'use client';\n\nimport { createContext, useContext, useMemo } from 'react';\nimport type { JSX } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useAuth } from '../../auth/auth-context';\nimport { assetSchema } from '../../entities/assets-schema';\nimport { tagSchema } from '../../entities/tags-schema';\nimport { builtInApps } from '../apps/built-in-apps';\nimport type { AppOptions, HostedTeam, ProjectSchemaError, ProjectSummary, ProjectUiConfig, StudioMode } from './types';\nimport type { Entity } from '../types';\nimport { useProjectSchema, useProjectSchemas } from './use-project-schemas';\n\nexport interface ConfigContext {\n /** `projects` when the host passed `projectIds`, `hosted` when the Studio listed the user's projects itself. */\n mode: StudioMode;\n /** The Studio apps shown in the app bar, in order. */\n apps: AppOptions[];\n /** Kept for callers that read `contributions.apps`; same list as `apps`. */\n contributions: {\n apps: AppOptions[];\n };\n currentProjectId?: string;\n /** The project named by the `:projectId` route param, once its schema has loaded. */\n currentProject?: ProjectUiConfig;\n currentProjectSchema: Entity[];\n /** Projects whose schema loaded, in `projectIds` order. */\n projects: ProjectUiConfig[];\n /** Every project id the Studio can open, loaded or not. */\n projectIds: string[];\n /** Hosted mode: name, avatar, role and team of each project, known before any schema loads. */\n projectSummaries: ProjectSummary[];\n /** Hosted mode: the user's teams with their role; owners can create projects in them. */\n teams: HostedTeam[];\n /** Per project id: why its schema could not be loaded. */\n schemaErrors: { [projectId: string]: ProjectSchemaError };\n isLoadingSchemas: boolean;\n}\n\nconst ConfigContext = createContext<ConfigContext>({\n mode: 'projects',\n apps: builtInApps,\n contributions: { apps: builtInApps },\n currentProjectId: undefined,\n currentProject: undefined,\n currentProjectSchema: [],\n projects: [],\n projectIds: [],\n projectSummaries: [],\n teams: [],\n schemaErrors: {},\n isLoadingSchemas: false,\n});\n\nconst NO_TEAMS: HostedTeam[] = [];\n\n/** Appends the reserved asset and tag entities to a deployed schema. */\nexport function upsertReservedEntities(schema: Entity[]): Entity[] {\n const withoutReserved = schema.filter((entity) => entity.name !== assetSchema.name && entity.name !== tagSchema.name);\n\n return [...withoutReserved, assetSchema, tagSchema];\n}\n\nexport function ConfigProvider({\n projectIds,\n projectSummaries = [],\n teams = NO_TEAMS,\n mode = 'projects',\n userId,\n children,\n}: {\n projectIds: string[];\n projectSummaries?: ProjectSummary[];\n teams?: HostedTeam[];\n mode?: StudioMode;\n /** Hosted mode: the signed-in user's id, known before the per-project `/users/me` call. */\n userId?: string;\n children: React.ReactNode;\n}): JSX.Element {\n /**\n * Getting the projectId from the URL via react-router-dom's useParams hook triggers a rerender of this Context\n * every time the URL changes.\n */\n const { projectId: currentProjectId } = useParams<{ projectId: string }>();\n const [, auth] = useAuth();\n const schemaUserId = auth.user?.id ?? userId;\n // Project mode loads every project up front (short, host-defined list); hosted mode only the one open.\n const allSchemas = useProjectSchemas(mode === 'projects' ? projectIds : [], schemaUserId);\n const currentSchema = useProjectSchema(\n mode === 'hosted' && currentProjectId && projectIds.includes(currentProjectId) ? currentProjectId : undefined,\n schemaUserId\n );\n const { projects: loadedProjects, errors, isLoading } = mode === 'hosted' ? currentSchema : allSchemas;\n const projects = useMemo(\n () =>\n projectIds\n .map((projectId) => loadedProjects.find((project) => project.projectId === projectId))\n .filter((project): project is ProjectUiConfig => project !== undefined)\n .map((project) => ({ ...project, schema: upsertReservedEntities(project.schema) })),\n [loadedProjects, projectIds]\n );\n\n const value = useMemo<ConfigContext>(() => {\n const currentProject = projects.find((project) => project.projectId === currentProjectId);\n\n return {\n mode,\n apps: builtInApps,\n contributions: { apps: builtInApps },\n currentProjectId,\n currentProject,\n currentProjectSchema: currentProject?.schema ?? [],\n projects,\n projectIds,\n projectSummaries,\n teams,\n schemaErrors: errors,\n isLoadingSchemas: isLoading,\n };\n }, [currentProjectId, errors, isLoading, mode, projectIds, projectSummaries, projects, teams]);\n\n return <ConfigContext.Provider value={value}>{children}</ConfigContext.Provider>;\n}\n\nexport function useConfig(): ConfigContext {\n return useContext(ConfigContext);\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';import {b as b$1}from'./chunk-U6VZY3V2.js';import {b}from'./chunk-3SY46ERM.js';import {k,p,q as q$1,s,t,r}from'./chunk-S7Z6KKIN.js';import {c}from'./chunk-X3SHNHHM.js';import {useSyncExternalStore,useId,useState}from'react';import {LoaderCircle,ExternalLinkIcon}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';var K="/plugins/oauth/start",R=class extends Error{code="account_mismatch";constructor(){super('You signed in with a different account. Use "Connect another account" to add it.'),this.name="PluginAccountMismatchError";}};function U(t){let e;try{e=new URL(t);}catch{return null}return e.protocol!=="https:"||e.username!==""||e.password!==""?null:e}function Q(t,e){let n=b$1(),r=U(t),o=U(e);return !r||!o||r.origin!==n||r.pathname!==K||o.origin!==n||o.pathname!=="/"?null:{href:r.href,origin:n}}async function O(t,e,n,r){let o=window.open("about:blank",`flexkit-plugin-${crypto.randomUUID()}`,"popup,width=560,height=720");if(!o)throw new Error("Allow popups for Studio, then connect again.");let a;try{a=await t.connectPlugins({pluginId:e,scope:n,studioOrigin:window.location.origin,...r?.connectionId?{connectionId:r.connectionId}:{}});}catch(u){throw o.close(),u}let d=Q(a.authorizeUrl,a.completionOrigin);if(!d)throw o.close(),new Error("Connection could not be started.");let g=d.origin;await new Promise((u,m)=>{let c=false,f=false,k=false,h=i=>{if(!f){if(f=true,window.clearInterval(l),window.clearTimeout(C),window.removeEventListener("message",P),o.close(),i){m(i);return}u();}},v=async()=>{if(c||f)return;c=true;let i;try{i=await t.pluginOAuthStatus(a.transactionId);}catch{c=false;return}if(c=false,i.status==="complete"){h();return}if(!k&&o.closed&&i.status==="pending"){h(new Error("Connection window was closed."));return}(i.status==="failed"||new Date(i.expires_at).getTime()<Date.now())&&h(new Error("Connection was not completed. Please try again."));},P=i=>{if(i.origin!==g||i.source!==o||!i.data||typeof i.data!="object")return;let y=i.data;if(y.type==="flexkit:plugin-oauth-ready"&&y.transactionId===a.transactionId){k=true,o.postMessage({type:"flexkit:plugin-oauth-start",transactionId:a.transactionId,ticket:a.launchTicket},g);return}if(y.type==="flexkit:plugin-oauth"&&y.transactionId===a.transactionId){if(y.status==="failed"&&y.error==="account_mismatch"){h(new R);return}v();}},l=window.setInterval(()=>{v();},2e3),C=window.setTimeout(()=>h(new Error("Connection timed out. Please try again.")),6e5);window.addEventListener("message",P),o.location.href=d.href;});}function W(t){let{connect:e}=t;return e?.type==="api-token"?e.pattern?[{label:e.tokenLabel,pattern:e.pattern}]:[]:e?.type==="credentials"?[...e.fields,...e.methods.flatMap(n=>n.fields)].filter(n=>n.kind==="secret"&&n.detect).map(n=>({label:n.label,pattern:n.detect})):[]}function M(t,e){let n=t.methods.find(r=>r.key===e);return [...t.fields,...n?.fields??[]]}function z(t,e){return t.every(n=>!n.required||!!e[n.key]?.trim())}function X(t,e){for(let n of t){let r=e[n.key]?.trim()??"";if(!r){if(n.required)return {field:n.key,message:`Enter the ${n.label}.`};continue}if(r.length>4096)return {field:n.key,message:`The ${n.label} is too long; paste only the value.`};if(!S(r,n.pattern))return {field:n.key,message:`That is not a valid ${n.label}.`}}return null}function S(t,e){if(!e)return true;try{return new RegExp(e,"u").test(t)}catch{return true}}function Z(t){if(!t)return null;try{return new RegExp(t,"u")}catch{return null}}function ae(t,e){let n=t.split(/[\s"'`()<>[\]{},;:=!?&]+/).map(a=>a.replace(/\.+$/,"")).filter(Boolean),r=null,o=new Set;for(let a of e)for(let d of W(a)){let g=Z(d.pattern);for(let u of g?n:[])g.test(u)&&(r??={plugin:a,label:d.label},o.add(u));}return r?{...r,tokens:[...o]}:null}var _=null,q=0,L=null,N=new Set;function B(t){_=t,N.forEach(e=>e());}function ne(t){return N.add(t),()=>N.delete(t)}function me(t,e,n,r){let{connect:o}=e;if(o?.type!=="api-token"&&o?.type!=="credentials")return O(t,e.id,n,r).then(()=>true);L?.();let a=++q,d=r?.connectionId?{connectionId:r.connectionId}:{};return new Promise(g=>{let u=c=>{_?.id===a&&B(null),q===a&&(L=null),g(c);},m=o.type==="api-token"?{kind:"token",id:a,plugin:{...e,connect:o},submit:async c=>{await t.connectPluginToken({pluginId:e.id,scope:n,token:c,...d});},settle:u}:{kind:"credentials",id:a,plugin:{...e,connect:o},submit:async(c,f)=>{await t.connectPluginCredentials({pluginId:e.id,scope:n,method:c,values:f,...d});},settle:u};L=()=>u(false),setTimeout(()=>{q===a&&B(m);});})}function oe(t){if(!t)return null;try{let e=new URL(t);return e.protocol==="https:"?e.href:null}catch{return null}}function ke(){let t=useSyncExternalStore(ne,()=>_,()=>null);return t?t.kind==="token"?jsx(le,{request:t},t.id):jsx(re,{request:t},t.id):null}function $({id:t,message:e}){return e?jsx("p",{className:"fk:text-sm fk:text-destructive",id:t,children:e}):null}function V({href:t,label:e}){let n=oe(t);return n?jsxs("a",{className:"fk:inline-flex fk:items-center fk:gap-1 fk:text-sm fk:text-muted-foreground fk:underline-offset-4 fk:hover:underline",href:n,rel:"noreferrer",target:"_blank",children:[e,jsx(ExternalLinkIcon,{className:"fk:size-3.5"})]}):null}function re({request:t$1}){let{connect:e,name:n}=t$1.plugin,r$1=useId(),[o,a]=useState(e.methods[0]?.key??null),[d,g]=useState({}),[u,m]=useState(null),[c$1,f]=useState(false),k$1=M(e,o),h=e.methods.find(l=>l.key===o)??null,v=z(k$1,d);async function P(l){if(l.preventDefault(),c$1)return;let C=X(k$1,d);if(C){m(C);return}f(true),m(null);try{await t$1.submit(o??void 0,Object.fromEntries(k$1.map(i=>[i.key,d[i.key]?.trim()??""]).filter(([,i])=>i))),g({}),t$1.settle(!0);}catch(i){m({field:null,message:i instanceof Error?i.message:`${n} could not be connected.`});}finally{f(false);}}return jsx(k,{open:true,onOpenChange:l=>{!l&&!c$1&&t$1.settle(false);},children:jsx(p,{children:jsxs("form",{className:"fk:flex fk:flex-col fk:gap-4",onSubmit:l=>{P(l);},children:[jsxs(q$1,{children:[jsxs(s,{children:["Connect ",n]}),jsxs(t,{children:[e.description," Flexkit checks the credentials with ",n,", stores them encrypted and sends them only to Flexkit's own ",n," server; the agent can use the tools but never sees them."]})]}),e.methods.length>1?jsx("div",{className:"fk:space-y-1.5",role:"group","aria-label":"How to connect",children:e.methods.map(l=>jsxs("button",{"aria-pressed":o===l.key,className:`fk:flex fk:w-full fk:flex-col fk:rounded-lg fk:border fk:px-3 fk:py-2 fk:text-left fk:corner-squircle ${o===l.key?"fk:border-primary fk:bg-primary/5":"fk:border-border fk:hover:bg-muted/60"}`,disabled:c$1,onClick:()=>{a(l.key),m(null);},type:"button",children:[jsx("span",{className:"fk:text-sm fk:font-medium",children:l.label}),l.description?jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:l.description}):null]},l.key))}):h?.description?jsx("p",{className:"fk:text-sm fk:text-muted-foreground",children:h.description}):null,k$1.map((l,C)=>{let i=`${r$1}-${l.key}`,y=u?.field===l.key?u.message:null;return jsxs("div",{className:"fk:flex fk:flex-col fk:gap-2",children:[jsx("label",{className:"fk:text-sm fk:font-medium",htmlFor:i,children:l.label}),jsx(b,{"aria-describedby":y?`${i}-error`:l.help?`${i}-help`:void 0,"aria-invalid":y?true:void 0,autoComplete:"off",autoFocus:C===0,disabled:c$1,id:i,placeholder:l.placeholder??void 0,spellCheck:false,type:l.kind==="secret"?"password":"text",value:d[l.key]??"",onChange:j=>{g(Y=>({...Y,[l.key]:j.target.value})),m(null);}}),l.help&&!y?jsx("p",{className:"fk:text-sm fk:text-muted-foreground",id:`${i}-help`,children:l.help}):null,jsx($,{id:`${i}-error`,message:y})]},l.key)}),jsx($,{id:`${r$1}-error`,message:u?.field===null?u.message:null}),jsx(V,{href:e.helpUrl,label:`How to set up ${n}`}),jsxs(r,{children:[jsx(c,{disabled:c$1,size:"sm",type:"button",variant:"outline",onClick:()=>t$1.settle(false),children:"Cancel"}),jsxs(c,{disabled:c$1||!v,size:"sm",type:"submit",children:[c$1?jsx(LoaderCircle,{className:"fk:size-4 fk:animate-spin"}):null,"Connect"]})]})]})})})}function le({request:t$1}){let{connect:e,name:n}=t$1.plugin,r$1=useId(),[o,a]=useState(""),[d,g]=useState(null),[u,m]=useState(false);async function c$1(f){f.preventDefault();let k=o.trim();if(!(u||!k)){if(!S(k,e.pattern)){g(`That does not look like a ${e.tokenLabel}.`);return}m(true),g(null);try{await t$1.submit(k),a(""),t$1.settle(!0);}catch(h){g(h instanceof Error?h.message:`${n} could not be connected.`);}finally{m(false);}}}return jsx(k,{open:true,onOpenChange:f=>{!f&&!u&&t$1.settle(false);},children:jsx(p,{children:jsxs("form",{className:"fk:flex fk:flex-col fk:gap-4",onSubmit:f=>{c$1(f);},children:[jsxs(q$1,{children:[jsxs(s,{children:["Connect ",n]}),jsxs(t,{children:["Paste a ",e.tokenLabel,". Flexkit stores it encrypted and sends it only to ",n,"; the agent can use"," ",n,"'s tools but never sees the token. Give it read access only, unless the agent should change things in ",n,"."]})]}),jsxs("div",{className:"fk:flex fk:flex-col fk:gap-2",children:[jsx("label",{className:"fk:text-sm fk:font-medium",htmlFor:r$1,children:e.tokenLabel}),jsx(b,{"aria-describedby":d?`${r$1}-error`:void 0,"aria-invalid":d?true:void 0,autoComplete:"off",autoFocus:true,disabled:u,id:r$1,placeholder:e.placeholder??void 0,spellCheck:false,type:"password",value:o,onChange:f=>{a(f.target.value),g(null);}}),jsx($,{id:`${r$1}-error`,message:d}),jsx(V,{href:e.helpUrl,label:`How to create a ${e.tokenLabel}`})]}),jsxs(r,{children:[jsx(c,{disabled:u,size:"sm",type:"button",variant:"outline",onClick:()=>t$1.settle(false),children:"Cancel"}),jsxs(c,{disabled:u||!o.trim(),size:"sm",type:"submit",children:[u?jsx(LoaderCircle,{className:"fk:size-4 fk:animate-spin"}):null,"Connect"]})]})]})})})}export{R as a,O as b,ae as c,me as d,ke as e};//# sourceMappingURL=chunk-7ODGH7G2.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-7ODGH7G2.js.map
|