@schemavaults/ui 0.71.1 → 0.72.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ui/index.d.ts +2 -0
- package/dist/components/ui/index.js +1 -0
- package/dist/components/ui/index.js.map +1 -1
- package/dist/components/ui/mark/index.d.ts +4 -0
- package/dist/components/ui/mark/index.js +3 -0
- package/dist/components/ui/mark/index.js.map +1 -0
- package/dist/components/ui/mark/mark-variants.d.ts +6 -0
- package/dist/components/ui/mark/mark-variants.js +22 -0
- package/dist/components/ui/mark/mark-variants.js.map +1 -0
- package/dist/components/ui/mark/mark.d.ts +45 -0
- package/dist/components/ui/mark/mark.js +283 -0
- package/dist/components/ui/mark/mark.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,uBAAuB,CAAC;AAGtC,cAAc,aAAa,CAAC;AAG5B,cAAc,eAAe,CAAC;AAG9B,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,mBAAmB,CAAC;AAGlC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAG5B,cAAc,kCAAkC,CAAC;AAGjD,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,eAAe,CAAC;AAG9B,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,cAAc,CAAC;AAG7B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,aAAa,CAAC;AAG5B,cAAc,aAAa,CAAC;AAG5B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,cAAc,0BAA0B,CAAC;AAGzC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,YAAY,CAAC;AAG3B,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Mark, Mark as default, HighlightedText, markVariants, } from "./mark";
|
|
2
|
+
export type { MarkProps, HighlightedTextProps } from "./mark";
|
|
3
|
+
export { markVariantIds, markStyleIds, markSizeIds, } from "./mark-variants";
|
|
4
|
+
export type { MarkVariant, MarkStyle, MarkSize } from "./mark-variants";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/mark/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,IAAI,OAAO,EACf,eAAe,EACf,YAAY,GACb,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const markVariantIds: readonly ["default", "primary", "secondary", "info", "success", "warning", "destructive", "accent"];
|
|
2
|
+
export type MarkVariant = (typeof markVariantIds)[number];
|
|
3
|
+
export declare const markStyleIds: readonly ["solid", "soft", "underline", "outline"];
|
|
4
|
+
export type MarkStyle = (typeof markStyleIds)[number];
|
|
5
|
+
export declare const markSizeIds: readonly ["sm", "default", "lg"];
|
|
6
|
+
export type MarkSize = (typeof markSizeIds)[number];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const markVariantIds = [
|
|
2
|
+
"default",
|
|
3
|
+
"primary",
|
|
4
|
+
"secondary",
|
|
5
|
+
"info",
|
|
6
|
+
"success",
|
|
7
|
+
"warning",
|
|
8
|
+
"destructive",
|
|
9
|
+
"accent",
|
|
10
|
+
];
|
|
11
|
+
export const markStyleIds = [
|
|
12
|
+
"solid",
|
|
13
|
+
"soft",
|
|
14
|
+
"underline",
|
|
15
|
+
"outline",
|
|
16
|
+
];
|
|
17
|
+
export const markSizeIds = [
|
|
18
|
+
"sm",
|
|
19
|
+
"default",
|
|
20
|
+
"lg",
|
|
21
|
+
];
|
|
22
|
+
//# sourceMappingURL=mark-variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-variants.js","sourceRoot":"","sources":["../../../../src/components/ui/mark/mark-variants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,SAAS;IACT,WAAW;IACX,MAAM;IACN,SAAS;IACT,SAAS;IACT,aAAa;IACb,QAAQ;CAC4B,CAAC;AAGvC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO;IACP,MAAM;IACN,WAAW;IACX,SAAS;CAC2B,CAAC;AAGvC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI;IACJ,SAAS;IACT,IAAI;CACgC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
import { type ComponentProps, type Ref, type ReactElement } from "react";
|
|
3
|
+
import { markSizeIds, markStyleIds, markVariantIds, type MarkSize, type MarkStyle, type MarkVariant } from "./mark-variants";
|
|
4
|
+
declare const markVariants: (props?: ({
|
|
5
|
+
variant?: "default" | "info" | "warning" | "destructive" | "primary" | "accent" | "success" | "secondary" | null | undefined;
|
|
6
|
+
markStyle?: "outline" | "solid" | "underline" | "soft" | null | undefined;
|
|
7
|
+
size?: "sm" | "default" | "lg" | null | undefined;
|
|
8
|
+
rounded?: boolean | null | undefined;
|
|
9
|
+
animate?: boolean | null | undefined;
|
|
10
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
|
+
export interface MarkProps extends Omit<ComponentProps<"mark">, "style" | "ref">, VariantProps<typeof markVariants> {
|
|
12
|
+
/**
|
|
13
|
+
* Override the rendered tag. Defaults to the semantic `<mark>` element.
|
|
14
|
+
* Use `"span"` if you need decorative-only highlighting without the
|
|
15
|
+
* implicit ARIA `mark` semantics.
|
|
16
|
+
*/
|
|
17
|
+
as?: "mark" | "span";
|
|
18
|
+
/** Pass-through `style` prop (preserved so consumers can layer custom CSS). */
|
|
19
|
+
style?: ComponentProps<"mark">["style"];
|
|
20
|
+
/** React 19 ref-as-prop. */
|
|
21
|
+
ref?: Ref<HTMLElement>;
|
|
22
|
+
}
|
|
23
|
+
export declare function Mark({ className, variant, markStyle, size, rounded, animate, as, children, ref, ...props }: MarkProps): ReactElement;
|
|
24
|
+
export declare namespace Mark {
|
|
25
|
+
var displayName: string;
|
|
26
|
+
}
|
|
27
|
+
export interface HighlightedTextProps extends Omit<ComponentProps<"span">, "children">, Pick<MarkProps, "variant" | "markStyle" | "size" | "rounded" | "animate"> {
|
|
28
|
+
/** The full text to render. */
|
|
29
|
+
text: string;
|
|
30
|
+
/** A string token (or RegExp) to highlight inside `text`. */
|
|
31
|
+
match: string | RegExp | readonly string[];
|
|
32
|
+
/** When `match` is a string, control case sensitivity. Defaults to false. */
|
|
33
|
+
caseSensitive?: boolean;
|
|
34
|
+
/** When true, only highlight whole-word matches. Defaults to false. */
|
|
35
|
+
wholeWord?: boolean;
|
|
36
|
+
/** Optional class applied to each rendered <Mark>. */
|
|
37
|
+
markClassName?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function HighlightedText({ text, match, caseSensitive, wholeWord, variant, markStyle, size, rounded, animate, markClassName, className, ...props }: HighlightedTextProps): ReactElement;
|
|
40
|
+
export declare namespace HighlightedText {
|
|
41
|
+
var displayName: string;
|
|
42
|
+
}
|
|
43
|
+
export { markVariants, markVariantIds, markStyleIds, markSizeIds };
|
|
44
|
+
export type { MarkVariant, MarkStyle, MarkSize };
|
|
45
|
+
export default Mark;
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { useMemo, } from "react";
|
|
5
|
+
import { cn } from "../../../lib/utils";
|
|
6
|
+
import { markSizeIds, markStyleIds, markVariantIds, } from "./mark-variants";
|
|
7
|
+
const markVariants = cva("inline rounded-sm font-[inherit] decoration-skip-ink-auto transition-colors", {
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
// The classic highlighter look — explicit yellow, intentionally not themed.
|
|
11
|
+
default: "",
|
|
12
|
+
primary: "",
|
|
13
|
+
secondary: "",
|
|
14
|
+
info: "",
|
|
15
|
+
success: "",
|
|
16
|
+
warning: "",
|
|
17
|
+
destructive: "",
|
|
18
|
+
accent: "",
|
|
19
|
+
},
|
|
20
|
+
markStyle: {
|
|
21
|
+
solid: "",
|
|
22
|
+
soft: "",
|
|
23
|
+
underline: "bg-transparent border-b-2",
|
|
24
|
+
outline: "bg-transparent border",
|
|
25
|
+
},
|
|
26
|
+
size: {
|
|
27
|
+
sm: "px-0.5 text-[0.95em]",
|
|
28
|
+
default: "px-1 text-[1em]",
|
|
29
|
+
lg: "px-1.5 py-0.5 text-[1.05em] font-medium",
|
|
30
|
+
},
|
|
31
|
+
rounded: {
|
|
32
|
+
true: "rounded-md",
|
|
33
|
+
false: "rounded-sm",
|
|
34
|
+
},
|
|
35
|
+
animate: {
|
|
36
|
+
// Uses tailwindcss-animate's `animate-in` enter utilities, which are
|
|
37
|
+
// registered globally via @schemavaults/theme. The mark fades and
|
|
38
|
+
// slides in from a slight left offset — a natural reveal that does
|
|
39
|
+
// not depend on custom keyframes.
|
|
40
|
+
true: "animate-in fade-in slide-in-from-left-1 duration-500",
|
|
41
|
+
false: "",
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
compoundVariants: [
|
|
45
|
+
// === solid: explicit colors (highlighter feel) ===
|
|
46
|
+
{
|
|
47
|
+
markStyle: "solid",
|
|
48
|
+
variant: "default",
|
|
49
|
+
class: "bg-yellow-200 text-yellow-950 dark:bg-yellow-400/80 dark:text-yellow-950",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
markStyle: "solid",
|
|
53
|
+
variant: "primary",
|
|
54
|
+
class: "bg-primary text-primary-foreground",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
markStyle: "solid",
|
|
58
|
+
variant: "secondary",
|
|
59
|
+
class: "bg-secondary text-secondary-foreground",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
markStyle: "solid",
|
|
63
|
+
variant: "info",
|
|
64
|
+
class: "bg-sky-300 text-sky-950 dark:bg-sky-400/80 dark:text-sky-950",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
markStyle: "solid",
|
|
68
|
+
variant: "success",
|
|
69
|
+
class: "bg-emerald-300 text-emerald-950 dark:bg-emerald-400/80 dark:text-emerald-950",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
markStyle: "solid",
|
|
73
|
+
variant: "warning",
|
|
74
|
+
class: "bg-warning text-warning-foreground",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
markStyle: "solid",
|
|
78
|
+
variant: "destructive",
|
|
79
|
+
class: "bg-destructive text-destructive-foreground",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
markStyle: "solid",
|
|
83
|
+
variant: "accent",
|
|
84
|
+
class: "bg-accent text-accent-foreground",
|
|
85
|
+
},
|
|
86
|
+
// === soft: subtle tinted background ===
|
|
87
|
+
{
|
|
88
|
+
markStyle: "soft",
|
|
89
|
+
variant: "default",
|
|
90
|
+
class: "bg-yellow-200/50 text-foreground dark:bg-yellow-400/20 dark:text-yellow-100",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
markStyle: "soft",
|
|
94
|
+
variant: "primary",
|
|
95
|
+
class: "bg-primary/15 text-foreground dark:text-primary-foreground/90",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
markStyle: "soft",
|
|
99
|
+
variant: "secondary",
|
|
100
|
+
class: "bg-secondary/60 text-secondary-foreground",
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
markStyle: "soft",
|
|
104
|
+
variant: "info",
|
|
105
|
+
class: "bg-sky-300/30 text-foreground dark:text-sky-100",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
markStyle: "soft",
|
|
109
|
+
variant: "success",
|
|
110
|
+
class: "bg-emerald-300/30 text-foreground dark:text-emerald-100",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
markStyle: "soft",
|
|
114
|
+
variant: "warning",
|
|
115
|
+
class: "bg-warning/25 text-foreground",
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
markStyle: "soft",
|
|
119
|
+
variant: "destructive",
|
|
120
|
+
class: "bg-destructive/15 text-destructive dark:text-destructive-foreground/90",
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
markStyle: "soft",
|
|
124
|
+
variant: "accent",
|
|
125
|
+
class: "bg-accent/60 text-accent-foreground",
|
|
126
|
+
},
|
|
127
|
+
// === underline: colored bottom border only ===
|
|
128
|
+
{
|
|
129
|
+
markStyle: "underline",
|
|
130
|
+
variant: "default",
|
|
131
|
+
class: "border-yellow-400 text-foreground",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
markStyle: "underline",
|
|
135
|
+
variant: "primary",
|
|
136
|
+
class: "border-primary text-foreground",
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
markStyle: "underline",
|
|
140
|
+
variant: "secondary",
|
|
141
|
+
class: "border-muted-foreground/60 text-foreground",
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
markStyle: "underline",
|
|
145
|
+
variant: "info",
|
|
146
|
+
class: "border-sky-400 text-foreground",
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
markStyle: "underline",
|
|
150
|
+
variant: "success",
|
|
151
|
+
class: "border-emerald-500 text-foreground",
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
markStyle: "underline",
|
|
155
|
+
variant: "warning",
|
|
156
|
+
class: "border-warning text-foreground",
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
markStyle: "underline",
|
|
160
|
+
variant: "destructive",
|
|
161
|
+
class: "border-destructive text-foreground",
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
markStyle: "underline",
|
|
165
|
+
variant: "accent",
|
|
166
|
+
class: "border-accent-foreground/60 text-foreground",
|
|
167
|
+
},
|
|
168
|
+
// === outline: colored border only ===
|
|
169
|
+
{
|
|
170
|
+
markStyle: "outline",
|
|
171
|
+
variant: "default",
|
|
172
|
+
class: "border-yellow-400 text-yellow-700 dark:text-yellow-300",
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
markStyle: "outline",
|
|
176
|
+
variant: "primary",
|
|
177
|
+
class: "border-primary text-foreground",
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
markStyle: "outline",
|
|
181
|
+
variant: "secondary",
|
|
182
|
+
class: "border-muted-foreground/40 text-muted-foreground",
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
markStyle: "outline",
|
|
186
|
+
variant: "info",
|
|
187
|
+
class: "border-sky-400 text-sky-700 dark:text-sky-300",
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
markStyle: "outline",
|
|
191
|
+
variant: "success",
|
|
192
|
+
class: "border-emerald-500 text-emerald-700 dark:text-emerald-300",
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
markStyle: "outline",
|
|
196
|
+
variant: "warning",
|
|
197
|
+
class: "border-warning text-warning-foreground",
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
markStyle: "outline",
|
|
201
|
+
variant: "destructive",
|
|
202
|
+
class: "border-destructive text-destructive",
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
markStyle: "outline",
|
|
206
|
+
variant: "accent",
|
|
207
|
+
class: "border-accent text-accent-foreground",
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
defaultVariants: {
|
|
211
|
+
variant: "default",
|
|
212
|
+
markStyle: "solid",
|
|
213
|
+
size: "default",
|
|
214
|
+
rounded: false,
|
|
215
|
+
animate: false,
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
export function Mark({ className, variant, markStyle, size, rounded, animate, as = "mark", children, ref, ...props }) {
|
|
219
|
+
const Comp = as;
|
|
220
|
+
return (_jsx(Comp, { ref: ref, "data-slot": "mark", "data-variant": variant ?? "default", "data-mark-style": markStyle ?? "solid", className: cn(markVariants({ variant, markStyle, size, rounded, animate }), className), ...props, children: children }));
|
|
221
|
+
}
|
|
222
|
+
Mark.displayName = "Mark";
|
|
223
|
+
function escapeRegExp(value) {
|
|
224
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
225
|
+
}
|
|
226
|
+
function buildHighlightRegExp(match, caseSensitive, wholeWord) {
|
|
227
|
+
if (match instanceof RegExp) {
|
|
228
|
+
// Ensure we have the global flag so we can iterate every match.
|
|
229
|
+
const flags = match.flags.includes("g") ? match.flags : `${match.flags}g`;
|
|
230
|
+
return new RegExp(match.source, flags);
|
|
231
|
+
}
|
|
232
|
+
const tokens = (Array.isArray(match) ? match : [match])
|
|
233
|
+
.map((token) => String(token))
|
|
234
|
+
.filter((token) => token.length > 0)
|
|
235
|
+
.map(escapeRegExp);
|
|
236
|
+
if (tokens.length === 0)
|
|
237
|
+
return null;
|
|
238
|
+
const body = tokens.join("|");
|
|
239
|
+
const pattern = wholeWord ? `\\b(?:${body})\\b` : `(?:${body})`;
|
|
240
|
+
return new RegExp(pattern, caseSensitive ? "g" : "gi");
|
|
241
|
+
}
|
|
242
|
+
export function HighlightedText({ text, match, caseSensitive = false, wholeWord = false, variant, markStyle, size, rounded, animate, markClassName, className, ...props }) {
|
|
243
|
+
const segments = useMemo(() => {
|
|
244
|
+
const regex = buildHighlightRegExp(match, caseSensitive, wholeWord);
|
|
245
|
+
if (regex === null)
|
|
246
|
+
return [text];
|
|
247
|
+
const parts = [];
|
|
248
|
+
let lastIndex = 0;
|
|
249
|
+
let key = 0;
|
|
250
|
+
// Defensive guard — RegExp.exec can loop forever on zero-width matches.
|
|
251
|
+
for (const result of text.matchAll(regex)) {
|
|
252
|
+
if (result.index === undefined)
|
|
253
|
+
continue;
|
|
254
|
+
if (result[0].length === 0)
|
|
255
|
+
continue;
|
|
256
|
+
if (result.index > lastIndex) {
|
|
257
|
+
parts.push(text.slice(lastIndex, result.index));
|
|
258
|
+
}
|
|
259
|
+
parts.push(_jsx(Mark, { variant: variant, markStyle: markStyle, size: size, rounded: rounded, animate: animate, className: markClassName, children: result[0] }, `m-${key++}`));
|
|
260
|
+
lastIndex = result.index + result[0].length;
|
|
261
|
+
}
|
|
262
|
+
if (lastIndex < text.length) {
|
|
263
|
+
parts.push(text.slice(lastIndex));
|
|
264
|
+
}
|
|
265
|
+
return parts;
|
|
266
|
+
}, [
|
|
267
|
+
text,
|
|
268
|
+
match,
|
|
269
|
+
caseSensitive,
|
|
270
|
+
wholeWord,
|
|
271
|
+
variant,
|
|
272
|
+
markStyle,
|
|
273
|
+
size,
|
|
274
|
+
rounded,
|
|
275
|
+
animate,
|
|
276
|
+
markClassName,
|
|
277
|
+
]);
|
|
278
|
+
return (_jsx("span", { "data-slot": "highlighted-text", className: className, ...props, children: segments }));
|
|
279
|
+
}
|
|
280
|
+
HighlightedText.displayName = "HighlightedText";
|
|
281
|
+
export { markVariants, markVariantIds, markStyleIds, markSizeIds };
|
|
282
|
+
export default Mark;
|
|
283
|
+
//# sourceMappingURL=mark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark.js","sourceRoot":"","sources":["../../../../src/components/ui/mark/mark.tsx"],"names":[],"mappings":"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"}
|