diff --git a/packages/website-ue/src/components/ApiEntry.astro b/packages/website-ue/src/components/ApiEntry.astro index 1a3d6c447..f1ef9ca8e 100644 --- a/packages/website-ue/src/components/ApiEntry.astro +++ b/packages/website-ue/src/components/ApiEntry.astro @@ -2,8 +2,6 @@ import type { CollectionEntry } from "astro:content"; import { api } from "../core/api/dynamic"; import { ApiTester } from "./ApiTester"; -import { Code } from "./Code"; -import { Heading } from "./Heading"; import { MarkdownCustom } from "./MarkdownCustom"; interface Props { @@ -25,10 +23,6 @@ const hasSlugs = apiData.id.includes("[");
- - {apiData.id} - - diff --git a/packages/website-ue/src/components/ApiTester/index.module.css b/packages/website-ue/src/components/ApiTester/index.module.css index 039b69a69..28c143d11 100644 --- a/packages/website-ue/src/components/ApiTester/index.module.css +++ b/packages/website-ue/src/components/ApiTester/index.module.css @@ -3,9 +3,9 @@ align-items: center; gap: var(--space-4); - .slug { + .title { display: flex; align-items: center; - gap: var(--space-3); + gap: var(--space-2); } } diff --git a/packages/website-ue/src/components/ApiTester/index.tsx b/packages/website-ue/src/components/ApiTester/index.tsx index 70a43512f..44c9ba25d 100644 --- a/packages/website-ue/src/components/ApiTester/index.tsx +++ b/packages/website-ue/src/components/ApiTester/index.tsx @@ -5,6 +5,8 @@ import { } from "../../hooks/useLocale"; import { useStrings } from "../../hooks/useStrings"; import { Button } from "../Button"; +import { Code } from "../Code"; +import { Heading } from "../Heading"; import { Link } from "../Link"; import { TextField } from "../TextField"; import styles from "./index.module.css"; @@ -38,19 +40,36 @@ function Content({ path }: Props) { return (
- {slugs.map((slug) => ( -
- {slug}:{" "} - { - setValues((state) => ({ ...state, [slug]: event.target.value })); - }} - /> -
- ))} + + + {path.split(slugPattern).map((text, index) => { + const slug = slugs[index - 1]; - + return ( + <> + {index > 0 && ( + { + setValues((state) => ({ + ...state, + [slug]: event.target.value, + })); + }} + /> + )} + {text} + + ); + })} + + + +
diff --git a/packages/website-ue/src/components/TextField/index.css b/packages/website-ue/src/components/TextField/index.css index 7bf21f39f..1ebae7f3d 100644 --- a/packages/website-ue/src/components/TextField/index.css +++ b/packages/website-ue/src/components/TextField/index.css @@ -53,8 +53,7 @@ font-size: inherit; font-weight: medium; - padding: var(--space-3) 0; - padding-left: var(--space-4); + padding: var(--space-3) var(--space-4); color: var(--gray-12); @@ -65,5 +64,16 @@ &:focus { outline: none; } + + &[data-align="center"] { + text-align: center; + } + &[data-align="right"] { + text-align: right; + } + + &[data-monospace="true"] { + font-family: var(--font-family-mono); + } } } diff --git a/packages/website-ue/src/components/TextField/index.tsx b/packages/website-ue/src/components/TextField/index.tsx index 13ea84288..b4de99b0f 100644 --- a/packages/website-ue/src/components/TextField/index.tsx +++ b/packages/website-ue/src/components/TextField/index.tsx @@ -1,7 +1,9 @@ import { forwardRef, + useCallback, useImperativeHandle, useRef, + type ChangeEvent, type ComponentProps, type ReactNode, } from "react"; @@ -10,12 +12,40 @@ import "./index.css"; export interface TextFieldProps extends ComponentProps<"input"> { children?: ReactNode; + align?: "left" | "center" | "right"; + monospace?: boolean; + autoWidth?: boolean; } export const TextField = forwardRef( - ({ children, className, placeholder, disabled, ...props }, ref) => { + ( + { + children, + className, + monospace, + autoWidth, + placeholder, + align, + disabled, + value, + onChange, + ...props + }, + ref, + ) => { const input = useRef(null); + const handleChange = useCallback( + (event: ChangeEvent) => { + if (autoWidth && input.current) { + input.current.style.width = `${event.target.value.length || event.target.placeholder.length}ch`; + } + + onChange?.(event); + }, + [onChange], + ); + useImperativeHandle(ref, () => input.current!, []); return ( @@ -26,8 +56,19 @@ export const TextField = forwardRef( data-disabled={disabled} > {children} - +
); - } + }, );