From c1ed185b26455b33083549fdbed68b76865deea1 Mon Sep 17 00:00:00 2001 From: Rohit0301 Date: Sun, 10 May 2026 17:38:04 +0530 Subject: [PATCH 01/59] inital commit for context center --- .../src/main/resources/ui/package.json | 4 +- .../application/file-upload/file-upload.tsx | 230 ++++- .../src/components/foundations/dot-icon.tsx | 7 +- .../ui/src/assets/svg/ic-context-center.svg | 7 + .../src/assets/svg/ic-sidebar-collapsible.svg | 5 + .../ui/src/assets/svg/spreadsheet-icon.svg | 12 + .../AppRouter/AuthenticatedAppRouter.tsx | 8 + .../ContextCenterRouter.tsx | 112 +++ .../ArticleCard/ArticleCard.component.tsx | 84 ++ .../ArticleCard/ArticleCard.interface.ts | 33 + .../ArticleDetailHeader.component.tsx | 512 ++++++++++ .../ArticleDetailHeader.interface.ts | 40 + .../ArticleListSection.component.tsx | 102 ++ .../ArticleListSection.interface.ts | 24 + .../ContextCenterHeader.component.tsx | 79 ++ .../ContextCenterHeader.interface.ts | 25 + .../ContextCenterSidebar.component.tsx | 144 +++ .../ContextCenterSidebar.interface.ts | 37 + .../DocumentsView/DocumentsView.component.tsx | 340 +++++++ .../DocumentsView/DocumentsView.interface.ts | 38 + .../UploadDocumentModal.component.tsx | 118 +++ .../UploadDocumentModal.interface.ts | 18 + .../UploadedDocumentCard.component.tsx | 86 ++ .../UploadedDocumentCard.interface.ts | 29 + .../UploadedDocumentsSection.component.tsx | 97 ++ .../UploadedDocumentsSection.interface.ts | 22 + .../KnowledgeCenterLayout.tsx | 19 +- .../KnowledgePageDetailComponent.tsx | 50 +- .../KnowledgePageDetailRightPanel.tsx | 4 + .../KnowledgePageListComponent.tsx | 877 +++++++++--------- .../KnowledgePagesHierarchy.tsx | 40 +- .../ui/src/constants/LeftSidebar.constants.ts | 91 +- .../resources/ui/src/constants/constants.ts | 10 + .../resources/ui/src/enums/sidebar.enum.ts | 1 + .../interface/knowledge-center.interface.ts | 23 + .../ui/src/locale/languages/en-us.json | 6 + .../ContextCenterArchivePage.tsx | 48 + .../ContextCenterArticlesPage.tsx | 296 ++++++ .../ContextCenterDashboardPage.tsx | 77 ++ .../ContextCenterDocumentsPage.tsx | 61 ++ .../ContextCenterIntegrationsPage.tsx | 48 + .../ContextCenterPage.mock.ts | 215 +++++ .../KnowledgeCenterPage.tsx | 30 +- .../ui/src/utils/KnowledgePageUtils.tsx | 8 +- 44 files changed, 3642 insertions(+), 475 deletions(-) create mode 100644 openmetadata-ui/src/main/resources/ui/src/assets/svg/ic-context-center.svg create mode 100644 openmetadata-ui/src/main/resources/ui/src/assets/svg/ic-sidebar-collapsible.svg create mode 100644 openmetadata-ui/src/main/resources/ui/src/assets/svg/spreadsheet-icon.svg create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/AppRouter/ContextCenterRouter/ContextCenterRouter.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ArticleCard/ArticleCard.component.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ArticleCard/ArticleCard.interface.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ArticleDetailHeader/ArticleDetailHeader.component.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ArticleDetailHeader/ArticleDetailHeader.interface.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ArticleListSection/ArticleListSection.component.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ArticleListSection/ArticleListSection.interface.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ContextCenterHeader/ContextCenterHeader.component.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ContextCenterHeader/ContextCenterHeader.interface.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ContextCenterSidebar/ContextCenterSidebar.component.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ContextCenterSidebar/ContextCenterSidebar.interface.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/DocumentsView/DocumentsView.component.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/DocumentsView/DocumentsView.interface.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.component.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.interface.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/UploadedDocumentCard/UploadedDocumentCard.component.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/UploadedDocumentCard/UploadedDocumentCard.interface.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/UploadedDocumentsSection/UploadedDocumentsSection.component.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/UploadedDocumentsSection/UploadedDocumentsSection.interface.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/pages/ContextCenterPage/ContextCenterArchivePage/ContextCenterArchivePage.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/pages/ContextCenterPage/ContextCenterArticlesPage/ContextCenterArticlesPage.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/pages/ContextCenterPage/ContextCenterDashboardPage/ContextCenterDashboardPage.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/pages/ContextCenterPage/ContextCenterDocumentsPage/ContextCenterDocumentsPage.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/pages/ContextCenterPage/ContextCenterIntegrationsPage/ContextCenterIntegrationsPage.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/pages/ContextCenterPage/ContextCenterPage.mock.ts diff --git a/openmetadata-ui-core-components/src/main/resources/ui/package.json b/openmetadata-ui-core-components/src/main/resources/ui/package.json index b398ddfb1d96..669ab219c816 100644 --- a/openmetadata-ui-core-components/src/main/resources/ui/package.json +++ b/openmetadata-ui-core-components/src/main/resources/ui/package.json @@ -75,7 +75,9 @@ "author": "OpenMetadata", "license": "Apache-2.0", "dependencies": { - "@material/material-color-utilities": "^0.3.0" + "@material/material-color-utilities": "^0.3.0", + "@untitledui/file-icons": "^0.0.9", + "motion": "^12.38.0" }, "peerDependencies": { "@emotion/react": ">=11.0.0", diff --git a/openmetadata-ui-core-components/src/main/resources/ui/src/components/application/file-upload/file-upload.tsx b/openmetadata-ui-core-components/src/main/resources/ui/src/components/application/file-upload/file-upload.tsx index 09462d8a8b5c..4facb4d332e2 100644 --- a/openmetadata-ui-core-components/src/main/resources/ui/src/components/application/file-upload/file-upload.tsx +++ b/openmetadata-ui-core-components/src/main/resources/ui/src/components/application/file-upload/file-upload.tsx @@ -15,12 +15,23 @@ * Source: https://github.com/untitleduico/react/blob/main/components/application/file-upload/file-upload-base.tsx */ -import { UploadCloud02 } from '@untitledui/icons'; -import type { DragEvent, ChangeEvent } from 'react'; -import { useId, useRef, useState } from 'react'; import { Button } from '@/components/base/buttons/button'; +import { ButtonUtility } from '@/components/base/buttons/button-utility'; +import { ProgressBar } from '@/components/base/progress-indicators/progress-indicators'; import { FeaturedIcon } from '@/components/foundations/featured-icon/featured-icon'; import { cx } from '@/utils/cx'; +import { + CheckCircle, + Trash01, + UploadCloud02, + XCircle, +} from '@untitledui/icons'; +import type { + ChangeEvent, + ComponentPropsWithRef, + DragEvent, +} from 'react'; +import { useId, useRef, useState } from 'react'; export const getReadableFileSize = (bytes: number): string => { if (bytes === 0) { @@ -240,3 +251,216 @@ export const FileUploadDropZone = ({ }; FileUploadDropZone.displayName = 'FileUploadDropZone'; + +export interface FileListItemProps { + name: string; + size: number; + progress: number; + failed?: boolean; + className?: string; + onDelete?: () => void; + onRetry?: () => void; +} + +export const FileListItemProgressBar = ({ + className, + failed, + name, + onDelete, + onRetry, + progress, + size, +}: FileListItemProps) => { + const isComplete = progress === 100; + + return ( +
  • +
    + +
    + +
    +
    +
    +

    + {name} +

    +
    +

    + {getReadableFileSize(size)} +

    +
    +
    + {isComplete && !failed && ( + <> + +

    + Complete +

    + + )} + {!isComplete && !failed && ( + <> + +

    + Uploading... +

    + + )} + {failed && ( + <> + +

    + Failed +

    + + )} +
    +
    +
    + +
    + + {!failed && ( +
    + +
    + )} + + {failed && ( + + )} +
    +
  • + ); +}; + +export const FileListItemProgressFill = ({ + className, + failed, + name, + onDelete, + onRetry, + progress, + size, +}: FileListItemProps) => { + const isComplete = progress === 100; + + return ( +
  • +
    +
    +
    + +
    + +
    +
    +
    +

    + {name} +

    +
    +

    + {failed + ? 'Upload failed, please try again' + : getReadableFileSize(size)} +

    + {!failed && ( + <> +
    +
    + {isComplete ? ( + + ) : ( + + )} +

    {progress}%

    +
    + + )} +
    +
    + {failed && ( + + )} +
    + +
    +
  • + ); +}; + +const FileUploadRoot = (props: ComponentPropsWithRef<'div'>) => ( +
    +); + +const FileUploadList = (props: ComponentPropsWithRef<'ul'>) => ( +