@2urgseui/core 0.1.5 → 0.1.6

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/index.js CHANGED
@@ -1917,7 +1917,7 @@ var FileDropzone = React20.forwardRef(
1917
1917
  FileDropzone.displayName = "FileDropzone";
1918
1918
 
1919
1919
  // source/components/primitive/FormField/form-field.tsx
1920
- import * as React30 from "react";
1920
+ import * as React32 from "react";
1921
1921
  import {
1922
1922
  Controller
1923
1923
  } from "react-hook-form";
@@ -2033,10 +2033,119 @@ var Input = React22.forwardRef(
2033
2033
  Input.displayName = "Input";
2034
2034
 
2035
2035
  // source/components/primitive/Label/label.tsx
2036
- import * as React23 from "react";
2036
+ import * as React25 from "react";
2037
2037
  import * as LabelPrimitive from "@radix-ui/react-label";
2038
2038
  import { cva as cva8 } from "class-variance-authority";
2039
- import { jsx as jsx24, jsxs as jsxs15 } from "react/jsx-runtime";
2039
+ import { CircleHelp } from "lucide-react";
2040
+
2041
+ // source/components/primitive/RichHtml/rich-html.tsx
2042
+ import * as React23 from "react";
2043
+ import DOMPurify from "dompurify";
2044
+ import { jsx as jsx24 } from "react/jsx-runtime";
2045
+ var defaultSanitizeConfig = {
2046
+ USE_PROFILES: { html: true }
2047
+ };
2048
+ var richHtmlChrome = cn(
2049
+ "max-w-none text-base leading-relaxed text-foreground",
2050
+ // Block flow
2051
+ "[&_p]:mb-3 [&_p:last-child]:mb-0 [&_blockquote]:my-4 [&_blockquote]:border-l-2 [&_blockquote]:border-muted [&_blockquote]:pl-4 [&_blockquote]:italic",
2052
+ // Lists
2053
+ "[&_ul]:my-3 [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:my-3 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:my-1 [&_li]:pl-1",
2054
+ // Headings (common for TipTap / CMS output)
2055
+ "[&_h1]:mb-3 [&_h1]:mt-8 [&_h1]:text-3xl [&_h1]:font-semibold [&_h1]:first:mt-0",
2056
+ "[&_h2]:mb-2 [&_h2]:mt-6 [&_h2]:text-2xl [&_h2]:font-semibold [&_h2]:first:mt-0",
2057
+ "[&_h3]:mb-2 [&_h3]:mt-5 [&_h3]:text-xl [&_h3]:font-semibold [&_h3]:first:mt-0",
2058
+ "[&_h4]:mb-2 [&_h4]:mt-4 [&_h4]:text-lg [&_h4]:font-semibold [&_h4]:first:mt-0",
2059
+ // Links & media
2060
+ "[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2 [&_a]:outline-none [&_a]:focus-visible:ring-2 [&_a]:focus-visible:ring-ring [&_a]:focus-visible:ring-offset-2",
2061
+ "[&_img]:my-4 [&_img]:max-h-[min(480px,70vh)] [&_img]:max-w-full [&_img]:rounded-md [&_img]:object-contain",
2062
+ "[&_hr]:my-6 [&_hr]:border-border",
2063
+ // Code
2064
+ "[&_code]:rounded [&_code]:bg-muted [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-[0.9em]",
2065
+ "[&_pre]:my-4 [&_pre]:overflow-x-auto [&_pre]:rounded-md [&_pre]:bg-muted [&_pre]:p-3 [&_pre]:font-mono [&_pre]:text-sm"
2066
+ );
2067
+ var RichHtml = React23.forwardRef(
2068
+ ({
2069
+ html,
2070
+ sanitize = true,
2071
+ sanitizeConfig,
2072
+ className,
2073
+ suppressHydrationWarning,
2074
+ ...props
2075
+ }, ref) => {
2076
+ const markup = React23.useMemo(() => {
2077
+ if (html === void 0 || html === null || html === "") {
2078
+ return "";
2079
+ }
2080
+ if (!sanitize) {
2081
+ return html;
2082
+ }
2083
+ if (typeof window === "undefined") {
2084
+ return "";
2085
+ }
2086
+ const config = {
2087
+ ...defaultSanitizeConfig,
2088
+ ...sanitizeConfig
2089
+ };
2090
+ return DOMPurify.sanitize(html, config);
2091
+ }, [html, sanitize, sanitizeConfig]);
2092
+ const resolvedSuppressHydration = suppressHydrationWarning ?? sanitize;
2093
+ if (html === void 0 || html === null || html === "") {
2094
+ return null;
2095
+ }
2096
+ return /* @__PURE__ */ jsx24(
2097
+ "div",
2098
+ {
2099
+ ref,
2100
+ suppressHydrationWarning: resolvedSuppressHydration,
2101
+ className: cn(richHtmlChrome, className),
2102
+ ...props,
2103
+ dangerouslySetInnerHTML: { __html: markup }
2104
+ }
2105
+ );
2106
+ }
2107
+ );
2108
+ RichHtml.displayName = "RichHtml";
2109
+
2110
+ // source/components/primitive/ToolTip/tooltip.tsx
2111
+ import * as React24 from "react";
2112
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
2113
+ import { jsx as jsx25, jsxs as jsxs15 } from "react/jsx-runtime";
2114
+ var TooltipProvider = TooltipPrimitive.Provider;
2115
+ var Tooltip = ({ ...props }) => {
2116
+ return /* @__PURE__ */ jsx25(TooltipPrimitive.Root, { ...props });
2117
+ };
2118
+ Tooltip.displayName = "Tooltip";
2119
+ var TooltipTrigger = TooltipPrimitive.Trigger;
2120
+ TooltipTrigger.displayName = "TooltipTrigger";
2121
+ var TooltipContent = React24.forwardRef(({ className, sideOffset = 4, arrow = false, children, ...props }, ref) => {
2122
+ return /* @__PURE__ */ jsx25(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs15(
2123
+ TooltipPrimitive.Content,
2124
+ {
2125
+ ref,
2126
+ sideOffset,
2127
+ className: cn(
2128
+ "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md",
2129
+ "animate-in fade-in-0 zoom-in-95",
2130
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
2131
+ "data-[side=bottom]:slide-in-from-top-2",
2132
+ "data-[side=left]:slide-in-from-right-2",
2133
+ "data-[side=right]:slide-in-from-left-2",
2134
+ "data-[side=top]:slide-in-from-bottom-2",
2135
+ className
2136
+ ),
2137
+ ...props,
2138
+ children: [
2139
+ children,
2140
+ arrow && /* @__PURE__ */ jsx25(TooltipPrimitive.Arrow, { className: "fill-popover" })
2141
+ ]
2142
+ }
2143
+ ) });
2144
+ });
2145
+ TooltipContent.displayName = "TooltipContent";
2146
+
2147
+ // source/components/primitive/Label/label.tsx
2148
+ import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
2040
2149
  var labelVariants = cva8(
2041
2150
  "font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
2042
2151
  {
@@ -2057,27 +2166,75 @@ var labelVariants = cva8(
2057
2166
  }
2058
2167
  }
2059
2168
  );
2060
- var Label2 = React23.forwardRef(({ className, tone, size, required, children, ...props }, ref) => /* @__PURE__ */ jsxs15(
2169
+ var labelTooltipHtmlClassName = cn(
2170
+ "max-w-xs text-sm leading-snug",
2171
+ "[&_p]:mb-1 [&_p:last-child]:mb-0",
2172
+ "[&_a]:text-inherit [&_a]:underline [&_a]:underline-offset-2"
2173
+ );
2174
+ function looksLikeHtml(value) {
2175
+ return /<[a-z][\s\S]*>/i.test(value);
2176
+ }
2177
+ function LabelTooltipContent({ content }) {
2178
+ if (typeof content === "string") {
2179
+ if (looksLikeHtml(content)) {
2180
+ return /* @__PURE__ */ jsx26(
2181
+ RichHtml,
2182
+ {
2183
+ html: content,
2184
+ className: labelTooltipHtmlClassName
2185
+ }
2186
+ );
2187
+ }
2188
+ return content;
2189
+ }
2190
+ return content;
2191
+ }
2192
+ function LabelTooltip({ content }) {
2193
+ return /* @__PURE__ */ jsx26(TooltipProvider, { delayDuration: 200, children: /* @__PURE__ */ jsxs16(Tooltip, { children: [
2194
+ /* @__PURE__ */ jsx26(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx26(
2195
+ "button",
2196
+ {
2197
+ type: "button",
2198
+ className: "inline-flex shrink-0 rounded-sm text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
2199
+ "aria-label": "More information",
2200
+ onClick: (e) => e.preventDefault(),
2201
+ children: /* @__PURE__ */ jsx26(CircleHelp, { className: "h-3.5 w-3.5", "aria-hidden": true })
2202
+ }
2203
+ ) }),
2204
+ /* @__PURE__ */ jsx26(TooltipContent, { side: "top", children: /* @__PURE__ */ jsx26(LabelTooltipContent, { content }) })
2205
+ ] }) });
2206
+ }
2207
+ function hasLabelTooltip(tooltip) {
2208
+ if (tooltip == null) return false;
2209
+ if (typeof tooltip === "string" && tooltip.trim() === "") return false;
2210
+ return true;
2211
+ }
2212
+ var Label2 = React25.forwardRef(({ className, tone, size, required, tooltip, children, ...props }, ref) => /* @__PURE__ */ jsxs16(
2061
2213
  LabelPrimitive.Root,
2062
2214
  {
2063
2215
  ref,
2064
- className: cn(labelVariants({ tone, size }), className),
2216
+ className: cn(
2217
+ labelVariants({ tone, size }),
2218
+ "inline-flex items-center gap-1",
2219
+ className
2220
+ ),
2065
2221
  ...props,
2066
2222
  children: [
2067
2223
  children,
2068
- required && /* @__PURE__ */ jsx24("span", { className: "ml-0.5 text-destructive", children: "*" })
2224
+ hasLabelTooltip(tooltip) && /* @__PURE__ */ jsx26(LabelTooltip, { content: tooltip }),
2225
+ required && /* @__PURE__ */ jsx26("span", { className: "text-destructive", children: "*" })
2069
2226
  ]
2070
2227
  }
2071
2228
  ));
2072
2229
  Label2.displayName = LabelPrimitive.Root.displayName;
2073
2230
 
2074
2231
  // source/components/primitive/RadioGroup/radiogroup.tsx
2075
- import * as React24 from "react";
2232
+ import * as React26 from "react";
2076
2233
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
2077
2234
  import { Circle as Circle2 } from "lucide-react";
2078
- import { jsx as jsx25 } from "react/jsx-runtime";
2079
- var RadioGroup2 = React24.forwardRef(({ className, ...props }, ref) => {
2080
- return /* @__PURE__ */ jsx25(
2235
+ import { jsx as jsx27 } from "react/jsx-runtime";
2236
+ var RadioGroup2 = React26.forwardRef(({ className, ...props }, ref) => {
2237
+ return /* @__PURE__ */ jsx27(
2081
2238
  RadioGroupPrimitive.Root,
2082
2239
  {
2083
2240
  ref,
@@ -2087,8 +2244,8 @@ var RadioGroup2 = React24.forwardRef(({ className, ...props }, ref) => {
2087
2244
  );
2088
2245
  });
2089
2246
  RadioGroup2.displayName = "RadioGroup";
2090
- var RadioGroupItem = React24.forwardRef(({ className, ...props }, ref) => {
2091
- return /* @__PURE__ */ jsx25(
2247
+ var RadioGroupItem = React26.forwardRef(({ className, ...props }, ref) => {
2248
+ return /* @__PURE__ */ jsx27(
2092
2249
  RadioGroupPrimitive.Item,
2093
2250
  {
2094
2251
  ref,
@@ -2100,7 +2257,7 @@ var RadioGroupItem = React24.forwardRef(({ className, ...props }, ref) => {
2100
2257
  className
2101
2258
  ),
2102
2259
  ...props,
2103
- children: /* @__PURE__ */ jsx25(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx25(Circle2, { className: "h-2.5 w-2.5 shrink-0 fill-current text-current" }) })
2260
+ children: /* @__PURE__ */ jsx27(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx27(Circle2, { className: "h-2.5 w-2.5 shrink-0 fill-current text-current" }) })
2104
2261
  }
2105
2262
  );
2106
2263
  });
@@ -2114,20 +2271,20 @@ import Image2 from "@tiptap/extension-image";
2114
2271
  import Link from "@tiptap/extension-link";
2115
2272
 
2116
2273
  // source/components/primitive/RichTextArea/richtext-toolbar.tsx
2117
- import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
2274
+ import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
2118
2275
  function RichTextToolbar({ editor }) {
2119
2276
  if (!editor) return null;
2120
- return /* @__PURE__ */ jsxs16("div", { className: "flex flex-wrap gap-2 border-b p-2", children: [
2121
- /* @__PURE__ */ jsx26("button", { onClick: () => editor.chain().focus().toggleBold().run(), children: "Bold" }),
2122
- /* @__PURE__ */ jsx26("button", { onClick: () => editor.chain().focus().toggleItalic().run(), children: "Italic" }),
2123
- /* @__PURE__ */ jsx26("button", { onClick: () => editor.chain().focus().toggleHeading({ level: 2 }).run(), children: "H2" }),
2124
- /* @__PURE__ */ jsx26("button", { onClick: () => editor.chain().focus().toggleBulletList().run(), children: "List" }),
2125
- /* @__PURE__ */ jsx26("button", { onClick: () => editor.chain().focus().toggleCodeBlock().run(), children: "Code" })
2277
+ return /* @__PURE__ */ jsxs17("div", { className: "flex flex-wrap gap-2 border-b p-2", children: [
2278
+ /* @__PURE__ */ jsx28("button", { onClick: () => editor.chain().focus().toggleBold().run(), children: "Bold" }),
2279
+ /* @__PURE__ */ jsx28("button", { onClick: () => editor.chain().focus().toggleItalic().run(), children: "Italic" }),
2280
+ /* @__PURE__ */ jsx28("button", { onClick: () => editor.chain().focus().toggleHeading({ level: 2 }).run(), children: "H2" }),
2281
+ /* @__PURE__ */ jsx28("button", { onClick: () => editor.chain().focus().toggleBulletList().run(), children: "List" }),
2282
+ /* @__PURE__ */ jsx28("button", { onClick: () => editor.chain().focus().toggleCodeBlock().run(), children: "Code" })
2126
2283
  ] });
2127
2284
  }
2128
2285
 
2129
2286
  // source/components/primitive/RichTextArea/richtext-editor.tsx
2130
- import { jsx as jsx27, jsxs as jsxs17 } from "react/jsx-runtime";
2287
+ import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
2131
2288
  var RichTextEditor = ({
2132
2289
  value,
2133
2290
  onChange,
@@ -2151,7 +2308,7 @@ var RichTextEditor = ({
2151
2308
  }
2152
2309
  });
2153
2310
  if (!editor) return null;
2154
- return /* @__PURE__ */ jsxs17(
2311
+ return /* @__PURE__ */ jsxs18(
2155
2312
  "div",
2156
2313
  {
2157
2314
  className: cn(
@@ -2161,8 +2318,8 @@ var RichTextEditor = ({
2161
2318
  className
2162
2319
  ),
2163
2320
  children: [
2164
- /* @__PURE__ */ jsx27(RichTextToolbar, { editor }),
2165
- /* @__PURE__ */ jsx27(
2321
+ /* @__PURE__ */ jsx29(RichTextToolbar, { editor }),
2322
+ /* @__PURE__ */ jsx29(
2166
2323
  EditorContent,
2167
2324
  {
2168
2325
  editor,
@@ -2175,9 +2332,9 @@ var RichTextEditor = ({
2175
2332
  };
2176
2333
 
2177
2334
  // source/components/primitive/SearchableSelect/searchable-select.tsx
2178
- import * as React25 from "react";
2335
+ import * as React27 from "react";
2179
2336
  import { Check as Check4, ChevronDown as ChevronDown3, Search as Search2 } from "lucide-react";
2180
- import { jsx as jsx28, jsxs as jsxs18 } from "react/jsx-runtime";
2337
+ import { jsx as jsx30, jsxs as jsxs19 } from "react/jsx-runtime";
2181
2338
  function reactNodeToLabelString2(node) {
2182
2339
  if (node == null || typeof node === "boolean") return "";
2183
2340
  if (typeof node === "string" || typeof node === "number") return String(node);
@@ -2207,12 +2364,12 @@ function SearchableSelectInner({
2207
2364
  "aria-invalid": ariaInvalid,
2208
2365
  innerRef
2209
2366
  }) {
2210
- const [open, setOpen] = React25.useState(false);
2211
- const [search, setSearch] = React25.useState("");
2212
- const searchInputRef = React25.useRef(null);
2367
+ const [open, setOpen] = React27.useState(false);
2368
+ const [search, setSearch] = React27.useState("");
2369
+ const searchInputRef = React27.useRef(null);
2213
2370
  const filteredItems = items.filter((item) => filterItem(item, search));
2214
2371
  const selectedItem = items.find((item) => item.value === value);
2215
- React25.useEffect(() => {
2372
+ React27.useEffect(() => {
2216
2373
  if (open) {
2217
2374
  setTimeout(() => searchInputRef.current?.focus(), 0);
2218
2375
  } else {
@@ -2232,9 +2389,9 @@ function SearchableSelectInner({
2232
2389
  e.stopPropagation();
2233
2390
  onValueChange?.("");
2234
2391
  };
2235
- return /* @__PURE__ */ jsx28("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsxs18(Popover, { open, onOpenChange: setOpen, children: [
2236
- name && /* @__PURE__ */ jsx28("input", { type: "hidden", name, value: value ?? "" }),
2237
- /* @__PURE__ */ jsx28(PopoverTrigger, { asChild: true, className: "w-full", children: /* @__PURE__ */ jsxs18(
2392
+ return /* @__PURE__ */ jsx30("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsxs19(Popover, { open, onOpenChange: setOpen, children: [
2393
+ name && /* @__PURE__ */ jsx30("input", { type: "hidden", name, value: value ?? "" }),
2394
+ /* @__PURE__ */ jsx30(PopoverTrigger, { asChild: true, className: "w-full", children: /* @__PURE__ */ jsxs19(
2238
2395
  "button",
2239
2396
  {
2240
2397
  ref: innerRef,
@@ -2254,7 +2411,7 @@ function SearchableSelectInner({
2254
2411
  className
2255
2412
  ),
2256
2413
  children: [
2257
- /* @__PURE__ */ jsx28(
2414
+ /* @__PURE__ */ jsx30(
2258
2415
  "span",
2259
2416
  {
2260
2417
  className: cn(
@@ -2264,8 +2421,8 @@ function SearchableSelectInner({
2264
2421
  children: selectedItem?.label ?? placeholder
2265
2422
  }
2266
2423
  ),
2267
- /* @__PURE__ */ jsxs18("span", { className: "ml-auto flex shrink-0 items-center gap-1", children: [
2268
- clearable && value && !disabled && /* @__PURE__ */ jsx28(
2424
+ /* @__PURE__ */ jsxs19("span", { className: "ml-auto flex shrink-0 items-center gap-1", children: [
2425
+ clearable && value && !disabled && /* @__PURE__ */ jsx30(
2269
2426
  "span",
2270
2427
  {
2271
2428
  role: "button",
@@ -2281,21 +2438,21 @@ function SearchableSelectInner({
2281
2438
  children: "\xD7"
2282
2439
  }
2283
2440
  ),
2284
- /* @__PURE__ */ jsx28(ChevronDown3, { "aria-hidden": true, className: "h-4 w-4 shrink-0 text-slate-500 dark:text-slate-400" })
2441
+ /* @__PURE__ */ jsx30(ChevronDown3, { "aria-hidden": true, className: "h-4 w-4 shrink-0 text-slate-500 dark:text-slate-400" })
2285
2442
  ] })
2286
2443
  ]
2287
2444
  }
2288
2445
  ) }),
2289
- /* @__PURE__ */ jsxs18(
2446
+ /* @__PURE__ */ jsxs19(
2290
2447
  PopoverContent,
2291
2448
  {
2292
2449
  align: "start",
2293
2450
  className: "w-[--radix-popover-trigger-width] min-w-[var(--radix-popover-trigger-width)] max-w-[var(--radix-popover-content-available-width)] p-0",
2294
2451
  onOpenAutoFocus: (e) => e.preventDefault(),
2295
2452
  children: [
2296
- /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2 border-b px-3 py-2", children: [
2297
- /* @__PURE__ */ jsx28(Search2, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
2298
- /* @__PURE__ */ jsx28(
2453
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2 border-b px-3 py-2", children: [
2454
+ /* @__PURE__ */ jsx30(Search2, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
2455
+ /* @__PURE__ */ jsx30(
2299
2456
  "input",
2300
2457
  {
2301
2458
  ref: searchInputRef,
@@ -2306,9 +2463,9 @@ function SearchableSelectInner({
2306
2463
  }
2307
2464
  )
2308
2465
  ] }),
2309
- /* @__PURE__ */ jsx28("div", { className: "max-h-60 overflow-y-auto p-1", children: filteredItems.length === 0 ? /* @__PURE__ */ jsx28("div", { className: "px-3 py-6 text-center text-sm text-muted-foreground", children: "No results found." }) : filteredItems.map((item) => {
2466
+ /* @__PURE__ */ jsx30("div", { className: "max-h-60 overflow-y-auto p-1", children: filteredItems.length === 0 ? /* @__PURE__ */ jsx30("div", { className: "px-3 py-6 text-center text-sm text-muted-foreground", children: "No results found." }) : filteredItems.map((item) => {
2310
2467
  const isSelected = item.value === value;
2311
- return /* @__PURE__ */ jsxs18(
2468
+ return /* @__PURE__ */ jsxs19(
2312
2469
  "button",
2313
2470
  {
2314
2471
  type: "button",
@@ -2324,8 +2481,8 @@ function SearchableSelectInner({
2324
2481
  isSelected && "bg-accent/50"
2325
2482
  ),
2326
2483
  children: [
2327
- /* @__PURE__ */ jsx28("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: isSelected && /* @__PURE__ */ jsx28(Check4, { className: "h-4 w-4" }) }),
2328
- /* @__PURE__ */ jsx28("span", { className: "min-w-0 flex-1 whitespace-normal break-words", children: item.label })
2484
+ /* @__PURE__ */ jsx30("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: isSelected && /* @__PURE__ */ jsx30(Check4, { className: "h-4 w-4" }) }),
2485
+ /* @__PURE__ */ jsx30("span", { className: "min-w-0 flex-1 whitespace-normal break-words", children: item.label })
2329
2486
  ]
2330
2487
  },
2331
2488
  item.value
@@ -2336,18 +2493,18 @@ function SearchableSelectInner({
2336
2493
  )
2337
2494
  ] }) });
2338
2495
  }
2339
- var SearchableSelect = React25.forwardRef((props, ref) => /* @__PURE__ */ jsx28(SearchableSelectInner, { ...props, innerRef: ref }));
2496
+ var SearchableSelect = React27.forwardRef((props, ref) => /* @__PURE__ */ jsx30(SearchableSelectInner, { ...props, innerRef: ref }));
2340
2497
  SearchableSelect.displayName = "SearchableSelect";
2341
2498
 
2342
2499
  // source/components/primitive/Select/select.tsx
2343
- import * as React26 from "react";
2500
+ import * as React28 from "react";
2344
2501
  import * as SelectPrimitive from "@radix-ui/react-select";
2345
2502
  import { Check as Check5, ChevronDown as ChevronDown4, ChevronUp } from "lucide-react";
2346
- import { jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
2503
+ import { jsx as jsx31, jsxs as jsxs20 } from "react/jsx-runtime";
2347
2504
  var Select = SelectPrimitive.Root;
2348
2505
  var SelectGroup = SelectPrimitive.Group;
2349
2506
  var SelectValue = SelectPrimitive.Value;
2350
- var SelectTrigger = React26.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs19(
2507
+ var SelectTrigger = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs20(
2351
2508
  SelectPrimitive.Trigger,
2352
2509
  {
2353
2510
  ref,
@@ -2361,7 +2518,7 @@ var SelectTrigger = React26.forwardRef(({ className, children, ...props }, ref)
2361
2518
  ...props,
2362
2519
  children: [
2363
2520
  children,
2364
- /* @__PURE__ */ jsx29(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx29(
2521
+ /* @__PURE__ */ jsx31(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx31(
2365
2522
  ChevronDown4,
2366
2523
  {
2367
2524
  "aria-hidden": "true",
@@ -2372,7 +2529,7 @@ var SelectTrigger = React26.forwardRef(({ className, children, ...props }, ref)
2372
2529
  }
2373
2530
  ));
2374
2531
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2375
- var SelectScrollUpButton = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2532
+ var SelectScrollUpButton = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2376
2533
  SelectPrimitive.ScrollUpButton,
2377
2534
  {
2378
2535
  ref,
@@ -2381,11 +2538,11 @@ var SelectScrollUpButton = React26.forwardRef(({ className, ...props }, ref) =>
2381
2538
  className
2382
2539
  ),
2383
2540
  ...props,
2384
- children: /* @__PURE__ */ jsx29(ChevronUp, { className: "h-4 w-4" })
2541
+ children: /* @__PURE__ */ jsx31(ChevronUp, { className: "h-4 w-4" })
2385
2542
  }
2386
2543
  ));
2387
2544
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2388
- var SelectScrollDownButton = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2545
+ var SelectScrollDownButton = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2389
2546
  SelectPrimitive.ScrollDownButton,
2390
2547
  {
2391
2548
  ref,
@@ -2394,11 +2551,11 @@ var SelectScrollDownButton = React26.forwardRef(({ className, ...props }, ref) =
2394
2551
  className
2395
2552
  ),
2396
2553
  ...props,
2397
- children: /* @__PURE__ */ jsx29(ChevronDown4, { className: "h-4 w-4" })
2554
+ children: /* @__PURE__ */ jsx31(ChevronDown4, { className: "h-4 w-4" })
2398
2555
  }
2399
2556
  ));
2400
2557
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2401
- var SelectContent = React26.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx29(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs19(
2558
+ var SelectContent = React28.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx31(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs20(
2402
2559
  SelectPrimitive.Content,
2403
2560
  {
2404
2561
  ref,
@@ -2410,8 +2567,8 @@ var SelectContent = React26.forwardRef(({ className, children, position = "poppe
2410
2567
  position,
2411
2568
  ...props,
2412
2569
  children: [
2413
- /* @__PURE__ */ jsx29(SelectScrollUpButton, {}),
2414
- /* @__PURE__ */ jsx29(
2570
+ /* @__PURE__ */ jsx31(SelectScrollUpButton, {}),
2571
+ /* @__PURE__ */ jsx31(
2415
2572
  SelectPrimitive.Viewport,
2416
2573
  {
2417
2574
  className: cn(
@@ -2421,12 +2578,12 @@ var SelectContent = React26.forwardRef(({ className, children, position = "poppe
2421
2578
  children
2422
2579
  }
2423
2580
  ),
2424
- /* @__PURE__ */ jsx29(SelectScrollDownButton, {})
2581
+ /* @__PURE__ */ jsx31(SelectScrollDownButton, {})
2425
2582
  ]
2426
2583
  }
2427
2584
  ) }));
2428
2585
  SelectContent.displayName = SelectPrimitive.Content.displayName;
2429
- var SelectLabel = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2586
+ var SelectLabel = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2430
2587
  SelectPrimitive.Label,
2431
2588
  {
2432
2589
  ref,
@@ -2435,13 +2592,13 @@ var SelectLabel = React26.forwardRef(({ className, ...props }, ref) => /* @__PUR
2435
2592
  }
2436
2593
  ));
2437
2594
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
2438
- var SelectItem = React26.forwardRef(({ value, className, children, ...props }, ref) => {
2595
+ var SelectItem = React28.forwardRef(({ value, className, children, ...props }, ref) => {
2439
2596
  if (value === "") {
2440
2597
  throw new Error(
2441
2598
  'SelectItem: `value` must not be an empty string \u2014 Radix uses "" to reset the Select and show the placeholder. Omit that option and use `<SelectValue placeholder="\u2026">`, or assign a sentinel value such as `"none"`.'
2442
2599
  );
2443
2600
  }
2444
- return /* @__PURE__ */ jsxs19(
2601
+ return /* @__PURE__ */ jsxs20(
2445
2602
  SelectPrimitive.Item,
2446
2603
  {
2447
2604
  ref,
@@ -2452,14 +2609,14 @@ var SelectItem = React26.forwardRef(({ value, className, children, ...props }, r
2452
2609
  ),
2453
2610
  ...props,
2454
2611
  children: [
2455
- /* @__PURE__ */ jsx29("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx29(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx29(Check5, { className: "h-4 w-4" }) }) }),
2456
- /* @__PURE__ */ jsx29(SelectPrimitive.ItemText, { className: "whitespace-normal break-words", children })
2612
+ /* @__PURE__ */ jsx31("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx31(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx31(Check5, { className: "h-4 w-4" }) }) }),
2613
+ /* @__PURE__ */ jsx31(SelectPrimitive.ItemText, { className: "whitespace-normal break-words", children })
2457
2614
  ]
2458
2615
  }
2459
2616
  );
2460
2617
  });
2461
2618
  SelectItem.displayName = SelectPrimitive.Item.displayName;
2462
- var SelectSeparator = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2619
+ var SelectSeparator = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2463
2620
  SelectPrimitive.Separator,
2464
2621
  {
2465
2622
  ref,
@@ -2470,10 +2627,10 @@ var SelectSeparator = React26.forwardRef(({ className, ...props }, ref) => /* @_
2470
2627
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
2471
2628
 
2472
2629
  // source/components/primitive/Switch/switch.tsx
2473
- import * as React27 from "react";
2630
+ import * as React29 from "react";
2474
2631
  import * as SwitchPrimitives from "@radix-ui/react-switch";
2475
2632
  import { cva as cva9 } from "class-variance-authority";
2476
- import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
2633
+ import { jsx as jsx32, jsxs as jsxs21 } from "react/jsx-runtime";
2477
2634
  var switchRootVariants = cva9(
2478
2635
  [
2479
2636
  "peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors",
@@ -2507,14 +2664,14 @@ var switchThumbVariants = cva9(
2507
2664
  }
2508
2665
  }
2509
2666
  );
2510
- var Switch = React27.forwardRef(
2667
+ var Switch = React29.forwardRef(
2511
2668
  ({ className, label, description, error, size, id: idProp, ...props }, ref) => {
2512
- const generatedId = React27.useId();
2669
+ const generatedId = React29.useId();
2513
2670
  const id = idProp ?? generatedId;
2514
2671
  const descriptionId = description ? `${id}-description` : void 0;
2515
2672
  const errorId = error ? `${id}-error` : void 0;
2516
- return /* @__PURE__ */ jsxs20("div", { className: "flex items-start gap-3", children: [
2517
- /* @__PURE__ */ jsx30(
2673
+ return /* @__PURE__ */ jsxs21("div", { className: "flex items-start gap-3", children: [
2674
+ /* @__PURE__ */ jsx32(
2518
2675
  SwitchPrimitives.Root,
2519
2676
  {
2520
2677
  ref,
@@ -2527,7 +2684,7 @@ var Switch = React27.forwardRef(
2527
2684
  className
2528
2685
  ),
2529
2686
  ...props,
2530
- children: /* @__PURE__ */ jsx30(
2687
+ children: /* @__PURE__ */ jsx32(
2531
2688
  SwitchPrimitives.Thumb,
2532
2689
  {
2533
2690
  className: cn(switchThumbVariants({ size }))
@@ -2535,8 +2692,8 @@ var Switch = React27.forwardRef(
2535
2692
  )
2536
2693
  }
2537
2694
  ),
2538
- (label || description || error) && /* @__PURE__ */ jsxs20("div", { className: "flex flex-col leading-tight", children: [
2539
- label && /* @__PURE__ */ jsx30(
2695
+ (label || description || error) && /* @__PURE__ */ jsxs21("div", { className: "flex flex-col leading-tight", children: [
2696
+ label && /* @__PURE__ */ jsx32(
2540
2697
  "label",
2541
2698
  {
2542
2699
  htmlFor: id,
@@ -2544,7 +2701,7 @@ var Switch = React27.forwardRef(
2544
2701
  children: label
2545
2702
  }
2546
2703
  ),
2547
- description && /* @__PURE__ */ jsx30(
2704
+ description && /* @__PURE__ */ jsx32(
2548
2705
  "p",
2549
2706
  {
2550
2707
  id: descriptionId,
@@ -2552,7 +2709,7 @@ var Switch = React27.forwardRef(
2552
2709
  children: description
2553
2710
  }
2554
2711
  ),
2555
- error && /* @__PURE__ */ jsx30(
2712
+ error && /* @__PURE__ */ jsx32(
2556
2713
  "p",
2557
2714
  {
2558
2715
  id: errorId,
@@ -2567,9 +2724,9 @@ var Switch = React27.forwardRef(
2567
2724
  Switch.displayName = "Switch";
2568
2725
 
2569
2726
  // source/components/primitive/Text/text.tsx
2570
- import * as React28 from "react";
2727
+ import * as React30 from "react";
2571
2728
  import { cva as cva10 } from "class-variance-authority";
2572
- import { jsx as jsx31 } from "react/jsx-runtime";
2729
+ import { jsx as jsx33 } from "react/jsx-runtime";
2573
2730
  var textVariants = cva10("text-foreground", {
2574
2731
  variants: {
2575
2732
  element: {
@@ -2618,7 +2775,7 @@ var textVariants = cva10("text-foreground", {
2618
2775
  tone: "default"
2619
2776
  }
2620
2777
  });
2621
- var Text = React28.forwardRef(
2778
+ var Text = React30.forwardRef(
2622
2779
  ({
2623
2780
  element = "p",
2624
2781
  size,
@@ -2631,7 +2788,7 @@ var Text = React28.forwardRef(
2631
2788
  }, ref) => {
2632
2789
  const Comp = element;
2633
2790
  const variantElement = element === "div" ? "p" : element;
2634
- return /* @__PURE__ */ jsx31(
2791
+ return /* @__PURE__ */ jsx33(
2635
2792
  Comp,
2636
2793
  {
2637
2794
  ref,
@@ -2654,8 +2811,8 @@ var Text = React28.forwardRef(
2654
2811
  Text.displayName = "Text";
2655
2812
 
2656
2813
  // source/components/primitive/TextArea/textarea.tsx
2657
- import * as React29 from "react";
2658
- import { jsx as jsx32 } from "react/jsx-runtime";
2814
+ import * as React31 from "react";
2815
+ import { jsx as jsx34 } from "react/jsx-runtime";
2659
2816
  var resizeClasses = {
2660
2817
  none: "resize-none",
2661
2818
  vertical: "resize-y",
@@ -2663,9 +2820,9 @@ var resizeClasses = {
2663
2820
  both: "resize"
2664
2821
  };
2665
2822
  var layout = "block min-h-[120px] w-full min-w-0 px-4 py-2 text-sm md:text-base";
2666
- var Textarea = React29.forwardRef(
2823
+ var Textarea = React31.forwardRef(
2667
2824
  ({ className, error, resize = "vertical", ...props }, ref) => {
2668
- return /* @__PURE__ */ jsx32(
2825
+ return /* @__PURE__ */ jsx34(
2669
2826
  "textarea",
2670
2827
  {
2671
2828
  ref,
@@ -2687,7 +2844,7 @@ var Textarea = React29.forwardRef(
2687
2844
  Textarea.displayName = "Textarea";
2688
2845
 
2689
2846
  // source/components/primitive/FormField/form-field.tsx
2690
- import { jsx as jsx33, jsxs as jsxs21 } from "react/jsx-runtime";
2847
+ import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
2691
2848
  function stripThousands(s) {
2692
2849
  return s.replace(/,/g, "");
2693
2850
  }
@@ -2809,6 +2966,7 @@ function formFieldHasLabel(label) {
2809
2966
  function FormField({
2810
2967
  name,
2811
2968
  label,
2969
+ labelTooltip,
2812
2970
  register,
2813
2971
  control,
2814
2972
  rules,
@@ -2831,7 +2989,7 @@ function FormField({
2831
2989
  className,
2832
2990
  renderInput
2833
2991
  }) {
2834
- const generatedId = React30.useId();
2992
+ const generatedId = React32.useId();
2835
2993
  const inputId = `field-${generatedId}`;
2836
2994
  const descriptionId = description ? `${inputId}-description` : void 0;
2837
2995
  const externalError = error ? String(error) : void 0;
@@ -2874,7 +3032,7 @@ function FormField({
2874
3032
  );
2875
3033
  }
2876
3034
  if (control) {
2877
- return /* @__PURE__ */ jsx33(
3035
+ return /* @__PURE__ */ jsx35(
2878
3036
  Controller,
2879
3037
  {
2880
3038
  name,
@@ -2901,7 +3059,7 @@ function FormField({
2901
3059
  onChange: field.onChange,
2902
3060
  onBlur: field.onBlur,
2903
3061
  ref: field.ref
2904
- }) : /* @__PURE__ */ jsx33(
3062
+ }) : /* @__PURE__ */ jsx35(
2905
3063
  FormFieldVariantControl,
2906
3064
  {
2907
3065
  variant,
@@ -2926,18 +3084,19 @@ function FormField({
2926
3084
  maskInput: renderInput ? void 0 : maskInput
2927
3085
  }
2928
3086
  );
2929
- const labelBlock = isCheckboxInline || !hasFieldLabel2 ? null : /* @__PURE__ */ jsx33(
3087
+ const labelBlock = isCheckboxInline || !hasFieldLabel2 ? null : /* @__PURE__ */ jsx35(
2930
3088
  Label2,
2931
3089
  {
2932
3090
  id: variant === "radio" || variant === "richtext" ? legendId : void 0,
2933
3091
  htmlFor: variant === "radio" || variant === "richtext" ? void 0 : inputId,
2934
3092
  size: "sm",
2935
3093
  required,
3094
+ tooltip: labelTooltip,
2936
3095
  children: label
2937
3096
  }
2938
3097
  );
2939
- const checkboxInline = isCheckboxInline ? hasFieldLabel2 ? /* @__PURE__ */ jsxs21("div", { className: "flex w-full min-w-0 items-start gap-2", children: [
2940
- /* @__PURE__ */ jsx33(
3098
+ const checkboxInline = isCheckboxInline ? hasFieldLabel2 ? /* @__PURE__ */ jsxs22("div", { className: "flex w-full min-w-0 items-start gap-2", children: [
3099
+ /* @__PURE__ */ jsx35(
2941
3100
  Checkbox,
2942
3101
  {
2943
3102
  ...checkboxProps,
@@ -2952,17 +3111,18 @@ function FormField({
2952
3111
  "aria-invalid": hasError || void 0
2953
3112
  }
2954
3113
  ),
2955
- /* @__PURE__ */ jsx33(
3114
+ /* @__PURE__ */ jsx35(
2956
3115
  Label2,
2957
3116
  {
2958
3117
  htmlFor: inputId,
2959
3118
  required,
2960
3119
  size: "sm",
3120
+ tooltip: labelTooltip,
2961
3121
  className: "font-normal leading-snug",
2962
3122
  children: label
2963
3123
  }
2964
3124
  )
2965
- ] }) : /* @__PURE__ */ jsx33(
3125
+ ] }) : /* @__PURE__ */ jsx35(
2966
3126
  Checkbox,
2967
3127
  {
2968
3128
  ...checkboxProps,
@@ -2977,7 +3137,7 @@ function FormField({
2977
3137
  "aria-invalid": hasError || void 0
2978
3138
  }
2979
3139
  ) : null;
2980
- return /* @__PURE__ */ jsxs21(
3140
+ return /* @__PURE__ */ jsxs22(
2981
3141
  "div",
2982
3142
  {
2983
3143
  className: cn(
@@ -2985,12 +3145,12 @@ function FormField({
2985
3145
  className
2986
3146
  ),
2987
3147
  children: [
2988
- isCheckboxInline ? checkboxInline : /* @__PURE__ */ jsxs21("div", { className: "flex w-full min-w-0 flex-col gap-1.5", children: [
3148
+ isCheckboxInline ? checkboxInline : /* @__PURE__ */ jsxs22("div", { className: "flex w-full min-w-0 flex-col gap-1.5", children: [
2989
3149
  labelBlock,
2990
3150
  controlNode
2991
3151
  ] }),
2992
- description && /* @__PURE__ */ jsx33(Text, { id: descriptionId, size: "sm", tone: "muted", children: description }),
2993
- message && /* @__PURE__ */ jsx33(Text, { id: errorId, size: "sm", tone: "destructive", children: message })
3152
+ description && /* @__PURE__ */ jsx35(Text, { id: descriptionId, size: "sm", tone: "muted", children: description }),
3153
+ message && /* @__PURE__ */ jsx35(Text, { id: errorId, size: "sm", tone: "destructive", children: message })
2994
3154
  ]
2995
3155
  }
2996
3156
  );
@@ -3015,7 +3175,7 @@ function FormField({
3015
3175
  "aria-describedby": describedBy,
3016
3176
  error: Boolean(externalError),
3017
3177
  ...registered
3018
- }) : variant === "textarea" ? /* @__PURE__ */ jsx33(
3178
+ }) : variant === "textarea" ? /* @__PURE__ */ jsx35(
3019
3179
  Textarea,
3020
3180
  {
3021
3181
  id: inputId,
@@ -3024,7 +3184,7 @@ function FormField({
3024
3184
  ...textareaProps,
3025
3185
  ...registered
3026
3186
  }
3027
- ) : /* @__PURE__ */ jsx33(
3187
+ ) : /* @__PURE__ */ jsx35(
3028
3188
  Input,
3029
3189
  {
3030
3190
  id: inputId,
@@ -3034,13 +3194,22 @@ function FormField({
3034
3194
  ...registered
3035
3195
  }
3036
3196
  );
3037
- return /* @__PURE__ */ jsxs21("div", { className: cn("mt-4 flex w-full min-w-0 flex-col gap-2", className), children: [
3038
- hasFieldLabel ? /* @__PURE__ */ jsxs21("div", { className: "flex w-full min-w-0 flex-col gap-1.5", children: [
3039
- /* @__PURE__ */ jsx33(Label2, { htmlFor: inputId, required, size: "sm", children: label }),
3197
+ return /* @__PURE__ */ jsxs22("div", { className: cn("mt-4 flex w-full min-w-0 flex-col gap-2", className), children: [
3198
+ hasFieldLabel ? /* @__PURE__ */ jsxs22("div", { className: "flex w-full min-w-0 flex-col gap-1.5", children: [
3199
+ /* @__PURE__ */ jsx35(
3200
+ Label2,
3201
+ {
3202
+ htmlFor: inputId,
3203
+ required,
3204
+ size: "sm",
3205
+ tooltip: labelTooltip,
3206
+ children: label
3207
+ }
3208
+ ),
3040
3209
  registeredControl
3041
- ] }) : /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: registeredControl }),
3042
- description && /* @__PURE__ */ jsx33(Text, { id: descriptionId, size: "sm", tone: "muted", children: description }),
3043
- externalError && /* @__PURE__ */ jsx33(Text, { id: `${inputId}-error`, size: "sm", tone: "destructive", children: externalError })
3210
+ ] }) : /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: registeredControl }),
3211
+ description && /* @__PURE__ */ jsx35(Text, { id: descriptionId, size: "sm", tone: "muted", children: description }),
3212
+ externalError && /* @__PURE__ */ jsx35(Text, { id: `${inputId}-error`, size: "sm", tone: "destructive", children: externalError })
3044
3213
  ] });
3045
3214
  }
3046
3215
  function formValueToAsyncSelectOption(v) {
@@ -3078,7 +3247,7 @@ function FormFieldVariantControl({
3078
3247
  }) {
3079
3248
  switch (variant) {
3080
3249
  case "textarea":
3081
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3250
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3082
3251
  Textarea,
3083
3252
  {
3084
3253
  ...textareaProps,
@@ -3096,7 +3265,7 @@ function FormFieldVariantControl({
3096
3265
  case "checkbox":
3097
3266
  return null;
3098
3267
  case "switch":
3099
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3268
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3100
3269
  Switch,
3101
3270
  {
3102
3271
  ...switchProps,
@@ -3134,7 +3303,7 @@ function FormFieldVariantControl({
3134
3303
  }
3135
3304
  const value = field.value == null || field.value === "" ? void 0 : String(field.value);
3136
3305
  if (searchable) {
3137
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3306
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3138
3307
  SearchableSelect,
3139
3308
  {
3140
3309
  items,
@@ -3159,7 +3328,7 @@ function FormFieldVariantControl({
3159
3328
  }
3160
3329
  ) });
3161
3330
  }
3162
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsxs21(
3331
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsxs22(
3163
3332
  Select,
3164
3333
  {
3165
3334
  ...selectRootRest,
@@ -3168,7 +3337,7 @@ function FormFieldVariantControl({
3168
3337
  disabled: field.disabled,
3169
3338
  name: field.name,
3170
3339
  children: [
3171
- /* @__PURE__ */ jsx33(
3340
+ /* @__PURE__ */ jsx35(
3172
3341
  SelectTrigger,
3173
3342
  {
3174
3343
  id: inputId,
@@ -3180,10 +3349,10 @@ function FormFieldVariantControl({
3180
3349
  triggerClassName
3181
3350
  ),
3182
3351
  onBlur: field.onBlur,
3183
- children: /* @__PURE__ */ jsx33(SelectValue, { placeholder })
3352
+ children: /* @__PURE__ */ jsx35(SelectValue, { placeholder })
3184
3353
  }
3185
3354
  ),
3186
- /* @__PURE__ */ jsx33(SelectContent, { className: contentClassName, children: items.map((item) => /* @__PURE__ */ jsx33(
3355
+ /* @__PURE__ */ jsx35(SelectContent, { className: contentClassName, children: items.map((item) => /* @__PURE__ */ jsx35(
3187
3356
  SelectItem,
3188
3357
  {
3189
3358
  value: item.value,
@@ -3206,7 +3375,7 @@ function FormFieldVariantControl({
3206
3375
  if (!asyncSelectProps?.labelKey) {
3207
3376
  throw new Error('FormField variant "async-select" requires asyncSelectProps.labelKey.');
3208
3377
  }
3209
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3378
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3210
3379
  AsyncSelect,
3211
3380
  {
3212
3381
  ...asyncSelectProps,
@@ -3230,7 +3399,7 @@ function FormFieldVariantControl({
3230
3399
  className: radioClassName,
3231
3400
  ...radioGroupRest
3232
3401
  } = radioProps;
3233
- return /* @__PURE__ */ jsx33(
3402
+ return /* @__PURE__ */ jsx35(
3234
3403
  RadioGroup2,
3235
3404
  {
3236
3405
  ...radioGroupRest,
@@ -3245,8 +3414,8 @@ function FormFieldVariantControl({
3245
3414
  "aria-describedby": describedBy,
3246
3415
  "aria-invalid": hasError || void 0,
3247
3416
  ref: field.ref,
3248
- children: options.map((opt) => /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-2", children: [
3249
- /* @__PURE__ */ jsx33(
3417
+ children: options.map((opt) => /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2", children: [
3418
+ /* @__PURE__ */ jsx35(
3250
3419
  RadioGroupItem,
3251
3420
  {
3252
3421
  value: opt.value,
@@ -3254,7 +3423,7 @@ function FormFieldVariantControl({
3254
3423
  disabled: opt.disabled
3255
3424
  }
3256
3425
  ),
3257
- /* @__PURE__ */ jsx33(
3426
+ /* @__PURE__ */ jsx35(
3258
3427
  Label2,
3259
3428
  {
3260
3429
  htmlFor: opt.id ?? `${inputId}-${opt.value}`,
@@ -3273,7 +3442,7 @@ function FormFieldVariantControl({
3273
3442
  }
3274
3443
  const { maxLength, groups, containerClassName, ...otpRest } = otpProps;
3275
3444
  const slotGroups = groups?.length ? groups : defaultOtpGroups(maxLength);
3276
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3445
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3277
3446
  InputOTP,
3278
3447
  {
3279
3448
  ...otpRest,
@@ -3292,15 +3461,15 @@ function FormFieldVariantControl({
3292
3461
  hasError && inputOtpContainerInvalid,
3293
3462
  containerClassName
3294
3463
  ),
3295
- children: slotGroups.map((indices, gi) => /* @__PURE__ */ jsxs21(React30.Fragment, { children: [
3296
- gi > 0 ? /* @__PURE__ */ jsx33(InputOTPSeparator, {}) : null,
3297
- /* @__PURE__ */ jsx33(InputOTPGroup, { children: indices.map((index) => /* @__PURE__ */ jsx33(InputOTPSlot, { index }, index)) })
3464
+ children: slotGroups.map((indices, gi) => /* @__PURE__ */ jsxs22(React32.Fragment, { children: [
3465
+ gi > 0 ? /* @__PURE__ */ jsx35(InputOTPSeparator, {}) : null,
3466
+ /* @__PURE__ */ jsx35(InputOTPGroup, { children: indices.map((index) => /* @__PURE__ */ jsx35(InputOTPSlot, { index }, index)) })
3298
3467
  ] }, gi))
3299
3468
  }
3300
3469
  ) });
3301
3470
  }
3302
3471
  case "richtext":
3303
- return /* @__PURE__ */ jsx33(
3472
+ return /* @__PURE__ */ jsx35(
3304
3473
  "div",
3305
3474
  {
3306
3475
  className: "w-full min-w-0",
@@ -3310,7 +3479,7 @@ function FormFieldVariantControl({
3310
3479
  "aria-describedby": describedBy,
3311
3480
  "aria-invalid": hasError || void 0,
3312
3481
  onBlur: field.onBlur,
3313
- children: /* @__PURE__ */ jsx33(
3482
+ children: /* @__PURE__ */ jsx35(
3314
3483
  RichTextEditor,
3315
3484
  {
3316
3485
  value: field.value ?? "",
@@ -3322,7 +3491,7 @@ function FormFieldVariantControl({
3322
3491
  }
3323
3492
  );
3324
3493
  case "dropzone":
3325
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3494
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3326
3495
  FileDropzone,
3327
3496
  {
3328
3497
  ...dropzoneProps,
@@ -3356,7 +3525,7 @@ function FormFieldVariantControl({
3356
3525
  const pattern = maskInput.pattern;
3357
3526
  const rawStored = field.value == null || field.value === "" ? "" : String(field.value);
3358
3527
  const displayValue = formFieldMaskFormatDisplay(pattern, rawStored);
3359
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3528
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3360
3529
  Input,
3361
3530
  {
3362
3531
  ...restInputProps,
@@ -3393,7 +3562,7 @@ function FormFieldVariantControl({
3393
3562
  useGrouping
3394
3563
  );
3395
3564
  const defaultInputMode = allowDecimal ? "decimal" : "numeric";
3396
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3565
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3397
3566
  Input,
3398
3567
  {
3399
3568
  ...restInputProps,
@@ -3417,7 +3586,7 @@ function FormFieldVariantControl({
3417
3586
  }
3418
3587
  ) });
3419
3588
  }
3420
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3589
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3421
3590
  Input,
3422
3591
  {
3423
3592
  ...restInputProps,
@@ -3442,9 +3611,9 @@ function FormFieldVariantControl({
3442
3611
  }
3443
3612
 
3444
3613
  // source/components/primitive/Heading/heading.tsx
3445
- import * as React31 from "react";
3614
+ import * as React33 from "react";
3446
3615
  import { cva as cva11 } from "class-variance-authority";
3447
- import { jsx as jsx34 } from "react/jsx-runtime";
3616
+ import { jsx as jsx36 } from "react/jsx-runtime";
3448
3617
  var headingVariants = cva11(
3449
3618
  "text-foreground tracking-tight",
3450
3619
  {
@@ -3510,7 +3679,7 @@ var headingVariants = cva11(
3510
3679
  }
3511
3680
  }
3512
3681
  );
3513
- var Heading = React31.forwardRef(
3682
+ var Heading = React33.forwardRef(
3514
3683
  ({
3515
3684
  level = 1,
3516
3685
  size,
@@ -3523,7 +3692,7 @@ var Heading = React31.forwardRef(
3523
3692
  ...props
3524
3693
  }, ref) => {
3525
3694
  const Tag = `h${level}`;
3526
- return /* @__PURE__ */ jsx34(
3695
+ return /* @__PURE__ */ jsx36(
3527
3696
  Tag,
3528
3697
  {
3529
3698
  ref,
@@ -3539,10 +3708,10 @@ var Heading = React31.forwardRef(
3539
3708
  Heading.displayName = "Heading";
3540
3709
 
3541
3710
  // source/components/primitive/InputGroup/input-group.tsx
3542
- import * as React32 from "react";
3543
- import { jsx as jsx35 } from "react/jsx-runtime";
3544
- var InputGroup = React32.forwardRef(
3545
- ({ className, error, children, ...props }, ref) => /* @__PURE__ */ jsx35(
3711
+ import * as React34 from "react";
3712
+ import { jsx as jsx37 } from "react/jsx-runtime";
3713
+ var InputGroup = React34.forwardRef(
3714
+ ({ className, error, children, ...props }, ref) => /* @__PURE__ */ jsx37(
3546
3715
  "div",
3547
3716
  {
3548
3717
  ref,
@@ -3560,7 +3729,7 @@ var InputGroup = React32.forwardRef(
3560
3729
  )
3561
3730
  );
3562
3731
  InputGroup.displayName = "InputGroup";
3563
- var InputGroupIcon = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
3732
+ var InputGroupIcon = React34.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3564
3733
  "span",
3565
3734
  {
3566
3735
  ref,
@@ -3573,8 +3742,8 @@ var InputGroupIcon = React32.forwardRef(({ className, ...props }, ref) => /* @__
3573
3742
  }
3574
3743
  ));
3575
3744
  InputGroupIcon.displayName = "InputGroupIcon";
3576
- var InputGroupInput = React32.forwardRef(
3577
- ({ className, type, ...props }, ref) => /* @__PURE__ */ jsx35(
3745
+ var InputGroupInput = React34.forwardRef(
3746
+ ({ className, type, ...props }, ref) => /* @__PURE__ */ jsx37(
3578
3747
  "input",
3579
3748
  {
3580
3749
  ref,
@@ -3593,10 +3762,10 @@ InputGroupInput.displayName = "InputGroupInput";
3593
3762
  var inputGroupSelectTriggerTextAlignClass = "pl-12";
3594
3763
 
3595
3764
  // source/components/primitive/Pagination/pagination.tsx
3596
- import * as React33 from "react";
3765
+ import * as React35 from "react";
3597
3766
  import { ChevronLeft, ChevronRight as ChevronRight2, MoreHorizontal } from "lucide-react";
3598
- import { jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
3599
- var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx36(
3767
+ import { jsx as jsx38, jsxs as jsxs23 } from "react/jsx-runtime";
3768
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx38(
3600
3769
  "nav",
3601
3770
  {
3602
3771
  role: "navigation",
@@ -3606,7 +3775,7 @@ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx36(
3606
3775
  }
3607
3776
  );
3608
3777
  Pagination.displayName = "Pagination";
3609
- var PaginationContent = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
3778
+ var PaginationContent = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
3610
3779
  "ul",
3611
3780
  {
3612
3781
  ref,
@@ -3615,14 +3784,14 @@ var PaginationContent = React33.forwardRef(({ className, ...props }, ref) => /*
3615
3784
  }
3616
3785
  ));
3617
3786
  PaginationContent.displayName = "PaginationContent";
3618
- var PaginationItem = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36("li", { ref, className: cn("", className), ...props }));
3787
+ var PaginationItem = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38("li", { ref, className: cn("", className), ...props }));
3619
3788
  PaginationItem.displayName = "PaginationItem";
3620
3789
  var PaginationLink = ({
3621
3790
  className,
3622
3791
  isActive,
3623
3792
  size = "icon",
3624
3793
  ...props
3625
- }) => /* @__PURE__ */ jsx36(
3794
+ }) => /* @__PURE__ */ jsx38(
3626
3795
  "a",
3627
3796
  {
3628
3797
  "aria-current": isActive ? "page" : void 0,
@@ -3640,7 +3809,7 @@ PaginationLink.displayName = "PaginationLink";
3640
3809
  var PaginationPrevious = ({
3641
3810
  className,
3642
3811
  ...props
3643
- }) => /* @__PURE__ */ jsxs22(
3812
+ }) => /* @__PURE__ */ jsxs23(
3644
3813
  PaginationLink,
3645
3814
  {
3646
3815
  "aria-label": "Go to previous page",
@@ -3648,8 +3817,8 @@ var PaginationPrevious = ({
3648
3817
  size: "default",
3649
3818
  ...props,
3650
3819
  children: [
3651
- /* @__PURE__ */ jsx36(ChevronLeft, { className: "h-4 w-4" }),
3652
- /* @__PURE__ */ jsx36("span", { children: "Previous" })
3820
+ /* @__PURE__ */ jsx38(ChevronLeft, { className: "h-4 w-4" }),
3821
+ /* @__PURE__ */ jsx38("span", { children: "Previous" })
3653
3822
  ]
3654
3823
  }
3655
3824
  );
@@ -3657,7 +3826,7 @@ PaginationPrevious.displayName = "PaginationPrevious";
3657
3826
  var PaginationNext = ({
3658
3827
  className,
3659
3828
  ...props
3660
- }) => /* @__PURE__ */ jsxs22(
3829
+ }) => /* @__PURE__ */ jsxs23(
3661
3830
  PaginationLink,
3662
3831
  {
3663
3832
  "aria-label": "Go to next page",
@@ -3665,8 +3834,8 @@ var PaginationNext = ({
3665
3834
  size: "default",
3666
3835
  ...props,
3667
3836
  children: [
3668
- /* @__PURE__ */ jsx36("span", { children: "Next" }),
3669
- /* @__PURE__ */ jsx36(ChevronRight2, { className: "h-4 w-4" })
3837
+ /* @__PURE__ */ jsx38("span", { children: "Next" }),
3838
+ /* @__PURE__ */ jsx38(ChevronRight2, { className: "h-4 w-4" })
3670
3839
  ]
3671
3840
  }
3672
3841
  );
@@ -3674,31 +3843,31 @@ PaginationNext.displayName = "PaginationNext";
3674
3843
  var PaginationEllipsis = ({
3675
3844
  className,
3676
3845
  ...props
3677
- }) => /* @__PURE__ */ jsxs22(
3846
+ }) => /* @__PURE__ */ jsxs23(
3678
3847
  "span",
3679
3848
  {
3680
3849
  "aria-hidden": true,
3681
3850
  className: cn("flex h-9 w-9 items-center justify-center", className),
3682
3851
  ...props,
3683
3852
  children: [
3684
- /* @__PURE__ */ jsx36(MoreHorizontal, { className: "h-4 w-4" }),
3685
- /* @__PURE__ */ jsx36("span", { className: "sr-only", children: "More pages" })
3853
+ /* @__PURE__ */ jsx38(MoreHorizontal, { className: "h-4 w-4" }),
3854
+ /* @__PURE__ */ jsx38("span", { className: "sr-only", children: "More pages" })
3686
3855
  ]
3687
3856
  }
3688
3857
  );
3689
3858
  PaginationEllipsis.displayName = "PaginationEllipsis";
3690
3859
 
3691
3860
  // source/components/primitive/Progress/progress.tsx
3692
- import * as React34 from "react";
3861
+ import * as React36 from "react";
3693
3862
  import * as ProgressPrimitive from "@radix-ui/react-progress";
3694
- import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
3863
+ import { jsx as jsx39, jsxs as jsxs24 } from "react/jsx-runtime";
3695
3864
  var variantStyles = {
3696
3865
  default: "bg-primary",
3697
3866
  success: "bg-green-500",
3698
3867
  warning: "bg-yellow-500",
3699
3868
  error: "bg-red-500"
3700
3869
  };
3701
- var Progress = React34.forwardRef(
3870
+ var Progress = React36.forwardRef(
3702
3871
  ({
3703
3872
  className,
3704
3873
  value = 0,
@@ -3712,15 +3881,15 @@ var Progress = React34.forwardRef(
3712
3881
  const safeMax = max > 0 ? max : 100;
3713
3882
  const safeValue = Math.min(Math.max(value, 0), safeMax);
3714
3883
  const percentage = Math.min(safeValue / safeMax * 100, 100);
3715
- return /* @__PURE__ */ jsxs23("div", { className: "flex flex-col gap-1", children: [
3716
- (label || showValue) && /* @__PURE__ */ jsxs23("div", { className: "flex items-center justify-between", children: [
3717
- label && /* @__PURE__ */ jsx37("span", { className: "text-sm font-medium", children: label }),
3718
- showValue && !indeterminate && /* @__PURE__ */ jsxs23("span", { className: "text-xs text-muted-foreground", children: [
3884
+ return /* @__PURE__ */ jsxs24("div", { className: "flex flex-col gap-1", children: [
3885
+ (label || showValue) && /* @__PURE__ */ jsxs24("div", { className: "flex items-center justify-between", children: [
3886
+ label && /* @__PURE__ */ jsx39("span", { className: "text-sm font-medium", children: label }),
3887
+ showValue && !indeterminate && /* @__PURE__ */ jsxs24("span", { className: "text-xs text-muted-foreground", children: [
3719
3888
  Math.round(percentage),
3720
3889
  "%"
3721
3890
  ] })
3722
3891
  ] }),
3723
- /* @__PURE__ */ jsx37(
3892
+ /* @__PURE__ */ jsx39(
3724
3893
  ProgressPrimitive.Root,
3725
3894
  {
3726
3895
  ref,
@@ -3733,7 +3902,7 @@ var Progress = React34.forwardRef(
3733
3902
  "aria-valuemax": safeMax,
3734
3903
  "aria-valuenow": indeterminate ? void 0 : safeValue,
3735
3904
  ...props,
3736
- children: /* @__PURE__ */ jsx37(
3905
+ children: /* @__PURE__ */ jsx39(
3737
3906
  ProgressPrimitive.Indicator,
3738
3907
  {
3739
3908
  className: cn(
@@ -3753,94 +3922,25 @@ var Progress = React34.forwardRef(
3753
3922
  );
3754
3923
  Progress.displayName = "Progress";
3755
3924
 
3756
- // source/components/primitive/RichHtml/rich-html.tsx
3757
- import * as React35 from "react";
3758
- import DOMPurify from "dompurify";
3759
- import { jsx as jsx38 } from "react/jsx-runtime";
3760
- var defaultSanitizeConfig = {
3761
- USE_PROFILES: { html: true }
3762
- };
3763
- var richHtmlChrome = cn(
3764
- "max-w-none text-base leading-relaxed text-foreground",
3765
- // Block flow
3766
- "[&_p]:mb-3 [&_p:last-child]:mb-0 [&_blockquote]:my-4 [&_blockquote]:border-l-2 [&_blockquote]:border-muted [&_blockquote]:pl-4 [&_blockquote]:italic",
3767
- // Lists
3768
- "[&_ul]:my-3 [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:my-3 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:my-1 [&_li]:pl-1",
3769
- // Headings (common for TipTap / CMS output)
3770
- "[&_h1]:mb-3 [&_h1]:mt-8 [&_h1]:text-3xl [&_h1]:font-semibold [&_h1]:first:mt-0",
3771
- "[&_h2]:mb-2 [&_h2]:mt-6 [&_h2]:text-2xl [&_h2]:font-semibold [&_h2]:first:mt-0",
3772
- "[&_h3]:mb-2 [&_h3]:mt-5 [&_h3]:text-xl [&_h3]:font-semibold [&_h3]:first:mt-0",
3773
- "[&_h4]:mb-2 [&_h4]:mt-4 [&_h4]:text-lg [&_h4]:font-semibold [&_h4]:first:mt-0",
3774
- // Links & media
3775
- "[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2 [&_a]:outline-none [&_a]:focus-visible:ring-2 [&_a]:focus-visible:ring-ring [&_a]:focus-visible:ring-offset-2",
3776
- "[&_img]:my-4 [&_img]:max-h-[min(480px,70vh)] [&_img]:max-w-full [&_img]:rounded-md [&_img]:object-contain",
3777
- "[&_hr]:my-6 [&_hr]:border-border",
3778
- // Code
3779
- "[&_code]:rounded [&_code]:bg-muted [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-[0.9em]",
3780
- "[&_pre]:my-4 [&_pre]:overflow-x-auto [&_pre]:rounded-md [&_pre]:bg-muted [&_pre]:p-3 [&_pre]:font-mono [&_pre]:text-sm"
3781
- );
3782
- var RichHtml = React35.forwardRef(
3783
- ({
3784
- html,
3785
- sanitize = true,
3786
- sanitizeConfig,
3787
- className,
3788
- suppressHydrationWarning,
3789
- ...props
3790
- }, ref) => {
3791
- const markup = React35.useMemo(() => {
3792
- if (html === void 0 || html === null || html === "") {
3793
- return "";
3794
- }
3795
- if (!sanitize) {
3796
- return html;
3797
- }
3798
- if (typeof window === "undefined") {
3799
- return "";
3800
- }
3801
- const config = {
3802
- ...defaultSanitizeConfig,
3803
- ...sanitizeConfig
3804
- };
3805
- return DOMPurify.sanitize(html, config);
3806
- }, [html, sanitize, sanitizeConfig]);
3807
- const resolvedSuppressHydration = suppressHydrationWarning ?? sanitize;
3808
- if (html === void 0 || html === null || html === "") {
3809
- return null;
3810
- }
3811
- return /* @__PURE__ */ jsx38(
3812
- "div",
3813
- {
3814
- ref,
3815
- suppressHydrationWarning: resolvedSuppressHydration,
3816
- className: cn(richHtmlChrome, className),
3817
- ...props,
3818
- dangerouslySetInnerHTML: { __html: markup }
3819
- }
3820
- );
3821
- }
3822
- );
3823
- RichHtml.displayName = "RichHtml";
3824
-
3825
3925
  // source/components/primitive/ScrollArea/scroll-area.tsx
3826
- import * as React36 from "react";
3926
+ import * as React37 from "react";
3827
3927
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
3828
- import { jsx as jsx39, jsxs as jsxs24 } from "react/jsx-runtime";
3829
- var ScrollArea = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs24(
3928
+ import { jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
3929
+ var ScrollArea = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs25(
3830
3930
  ScrollAreaPrimitive.Root,
3831
3931
  {
3832
3932
  ref,
3833
3933
  className: cn("relative overflow-hidden", className),
3834
3934
  ...props,
3835
3935
  children: [
3836
- /* @__PURE__ */ jsx39(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
3837
- /* @__PURE__ */ jsx39(ScrollBar, {}),
3838
- /* @__PURE__ */ jsx39(ScrollAreaPrimitive.Corner, {})
3936
+ /* @__PURE__ */ jsx40(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
3937
+ /* @__PURE__ */ jsx40(ScrollBar, {}),
3938
+ /* @__PURE__ */ jsx40(ScrollAreaPrimitive.Corner, {})
3839
3939
  ]
3840
3940
  }
3841
3941
  ));
3842
3942
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
3843
- var ScrollBar = React36.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx39(
3943
+ var ScrollBar = React37.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx40(
3844
3944
  ScrollAreaPrimitive.ScrollAreaScrollbar,
3845
3945
  {
3846
3946
  ref,
@@ -3852,16 +3952,16 @@ var ScrollBar = React36.forwardRef(({ className, orientation = "vertical", ...pr
3852
3952
  className
3853
3953
  ),
3854
3954
  ...props,
3855
- children: /* @__PURE__ */ jsx39(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
3955
+ children: /* @__PURE__ */ jsx40(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
3856
3956
  }
3857
3957
  ));
3858
3958
  ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
3859
3959
 
3860
3960
  // source/components/primitive/Separator/separator.tsx
3861
- import * as React37 from "react";
3961
+ import * as React38 from "react";
3862
3962
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
3863
3963
  import { cva as cva12 } from "class-variance-authority";
3864
- import { jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
3964
+ import { jsx as jsx41, jsxs as jsxs26 } from "react/jsx-runtime";
3865
3965
  var separatorVariants = cva12("shrink-0", {
3866
3966
  variants: {
3867
3967
  orientation: {
@@ -3879,7 +3979,7 @@ var separatorVariants = cva12("shrink-0", {
3879
3979
  line: "solid"
3880
3980
  }
3881
3981
  });
3882
- var Separator3 = React37.forwardRef(
3982
+ var Separator3 = React38.forwardRef(
3883
3983
  ({
3884
3984
  className,
3885
3985
  orientation = "horizontal",
@@ -3891,13 +3991,13 @@ var Separator3 = React37.forwardRef(
3891
3991
  }, ref) => {
3892
3992
  const line = lineProp ?? variant ?? "solid";
3893
3993
  if (label && orientation === "horizontal") {
3894
- return /* @__PURE__ */ jsxs25(
3994
+ return /* @__PURE__ */ jsxs26(
3895
3995
  "div",
3896
3996
  {
3897
3997
  role: "separator",
3898
3998
  className: "flex items-center gap-3",
3899
3999
  children: [
3900
- /* @__PURE__ */ jsx40(
4000
+ /* @__PURE__ */ jsx41(
3901
4001
  "div",
3902
4002
  {
3903
4003
  className: cn(
@@ -3906,8 +4006,8 @@ var Separator3 = React37.forwardRef(
3906
4006
  )
3907
4007
  }
3908
4008
  ),
3909
- /* @__PURE__ */ jsx40("span", { className: "text-xs text-muted-foreground whitespace-nowrap", children: label }),
3910
- /* @__PURE__ */ jsx40(
4009
+ /* @__PURE__ */ jsx41("span", { className: "text-xs text-muted-foreground whitespace-nowrap", children: label }),
4010
+ /* @__PURE__ */ jsx41(
3911
4011
  "div",
3912
4012
  {
3913
4013
  className: cn(
@@ -3920,7 +4020,7 @@ var Separator3 = React37.forwardRef(
3920
4020
  }
3921
4021
  );
3922
4022
  }
3923
- return /* @__PURE__ */ jsx40(
4023
+ return /* @__PURE__ */ jsx41(
3924
4024
  SeparatorPrimitive.Root,
3925
4025
  {
3926
4026
  ref,
@@ -3938,16 +4038,16 @@ var Separator3 = React37.forwardRef(
3938
4038
  Separator3.displayName = "Separator";
3939
4039
 
3940
4040
  // source/components/primitive/Sheet/sheet.tsx
3941
- import * as React38 from "react";
4041
+ import * as React39 from "react";
3942
4042
  import * as SheetPrimitive from "@radix-ui/react-dialog";
3943
4043
  import { cva as cva13 } from "class-variance-authority";
3944
4044
  import { X as X2 } from "lucide-react";
3945
- import { jsx as jsx41, jsxs as jsxs26 } from "react/jsx-runtime";
4045
+ import { jsx as jsx42, jsxs as jsxs27 } from "react/jsx-runtime";
3946
4046
  var Sheet = SheetPrimitive.Root;
3947
4047
  var SheetTrigger = SheetPrimitive.Trigger;
3948
4048
  var SheetClose = SheetPrimitive.Close;
3949
4049
  var SheetPortal = SheetPrimitive.Portal;
3950
- var SheetOverlay = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
4050
+ var SheetOverlay = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3951
4051
  SheetPrimitive.Overlay,
3952
4052
  {
3953
4053
  className: cn(
@@ -3975,9 +4075,9 @@ var sheetVariants = cva13(
3975
4075
  }
3976
4076
  }
3977
4077
  );
3978
- var SheetContent = React38.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs26(SheetPortal, { children: [
3979
- /* @__PURE__ */ jsx41(SheetOverlay, {}),
3980
- /* @__PURE__ */ jsxs26(
4078
+ var SheetContent = React39.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs27(SheetPortal, { children: [
4079
+ /* @__PURE__ */ jsx42(SheetOverlay, {}),
4080
+ /* @__PURE__ */ jsxs27(
3981
4081
  SheetPrimitive.Content,
3982
4082
  {
3983
4083
  ref,
@@ -3985,9 +4085,9 @@ var SheetContent = React38.forwardRef(({ side = "right", className, children, ..
3985
4085
  ...props,
3986
4086
  children: [
3987
4087
  children,
3988
- /* @__PURE__ */ jsxs26(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
3989
- /* @__PURE__ */ jsx41(X2, { className: "h-4 w-4" }),
3990
- /* @__PURE__ */ jsx41("span", { className: "sr-only", children: "Close" })
4088
+ /* @__PURE__ */ jsxs27(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
4089
+ /* @__PURE__ */ jsx42(X2, { className: "h-4 w-4" }),
4090
+ /* @__PURE__ */ jsx42("span", { className: "sr-only", children: "Close" })
3991
4091
  ] })
3992
4092
  ]
3993
4093
  }
@@ -3997,7 +4097,7 @@ SheetContent.displayName = SheetPrimitive.Content.displayName;
3997
4097
  var SheetHeader = ({
3998
4098
  className,
3999
4099
  ...props
4000
- }) => /* @__PURE__ */ jsx41(
4100
+ }) => /* @__PURE__ */ jsx42(
4001
4101
  "div",
4002
4102
  {
4003
4103
  className: cn(
@@ -4011,7 +4111,7 @@ SheetHeader.displayName = "SheetHeader";
4011
4111
  var SheetFooter = ({
4012
4112
  className,
4013
4113
  ...props
4014
- }) => /* @__PURE__ */ jsx41(
4114
+ }) => /* @__PURE__ */ jsx42(
4015
4115
  "div",
4016
4116
  {
4017
4117
  className: cn(
@@ -4022,7 +4122,7 @@ var SheetFooter = ({
4022
4122
  }
4023
4123
  );
4024
4124
  SheetFooter.displayName = "SheetFooter";
4025
- var SheetTitle = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
4125
+ var SheetTitle = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
4026
4126
  SheetPrimitive.Title,
4027
4127
  {
4028
4128
  ref,
@@ -4031,7 +4131,7 @@ var SheetTitle = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE
4031
4131
  }
4032
4132
  ));
4033
4133
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
4034
- var SheetDescription = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
4134
+ var SheetDescription = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
4035
4135
  SheetPrimitive.Description,
4036
4136
  {
4037
4137
  ref,
@@ -4048,13 +4148,13 @@ import { cva as cva15 } from "class-variance-authority";
4048
4148
  import { PanelLeft } from "lucide-react";
4049
4149
 
4050
4150
  // source/hooks/use-mobile.ts
4051
- import * as React39 from "react";
4151
+ import * as React40 from "react";
4052
4152
  var MOBILE_MAX = 768;
4053
4153
  function useIsMobile(breakpoint = MOBILE_MAX) {
4054
- const [isMobile, setIsMobile] = React39.useState(
4154
+ const [isMobile, setIsMobile] = React40.useState(
4055
4155
  () => typeof window !== "undefined" ? window.innerWidth < breakpoint : false
4056
4156
  );
4057
- React39.useEffect(() => {
4157
+ React40.useEffect(() => {
4058
4158
  const mq = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
4059
4159
  const onChange = () => setIsMobile(mq.matches);
4060
4160
  onChange();
@@ -4065,9 +4165,9 @@ function useIsMobile(breakpoint = MOBILE_MAX) {
4065
4165
  }
4066
4166
 
4067
4167
  // source/components/primitive/Skeleton/skeleton.tsx
4068
- import * as React40 from "react";
4168
+ import * as React41 from "react";
4069
4169
  import { cva as cva14 } from "class-variance-authority";
4070
- import { jsx as jsx42 } from "react/jsx-runtime";
4170
+ import { jsx as jsx43 } from "react/jsx-runtime";
4071
4171
  var skeletonVariants = cva14(
4072
4172
  "animate-pulse bg-muted",
4073
4173
  {
@@ -4084,9 +4184,9 @@ var skeletonVariants = cva14(
4084
4184
  }
4085
4185
  }
4086
4186
  );
4087
- var Skeleton = React40.forwardRef(
4187
+ var Skeleton = React41.forwardRef(
4088
4188
  ({ className, rounded, ...props }, ref) => {
4089
- return /* @__PURE__ */ jsx42(
4189
+ return /* @__PURE__ */ jsx43(
4090
4190
  "div",
4091
4191
  {
4092
4192
  ref,
@@ -4100,43 +4200,6 @@ var Skeleton = React40.forwardRef(
4100
4200
  );
4101
4201
  Skeleton.displayName = "Skeleton";
4102
4202
 
4103
- // source/components/primitive/ToolTip/tooltip.tsx
4104
- import * as React41 from "react";
4105
- import * as TooltipPrimitive from "@radix-ui/react-tooltip";
4106
- import { jsx as jsx43, jsxs as jsxs27 } from "react/jsx-runtime";
4107
- var TooltipProvider = TooltipPrimitive.Provider;
4108
- var Tooltip = ({ ...props }) => {
4109
- return /* @__PURE__ */ jsx43(TooltipPrimitive.Root, { ...props });
4110
- };
4111
- Tooltip.displayName = "Tooltip";
4112
- var TooltipTrigger = TooltipPrimitive.Trigger;
4113
- TooltipTrigger.displayName = "TooltipTrigger";
4114
- var TooltipContent = React41.forwardRef(({ className, sideOffset = 4, arrow = false, children, ...props }, ref) => {
4115
- return /* @__PURE__ */ jsx43(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs27(
4116
- TooltipPrimitive.Content,
4117
- {
4118
- ref,
4119
- sideOffset,
4120
- className: cn(
4121
- "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md",
4122
- "animate-in fade-in-0 zoom-in-95",
4123
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
4124
- "data-[side=bottom]:slide-in-from-top-2",
4125
- "data-[side=left]:slide-in-from-right-2",
4126
- "data-[side=right]:slide-in-from-left-2",
4127
- "data-[side=top]:slide-in-from-bottom-2",
4128
- className
4129
- ),
4130
- ...props,
4131
- children: [
4132
- children,
4133
- arrow && /* @__PURE__ */ jsx43(TooltipPrimitive.Arrow, { className: "fill-popover" })
4134
- ]
4135
- }
4136
- ) });
4137
- });
4138
- TooltipContent.displayName = "TooltipContent";
4139
-
4140
4203
  // source/components/primitive/Sidebar/sidebar.tsx
4141
4204
  import { jsx as jsx44, jsxs as jsxs28 } from "react/jsx-runtime";
4142
4205
  var SIDEBAR_COOKIE_NAME = "sidebar:state";