@burdenoff/microfe-botmanor 2026.813.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/README.md +12 -0
  2. package/dist/botlit/BotlitRoutes.js +357 -0
  3. package/dist/botlit/BotlitRoutes.js.map +1 -0
  4. package/dist/botlit/BotmanorRoot.js +12 -0
  5. package/dist/botlit/BotmanorRoot.js.map +1 -0
  6. package/dist/botlit/BotmanorRootInner.js +101 -0
  7. package/dist/botlit/BotmanorRootInner.js.map +1 -0
  8. package/dist/botlit/components/Badge.js +39 -0
  9. package/dist/botlit/components/Badge.js.map +1 -0
  10. package/dist/botlit/components/Button.js +46 -0
  11. package/dist/botlit/components/Button.js.map +1 -0
  12. package/dist/botlit/components/Card.js +31 -0
  13. package/dist/botlit/components/Card.js.map +1 -0
  14. package/dist/botlit/components/ChannelSelectorSheet.js +130 -0
  15. package/dist/botlit/components/ChannelSelectorSheet.js.map +1 -0
  16. package/dist/botlit/components/EmptyState.js +35 -0
  17. package/dist/botlit/components/EmptyState.js.map +1 -0
  18. package/dist/botlit/components/ErrorState.js +33 -0
  19. package/dist/botlit/components/ErrorState.js.map +1 -0
  20. package/dist/botlit/components/Input.js +59 -0
  21. package/dist/botlit/components/Input.js.map +1 -0
  22. package/dist/botlit/components/PageLayout.js +34 -0
  23. package/dist/botlit/components/PageLayout.js.map +1 -0
  24. package/dist/botlit/components/QuotaExhaustedDialog.js +20 -0
  25. package/dist/botlit/components/QuotaExhaustedDialog.js.map +1 -0
  26. package/dist/botlit/components/RouteLoader.js +52 -0
  27. package/dist/botlit/components/RouteLoader.js.map +1 -0
  28. package/dist/botlit/components/VersionHistoryPanel.js +144 -0
  29. package/dist/botlit/components/VersionHistoryPanel.js.map +1 -0
  30. package/dist/botlit/components/WorkspaceRequired.js +70 -0
  31. package/dist/botlit/components/WorkspaceRequired.js.map +1 -0
  32. package/dist/botlit/hooks/index.js +16 -0
  33. package/dist/botlit/hooks/internal/mutationInput.js +16 -0
  34. package/dist/botlit/hooks/internal/mutationInput.js.map +1 -0
  35. package/dist/botlit/hooks/internal/workspaceGateway.js +99 -0
  36. package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -0
  37. package/dist/botlit/hooks/useA2A.js +184 -0
  38. package/dist/botlit/hooks/useA2A.js.map +1 -0
  39. package/dist/botlit/hooks/useAgents.js +469 -0
  40. package/dist/botlit/hooks/useAgents.js.map +1 -0
  41. package/dist/botlit/hooks/useBots.js +306 -0
  42. package/dist/botlit/hooks/useBots.js.map +1 -0
  43. package/dist/botlit/hooks/useBuckets.js +119 -0
  44. package/dist/botlit/hooks/useBuckets.js.map +1 -0
  45. package/dist/botlit/hooks/useChannels.js +213 -0
  46. package/dist/botlit/hooks/useChannels.js.map +1 -0
  47. package/dist/botlit/hooks/useConversations.js +64 -0
  48. package/dist/botlit/hooks/useConversations.js.map +1 -0
  49. package/dist/botlit/hooks/useExecutions.js +86 -0
  50. package/dist/botlit/hooks/useExecutions.js.map +1 -0
  51. package/dist/botlit/hooks/useKnowledgeBases.js +113 -0
  52. package/dist/botlit/hooks/useKnowledgeBases.js.map +1 -0
  53. package/dist/botlit/hooks/useLLMProviders.js +83 -0
  54. package/dist/botlit/hooks/useLLMProviders.js.map +1 -0
  55. package/dist/botlit/hooks/useMCPServers.js +134 -0
  56. package/dist/botlit/hooks/useMCPServers.js.map +1 -0
  57. package/dist/botlit/hooks/usePolicies.js +120 -0
  58. package/dist/botlit/hooks/usePolicies.js.map +1 -0
  59. package/dist/botlit/hooks/usePromptTemplates.js +161 -0
  60. package/dist/botlit/hooks/usePromptTemplates.js.map +1 -0
  61. package/dist/botlit/hooks/useRetrievalProfiles.js +146 -0
  62. package/dist/botlit/hooks/useRetrievalProfiles.js.map +1 -0
  63. package/dist/botlit/hooks/useSkills.js +132 -0
  64. package/dist/botlit/hooks/useSkills.js.map +1 -0
  65. package/dist/botlit/hooks/useStore.js +167 -0
  66. package/dist/botlit/hooks/useStore.js.map +1 -0
  67. package/dist/botlit/hooks/useUserPlatformConnection.js +172 -0
  68. package/dist/botlit/hooks/useUserPlatformConnection.js.map +1 -0
  69. package/dist/botlit/index.js +11 -0
  70. package/dist/botlit/pages/A2AAgentDetailPage.js +589 -0
  71. package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -0
  72. package/dist/botlit/pages/A2ARegistryPage.js +240 -0
  73. package/dist/botlit/pages/A2ARegistryPage.js.map +1 -0
  74. package/dist/botlit/pages/AgentBuilderPage.js +486 -0
  75. package/dist/botlit/pages/AgentBuilderPage.js.map +1 -0
  76. package/dist/botlit/pages/AgentDetailPage.js +517 -0
  77. package/dist/botlit/pages/AgentDetailPage.js.map +1 -0
  78. package/dist/botlit/pages/AgentsListPage.js +294 -0
  79. package/dist/botlit/pages/AgentsListPage.js.map +1 -0
  80. package/dist/botlit/pages/BotChannelsTab.js +530 -0
  81. package/dist/botlit/pages/BotChannelsTab.js.map +1 -0
  82. package/dist/botlit/pages/BotDetailPage.js +872 -0
  83. package/dist/botlit/pages/BotDetailPage.js.map +1 -0
  84. package/dist/botlit/pages/BotWorkflowTab.js +229 -0
  85. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -0
  86. package/dist/botlit/pages/BotsListPage.js +313 -0
  87. package/dist/botlit/pages/BotsListPage.js.map +1 -0
  88. package/dist/botlit/pages/BucketsPage.js +604 -0
  89. package/dist/botlit/pages/BucketsPage.js.map +1 -0
  90. package/dist/botlit/pages/ChannelDetailPage.js +955 -0
  91. package/dist/botlit/pages/ChannelDetailPage.js.map +1 -0
  92. package/dist/botlit/pages/ChannelRoutesPage.js +218 -0
  93. package/dist/botlit/pages/ChannelRoutesPage.js.map +1 -0
  94. package/dist/botlit/pages/ChannelsPage.js +304 -0
  95. package/dist/botlit/pages/ChannelsPage.js.map +1 -0
  96. package/dist/botlit/pages/ChatPage.js +247 -0
  97. package/dist/botlit/pages/ChatPage.js.map +1 -0
  98. package/dist/botlit/pages/DashboardPage.js +318 -0
  99. package/dist/botlit/pages/DashboardPage.js.map +1 -0
  100. package/dist/botlit/pages/ExecutionDetailPage.js +313 -0
  101. package/dist/botlit/pages/ExecutionDetailPage.js.map +1 -0
  102. package/dist/botlit/pages/ExecutionsPage.js +294 -0
  103. package/dist/botlit/pages/ExecutionsPage.js.map +1 -0
  104. package/dist/botlit/pages/InstalledPackagesPage.js +619 -0
  105. package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -0
  106. package/dist/botlit/pages/KnowledgeBaseDetailPage.js +473 -0
  107. package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -0
  108. package/dist/botlit/pages/KnowledgeBasesPage.js +150 -0
  109. package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -0
  110. package/dist/botlit/pages/MCPServerDetailPage.js +550 -0
  111. package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -0
  112. package/dist/botlit/pages/MCPServersPage.js +321 -0
  113. package/dist/botlit/pages/MCPServersPage.js.map +1 -0
  114. package/dist/botlit/pages/PoliciesPage.js +224 -0
  115. package/dist/botlit/pages/PoliciesPage.js.map +1 -0
  116. package/dist/botlit/pages/PolicyDetailPage.js +861 -0
  117. package/dist/botlit/pages/PolicyDetailPage.js.map +1 -0
  118. package/dist/botlit/pages/PromptStudioPage.js +236 -0
  119. package/dist/botlit/pages/PromptStudioPage.js.map +1 -0
  120. package/dist/botlit/pages/PromptTemplateDetailPage.js +812 -0
  121. package/dist/botlit/pages/PromptTemplateDetailPage.js.map +1 -0
  122. package/dist/botlit/pages/PromptTemplatesPage.js +269 -0
  123. package/dist/botlit/pages/PromptTemplatesPage.js.map +1 -0
  124. package/dist/botlit/pages/RetrievalProfileDetailPage.js +559 -0
  125. package/dist/botlit/pages/RetrievalProfileDetailPage.js.map +1 -0
  126. package/dist/botlit/pages/RetrievalProfilesPage.js +219 -0
  127. package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -0
  128. package/dist/botlit/pages/SettingsPage.js +655 -0
  129. package/dist/botlit/pages/SettingsPage.js.map +1 -0
  130. package/dist/botlit/pages/SkillDetailPage.js +778 -0
  131. package/dist/botlit/pages/SkillDetailPage.js.map +1 -0
  132. package/dist/botlit/pages/SkillsPage.js +206 -0
  133. package/dist/botlit/pages/SkillsPage.js.map +1 -0
  134. package/dist/botlit/pages/StorePackageDetailPage.js +462 -0
  135. package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -0
  136. package/dist/botlit/pages/StorePage.js +315 -0
  137. package/dist/botlit/pages/StorePage.js.map +1 -0
  138. package/dist/botlit/providers/BotlitProvider.js +93 -0
  139. package/dist/botlit/providers/BotlitProvider.js.map +1 -0
  140. package/dist/botlit/store/botlitStore.js +101 -0
  141. package/dist/botlit/store/botlitStore.js.map +1 -0
  142. package/dist/botlit/utils/cn.js +10 -0
  143. package/dist/botlit/utils/cn.js.map +1 -0
  144. package/dist/botlit/utils/formatters.js +37 -0
  145. package/dist/botlit/utils/formatters.js.map +1 -0
  146. package/dist/botlit/utils/navigation.js +9 -0
  147. package/dist/botlit/utils/navigation.js.map +1 -0
  148. package/dist/botlit/utils/unions.js +14 -0
  149. package/dist/botlit/utils/unions.js.map +1 -0
  150. package/dist/generated/global-operations.js +66 -0
  151. package/dist/generated/global-operations.js.map +1 -0
  152. package/dist/generated/global-types.js +8 -0
  153. package/dist/generated/global-types.js.map +1 -0
  154. package/dist/generated/wspace-operations.js +1591 -0
  155. package/dist/generated/wspace-operations.js.map +1 -0
  156. package/dist/generated/wspace-types.js +12 -0
  157. package/dist/generated/wspace-types.js.map +1 -0
  158. package/dist/index.js +13 -0
  159. package/dist/utils/nativeBridge.js +2 -0
  160. package/package.json +133 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BucketsPage.js","names":[],"sources":["../../../src/botlit/pages/BucketsPage.tsx"],"sourcesContent":["/**\n * Buckets Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport { toast } from 'sonner';\nimport { isNative, nativeImpact, nativeNotify } from '../../utils/nativeBridge';\nimport {\n Plus,\n Search as SearchIcon,\n FolderTree,\n Folder,\n FolderOpen,\n ChevronRight,\n ChevronDown,\n MoreHorizontal,\n Settings,\n Edit,\n Trash2,\n X,\n Save,\n} from 'lucide-react';\nimport { PagePurpose, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Input, Textarea, FormField } from '../components/Input';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport {\n useBuckets,\n useBucketTree,\n useCreateBucket,\n useDeleteBucket,\n useUpdateBucket,\n type BucketRecord,\n type BucketTreeNode,\n} from '../hooks';\nimport { formatRelativeTime } from '../utils/formatters';\nimport type { Visibility } from '../types';\n\ntype BucketNode = BucketTreeNode;\n\nconst BucketTreeItem: FC<{\n bucket: BucketNode;\n level: number;\n expanded: Set<string>;\n onToggle: (id: string) => void;\n getPath: (path: string) => string;\n onEdit: (bucket: BucketNode) => void;\n onDelete: (bucketId: string) => void;\n onCreateChild: (parentId: string) => void;\n activeMenu: string | null;\n setActiveMenu: (id: string | null) => void;\n}> = ({\n bucket,\n level,\n expanded,\n onToggle,\n getPath,\n onEdit,\n onDelete,\n onCreateChild,\n activeMenu,\n setActiveMenu,\n}) => {\n const isExpanded = expanded.has(bucket.id);\n const hasChildren = bucket.children.length > 0;\n const isMenuOpen = activeMenu === bucket.id;\n\n return (\n <div>\n <Link to={getPath(`buckets/${bucket.id}`)}>\n <div\n className=\"flex items-center gap-2 px-3 py-2 hover:bg-accent rounded-md transition-colors cursor-pointer group\"\n style={{ paddingLeft: `${level * 24 + 12}px` }}\n >\n {hasChildren ? (\n <button\n onClick={(e) => {\n e.preventDefault();\n onToggle(bucket.id);\n }}\n className=\"p-0.5 hover:bg-bg-sunken rounded\"\n >\n {isExpanded ? (\n <ChevronDown size={16} className=\"text-text-secondary\" />\n ) : (\n <ChevronRight size={16} className=\"text-text-secondary\" />\n )}\n </button>\n ) : (\n <div className=\"w-5\" />\n )}\n\n {isExpanded ? (\n <FolderOpen size={18} className=\"text-primary\" />\n ) : (\n <Folder size={18} className=\"text-text-secondary\" />\n )}\n\n <span className=\"flex-1 font-medium\">{bucket.name}</span>\n\n <div className=\"relative\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 opacity-0 group-hover:opacity-100 transition-opacity\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setActiveMenu(isMenuOpen ? null : bucket.id);\n }}\n >\n <MoreHorizontal size={14} />\n </Button>\n {isMenuOpen && (\n <div className=\"absolute right-0 top-8 bg-popover border rounded-md shadow-lg z-50 py-1 min-w-[160px]\">\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent text-left\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onCreateChild(bucket.id);\n }}\n >\n <Plus size={14} />\n Add Sub-Bucket\n </button>\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent text-left\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onEdit(bucket);\n }}\n >\n <Edit size={14} />\n Edit\n </button>\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent text-status-error-text text-left\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onDelete(bucket.id);\n }}\n >\n <Trash2 size={14} />\n Delete\n </button>\n </div>\n )}\n </div>\n </div>\n </Link>\n\n {isExpanded &&\n bucket.children.map((child) => (\n <BucketTreeItem\n key={child.id}\n bucket={child}\n level={level + 1}\n expanded={expanded}\n onToggle={onToggle}\n getPath={getPath}\n onEdit={onEdit}\n onDelete={onDelete}\n onCreateChild={onCreateChild}\n activeMenu={activeMenu}\n setActiveMenu={setActiveMenu}\n />\n ))}\n </div>\n );\n};\n\nexport const BucketsPage: FC = () => {\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const [viewMode, setViewMode] = useState<'tree' | 'list'>('tree');\n const [expanded, setExpanded] = useState<Set<string>>(new Set(['bucket-1']));\n\n // Modal states\n const [showCreateModal, setShowCreateModal] = useState(false);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState<string | null>(null);\n const [editingBucket, setEditingBucket] = useState<BucketNode | null>(null);\n const [actionMenuBucket, setActionMenuBucket] = useState<string | null>(null);\n\n // Form state\n const [formData, setFormData] = useState({\n name: '',\n description: '',\n visibility: 'PRIVATE' as Visibility,\n parentBucketId: undefined as string | undefined,\n });\n\n const {\n data: buckets,\n loading: loadingBuckets,\n error: bucketsError,\n refetch: refetchBuckets,\n } = useBuckets({ search });\n const {\n data: bucketTree,\n loading: loadingTree,\n error: treeError,\n refetch: refetchTree,\n } = useBucketTree();\n const [createBucket, createBucketResult] = useCreateBucket();\n const [updateBucket, updateBucketResult] = useUpdateBucket();\n const [deleteBucket, deleteBucketResult] = useDeleteBucket();\n\n const handleToggle = (id: string) => {\n setExpanded((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n const expandAll = () => {\n if (bucketTree) {\n const allIds = new Set<string>();\n const collectIds = (nodes: BucketNode[]) => {\n for (const node of nodes) {\n allIds.add(node.id);\n if (node.children) collectIds(node.children);\n }\n };\n collectIds(bucketTree);\n setExpanded(allIds);\n }\n };\n\n const collapseAll = () => {\n setExpanded(new Set());\n };\n\n const isLoading = viewMode === 'tree' ? loadingTree : loadingBuckets;\n const loadError = viewMode === 'tree' ? treeError : bucketsError;\n const retryLoad = viewMode === 'tree' ? refetchTree : refetchBuckets;\n\n const handleCreate = async () => {\n if (!formData.name) return;\n try {\n await createBucket({\n name: formData.name,\n slug: formData.name.toLowerCase().replace(/\\s+/g, '-'),\n description: formData.description,\n parentBucketId: formData.parentBucketId,\n metadata: { visibility: formData.visibility },\n });\n } catch (err) {\n toast.error(err instanceof Error ? err.message : 'Failed to create bucket');\n return;\n }\n toast.success(`Bucket \"${formData.name}\" created`);\n void refetchBuckets();\n void refetchTree();\n setShowCreateModal(false);\n setFormData({ name: '', description: '', visibility: 'PRIVATE', parentBucketId: undefined });\n };\n\n const handleUpdate = async () => {\n if (!editingBucket || !formData.name) return;\n try {\n await updateBucket({\n bucketId: editingBucket.id,\n input: {\n name: formData.name,\n description: formData.description,\n },\n });\n } catch (err) {\n toast.error(err instanceof Error ? err.message : 'Failed to update bucket');\n return;\n }\n toast.success('Bucket updated');\n void refetchBuckets();\n void refetchTree();\n setEditingBucket(null);\n };\n\n const handleDelete = async (bucketId: string) => {\n try {\n await deleteBucket(bucketId);\n if (isNative()) void nativeNotify('success');\n toast.success('Bucket deleted');\n void refetchBuckets();\n void refetchTree();\n } catch (err) {\n if (isNative()) void nativeNotify('error');\n toast.error(err instanceof Error ? err.message : 'Failed to delete bucket');\n return;\n }\n setShowDeleteConfirm(null);\n };\n\n const startEditing = (bucket: BucketNode) => {\n setFormData({\n name: bucket.name,\n description: bucket.description ?? '',\n visibility: 'PRIVATE' as Visibility,\n parentBucketId: undefined,\n });\n setEditingBucket(bucket);\n setActionMenuBucket(null);\n };\n\n const openCreateModal = (parentId?: string) => {\n setFormData({\n name: '',\n description: '',\n visibility: 'PRIVATE',\n parentBucketId: parentId,\n });\n setShowCreateModal(true);\n };\n\n return (\n <PageLayout\n title=\"Buckets\"\n description=\"Organize your agents, apps, and resources into hierarchical folders\"\n actions={\n <Button leftIcon={<Plus size={16} />} onClick={() => openCreateModal()}>\n Create Bucket\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<FolderTree size={18} />}>\n Buckets are folders for everything you build in Botlit — agents, bots, skills, knowledge\n and more — arranged in a hierarchy that mirrors how your team works. Group resources by\n team, project or environment so they stay organised, easy to find and simple to share as\n your account grows. Browse the tree or list view to manage that structure.\n </PagePurpose>\n\n {/* Summary */}\n {buckets.length > 0 ? (\n <div className=\"grid grid-cols-2 gap-4 sm:grid-cols-2\">\n <GlassCard treatment=\"glass\" glow className=\"p-4\">\n <p className=\"text-sm text-text-secondary\">Total buckets</p>\n <p className=\"mt-1 text-2xl font-semibold tabular-nums text-text-primary\">\n {buckets.length}\n </p>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"p-4\">\n <p className=\"text-sm text-text-secondary\">Top-level buckets</p>\n <p className=\"mt-1 text-2xl font-semibold tabular-nums text-text-primary\">\n {bucketTree.length}\n </p>\n </GlassCard>\n </div>\n ) : null}\n\n {/* Controls */}\n <div className=\"flex items-center justify-between gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder=\"Search buckets...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={expandAll}>\n Expand All\n </Button>\n <Button variant=\"outline\" size=\"sm\" onClick={collapseAll}>\n Collapse All\n </Button>\n <div className=\"flex border border-border-subtle rounded-md overflow-hidden\">\n <Button\n variant={viewMode === 'tree' ? 'default' : 'ghost'}\n size=\"sm\"\n className=\"rounded-none\"\n onClick={() => setViewMode('tree')}\n >\n <FolderTree size={16} />\n </Button>\n <Button\n variant={viewMode === 'list' ? 'default' : 'ghost'}\n size=\"sm\"\n className=\"rounded-none\"\n onClick={() => setViewMode('list')}\n >\n <Settings size={16} />\n </Button>\n </div>\n </div>\n </div>\n\n {/* Tree View */}\n {viewMode === 'tree' && (\n <Card>\n <CardContent className=\"p-2\">\n {isLoading ? (\n <div className=\"space-y-2 p-4\">\n {[1, 2, 3, 4].map((i) => (\n <div\n key={i}\n className=\"h-10 bg-bg-sunken motion-safe:animate-vc-shimmer rounded\"\n />\n ))}\n </div>\n ) : loadError ? (\n <ErrorState resource=\"buckets\" error={loadError} onRetry={() => void retryLoad()} />\n ) : bucketTree.length > 0 ? (\n <div className=\"py-2\" onClick={() => setActionMenuBucket(null)}>\n {bucketTree.map((bucket) => (\n <BucketTreeItem\n key={bucket.id}\n bucket={bucket}\n level={0}\n expanded={expanded}\n onToggle={handleToggle}\n getPath={getPath}\n onEdit={startEditing}\n onDelete={(id) => setShowDeleteConfirm(id)}\n onCreateChild={(parentId) => openCreateModal(parentId)}\n activeMenu={actionMenuBucket}\n setActiveMenu={setActionMenuBucket}\n />\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-files\"\n title=\"No buckets created\"\n description=\"Create buckets to organize your Botlit resources.\"\n action={\n <Button leftIcon={<Plus size={16} />} onClick={() => openCreateModal()}>\n Create Bucket\n </Button>\n }\n />\n )}\n </CardContent>\n </Card>\n )}\n\n {/* List View */}\n {viewMode === 'list' && (\n <>\n {isLoading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {[1, 2, 3].map((i) => (\n <div\n key={i}\n className=\"h-32 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : loadError ? (\n <ErrorState resource=\"buckets\" error={loadError} onRetry={() => void retryLoad()} />\n ) : buckets.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {buckets.map((bucket: BucketRecord) => (\n <Link key={bucket.id} to={getPath(`buckets/${bucket.id}`)}>\n <Card className=\"h-full hover:border-primary/50 transition-colors cursor-pointer\">\n <CardHeader className=\"pb-2\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n <Folder className=\"h-5 w-5 text-primary\" />\n <div>\n <CardTitle className=\"text-base\">{bucket.name}</CardTitle>\n <CardDescription className=\"text-xs\">{bucket.path}</CardDescription>\n </div>\n </div>\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"text-text-secondary\">{bucket.slug}</span>\n <span className=\"text-xs text-text-secondary\">\n {formatRelativeTime(bucket.createdAt)}\n </span>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-search\"\n title=\"No buckets found\"\n description=\"Create buckets to organize your Botlit resources.\"\n action={\n <Button leftIcon={<Plus size={16} />} onClick={() => openCreateModal()}>\n Create Bucket\n </Button>\n }\n />\n )}\n </>\n )}\n\n {/* Info Card */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FolderTree size={18} />\n Organizing with Buckets\n </CardTitle>\n <CardDescription>\n Buckets help you organize and manage permissions for your resources\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"space-y-2\">\n <h4 className=\"font-medium\">Hierarchical Organization</h4>\n <p className=\"text-sm text-text-secondary\">\n Create nested folder structures to organize apps, agents, and other resources by\n team, project, or domain.\n </p>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium\">Inherited Permissions</h4>\n <p className=\"text-sm text-text-secondary\">\n Set owners, editors, and viewers at the bucket level. Permissions cascade to all\n items within.\n </p>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium\">Default Policies</h4>\n <p className=\"text-sm text-text-secondary\">\n Configure default policy bindings for buckets. All new items inherit these\n policies automatically.\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n\n {/* Create Bucket Modal */}\n {showCreateModal && (\n <div className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50\">\n <Card className=\"w-full max-w-md mx-4\">\n <CardHeader>\n <CardTitle className=\"flex items-center justify-between\">\n <span>Create Bucket</span>\n <Button variant=\"ghost\" size=\"icon\" onClick={() => setShowCreateModal(false)}>\n <X size={16} />\n </Button>\n </CardTitle>\n <CardDescription>\n {formData.parentBucketId ? 'Create a new sub-bucket' : 'Create a new root bucket'}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <FormField label=\"Bucket Name\" required>\n <Input\n placeholder=\"e.g., Marketing Team\"\n value={formData.name}\n onChange={(e) => setFormData({ ...formData, name: e.target.value })}\n />\n </FormField>\n <FormField label=\"Description\">\n <Textarea\n placeholder=\"What is this bucket for?\"\n value={formData.description}\n onChange={(e) => setFormData({ ...formData, description: e.target.value })}\n rows={2}\n />\n </FormField>\n <FormField label=\"Visibility\">\n <select\n className=\"flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm\"\n value={formData.visibility}\n onChange={(e) =>\n setFormData({ ...formData, visibility: e.target.value as Visibility })\n }\n >\n <option value=\"PRIVATE\">Private</option>\n <option value=\"WORKSPACE\">Workspace</option>\n <option value=\"PUBLIC\">Public</option>\n </select>\n </FormField>\n </CardContent>\n <div className=\"flex justify-end gap-2 p-4 border-t\">\n <Button variant=\"outline\" onClick={() => setShowCreateModal(false)}>\n Cancel\n </Button>\n <Button\n onClick={handleCreate}\n isLoading={createBucketResult.loading}\n disabled={!formData.name}\n leftIcon={<Save size={16} />}\n >\n Create Bucket\n </Button>\n </div>\n </Card>\n </div>\n )}\n\n {/* Edit Bucket Modal */}\n {editingBucket && (\n <div className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50\">\n <Card className=\"w-full max-w-md mx-4\">\n <CardHeader>\n <CardTitle className=\"flex items-center justify-between\">\n <span>Edit Bucket</span>\n <Button variant=\"ghost\" size=\"icon\" onClick={() => setEditingBucket(null)}>\n <X size={16} />\n </Button>\n </CardTitle>\n <CardDescription>Update bucket details</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <FormField label=\"Bucket Name\" required>\n <Input\n placeholder=\"e.g., Marketing Team\"\n value={formData.name}\n onChange={(e) => setFormData({ ...formData, name: e.target.value })}\n />\n </FormField>\n <FormField label=\"Description\">\n <Textarea\n placeholder=\"What is this bucket for?\"\n value={formData.description}\n onChange={(e) => setFormData({ ...formData, description: e.target.value })}\n rows={2}\n />\n </FormField>\n <FormField label=\"Visibility\">\n <select\n className=\"flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm\"\n value={formData.visibility}\n onChange={(e) =>\n setFormData({ ...formData, visibility: e.target.value as Visibility })\n }\n >\n <option value=\"PRIVATE\">Private</option>\n <option value=\"WORKSPACE\">Workspace</option>\n <option value=\"PUBLIC\">Public</option>\n </select>\n </FormField>\n </CardContent>\n <div className=\"flex justify-end gap-2 p-4 border-t\">\n <Button variant=\"outline\" onClick={() => setEditingBucket(null)}>\n Cancel\n </Button>\n <Button\n onClick={handleUpdate}\n isLoading={updateBucketResult.loading}\n disabled={!formData.name}\n leftIcon={<Save size={16} />}\n >\n Save Changes\n </Button>\n </div>\n </Card>\n </div>\n )}\n\n {/* Delete Confirmation Modal */}\n {showDeleteConfirm && (\n <div className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50\">\n <Card className=\"w-full max-w-md mx-4\">\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2 text-status-error-text\">\n <Trash2 size={18} />\n Delete Bucket\n </CardTitle>\n <CardDescription>\n Are you sure you want to delete this bucket? This action cannot be undone.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-text-secondary\">\n Note: Buckets with children or items cannot be deleted. You must delete or move\n all contents first.\n </p>\n </CardContent>\n <div className=\"flex justify-end gap-2 p-4 border-t\">\n <Button variant=\"outline\" onClick={() => setShowDeleteConfirm(null)}>\n Cancel\n </Button>\n <Button\n variant=\"destructive\"\n onClick={() => {\n nativeImpact('medium');\n void handleDelete(showDeleteConfirm);\n }}\n isLoading={deleteBucketResult.loading}\n leftIcon={<Trash2 size={16} />}\n >\n Delete Bucket\n </Button>\n </div>\n </Card>\n </div>\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}