@2urgseui/core 0.1.5 → 0.1.7

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,80 @@ var labelVariants = cva8(
2057
2166
  }
2058
2167
  }
2059
2168
  );
2060
- var Label2 = React23.forwardRef(({ className, tone, size, required, children, ...props }, ref) => /* @__PURE__ */ jsxs15(
2061
- LabelPrimitive.Root,
2062
- {
2063
- ref,
2064
- className: cn(labelVariants({ tone, size }), className),
2065
- ...props,
2066
- children: [
2067
- children,
2068
- required && /* @__PURE__ */ jsx24("span", { className: "ml-0.5 text-destructive", children: "*" })
2069
- ]
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;
2070
2189
  }
2071
- ));
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) => {
2213
+ const hasTooltip = hasLabelTooltip(tooltip);
2214
+ return /* @__PURE__ */ jsxs16(
2215
+ LabelPrimitive.Root,
2216
+ {
2217
+ ref,
2218
+ className: cn(
2219
+ labelVariants({ tone, size }),
2220
+ hasTooltip ? "flex w-full min-w-0 items-center justify-between gap-2" : "inline-flex items-center gap-1",
2221
+ className
2222
+ ),
2223
+ ...props,
2224
+ children: [
2225
+ /* @__PURE__ */ jsxs16("span", { className: "inline-flex min-w-0 items-center gap-1", children: [
2226
+ children,
2227
+ required && /* @__PURE__ */ jsx26("span", { className: "text-destructive", children: "*" })
2228
+ ] }),
2229
+ hasTooltip && /* @__PURE__ */ jsx26(LabelTooltip, { content: tooltip })
2230
+ ]
2231
+ }
2232
+ );
2233
+ });
2072
2234
  Label2.displayName = LabelPrimitive.Root.displayName;
2073
2235
 
2074
2236
  // source/components/primitive/RadioGroup/radiogroup.tsx
2075
- import * as React24 from "react";
2237
+ import * as React26 from "react";
2076
2238
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
2077
2239
  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(
2240
+ import { jsx as jsx27 } from "react/jsx-runtime";
2241
+ var RadioGroup2 = React26.forwardRef(({ className, ...props }, ref) => {
2242
+ return /* @__PURE__ */ jsx27(
2081
2243
  RadioGroupPrimitive.Root,
2082
2244
  {
2083
2245
  ref,
@@ -2087,8 +2249,8 @@ var RadioGroup2 = React24.forwardRef(({ className, ...props }, ref) => {
2087
2249
  );
2088
2250
  });
2089
2251
  RadioGroup2.displayName = "RadioGroup";
2090
- var RadioGroupItem = React24.forwardRef(({ className, ...props }, ref) => {
2091
- return /* @__PURE__ */ jsx25(
2252
+ var RadioGroupItem = React26.forwardRef(({ className, ...props }, ref) => {
2253
+ return /* @__PURE__ */ jsx27(
2092
2254
  RadioGroupPrimitive.Item,
2093
2255
  {
2094
2256
  ref,
@@ -2100,7 +2262,7 @@ var RadioGroupItem = React24.forwardRef(({ className, ...props }, ref) => {
2100
2262
  className
2101
2263
  ),
2102
2264
  ...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" }) })
2265
+ 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
2266
  }
2105
2267
  );
2106
2268
  });
@@ -2114,20 +2276,20 @@ import Image2 from "@tiptap/extension-image";
2114
2276
  import Link from "@tiptap/extension-link";
2115
2277
 
2116
2278
  // source/components/primitive/RichTextArea/richtext-toolbar.tsx
2117
- import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
2279
+ import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
2118
2280
  function RichTextToolbar({ editor }) {
2119
2281
  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" })
2282
+ return /* @__PURE__ */ jsxs17("div", { className: "flex flex-wrap gap-2 border-b p-2", children: [
2283
+ /* @__PURE__ */ jsx28("button", { onClick: () => editor.chain().focus().toggleBold().run(), children: "Bold" }),
2284
+ /* @__PURE__ */ jsx28("button", { onClick: () => editor.chain().focus().toggleItalic().run(), children: "Italic" }),
2285
+ /* @__PURE__ */ jsx28("button", { onClick: () => editor.chain().focus().toggleHeading({ level: 2 }).run(), children: "H2" }),
2286
+ /* @__PURE__ */ jsx28("button", { onClick: () => editor.chain().focus().toggleBulletList().run(), children: "List" }),
2287
+ /* @__PURE__ */ jsx28("button", { onClick: () => editor.chain().focus().toggleCodeBlock().run(), children: "Code" })
2126
2288
  ] });
2127
2289
  }
2128
2290
 
2129
2291
  // source/components/primitive/RichTextArea/richtext-editor.tsx
2130
- import { jsx as jsx27, jsxs as jsxs17 } from "react/jsx-runtime";
2292
+ import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
2131
2293
  var RichTextEditor = ({
2132
2294
  value,
2133
2295
  onChange,
@@ -2151,7 +2313,7 @@ var RichTextEditor = ({
2151
2313
  }
2152
2314
  });
2153
2315
  if (!editor) return null;
2154
- return /* @__PURE__ */ jsxs17(
2316
+ return /* @__PURE__ */ jsxs18(
2155
2317
  "div",
2156
2318
  {
2157
2319
  className: cn(
@@ -2161,8 +2323,8 @@ var RichTextEditor = ({
2161
2323
  className
2162
2324
  ),
2163
2325
  children: [
2164
- /* @__PURE__ */ jsx27(RichTextToolbar, { editor }),
2165
- /* @__PURE__ */ jsx27(
2326
+ /* @__PURE__ */ jsx29(RichTextToolbar, { editor }),
2327
+ /* @__PURE__ */ jsx29(
2166
2328
  EditorContent,
2167
2329
  {
2168
2330
  editor,
@@ -2175,9 +2337,9 @@ var RichTextEditor = ({
2175
2337
  };
2176
2338
 
2177
2339
  // source/components/primitive/SearchableSelect/searchable-select.tsx
2178
- import * as React25 from "react";
2340
+ import * as React27 from "react";
2179
2341
  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";
2342
+ import { jsx as jsx30, jsxs as jsxs19 } from "react/jsx-runtime";
2181
2343
  function reactNodeToLabelString2(node) {
2182
2344
  if (node == null || typeof node === "boolean") return "";
2183
2345
  if (typeof node === "string" || typeof node === "number") return String(node);
@@ -2207,12 +2369,12 @@ function SearchableSelectInner({
2207
2369
  "aria-invalid": ariaInvalid,
2208
2370
  innerRef
2209
2371
  }) {
2210
- const [open, setOpen] = React25.useState(false);
2211
- const [search, setSearch] = React25.useState("");
2212
- const searchInputRef = React25.useRef(null);
2372
+ const [open, setOpen] = React27.useState(false);
2373
+ const [search, setSearch] = React27.useState("");
2374
+ const searchInputRef = React27.useRef(null);
2213
2375
  const filteredItems = items.filter((item) => filterItem(item, search));
2214
2376
  const selectedItem = items.find((item) => item.value === value);
2215
- React25.useEffect(() => {
2377
+ React27.useEffect(() => {
2216
2378
  if (open) {
2217
2379
  setTimeout(() => searchInputRef.current?.focus(), 0);
2218
2380
  } else {
@@ -2232,9 +2394,9 @@ function SearchableSelectInner({
2232
2394
  e.stopPropagation();
2233
2395
  onValueChange?.("");
2234
2396
  };
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(
2397
+ return /* @__PURE__ */ jsx30("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsxs19(Popover, { open, onOpenChange: setOpen, children: [
2398
+ name && /* @__PURE__ */ jsx30("input", { type: "hidden", name, value: value ?? "" }),
2399
+ /* @__PURE__ */ jsx30(PopoverTrigger, { asChild: true, className: "w-full", children: /* @__PURE__ */ jsxs19(
2238
2400
  "button",
2239
2401
  {
2240
2402
  ref: innerRef,
@@ -2254,7 +2416,7 @@ function SearchableSelectInner({
2254
2416
  className
2255
2417
  ),
2256
2418
  children: [
2257
- /* @__PURE__ */ jsx28(
2419
+ /* @__PURE__ */ jsx30(
2258
2420
  "span",
2259
2421
  {
2260
2422
  className: cn(
@@ -2264,8 +2426,8 @@ function SearchableSelectInner({
2264
2426
  children: selectedItem?.label ?? placeholder
2265
2427
  }
2266
2428
  ),
2267
- /* @__PURE__ */ jsxs18("span", { className: "ml-auto flex shrink-0 items-center gap-1", children: [
2268
- clearable && value && !disabled && /* @__PURE__ */ jsx28(
2429
+ /* @__PURE__ */ jsxs19("span", { className: "ml-auto flex shrink-0 items-center gap-1", children: [
2430
+ clearable && value && !disabled && /* @__PURE__ */ jsx30(
2269
2431
  "span",
2270
2432
  {
2271
2433
  role: "button",
@@ -2281,21 +2443,21 @@ function SearchableSelectInner({
2281
2443
  children: "\xD7"
2282
2444
  }
2283
2445
  ),
2284
- /* @__PURE__ */ jsx28(ChevronDown3, { "aria-hidden": true, className: "h-4 w-4 shrink-0 text-slate-500 dark:text-slate-400" })
2446
+ /* @__PURE__ */ jsx30(ChevronDown3, { "aria-hidden": true, className: "h-4 w-4 shrink-0 text-slate-500 dark:text-slate-400" })
2285
2447
  ] })
2286
2448
  ]
2287
2449
  }
2288
2450
  ) }),
2289
- /* @__PURE__ */ jsxs18(
2451
+ /* @__PURE__ */ jsxs19(
2290
2452
  PopoverContent,
2291
2453
  {
2292
2454
  align: "start",
2293
2455
  className: "w-[--radix-popover-trigger-width] min-w-[var(--radix-popover-trigger-width)] max-w-[var(--radix-popover-content-available-width)] p-0",
2294
2456
  onOpenAutoFocus: (e) => e.preventDefault(),
2295
2457
  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(
2458
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2 border-b px-3 py-2", children: [
2459
+ /* @__PURE__ */ jsx30(Search2, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
2460
+ /* @__PURE__ */ jsx30(
2299
2461
  "input",
2300
2462
  {
2301
2463
  ref: searchInputRef,
@@ -2306,9 +2468,9 @@ function SearchableSelectInner({
2306
2468
  }
2307
2469
  )
2308
2470
  ] }),
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) => {
2471
+ /* @__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
2472
  const isSelected = item.value === value;
2311
- return /* @__PURE__ */ jsxs18(
2473
+ return /* @__PURE__ */ jsxs19(
2312
2474
  "button",
2313
2475
  {
2314
2476
  type: "button",
@@ -2324,8 +2486,8 @@ function SearchableSelectInner({
2324
2486
  isSelected && "bg-accent/50"
2325
2487
  ),
2326
2488
  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 })
2489
+ /* @__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" }) }),
2490
+ /* @__PURE__ */ jsx30("span", { className: "min-w-0 flex-1 whitespace-normal break-words", children: item.label })
2329
2491
  ]
2330
2492
  },
2331
2493
  item.value
@@ -2336,18 +2498,18 @@ function SearchableSelectInner({
2336
2498
  )
2337
2499
  ] }) });
2338
2500
  }
2339
- var SearchableSelect = React25.forwardRef((props, ref) => /* @__PURE__ */ jsx28(SearchableSelectInner, { ...props, innerRef: ref }));
2501
+ var SearchableSelect = React27.forwardRef((props, ref) => /* @__PURE__ */ jsx30(SearchableSelectInner, { ...props, innerRef: ref }));
2340
2502
  SearchableSelect.displayName = "SearchableSelect";
2341
2503
 
2342
2504
  // source/components/primitive/Select/select.tsx
2343
- import * as React26 from "react";
2505
+ import * as React28 from "react";
2344
2506
  import * as SelectPrimitive from "@radix-ui/react-select";
2345
2507
  import { Check as Check5, ChevronDown as ChevronDown4, ChevronUp } from "lucide-react";
2346
- import { jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
2508
+ import { jsx as jsx31, jsxs as jsxs20 } from "react/jsx-runtime";
2347
2509
  var Select = SelectPrimitive.Root;
2348
2510
  var SelectGroup = SelectPrimitive.Group;
2349
2511
  var SelectValue = SelectPrimitive.Value;
2350
- var SelectTrigger = React26.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs19(
2512
+ var SelectTrigger = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs20(
2351
2513
  SelectPrimitive.Trigger,
2352
2514
  {
2353
2515
  ref,
@@ -2361,7 +2523,7 @@ var SelectTrigger = React26.forwardRef(({ className, children, ...props }, ref)
2361
2523
  ...props,
2362
2524
  children: [
2363
2525
  children,
2364
- /* @__PURE__ */ jsx29(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx29(
2526
+ /* @__PURE__ */ jsx31(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx31(
2365
2527
  ChevronDown4,
2366
2528
  {
2367
2529
  "aria-hidden": "true",
@@ -2372,7 +2534,7 @@ var SelectTrigger = React26.forwardRef(({ className, children, ...props }, ref)
2372
2534
  }
2373
2535
  ));
2374
2536
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2375
- var SelectScrollUpButton = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2537
+ var SelectScrollUpButton = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2376
2538
  SelectPrimitive.ScrollUpButton,
2377
2539
  {
2378
2540
  ref,
@@ -2381,11 +2543,11 @@ var SelectScrollUpButton = React26.forwardRef(({ className, ...props }, ref) =>
2381
2543
  className
2382
2544
  ),
2383
2545
  ...props,
2384
- children: /* @__PURE__ */ jsx29(ChevronUp, { className: "h-4 w-4" })
2546
+ children: /* @__PURE__ */ jsx31(ChevronUp, { className: "h-4 w-4" })
2385
2547
  }
2386
2548
  ));
2387
2549
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2388
- var SelectScrollDownButton = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2550
+ var SelectScrollDownButton = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2389
2551
  SelectPrimitive.ScrollDownButton,
2390
2552
  {
2391
2553
  ref,
@@ -2394,11 +2556,11 @@ var SelectScrollDownButton = React26.forwardRef(({ className, ...props }, ref) =
2394
2556
  className
2395
2557
  ),
2396
2558
  ...props,
2397
- children: /* @__PURE__ */ jsx29(ChevronDown4, { className: "h-4 w-4" })
2559
+ children: /* @__PURE__ */ jsx31(ChevronDown4, { className: "h-4 w-4" })
2398
2560
  }
2399
2561
  ));
2400
2562
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2401
- var SelectContent = React26.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx29(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs19(
2563
+ var SelectContent = React28.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx31(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs20(
2402
2564
  SelectPrimitive.Content,
2403
2565
  {
2404
2566
  ref,
@@ -2410,8 +2572,8 @@ var SelectContent = React26.forwardRef(({ className, children, position = "poppe
2410
2572
  position,
2411
2573
  ...props,
2412
2574
  children: [
2413
- /* @__PURE__ */ jsx29(SelectScrollUpButton, {}),
2414
- /* @__PURE__ */ jsx29(
2575
+ /* @__PURE__ */ jsx31(SelectScrollUpButton, {}),
2576
+ /* @__PURE__ */ jsx31(
2415
2577
  SelectPrimitive.Viewport,
2416
2578
  {
2417
2579
  className: cn(
@@ -2421,12 +2583,12 @@ var SelectContent = React26.forwardRef(({ className, children, position = "poppe
2421
2583
  children
2422
2584
  }
2423
2585
  ),
2424
- /* @__PURE__ */ jsx29(SelectScrollDownButton, {})
2586
+ /* @__PURE__ */ jsx31(SelectScrollDownButton, {})
2425
2587
  ]
2426
2588
  }
2427
2589
  ) }));
2428
2590
  SelectContent.displayName = SelectPrimitive.Content.displayName;
2429
- var SelectLabel = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2591
+ var SelectLabel = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2430
2592
  SelectPrimitive.Label,
2431
2593
  {
2432
2594
  ref,
@@ -2435,13 +2597,13 @@ var SelectLabel = React26.forwardRef(({ className, ...props }, ref) => /* @__PUR
2435
2597
  }
2436
2598
  ));
2437
2599
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
2438
- var SelectItem = React26.forwardRef(({ value, className, children, ...props }, ref) => {
2600
+ var SelectItem = React28.forwardRef(({ value, className, children, ...props }, ref) => {
2439
2601
  if (value === "") {
2440
2602
  throw new Error(
2441
2603
  '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
2604
  );
2443
2605
  }
2444
- return /* @__PURE__ */ jsxs19(
2606
+ return /* @__PURE__ */ jsxs20(
2445
2607
  SelectPrimitive.Item,
2446
2608
  {
2447
2609
  ref,
@@ -2452,14 +2614,14 @@ var SelectItem = React26.forwardRef(({ value, className, children, ...props }, r
2452
2614
  ),
2453
2615
  ...props,
2454
2616
  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 })
2617
+ /* @__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" }) }) }),
2618
+ /* @__PURE__ */ jsx31(SelectPrimitive.ItemText, { className: "whitespace-normal break-words", children })
2457
2619
  ]
2458
2620
  }
2459
2621
  );
2460
2622
  });
2461
2623
  SelectItem.displayName = SelectPrimitive.Item.displayName;
2462
- var SelectSeparator = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2624
+ var SelectSeparator = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2463
2625
  SelectPrimitive.Separator,
2464
2626
  {
2465
2627
  ref,
@@ -2470,10 +2632,10 @@ var SelectSeparator = React26.forwardRef(({ className, ...props }, ref) => /* @_
2470
2632
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
2471
2633
 
2472
2634
  // source/components/primitive/Switch/switch.tsx
2473
- import * as React27 from "react";
2635
+ import * as React29 from "react";
2474
2636
  import * as SwitchPrimitives from "@radix-ui/react-switch";
2475
2637
  import { cva as cva9 } from "class-variance-authority";
2476
- import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
2638
+ import { jsx as jsx32, jsxs as jsxs21 } from "react/jsx-runtime";
2477
2639
  var switchRootVariants = cva9(
2478
2640
  [
2479
2641
  "peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors",
@@ -2507,14 +2669,14 @@ var switchThumbVariants = cva9(
2507
2669
  }
2508
2670
  }
2509
2671
  );
2510
- var Switch = React27.forwardRef(
2672
+ var Switch = React29.forwardRef(
2511
2673
  ({ className, label, description, error, size, id: idProp, ...props }, ref) => {
2512
- const generatedId = React27.useId();
2674
+ const generatedId = React29.useId();
2513
2675
  const id = idProp ?? generatedId;
2514
2676
  const descriptionId = description ? `${id}-description` : void 0;
2515
2677
  const errorId = error ? `${id}-error` : void 0;
2516
- return /* @__PURE__ */ jsxs20("div", { className: "flex items-start gap-3", children: [
2517
- /* @__PURE__ */ jsx30(
2678
+ return /* @__PURE__ */ jsxs21("div", { className: "flex items-start gap-3", children: [
2679
+ /* @__PURE__ */ jsx32(
2518
2680
  SwitchPrimitives.Root,
2519
2681
  {
2520
2682
  ref,
@@ -2527,7 +2689,7 @@ var Switch = React27.forwardRef(
2527
2689
  className
2528
2690
  ),
2529
2691
  ...props,
2530
- children: /* @__PURE__ */ jsx30(
2692
+ children: /* @__PURE__ */ jsx32(
2531
2693
  SwitchPrimitives.Thumb,
2532
2694
  {
2533
2695
  className: cn(switchThumbVariants({ size }))
@@ -2535,8 +2697,8 @@ var Switch = React27.forwardRef(
2535
2697
  )
2536
2698
  }
2537
2699
  ),
2538
- (label || description || error) && /* @__PURE__ */ jsxs20("div", { className: "flex flex-col leading-tight", children: [
2539
- label && /* @__PURE__ */ jsx30(
2700
+ (label || description || error) && /* @__PURE__ */ jsxs21("div", { className: "flex flex-col leading-tight", children: [
2701
+ label && /* @__PURE__ */ jsx32(
2540
2702
  "label",
2541
2703
  {
2542
2704
  htmlFor: id,
@@ -2544,7 +2706,7 @@ var Switch = React27.forwardRef(
2544
2706
  children: label
2545
2707
  }
2546
2708
  ),
2547
- description && /* @__PURE__ */ jsx30(
2709
+ description && /* @__PURE__ */ jsx32(
2548
2710
  "p",
2549
2711
  {
2550
2712
  id: descriptionId,
@@ -2552,7 +2714,7 @@ var Switch = React27.forwardRef(
2552
2714
  children: description
2553
2715
  }
2554
2716
  ),
2555
- error && /* @__PURE__ */ jsx30(
2717
+ error && /* @__PURE__ */ jsx32(
2556
2718
  "p",
2557
2719
  {
2558
2720
  id: errorId,
@@ -2567,9 +2729,9 @@ var Switch = React27.forwardRef(
2567
2729
  Switch.displayName = "Switch";
2568
2730
 
2569
2731
  // source/components/primitive/Text/text.tsx
2570
- import * as React28 from "react";
2732
+ import * as React30 from "react";
2571
2733
  import { cva as cva10 } from "class-variance-authority";
2572
- import { jsx as jsx31 } from "react/jsx-runtime";
2734
+ import { jsx as jsx33 } from "react/jsx-runtime";
2573
2735
  var textVariants = cva10("text-foreground", {
2574
2736
  variants: {
2575
2737
  element: {
@@ -2618,7 +2780,7 @@ var textVariants = cva10("text-foreground", {
2618
2780
  tone: "default"
2619
2781
  }
2620
2782
  });
2621
- var Text = React28.forwardRef(
2783
+ var Text = React30.forwardRef(
2622
2784
  ({
2623
2785
  element = "p",
2624
2786
  size,
@@ -2631,7 +2793,7 @@ var Text = React28.forwardRef(
2631
2793
  }, ref) => {
2632
2794
  const Comp = element;
2633
2795
  const variantElement = element === "div" ? "p" : element;
2634
- return /* @__PURE__ */ jsx31(
2796
+ return /* @__PURE__ */ jsx33(
2635
2797
  Comp,
2636
2798
  {
2637
2799
  ref,
@@ -2654,8 +2816,8 @@ var Text = React28.forwardRef(
2654
2816
  Text.displayName = "Text";
2655
2817
 
2656
2818
  // source/components/primitive/TextArea/textarea.tsx
2657
- import * as React29 from "react";
2658
- import { jsx as jsx32 } from "react/jsx-runtime";
2819
+ import * as React31 from "react";
2820
+ import { jsx as jsx34 } from "react/jsx-runtime";
2659
2821
  var resizeClasses = {
2660
2822
  none: "resize-none",
2661
2823
  vertical: "resize-y",
@@ -2663,9 +2825,9 @@ var resizeClasses = {
2663
2825
  both: "resize"
2664
2826
  };
2665
2827
  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(
2828
+ var Textarea = React31.forwardRef(
2667
2829
  ({ className, error, resize = "vertical", ...props }, ref) => {
2668
- return /* @__PURE__ */ jsx32(
2830
+ return /* @__PURE__ */ jsx34(
2669
2831
  "textarea",
2670
2832
  {
2671
2833
  ref,
@@ -2687,7 +2849,7 @@ var Textarea = React29.forwardRef(
2687
2849
  Textarea.displayName = "Textarea";
2688
2850
 
2689
2851
  // source/components/primitive/FormField/form-field.tsx
2690
- import { jsx as jsx33, jsxs as jsxs21 } from "react/jsx-runtime";
2852
+ import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
2691
2853
  function stripThousands(s) {
2692
2854
  return s.replace(/,/g, "");
2693
2855
  }
@@ -2809,6 +2971,7 @@ function formFieldHasLabel(label) {
2809
2971
  function FormField({
2810
2972
  name,
2811
2973
  label,
2974
+ labelTooltip,
2812
2975
  register,
2813
2976
  control,
2814
2977
  rules,
@@ -2831,7 +2994,7 @@ function FormField({
2831
2994
  className,
2832
2995
  renderInput
2833
2996
  }) {
2834
- const generatedId = React30.useId();
2997
+ const generatedId = React32.useId();
2835
2998
  const inputId = `field-${generatedId}`;
2836
2999
  const descriptionId = description ? `${inputId}-description` : void 0;
2837
3000
  const externalError = error ? String(error) : void 0;
@@ -2874,7 +3037,7 @@ function FormField({
2874
3037
  );
2875
3038
  }
2876
3039
  if (control) {
2877
- return /* @__PURE__ */ jsx33(
3040
+ return /* @__PURE__ */ jsx35(
2878
3041
  Controller,
2879
3042
  {
2880
3043
  name,
@@ -2901,7 +3064,7 @@ function FormField({
2901
3064
  onChange: field.onChange,
2902
3065
  onBlur: field.onBlur,
2903
3066
  ref: field.ref
2904
- }) : /* @__PURE__ */ jsx33(
3067
+ }) : /* @__PURE__ */ jsx35(
2905
3068
  FormFieldVariantControl,
2906
3069
  {
2907
3070
  variant,
@@ -2926,18 +3089,19 @@ function FormField({
2926
3089
  maskInput: renderInput ? void 0 : maskInput
2927
3090
  }
2928
3091
  );
2929
- const labelBlock = isCheckboxInline || !hasFieldLabel2 ? null : /* @__PURE__ */ jsx33(
3092
+ const labelBlock = isCheckboxInline || !hasFieldLabel2 ? null : /* @__PURE__ */ jsx35(
2930
3093
  Label2,
2931
3094
  {
2932
3095
  id: variant === "radio" || variant === "richtext" ? legendId : void 0,
2933
3096
  htmlFor: variant === "radio" || variant === "richtext" ? void 0 : inputId,
2934
3097
  size: "sm",
2935
3098
  required,
3099
+ tooltip: labelTooltip,
2936
3100
  children: label
2937
3101
  }
2938
3102
  );
2939
- const checkboxInline = isCheckboxInline ? hasFieldLabel2 ? /* @__PURE__ */ jsxs21("div", { className: "flex w-full min-w-0 items-start gap-2", children: [
2940
- /* @__PURE__ */ jsx33(
3103
+ const checkboxInline = isCheckboxInline ? hasFieldLabel2 ? /* @__PURE__ */ jsxs22("div", { className: "flex w-full min-w-0 items-start gap-2", children: [
3104
+ /* @__PURE__ */ jsx35(
2941
3105
  Checkbox,
2942
3106
  {
2943
3107
  ...checkboxProps,
@@ -2952,17 +3116,18 @@ function FormField({
2952
3116
  "aria-invalid": hasError || void 0
2953
3117
  }
2954
3118
  ),
2955
- /* @__PURE__ */ jsx33(
3119
+ /* @__PURE__ */ jsx35(
2956
3120
  Label2,
2957
3121
  {
2958
3122
  htmlFor: inputId,
2959
3123
  required,
2960
3124
  size: "sm",
2961
- className: "font-normal leading-snug",
3125
+ tooltip: labelTooltip,
3126
+ className: "min-w-0 flex-1 font-normal leading-snug",
2962
3127
  children: label
2963
3128
  }
2964
3129
  )
2965
- ] }) : /* @__PURE__ */ jsx33(
3130
+ ] }) : /* @__PURE__ */ jsx35(
2966
3131
  Checkbox,
2967
3132
  {
2968
3133
  ...checkboxProps,
@@ -2977,7 +3142,7 @@ function FormField({
2977
3142
  "aria-invalid": hasError || void 0
2978
3143
  }
2979
3144
  ) : null;
2980
- return /* @__PURE__ */ jsxs21(
3145
+ return /* @__PURE__ */ jsxs22(
2981
3146
  "div",
2982
3147
  {
2983
3148
  className: cn(
@@ -2985,12 +3150,12 @@ function FormField({
2985
3150
  className
2986
3151
  ),
2987
3152
  children: [
2988
- isCheckboxInline ? checkboxInline : /* @__PURE__ */ jsxs21("div", { className: "flex w-full min-w-0 flex-col gap-1.5", children: [
3153
+ isCheckboxInline ? checkboxInline : /* @__PURE__ */ jsxs22("div", { className: "flex w-full min-w-0 flex-col gap-1.5", children: [
2989
3154
  labelBlock,
2990
3155
  controlNode
2991
3156
  ] }),
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 })
3157
+ description && /* @__PURE__ */ jsx35(Text, { id: descriptionId, size: "sm", tone: "muted", children: description }),
3158
+ message && /* @__PURE__ */ jsx35(Text, { id: errorId, size: "sm", tone: "destructive", children: message })
2994
3159
  ]
2995
3160
  }
2996
3161
  );
@@ -3015,7 +3180,7 @@ function FormField({
3015
3180
  "aria-describedby": describedBy,
3016
3181
  error: Boolean(externalError),
3017
3182
  ...registered
3018
- }) : variant === "textarea" ? /* @__PURE__ */ jsx33(
3183
+ }) : variant === "textarea" ? /* @__PURE__ */ jsx35(
3019
3184
  Textarea,
3020
3185
  {
3021
3186
  id: inputId,
@@ -3024,7 +3189,7 @@ function FormField({
3024
3189
  ...textareaProps,
3025
3190
  ...registered
3026
3191
  }
3027
- ) : /* @__PURE__ */ jsx33(
3192
+ ) : /* @__PURE__ */ jsx35(
3028
3193
  Input,
3029
3194
  {
3030
3195
  id: inputId,
@@ -3034,13 +3199,22 @@ function FormField({
3034
3199
  ...registered
3035
3200
  }
3036
3201
  );
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 }),
3202
+ return /* @__PURE__ */ jsxs22("div", { className: cn("mt-4 flex w-full min-w-0 flex-col gap-2", className), children: [
3203
+ hasFieldLabel ? /* @__PURE__ */ jsxs22("div", { className: "flex w-full min-w-0 flex-col gap-1.5", children: [
3204
+ /* @__PURE__ */ jsx35(
3205
+ Label2,
3206
+ {
3207
+ htmlFor: inputId,
3208
+ required,
3209
+ size: "sm",
3210
+ tooltip: labelTooltip,
3211
+ children: label
3212
+ }
3213
+ ),
3040
3214
  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 })
3215
+ ] }) : /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: registeredControl }),
3216
+ description && /* @__PURE__ */ jsx35(Text, { id: descriptionId, size: "sm", tone: "muted", children: description }),
3217
+ externalError && /* @__PURE__ */ jsx35(Text, { id: `${inputId}-error`, size: "sm", tone: "destructive", children: externalError })
3044
3218
  ] });
3045
3219
  }
3046
3220
  function formValueToAsyncSelectOption(v) {
@@ -3078,7 +3252,7 @@ function FormFieldVariantControl({
3078
3252
  }) {
3079
3253
  switch (variant) {
3080
3254
  case "textarea":
3081
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3255
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3082
3256
  Textarea,
3083
3257
  {
3084
3258
  ...textareaProps,
@@ -3096,7 +3270,7 @@ function FormFieldVariantControl({
3096
3270
  case "checkbox":
3097
3271
  return null;
3098
3272
  case "switch":
3099
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3273
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3100
3274
  Switch,
3101
3275
  {
3102
3276
  ...switchProps,
@@ -3134,7 +3308,7 @@ function FormFieldVariantControl({
3134
3308
  }
3135
3309
  const value = field.value == null || field.value === "" ? void 0 : String(field.value);
3136
3310
  if (searchable) {
3137
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3311
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3138
3312
  SearchableSelect,
3139
3313
  {
3140
3314
  items,
@@ -3159,7 +3333,7 @@ function FormFieldVariantControl({
3159
3333
  }
3160
3334
  ) });
3161
3335
  }
3162
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsxs21(
3336
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsxs22(
3163
3337
  Select,
3164
3338
  {
3165
3339
  ...selectRootRest,
@@ -3168,7 +3342,7 @@ function FormFieldVariantControl({
3168
3342
  disabled: field.disabled,
3169
3343
  name: field.name,
3170
3344
  children: [
3171
- /* @__PURE__ */ jsx33(
3345
+ /* @__PURE__ */ jsx35(
3172
3346
  SelectTrigger,
3173
3347
  {
3174
3348
  id: inputId,
@@ -3180,10 +3354,10 @@ function FormFieldVariantControl({
3180
3354
  triggerClassName
3181
3355
  ),
3182
3356
  onBlur: field.onBlur,
3183
- children: /* @__PURE__ */ jsx33(SelectValue, { placeholder })
3357
+ children: /* @__PURE__ */ jsx35(SelectValue, { placeholder })
3184
3358
  }
3185
3359
  ),
3186
- /* @__PURE__ */ jsx33(SelectContent, { className: contentClassName, children: items.map((item) => /* @__PURE__ */ jsx33(
3360
+ /* @__PURE__ */ jsx35(SelectContent, { className: contentClassName, children: items.map((item) => /* @__PURE__ */ jsx35(
3187
3361
  SelectItem,
3188
3362
  {
3189
3363
  value: item.value,
@@ -3206,7 +3380,7 @@ function FormFieldVariantControl({
3206
3380
  if (!asyncSelectProps?.labelKey) {
3207
3381
  throw new Error('FormField variant "async-select" requires asyncSelectProps.labelKey.');
3208
3382
  }
3209
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3383
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3210
3384
  AsyncSelect,
3211
3385
  {
3212
3386
  ...asyncSelectProps,
@@ -3230,7 +3404,7 @@ function FormFieldVariantControl({
3230
3404
  className: radioClassName,
3231
3405
  ...radioGroupRest
3232
3406
  } = radioProps;
3233
- return /* @__PURE__ */ jsx33(
3407
+ return /* @__PURE__ */ jsx35(
3234
3408
  RadioGroup2,
3235
3409
  {
3236
3410
  ...radioGroupRest,
@@ -3245,8 +3419,8 @@ function FormFieldVariantControl({
3245
3419
  "aria-describedby": describedBy,
3246
3420
  "aria-invalid": hasError || void 0,
3247
3421
  ref: field.ref,
3248
- children: options.map((opt) => /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-2", children: [
3249
- /* @__PURE__ */ jsx33(
3422
+ children: options.map((opt) => /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2", children: [
3423
+ /* @__PURE__ */ jsx35(
3250
3424
  RadioGroupItem,
3251
3425
  {
3252
3426
  value: opt.value,
@@ -3254,7 +3428,7 @@ function FormFieldVariantControl({
3254
3428
  disabled: opt.disabled
3255
3429
  }
3256
3430
  ),
3257
- /* @__PURE__ */ jsx33(
3431
+ /* @__PURE__ */ jsx35(
3258
3432
  Label2,
3259
3433
  {
3260
3434
  htmlFor: opt.id ?? `${inputId}-${opt.value}`,
@@ -3273,7 +3447,7 @@ function FormFieldVariantControl({
3273
3447
  }
3274
3448
  const { maxLength, groups, containerClassName, ...otpRest } = otpProps;
3275
3449
  const slotGroups = groups?.length ? groups : defaultOtpGroups(maxLength);
3276
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3450
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3277
3451
  InputOTP,
3278
3452
  {
3279
3453
  ...otpRest,
@@ -3292,15 +3466,15 @@ function FormFieldVariantControl({
3292
3466
  hasError && inputOtpContainerInvalid,
3293
3467
  containerClassName
3294
3468
  ),
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)) })
3469
+ children: slotGroups.map((indices, gi) => /* @__PURE__ */ jsxs22(React32.Fragment, { children: [
3470
+ gi > 0 ? /* @__PURE__ */ jsx35(InputOTPSeparator, {}) : null,
3471
+ /* @__PURE__ */ jsx35(InputOTPGroup, { children: indices.map((index) => /* @__PURE__ */ jsx35(InputOTPSlot, { index }, index)) })
3298
3472
  ] }, gi))
3299
3473
  }
3300
3474
  ) });
3301
3475
  }
3302
3476
  case "richtext":
3303
- return /* @__PURE__ */ jsx33(
3477
+ return /* @__PURE__ */ jsx35(
3304
3478
  "div",
3305
3479
  {
3306
3480
  className: "w-full min-w-0",
@@ -3310,7 +3484,7 @@ function FormFieldVariantControl({
3310
3484
  "aria-describedby": describedBy,
3311
3485
  "aria-invalid": hasError || void 0,
3312
3486
  onBlur: field.onBlur,
3313
- children: /* @__PURE__ */ jsx33(
3487
+ children: /* @__PURE__ */ jsx35(
3314
3488
  RichTextEditor,
3315
3489
  {
3316
3490
  value: field.value ?? "",
@@ -3322,7 +3496,7 @@ function FormFieldVariantControl({
3322
3496
  }
3323
3497
  );
3324
3498
  case "dropzone":
3325
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3499
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3326
3500
  FileDropzone,
3327
3501
  {
3328
3502
  ...dropzoneProps,
@@ -3356,7 +3530,7 @@ function FormFieldVariantControl({
3356
3530
  const pattern = maskInput.pattern;
3357
3531
  const rawStored = field.value == null || field.value === "" ? "" : String(field.value);
3358
3532
  const displayValue = formFieldMaskFormatDisplay(pattern, rawStored);
3359
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3533
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3360
3534
  Input,
3361
3535
  {
3362
3536
  ...restInputProps,
@@ -3393,7 +3567,7 @@ function FormFieldVariantControl({
3393
3567
  useGrouping
3394
3568
  );
3395
3569
  const defaultInputMode = allowDecimal ? "decimal" : "numeric";
3396
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3570
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3397
3571
  Input,
3398
3572
  {
3399
3573
  ...restInputProps,
@@ -3417,7 +3591,7 @@ function FormFieldVariantControl({
3417
3591
  }
3418
3592
  ) });
3419
3593
  }
3420
- return /* @__PURE__ */ jsx33("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx33(
3594
+ return /* @__PURE__ */ jsx35("div", { className: "w-full min-w-0", children: /* @__PURE__ */ jsx35(
3421
3595
  Input,
3422
3596
  {
3423
3597
  ...restInputProps,
@@ -3442,9 +3616,9 @@ function FormFieldVariantControl({
3442
3616
  }
3443
3617
 
3444
3618
  // source/components/primitive/Heading/heading.tsx
3445
- import * as React31 from "react";
3619
+ import * as React33 from "react";
3446
3620
  import { cva as cva11 } from "class-variance-authority";
3447
- import { jsx as jsx34 } from "react/jsx-runtime";
3621
+ import { jsx as jsx36 } from "react/jsx-runtime";
3448
3622
  var headingVariants = cva11(
3449
3623
  "text-foreground tracking-tight",
3450
3624
  {
@@ -3510,7 +3684,7 @@ var headingVariants = cva11(
3510
3684
  }
3511
3685
  }
3512
3686
  );
3513
- var Heading = React31.forwardRef(
3687
+ var Heading = React33.forwardRef(
3514
3688
  ({
3515
3689
  level = 1,
3516
3690
  size,
@@ -3523,7 +3697,7 @@ var Heading = React31.forwardRef(
3523
3697
  ...props
3524
3698
  }, ref) => {
3525
3699
  const Tag = `h${level}`;
3526
- return /* @__PURE__ */ jsx34(
3700
+ return /* @__PURE__ */ jsx36(
3527
3701
  Tag,
3528
3702
  {
3529
3703
  ref,
@@ -3539,10 +3713,10 @@ var Heading = React31.forwardRef(
3539
3713
  Heading.displayName = "Heading";
3540
3714
 
3541
3715
  // 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(
3716
+ import * as React34 from "react";
3717
+ import { jsx as jsx37 } from "react/jsx-runtime";
3718
+ var InputGroup = React34.forwardRef(
3719
+ ({ className, error, children, ...props }, ref) => /* @__PURE__ */ jsx37(
3546
3720
  "div",
3547
3721
  {
3548
3722
  ref,
@@ -3560,7 +3734,7 @@ var InputGroup = React32.forwardRef(
3560
3734
  )
3561
3735
  );
3562
3736
  InputGroup.displayName = "InputGroup";
3563
- var InputGroupIcon = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
3737
+ var InputGroupIcon = React34.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3564
3738
  "span",
3565
3739
  {
3566
3740
  ref,
@@ -3573,8 +3747,8 @@ var InputGroupIcon = React32.forwardRef(({ className, ...props }, ref) => /* @__
3573
3747
  }
3574
3748
  ));
3575
3749
  InputGroupIcon.displayName = "InputGroupIcon";
3576
- var InputGroupInput = React32.forwardRef(
3577
- ({ className, type, ...props }, ref) => /* @__PURE__ */ jsx35(
3750
+ var InputGroupInput = React34.forwardRef(
3751
+ ({ className, type, ...props }, ref) => /* @__PURE__ */ jsx37(
3578
3752
  "input",
3579
3753
  {
3580
3754
  ref,
@@ -3593,10 +3767,10 @@ InputGroupInput.displayName = "InputGroupInput";
3593
3767
  var inputGroupSelectTriggerTextAlignClass = "pl-12";
3594
3768
 
3595
3769
  // source/components/primitive/Pagination/pagination.tsx
3596
- import * as React33 from "react";
3770
+ import * as React35 from "react";
3597
3771
  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(
3772
+ import { jsx as jsx38, jsxs as jsxs23 } from "react/jsx-runtime";
3773
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx38(
3600
3774
  "nav",
3601
3775
  {
3602
3776
  role: "navigation",
@@ -3606,7 +3780,7 @@ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx36(
3606
3780
  }
3607
3781
  );
3608
3782
  Pagination.displayName = "Pagination";
3609
- var PaginationContent = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
3783
+ var PaginationContent = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
3610
3784
  "ul",
3611
3785
  {
3612
3786
  ref,
@@ -3615,14 +3789,14 @@ var PaginationContent = React33.forwardRef(({ className, ...props }, ref) => /*
3615
3789
  }
3616
3790
  ));
3617
3791
  PaginationContent.displayName = "PaginationContent";
3618
- var PaginationItem = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36("li", { ref, className: cn("", className), ...props }));
3792
+ var PaginationItem = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38("li", { ref, className: cn("", className), ...props }));
3619
3793
  PaginationItem.displayName = "PaginationItem";
3620
3794
  var PaginationLink = ({
3621
3795
  className,
3622
3796
  isActive,
3623
3797
  size = "icon",
3624
3798
  ...props
3625
- }) => /* @__PURE__ */ jsx36(
3799
+ }) => /* @__PURE__ */ jsx38(
3626
3800
  "a",
3627
3801
  {
3628
3802
  "aria-current": isActive ? "page" : void 0,
@@ -3640,7 +3814,7 @@ PaginationLink.displayName = "PaginationLink";
3640
3814
  var PaginationPrevious = ({
3641
3815
  className,
3642
3816
  ...props
3643
- }) => /* @__PURE__ */ jsxs22(
3817
+ }) => /* @__PURE__ */ jsxs23(
3644
3818
  PaginationLink,
3645
3819
  {
3646
3820
  "aria-label": "Go to previous page",
@@ -3648,8 +3822,8 @@ var PaginationPrevious = ({
3648
3822
  size: "default",
3649
3823
  ...props,
3650
3824
  children: [
3651
- /* @__PURE__ */ jsx36(ChevronLeft, { className: "h-4 w-4" }),
3652
- /* @__PURE__ */ jsx36("span", { children: "Previous" })
3825
+ /* @__PURE__ */ jsx38(ChevronLeft, { className: "h-4 w-4" }),
3826
+ /* @__PURE__ */ jsx38("span", { children: "Previous" })
3653
3827
  ]
3654
3828
  }
3655
3829
  );
@@ -3657,7 +3831,7 @@ PaginationPrevious.displayName = "PaginationPrevious";
3657
3831
  var PaginationNext = ({
3658
3832
  className,
3659
3833
  ...props
3660
- }) => /* @__PURE__ */ jsxs22(
3834
+ }) => /* @__PURE__ */ jsxs23(
3661
3835
  PaginationLink,
3662
3836
  {
3663
3837
  "aria-label": "Go to next page",
@@ -3665,8 +3839,8 @@ var PaginationNext = ({
3665
3839
  size: "default",
3666
3840
  ...props,
3667
3841
  children: [
3668
- /* @__PURE__ */ jsx36("span", { children: "Next" }),
3669
- /* @__PURE__ */ jsx36(ChevronRight2, { className: "h-4 w-4" })
3842
+ /* @__PURE__ */ jsx38("span", { children: "Next" }),
3843
+ /* @__PURE__ */ jsx38(ChevronRight2, { className: "h-4 w-4" })
3670
3844
  ]
3671
3845
  }
3672
3846
  );
@@ -3674,31 +3848,31 @@ PaginationNext.displayName = "PaginationNext";
3674
3848
  var PaginationEllipsis = ({
3675
3849
  className,
3676
3850
  ...props
3677
- }) => /* @__PURE__ */ jsxs22(
3851
+ }) => /* @__PURE__ */ jsxs23(
3678
3852
  "span",
3679
3853
  {
3680
3854
  "aria-hidden": true,
3681
3855
  className: cn("flex h-9 w-9 items-center justify-center", className),
3682
3856
  ...props,
3683
3857
  children: [
3684
- /* @__PURE__ */ jsx36(MoreHorizontal, { className: "h-4 w-4" }),
3685
- /* @__PURE__ */ jsx36("span", { className: "sr-only", children: "More pages" })
3858
+ /* @__PURE__ */ jsx38(MoreHorizontal, { className: "h-4 w-4" }),
3859
+ /* @__PURE__ */ jsx38("span", { className: "sr-only", children: "More pages" })
3686
3860
  ]
3687
3861
  }
3688
3862
  );
3689
3863
  PaginationEllipsis.displayName = "PaginationEllipsis";
3690
3864
 
3691
3865
  // source/components/primitive/Progress/progress.tsx
3692
- import * as React34 from "react";
3866
+ import * as React36 from "react";
3693
3867
  import * as ProgressPrimitive from "@radix-ui/react-progress";
3694
- import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
3868
+ import { jsx as jsx39, jsxs as jsxs24 } from "react/jsx-runtime";
3695
3869
  var variantStyles = {
3696
3870
  default: "bg-primary",
3697
3871
  success: "bg-green-500",
3698
3872
  warning: "bg-yellow-500",
3699
3873
  error: "bg-red-500"
3700
3874
  };
3701
- var Progress = React34.forwardRef(
3875
+ var Progress = React36.forwardRef(
3702
3876
  ({
3703
3877
  className,
3704
3878
  value = 0,
@@ -3712,15 +3886,15 @@ var Progress = React34.forwardRef(
3712
3886
  const safeMax = max > 0 ? max : 100;
3713
3887
  const safeValue = Math.min(Math.max(value, 0), safeMax);
3714
3888
  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: [
3889
+ return /* @__PURE__ */ jsxs24("div", { className: "flex flex-col gap-1", children: [
3890
+ (label || showValue) && /* @__PURE__ */ jsxs24("div", { className: "flex items-center justify-between", children: [
3891
+ label && /* @__PURE__ */ jsx39("span", { className: "text-sm font-medium", children: label }),
3892
+ showValue && !indeterminate && /* @__PURE__ */ jsxs24("span", { className: "text-xs text-muted-foreground", children: [
3719
3893
  Math.round(percentage),
3720
3894
  "%"
3721
3895
  ] })
3722
3896
  ] }),
3723
- /* @__PURE__ */ jsx37(
3897
+ /* @__PURE__ */ jsx39(
3724
3898
  ProgressPrimitive.Root,
3725
3899
  {
3726
3900
  ref,
@@ -3733,7 +3907,7 @@ var Progress = React34.forwardRef(
3733
3907
  "aria-valuemax": safeMax,
3734
3908
  "aria-valuenow": indeterminate ? void 0 : safeValue,
3735
3909
  ...props,
3736
- children: /* @__PURE__ */ jsx37(
3910
+ children: /* @__PURE__ */ jsx39(
3737
3911
  ProgressPrimitive.Indicator,
3738
3912
  {
3739
3913
  className: cn(
@@ -3753,94 +3927,25 @@ var Progress = React34.forwardRef(
3753
3927
  );
3754
3928
  Progress.displayName = "Progress";
3755
3929
 
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
3930
  // source/components/primitive/ScrollArea/scroll-area.tsx
3826
- import * as React36 from "react";
3931
+ import * as React37 from "react";
3827
3932
  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(
3933
+ import { jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
3934
+ var ScrollArea = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs25(
3830
3935
  ScrollAreaPrimitive.Root,
3831
3936
  {
3832
3937
  ref,
3833
3938
  className: cn("relative overflow-hidden", className),
3834
3939
  ...props,
3835
3940
  children: [
3836
- /* @__PURE__ */ jsx39(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
3837
- /* @__PURE__ */ jsx39(ScrollBar, {}),
3838
- /* @__PURE__ */ jsx39(ScrollAreaPrimitive.Corner, {})
3941
+ /* @__PURE__ */ jsx40(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
3942
+ /* @__PURE__ */ jsx40(ScrollBar, {}),
3943
+ /* @__PURE__ */ jsx40(ScrollAreaPrimitive.Corner, {})
3839
3944
  ]
3840
3945
  }
3841
3946
  ));
3842
3947
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
3843
- var ScrollBar = React36.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx39(
3948
+ var ScrollBar = React37.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx40(
3844
3949
  ScrollAreaPrimitive.ScrollAreaScrollbar,
3845
3950
  {
3846
3951
  ref,
@@ -3852,16 +3957,16 @@ var ScrollBar = React36.forwardRef(({ className, orientation = "vertical", ...pr
3852
3957
  className
3853
3958
  ),
3854
3959
  ...props,
3855
- children: /* @__PURE__ */ jsx39(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
3960
+ children: /* @__PURE__ */ jsx40(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
3856
3961
  }
3857
3962
  ));
3858
3963
  ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
3859
3964
 
3860
3965
  // source/components/primitive/Separator/separator.tsx
3861
- import * as React37 from "react";
3966
+ import * as React38 from "react";
3862
3967
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
3863
3968
  import { cva as cva12 } from "class-variance-authority";
3864
- import { jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
3969
+ import { jsx as jsx41, jsxs as jsxs26 } from "react/jsx-runtime";
3865
3970
  var separatorVariants = cva12("shrink-0", {
3866
3971
  variants: {
3867
3972
  orientation: {
@@ -3879,7 +3984,7 @@ var separatorVariants = cva12("shrink-0", {
3879
3984
  line: "solid"
3880
3985
  }
3881
3986
  });
3882
- var Separator3 = React37.forwardRef(
3987
+ var Separator3 = React38.forwardRef(
3883
3988
  ({
3884
3989
  className,
3885
3990
  orientation = "horizontal",
@@ -3891,13 +3996,13 @@ var Separator3 = React37.forwardRef(
3891
3996
  }, ref) => {
3892
3997
  const line = lineProp ?? variant ?? "solid";
3893
3998
  if (label && orientation === "horizontal") {
3894
- return /* @__PURE__ */ jsxs25(
3999
+ return /* @__PURE__ */ jsxs26(
3895
4000
  "div",
3896
4001
  {
3897
4002
  role: "separator",
3898
4003
  className: "flex items-center gap-3",
3899
4004
  children: [
3900
- /* @__PURE__ */ jsx40(
4005
+ /* @__PURE__ */ jsx41(
3901
4006
  "div",
3902
4007
  {
3903
4008
  className: cn(
@@ -3906,8 +4011,8 @@ var Separator3 = React37.forwardRef(
3906
4011
  )
3907
4012
  }
3908
4013
  ),
3909
- /* @__PURE__ */ jsx40("span", { className: "text-xs text-muted-foreground whitespace-nowrap", children: label }),
3910
- /* @__PURE__ */ jsx40(
4014
+ /* @__PURE__ */ jsx41("span", { className: "text-xs text-muted-foreground whitespace-nowrap", children: label }),
4015
+ /* @__PURE__ */ jsx41(
3911
4016
  "div",
3912
4017
  {
3913
4018
  className: cn(
@@ -3920,7 +4025,7 @@ var Separator3 = React37.forwardRef(
3920
4025
  }
3921
4026
  );
3922
4027
  }
3923
- return /* @__PURE__ */ jsx40(
4028
+ return /* @__PURE__ */ jsx41(
3924
4029
  SeparatorPrimitive.Root,
3925
4030
  {
3926
4031
  ref,
@@ -3938,16 +4043,16 @@ var Separator3 = React37.forwardRef(
3938
4043
  Separator3.displayName = "Separator";
3939
4044
 
3940
4045
  // source/components/primitive/Sheet/sheet.tsx
3941
- import * as React38 from "react";
4046
+ import * as React39 from "react";
3942
4047
  import * as SheetPrimitive from "@radix-ui/react-dialog";
3943
4048
  import { cva as cva13 } from "class-variance-authority";
3944
4049
  import { X as X2 } from "lucide-react";
3945
- import { jsx as jsx41, jsxs as jsxs26 } from "react/jsx-runtime";
4050
+ import { jsx as jsx42, jsxs as jsxs27 } from "react/jsx-runtime";
3946
4051
  var Sheet = SheetPrimitive.Root;
3947
4052
  var SheetTrigger = SheetPrimitive.Trigger;
3948
4053
  var SheetClose = SheetPrimitive.Close;
3949
4054
  var SheetPortal = SheetPrimitive.Portal;
3950
- var SheetOverlay = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
4055
+ var SheetOverlay = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3951
4056
  SheetPrimitive.Overlay,
3952
4057
  {
3953
4058
  className: cn(
@@ -3975,9 +4080,9 @@ var sheetVariants = cva13(
3975
4080
  }
3976
4081
  }
3977
4082
  );
3978
- var SheetContent = React38.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs26(SheetPortal, { children: [
3979
- /* @__PURE__ */ jsx41(SheetOverlay, {}),
3980
- /* @__PURE__ */ jsxs26(
4083
+ var SheetContent = React39.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs27(SheetPortal, { children: [
4084
+ /* @__PURE__ */ jsx42(SheetOverlay, {}),
4085
+ /* @__PURE__ */ jsxs27(
3981
4086
  SheetPrimitive.Content,
3982
4087
  {
3983
4088
  ref,
@@ -3985,9 +4090,9 @@ var SheetContent = React38.forwardRef(({ side = "right", className, children, ..
3985
4090
  ...props,
3986
4091
  children: [
3987
4092
  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" })
4093
+ /* @__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: [
4094
+ /* @__PURE__ */ jsx42(X2, { className: "h-4 w-4" }),
4095
+ /* @__PURE__ */ jsx42("span", { className: "sr-only", children: "Close" })
3991
4096
  ] })
3992
4097
  ]
3993
4098
  }
@@ -3997,7 +4102,7 @@ SheetContent.displayName = SheetPrimitive.Content.displayName;
3997
4102
  var SheetHeader = ({
3998
4103
  className,
3999
4104
  ...props
4000
- }) => /* @__PURE__ */ jsx41(
4105
+ }) => /* @__PURE__ */ jsx42(
4001
4106
  "div",
4002
4107
  {
4003
4108
  className: cn(
@@ -4011,7 +4116,7 @@ SheetHeader.displayName = "SheetHeader";
4011
4116
  var SheetFooter = ({
4012
4117
  className,
4013
4118
  ...props
4014
- }) => /* @__PURE__ */ jsx41(
4119
+ }) => /* @__PURE__ */ jsx42(
4015
4120
  "div",
4016
4121
  {
4017
4122
  className: cn(
@@ -4022,7 +4127,7 @@ var SheetFooter = ({
4022
4127
  }
4023
4128
  );
4024
4129
  SheetFooter.displayName = "SheetFooter";
4025
- var SheetTitle = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
4130
+ var SheetTitle = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
4026
4131
  SheetPrimitive.Title,
4027
4132
  {
4028
4133
  ref,
@@ -4031,7 +4136,7 @@ var SheetTitle = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE
4031
4136
  }
4032
4137
  ));
4033
4138
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
4034
- var SheetDescription = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
4139
+ var SheetDescription = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
4035
4140
  SheetPrimitive.Description,
4036
4141
  {
4037
4142
  ref,
@@ -4048,13 +4153,13 @@ import { cva as cva15 } from "class-variance-authority";
4048
4153
  import { PanelLeft } from "lucide-react";
4049
4154
 
4050
4155
  // source/hooks/use-mobile.ts
4051
- import * as React39 from "react";
4156
+ import * as React40 from "react";
4052
4157
  var MOBILE_MAX = 768;
4053
4158
  function useIsMobile(breakpoint = MOBILE_MAX) {
4054
- const [isMobile, setIsMobile] = React39.useState(
4159
+ const [isMobile, setIsMobile] = React40.useState(
4055
4160
  () => typeof window !== "undefined" ? window.innerWidth < breakpoint : false
4056
4161
  );
4057
- React39.useEffect(() => {
4162
+ React40.useEffect(() => {
4058
4163
  const mq = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
4059
4164
  const onChange = () => setIsMobile(mq.matches);
4060
4165
  onChange();
@@ -4065,9 +4170,9 @@ function useIsMobile(breakpoint = MOBILE_MAX) {
4065
4170
  }
4066
4171
 
4067
4172
  // source/components/primitive/Skeleton/skeleton.tsx
4068
- import * as React40 from "react";
4173
+ import * as React41 from "react";
4069
4174
  import { cva as cva14 } from "class-variance-authority";
4070
- import { jsx as jsx42 } from "react/jsx-runtime";
4175
+ import { jsx as jsx43 } from "react/jsx-runtime";
4071
4176
  var skeletonVariants = cva14(
4072
4177
  "animate-pulse bg-muted",
4073
4178
  {
@@ -4084,9 +4189,9 @@ var skeletonVariants = cva14(
4084
4189
  }
4085
4190
  }
4086
4191
  );
4087
- var Skeleton = React40.forwardRef(
4192
+ var Skeleton = React41.forwardRef(
4088
4193
  ({ className, rounded, ...props }, ref) => {
4089
- return /* @__PURE__ */ jsx42(
4194
+ return /* @__PURE__ */ jsx43(
4090
4195
  "div",
4091
4196
  {
4092
4197
  ref,
@@ -4100,43 +4205,6 @@ var Skeleton = React40.forwardRef(
4100
4205
  );
4101
4206
  Skeleton.displayName = "Skeleton";
4102
4207
 
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
4208
  // source/components/primitive/Sidebar/sidebar.tsx
4141
4209
  import { jsx as jsx44, jsxs as jsxs28 } from "react/jsx-runtime";
4142
4210
  var SIDEBAR_COOKIE_NAME = "sidebar:state";