Highlight
Highlight
is a component that highlights specified strings within text. By default, it renders a p
element.
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
<Highlight query="わかんない" colorScheme="warning">
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ!
ジュー君がいいって言ってるもの、何がいいのかわかんないよ!
わかんない!私にはわかんないの!
ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ!
狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
</Highlight>
Usage
import { Highlight } from "@yamada-ui/react"
import { Highlight } from "@/components/ui"
import { Highlight } from "@workspaces/ui"
<Highlight />
Change Variant
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
<VStack>
<For each={["subtle", "solid", "text", "accent"]}>
{(variant, index) => (
<Highlight
key={index}
query="わかんない"
colorScheme="warning"
markProps={{ variant }}
>
わかんないよ…。わっかんないよ!
ジュー君の言ってることはひとつもわかんないよ!
ジュー君がいいって言ってるもの、何がいいのかわかんないよ!
わかんない!私にはわかんないの!
ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ!
狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
</Highlight>
)}
</For>
</VStack>
Change Color Scheme
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
<VStack>
<For each={["warning", "success"]}>
{(colorScheme, index) => (
<Highlight key={index} query="わかんない" colorScheme={colorScheme}>
わかんないよ…。わっかんないよ!
ジュー君の言ってることはひとつもわかんないよ!
ジュー君がいいって言ってるもの、何がいいのかわかんないよ!
わかんない!私にはわかんないの!
ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ!
狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
</Highlight>
)}
</For>
</VStack>
Specify Multiple
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
<Highlight query={["わかんない", "ジュー君"]} colorScheme="warning">
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ!
ジュー君がいいって言ってるもの、何がいいのかわかんないよ!
わかんない!私にはわかんないの!
ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ!
狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
</Highlight>
Style the Highlight
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
<Highlight
query="わかんない"
colorScheme="warning"
markProps={{ rounded: "full" }}
>
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ!
ジュー君がいいって言ってるもの、何がいいのかわかんないよ!
わかんない!私にはわかんないの!
ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ!
狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
</Highlight>
Use Fragments
By default, Highlight
renders a p
element. By setting fragment
, highlight
will use Fragment.
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
<Text>
<Highlight fragment query="わかんない" colorScheme="warning">
わかんないよ…。わっかんないよ!
ジュー君の言ってることはひとつもわかんないよ!
ジュー君がいいって言ってるもの、何がいいのかわかんないよ!
わかんない!私にはわかんないの!
ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ!
狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
</Highlight>
</Text>
Customize the Rendered Element
By using useHighlight
, you can customize multiple elements and their styles.
わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!
const chunks = useHighlight({
query: ["わかんない", "ジュー君"],
text: " わかんないよ…。わっかんないよ! ジュー君の言ってることはひとつもわかんないよ! ジュー君がいいって言ってるもの、何がいいのかわかんないよ! わかんない!私にはわかんないの! ブラッディって何がカッコイイの?血なんて嫌だよ!痛いだけだよ! 狂うのどこがカッコイイの?クレイジーのどこがいいのかわかんない!",
})
return (
<Text>
{chunks.map(({ match, text }, index) =>
match ? (
text === "わかんない" ? (
<Mark key={index} colorScheme="warning">
{text}
</Mark>
) : (
<Mark key={index} colorScheme="success">
{text}
</Mark>
)
) : (
text
),
)}
</Text>
)
"use client"
to the top of the file.