mirror of
https://git.mirrors.martin98.com/https://github.com/infiniflow/ragflow.git
synced 2025-08-13 16:19:01 +08:00
### What problem does this PR solve? Feat: Modify the dataset list page style #3221 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
parent
6e7dd54a50
commit
fea9d970ec
@ -72,7 +72,7 @@ function CheckboxFormMultiple({
|
|||||||
<Form {...form}>
|
<Form {...form}>
|
||||||
<form
|
<form
|
||||||
onSubmit={form.handleSubmit(onSubmit)}
|
onSubmit={form.handleSubmit(onSubmit)}
|
||||||
className="space-y-8"
|
className="space-y-8 px-5 py-2.5"
|
||||||
onReset={() => form.reset()}
|
onReset={() => form.reset()}
|
||||||
>
|
>
|
||||||
{filters.map((x) => (
|
{filters.map((x) => (
|
||||||
@ -81,9 +81,11 @@ function CheckboxFormMultiple({
|
|||||||
control={form.control}
|
control={form.control}
|
||||||
name={x.field}
|
name={x.field}
|
||||||
render={() => (
|
render={() => (
|
||||||
<FormItem>
|
<FormItem className="space-y-4">
|
||||||
<div className="mb-4">
|
<div>
|
||||||
<FormLabel className="text-base">{x.label}</FormLabel>
|
<FormLabel className="text-base text-text-sub-title-invert">
|
||||||
|
{x.label}
|
||||||
|
</FormLabel>
|
||||||
</div>
|
</div>
|
||||||
{x.list.map((item) => (
|
{x.list.map((item) => (
|
||||||
<FormField
|
<FormField
|
||||||
@ -92,10 +94,10 @@ function CheckboxFormMultiple({
|
|||||||
name={x.field}
|
name={x.field}
|
||||||
render={({ field }) => {
|
render={({ field }) => {
|
||||||
return (
|
return (
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between text-text-title text-xs">
|
||||||
<FormItem
|
<FormItem
|
||||||
key={item.id}
|
key={item.id}
|
||||||
className="flex flex-row space-x-3 space-y-0 items-center"
|
className="flex flex-row space-x-3 space-y-0 items-center "
|
||||||
>
|
>
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
@ -111,9 +113,7 @@ function CheckboxFormMultiple({
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
<FormLabel className="text-lg">
|
<FormLabel>{item.label}</FormLabel>
|
||||||
{item.label}
|
|
||||||
</FormLabel>
|
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<span className=" text-sm">{item.count}</span>
|
<span className=" text-sm">{item.count}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -126,7 +126,7 @@ function CheckboxFormMultiple({
|
|||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
<div className="flex justify-between">
|
<div className="flex justify-end gap-5">
|
||||||
<Button
|
<Button
|
||||||
type="button"
|
type="button"
|
||||||
variant={'outline'}
|
variant={'outline'}
|
||||||
@ -155,7 +155,7 @@ export function FilterPopover({
|
|||||||
return (
|
return (
|
||||||
<Popover open={open} onOpenChange={setOpen}>
|
<Popover open={open} onOpenChange={setOpen}>
|
||||||
<PopoverTrigger asChild>{children}</PopoverTrigger>
|
<PopoverTrigger asChild>{children}</PopoverTrigger>
|
||||||
<PopoverContent>
|
<PopoverContent className="p-0">
|
||||||
<CheckboxFormMultiple
|
<CheckboxFormMultiple
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
value={value}
|
value={value}
|
||||||
|
@ -6,12 +6,13 @@ import React, {
|
|||||||
ReactNode,
|
ReactNode,
|
||||||
useMemo,
|
useMemo,
|
||||||
} from 'react';
|
} from 'react';
|
||||||
|
import { IconFont } from '../icon-font';
|
||||||
import { Button, ButtonProps } from '../ui/button';
|
import { Button, ButtonProps } from '../ui/button';
|
||||||
import { SearchInput } from '../ui/input';
|
import { SearchInput } from '../ui/input';
|
||||||
import { CheckboxFormMultipleProps, FilterPopover } from './filter-popover';
|
import { CheckboxFormMultipleProps, FilterPopover } from './filter-popover';
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
title?: string;
|
title?: ReactNode;
|
||||||
searchString?: string;
|
searchString?: string;
|
||||||
onSearchChange?: ChangeEventHandler<HTMLInputElement>;
|
onSearchChange?: ChangeEventHandler<HTMLInputElement>;
|
||||||
showFilter?: boolean;
|
showFilter?: boolean;
|
||||||
@ -23,8 +24,21 @@ const FilterButton = React.forwardRef<
|
|||||||
ButtonProps & { count?: number }
|
ButtonProps & { count?: number }
|
||||||
>(({ count = 0, ...props }, ref) => {
|
>(({ count = 0, ...props }, ref) => {
|
||||||
return (
|
return (
|
||||||
<Button variant="outline" size={'sm'} {...props} ref={ref}>
|
<Button variant="secondary" {...props} ref={ref}>
|
||||||
Filter <span>{count}</span> <ChevronDown />
|
<span
|
||||||
|
className={cn({
|
||||||
|
'text-text-title': count > 0,
|
||||||
|
'text-text-sub-title-invert': count === 0,
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
Filter
|
||||||
|
</span>
|
||||||
|
{count > 0 && (
|
||||||
|
<span className="rounded-full bg-text-badge px-1 text-xs ">
|
||||||
|
{count}
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
<ChevronDown />
|
||||||
</Button>
|
</Button>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -40,8 +54,10 @@ export default function ListFilterBar({
|
|||||||
onChange,
|
onChange,
|
||||||
filters,
|
filters,
|
||||||
className,
|
className,
|
||||||
|
icon,
|
||||||
}: PropsWithChildren<IProps & Omit<CheckboxFormMultipleProps, 'setOpen'>> & {
|
}: PropsWithChildren<IProps & Omit<CheckboxFormMultipleProps, 'setOpen'>> & {
|
||||||
className?: string;
|
className?: string;
|
||||||
|
icon?: ReactNode;
|
||||||
}) {
|
}) {
|
||||||
const filterCount = useMemo(() => {
|
const filterCount = useMemo(() => {
|
||||||
return typeof value === 'object' && value !== null
|
return typeof value === 'object' && value !== null
|
||||||
@ -52,9 +68,16 @@ export default function ListFilterBar({
|
|||||||
}, [value]);
|
}, [value]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={cn('flex justify-between mb-6 items-center', className)}>
|
<div className={cn('flex justify-between mb-5 items-center', className)}>
|
||||||
<span className="text-3xl font-bold ">{leftPanel || title}</span>
|
<div className="text-2xl font-semibold flex items-center gap-2.5">
|
||||||
<div className="flex gap-4 items-center">
|
{typeof icon === 'string' ? (
|
||||||
|
<IconFont name={icon} className="size-6"></IconFont>
|
||||||
|
) : (
|
||||||
|
icon
|
||||||
|
)}
|
||||||
|
{leftPanel || title}
|
||||||
|
</div>
|
||||||
|
<div className="flex gap-5 items-center">
|
||||||
{showFilter && (
|
{showFilter && (
|
||||||
<FilterPopover value={value} onChange={onChange} filters={filters}>
|
<FilterPopover value={value} onChange={onChange} filters={filters}>
|
||||||
<FilterButton count={filterCount}></FilterButton>
|
<FilterButton count={filterCount}></FilterButton>
|
||||||
@ -64,6 +87,7 @@ export default function ListFilterBar({
|
|||||||
<SearchInput
|
<SearchInput
|
||||||
value={searchString}
|
value={searchString}
|
||||||
onChange={onSearchChange}
|
onChange={onSearchChange}
|
||||||
|
className="w-32"
|
||||||
></SearchInput>
|
></SearchInput>
|
||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
|
@ -13,7 +13,7 @@ const buttonVariants = cva(
|
|||||||
destructive:
|
destructive:
|
||||||
'bg-destructive text-destructive-foreground hover:bg-destructive/90',
|
'bg-destructive text-destructive-foreground hover:bg-destructive/90',
|
||||||
outline:
|
outline:
|
||||||
'border border-colors-outline-sentiment-primary bg-background hover:bg-accent hover:text-accent-foreground',
|
'border border-text-sub-title-invert bg-transparent hover:bg-accent hover:text-accent-foreground',
|
||||||
secondary:
|
secondary:
|
||||||
'bg-secondary text-secondary-foreground hover:bg-secondary/80',
|
'bg-secondary text-secondary-foreground hover:bg-secondary/80',
|
||||||
ghost: 'hover:bg-accent hover:text-accent-foreground',
|
ghost: 'hover:bg-accent hover:text-accent-foreground',
|
||||||
@ -23,8 +23,8 @@ const buttonVariants = cva(
|
|||||||
icon: 'bg-colors-background-inverse-standard text-foreground hover:bg-colors-background-inverse-standard/80',
|
icon: 'bg-colors-background-inverse-standard text-foreground hover:bg-colors-background-inverse-standard/80',
|
||||||
},
|
},
|
||||||
size: {
|
size: {
|
||||||
default: 'h-10 px-4 py-2',
|
default: 'h-8 px-2.5 py-1.5 ',
|
||||||
sm: 'h-9 rounded-md px-3',
|
sm: 'h-6 rounded-sm px-2',
|
||||||
lg: 'h-11 rounded-md px-8',
|
lg: 'h-11 rounded-md px-8',
|
||||||
icon: 'h-10 w-10',
|
icon: 'h-10 w-10',
|
||||||
auto: 'h-full px-1',
|
auto: 'h-full px-1',
|
||||||
|
@ -12,7 +12,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
|
|||||||
<input
|
<input
|
||||||
type={type}
|
type={type}
|
||||||
className={cn(
|
className={cn(
|
||||||
'flex h-10 w-full rounded-md border border-input bg-colors-background-inverse-weak px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',
|
'flex h-8 w-full rounded-md border border-input bg-colors-background-inverse-weak px-2 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',
|
||||||
className,
|
className,
|
||||||
)}
|
)}
|
||||||
ref={ref}
|
ref={ref}
|
||||||
@ -28,7 +28,12 @@ export interface ExpandedInputProps extends Omit<InputProps, 'prefix'> {
|
|||||||
suffix?: React.ReactNode;
|
suffix?: React.ReactNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ExpandedInput = ({ suffix, prefix, ...props }: ExpandedInputProps) => {
|
const ExpandedInput = ({
|
||||||
|
suffix,
|
||||||
|
prefix,
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: ExpandedInputProps) => {
|
||||||
return (
|
return (
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
<span
|
<span
|
||||||
@ -39,7 +44,7 @@ const ExpandedInput = ({ suffix, prefix, ...props }: ExpandedInputProps) => {
|
|||||||
{prefix}
|
{prefix}
|
||||||
</span>
|
</span>
|
||||||
<Input
|
<Input
|
||||||
className={cn({ 'pr-10': suffix, 'pl-10': prefix })}
|
className={cn({ 'pr-8': !!suffix, 'pl-8': !!prefix }, className)}
|
||||||
{...props}
|
{...props}
|
||||||
></Input>
|
></Input>
|
||||||
<span
|
<span
|
||||||
@ -54,7 +59,12 @@ const ExpandedInput = ({ suffix, prefix, ...props }: ExpandedInputProps) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const SearchInput = (props: InputProps) => {
|
const SearchInput = (props: InputProps) => {
|
||||||
return <ExpandedInput suffix={<Search />} {...props}></ExpandedInput>;
|
return (
|
||||||
|
<ExpandedInput
|
||||||
|
prefix={<Search className="size-3.5" />}
|
||||||
|
{...props}
|
||||||
|
></ExpandedInput>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export { ExpandedInput, Input, SearchInput };
|
export { ExpandedInput, Input, SearchInput };
|
||||||
|
@ -48,6 +48,7 @@ const PaginationLink = ({
|
|||||||
<a
|
<a
|
||||||
aria-current={isActive ? 'page' : undefined}
|
aria-current={isActive ? 'page' : undefined}
|
||||||
className={cn(
|
className={cn(
|
||||||
|
'size-8',
|
||||||
buttonVariants({
|
buttonVariants({
|
||||||
variant: isActive ? 'outline' : 'ghost',
|
variant: isActive ? 'outline' : 'ghost',
|
||||||
size,
|
size,
|
||||||
@ -70,7 +71,6 @@ const PaginationPrevious = ({
|
|||||||
{...props}
|
{...props}
|
||||||
>
|
>
|
||||||
<ChevronLeft className="h-4 w-4" />
|
<ChevronLeft className="h-4 w-4" />
|
||||||
<span>Previous</span>
|
|
||||||
</PaginationLink>
|
</PaginationLink>
|
||||||
);
|
);
|
||||||
PaginationPrevious.displayName = 'PaginationPrevious';
|
PaginationPrevious.displayName = 'PaginationPrevious';
|
||||||
@ -85,7 +85,6 @@ const PaginationNext = ({
|
|||||||
className={cn('gap-1 pr-2.5', className)}
|
className={cn('gap-1 pr-2.5', className)}
|
||||||
{...props}
|
{...props}
|
||||||
>
|
>
|
||||||
<span>Next</span>
|
|
||||||
<ChevronRight className="h-4 w-4" />
|
<ChevronRight className="h-4 w-4" />
|
||||||
</PaginationLink>
|
</PaginationLink>
|
||||||
);
|
);
|
||||||
|
@ -98,7 +98,7 @@ export function RAGFlowPagination({
|
|||||||
}, [pageSize]);
|
}, [pageSize]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="flex items-center justify-end">
|
<section className="flex items-center justify-end text-text-sub-title-invert ">
|
||||||
<span className="mr-4">Total {total}</span>
|
<span className="mr-4">Total {total}</span>
|
||||||
<Pagination className="w-auto mx-0 mr-4">
|
<Pagination className="w-auto mx-0 mr-4">
|
||||||
<PaginationContent>
|
<PaginationContent>
|
||||||
@ -108,9 +108,14 @@ export function RAGFlowPagination({
|
|||||||
{pages.map((x) => (
|
{pages.map((x) => (
|
||||||
<PaginationItem
|
<PaginationItem
|
||||||
key={x}
|
key={x}
|
||||||
className={cn({ ['bg-accent rounded-md']: currentPage === x })}
|
className={cn({
|
||||||
|
['bg-background-header-bar rounded-md text-text-title']:
|
||||||
|
currentPage === x,
|
||||||
|
})}
|
||||||
>
|
>
|
||||||
<PaginationLink onClick={handlePageChange(x)}>{x}</PaginationLink>
|
<PaginationLink onClick={handlePageChange(x)} className="size-8">
|
||||||
|
{x}
|
||||||
|
</PaginationLink>
|
||||||
</PaginationItem>
|
</PaginationItem>
|
||||||
))}
|
))}
|
||||||
<PaginationItem>
|
<PaginationItem>
|
||||||
@ -126,6 +131,7 @@ export function RAGFlowPagination({
|
|||||||
options={sizeChangerOptions}
|
options={sizeChangerOptions}
|
||||||
value={currentPageSize}
|
value={currentPageSize}
|
||||||
onChange={handlePageSizeChange}
|
onChange={handlePageSizeChange}
|
||||||
|
triggerClassName="bg-background-header-bar"
|
||||||
></RAGFlowSelect>
|
></RAGFlowSelect>
|
||||||
)}
|
)}
|
||||||
</section>
|
</section>
|
||||||
|
@ -26,7 +26,7 @@ const SelectTrigger = React.forwardRef<
|
|||||||
<SelectPrimitive.Trigger
|
<SelectPrimitive.Trigger
|
||||||
ref={ref}
|
ref={ref}
|
||||||
className={cn(
|
className={cn(
|
||||||
'flex h-10 w-full items-center justify-between rounded-md border border-input bg-colors-background-inverse-weak px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',
|
'flex h-8 w-full items-center justify-between rounded-md border border-input bg-colors-background-inverse-weak px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',
|
||||||
className,
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
@ -192,6 +192,7 @@ export type RAGFlowSelectProps = Partial<ControllerRenderProps> & {
|
|||||||
allowClear?: boolean;
|
allowClear?: boolean;
|
||||||
placeholder?: React.ReactNode;
|
placeholder?: React.ReactNode;
|
||||||
contentProps?: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>;
|
contentProps?: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>;
|
||||||
|
triggerClassName?: string;
|
||||||
} & SelectPrimitive.SelectProps;
|
} & SelectPrimitive.SelectProps;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -223,6 +224,7 @@ export const RAGFlowSelect = forwardRef<
|
|||||||
placeholder,
|
placeholder,
|
||||||
contentProps = {},
|
contentProps = {},
|
||||||
defaultValue,
|
defaultValue,
|
||||||
|
triggerClassName,
|
||||||
},
|
},
|
||||||
ref,
|
ref,
|
||||||
) {
|
) {
|
||||||
@ -259,11 +261,11 @@ export const RAGFlowSelect = forwardRef<
|
|||||||
<Select onValueChange={handleChange} value={value} key={key}>
|
<Select onValueChange={handleChange} value={value} key={key}>
|
||||||
<FormControlWidget>
|
<FormControlWidget>
|
||||||
<SelectTrigger
|
<SelectTrigger
|
||||||
className="bg-colors-background-inverse-weak"
|
|
||||||
value={value}
|
value={value}
|
||||||
onReset={handleReset}
|
onReset={handleReset}
|
||||||
allowClear={allowClear}
|
allowClear={allowClear}
|
||||||
ref={ref}
|
ref={ref}
|
||||||
|
className={triggerClassName}
|
||||||
>
|
>
|
||||||
<SelectValue placeholder={placeholder} />
|
<SelectValue placeholder={placeholder} />
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
|
@ -117,7 +117,7 @@ export function Header() {
|
|||||||
}, [navigate]);
|
}, [navigate]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="py-6 px-10 flex justify-between items-center ">
|
<section className="p-5 pr-14 flex justify-between items-center ">
|
||||||
<div className="flex items-center gap-4">
|
<div className="flex items-center gap-4">
|
||||||
<img
|
<img
|
||||||
src={'/logo.svg'}
|
src={'/logo.svg'}
|
||||||
|
@ -15,7 +15,6 @@ import * as React from 'react';
|
|||||||
|
|
||||||
import { ChunkMethodDialog } from '@/components/chunk-method-dialog';
|
import { ChunkMethodDialog } from '@/components/chunk-method-dialog';
|
||||||
import { RenameDialog } from '@/components/rename-dialog';
|
import { RenameDialog } from '@/components/rename-dialog';
|
||||||
import { TableSkeleton } from '@/components/table-skeleton';
|
|
||||||
import { RAGFlowPagination } from '@/components/ui/ragflow-pagination';
|
import { RAGFlowPagination } from '@/components/ui/ragflow-pagination';
|
||||||
import {
|
import {
|
||||||
Table,
|
Table,
|
||||||
@ -48,7 +47,6 @@ export function DatasetTable({
|
|||||||
setPagination,
|
setPagination,
|
||||||
rowSelection,
|
rowSelection,
|
||||||
setRowSelection,
|
setRowSelection,
|
||||||
loading,
|
|
||||||
}: DatasetTableProps) {
|
}: DatasetTableProps) {
|
||||||
const [sorting, setSorting] = React.useState<SortingState>([]);
|
const [sorting, setSorting] = React.useState<SortingState>([]);
|
||||||
const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(
|
const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(
|
||||||
@ -142,9 +140,7 @@ export function DatasetTable({
|
|||||||
))}
|
))}
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<TableBody className="relative">
|
<TableBody className="relative">
|
||||||
{loading ? (
|
{table.getRowModel().rows?.length ? (
|
||||||
<TableSkeleton columnsLength={columns.length}></TableSkeleton>
|
|
||||||
) : table.getRowModel().rows?.length ? (
|
|
||||||
table.getRowModel().rows.map((row) => (
|
table.getRowModel().rows.map((row) => (
|
||||||
<TableRow
|
<TableRow
|
||||||
key={row.id}
|
key={row.id}
|
||||||
|
@ -71,7 +71,7 @@ export default function Dataset() {
|
|||||||
>
|
>
|
||||||
<DropdownMenu>
|
<DropdownMenu>
|
||||||
<DropdownMenuTrigger asChild>
|
<DropdownMenuTrigger asChild>
|
||||||
<Button variant={'tertiary'} size={'sm'}>
|
<Button size={'sm'}>
|
||||||
<Upload />
|
<Upload />
|
||||||
{t('knowledgeDetails.addFile')}
|
{t('knowledgeDetails.addFile')}
|
||||||
</Button>
|
</Button>
|
||||||
|
@ -85,7 +85,7 @@ export function DatasetCreatingDialog({ hideModal, onOk }: IModalProps<any>) {
|
|||||||
</DialogHeader>
|
</DialogHeader>
|
||||||
<InputForm onOk={onOk}></InputForm>
|
<InputForm onOk={onOk}></InputForm>
|
||||||
<DialogFooter>
|
<DialogFooter>
|
||||||
<Button type="submit" variant={'tertiary'} size={'sm'} form={FormId}>
|
<Button type="submit" form={FormId}>
|
||||||
{t('common.save')}
|
{t('common.save')}
|
||||||
</Button>
|
</Button>
|
||||||
</DialogFooter>
|
</DialogFooter>
|
||||||
|
@ -53,18 +53,19 @@ export default function Datasets() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="py-8 text-foreground">
|
<section className="py-4 text-foreground">
|
||||||
<ListFilterBar
|
<ListFilterBar
|
||||||
title="Datasets"
|
title={t('header.knowledgeBase')}
|
||||||
searchString={searchString}
|
searchString={searchString}
|
||||||
onSearchChange={handleInputChange}
|
onSearchChange={handleInputChange}
|
||||||
value={filterValue}
|
value={filterValue}
|
||||||
filters={owners}
|
filters={owners}
|
||||||
onChange={handleFilterSubmit}
|
onChange={handleFilterSubmit}
|
||||||
className="px-8"
|
className="px-8"
|
||||||
|
icon={'data'}
|
||||||
>
|
>
|
||||||
<Button size={'sm'} onClick={showModal}>
|
<Button onClick={showModal}>
|
||||||
<Plus className="mr-2 size-2.5" />
|
<Plus className=" size-2.5" />
|
||||||
{t('knowledgeList.createKnowledgeBase')}
|
{t('knowledgeList.createKnowledgeBase')}
|
||||||
</Button>
|
</Button>
|
||||||
</ListFilterBar>
|
</ListFilterBar>
|
||||||
|
@ -46,6 +46,7 @@ module.exports = {
|
|||||||
'text-badge': 'var(--text-badge)',
|
'text-badge': 'var(--text-badge)',
|
||||||
'text-title': 'var(--text-title)',
|
'text-title': 'var(--text-title)',
|
||||||
'text-sub-title': 'var(--text-sub-title)',
|
'text-sub-title': 'var(--text-sub-title)',
|
||||||
|
'text-sub-title-invert': 'var(--text-sub-title-invert)',
|
||||||
'text-title-invert': 'var(--text-title-invert)',
|
'text-title-invert': 'var(--text-title-invert)',
|
||||||
'background-header-bar': 'var(--background-header-bar)',
|
'background-header-bar': 'var(--background-header-bar)',
|
||||||
'background-card': 'var(--background-card)',
|
'background-card': 'var(--background-card)',
|
||||||
|
@ -79,6 +79,7 @@
|
|||||||
|
|
||||||
--text-title: rgba(22, 22, 24, 1);
|
--text-title: rgba(22, 22, 24, 1);
|
||||||
--text-sub-title: rgba(151, 154, 171, 1);
|
--text-sub-title: rgba(151, 154, 171, 1);
|
||||||
|
--text-sub-title-invert: rgba(91, 93, 106, 1);
|
||||||
|
|
||||||
--background-header-bar: rgba(11, 11, 12, 1);
|
--background-header-bar: rgba(11, 11, 12, 1);
|
||||||
--text-title-invert: rgba(255, 255, 255, 1);
|
--text-title-invert: rgba(255, 255, 255, 1);
|
||||||
@ -182,6 +183,7 @@
|
|||||||
|
|
||||||
--text-title: rgba(255, 255, 255, 1);
|
--text-title: rgba(255, 255, 255, 1);
|
||||||
--text-sub-title: rgba(91, 93, 106, 1);
|
--text-sub-title: rgba(91, 93, 106, 1);
|
||||||
|
--text-sub-title-invert: rgba(151, 154, 171, 1);
|
||||||
--background-header-bar: rgba(11, 11, 12, 1);
|
--background-header-bar: rgba(11, 11, 12, 1);
|
||||||
|
|
||||||
--text-title-invert: rgba(22, 22, 24, 1);
|
--text-title-invert: rgba(22, 22, 24, 1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user