diff --git a/web/app/components/datasets/create/step-two/index.module.css b/web/app/components/datasets/create/step-two/index.module.css index 00b6a54bad..4d857968b7 100644 --- a/web/app/components/datasets/create/step-two/index.module.css +++ b/web/app/components/datasets/create/step-two/index.module.css @@ -14,7 +14,7 @@ } .form { - @apply px-16 pb-8; + @apply px-16 py-8; } .form .label { diff --git a/web/app/components/datasets/create/step-two/index.tsx b/web/app/components/datasets/create/step-two/index.tsx index 48443ccf21..ac8f2c873a 100644 --- a/web/app/components/datasets/create/step-two/index.tsx +++ b/web/app/components/datasets/create/step-two/index.tsx @@ -999,8 +999,11 @@ const StepTwo = ({ - - {showPreview &&
+ { }} footer={null}> + {showPreview &&
diff --git a/web/app/components/datasets/formatted-text/flavours/formatted.tsx b/web/app/components/datasets/formatted-text/flavours/formatted.tsx new file mode 100644 index 0000000000..b6f9d0467d --- /dev/null +++ b/web/app/components/datasets/formatted-text/flavours/formatted.tsx @@ -0,0 +1,7 @@ +import type { FC, PropsWithChildren } from 'react' + +export type FormattedTextProps = PropsWithChildren + +export const FormattedText: FC = (props) => { + return

{props.children}

+} diff --git a/web/app/components/datasets/formatted-text/flavours/normal.tsx b/web/app/components/datasets/formatted-text/flavours/normal.tsx new file mode 100644 index 0000000000..8567428151 --- /dev/null +++ b/web/app/components/datasets/formatted-text/flavours/normal.tsx @@ -0,0 +1,70 @@ +import { useState } from 'react' +import type { FC, ReactNode } from 'react' +import { autoUpdate, flip, inline, shift, useDismiss, useFloating, useHover, useInteractions, useRole } from '@floating-ui/react' +import type { SliceProps } from './type' +import classNames from '@/utils/classnames' + +type NormalSliceProps = SliceProps<{ + label: ReactNode + tooltip: ReactNode +}> + +const baseStyle = 'py-[3px]' + +export const NormalSlice: FC = (props) => { + const { label, className, text, tooltip, ...rest } = props + const [tooltipOpen, setTooltipOpen] = useState(false) + const { refs, floatingStyles, context } = useFloating({ + open: tooltipOpen, + onOpenChange: setTooltipOpen, + whileElementsMounted: autoUpdate, + placement: 'top', + middleware: [ + inline(), + flip(), + shift(), + ], + }) + const hover = useHover(context, { + delay: { open: 500 }, + move: true, + }) + const dismiss = useDismiss(context) + const role = useRole(context, { role: 'tooltip' }) + const { getReferenceProps, getFloatingProps } = useInteractions([hover, dismiss, role]) + return ( + <> + + + {label} + + + {text} + + + {/* use a zero-width space to make the hover area bigger */} + ​ + + + {tooltipOpen &&
+ {tooltip} +
} + + ) +} diff --git a/web/app/components/datasets/formatted-text/flavours/shared.tsx b/web/app/components/datasets/formatted-text/flavours/shared.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/web/app/components/datasets/formatted-text/flavours/type.ts b/web/app/components/datasets/formatted-text/flavours/type.ts new file mode 100644 index 0000000000..8d2fb431f9 --- /dev/null +++ b/web/app/components/datasets/formatted-text/flavours/type.ts @@ -0,0 +1,5 @@ +import type { ComponentProps } from 'react' + +export type SliceProps = T & { + text: string +} & ComponentProps<'span'> diff --git a/web/app/dev-preview/page.tsx b/web/app/dev-preview/page.tsx index 99041cd513..f97640c53b 100644 --- a/web/app/dev-preview/page.tsx +++ b/web/app/dev-preview/page.tsx @@ -1,12 +1,16 @@ 'use client' -import { useState } from 'react' -import { InputNumber } from '../components/base/input-number' -// import { Stepper } from '../components/datasets/create/stepper' +import { FormattedText } from '../components/datasets/formatted-text/flavours/formatted' +import { NormalSlice } from '../components/datasets/formatted-text/flavours/normal' export default function Page() { - const [step, setStep] = useState(0) return
- + + + + + + +
}